🎃
launchd で環境変数を定義するには "EnvironmentVariables" Key を記述する
macOS 10.10(Yosemite)以後、どうやら launchctl 経由でコマンドを実行する場合、環境変数を指定するには launchd.plist
に EnvironmentVariables
という key
をセットする必要があるようです。
複数の環境変数も <dict>
内にまとめて記載できるので安心。
ソースコード内に含みたくない固有の変数は、こうやって環境変数で指定しておけば、幾文か安心でしょう。例えば、こんな感じで、OAuth 用の CONSUMER KEY
や SECRET KEY
、ACCESS TOKEN
などを指定して実行するのに向いてます。
PATH
も /usr/local/bin
などは通ってなかったりするので、ここで定義しても良いかもしれませんね。
com.setenv.test.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.setenv.test</string>
<key>EnvironmentVariables</key>
<dict>
<key>CONSUMER_KEY</key>
<string>N...............i</string>
<key>SECRET_KEY</key>
<string>O...............Q</string>
<key>TRACE</key>
<string></string>
</dict>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Users/sho/bin/test_setenv.sh</string>
</array>
<key>StartInterval</key>
<integer>600</integer>
<key>StandardOutPath</key>
<string>/Users/sho/logs/test_setenv.out</string>
<key>StandardErrorPath</key>
<string>/Users/sho/logs/test_setenv.err</string>
<key>WorkingDirectory</key>
<string>/Users/sho/bin<string>
</dict>
</plist>
Discussion