PATH में डायरेक्टरी कैसे जोड़ें?


729

मैं $PATHUbuntu में एक निर्देशिका कैसे जोड़ूं और परिवर्तनों को स्थायी बनाऊं?


2
help.ubuntu.com/community/EnvironmentVariables आपके लिए आवश्यक सभी जानकारी है। मुझे पता चला कि यहाँ बहुत से इनपुट गलत थे या कम से कम विधि का सुझाव नहीं दिया गया था। यह एक बेहतरीन जानकारी है, जो आपको यह बताएगी कि आप जो कर रहे हैं, उसके आधार पर अपने पर्यावरण चर को संशोधित कर सकते हैं और ठीक उसी तरह से कैसे करें कि सब कुछ खराब हो जाए (जैसे कि मैंने कुछ बुरी सलाह का पालन किया है)। इतने लंबे समय और सारी मछलियों के लिए धन्यवाद!
42

जवाबों:


456

$ PATH सेट करने के लिए ~ / .profile का उपयोग करना

एक पथ सेट .bash_profileकेवल बैश लॉगिन शेल ( bash -l) में सेट किया जाएगा । यदि आप इसमें अपना रास्ता डालते हैं तो .profileयह आपके पूर्ण डेस्कटॉप सत्र के लिए उपलब्ध होगा। इसका मतलब है कि मेटासिटी भी इसका इस्तेमाल करेगी।

उदाहरण के लिए ~/.profile:

if [ -d "$HOME/bin" ] ; then
  PATH="$PATH:$HOME/bin"
fi

Btw, आप किसी प्रक्रिया के पाथ चर को उसके वातावरण को /proc/[pid]/environ([pid] से संख्या के साथ बदलें ps axf) देख कर देख सकते हैं। जैसे उपयोगgrep -z "^PATH" /proc/[pid]/environ

ध्यान दें:

bashलॉगिन शेल के रूप में या .profileतो मौजूद है .bash_profileया .bash_loginमौजूद नहीं है। से man bash:

यह उस क्रम में ~ / .bash_profile, ~ / .bash_login, और ~ / .profile के लिए दिखता है, और पहले से मौजूद आदेशों को पढ़ता और निष्पादित करता है और जो पढ़ने योग्य है।

जानकारी के लिए , या संवादात्मक गैर-लॉगिन गोले के लिए नीचे दिए गए उत्तर देखें .pam_environment, या प्रदर्शन प्रबंधकों के सत्र को प्रभावित करने के लिए .bashrcस्क्रिप्ट डालकर /etc/profile.d/या उपयोग करके सभी उपयोगकर्ताओं के लिए विश्व स्तर पर मूल्य निर्धारित करें /etc/X11/Xsession.d/


5
कूल, कि काम किया। मैंने देखा कि अगर यह बिन dir जोड़ देगा तो अगर मैं इसे बनाऊंगा तो मैंने स्क्रिप्ट के बजाय इसका इस्तेमाल किया। स्व।
जिंग

5
Xbunutu पर .profile निष्पादित नहीं किया गया है इसलिए मैंने इसे .bashrc में डाला और यह काम करता है।
टेककुमरा २५'१२

13
प्रलेखन का यह टुकड़ा बहुत अच्छी तरह से किया गया है: पर्यावरण चर के बारे में आधिकारिक दस्तावेज । इसे पढ़ने पर विचार करें (यह कहने के लिए नहीं कि पर्यावरण चर के मूल्यों को जोड़ने के लिए नियमों के अंतिम संस्करण में अपडेट किया गया है)।
मिशेल

3
जहां। में हम रास्ता जोड़ते हैं ??
विनीत कौशिक

3
मुझे अभी भी पता नहीं है कि मुझे अपना अतिरिक्त पथ भाग कहाँ जोड़ना है। मुझे अपने पथ पर android SDK जोड़ने की आवश्यकता है ... PATH="$HOME/bin:$PATH"इसलिए मैं इसे इसमें जोड़ दूं ?
जेमी हटबर

