launchdスクリプトで環境変数を使用する


21

ProgramArgumentsMac OS X Leopardのluanchdスクリプトの一部で環境変数を指定できるかどうかは興味があります。

<?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>me.mpietz.MountDevRoot</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>

        <string>$HOME/bin/attach-devroot.sh</string>

        <!-- Instead of using...
        <string>/Users/mpietz/bin/attach-devroot.sh</string -->
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

回答:


16

ProgramArgumentsキーにはありません。次のEnvironmentVariablesようにキーをplistの辞書に追加する必要があります。

<?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>EnvironmentVariables</key>
    <dict>
           <key>AN_ENVIRONMENT_VARIABLE_NAME</key>
           <string>the_value</string>
    </dict>
    <key>Label</key>
    <string>me.mpietz.MountDevRoot</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>

        <string>$HOME/bin/attach-devroot.sh</string>

        <!-- Instead of using...
        <string>/Users/mpietz/bin/attach-devroot.sh</string -->
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

参照:起動デーモンと起動エージェントの作成


3
もちろん、envをハードコーディングできます。plist内の変数。ただし、$ HOMEなどの既存の変数は使用できません。シェルスクリプトの引数にすぎない場合は、シェルスクリプト(launchdではない)が展開します。しかし、この例では、-cオプションを/ bin / shに追加すると実際に機能する可能性がありますか?
mivk

3

launchdは少なくとも$ {VARIABLE}の置換としてではなく、環境についてネイティブに知っているとは思わない。

-cただし、launchdアクションとしてシェルスクリプト(またはを含むシェル)を起動することを妨げるものはありません。また、環境があり、$ {VARIABLES}を尊重します-その場合、システムデーモンとユーザーデーモン/エージェントの違いに注意してくださいでも…


1

よくわかりません-試したことはありません...しかし、気にする変数が自宅だけなら、〜を使用できます。

So: <string>~/bin/attach-devroot.sh</string>

1
これは機能しません。私は得る"/bin/sh: ~/bin/attach-devroot.sh: No such file or directory"
-matpie

これEnableGlobbingは、フラグがtrueに設定されている場合にのみ機能します。launchd.plistのマニュアルページを参照してください。
サクラ

2
EnableGlobbingもうサポートされていません
リヴィウ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.