Textmate通过launchd启动,而不是从shell启动。
如果您直接从shell运行某些内容(打开-a Textmate不起作用,打开将不会将您的环境传递给Textmate),则$ PATH将遍历。
来解决这个问题的办法是environment.plist,launchctl,或launchd.conf的:
Setting environment variables in OS X?
更新
如果编辑/etc/launchd.conf
并重新启动,更改将生效。每行可以是一个launchctl命令,如setenv VAR_NAME "VAR_VALUE"
。然后你可以用launchctl your_file
运行这个文件。这是一个不得不重启的痛苦。如果你想要每个用户的环境设置,这是不好的。 Apple建议~/.launchd.conf
可用于用户特定的设置,但尚未实现此功能。
您可以设置脚本以使用LoginHook和LogoffHook在登录时运行(请参阅Apple's documentation)。或者,使用LaunchAgents。有关如何设置LaunchAgent的详细说明,请参阅this Macworld post上nicksay的帖子。
launchctl setenv
命令在登录时似乎不起作用。我目前正在对此进行抨击。
我遇到了与今天基本相同的问题(Makefile包不会将LIBRARY_PATH传递给gcc),现在我正在编写一个python脚本,它将在登录时读取变量赋值文件,存储将当前环境和该文件与作业复制,然后卸载注销时的所有变量。这也提醒我,我应该有一个更新选项。当我完成后,我会在这里发布一条评论,指向这里的github回购链接。如果它有效,那就是。
林不知道,但我不知道,如果你有一个变量,你想总是overrided你可以通过首选项添加它。 – prodigitalson 2011-04-06 19:19:05