दिलचस्प पोस्ट
Django में – मॉडल विरासत – क्या यह आपको एक मूल मॉडल के गुण को ओवरराइड करने की अनुमति देता है? समझना: रेलवे के माध्यम से has_one / has_many का स्रोत विकल्प है क्या है ((संरचना का नाम *) शून्य -> ​​ख) सी 11 में अपरिभाषित व्यवहार का कारण बनता है? JQuery.extend और jQuery.fn.extend के बीच अंतर? .myd, .myi, .frm फ़ाइलों से MySQL डाटाबेस कैसे पुनर्प्राप्त करें I C ++ स्ट्रिंग में चारों की सभी घटनाओं को कैसे निकालें जर्सी के साथ स्ट्रॉप्स 2 MySQL में नल (प्रदर्शन और संग्रहण) वॉली – JSONArrayRequest का उपयोग करके एक पोस्ट अनुरोध भेजा जा रहा है एस्प.net एमवीसी में विशेषता और jquery AJAX अधिकृत करें एक अनुरूप सी कार्यान्वयन कर सकते हैं # define null कुछ निराला होना करने के लिए Node_modules में स्थानीय रूप से स्थापित पैकेज का उपयोग कैसे करें? PHPUnit के साथ संरक्षित विधियों का परीक्षण करने के लिए सर्वोत्तम प्रथाएं जावा 8 की धाराएं: क्यों समानांतर धारा धीमी है? ककड़ी का उपयोग करते हुए असफल परिदृश्यों को फिर से चलाने के लिए?

Launchd.conf के माध्यम से पर्यावरण चर की स्थापना अब OS X Yosemite / El Capitan / macOS सिएरा में काम नहीं करती है?

ऐसा लगता है कि launchd.conf अब मेरे पर्यावरण चर को लोड नहीं करता है। क्या किसी और ने देखा है?

स्थायी रूप से पर्यावरण चर सेट करने का एक और उपाय क्या है?

वेब के समाधान से एकत्रित समाधान "Launchd.conf के माध्यम से पर्यावरण चर की स्थापना अब OS X Yosemite / El Capitan / macOS सिएरा में काम नहीं करती है?"

~/Library/LaunchAgents/ में इस सामग्री के साथ एक environment.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>my.startup</string> <key>ProgramArguments</key> <array> <string>sh</string> <string>-c</string> <string> launchctl setenv PRODUCTS_PATH /Users/mortimer/Projects/my_products launchctl setenv ANDROID_NDK_HOME /Applications/android-ndk launchctl setenv PATH $PATH:/Applications/gradle/bin </string> </array> <key>RunAtLoad</key> <true/> </dict> </plist> 

आप <string></string> ब्लॉक के अंदर कई launchctl कमांड जोड़ सकते हैं

सिस्टम रिबूट के बाद plist सक्रिय होगा। आप launchctl load ~/Library/LaunchAgents/environment.plist लॉन्च launchctl load ~/Library/LaunchAgents/environment.plist प्रयोग भी तुरंत शुरू कर सकते हैं।

[संपादित करें]

वही समाधान एल कैप्टन में भी काम करता है

Xcode 7.0+ डिफ़ॉल्ट रूप से पर्यावरण चर का मूल्यांकन नहीं करता है इस आदेश के साथ पुराने व्यवहार को सक्षम किया जा सकता है:

defaults write com.apple.dt.Xcode UseSanitizedBuildSystemEnvironment -bool NO

[संपादित करें]

वहाँ कुछ स्थितियों जहां यह काफी काम नहीं करता है। यदि कंप्यूटर को पुनरारंभ किया जाता है और "वापस प्रवेश करने के दौरान विंडो को फिर से खोलें" चुना जाता है, तो फिर से खुलने वाले विंडो में वेरिएबल्स नहीं दिखाई दे सकते हैं (शायद वे एजंट चलाने से पहले खोले जाते हैं)। इसके अलावा, यदि आप ssh के माध्यम से लॉग इन करते हैं, तो वेरिएबल सेट नहीं किए जाएंगे (इस प्रकार आपको उन्हें ~ / .bash_profile में सेट करना होगा)। अंत में, यह एल कैपिटन और सिएरा पर पाथ के लिए काम नहीं करता है। इसे 'प्रक्षेपण कॉन्फ़िग उपयोगकर्ता पथ …' और / etc / path के जरिए सेट किया जाना चाहिए।

