8

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

可能吗?

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

4

2 回答 2

6

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

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

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

于 2012-05-25T20:00:05.913 回答
5

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

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

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

于 2013-04-24T08:50:07.897 回答