मैं अपने PATH को कैसे संशोधित करूं ताकि हर टर्मिनल सत्र में परिवर्तन उपलब्ध हों


53

मैं अपना खोज पथ खोजने के लिए एक निर्देशिका जोड़ना चाहता हूं। मुझे पता है कि मुझे PATHपर्यावरण चर को संशोधित करना होगा । हालाँकि, मैं चाहता हूं कि परिवर्तन स्थायी हो, ताकि हर टर्मिनल (बैश) खिड़की के खुलने पर इसका प्रभाव हमेशा बना रहे।

Https://help.ubuntu.com/community/EnvironmentVariables में भ्रामक और संभवतः परस्पर विरोधी जानकारी का अधिभार है

मैं Ubuntu 10.04 का उपयोग कर रहा हूं। मान लीजिए कि मुझे अपने साथ जोड़ना /usr/local/fooहै PATH। मुझे कौन सी फ़ाइल ( .bashrcऔर .profile, .bash_loginआदि ...) को संशोधित करना चाहिए और नई रेखा (ओं) को किस तरह देखना चाहिए?

जवाबों:


70

निम्न आदेश आपके वर्तमान पथ के लिए एक पथ जोड़ता है:

export PATH=$PATH:/my/custom/path

यदि आप चाहते हैं कि आपका सेटअप हर बार इस कमांड को निष्पादित करे, तो कई जगह हैं जहां आप इसे लगा सकते हैं। जब आप लॉगिन करते हैं, तो इस क्रम में निम्नलिखित स्क्रिप्ट निष्पादित की जाएगी:

/etc/profile      (which starts by loading everything in /etc/profile.d)
~/.profile        (which starts by loading ~/.bashrc if you are running bash)

टिप्पणियाँ

  • ~/.profile केवल भरा हुआ है ~/.bash_profileऔर अगर ~/.bash_loginऐसा नहीं है। अन्यथा, कम से कम बैश, बजाय उन्हें लोड करेगा। .profileबैश विशिष्ट लिपियों का उपयोग करना और न करना उचित है । इसलिए, यदि आपके द्वारा बनाए गए इन प्रयासों में .bash_login, अब इसे हटा दें।

  • ~/.bashrcकेवल तभी लोड किया जाता है जब आप एक इंटरैक्टिव सत्र चला रहे हों। (एक संकेत के साथ कुछ जहाँ आप वास्तव में कुछ टाइप कर सकते हैं)।

  • ~/.bashrcबार-बार लोड किया जाता है, हर बार जब आप एक नया टर्मिनल खोलते हैं । तो सूक्ति-टर्मिनल में एक नया टैब, एक नया वर्चुअल टर्मिनल, आदि। यहां तक ​​कि अगर आप फिर से लॉगिन नहीं करते हैं, तो .bashrcहर बार जब आप एक नया शेल खोलते हैं तो लोड होता है (और इसके वातावरण को रीसेट करता है)।

  • बायोबू जैसी चीजें वास्तव में जानी चाहिए .profile, (अन्यथा यह काम नहीं करेगा ;-)

  • रास्तों की तरह चीजों में जाना चाहिए .profileयदि आप चाहते हैं कि वे इंटरैक्टिव सत्रों के बाहर काम करें। (कहते हैं कि जब आप प्रेस Alt+ F2सूक्ति में)


यदि आप इसे अनुरोधित निर्यात लाइन में शामिल करने के लिए इसे अद्यतन करते हैं जो कि .profile में जोड़ा जाना चाहिए, तो मैं इसे उत्तर के रूप में चिह्नित करूंगा।
जोशुआ फ्लैगनन

यह केवल कंसोल लॉगिन्स (जैसे ssh, या Ctrl + Alt + Fx के लिए सुलभ वर्चुअल टर्मिनल) के लिए मान्य हुआ करता था। मुझे नहीं पता था कि इन दिनों / etc / gdm / Xsession के स्रोत ~ / .profile हैं। साफ!
मारीस गेदमिनस

हाँ, मैंने विशेष रूप से या / / gdm / Xsession का उल्लेख नहीं किया है या ~ /। लाभकारी है क्योंकि स्टार्ट अप में ग्राफिकल प्रोग्राम लॉन्च करने के लिए बेहतर तरीके हैं, जो कि इस बात का अनुमान लगाता है कि शेष पर्यावरण पहले से ही लोड है।
राल्फ

1
इस उत्तर को अधिक व्यापक बनाने के लिए, कृपया एक लॉगऑफ़ / ऑन साइकल के बिना परिवर्तनों को सक्रिय करने के लिए सोर्सिंग के बारे में मैट / टिप्पणी जोड़ें।
मैट विल्की

