macOS Catalina中的全局环境变量

4
我已经按照this article的描述添加了一个LaunchDaemon plist文件,创建了一个全局环境变量。但是我遇到了一些问题。
如果我调用:
  1. env QTBIN不在列表中。
  2. echo $QTBIN没有返回值。
  3. /bin/launchctl getenv QTBIN返回路径。
我在一个Python 3脚本中使用它,在Windows和macOS上都可以使用,因此使用命令os.getenv("QTBIN")访问QTBIN。然而,在macOS上执行此命令时,返回值为None。这使我认为它基于上述第1或第2个选项。
问题:如何创建一个对所有程序可访问并在Windows和macOS上的Python中可用的环境变量?如果可能,我希望避免在python脚本中使用特定于操作系统的代码。我认为首选解决方案将是在env列表中出现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

你的 plist 文件和 launchctl 命令工作正常。

Unix 进程在它们被 fork 时继承父进程的环境变量,所以新变量在你关闭并重新打开终端应用程序之前不会在你的终端中生效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接