У меня есть агент launchd для каждого пользователя. В этом .plist я хотел бы использовать переменную среды $HOME
.
Является ли это возможным?
(это клавиша «Программа», которую я хотел бы определить как «$ HOME/bin/myscript»)
У меня есть агент launchd для каждого пользователя. В этом .plist я хотел бы использовать переменную среды $HOME
.
Является ли это возможным?
(это клавиша «Программа», которую я хотел бы определить как «$ HOME/bin/myscript»)
launchd не выполняет никаких замен значений в своих списках .plist, поэтому это невозможно сделать в той форме, в которой вы пытаетесь это сделать. Что вы можете сделать, так это передать команду, которую вы хотите запустить, в оболочку, и пусть она выполнит подстановку переменных и запустит команду. Например, вы можете заменить этот ключ Program
следующим:
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>-c</string>
<string>exec $HOME/tmp/myscript</string>
</array>
(Обратите внимание, что префикс exec
на самом деле не нужен, это всего лишь незначительная оптимизация. Он заставляет оболочку заменить себя скриптом, а не запускать скрипт как подпроцесс, а затем ждать его завершения.)
EnableGlobbing включает расширение с помощью тильды и подстановочных знаков для ProgramArguments (но не для Program).
<key>EnableGlobbing</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>~/bin/myscript</string>
</array>
ProgramArguments может быть только массивом строк, а не просто строкой. Расширение тильды также работает в WatchPaths по умолчанию.