1
@schwiz: ~/.profileप्रत्येक टर्मिनल पर निष्पादित नहीं किया जाता है, यह आपके डेस्कटॉप सत्र शुरू होने से पहले निष्पादित किया जाता है। प्रत्येक टर्मिनल पर निष्पादित एक है~/.bashrc
MestreLion

13

मुझे इसे संशोधित करके काम करना पड़ा ~/.profile

ऐसा लगता है कि मेरे पथ में ~ / बिन को जोड़ना एक बुरा उदाहरण था, क्योंकि निर्देशिका में मौजूद होने पर स्वचालित रूप से ऐसा करने के लिए ~ / .profile में पहले से ही कोड है।

आगे जाने वाले हर सत्र के लिए usr / लोकल / foo डायरेक्टरी को मेरे पथ पर जोड़ने के लिए, मैं अपने .profile के अंत में निम्नलिखित पंक्ति जोड़ / संपादित करता हूँ:

export PATH=$PATH:/usr/local/foo

हालाँकि, इसे प्रभावी बनाने के लिए, मुझे लॉग आउट करने और लॉग इन करने की आवश्यकता थी (बस टर्मिनल विंडो बंद करने और एक नया काम नहीं करने के लिए)।


4
उस export PATH="$PATH:/usr/foo"स्थिति में, जब आपके पास कभी रिक्त स्थान या अन्य विशेष वर्ण हों $PATH
गिल्स एसओ- बुराई को रोकें '

3
आप "#। ~ / .Profile" टाइप करके वर्तमान वातावरण को पुनः लोड कर सकते हैं
मैट एच।

1
@ मत्त: नहीं, आप नहीं कर सकते। यदि आप ~/.profileकिसी दिए गए टर्मिनल में स्रोत हैं , तो यह केवल
MestreLion

@MestreLion - आप सही हैं। मैं इसका उल्लेख वर्तमान टर्मिनल की सुविधा के लिए कर रहा था। वह जोड़ना भूल गए।
मैट एच

क्या होगा अगर मेरे पास पहले से ही पेट में कुछ है? क्या मैं इसे Windows में PATHS के काम की तरह जोड़ सकता हूं? उदाहरण के लिए मैं पहले से PATH="$HOME/bin:$HOME/.local/bin:$PATH"ही है।
गेब्रियल फेयर


3

आप इसमें पथ जोड़ सकते हैं /etc/environment, लेकिन इस बात से अवगत रहें कि कोई भी शैल विस्तारक काम नहीं करेगा; चर का शाब्दिक रूप से आपके द्वारा दर्ज वर्णों पर सेट किया जाएगा।


दो तरीकों में से (.profile में निर्यात कमांड जोड़ना और PATH आदि / वातावरण में पूर्ण पथ का नाम जोड़ना), जिसे प्राथमिकता दी जानी चाहिए?
रोहन भाटिया

1

Youcan .bashrcअपनी $HOMEनिर्देशिका में फ़ाइल को संशोधित करें ।

इस फ़ाइल के अंत में, पंक्ति जोड़ें:

export PATH="$HOME/directory_to_include_in_path/:$PATH"

आप निम्न पंक्ति सहित, .profileअपनी $HOMEनिर्देशिका में भी फ़ाइल को संशोधित कर सकते हैं :

PATH="$HOME/directory_to_include_in_path/:$PATH"

इसने मेरे लिए काम किया।


2
मैं यह नहीं देखता कि यह अन्य उत्तरों में क्या जोड़ता है जो अधिक अच्छी तरह से समझाते हैं।
Zanna

0

यदि आपके पास टर्मिनल और प्रकार के माध्यम से अपने होम निर्देशिका में ओममीज़श गोटो है

nano .zshrc

फ़ाइल के अंत में दर्ज करें

निर्यात पथ = "$ HOME / निर्देशिका_to_include_in_path /: $ PATH"

अंत में अपने टर्मिनल को पुनः आरंभ करें। मेरे लिए काम किया। आशा है कि यह मददगार था।


-3
Going through the basics, I will suggest the following steps:
1. It's recommended to set environment variables in /etc/environment
2. Open the file as superuser in an editor as it's a read only file e.g.     gedit:
gksu gedit /etc/environment
3. System will need password to open it in editable mode. Enter your superuser password and get file opened in a new gedit window. 
4. Add new line at the end of file with 
export PATH=$PATH:/usr/local/foo
5. Save and close the window. It will get command back to terminal.
6. Refresh the environment by running the following command: 
. /etc/environment
7. You may check by executing the following command:
 echo $PATH

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