सवाल ओएस एक्स 10.6 हिम तेंदुए में $ PATH कहां सेट हो जाता है?


मैं अंकित करता हुँ echo $PATH कमांड लाइन पर और मिलता है

/opt/local/bin:/opt/local/sbin:/Users/andrew/bin:/usr/local/bin:/usr/local/mysql/bin:/usr/local/pear/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/opt/local/bin:/usr/local/git/bin

मैं सोच रहा हूं कि यह मेरे कहां से सेट हो रहा है .bash_login फ़ाइल खाली है।

मैं विशेष रूप से चिंतित हूं कि, मैकपॉर्ट्स स्थापित करने के बाद, इसमें जंक का एक गुच्छा स्थापित हुआ /opt। मुझे नहीं लगता कि निर्देशिका सामान्य मैक ओएस एक्स इंस्टॉल में भी मौजूद है।

अद्यतन करें: का शुक्र है jtimberman मेरे सुधारने के लिए echo $PATH बयान


132
2017-11-11 18:48


मूल


से टिप्पणी SMcCandlish:easiest solution when you want to make a site-wide path change (e.g. to include /usr/libexec or whatever) is to edit  /etc/paths  . While the new  /etc/paths.d/  thing is functional, it's actually more hassle than maintaining a single file. As others have hinted but not spelled out, if the path changes you want would be useful only for one user, it's best to make that change in the bash and/or tcsh config files in that user's home directory instead of system-wide. - Sathya♦
@ सत्य, ऐसा लगता है /etc/paths.d स्थापना स्क्रिप्ट के लिए उपयोगी है। अगर मैं अपनी स्थापना स्क्रिप्ट को पथ में स्थापित प्रोग्राम जोड़ना चाहता हूं, तो मैं एक फाइल को छोड़ सकता हूं /etc/paths.d। अगर मैं पथ को मैन्युअल रूप से संपादित करना चाहता हूं, /etc/paths एक बेहतर विकल्प है। - haydenmuhl
मैंने ज्यादातर इस पोस्ट के आधार पर एक स्क्रिप्ट बनाई है, जो जल्दी से प्रिंट करता है जहां इन एकाधिक स्थानों के साथ पथ परिभाषित किया गया है: gist.github.com/lopespm/6407349952bc8a1ff8fb - Pedro Lopes


जवाब:


कब bash जब भी आप लॉगिन करते हैं, तो यह निम्न फ़ाइलों को पढ़ता है। ओएस एक्स के प्रयोजनों के लिए, हर बार जब आप एक नया खोलते हैं तो इसका मतलब है Terminal खिड़की।

/etc/profile
~/.bash_profile
~/.bash_login   (if .bash_profile does not exist)
~/.profile      (if .bash_login does not exist)

जब आप टाइप करके एक नया खोल शुरू करते हैं bash कमांड लाइन पर, यह पढ़ता है .bashrc

ओएस एक्स भी उपयोग करता है ~/.MacOSX/environment.plist यदि आवश्यक हो तो पथ सहित अधिक पर्यावरण चर सेट करने के लिए।

आखिरकार, /etc/paths तथा /etc/paths.d खोल भी पढ़ा जाता है।


/opt/local/bin आदि में जोड़ा जाता है ~/.tcshrc मैकपॉर्ट्स द्वारा। यह भी सुनिश्चित करना सुनिश्चित करें ~/.cshrc


152
2017-11-11 20:57



जाहिरा तौर पर, ~/.MacOSX/environment.plist कुछ लोगों के लिए काम नहीं करता है। में ओएस एक्स के लिए पथ बदलें फ़ोल्डर का उपयोग कर एक विकल्प /etc/paths.d वर्णित है। मैंने इसका परीक्षण नहीं किया है। - Arjan
के लिए +1 ~/.cshrc। क्यों पता लगाने की कोशिश कर रहे पागल नट्स ~/.profile काम नहीं कर रहा था - tomlogic
मुझे लगता है कि यह जवाब अधूरा है। मैं यह पता लगाने की कोशिश कर रहा हूं कि एक गलत (अस्तित्वहीन) पथ: / usr / bin / local, मेरा खोल शिकायत कर रहा है, और यह उन फ़ाइलों में से किसी एक में नहीं है। - Tommy
मुझे लगता है .bashrc यदि आप टाइप करते हैं तो ध्यान दिए बिना पढ़ा जाता है bash या नहीं। - Xiao Peng - ZenUML.com


फ़ाइल पर एक नज़र डालें /etc/paths, जिसका उपयोग किया जाता है /usr/libexec/path_helper, जिसका उपयोग किया जाता है /etc/profile

मैकपॉर्ट्स के लिए, उपयोग करें sudo /etc/paths/opt/local/bin और टर्मिनल विंडो को फिर से खोलें।


