在 OS X 中修改 PATH 等环境变量的正确方法是什么?
我在 Google 上看了一下,发现要编辑的三个不同文件:
我甚至没有这些文件,我很确定.tcshrc是错误的,因为 OS X 现在使用 bash。这些变量,尤其是 PATH,在哪里定义?
我正在运行OS X v10.5 (Leopard)。
布鲁诺正好走上正轨。我做了大量的研究,如果你想设置所有 GUI 应用程序中可用的变量,你唯一的选择是/etc/launchd.conf
。
请注意, environment.plist 不适用于通过 Spotlight 启动的应用程序。 Steve Sexton 在此记录了这一点 。
打开终端提示
输入sudo vi /etc/launchd.conf
(注意:此文件可能尚不存在)
将以下内容放入文件中
# Set environment variables here so they are available globally to all apps
# (and Terminal), including those launched via Spotlight.
#
# After editing this file run the following command from the terminal to update
# environment variables globally without needing to reboot.
# NOTE: You will still need to restart the relevant application (including
# Terminal) to pick up the changes!
# grep -E "^setenv" /etc/launchd.conf | xargs -t -L 1 launchctl
#
# See http://www.digitaledgesw.com/node/31
# and http://stackoverflow.com/questions/135688/setting-environment-variables-in-os-x/
#
# Note that you must hardcode the paths below, don't use environment variables.
# You also need to surround multiple values in quotes, see MAVEN_OPTS example below.
#
setenv JAVA_VERSION 1.6
setenv JAVA_HOME /System/Library/Frameworks/JavaVM.framework/Versions/1.6/Home
setenv GROOVY_HOME /Applications/Dev/groovy
setenv GRAILS_HOME /Applications/Dev/grails
setenv NEXUS_HOME /Applications/Dev/nexus/nexus-webapp
setenv JRUBY_HOME /Applications/Dev/jruby
setenv ANT_HOME /Applications/Dev/apache-ant
setenv ANT_OPTS -Xmx512M
setenv MAVEN_OPTS "-Xmx1024M -XX:MaxPermSize=512m"
setenv M2_HOME /Applications/Dev/apache-maven
setenv JMETER_HOME /Applications/Dev/jakarta-jmeter
通过打开终端窗口并键入export
证明您的变量正常工作,您应该看到新的变量。这些也可以在您通过 Spotlight 启动的 IntelliJ IDEA 和其他 GUI 应用程序中使用。
您可以使用launchctl setenv
设置 launchd(以及扩展名为 Spotlight 启动的任何内容)使用的launchctl setenv
。例如,设置路径:
launchctl setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
或者,如果要在.bashrc
或类似路径中设置路径,请将其镜像到 launchd 中:
PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
launchctl setenv PATH $PATH
如果您希望它能够获取更改的环境,则无需重新启动,但您需要重新启动应用程序。
这包括已经在 Terminal.app 下运行的所有 shell,但是如果你在那里你可以更直接地设置环境,例如使用export PATH=/opt/local/bin:/opt/local/sbin:$PATH
for bash 或 zsh 。
要在重新启动后保持更改,您可以从/etc/launchd.conf
设置环境变量,如下所示:
setenv PATH /opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
重启时会自动执行launchd.conf
。
如果您希望这些更改现在生效,您应该使用此命令重新处理launchctl.conf
(感谢 @mklement 提示!)
egrep -v '^\s*#' /etc/launchd.conf | launchctl
您可以使用命令man launchctl
找到有关launchctl
及其如何加载launchd.conf
更多信息。
在OS X v10.7 (Lion)中,您可以将它们设置为:
~/.MacOSX/environment.plist
看到:
对于终端中的 PATH,您应该能够设置.bash_profile
或.profile
(您可能必须创建它)
对于OS X v10.8 (Mountain Lion)及更高版本, 您需要使用launchd
和launchctl
。