【问题标题】:Strange behaviour for setenv & getenv in OS X YosemiteOS X Yosemite 中 setenv 和 getenv 的奇怪行为
【发布时间】:2015-01-18 15:23:27
【问题描述】:

当我设置环境变量时

launchctl setenv FOO test

我可以通过

launchctl getenv FOO

返回“测试”,但很简单

echo $FOO

不替换,结果为空。在同一航站楼和新航站楼。

背景:Yosemite 10.10 不再支持 /etc/launchd.conf 用于系统范围的设置,所以 Setting environment variables via launchd.conf no longer works in OS X Yosemite/El Capitan/macOS Sierra? 看起来很有希望,但我需要通过 $VARNAME 访问环境变量,这不起作用就我而言。

【问题讨论】:

  • 你试过重启 Terminal.app 吗?
  • 这就是诀窍 :) 我刚刚打开了一个新选项卡或窗口,但之前没有杀死旧的 Terminal.app。现在一切都好。谢谢!

标签: macos setenv getenv


【解决方案1】:

正如我在 问题/问题 here 部分中所写的,为了在系统重新启动后您的环境变量被应用程序正确获取,您需要:

  • 两次登录:登录 => 注销 => 登录
  • 或手动关闭并重新打开应用程序,其中应采用环境变量
  • 或不要使用“重新登录时重新打开窗口”功能。

发生这种情况是因为 Apple 拒绝对加载的服务进行显式排序,因此 env 变量与“重新打开队列”的处理并行注册。

【讨论】:

  • 我什至读了几次,但误解了 Terminal.app 的关闭和重新打开。这不是关闭一个终端窗口并打开一个新窗口,而是将 Terminal.app 作为应用程序退出。事后这是有道理的:)
猜你喜欢
  • 1970-01-01
  • 2015-08-26
  • 1970-01-01
  • 2018-07-06
  • 1970-01-01
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多