301

.bashrcअपनी होम निर्देशिका में संपादित करें और निम्नलिखित पंक्ति जोड़ें:

export PATH="/path/to/dir:$PATH"

.bashrcपरिवर्तनों को प्रभावी करने के लिए आपको अपना या लॉगआउट / लॉगिन (या टर्मिनल को पुनरारंभ करना) स्रोत की आवश्यकता होगी । अपने स्रोत के लिए .bashrc, बस टाइप करें

$ source ~/.bashrc

3
आप "स्रोत अपने .bashrc" कैसे करते हैं ? आप "टर्मिनल को पुनरारंभ कैसे करें"?
isomorphismes

3
बैश में यह बस है '। .bashrc '
ओफिडियन

1
मैं यह धारणा बना रहा था कि आप अपने घर की निर्देशिका में थे। चूंकि वह .bashrc जिसे आप संपादित करना चाहते हैं।
ओफिडियन

21
.bashrcपर्यावरण चर सेट करने के लिए सही जगह नहीं है। वे में जाना चाहिए .profileया .pam_environment। देखें mywiki.wooledge.org/DotFiles
geirha

4
@LaoTzu . .bashrcनहीं .bashrc:) या source .bashrcउस मामले के लिए
Znarkus

120

सभी उपयोगकर्ताओं के लिए लागू स्थायी, सिस्टम-वाइड पर्यावरण चर को परिभाषित करने के लिए अनुशंसित स्थान इस प्रकार है:

/etc/environment

(जहां डिफ़ॉल्ट PATHपरिभाषित किया गया है)

यह डेस्कटॉप या कंसोल, सूक्ति-टर्मिनल या TTY, बारिश या चमक;) में काम करेगा।

  • संपादित करने के लिए, Alt+ दबाएँ F2और टाइप करें:

    gksudo gedit /etc/environment
    

    (या sudoअपने पसंदीदा टेक्स्ट एडिटर का उपयोग करके फ़ाइल खोलें )

परिवर्तनों को प्रभावित करने के लिए, भागो . /etc/environment। चूँकि यह फ़ाइल केवल एक साधारण स्क्रिप्ट है, यह PATHपर्यावरण चर को नया पथ चलाएगी और असाइन करेगी । चलाने के लिए जाँच करें और PATHलिस्टिंग में मूल्य देखें ।

सम्बंधित:


6
और फिर आपको प्रभावी होने के लिए परिवर्तनों के लिए रीबूट करना होगा ...
ली

2
मुझे ठीक इसी की आवश्यकता थी। आवारा के माध्यम से एक फेंक-दूर vm छवि की व्यवस्था और रास्ते में नोड और npm जोड़ने की जरूरत है।
ऑस्टिन प्रेयर

7
प्रभाव चलाने में परिवर्तन करने के लिए। / etc / environement (हाँ, बिंदु, एक स्थान और / आदि / पर्यावरण)। चूँकि यह फ़ाइल केवल एक साधारण स्क्रिप्ट है, यह पैठ पर्यावरण चर को नया पथ चलाएगी और असाइन करेगी। रन रन की जाँच करने के लिए और लिस्टिंग में पाथ मान देखें।
विंडराइडर

1
मुझे source /etc/environmentपरिवर्तनों को पुनः लोड करने के लिए चलाने की आवश्यकता थी
जॉनीवाव

@ जॉननीव: स्रोत प्रारंभिक डॉट के बराबर है, उदाहरण के लिए देखें en.wikipedia.org/wiki/Source_(command)
रोलैंड सर्राजिन

58

मुझे लगता है कि Ubuntu में विहित तरीका है:

  • के तहत एक नई फ़ाइल बनाएँ /etc/profile.d/

    sudo vi /etc/profile.d/SCRIPT_NAME.sh
    
  • वहां जोड़ें:

    export PATH="YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH"
    
  • और इसे निष्पादित करने की अनुमति दें

    sudo chmod a+x /etc/profile.d/SCRIPT_NAME.sh
    

