当我设置环境变量时
launchctl setenv FOO test
我可以通过以下方式获取值
launchctl getenv FOO
这返回了我的"测试",但很简单
echo $FOO
不替换,结果为空。在同一航站楼和新航站楼中。
背景:Yosemite 10.10 不再支持/etc/launchd.conf 进行系统范围的设置,因此通过 launchd.conf 设置环境变量在 OS X Yosemite/El Capitan/macOS Sierra 中不再有效? 看起来很有前途,但我需要通过 $VARNAME
访问 env vars,这在我的情况下不起作用。
正如我在问题/问题一节中所写的那样,为了在系统重新启动后您的 env 变量被应用程序正确获取,您将需要:
- 登录
- 两次:登录 =>注销 =>登录
- 或手动关闭并重新打开应用程序,其中应采用 env 变量
- 或者不要使用"重新登录时重新打开窗口"功能。
发生这种情况的原因是 Apple 拒绝对加载的服务进行显式排序,因此 env 变量与"重新打开队列"的处理并行注册。