Я пытаюсь source
файл из launch agent
, но неясно, как это сделать (или если это вообще возможно).Я знаю, что легко setenv
для отдельных переменных, но мне нужно ввести их несколько, так что source
- это то, что мне нужно.
<?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>my.sourcerer</string>
<key>ProgramArguments</key>
<array>
<string>source</string>
<string>my_file.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>WorkingDirectory</key>
<string>/path/to/source</string>
</dict>
</plist>
Это загружается и запускается без проблем, кажется:
$ launchctl load ~/Library/LaunchAgents/my.sourcerer.plist
$ launchctl start ~/Library/LaunchAgents/my.sourcerer.plist
Но когда я printenv
, ни одна из переменных моего окружения не появляется.Если вручную я делаю:
$ source /path/to/source/my_file.sh
$ printenv
Тогда все переменные отображаются.Почему агент launchctl
не загружает переменные в мою среду?