在OS X上设置环境变量

时间:2020-03-06 14:44:46  来源:igfitidea点击:

在OSX中修改环境变量(如PATH)的正确方法是什么?

我稍微看了一下Google,发现需要编辑三个不同的文件:

  • / etc /路径
  • 〜/ .profile
  • 〜/ .tcshrc

我什至没有这些文件,而且我很确定.tcshrc是错误的,因为OSX现在使用bash。这些变量(尤其是PATH)在哪里定义?

我正在运行OSXv10.5(Leopard)。

解决方案

最高包括OSXv10.7(Lion),我们可以在以下位置进行设置:

~/.MacOSX/environment.plist

看:

  • https://developer.apple.com/legacy/library/qa/qa1067/_index.html
  • https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPRuntimeConfig/Articles/EnvironmentVars.html

对于终端机中的PATH,我们应该可以在.bash_profile或者.profile中进行设置(不过我们可能必须创建它)

对于OSXv10.8(Mountain Lion)及更高版本,我们需要使用launchdlaunchctl

Bash的任何启动文件-〜/ .bashrc〜/ .bash_profile〜/ .profile。对于GUI应用程序中的环境变量,还有一个名为〜/ .MacOSX / environment.plist的怪异文件。

对于单个用户修改,请使用列出的内容中的〜/ .profile。以下链接说明了Bash何时读取其他文件。

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

如果要为gui应用程序设置环境变量,则需要〜/ .MacOSX / environment.plist文件

好吧,我不确定/ etc / paths和~~ ..MacOSX / environment.plist`文件。那些是新的。

但是使用Bash,我们应该知道.bashrc是在每次新的Shell调用时执行的
.bash_profile仅在启动时执行一次。

我不知道MacOSX多久使用一次。我认为这种区别已经随着窗口系统启动所有东西而中断了。

就个人而言,我通过创建需要的所有内容的.bashrc文件来消除混乱,然后执行以下操作:

ln -s .bashrc .bash_profile

有时,所有先前的答案都根本无效。如果我们想在Eclipse或者IntelliJ IDEA中访问系统变量(例如" M2_HOME"),则在这种情况下唯一适合我的方法是:

首先(步骤1)编辑/ etc / launchd.conf以包含如下一行:" setenv VAR value",然后(步骤2)重新启动。

仅仅修改.bash_profile是行不通的,因为在OSX中,应用程序无法像在其他Unix中那样启动。它们不继承父级的shell变量。所有其他修改由于我不知道的原因而无法使用。也许其他人可以对此进行澄清。

布鲁诺是正确的。我已经进行了广泛的研究,如果我们想设置所有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
  • 在vi中保存所做的更改,然后重新启动Mac。或者使用上面的代码注释中显示的grep/xargs命令。
  • 通过打开终端窗口并键入export来证明变量正在工作,并且我们应该看到新的变量。这些功能还将在IntelliJ IDEA和我们通过Spotlight启动的其他GUI应用程序中提供。

我们可以使用launchctl setenv来设置启动的环境(以及扩展名,从Spotlight开始的任何东西)。例如设置路径:

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用于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

我们可以找到更多有关launchctl及其如何使用man launchctl命令加载launchd.conf的信息。

我认为OP正在寻找一种简单的,类似于Windows的解决方案。

干得好:

http://www.apple.com/downloads/macosx/system_disk_utilities/environmentvariablepreferencepane.html