Strange behavior for setenv & getenv in OS X Yosemite



当我设置环境变量时

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 变量与"重新打开队列"的处理并行注册。

相关内容

  • 没有找到相关文章

最新更新