20
आमतौर पर शुरुआत के बजाय अपने कस्टम पथ को PATH के अंत में जोड़ना अधिक सुरक्षित होता है। यह आपके प्रोग्राम (या किसी और के दुर्भावनापूर्ण प्रोग्राम) के साथ गलती से सिस्टम कमांड को बदलने से बचता है। जब आपके सिस्टम पर कोई और काम करता है (या आपको सलाह देता है) तो यह बहुत भ्रम से बचता है और उन्हें आपके द्वारा "प्रतिस्थापित" किए गए आदेशों से अप्रत्याशित परिणाम प्राप्त होते हैं।
जो

47

पूर्ण newbies के लिए (जैसे मैं हूं) जो GUI के साथ अधिक आरामदायक हैं:

  1. अपना $HOMEफोल्डर खोलें ।
  2. पर जाएं देखेंछुपी हुई फ़ाइलें या प्रेस Ctrl+ H
  3. राइट क्लिक करें .profileऔर Open with Text Editor पर क्लिक करें ।
  4. नीचे तक स्क्रॉल करें और जोड़ें PATH="$PATH:/my/path/foo"
  5. सहेजें।
  6. परिवर्तनों को लागू करने के लिए लॉग आउट करें और लॉग ऑन करें (Ubuntu वास्तव में लोड करें .profile)।

4
.Profile फ़ाइल का संपादन अब अनुशंसित नहीं है। आप अभी भी फ़ाइल को संपादित करने के लिए इस पद्धति का उपयोग कर सकते हैं। Pam_environment देखें: help.ubuntu.com/community/EnvironmentVariables
PulsarBlow

@PulsarBlow को धन्यवाद! : मैं सच में यकीन है कि वास्तव में अंतर और लाभ हालांकि क्या नहीं कर रहा हूँ ... यह प्रासंगिक अनुभाग के लिए सीधी यूआरएल है help.ubuntu.com/community/...
dain

1
इस जवाब के कारण मेरा सिस्टम सभी रास्तों के ओवरराइड होने के कारण लॉगिंग को रोक देता है। उबंटू 16.04 का उपयोग करना।
Frisbetarian

1
@ फ़ाइब्रेरियन आपको उस $PATH:बिट को जोड़ना सुनिश्चित करना होगा जिसमें मौजूदा PATH परिभाषा शामिल है
dain

@dain: आपकी टिप्पणी से मेरी जान बच गई!
Py-ser

46

केवल विशेष उपयोगकर्ताओं के लिए लगातार पर्यावरण चर उपलब्ध हैं। मैं उबंटू के आधिकारिक दस्तावेज की अत्यधिक अनुशंसा करता हूं।

https://help.ubuntu.com/community/EnvironmentVariables

उपरोक्त दस्तावेज़ीकरण का उल्लेख करते हुए, मैंने अपने Android SDK पथ-उपकरण को इसके द्वारा सेटअप किया है:

  1. ~/.pam_environmentघर निर्देशिका में फ़ाइल बनाने ।
  2. की सामग्री है PATH DEFAULT=${PATH}:~/android-sdk-linux/tools
  3. अतिरिक्त कस्टम उपयोगकर्ता पथ को कॉलोन (:) के साथ पथों को अलग करके जोड़ा जा सकता है ।
  4. इसके लिए पुनः लॉगिन की आवश्यकता होती है , जिसका अर्थ है कि आपको डेस्कटॉप वातावरण में लॉग-आउट और लॉग-इन करना होगा।

1
यह सबसे अच्छा जवाब है।
पाउलो कोगी

26

उस लाइन को अपनी ~/.bashrcफ़ाइल में रखें ।

जब भी आप टर्मिनल खोलते हैं तो यह खट्टा हो जाता है

