सवाल मैं ओएस एक्स पर ग्लोबल पाथ पर्यावरण चर कैसे सेट करूं?


मैं ओएस एक्स पर वैश्विक पाथ पर्यावरण चर में जोड़ना चाहता हूं ताकि सभी उपयोगकर्ता शैल और जीयूआई अनुप्रयोगों को एक ही पाथ पर्यावरण मिल सके।

मुझे पता है कि मैं खोल स्टार्टअप स्क्रिप्ट में पथ में जोड़ सकता हूं, लेकिन उन सेटिंग्स को जीयूआई अनुप्रयोगों द्वारा विरासत में नहीं मिला है।

अब तक पाया गया एकमात्र तरीका पैथ पर्यावरण चर को फिर से परिभाषित करना है /etc/launchd.conf:

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

मैं वास्तव में पैथ में शामिल होने का एक तरीका नहीं समझ सका launchd.conf

मैं इस विधि के बारे में थोड़ा चिंतित हूं, लेकिन अब तक यह एकमात्र चीज है जो काम करती है। क्या कोई बेहतर तरीका है?


97
2018-05-31 19:08


मूल


देख: stackoverflow.com/questions/347286 - rjmunro
योसामेट के लिए और बाद में, देखें stackoverflow.com/questions/25385934/... - thSoft
यहां कोई भी जवाब ओपी के प्रश्न को संबोधित नहीं करता है। लेकिन thSoft द्वारा यहां टिप्पणी पैसे पर सही है! हो सकता है कि इसे विलय या उस संदर्भित प्रश्न से जोड़ा जाना चाहिए: stackoverflow.com/questions/25385934/... - Kevin Buchs


जवाब:


पामर की जीयूआई जानकारी सही है, लेकिन खोल द्वारा देखे गए पथ को संशोधित करने के लिए एक और अधिक रखरखाव तरीका है। पसंद mediaslave ने कहा, आप संपादित कर सकते हैं /etc/paths, लेकिन इससे भी बेहतर आप टेक्स्ट फ़ाइल को छोड़ सकते हैं /etc/paths.d/ इसमें एक रास्ता है और सभी गोले पथ का सही ढंग से निर्माण करेंगे।

उदाहरण के लिए, मेरे सिस्टम पर:

$ cat /etc/paths
/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin
$ ls /etc/paths.d
X11       git      postgres
$ cat /etc/paths.d/postgres
/Library/PostgreSQL/8.4/bin
$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Library/PostgreSQL/8.4/bin:/usr/X11/bin:/usr/local/mysql/bin

70
2018-05-28 06:53



अच्छा धन्यवाद! नोट: इसके लिए आपको लॉग आउट करने और काम करने से पहले लॉग इन करने की आवश्यकता होती है। - weronika
@weronika: मैंने पाया कि यह छोड़ने और पुनः लॉन्च करने के लिए पर्याप्त था X11 (पूरी तरह से लॉगिंग से कम दर्दनाक)। मैंने इसमें कोशिश नहीं की Terminal। - Peter Gluck
मैं टर्मिनल का जिक्र कर रहा था - आप सही हैं, मैं निर्दिष्ट करना भूल गया। - weronika
यह जानना अच्छा है, लेकिन यह ओपी के सवाल का जवाब नहीं देता है कि यह तंत्र जीयूआई ऐप्स पर लागू नहीं होता है। ओपी एक के लिए देख रहा था संयुक्त समाधान जो उसे करने की अनुमति देता है जोड़ना डिफ़ॉल्ट करने के लिए $PATH। - mklement
यहां "मेरी प्रणाली" से आपका क्या मतलब है, @ कोग? क्या हम सभी ओएस एक्स का उपयोग नहीं कर रहे हैं? क्षमा करें, लेकिन मैं अभी भी ओएस एक्स के लिए नया हूं। मैं ओएस एक्स 10.7 का उपयोग कर रहा हूं - ericn


/etc/launchd.conf

launchd.conf फ़ाइल ** एकमात्र पूर्ण समाधान है जो कमांड लाइन और जीयूआई अनुप्रयोगों दोनों के लिए काम करेगा ओएस एक्स v10.8 (माउंटेन शेर) और v10.9 (मावेरिक्स), जो सभी उपयोगकर्ताओं के लिए जीयूआई और कंसोल अनुप्रयोगों के साथ काम करेगा।

