जीएआई अनुप्रयोगों के लिए दिखाई देने वाले ओएस एक्स 10.8 माउंटेन लॉयन को पैठ पर्यावरण चर कैसे बदलें? [डुप्लिकेट]


14

मैंने ओएस एक्स 10.8 पर पर्यावरण चर स्थापित करने के लिए सुनी सभी विधियों की कोशिश की, लेकिन उनमें से कोई भी काम नहीं करता है।

परीक्षण करने के लिए, एक ग्रहण या इंसलीज आईडीईए जैसे गुई एप्लिकेशन के अंदर से एक बैश स्क्रिप्ट चलाएं।

#!/bin/bash
set|grep PATH

जिन चीजों का मैंने परीक्षण किया और जो रिबूट के बाद भी काम नहीं कर रही हैं :

  • /etc/paths तथा /etc/paths.d/something
  • /etc/launchd.conf
  • ~/.bash_profile
  • ~/.MacOSX/environment.plist (अनुशंसित के रूप में बाइनरी प्लिस्ट)
  • launchctl setenv PATH $PATHकमांड लाइन से चलने वाला, यह GUI ऐप्स के लिए PATH को अपडेट करने वाला था, कम से कम वर्तमान सत्र के लिए। लगता है क्या, कोई बदलाव नहीं।

ऐसा लगता है कि PATH हमेशा PATH=/usr/bin:/bin:/usr/sbin:/sbinGUI ऐप्स के लिए है।


क्या आप एक समाधान के साथ ठीक हैं जो बैश पथ सेट करता है या क्या आपको सभी प्रक्रियाओं के लिए बेस पथ के लॉन्च मान को बदलने की आवश्यकता है?
bmike

मुझे GUI ऐप्स द्वारा उपयोग किए जाने वाले पैट को टर्मिनल / बैश / के लिए बदलने की आवश्यकता है ... मेरे पास पहले से ही काम करने वाले समाधानों का एक बड़ा सेट है।
सोरिन

मुझे नहीं पता कि ग्रहण और अन्य लोग रनटाइम पर्यावरण चर का समर्थन क्यों नहीं करते हैं, इसलिए मैक पर प्रत्येक जावा डेवलपर को पथ को सेट करने या प्रत्येक प्रोजेक्ट में अपने वांछित चर में सोर्सिंग के बारे में चिंता करने की आवश्यकता नहीं है।
bmike

: इस सवाल का जवाब यहाँ देख apple.stackexchange.com/questions/51677/...
फ़्लोरी

जवाबों:


8

माउंटेन लायन के साथ /etc/launchd.confजहां आपको GUI एप्लिकेशन पथ सेट करना चाहिए। याद रखें कि यह एक स्क्रिप्ट फ़ाइल नहीं है; यह केवल launchctlआदेशों का समर्थन करता है इसलिए आपको कुछ लिखना चाहिए:

setenv PATH /new/path:/usr/bin:/bin:/usr/sbin:/sbin

ध्यान दें कि यह शेल पर्यावरण चर प्रतिस्थापन (जैसे $PATH) का समर्थन नहीं करता है, इसलिए आपको हर उस रास्ते को सेट करना होगा जिसे आप शामिल करना चाहते हैं। आपके द्वारा बताए गए मूल रास्तों को रखना एक अच्छा विचार है /usr/bin:/bin:/usr/sbin:/sbin

परिवर्तनों को प्रभावी करने के लिए फ़ाइल को बदलने (या बनाने) के बाद आपको रिबूट करना होगा।


इसने मेरे लिए 10.8.2 में काम किया जो कि PATH की स्थापना के लिए था जो कीबोर्ड मेस्ट्रो के साथ प्रयोग करने योग्य था।
टीजे लुओमा

मैन पेज कहता है कि आप $ HOME / .launchd.conf का उपयोग कर सकते हैं लेकिन यह मेरे लिए काम नहीं करता है। का प्रयोग /etc/launchd.conf किया। मैं 10.8.4 पर हूं
pedz

यह मेरे लिए काम नहीं करता है:-bash: setenv: command not found
कोलास

यदि कोई कोलास की तरह भ्रमित था, setenvएक launchctlकमांड है, तो आप इसका उपयोग करते हैं launchctl setenv
जॉन शायर

3

अगर आप टर्मिनल से GUI ऐप को कॉल करते हैं तो यह काम करता है:

PATH=/this/is/kind/of/crazy:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin /Applications/Automator.app/Contents/MacOS/Automator 

यहाँ छवि विवरण दर्ज करें

वास्तव में अच्छा या आरामदायक नहीं है लेकिन जरूरत पड़ने पर यह काम करता है।


शीघ्र ही कोई रास्ता नहीं। मैं ऐसा करने को तैयार नहीं हूं, यह कभी-कभी ही काम करेगा। जब आप किसी फ़ाइल पर क्लिक करते हैं तो ऐप भी शुरू किया जा सकता है।
सोरिन

2
जैसा कि मैंने कहा कि यह वास्तव में अच्छा नहीं है, लेकिन तब तक काम कर सकता है जब तक कि Apple इस मुद्दे को ठीक नहीं करता (क्योंकि यह लॉन्चक्टल के साथ संभव होना चाहिए)।
nohillside

2

मैंने एक और समाधान तैयार किया , जो कि यहां पर पैट्रिक्स से प्रेरित है , उम्मीद है कि यह थोड़ा कम दर्दनाक है। खोलें Automator, एक एप्लिकेशन को लक्ष्य के रूप में चुनें, और चुनें Execute Shell script(या इसे जो भी कहा जाता है, जर्मन में यह "शेल-स्किप्ट ausführen" है जैसा कि ऊपर देखा जा सकता है) कार्रवाई के रूप में। स्क्रिप्ट में, बस टाइप करें

launchctl setenv FOO1 bar1
[...]
launchctl setenv FOOn barn
open -a YourApplicationHere

फिर आप जहां चाहें पूरी चीज को सहेज लें, और यदि आपको YourApplicationHere चलाने की आवश्यकता है, तो इसके बजाय " ऑटोमेकर एप्लिकेशन" बनाएं

मैंने इसे YourApplicationHere केTerminal रूप में परीक्षण किया , और देखा कि FOO वास्तव में बार में सेट था । मुझे उम्मीद है कि यह दूसरों के लिए भी काम करेगा।launchctl export

अंत में, यदि आप इस समाधान का उपयोग अपने पर्यावरण चर के लिए करते हैं, launchctlतो शेल स्क्रिप्ट में सामान टाइप करने के बजाय , आप बस कॉल कर सकते हैं /Users/Shared/conflaunchd.sh(जिसे आपको पहले बनाना होगा, साथ में चर का वर्णन करने वाली फ़ाइल के साथ)।


-1

माना जाता है, GUI ऐप्स को launchctlप्रदान करता PATHहै। शेल पथ के पथ को सेट करने के लिए, अपना पथ सेट करने के बाद अपनी शेल आरसी फ़ाइल में निम्न जोड़ें:

launchctl setenv PATH $PATH

1
दुर्भाग्य से यह काम नहीं :-( करता है
nohillside


हम उन उत्तरों की अनुमति देते हैं जो प्रश्न को संबोधित करने के लिए एक अच्छा विश्वास प्रयास करते हैं। हम गलत उत्तर भी देते हैं और मतदान को शुद्धता के लिए बोलने देते हैं। इसे व्यक्तिगत बनाने के बिना टिप्पणी करना जवाब देने के प्रयासों को हतोत्साहित करने के बजाय दोषपूर्ण तर्क में छेद करने का सबसे अच्छा तरीका है।
bmike
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.