सिस्टम-वाइड $ PATH चर सेट कहां है?


10

मैं Ubuntu डेस्कटॉप 14.04 का उपयोग कर रहा हूं, और इस तरह, मैं गैर-लॉगिन शेल का उपयोग कर रहा हूं। जब मैं GUI टर्मिनल खोलता हूं, तो पहले गैर-लॉगिन शेल सत्रों में निम्नलिखित स्टार्टअप फाइलें पढ़ी जाती हैं:

/etc/bash.bashrc
~/.bashrc

गैर-लॉगिन गोले मूल प्रक्रिया से वातावरण प्राप्त करते हैं, जो एक लॉगिन शेल है, इसलिए सत्र निम्नलिखित स्टार्टअप फ़ाइलों को भी पढ़ता है:

/etc/profile
~/.bash_profile

हालांकि, मैं नहीं मिल सकता है $PATHपूरे सिस्टम में रास्तों की तरह के लिए /bin, /sbin, /usr/bin, /usr/sbin, इन फ़ाइलों में से किसी में निर्धारित किया है। $PATHइन निर्देशिकाओं के लिए सेट कहां है ?

जवाबों:


16

फ़ाइल PATHमें विस्तृत (डिफ़ॉल्ट) सिस्टम सेट है /etc/environment।

$ cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

यह मूल रूप से वैश्विक पर्यावरण चर को बचाने के लिए जगह है।


+1, हालांकि क्या आपको पता है कि $PATHयह मूल लॉगिन शेल द्वारा विरासत में मिला है या यदि यह प्रत्येक bashउदाहरण द्वारा पुनः लोड किया गया है ?
— कोस

@ बच्चों की सभी प्रक्रियाएं माता-पिता के खोल से पर्यावरण को प्राप्त करती हैं, जब तक कि एक संशोधित वातावरण में नहीं चलाया जा रहा है ..
— heemayl

मुझे लगता है कि शेल $HOMEचर का विस्तार नहीं लगता है । उदाहरण के लिए, जोड़ने $HOME/.composer/vendor/binके लिए PATHमें /etc/environmentइस निर्देशिका में बाइनरी सक्षम नहीं होते पथ उपसर्ग के बिना निष्पादित किया जाना है। उपयोग ~/.composer/vendor/binकरने से भी काम नहीं होता है। मुझे पूर्ण पथ जोड़ने के लिए यह आवश्यक लग रहा है, जैसे /home/vagrant/.composer/vendor/bin:। यह संबंधित लगता है (हालांकि इस व्यवहार की व्याख्या नहीं करता है): askubuntu.com/questions/402353/…
— बेन जॉनसन

2
@BenJohnson यह सिर्फ इसलिए है क्योंकि /etc/environment(और ~/.pam/environment) pam_envPAM मॉड्यूल द्वारा पढ़ा जाता है , शेल या कुछ और नहीं जो शेल / पर्यावरण चर को समझता है; वही ~विस्तार के लिए जाता है । इसलिए, आपको वहां पूर्ण पथ का उपयोग करने की आवश्यकता है।
— हेमायल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.