47
2017-12-30 20:31





गंभीरता से, तेंदुए ने हमें पथ जोड़ने का एक नया तरीका दिया। बस उस पथ को बनाएं जिसमें वह पथ भाग है जिसे आप जोड़ना चाहते हैं, और इसे /etc/paths.d में रखें

एक कदम में ऐसा करने का एक त्वरित उदाहरण है:

echo "/some/path/to/add" >> /etc/paths.d/somefilename

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

यह मैनपैथ के लिए भी काम करता है।

अधिक जानकारी के लिए यहां एक लिंक दिया गया है:

ars technica: मैं बर्फ तेंदुए में पाथ में कुछ कैसे जोड़ूं?

दूसरे नोट पर: मैकपॉर्ट्स सबकुछ ऑप्टिकल निर्देशिका में डालता है क्योंकि इसका उपयोग ऐप्पल की सामग्री द्वारा नहीं किया जाता है। इस तरह यह संघर्ष नहीं करेगा। उनकी मार्गदर्शिका (उत्कृष्ट रूप से लिखित, बीटीडब्लू) में एक स्पष्टीकरण है कि यह क्यों उपयोग करता है और यदि आप चाहें तो उस डिफ़ॉल्ट को कैसे बदला जाए।

मैकपॉर्ट्स गाइड


25
2018-03-25 18:07



बहुत ही शांत। अब हमें केवल उन पथ निर्भर अनुप्रयोगों को प्राप्त करना होगा ताकि वे हमारी प्रोफ़ाइल फाइलों को प्रदूषित न करें ... - Daniel Beck♦
इसे प्यार करना। सरल! - Andrew Hedges
से टिप्पणी SMcCandlish: I have to concur that there's nothing weird or bad about MacPorts using   /opt  (likewise Fink uses /sw); trying to replace stock Mac BSD parts with bleeding-edge builds from external projects like these is a recipe for an unusable system that requires an OS reinstallation. - Sathya♦
एकल लाइन, फाइलों में शामिल नहीं है और आसान हटाने। इसे प्रेम करें। धन्यवाद लीएन - Ibrahim Lawal


अपना रास्ता दिखाने के लिए, $ पाथ गूंजें।

echo $PATH

अपना रास्ता सेट करने के लिए, संपादित करें ~/.bash_profile, नहीं ~/.bash_login


4
2017-11-11 19:07





द्वारा निर्धारित मार्ग भी है ssh

तुलना echo $PATH सेवा मेरे ssh localhost 'echo $PATH'। चूंकि एसएसएच / etc / profile नहीं पढ़ता है, / usr / libexec / path_helper नहीं चलता है और इस प्रकार / etc / पथ छोड़े जाते हैं। अब कोशिश करो ssh localhost 'source /etc/profile; echo $PATH'। पथ करीब होना चाहिए। शेष अंतर आपके .bash_profile (जिसे एसएसएच द्वारा भी छोड़ा जाता है) में पथ संशोधन के कारण होगा। और bashrc (जिसे एसएसएच द्वारा पढ़ा जाता है)।

यदि आप अपने एसएसएच पथ को अपने सामान्य टर्मिनल पथ के समान होना चाहते हैं, तो आप जोड़ सकते हैं source /etc/profile आपके .bashrc करने के लिए।


3
2018-02-07 19:36



संकेत के लिए धन्यवाद! मैं एसएसएच के साथ समाधान के लिए बिल्कुल देख रहा था। svn + ssh svnserve कमांड को बिल्कुल नहीं मिला क्योंकि svnserve का पथ .profile में था, लेकिन .bashrc में नहीं था। - KIR


इसे या तो परिभाषित किया जा सकता है:

  • सिस्टम चर - /etc/paths
  • उपयोगकर्ता चर - @ स्टेव फोली की व्याख्या देखें

2
2018-06-01 09:50





वास्तव में यह आपके में संग्रहीत है .profile के बजाय फ़ाइल .bash_login और यह आम बात है कि मैकपॉर्ट्स इसके बजाय इसका उपयोग करेंगे .bash_login फ़ाइल।

यह भी /opt निर्देशिका आमतौर पर मैकपॉर्ट्स द्वारा बनाई जाती है और यह इस फ़ोल्डर में अपनी फाइलें संग्रहीत करती है।


1
2017-11-11 19:13





के बारे में डॉक्स के लिये /usr/libexec/path_helper उपयोगिता, $ PATH के लिए प्रारंभिक घटक से लिया गया था /etc/pathsऔर डिफ़ॉल्ट रूप से दिखता है

/usr/bin
/bin
/usr/sbin
/sbin
/usr/local/bin

ओएस-एक्स हिम तेंदुए के लिए


1
2018-06-26 01:40