【问题标题】:How to access environment variables in launchd plist如何访问launchd plist中的环境变量
【发布时间】:2012-05-31 20:29:05
【问题描述】:

我有一个已启动的每用户代理。在它的.plist 中,我想使用$HOME 环境变量。

有可能吗?

(它是“程序”键,我想将其定义为“$HOME/bin/myscript”)

【问题讨论】:

    标签: macos launchd


    【解决方案1】:

    launchd 不会对其 .plist 中的值执行任何替换,因此无法以您尝试执行的形式执行此操作。你能做的就是把你想运行的命令交给一个shell,让it执行变量替换并运行命令。例如,您可以将 Program 键替换为:

    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>-c</string>
        <string>exec $HOME/tmp/myscript</string>
    </array>
    

    (请注意exec 前缀并不是真正需要的,它只是一个小的优化。它使shell 用脚本替换自己,而不是将脚本作为子进程启动,然后等待它完成。 )

    【讨论】:

      【解决方案2】:

      EnableGlobbing 为 ProgramArguments(但不是 Program)启用波浪号和通配符扩展。

      <key>EnableGlobbing</key>
      <true/>
      <key>ProgramArguments</key>
      <array>
          <string>~/bin/myscript</string>
      </array>
      

      ProgramArguments 只能是字符串数组,而不仅仅是字符串。默认情况下,波浪号扩展也适用于 WatchPaths。

      【讨论】:

        猜你喜欢
        • 2011-05-28
        • 1970-01-01
        • 1970-01-01
        • 2011-06-21
        • 1970-01-01
        相关资源
        最近更新 更多