[ मूल उत्तर ]: आप अभी भी एक launchctl setenv variablename value सेट करने के लिए launchctl setenv variablename value का उपयोग कर सकते हैं, ताकि सभी अनुप्रयोगों (टर्मिनल के माध्यम से शुरू किए गए लोगों के अतिरिक्त डॉक या स्पॉटलाइट के माध्यम से शुरू किया गया ग्राफिकल एप्लिकेशन) उठाया जा सके।

जाहिर है आप हर बार जब आप लॉगिन करते हैं, ऐसा नहीं करना चाहेंगे।

[ संपादित करें ]: इस से बचने के लिए, AppleScript Editor लॉन्च करें, इस तरह से एक कमांड दर्ज करें:

 do shell script "launchctl setenv variablename value" 

(एकाधिक पंक्तियों का उपयोग करें यदि आप एकाधिक चर सेट करना चाहते हैं)

अब फ़ाइल प्रारूप के रूप में ( + s ) को सहेजें : अनुप्रयोग अंत में System Settingsउपयोगकर्ता और समूहलॉगिन आइटम खोलें और अपना नया एप्लिकेशन जोड़ें

[ मूल उत्तर ]: इस जगह के चारों ओर काम करने के लिए सभी चर जो आप एक छोटी शेल स्क्रिप्ट में परिभाषित करना चाहते हैं, तो इस मैकोड लॉन्ग पर एक स्क्रिप्ट को चलाने के बारे में इस पिछले जवाब पर गौर करें। इस तरह जब उपयोगकर्ता लॉग इन करता है तो स्क्रिप्ट को लागू किया जाएगा।

[ संपादित करें ]: कोई भी समाधान बिल्कुल सही नहीं है क्योंकि वेरिएबल केवल उस विशिष्ट उपयोगकर्ता के लिए निर्धारित किए जाएंगे, लेकिन मैं उम्मीद कर रहा / रही हूं कि आपकी आवश्यकता हो सकती है।

यदि आपके पास एकाधिक उपयोगकर्ता हैं तो आप या तो उनमें से प्रत्येक के लिए एक लॉगिन आइटम मैन्युअल रूप से सेट कर सकते हैं या प्रत्येक स्थानीय पुस्तकालय / लॉन्च एगेंट्स निर्देशिका में कॉमयूज़र.लॉगइनस्क्रिप्ट.लिलिस्ट की एक प्रति डाल सकते हैं, जो एक ही शेल स्क्रिप्ट पर इंगित करते हैं।

माना गया, इन समाधानों में से कोई भी /etc/launchd.conf के रूप में सुविधाजनक नहीं है

[ आगे संपादित ]: नीचे एक उपयोगकर्ता का उल्लेख है कि यह उनके लिए काम नहीं करता। हालांकि मैंने कई योसमाइट मशीनों पर परीक्षण किया है और यह मेरे लिए काम करता है यदि आपको कोई समस्या आ रही है, तो याद रखें कि इसके लिए आवेदन को पुन: प्रारंभ करने की आवश्यकता होगी। इसके अतिरिक्त यदि आप टर्मिनल में ~ / .profile या ~ / .bash_profile के द्वारा टर्मिनल में चर सेट करते हैं, तो वे शैल से शुरू किए गए एप्लिकेशन के लिए लॉन्क्टैटएल सेटेनवि द्वारा निर्धारित चीजों को ओवरराइड कर देंगे।

मैक ओएस एक्स 10.10 पर जॉइसमेइट 3 फाइलों + 2 कमांड के साथ पर्यावरण चर सेट करना संभव है।

पर्यावरण चर परिभाषा के साथ मुख्य फ़ाइल:

 $ ls -la /etc/environment -r-xr-xr-x 1 root wheel 369 Oct 21 04:42 /etc/environment $ cat /etc/environment #!/bin/sh set -e syslog -s -l warn "Set environment variables with /etc/environment $(whoami) - start" launchctl setenv JAVA_HOME /usr/local/jdk1.7 launchctl setenv MAVEN_HOME /opt/local/share/java/maven3 if [ -x /usr/libexec/path_helper ]; then export PATH="" eval `/usr/libexec/path_helper -s` launchctl setenv PATH $PATH fi osascript -e 'tell app "Dock" to quit' syslog -s -l warn "Set environment variables with /etc/environment $(whoami) - complete" 

