एक लॉन्च स्क्रिप्ट में एक पर्यावरण चर का उपयोग करें


21

मुझे उत्सुकता है अगर ProgramArgumentsमैक ओएस एक्स तेंदुए पर एक लिंचिंग स्क्रिप्ट के हिस्से में एनवायरमेंट वेरिएबल निर्दिष्ट करना संभव है ।

<?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अपने प्लास्ट की हुकुम में एक कुंजी जोड़ने की आवश्यकता है जैसे:

<?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 को हार्ड कोड कर सकते हैं। varist plist में, लेकिन आप मौजूदा वर्जन जैसे $ HOME का उपयोग नहीं कर सकते। जब तक यह शेल स्क्रिप्ट का सिर्फ एक तर्क नहीं है, इस मामले में शेल (लॉन्च नहीं), इसका विस्तार करेगा। लेकिन इस उदाहरण में, यह वास्तव में काम कर सकता है यदि आप -cविकल्प को / bin / sh में जोड़ते हैं ?
20

3

मुझे नहीं लगता कि लॉन्चड को मूल रूप से पर्यावरण के बारे में पता है, कम से कम $ {VARIABLE} के प्रतिस्थापन के रूप में नहीं।

-cहालाँकि, आपके लॉन्च एक्शन के रूप में आपको शेल स्क्रिप्ट (या शेल के साथ ) लॉन्च करने से कुछ भी नहीं रोक रहा है , और इससे वातावरण और सम्मान $ {VARIABLES} होगा - उस मामले में सिस्टम और उपयोगकर्ता डेमॉन / एजेंटों के बीच अंतर से अवगत रहें हालांकि...


1

मुझे यकीन नहीं है - मैंने पहले इसकी कोशिश नहीं की है ... लेकिन मैं आपको बता सकता हूं कि यदि केवल चर जिसकी आपको घर पर परवाह है - आप इसका उपयोग कर सकते हैं ~।

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

1
यह काम नहीं करता है। मुझे मिलता है"/bin/sh: ~/bin/attach-devroot.sh: No such file or directory"
mat

यह केवल तभी काम करता है जब EnableGlobbingझंडा सही पर सेट हो। लॉन्चड.प्लेस्ट मैन पेज देखें ।
साक्रा

2
EnableGlobbingअब समर्थित नहीं है
Liviu
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.