EDIT : नीचे दी गई टिप्पणियों के आधार पर, अधिक सामान्य सेटिंग के लिए जो सभी गोले पर लागू होगी (जब आप हिट करते हैं Alt- F2एकता में), अपनी ~/.profileफ़ाइल में लाइन जोड़ें । PATHयदि आप एक टर्मिनल खोलते हैं , तो संभवतः दोनों को ऐसा नहीं करना चाहिए, क्योंकि पथ आपके वातावरण में दो बार जुड़ जाएगा ।


1
दरअसल, मुझे लगा कि आपने $HOME/.profileव्यक्तिगत सेटिंग्स के लिए, या /etc/profileसभी उपयोगकर्ताओं के लिए रास्ता तय किया है । लेकिन अगर यह केवल बकवास के लिए आवश्यक है, मुझे लगता है या तो काम करेगा।
मार्टी फ्राइड

1
यदि आप इसे सेट करते हैं ~/.bashrc, तो यह केवल आपके द्वारा खोले गए टर्मिनलों में उपलब्ध होगा। उदाहरण के लिए यदि आप Alt + F2 से टकराते हैं और उस dir से कमांड चलाने का प्रयास करते हैं, तो यह नहीं मिलेगा। आप में यह सेट करते हैं ~/.profileया ~/.pam_environment, गनोम सत्र (या जो भी डे आप का उपयोग करें) यह प्राप्त कर लेगा। PATH को लागू करने में ~/.bashrcयह भी दोष है कि यदि आप किसी अन्य इंटरैक्टिव bash शेल से इंटरएक्टिव तरीके से bash खोलते / निष्पादित करते हैं, तो इसे कई बार जोड़ा जाएगा।
जिरह

2
मैंने वास्तव में थोड़ी देर के लिए इस पर ध्यान नहीं दिया, इसलिए मैंने एक खोज की, और ऐसा लगता है कि पथ को सेट करने के लिए कम से कम 95 अलग-अलग तरीके हैं, जिनमें से अधिकांश पर यहां चर्चा की गई है । मुझे कभी नहीं लगा कि कौन सा सबसे अच्छा है। मुझे लगता ~/.profileहै कि व्यक्तिगत रास्तों के लिए सही है, हालांकि; उबंटू ~/binनिर्देशिका को जोड़ता है । और मैं स्वीकार करता हूं कि मैंने थोड़े से तरीकों की संख्या पर थोड़ा सा अतिशयोक्ति की।
मार्टी फ्राइड

1
@MartyFried, हाँ, freenode पर # बश में बॉट को कोट करने के लिए: «इंटरनेट पर बैश स्क्रिप्ट्स, कोड, ट्यूटोरियल्स और गाइड्स का भारी बहुमत बकवास है। Sturgeon एक आशावादी व्यक्ति थे। »bash समस्या के लिए Google का उपयोग करते हुए, एक अच्छा खोज करने से पहले आपको अक्सर आधे काम करने वाले समाधान मिल जाएंगे। ओह, और मैं ~/.profileइस मामले में भी जाऊंगा ।
जीराहा

1
@geirha - मैं मानता हूं कि इंटरनेट पर अधिकांश गाइड संभवतः बकवास हैं, विशेष रूप से अलग-अलग डिस्ट्रो के बाद से कुछ भी लिनक्स, या एक ही के विभिन्न संस्करण, चीजों को अलग तरीके से करते हैं। यह आमतौर पर क्या काम करता है के लिए फोड़ा है, लेकिन ज्यादातर लोगों को पता नहीं है कि क्या काम करता है बस क्या काम करता है, जरूरी नहीं कि क्या सही है या यहां तक ​​कि हमेशा क्या काम करेगा। मैं यह पता लगाने की कोशिश करता हूं कि वास्तव में कई तरीकों में से कौन सा सही है, क्योंकि मैं चीजों को एक से अधिक बार करने से नफरत करता हूं - लेकिन यह हमेशा आसान नहीं होता है। :)
मार्टी फ्राइड

