更新:下面的链接没有完整的答案。必须在两个地方设置路径或变量(一个用于GUI,一个用于shell)是很蹩脚的。

不重复:设置环境变量在OS X?


来自Windows的背景,设置和修改环境变量非常容易(只要去系统属性>高级>环境变量),在Mac OS 10.5上似乎没有那么直接。大多数引用都说我应该更新/etc/profile或~/.profile。这些变量是否等同于系统变量和用户变量?例如,我应该在哪里设置JAVA_HOME变量?


编辑:

我希望能够从终端以及像Eclipse这样的应用程序访问变量。另外,我希望我不需要重新启动/注销才能使其生效。


当前回答

你可以阅读linux,它与Mac OS X非常接近。或者你可以阅读BSD Unix,它更接近一些。在大多数情况下,Linux和BSD之间的差异并不大。

/etc/profile为系统环境变量。

~ /。概要文件是用户特定的环境变量。

“我应该在哪里设置JAVA_HOME变量?”

您是否有多个用户?他们在乎吗?你会因为修改/etc/profile而把其他用户搞得一团糟吗?

一般来说,即使我是唯一的用户,我也不喜欢打乱系统范围的设置。我更喜欢编辑我的本地设置。

其他回答

我认为OP正在寻找的是一个简单的、类似于windows的解决方案。

来吧:

https://www.macupdate.com/app/mac/14617/rcenvironment

没有必要重复。您可以使用launchctl setenv设置launchd(和子进程,即从Spotlight启动的任何进程)使用的环境变量。

例如,如果你想在.bashrc或其他文件中设置启动后镜像当前路径:

PATH=whatever:you:want
launchctl setenv PATH $PATH

环境变量不会在运行中的应用程序中自动更新。你将需要重新启动应用程序来获得更新的环境变量(尽管你可以在你的shell中设置变量,例如PATH=whatever: You:want;没有必要重新启动终端)。

你可以阅读linux,它与Mac OS X非常接近。或者你可以阅读BSD Unix,它更接近一些。在大多数情况下,Linux和BSD之间的差异并不大。

/etc/profile为系统环境变量。

~ /。概要文件是用户特定的环境变量。

“我应该在哪里设置JAVA_HOME变量?”

您是否有多个用户?他们在乎吗?你会因为修改/etc/profile而把其他用户搞得一团糟吗?

一般来说,即使我是唯一的用户,我也不喜欢打乱系统范围的设置。我更喜欢编辑我的本地设置。

使用osx-env-sync从单个源同步命令行和GUI应用程序的OS X环境变量。

我还在这里发布了一个相关问题的答案。

我写了一个工具来方便地管理macOS应用程序的环境变量。

https://github.com/yuezk/macenv

您可以使用macenv set来设置环境变量,例如:

macenv set JAVA_HOME /path/to/java/home

在底层,它调用launchctl setenv来设置环境变量,同时将环境变量保存到~/.launchd.conf中,并注册一个自动启动服务来在操作系统重新启动时加载环境变量。