"गूंज $ पाथ" और / आदि / रास्तों में क्या अंतर है?


10

जब मैं $ पाथ गूँजता हूँ तो मुझे यह मिलता है Users/myusername/.node_modules_global/bin:/Users/mac/.node_modules_global/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/mac/Library/Android/sdk/platform-tools:/platform-tools:।

मैं इसमें से कुछ रास्ते निकालना चाहता हूं, लेकिन जब मैं कमांड का उपयोग करके फ़ाइल खोलता vim /etc/pathsहूं, तो मुझे निम्नलिखित परिणाम मिलते हैं:

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

फ़ाइल / etc / पथ $ PATH चर से अलग है?


OS X का कौन सा संस्करण? मेरे पास नहीं है /etc/paths, लेकिन मैं भाग रहा हूं 10.4.11और तब से चीजें बदल गई हैं
— फॉक्स

1
लेकिन AskDifferent पर एक उत्तर के अनुसार , /etc/pathsडिफ़ॉल्ट को उत्पन्न करने के लिए उपयोग किया जाता है $PATH, जिसे आप बाद में संशोधित कर सकते हैं
— फॉक्स

यह डिफ़ॉल्ट है। जब तक उपयोगकर्ता अपना शेल शुरू करता है, तब तक, इसे अन्य फाइलों द्वारा संशोधित किया जाएगा, जो शेल स्रोतों, जैसे ~/.bashrcया~/.profile
— सर्जियो कोलोडियाज़नी

जवाबों:


14

/etc/paths$PATHशेल प्रक्रियाओं के लिए सेट अप करने के लिए उपयोग किए जाने वाले भाग का हिस्सा है। जब आप एक नया टर्मिनल विंडो खोलते हैं, तो यह शुरू होता है bash, जो कई स्टार्टअप स्क्रिप्ट चलाता है: /etc/profileऔर ~/.bash_profile(या यदि वह मौजूद नहीं है) ~/.bash_loginया (यदि वह मौजूद नहीं है) ~/.profile। इन लिपियों में शैल पर्यावरण भी शामिल है $PATH।

इनमें से एक चीज /etc/profileचलती है /usr/libexec/path_helper, जो /etc/pathsकिसी भी फाइल को पढ़ती है /etc/paths.dऔर उसमें अपनी सामग्री जोड़ती है $PATH। लेकिन यह सिर्फ एक शुरुआती बिंदु है; अपनी स्वयं की स्टार्टअप स्क्रिप्ट (यदि कोई मौजूद है) को जोड़ सकते हैं $PATH, इसे संपादित कर सकते हैं , इसे पूरी तरह से बदल सकते हैं, आदि।

यह मुझे आपकी स्टार्टअप स्क्रिप्ट की तरह दिखता है (और / या यह चलता है) इसमें मिलने वाले मूल सेट में कई प्रविष्टियों को जोड़ा जाता है /etc/paths। "उपयोगकर्ता / myusername / .node_modules_global / bin: /Users/mac/.node_modules_global/bin:" को शुरुआत में जोड़ा जाता है $PATH(मतलब उन निर्देशिकाओं को पहले खोजा जाएगा), और ": / उपयोगकर्ता / मैक / लाइब्रेरी / Android / Android / sdk / platform-tools: / platform-tools "अंत में जोड़ा जाता है। यदि आप जानना चाहते हैं कि वास्तव में उन्हें क्या जोड़ना है, तो आपको अपनी स्टार्टअप स्क्रिप्ट को देखना होगा।

बीटीडब्ल्यू, स्थापित करने के लिए यह प्रक्रिया $PATHकेवल "लॉगिन" गोले को लागू करने के लिए लागू होती है। बैश शेल द्वारा चलाए जाने वाले कुछ भी इससे विरासत में मिलेंगे $PATH, इसलिए संभवतः एक ही चीज है। बैश नॉन-लॉगिन गोले कुछ अलग सेटअप प्रक्रिया का पालन करते हैं। अन्य गोले, और चीजें एक शेल से शुरू नहीं हुईं (उदाहरण के लिए क्रोन जॉब्स) पूरी तरह से अलग हो सकती हैं $PATHs।


ध्यान दें कि गैर लॉगिन गोले के लिए (उदाहरण के लिए /usr/local/bin/bashके रूप में द्वारा स्थापित brew, बिना -lतर्क), /usr/libexec/path_helperनहीं किया जाता है, और /usr/local/binमें डिफ़ॉल्ट रूप से शामिल नहीं है $PATH। path_helperस्क्रिप्ट या अंतःक्रियात्मक रूप से उपयोग करने के लिए , कमांड है eval $(/usr/libexec/path_helper)।
— काइल स्ट्रैंड

0

संशोधनों के लिए जाँच करने के लिए प्रथम स्थान मैं देख रहा हूँ,

~/.profile
~/.bashrc
~/.bash_profile

यदि आप किसी ऐसी चीज़ का उपयोग कर रहे हैं, जो बैश नहीं है, तो इसके लिए कॉन्फ़िगरेशन फ़ाइलों की जांच करें ताकि PATH का कोई उल्लेख दिखाई दे।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.