Use uma variável de ambiente em um script launchd

21

Estou curioso para saber se é possível especificar uma variável de ambiente na porção ProgramArguments de um script luanchd no Mac OS X Leopard.

<?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>
    
por matpie 10.02.2010 / 02:08

3 respostas

15

Não na chave ProgramArguments. Você precisa adicionar uma chave EnvironmentVariables no comando do seu plist assim:

<?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>

Veja: Criando daemons e agentes de lançamento .

    
por 02.04.2010 / 07:34
2

Eu não acho que o launchd saiba sobre o ambiente nativamente, pelo menos não como substituições $ {VARIABLE}.

Não há nada que impeça você de iniciar um script de shell (ou um shell com -c ) como sua ação launchd e que teria um ambiente e respeitaria $ {VARIABLES} - Esteja ciente da diferença entre Sistema e Usuário Daemons / agentes nesse caso embora ...

    
por 10.02.2010 / 04:47
1

Eu não tenho certeza - eu não tentei isso antes ... mas eu posso te dizer que se a única variável que você gosta é casa - você pode usar ~.

So: <string>~/bin/attach-devroot.sh</string>
    
por 10.02.2010 / 04:29