15

इसे सिस्टम पर सेट करने के लिए, लाइन export PATH=/path/you're/adding:$PATHको अंत तक जोड़ें /etc/profile

केवल लॉग-इन उपयोगकर्ता के लिए निर्देशिका जोड़ने के लिए, उसी पंक्ति को इसमें जोड़ें ~/.bash_profile


14

इसे .bashrc में जोड़ना काम करेगा लेकिन मुझे लगता है कि आपके पथ चर सेट करने का अधिक पारंपरिक तरीका निम्नलिखित पंक्तियों को जोड़कर .bash_profile है।

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

इस सूत्र के अनुसार ऐसा प्रतीत होता है जैसे कि उबंटू का व्यवहार रेडहैट और क्लोन से थोड़ा अलग है।


1
मेरे पास एक .bash_profile नहीं है, क्या मुझे इसे बनाना चाहिए?
जिंग

7
यदि आपके पास है .bashrc, तो .bashrcइसके बजाय इसे छड़ी । Ubuntu में GUI टर्मिनल लॉगिन गोले नहीं हैं, इसलिए .bash_profileनहीं चलाया जाएगा।

1
मैं एक गिनी खोल नहीं चला रहा हूँ। लेकिन ऊपर के धागे से ऐसा लगता है कि .bashrc ठीक काम करेगा।
जिंग्रीफ

2
यदि आपका शेल एक लॉगिन शेल है तो दोनों काम करेंगे। लेकिन मैंने अभी-अभी अपनी उबंटू मशीनों में से एक पर .bash_profile दृष्टिकोण की कोशिश की और अपने गनोम सत्र को पुनः आरंभ करने के बाद भी मेरे .bash_profile को स्रोत नहीं बनाया। तो मैं कहूंगा कि इसे .bashrc में डालना शायद उबंटू के साथ जाने का रास्ता है।
डी इन्फ्लुएंस 2

3
@ अन्यायपूर्ण नहीं, आपको आवश्यकता नहीं है .bash_profile। यदि बैश को कोई नहीं मिलता है .bash_profile(जब आप अंतःक्रियात्मक रूप से लॉग इन करते हैं), तो वह इसके लिए खोज करेगा .profileऔर उसका उपयोग करेगा । डिफ़ॉल्ट रूप से, आप एक होगा .profileऔर .bashrcउबंटू में। और .profileपर्यावरण चर सेट करने के लिए सही जगह है अगर हम pam_env की उपेक्षा करते हैं।
जिरिहा

10

टर्मिनल में, cdकोthe_directory_you_want_to_add_in_the_path

echo "export PATH=$(pwd):\${PATH}" >> ~/.bashrc

यह मेरा विचार नहीं था। मुझे इस ब्लॉग पर पथ निर्यात करने का यह तरीका मिला ।


8
sudo vi /etc/profile.d/SCRIPT_NAME.sh

वहाँ जोड़ें

export PATH=YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH

2
sudo nano /etc/profile.d/SCRIPT_NAME.shशुरुआती के लिए आसान है।
isomorphismes

1
शुरुआती लोगों के लिए, gksu gedit /etc/profile.d/SCRIPT_NAME.shऔर भी आसान है।
चार

6

जब भी मैं BASH स्क्रिप्ट के अपने फ़ोल्डर को "इंस्टॉल" करता हूं, तो मैं $HOME/binउस फ़ोल्डर के लिए परीक्षण के पैटर्न का पालन करता हूं जो उबंटू के हाल के संस्करणों में सबसे अधिक .profile फ़ाइलों में है। मैंने एक परीक्षण सेट किया जो दिखता है

if [ -d "/usr/scripts" ]; then
   PATH="/usr/scripts:$PATH"
fi

