我一直在努力让应用程序在 OS X Mavericks 中运行。我终于能够通过深入研究 .app 包并直接运行 shell 脚本来让它运行。似乎需要设置 JAVA_HOME。所以我在 shell 中的 .profile 中设置了它,一切正常。
但是,如果我想简单地单击 Dock 中的图标,它就不会运行。我猜这是因为 JAVA_HOME 未全局设置。由于我没有直接从 shell 运行应用程序,因此 OS X 不知道 JAVA_HOME 是什么。它只是继续查找。
在以前的 OS X 版本中,似乎只需将环境变量添加到 /etc/launchd.conf 即可为 GUI 应用程序设置环境变量。Mavericks 中似乎不存在此文件。如何设置一个适用于 Mavericks 中 GUI 应用程序的全局环境变量?
答案1
/etc/launchd.conf
默认情况下从未存在,但它在 10.9 中仍然有效。
- 例如运行
sudo nano /etc/launchd.conf
。 - 添加类似这样的行
setenv JAVA_HOME /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
。(但我不知道JAVA_HOME
实际上应该设置为何值。) - 重新启动或者运行
launchctl < /etc/launchd.conf; sudo launchctl < /etc/launchd.conf
并重新启动进程。
launchctl export
打印用户启动进程导出的变量,并sudo launchctl export
打印根启动进程导出的变量。
此方法还可用于设置默认路径。例如,我已将以下行添加到/etc/launchd.conf
:
setenv PATH /Users/lauri/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/libexec:/usr/texbin
(我使用/Users/lauri/bin
而不是~/bin
因为这对于以 root 身份运行的程序来说~/bin
是这样的。)/var/root/bin
答案2
从 Mac OS 10.10 开始,Launhd.conf 不再起作用/可用。
现在实现此目的的正确方法是通过启动时加载的 LaunchAgent 脚本。由于这些脚本非常繁琐(个人观点 :),我更喜欢使用 .bash_profile 并自动创建/更新这些脚本。
尝试这个 SO 答案,以更简单的方式从 .bash_profile 中实现这一点。希望这能为你节省我为我的新 Mac M2 再次尝试解决这个问题所花费的几个小时