我已经通过添加this article中所述的LaunchDaemon plist文件创建了一个全局环境变量。不过我有些麻烦。
如果我打电话:
env
QTBIN 不在列表中。echo $QTBIN
不返回任何内容。/bin/launchctl getenv QTBIN
返回路径。我在Windows 3和macOS上都使用的Python 3脚本中使用了此脚本,因此正在使用命令os.getenv("QTBIN")
访问 QTBIN 。但是,在macOS上执行时,此命令返回 None 。这使我假设它基于上面的命令选项1或2。
问题:如何在Windows和macOS上创建所有程序都可以访问并在Python中可用的环境变量?如果可能的话,我想避免在python脚本中包含操作系统特定的代码。我认为首选的解决方案是在环境列表中出现QTBIN。
我的plist文件:/Library/LaunchDaemons/setenv.QTBIN.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>setenv.QTBIN</string>
<key>ProgramArguments</key>
<array>
<string>/bin/launchctl</string>
<string>setenv</string>
<string>QTBIN</string>
<string>/usr/local/Cellar/qt/5.14.1/bin</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>ServiceIPC</key>
<false/>
</dict>
</plist>
无需重新启动即可加载环境变量的命令:
launchctl load -w /Library/LaunchDaemons/setenv.QTBIN.plist
。
答案 0 :(得分:0)
您的plist文件和launchctl命令按预期工作。
Unix进程在分支时会从其父级继承环境,因此新变量在您的终端中不可用,直到您关闭并重新打开终端应用程序。