उपयोगकर्ता अनुप्रयोगों (टर्मिनल, आईडीई, …) के लिए पर्यावरण चर लोड करने के लिए सेवा की परिभाषा:

 $ ls -la /Library/LaunchAgents/environment.user.plist -rw------- 1 root wheel 504 Oct 21 04:37 /Library/LaunchAgents/environment.user.plist $ sudo cat /Library/LaunchAgents/environment.user.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>environment.user</string> <key>ProgramArguments</key> <array> <string>/etc/environment</string> </array> <key>KeepAlive</key> <false/> <key>RunAtLoad</key> <true/> <key>WatchPaths</key> <array> <string>/etc/environment</string> </array> </dict> </plist> 

रूट उपयोगकर्ता अनुप्रयोगों के लिए एक ही सेवा परिभाषा:

 $ ls -la /Library/LaunchDaemons/environment.plist -rw------- 1 root wheel 499 Oct 21 04:38 /Library/LaunchDaemons/environment.plist $ sudo cat /Library/LaunchDaemons/environment.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>environment</string> <key>ProgramArguments</key> <array> <string>/etc/environment</string> </array> <key>KeepAlive</key> <false/> <key>RunAtLoad</key> <true/> <key>WatchPaths</key> <array> <string>/etc/environment</string> </array> </dict> </plist> 

और अंत में हमें इन सेवाओं को पंजीकृत करना चाहिए:

 $ launchctl load -w /Library/LaunchAgents/environment.user.plist $ sudo launchctl load -w /Library/LaunchDaemons/environment.plist 

हम क्या प्राप्त करते हैं:

  1. सिस्टम पर्यावरण चर को घोषित करने का एकमात्र स्थान: / etc / पर्यावरण
  2. / Etc / पर्यावरण फ़ाइल के संशोधन के बाद पर्यावरण चर का त्वरित स्वत: अपडेट – बस अपने आवेदन को पुन: लॉन्च करें

मुद्दे / समस्याएं:

क्रम में आपके एनवी वैरिएबल को सिस्टम रीबूट के बाद आवेदनों द्वारा सही ढंग से लिया गया है, जिसकी आपको आवश्यकता होगी:

  • या तो दो बार प्रवेश करें: लॉगिन => लॉगआउट => लॉगिन करें
  • या मैन्युअल रूप से बंद करें और फिर से खोलें अनुप्रयोगों, जहां env चर लिया जाना चाहिए
  • या सुविधा का उपयोग नहीं करें "वापस प्रवेश करते समय विंडो को फिर से खोलें"

यह ऐप्पल की वजह से भरी हुई सेवाओं के स्पष्ट आदेश से इनकार करता है, इसलिए एनवी चर "पुन: खुलने की कतार" के प्रसंस्करण के साथ समानांतर में पंजीकृत हैं।

लेकिन वास्तव में, मैं अपने सिस्टम को रिबूट केवल प्रति वर्ष कई बार (बड़े अपडेट पर), इसलिए यह एक बड़ा सौदा नहीं है

से उद्धृत

Apple Developer Relations 10-Oct-2014 09:12 PM

बहुत विचार-विमर्श के बाद, इंजीनियरिंग ने इस सुविधा को हटा दिया है सुरक्षा कारणों से /etc/launchd.conf फ़ाइल को जानबूझ कर निकाल दिया गया था। एक वैकल्पिक हल के रूप में, आप launchctl limit से LaunchDaemon से बूट के दौरान launchctl limit को रूट के रूप में चला सकते हैं। (…)

उपाय:

/Library/LaunchDaemons/com.apple.launchd.limit.plist को कोड में डाल दो-स्क्रिप्ट:

 #!/bin/bash echo '<?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>eicar</string> <key>ProgramArguments</key> <array> <string>/bin/launchctl</string> <string>limit</string> <string>core</string> <string>unlimited</string> </array> <key>RunAtLoad</key> <true/> <key>ServiceIPC</key> <false/> </dict> </plist>' | sudo tee /Library/LaunchDaemons/com.apple.launchd.limit.plist 

पुराने व्यवहार को पुनर्स्थापित करने के लिए यहां आदेश दिए गए हैं:

 # create a script that calls launchctl iterating through /etc/launchd.conf echo '#!/bin/sh while read line || [[ -n $line ]] ; do launchctl $line ; done < /etc/launchd.conf; ' > /usr/local/bin/launchd.conf.sh # make it executable chmod +x /usr/local/bin/launchd.conf.sh # launch the script at startup echo '<?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>launchd.conf</string> <key>ProgramArguments</key> <array> <string>sh</string> <string>-c</string> <string>/usr/local/bin/launchd.conf.sh</string> </array> <key>RunAtLoad</key> <true/> </dict> </plist> ' > /Library/LaunchAgents/launchd.conf.plist 

