Başlatma betiğinde bir ortam değişkeni kullanın


21

ProgramArgumentsMac OS X Leopard'daki bir luanchd betiği bölümünde bir ortam değişkeni belirtmenin mümkün olup olmadığını merak ediyorum .

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

Yanıtlar:


16

ProgramArguments anahtarında değil. EnvironmentVariablesŞunun gibi kurallara bir anahtar eklemelisin :

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

Bkz.: Başlatma Görevlisi ve Aracıları Oluşturma .


3
Tabii, env kodunuzu zorlayabilirsiniz. plist'teki değişkenler ancak $ HOME gibi mevcut değişkenleri kullanamazsınız. Sadece bir kabuk betiği argümanı değilse, bu durumda kabuk (başlatılmadı) onu genişletir. Ancak bu örnekte, -c/ bin / sh seçeneğine bir seçenek eklerseniz, gerçekten işe yarayabilir.
mivk

3

Fırlatmanın çevre hakkında yerel olarak bildiğini sanmıyorum, en azından $ {VARIABLE} ikameleri kadar değil.

Sizi başlattığınız -ceylem olarak bir kabuk betiği (veya bir kabuk ) başlatmanızı engelleyen hiçbir şey yoktur ve bunun bir ortamı vardır ve $ {VARIABLES} - saygı duyar. gerçi ...


1

Emin değilim - daha önce denemedim ... ama umurumda olan tek değişken evdeyse, kullanabileceğini söyleyebilirim ~.

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

1
Bu işe yaramıyor. Anladım"/bin/sh: ~/bin/attach-devroot.sh: No such file or directory"
matpie

Bu yalnızca EnableGlobbingbayrak true olarak ayarlanmışsa çalışır . Bkz launchd.plist adam sayfasını.
sakra

2
EnableGlobbingartık desteklenmiyor
Liviu
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.