कई स्थान हैं जहां आप पर्यावरण चर सेट कर सकते हैं।
~/.profile: इसका उपयोग उन चर के लिए करें, जिन्हें आप टर्मिनल से लॉन्च किए गए सभी कार्यक्रमों में सेट करना चाहते हैं (ध्यान दें कि, लिनक्स के विपरीत, टर्मिनल। टैप में खोले गए सभी गोले लॉगिन गोले हैं)।
~/.bashrc: यह उन गोले के लिए है, जो लॉगिन गोले नहीं हैं। इसे उपनामों और अन्य चीजों के लिए उपयोग करें जिन्हें उप-श्रेणियों में पुनर्परिभाषित करने की आवश्यकता है, न कि पर्यावरण चर जो विरासत में मिले हैं।
/etc/profile: यह ~ / .profile से पहले लोड किया गया है, लेकिन अन्यथा समकक्ष है। जब आप चाहते हैं कि चर मशीन पर सभी उपयोगकर्ताओं द्वारा शुरू किए गए टर्मिनल कार्यक्रमों पर लागू हो (मान लें कि वे बैश का उपयोग करते हैं)।
~/.MacOSX/environment.plist: यह लॉगिन पर लॉगिनविंडो द्वारा पढ़ा जाता है। यह जीयूआई सहित सभी अनुप्रयोगों पर लागू होता है, 10.5 में स्पॉटलाइट द्वारा लॉन्च किए गए (10.6 नहीं) को छोड़कर। परिवर्तनों को प्रभावी करने के लिए आपको लॉगआउट करना होगा और फिर से लॉगिन करना होगा। यह फ़ाइल अब OS X 10.8 के रूप में समर्थित नहीं है।
- आपके उपयोगकर्ता का
launchdउदाहरण: यह उपयोगकर्ता, GUI और CLI द्वारा लॉन्च किए गए सभी कार्यक्रमों पर लागू होता है। आप किसी भी समय setenvकमांड का उपयोग करके परिवर्तन लागू कर सकते हैं launchctl। सिद्धांत रूप में , आपको उपयोगकर्ता को लॉग इन करने पर setenvकमांड को अंदर रखने में सक्षम होना चाहिए ~/.launchd.conf, और launchdउन्हें स्वचालित रूप से पढ़ना होगा, लेकिन इस फाइल के लिए अभ्यास समर्थन में कभी भी लागू नहीं किया गया था। इसके बजाय, आप लॉगिन पर स्क्रिप्ट को निष्पादित करने के लिए किसी अन्य तंत्र का उपयोग कर सकते हैं, और उस स्क्रिप्ट launchctlको launchdपर्यावरण को स्थापित करने के लिए कॉल कर सकते हैं।
/etc/launchd.conf: यह लॉन्चड द्वारा पढ़ा जाता है जब सिस्टम शुरू होता है और जब उपयोगकर्ता लॉग इन करता है। वे सिस्टम पर हर एक प्रक्रिया को प्रभावित करते हैं, क्योंकि लॉन्च रूट प्रक्रिया है। रनिंग रूट लॉन्च में परिवर्तन लागू करने के लिए आप कमांड को पाइप कर सकते हैं sudo launchctl।
समझने वाली मूलभूत बातें हैं:
- पर्यावरण चर एक प्रक्रिया के बच्चों को विरासत में मिलते हैं, जब वे कांटे होते हैं।
- रूट प्रक्रिया एक लॉन्च उदाहरण है, और उपयोगकर्ता सत्र के अनुसार एक अलग लॉन्च आवृत्ति भी है।
- लॉन्चड आपको अपने वर्तमान परिवेश चर का उपयोग करने की अनुमति देता है
launchctl; फिर अपडेट किए गए चर को तब से प्राप्त सभी नई प्रक्रियाओं द्वारा विरासत में मिला है।
लॉन्च के साथ पर्यावरण चर सेट करने का उदाहरण:
echo setenv REPLACE_WITH_VAR REPLACE_WITH_VALUE | launchctl
अब, अपने GUI ऐप को लॉन्च करें जो वैरिएबल और वॉइला का उपयोग करता है!
तथ्य यह है कि ~/.launchd.confकाम नहीं करता है के आसपास काम करने के लिए , आप निम्नलिखित स्क्रिप्ट डाल सकते हैं ~/Library/LaunchAgents/local.launchd.conf.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>Label</key>
<string>local.launchd.conf</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>-c</string>
<string>launchctl < ~/.launchd.conf</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
फिर आप setenv REPLACE_WITH_VAR REPLACE_WITH_VALUEअंदर डाल सकते हैं ~/.launchd.conf, और इसे प्रत्येक लॉगिन पर निष्पादित किया जाएगा।
ध्यान दें, जब इस फैशन में एक कमांड लिस्ट को लॉन्चर में डाला जाता है, तो आप रिक्त स्थान वाले मानों के साथ पर्यावरण चर सेट करने में सक्षम नहीं होंगे। यदि आप ऐसा करने की जरूरत है, तो आप launchctl इस प्रकार कॉल कर सकते हैं: launchctl setenv MYVARIABLE "QUOTE THE STRING"।
इसके अलावा, ध्यान दें कि लॉगिन पर चलने वाले अन्य प्रोग्राम लॉन्चर से पहले निष्पादित हो सकते हैं, और इस प्रकार यह सेट होने वाले पर्यावरण चर को नहीं देख सकता है।