在OS X中修改环境变量如PATH的正确方法是什么?

我看了谷歌一点,找到了三个不同的文件进行编辑:

/etc/paths ~ / . profile ~ / tcshrc

我甚至没有这些文件中的一些,我很确定.tcshrc是错误的,因为OS X现在使用bash。这些变量,特别是PATH,定义在哪里?

我运行的是OS X v10.5 (Leopard)。


当前回答

/etc/launchd.conf在OS X v10.10 (Yosemite)、OS X v10.11 (El Capitan)、macOS v10.12 (Sierra)或macOS v10.13 (High Sierra)中不使用。


从launchctl手册页:

/etc/launchd.conf file is no longer consulted for subcommands to run during early boot time;
this functionality was removed for security considerations.

这个Ask Different answer中描述的方法适用于我(重启后):从Dock或Spotlight启动的应用程序继承了我在~/Library/LaunchAgents/my.startup.plist中设置的环境变量。(在我的例子中,我需要将LANG设置为en_US。UTF-8,用于Sublime Text插件。)

其他回答

我的个人实践是.bash_profile。我在这里添加路径并附加到Path变量,

GOPATH=/usr/local/go/bin/
MYSQLPATH=/usr/local/opt/mysql@5.6/bin

PATH=$PATH:$GOPATH:$MYSQLPATH

之后,我可以有个人的路径通过echo$ GOPATH, echo$MYSQLPATH或所有通过echo$ Path。

$PATH变量也受制于path_helper,它反过来利用/etc/paths文件和/etc/paths.d中的文件

更详细的描述可以在PATH和Leopard(2008-11)的其他环境问题中找到。

除了建议的方法之外,还有一件事需要注意,至少在OS X 10.5 (Leopard)中,launchd.conf中设置的变量将与.profile中的设置合并。我认为这可能对~/. macosx /environment中的设置有效。plist也是,但我还没有验证。

在Mountain Lion上,所有的/etc/paths和/etc/launchd.conf编辑都不起任何作用!

苹果的开发者论坛说:

“更改信息。.app本身的plist包含一个“lsenvirenvironment” 带有所需环境变量的字典。 ~ / .MacOSX /环境。不再支持Plist。”

所以我直接编辑了应用程序的信息。plist(右击“AppName. plist”)app”(在本例中是SourceTree),然后是“显示包内容”)。

我添加了一个新的键/字典对,称为:

<key>LSEnvironment</key>
<dict>
     <key>PATH</key>
     <string>/Users/flori/.rvm/gems/ruby-1.9.3-p362/bin:/Users/flori/.rvm/gems/ruby-1.9.3-p362@global/bin:/Users/flori/.rvm/rubies/ruby-1.9.3-p326/bin:/Users/flori/.rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:</string>
</dict>

(参见苹果的LaunchServicesKeys文档)

现在应用程序(在我的例子中是Sourcetree)使用给定的路径并使用Git 1.9.3:-)

PS:当然,您必须调整路径条目以满足您特定的路径需求。

对于单个用户修改,使用~/。你列出的人的简介。下面的链接解释了Bash何时读取不同的文件。

http://telin.ugent.be/~slippens/drupal/bashrc_and_others

如果你想为gui应用程序设置环境变量,你需要~/. macosx /environment。plist文件