यह लगभग 100% समय के लिए काम करता है, और मुझे एक त्वरित "बदलें सभी" के साथ GUI पाठ संपादक में इसे बदलने के लिए स्वतंत्र छोड़ देता है, क्या मुझे कभी /scriptsअपने $HOMEफ़ोल्डर के करीब जाने का निर्णय लेना चाहिए । मैंने 6 उबंटू इंस्टॉल में ऐसा नहीं किया है, लेकिन "हमेशा कल" होता है। एस

BZT


6

अपने संपादित करने के लिए सुझाया गया तरीका PATHसे है /etc/environmentफ़ाइल

उदाहरण का आउटपुट /etc/environment:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

उदाहरण के लिए, के नए पथ को जोड़ने के लिए /home/username/mydir

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/username/mydir"

फिर, अपने पीसी को रिबूट करें।


सिस्टम-वाइड वातावरण चर

पर्यावरण चर सेटिंग्स के लिए एक उपयुक्त फ़ाइल जो सिस्टम को संपूर्ण रूप से प्रभावित करती है (केवल एक विशेष उपयोगकर्ता के बजाय) / etc / पर्यावरण है। एक विकल्प /etc/profile.d निर्देशिका में उद्देश्य के लिए एक फ़ाइल बनाना है।

/ Etc / पर्यावरण

यह फ़ाइल विशेष रूप से सिस्टम-वाइड वातावरण चर सेटिंग्स के लिए है। यह एक स्क्रिप्ट फ़ाइल नहीं है, बल्कि असाइनमेंट एक्सप्रेशंस, प्रति पंक्ति एक है।

नोट: परिवर्तनीय विस्तार / etc / वातावरण में काम नहीं करता है।

अधिक जानकारी यहां पाई जा सकती है: एनवायरमेंटल वेरिएबल्स


1
सबसे कम उत्तर अभी तक सबसे सही है। यह फ़ाइल आमतौर पर पथ के साथ ऑटो-आबादी वाले बिन उबंटू है।
NotoriousPyro

4

अपना टर्मिनल खोलें, gedit .profileनिम्न लिखें और डालें:

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$PATH:$HOME/bin"
fi

 #the following line add Bin where you dont have a Bin folder on your $HOME
    PATH="$PATH:/home/mongo/Documents/mongodb-linux-i686-2.2.2/bin"

टर्मिनल बंद और खुला, यह काम करना चाहिए।


2

इसे अपने ~/.bashrcया व्हाट्सएप पर रखें जिसे आप आरसी का उपयोग करते हैं (या इससे पहले ~/.profile) और ~/.xsessionrcइसलिए यह एक्स (शेल के बाहर) में भी काम करेगा।


1

यहां तक ​​कि अगर सिस्टम स्क्रिप्ट इसका उपयोग नहीं करते हैं, तो किसी भी स्थिति में, $HOME/binजो पाथ पर्यावरण चर में एक पथ (जैसे ) जोड़ना चाहता है , एक का उपयोग करना चाहिए

PATH="${PATH:+${PATH}:}$HOME/bin"

(के बजाय PATH="$PATH:$HOME/bin"), और

PATH="$HOME/bin${PATH:+:${PATH}}"

प्रस्तुत करने के बजाय (के बजाय PATH="$HOME/bin:$PATH")।

यह $PATHशुरू में खाली होने पर स्फ़ूर्त अग्रणी / अनुगामी बृहदान्त्र से बचा जाता है , जिसके अवांछित प्रभाव हो सकते हैं।

उदाहरण के लिए देखें


-1

उबंटू के ~/.bashrcलिए निम्नलिखित पंक्ति जोड़ें और जोड़ें।

. ~/.bash_profile

फिर अपने .bash_profile को संपादित करें जैसा कि आपको चाहिए ....।


1
डाउनवोटेड क्योंकि आपने समझा नहीं है कि "अपनी .bash_profileज़रूरत के अनुसार अपना संपादन कैसे करें "। वास्तव में मुझे क्या करने की आवश्यकता है .bash_profile?
isomorphismes

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