我有一个launchd per-user代理。在它的.plist中,我想使用$HOME
环境变量。
有可能吗?
(这是“程序”键,我想将其定义为“$ HOME / bin / myscript”)
答案 0 :(得分:6)
launchd不对其.plists中的值执行任何替换,因此无法以您尝试执行此操作的形式执行此操作。您可以做的是将要运行的命令交给shell,让 it 执行变量替换并运行命令。例如,您可以将Program
键替换为:
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>-c</string>
<string>exec $HOME/tmp/myscript</string>
</array>
(注意exec
前缀不是必需的,它只是一个小的优化。它使shell用脚本替换自己,而不是将脚本作为子进程启动,然后等待它到光洁度。)
答案 1 :(得分:4)
EnableGlobbing为ProgramArguments(但不是Program)启用波浪号和通配符扩展。
<key>EnableGlobbing</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>~/bin/myscript</string>
</array>
ProgramArguments只能是一个字符串数组,而不仅仅是一个字符串。默认情况下,Tilde扩展也适用于WatchPath。