为什么我的TextMate包有时无法访问环境/ shell变量?

我有一个用ruby编写的TextMate包,它访问ENV哈希以读取shell变量。 它有时会成功读取这个变量,有时却找不到它。我一直无法弄清楚这种模式。 是什么决定了哪些shell变量对TextMate包可见? 更新 啊哈!当我从命令行启动TextMate时,它可以工作。如果我从扩展坞启动它,它就不起作用(即使我随后从命令行打开一个目录)。 所以现在的问题是,为什么TextMate选择在这些情况下选择不同的环境,有没有办法让它们相同?     
已邀请:
Textmate是通过launchd启动的,而不是从shell启动的。 如果您直接从shell运行某些内容,您的$ PATH将会结束(打开-a Textmate不起作用,打开不会将您的环境传递给Textmate)。 解决这个问题的方法有environment.plist,launchctl或launchd.conf: 在OS X中设置环境变量? 更新 如果您编辑
/etc/launchd.conf
并重新启动,则更改将生效。每一行都可以是像
setenv VAR_NAME "VAR_VALUE"
这样的launchctl命令。然后,您可以使用
launchctl your_file
运行此文件。 尽管如此重启却是一件痛苦的事。如果你想要每用户环境设置,这是不好的。 Apple建议
~/.launchd.conf
可用于特定于用户的设置,但尚未实现此功能。 您可以使用LoginHook和LogoffHook将脚本设置为在登录时运行(请参阅Apple的文档)。或者,使用LaunchAgents。有关如何设置LaunchAgent的详细说明,请查看此Macworld帖子中的nicksay帖子。 logged4ѭ命令在登录时似乎不起作用。我正在敲打我的头。 我遇到了你今天遇到的基本相同的问题(Makefile包不会将LIBRARY_PATH传递给gcc),现在我正在编写一个python脚本,它将在登录时读取变量赋值文件,存储当前的副本环境和带有赋值的文件,然后在注销时卸载所有变量。这也提醒我,我应该有一个更新选项。当我完成时,我会在这里发布一条带有github repo链接的评论。如果它有效,那就是。     

要回复问题请先登录注册