macOS Catalina中的全局环境变量

时间:2020-02-25 09:02:08

标签: python environment-variables macos-catalina

我已经通过添加this article中所述的LaunchDaemon plist文件创建了一个全局环境变量。不过我有些麻烦。

如果我打电话:

  1. env QTBIN 不在列表中。
  2. echo $QTBIN不返回任何内容。
  3. /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

1 个答案:

答案 0 :(得分:0)

您的plist文件和launchctl命令按预期工作。

Unix进程在分支时会从其父级继承环境,因此新变量在您的终端中不可用,直到您关闭并重新打开终端应用程序。