sudo touch /etc/launchd.conf
sudo nano /etc/launchd.conf

जोड़ना

setenv PATH /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin

ऊपर दिए गए उदाहरण में मैंने जोड़ा /usr/local/bin पाथ के लिए डिफ़ॉल्ट पर्यावरण मानों के लिए।

ध्यान रखें कि यह फ़ाइल एक स्क्रिप्ट नहीं है और आपके पास प्रतिस्थापन का उपयोग करने का विकल्प नहीं है। साथ ही, इन्हें लागू करने के लिए आपको रीबूट करने की आवश्यकता है।

याद रखें, अन्य सभी केवल आंशिक समाधान हैं:

  • environment.plist स्पॉटलाइट के माध्यम से लॉन्च किए गए अनुप्रयोगों के लिए काम नहीं करता है।
  • /etc/paths - केवल कंसोल के लिए
  • /etc/csh.cshrc या /etc/bashrc - केवल कुछ गोले के लिए

यह उत्तर एक ही प्रश्न पर आधारित है मैक ओएस एक्स पर पर्यावरण चर सेट करना


47
2018-06-04 20:30



महान खोज, लेकिन सवाल पहले से ही बात करता है launchd और पूछ रहा है कि कैसे करें जोड़ना इसमें पथ के लिए। - cregox
क्या आपने वास्तव में मूल प्रश्न को "असली जवाब" के रूप में इंगित करते हुए एक टिप्पणी जोड़ दी थी? - TJ Luoma
यह आपके - सहायक - उत्तर से निहित है, लेकिन केवल इसे वर्तनी करने के लिए: ओपी की इच्छा है जोड़ना डिफ़ॉल्ट पथ पर समर्थित नहीं है, क्योंकि आप अन्य पर्यावरण चरों का संदर्भ नहीं दे सकते हैं /etc/launchd.conf। - mklement
यह वैश्विक नहीं है - कमांड लाइन पर्यावरण इसे छोड़ देगा जब / etc / profile path_helper को कॉल करेगा और / etc / paths / /etc/paths.d/ से PATH का पुनर्निर्माण करेगा - Dave X
इसके अनुसार apple.stackexchange.com/questions/106355/..., यह योसाइट या बाद में के लिए कोई लंबा काम नहीं करता है - ericn


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

इसे करने की कोशिश कर रहा है launchctl काम नहीं करेगा, क्योंकि पर्यावरण चर लॉगिन पर सेट हैं; वे एक शेल सत्र के बाहर यूनिक्स में सिस्टम व्यापक नहीं हैं।

तो आप जोड़ना चाहते हैं

setenv PATH "$PATH:/add/my/extra/path"

सेवा मेरे /etc/csh.cshrc तथा

export PATH="$PATH:/more/paths:/

सेवा मेरे /etc/bashrc

यदि आप जीयूआई अनुप्रयोगों में पर्यावरण चर चाहते हैं, तो यह अधिक जटिल है। आपको एक बनाना है .MacOSX/environment.plist प्रत्येक उपयोगकर्ता की होम निर्देशिका में फ़ाइल करें। .MacOSX निर्देशिका डिफ़ॉल्ट रूप से मौजूद नहीं होगी, इसलिए आपको इसे बनाना होगा।

फ़ाइल का प्रारूप इस प्रकार है:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>

    <key>PRINTER</key>
    <string>myprinter</string>

    <key>PATH</key>
    <string>/path/to/thing/I/need</string>

    <key>DISPLAY</key>
    <string>0:1</string>

</dict>
</plist>

पर अधिक environment.plist  ऐप्पल की साइट पर है


7
2018-06-01 12:24



लेकिन सेटिंग्स /etc/launchd.conf में सेट करते समय प्रभावी होती हैं ... हमम ... / मुझे उलझन में है। - Xerxes
वास्तव में? आप वहां क्या पर्यावरण चर स्थापित कर रहे हैं? - palmer
ओएस एक्स 10.8 के रूप में बस एक अद्यतन: ~/.MacOSX/environment.plist दृष्टिकोण अब समर्थित नहीं है और उपयोगकर्ता स्तर पर कोई विकल्प नहीं है। सिस्टम-व्यापी आप उपयोग कर सकते हैं /etc/launchd.conf(और एक प्रति * * ऐप समाधान है)। - mklement
ओपी के सवालों का जवाब नहीं देता है। - Kevin Buchs


