我将 Qt Creator 与自定义构建系统(忍者)一起使用。问题是传递给 Qt Creator IDE 的 $PATH 变量绝对是 vanilla: /usr/bin:/bin:/usr/sbin:/sbin
。
所以我必须编写bash -c '/path/to/ninja list of targets'
而不是仅仅ninja list of targets
在终端中执行构建步骤,而不是在 IDE 中。
我尝试了所有已知的方法来设置 $PATH。
- ~/.bash_profile 和 ~/.profile
- /etc/路径
- /etc/paths.d/*
- /etc/launchd.conf (
setenv PATH .....
) - ~/Library/LaunchAgents/*.plist (
sh -c 'launchtcl setenv PATH $PATH:.....'
) - /库/LaunchAgents/*.plist
StackOverflow 回答中描述了使用启动agenes 的想法。
没有工作!我的自定义 .plist 文件中的任何任意环境变量都正确设置 - 除了 PATH 之外的任何环境变量。(我已经简单地对其进行了测试:创建了一个自定义构建步骤echo xzxzxz=$XZXZXZ path=$PATH
,其中 xzxzxz 也在我的启动代理中设置)。
有趣的是,如果我从 bash 会话 ( '/Applications/Qt Creator.app/Contents/MacOS/Qt Creator' &
) 启动 Qt Creator,它会获得正确的 PATH,与 bash 本身相同。
有趣的是,分配给启动代理的 PATH 稍后会被覆盖。我在那里写了sh -c 'launchctl setenv PATH $PATH:/HELLOWORLD'
,但我没有看到 HELLOWORLD echo $PATH
。因此,存在竞争条件,有人稍后从 /etc/paths 和 /etc/paths.d 重建 PATH。
因此:
- 是否有详尽且最新的说明如何在 OSX 10.10 上设置环境变量,尤其是 PATH?
- 为什么 PATH 变成香草?
- Qt Creator 如何取胜?