अब आप setenv JAVA_HOME /Library/Java/Home जैसे /etc/launchd.conf में आदेश निर्दिष्ट कर सकते हैं।

एल कैपिटन पर चेक किया

मेरे लिए काम किसने किया (एएक्स 'धन्यवाद से प्रेरित):

इसे / लायब्रेरी / लॉन्च डीमन / कॉम.पॉप.लांचड.लिमिट.प्लिस्ट में चिपकाएं, फिर रिबूट करें:

 <?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>eicar</string> <key>ProgramArguments</key> <array> <string>/bin/launchctl</string> <string>limit</string> <string>maxfiles</string> <string>16384</string> <string>16384</string> </array> <key>RunAtLoad</key> <true/> <key>ServiceIPC</key> <false/> </dict> </plist> 

यदि आप इसे कदम से कदम की जरूरत है:

  • लॉन्च टर्मिनल
  • सुडो टाइप करें, तो रूट के रूप में लॉग इन करने के लिए अपना पासवर्ड दर्ज करें
  • प्रकार vi / लाइब्रेरी / लाँच डीमन / कॉम.पॉप.लांचड.लिमिट.प्लिस्ट
  • वीआई संपादक में कब, सम्मिलित मोड में प्रवेश करने के लिए कुंजी को दबाएं तब ऊपर सटीक कोड की सामग्री चिपकाएं ( ⌘+v )। यह सीमा प्रति प्रक्रिया 16384 फाइलें और कुल 16384 फाइलों को लागू करेगी
  • अपनी फाइल सहेजें और एएससी का प्रयोग छोड़ दें :wq
  • अपना सिस्टम रीबूट करें, और जांचें कि यह कमांड लॉन्चैटएल सीमा का उपयोग कर काम कर रहा है

मैं आशा करता हूं कि इससे आपको मदद मिली होगी।

आप https://github.com/ersiner/osx-env-sync को एक कोशिश दे सकते हैं यह एक एकल स्रोत से दोनों कमांड लाइन और जीयूआई एप्लिकेशन हैंडल करती है और ओएस एक्स (योसेमाइट) के नवीनतम संस्करण को काम करती है।

आप पथ प्रतिस्थापन और अन्य शैल ट्रिक्स का इस्तेमाल कर सकते हैं क्योंकि आप जो लिखते हैं वह नियमित रूप से बाश स्क्रिप्ट है जिसे पहले स्थान पर बैश द्वारा प्राप्त किया जा सकता है। कोई प्रतिबंध नहीं .. ( ओएसएक्स-एनवाई-सिंक दस्तावेज की जांच करें और आप इसे कैसे प्राप्त करेंगे यह समझें।)

मैंने यहां एक समान प्रश्न का उत्तर दिया जहां आपको अधिक मिलेगा।

इसका समाधान /etc/profile आपकी चर को जोड़ना है तब सब कुछ अपेक्षित रूप से काम करता है! बेशक आपको रूट उपयोगकर्ता के रूप में sudo nano / etc / profile के साथ करना चाहिए। यदि आप इसे किसी अन्य तरीके से संपादित करते हैं तो सिस्टम क्षतिग्रस्त / etc / profile से शिकायत करेगा, भले ही आप रूट को अनुमति बदल दें

मैंने निम्न तरीके से ~ / .bash_profile में चर जोड़ा। आपके द्वारा पुनरारंभ / लॉग आउट करने और लॉग इन करने के बाद

 export M2_HOME=/Users/robin/softwares/apache-maven-3.2.3 export ANT_HOME=/Users/robin/softwares/apache-ant-1.9.4 launchctl setenv M2_HOME $M2_HOME launchctl setenv ANT_HOME $ANT_HOME export PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/Users/robin/softwares/apache-maven-3.2.3/bin:/Users/robin/softwares/apache-ant-1.9.4/bin launchctl setenv PATH $PATH 

नोट: पुनरारंभ / लॉग आउट और लॉग इन के बिना आप इन परिवर्तनों का उपयोग कर लागू कर सकते हैं;

 source ~/.bash_profile