如何在 OS X Mavericks 中为 GUI 应用程序设置环境变量?

如何在 OS X Mavericks 中为 GUI 应用程序设置环境变量?

我一直在努力让应用程序在 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 中仍然有效。

  1. 例如运行sudo nano /etc/launchd.conf
  2. 添加类似这样的行setenv JAVA_HOME /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home。(但我不知道JAVA_HOME实际上应该设置为何值。)
  3. 重新启动或者运行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 再次尝试解决这个问题所花费的几个小时

https://stackoverflow.com/questions/25385934/setting-environment-variables-via-launchd-conf-no-longer-works-in-os-x-yosemite

相关内容