आप लाइनों को जोड़कर अपने वैश्विक पथ को संपादित कर सकते हैं /etc/pathsप्रति पंक्ति एक रास्ता।

sudo nano /etc/paths आपको वहां ले जाना चाहिए


3
2017-09-03 18:04



यह जानना अच्छा है, लेकिन यह ओपी के सवाल का जवाब नहीं देता है कि यह तंत्र जीयूआई ऐप्स पर लागू नहीं होता है। - mklement


क्या आपने इसके लिए मैन पेज पर एक नज़र डाली है path_helper ओएस एक्स पर कमांड लाइन उपयोगिता? मैंने जवाब दिया एसओ पर कुछ हद तक संबंधित सवाल मुझे लगता है कि आपको मदद मिल सकती है।


1
2018-06-01 12:50





मुझे यकीन नहीं है कि कोई कवर किया गया है सबसे साधारण और खासकर शिष्ट मार्ग। कम से कम पर मैक ओएस एक्स v10.6 (हिम तेंदुआ)।

के साथ मेसिंग [/etc/|~/.] का [profile|bashrc] फाइलें काम कर सकती हैं, लेकिन यह कुछ हद तक हैक। /etc/paths.d/ निर्देशिका जाने का रास्ता है:

  • सुडो अपने पसंदीदा संपादक में।
  • नाम की एक नई फाइल बनाएँ *name* (बस उसमें कुछ ऐसा नाम न दें जो पहले से मौजूद है) में /etc/paths.d/ प्रति पंक्ति एक पथ के साथ:

    /usr/X11/bin
    /Developer/usr/bin
    
  • फिर जोड़िए

    eval '/usr/libexec/path_helper -s`
    

    सेवा मेरे profile या bashrc, और आपको जाने के लिए अच्छा होना चाहिए।


1
2018-01-31 07:22



यह जानना अच्छा है, लेकिन यह ओपी के सवाल का जवाब नहीं देता है कि यह तंत्र जीयूआई ऐप्स पर लागू नहीं होता है। - mklement
फ़ाइल नाम सचमुच है *name*? या आप बस मतलब है name? - Peter Mortensen


मुझे यकीन नहीं है कि लॉन्च डी इसे स्वीकार करता है, लेकिन कोशिश करें:

सेटेंव पाथ "$ पाथः / मेरा / पथ"

0
2018-05-31 19:26



दुर्भाग्य से यह काम नहीं करता है। ऐसा लगता है कि लॉन्चक्टल में पर्यावरण चरों तक पहुंच आसान नहीं है। पर्यावरण चर प्राप्त करने के लिए एक आदेश है, लेकिन इसका उपयोग करने के तरीके पर बिल्कुल कोई दस्तावेज नहीं है। - lajos


मुझे यकीन नहीं है कि आप क्यों उपयोग करेंगे /etc/launchd.conf विरोध के रूप में /etc/profile - लेकिन मैक ओएस एक्स में कोई विशेषज्ञ नहीं हूं - मुझे विश्वास है कि आप में मुझे यकीन है कि यह काम करता है, लेकिन launchd मैक ओएस एक्स कार्यान्वयन / प्रतिस्थापन के लिए है init - मैक ओएस एक्स मुझे भ्रमित करता है।

वैसे भी, setenv PATH "$PATH:/more/paths:/and/more/paths" काम करेगा (टीसीएसएच), और बोर्न शैल बराबर है export PATH="$PATH:/more/paths:/and/more/paths" - मुझे नहीं पता कि कैसे launchd किसी विशेष खोल से संबंधित है।

मुझे लगता है कि मैंने और सवाल पूछे हैं तो मैंने जवाब दिया है =)


0
2018-06-01 04:10



/ etc / प्रोफाइल पथ सेटिंग्स किसी भी ओएस एक्स जीयूआई ऐप्स द्वारा नहीं देखी जाती हैं। यह केवल बैश पर लागू होता है। मैं चाहता हूं कि सभी एप्लिकेशन नई पथ सेटिंग प्राप्त करें। - lajos
ठीक है - मेरे लिए इसे साफ़ करने के लिए धन्यवाद :) - Xerxes
यूनिक्स? निश्चित रूप से, यह यूनिक्स है। मेरा मतलब है, sorta। हाँ, हमने 30 साल तक काम किया है, लेकिन यह अभी भी यूनिक्स है! / आह - Matt Simmons