लिनक्स / यूनिक्स पर $ PATH को स्थायी रूप से कैसे सेट करें?


879

मैं अपने पथ में एक निर्देशिका जोड़ने की कोशिश कर रहा हूं ताकि यह हमेशा मेरे लिनक्स पथ में हो। मैंने कोशिश की:

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

यह काम करता है, हालांकि हर बार जब मैं टर्मिनल से बाहर निकलता हूं और एक नया टर्मिनल उदाहरण शुरू करता हूं, तो यह रास्ता खो जाता है, और मुझे फिर से निर्यात कमांड चलाने की आवश्यकता होती है।

मैं इसे कैसे कर सकता हूं ताकि यह स्थायी रूप से सेट हो जाए?

जवाबों:


229

इसे करने के कई तरीके हैं। वास्तविक समाधान उद्देश्य पर निर्भर करता है।

चर मान आमतौर पर या तो असाइनमेंट की सूची या शेल स्क्रिप्ट में संग्रहीत होते हैं जो सिस्टम या उपयोगकर्ता सत्र की शुरुआत में चलाया जाता है। शेल स्क्रिप्ट के मामले में आपको एक विशिष्ट शेल सिंटैक्स और exportया setकमांड का उपयोग करना चाहिए ।

प्रणाली विस्तृत

  1. /etc/environmentअद्वितीय असाइनमेंट की सूची, संदर्भ की अनुमति देता है। सिस्टम-वाइड डाइरेक्टरीज़ /usr/local/something/binको PATHवेरिएबल या डिफाइनिंग की तरह जोड़ना सही है JAVA_HOME। PAM और SystemD द्वारा उपयोग किया जाता है।
  2. /etc/environment.d/*.confअद्वितीय असाइनमेंट की सूची, संदर्भ की अनुमति देता है। सिस्टम-वाइड डाइरेक्टरीज़ /usr/local/something/binको PATHवेरिएबल या डिफाइनिंग की तरह जोड़ना सही है JAVA_HOME। कॉन्फ़िगरेशन को कई फ़ाइलों में विभाजित किया जा सकता है, आमतौर पर प्रत्येक उपकरण (जावा, गो, नोडजेएस) में से एक। SystemD द्वारा उपयोग किया जाता है कि डिज़ाइन द्वारा उपयोगकर्ता लॉगिन गोले के लिए उन मानों को पारित नहीं किया जाता है।
  3. /etc/xprofileएक्स विंडो सिस्टम सत्र शुरू करते समय शेल स्क्रिप्ट निष्पादित। यह हर उस उपयोगकर्ता के लिए चलाया जाता है जो X विंडो सिस्टम में लॉग इन करता है। यह उन PATHप्रविष्टियों के लिए एक अच्छा विकल्प है जो हर उपयोगकर्ता के लिए मान्य हैं /usr/local/something/bin। फ़ाइल को अन्य स्क्रिप्ट द्वारा शामिल किया गया है इसलिए POSIX शेल सिंटैक्स का उपयोग करें न कि आपके उपयोगकर्ता शेल के सिंटैक्स का।
  4. /etc/profileऔर /etc/profile.d/*शैल स्क्रिप्ट। यह केवल शेल सिस्टम के लिए एक अच्छा विकल्प है। उन फ़ाइलों को केवल लॉगिन मोड में गोले द्वारा पढ़ा जाता है।
  5. /etc/<shell>.<shell>rc। शैल लिपि। यह एक खराब विकल्प है क्योंकि यह एकल खोल विशिष्ट है। गैर-लॉगिन मोड में उपयोग किया जाता है।

उपयोगकर्ता सत्र

  1. ~/.pam_environment। अद्वितीय असाइनमेंट की सूची, कोई संदर्भ की अनुमति नहीं है। अगर यह एक एक्स विंडो सिस्टम सत्र या शेल है, तो प्रत्येक उपयोगकर्ता सत्र के शुरू में PAM द्वारा लोड किया गया। आप सहित अन्य चर का संदर्भ नहीं दे सकते हैं HOMEया PATHइसका सीमित उपयोग है। PAM द्वारा उपयोग किया जाता है।
  2. ~/.xprofileशैल लिपि। इसे तब निष्पादित किया जाता है जब उपयोगकर्ता X विंडो सिस्टम सिस्टम में लॉग इन करता है। यहाँ परिभाषित चर हर X अनुप्रयोग के लिए दृश्यमान हैं। विस्तार के लिए सही विकल्प PATHजैसे मूल्यों के साथ ~/binया ~/go/binया उपयोगकर्ता विशिष्ट परिभाषित करने GOPATHया NPM_HOME। फ़ाइल को अन्य स्क्रिप्ट द्वारा शामिल किया गया है इसलिए POSIX शेल सिंटैक्स का उपयोग करें न कि आपके उपयोगकर्ता शेल के सिंटैक्स का। शॉर्टकट द्वारा शुरू किया गया आपका ग्राफिकल टेक्स्ट एडिटर या IDE उन मूल्यों को देखेगा।
  3. ~/.profile, ~/.<shell>_profile, ~/.<shell>_loginशैल स्क्रिप्ट। यह केवल टर्मिनल या टर्मिनल एमुलेटर से शुरू किए गए कार्यक्रमों के लिए दिखाई देगा। यह केवल-शेल सिस्टम के लिए एक अच्छा विकल्प है। लॉगिन मोड में गोले द्वारा उपयोग किया जाता है।
  4. ~/.<shell>rc। शैल लिपि। यह एक खराब विकल्प है क्योंकि यह एकल खोल विशिष्ट है। गैर-लॉगिन मोड में गोले द्वारा उपयोग किया जाता है।

टिप्पणियाँ

वायलैंड पर सूक्ति पर्यावरण प्राप्त करने के लिए उपयोगकर्ता लॉगिन खोल शुरू करता है। इसे प्रभावी ढंग से लॉगिन खोल विन्यास का उपयोग करता है ~/.profile, ~/.<shell>_profile, ~/.<shell>_loginफ़ाइलें।

नियमावली

  • वातावरण
  • environment.d
  • दे घुमा के
  • पानी का छींटा

वितरण विशिष्ट प्रलेखन

सम्बंधित

लॉगिन शेल और नॉन-लॉगिन शेल के बीच अंतर?


4
विस्तृत उत्तर के लिए धन्यवाद, यह उच्चतर होना चाहिए। शायद .bash_profileसूची में भी जोड़ा जाना चाहिए?
जेम्स को

2
@JamesKo 4 नंबर
trve.fa7ad

1
मुझे लगता है कि सबसे अच्छा उत्तर सुझाया गया है /etc/environment। लेकिन क्या मैं इसे बिना लॉग आउट और रीफ्रेश किए कर सकता हूं? कभी-कभी मैं बैश या श का उपयोग नहीं करता हूं इसलिए source /etc/environmentयह काम नहीं करता है।
केला3'14

2
महान और मेरी राय में सबसे पूरा जवाब। बहुत ऊपर होना चाहिए।
पीटर ग्लोर

2
इस विषय की खोज करने का मेरा कारण वास्तव में गो था। मुझे खुशी है कि मैं केवल एक ही व्यक्ति हूँ जिसने महसूस किया कि .Bashrc सही जगह नहीं है। ;)
पीटर ग्लोर

1039

आपको इसे अपने ~/.profileया ~/.bashrcफ़ाइल में जोड़ने की आवश्यकता है । 

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

आप जो कर रहे हैं, उसके आधार पर आप बायनेरिज़ के लिए सहानुभूति रखना चाहते हैं:

cd /usr/bin
sudo ln -s /path/to/binary binary-name

ध्यान दें कि यह शेष सत्र के लिए आपके पथ को स्वचालित रूप से अपडेट नहीं करेगा। ऐसा करने के लिए, आपको दौड़ना चाहिए:

source ~/.profile 
or
source ~/.bashrc

11
सवालों की एक जोड़ी। 1) वहाँ के बीच एक कॉलन हो नहीं करना चाहिए $PATHऔर /usr/bin। 2) /usr/binवहाँ भी होना चाहिए । 3) क्या आपको उपयोग नहीं करना चाहिए /usr/local/bin?
बटांडवा

197
कृपया ध्यान दें : यह अक्सर आपके bash PATH के अंत में एक अनुगामी बृहदान्त्र को छोड़ने के लिए एक सुरक्षा छेद माना जाता है क्योंकि यह इसे बनाता है ताकि bash वर्तमान निर्देशिका में दिखता है यदि यह निष्पादन योग्य नहीं मिल रहा है तो इसकी तलाश है। जिन उपयोगकर्ताओं को यह पोस्ट अधिक जानकारी के लिए मिल रही है, उन्हें इसकी सलाह दी जानी चाहिए।
erewok

51
@AdamRobertson यह असुरक्षित है- परिदृश्य पर विचार करें जब आप टारबॉल को अनपैक करते हैं, तो cdउस निर्देशिका के लिए जिसे आपने इसे अनपैक किया है, फिर ls--- चलाएं और फिर महसूस करें कि टारबॉल में एक दुर्भावनापूर्ण प्रोग्राम है जिसे lsइसमें बुलाया गया है।
लिली चुंग

21
मेरे लिए यह .bash_profile, not .profile था। लगता है यह सभी के लिए अलग है।
1

9
मुझे लगता है कि मैंने इस उत्तर की गुणवत्ता में काफी सुधार किया है, और कुछ मुद्दों को संबोधित किया है जो अन्य उपयोगकर्ताओं ने उठाए हैं। हर पथ निर्यात, या हर आदेश जो पथ को समायोजित करता है, को हमेशा एक कोलोन के साथ मौजूदा पथ को अलग करना सुनिश्चित करना चाहिए। अग्रणी या अनुगामी कॉलनों का उपयोग कभी नहीं किया जाना चाहिए, और वर्तमान निर्देशिका को कभी भी पथ में नहीं होना चाहिए।
एरिक रॉबर्टसन

243

उबंटू में, संपादित करें /etc/environment। इसका एकमात्र उद्देश्य पर्यावरण चर को संचित करना है। मूल रूप से $ PATH चर को यहां परिभाषित किया गया है। यह मेरी /etc/environmentफाइल का पेस्ट है :

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

तो आप बस इस फाइल को रूट के रूप में खोल सकते हैं और जो चाहें जोड़ सकते हैं।

तत्काल परिणामों के लिए, भागो (सामान्य उपयोगकर्ता और रूट के रूप में प्रयास करें ):

source /etc/environment && export PATH

अपडेट करें:

यदि आप zsh(उर्फ जेड शैल) का उपयोग करते हैं , तो टिप्पणी के बाद इस पंक्ति को सही तरीके से जोड़ें /etc/zsh/zshenv:

source /etc/environment

मुझे उबंटू 15.10 पर इस छोटे से क्विक का सामना करना पड़ा, लेकिन अगर आपके zsh को सही PATH नहीं मिल रहा है , तो यह क्यों हो सकता है


13
सभी सिस्टम में / etc / पर्यावरण नहीं है
user3439968

9
FWIW $PATHको /etc/profileआर्क लिनक्स में भी परिभाषित किया गया है।
1

3
@ ई-सुशी मैं वास्तव में उस पर हैरान हूं। मैं ubuntu 14.04.1 को खुद हूं। और मैं आपसे वादा कर सकता हूं कि फाइल बिल्ट में आ गई है।
trve.fa7ad

2
सूरज लेकिन / आदि / पर्यावरण के तहत हर सुझाव की कोशिश कर रहा है, और उन सभी काम नहीं कर रहा है, मैं अंत में इस पार ठोकर खाई। मैं भी उबंटू 14.04 पर हूं और यह एकमात्र ऐसा है जिसने वास्तव में रिबूट के बाद पाथ चर को बदल दिया है।
चोकोमोंकी

4
पर्यावरण फ़ाइल को अपडेट करने के बाद उपयोगकर्ता को पीसी को पुनरारंभ करना चाहिए।
हरीश_मं

70

exportघोषणा को अंदर रखें ~/.bashrc। मेरे .bashrc में यह शामिल है:

export PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATH

7
पुनरारंभ की आवश्यकता है?
क्लिक करें

2
जब मैंने इसे .profile' में डाला , तो काम नहीं किया.bashrc
क्लिक करें

यह सटीक प्रणाली पर निर्भर हो सकता है; मुझे यकीन नहीं है कि कौन सी शर्तें निर्धारित करती हैं कि किस फ़ाइल को निष्पादित किया गया है। खुशी है कि समस्या हल हो गई थी, हालांकि।
फ्रैक्स्टिल

12
@ क्लिक करें आप विन्यास source ~/.bashrcपुनः लोड करने के लिए करने की जरूरत है .bashrc। फिर यह काम करेगा
BigSack

4
exportकीवर्ड केवल जरूरत है, तो है PATHपहले से ही एक वातावरण चर के रूप में चिह्नित नहीं कर रहा है - जो यह लगभग बिना शर्त हो जाएगा। बस PATH=/var/lib/gems/1.8/bin:/home/fraxtil/.bin:$PATHएक ही प्रभाव होगा।
चार्ल्स डफी

30

आप $PATH2 तरीकों से स्थायी रूप से सेट हो सकते हैं।

  1. विशेष उपयोगकर्ता के लिए पथ सेट करने के लिए: आपको उपयोगकर्ता .bash_profileमें होम निर्देशिका में प्रविष्टि करने की आवश्यकता हो सकती है ।

    उदाहरण के लिए मेरे मामले में मैं tomcat उपयोगकर्ता प्रोफ़ाइल में जावा पथ सेट करूँगा

    [tomcat]$ echo "export PATH=$PATH:/path/to/dir" >> /home/tomcat/.bash_profile
  2. सभी सिस्टम उपयोगकर्ताओं के लिए सामान्य पथ सेट करने के लिए, आपको इस तरह से पथ सेट करने की आवश्यकता हो सकती है:

    [root~]# echo "export PATH=$PATH:/path/to/dir" >> /etc/profile

3
फ़ाइल का नाम है /etc/profilesएक साथ sअपने distro पर? मेरा कोई नहीं है s। मुझे लगता है कि आपके पास एक टाइपो है।
क्रिस जॉनसन

3
आप शायद उस $ को बचाना चाहते हैं जो आप प्रोफाइल फाइल में लिख रहे हैं। उदाहरण के लिए "निर्यात पाथ = \ $ पैथ: / पाथ / टू / डायर" >> / इत्यादि / प्रोफाइल, इस तरह से आप वास्तव में वैरिएबल के लिए अपील करते हैं, जब यह लिपि उस मूल्य के आधार पर शाब्दिक मूल्य पर सेट करने के बजाय चलती है। इस प्रारंभिक कमांड को निष्पादित करने का समय।
BuvinJ

15

आप स्थानीय उपयोगकर्ता के लिए Centos या RHEL पर उपयोग कर सकते हैं:

echo $"export PATH=\$PATH:$(pwd)" >> ~/.bash_profile

यह PATH में वर्तमान निर्देशिका (या आप अन्य निर्देशिका का उपयोग कर सकते हैं) जोड़ते हैं, यह इसे स्थायी बनाता है लेकिन अगले उपयोगकर्ता लॉगऑन पर प्रभावी होता है।

यदि आप फिर से लॉगऑन नहीं करना चाहते हैं, तो उपयोग कर सकते हैं:

source ~/.bash_profile

# User specific environment and startup programsइस टिप्पणी को पुनः लोड किया गया है जो इसमें मौजूद है.bash_profile


12

आप इन फ़ाइलों में से किसी एक को संपादित करते हुए स्थायी रूप से भी सेट कर सकते हैं:

/etc/profile (सभी उपयोगकर्ताओ के लिए)

~/.bash_profile (वर्तमान उपयोगकर्ता के लिए)

~/.bash_login (वर्तमान उपयोगकर्ता के लिए)

~/.profile (वर्तमान उपयोगकर्ता के लिए)

आप /etc/environmentस्थायी PATH परिवेश चर सेट करने के लिए भी उपयोग कर सकते हैं , लेकिन यह चर विस्तार का समर्थन नहीं करता है

से निकाला गया: http://www.sysadmit.com/2016/06/linux-anadir-ruta-al-path.html


7

मैं कल इस सवाल पर लड़खड़ा गया, जब मैंने PATH में अपनी स्वयं की स्क्रिप्ट वाले फ़ोल्डर को जोड़ने का तरीका खोजा - और यह जानकर आश्चर्यचकित रह गया कि मेरी अपनी ~/.profileफ़ाइल (लिनक्स मिंट 18.1 पर) पहले से ही इसमें शामिल है:

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

इस प्रकार, मुझे केवल इतना करना था कि वह फ़ोल्डर बनाए ~/binऔर अपनी स्क्रिप्ट वहां रखे।


7

मुझे लगता है कि सबसे सुंदर तरीका है:

1. इस ~ ~ .bashrc फ़ाइल में यह कमांड चलाएँ

gedit ~ / .bashrc

इसके अंदर अपना रास्ता जोड़ें

निर्यात पथ = $ पथ: / विकल्प / नोड / बिन

2. स्रोत ~ / .bashrc

(उबंटू)


6

आप अपनी कंसोल कॉन्फ़िग फ़ाइल (जैसे .bashrc), या .profile में उस पंक्ति को जोड़ सकते हैं


2
मेरे पास उन फ़ाइलों में से कोई भी नहीं है/home/(username)
क्लिक करें Upvote

3
@ClickUpvote: आप किस शेल का उपयोग करते हैं? (और एक डॉट के साथ शुरू होने वाली फाइलें छिपी हुई हैं, आपको ls -aउन्हें देखने के लिए कुछ चाहिए।)
डेविड श्वार्ट्ज

आप इन फ़ाइलों (bashrc या प्रोफ़ाइल) में से कोई भी नहीं है, आप मैन्युअल रूप से उन्हें बना सकते हैं और वे स्वचालित रूप से इस्तेमाल किया जाएगा
trve.fa7ad

4

स्थायी रूप से PATH चर जोड़ें

ग्लोबल:

echo "export PATH=$PATH:/new/path/variable" >> /etc/profile

स्थानीय (केवल उपयोगकर्ता के लिए):

echo "export PATH=$PATH:/new/path/variable" >> ~/.profile

के लिए वैश्विक पुनः आरंभ। के लिए स्थानीय दोबारा लॉगिन करें।

उदाहरण

इससे पहले:

$ cat /etc/profile 

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin

उपरांत:

$ cat /etc/profile 

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin
export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable

वैकल्पिक रूप से आप केवल प्रोफ़ाइल संपादित कर सकते हैं:

$ cat /etc/profile 

#!/bin/sh

export PATH=/usr/bin:/usr/sbin:/bin:/sbin:/new/path/variable

दूसरा तरीका (धन्यवाद gniourf_gniourf):

echo 'PATH=$PATH:/new/path/variable' >> /etc/profile

आपको यहाँ दोहरे उद्धरण चिह्नों का उपयोग नहीं करना चाहिए! echo 'Export PATH = $ PATH: / new / path / variable' ... और वैसे, निर्यात कीवर्ड बहुत बेकार होने की संभावना है क्योंकि पैट वेरिएबल बहुत पहले से ही निर्यात के रूप में चिह्नित है। - गनीउर्फ़_ग्निउरफ़


1
नहीं। आपको यहाँ दोहरे उद्धरण चिह्नों का उपयोग नहीं करना चाहिए! echo 'export PATH=$PATH:/new/path/variable'... और वैसे, exportकीवर्ड बहुत बेकार है क्योंकि PATHचर बहुत पहले से ही निर्यात के रूप में चिह्नित होने की संभावना है।
गनीउर्फ़_ग्निउरफ़

नहीं, आपको दोहरे उद्धरण चिह्नों का उपयोग करना चाहिए क्योंकि एकल उद्धरणों में $ PATH प्रक्षेपित नहीं होते हैं। और BTW निर्यात भी उपयोगी है।
user3439968

मैं समझ गया। आप दोहरे उद्धरण चिह्नों का उपयोग कर सकते हैं या एकल उद्धरणों का उपयोग कर सकते हैं, क्योंकि $ PATH तब प्रक्षेपित होता है जब प्रतिध्वनि निष्पादित होती है या जब / etc / प्रोफ़ाइल निष्पादित होती है।
user3439968

1
@ user3439968 वास्तव में, यदि आप कई फ़ाइलों से $ PATH के लिए अपील करने के लिए दोहरे उद्धरण चिह्नों का एक बहुत कारण होगा। विचार करें: जब आप दोहरे उद्धरण चिह्नों का उपयोग करते हैं, तो $ PATH सभी पहले से परिभाषित PATH निर्देशिकाओं के साथ एक स्थिर स्ट्रिंग में अनुवादित हो जाता है। आप का उपयोग /usr/localकर इसे कहते हैं ~/.bashrc। अब यदि आप /opt/binउसी चर का उपयोग करने का इरादा रखते हैं /etc/bash.bashrc; $ PATH एक ही स्टैटिक स्ट्रिंग में अनुवाद करेगा, परिणामस्वरूप $ PATH को जोड़ के बजाय बदल दिया जाएगा ... यह सिस्टम की वरीयता के लिए एक फ़ाइल को दूसरे पर
भेजने

4

1.modify "/ etc / प्रोफाइल" फ़ाइल।

#vi /etc/profile

संपादन स्थिति दर्ज करने और कर्सर को फ़ाइल के अंत में ले जाने के लिए "i" कुंजी दबाएं, अतिरिक्त प्रविष्टियां to

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

प्रेस "Esc" कुंजी निकास स्थिति संपादित करें, ': wq' फ़ाइल सहेजें।

2.Make विन्यास प्रभावी

source /etc/profile

सभी उपयोगकर्ताओं के लिए want प्रोफ़ाइल फ़ाइल बताएं, यदि आप केवल सक्रिय उपयोगकर्ता के लिए मान्य होना चाहते हैं, तो ".bashrc" फ़ाइल सेट करें


4

इतने शोध के बाद, मुझे इसके लिए एक सरल समाधान मिला (मैं प्राथमिक ओएस का उपयोग कर रहा हूं ), जो निम्नलिखित लिंक से प्रेरित है ।

संपादन मोड में .bashrc फ़ाइल खोलने के लिए निम्न कमांड चलाएँ । [आप vi या किसी अन्य संपादक का भी उपयोग कर सकते हैं]।

~$ sudo nano ~/.bashrc

फ़ाइल के अंत में निम्न पंक्ति जोड़ें और सहेजें।

export PATH="[FLUTTER_SDK_PATH]/flutter/bin:$PATH"

उदाहरण के लिए :

export PATH="/home/rageshl/dev/flutter/bin:$PATH"

यहां छवि विवरण दर्ज करें

मेरा मानना ​​है कि यह स्थायी है उबंटू डिस्ट्रो में स्पंदन में पथ स्थापित करने समाधान है

आशा है कि यह मददगार होगा।


3

फ़ाइलें जहाँ आप निर्यात कमांड जोड़ते हैं, यह निर्भर करता है कि क्या आप लॉगिन-मोड या गैर-लॉगिन-मोड में हैं।

यदि आप लॉगिन-मोड में हैं, तो जिन फ़ाइलों को आप देख रहे हैं, वे / etc / bash या /etc/bash.bashrc हैं

यदि आप गैर-लॉगिन-मोड में हैं, तो आप फ़ाइल को देख रहे हैं।

यदि सिस्टम चर हैं, तो ऊपर बताई गई फाइलें।


3

लाइन के साथ /etc/profile.dफ़ोल्डर स्क्रिप्ट में जोड़ें :। फ़ोल्डर के भीतर प्रत्येक स्क्रिप्ट लॉगिन द्वारा स्वचालित रूप से निष्पादित की जाती है।[name_of_script].shexport PATH=$PATH:/dir/etc/profile.d/etc/profile


यह अपने परिवेश को अनुकूलित करने की सिफारिश की रास्ता है
यूरी

1
यह केवल तभी है जब आप सेटिंग्स को सिस्टम-वाइड करना चाहते हैं, जो संभवतः सबसे आम उपयोग का मामला नहीं है। अधिकांश लोग चाहते हैं (या चाहिए) स्थानीय रूप से सेट होने का मार्ग, क्योंकि अधिकांश उपयोगकर्ता / भूमिकाएं प्रासंगिक रूप से अलग-अलग ऑपरेशन कर रही हैं, और आप जितनी कम धारणाएं बनाते हैं, उतना बेहतर है।
१०:१५

@ बाधित, हाँ, यह केवल सिस्टम-वाइड के लिए है। यदि आप स्थानीय परिवर्तन चाहते हैं तो आपको उसी निर्यात को ~ / .profile या ~ / .bashrc में जोड़ना चाहिए। यहां आपको विचार करना चाहिए कि लॉगिन गोले ~ / .profile और इंटरेक्टिव गोले पढ़ें ~ / .bashrc। यह बहुत महत्वपूर्ण है क्योंकि उदाहरण के लिए ssh एक लॉगिन नहीं करता है, इसलिए ~ / .profile नहीं पढ़ा जाएगा। Suse source ~ / .bashrc in / etc / profile जैसे कई डिस्टिब्यूशन। लेकिन यह सभी linux के लिए सामान्य नहीं है '
Yuriy

3

Zues77 सही विचार है। ओपी ने कहा कि "मैं इसके माध्यम से अपना रास्ता कैसे हैक कर सकता हूं"। ओपी यह जानना चाहता था कि $ PATH को स्थायी रूप से कैसे जोड़ा जाए:

sudo nano /etc/profile

यह वह जगह है जहां यह सब कुछ के लिए सेट है और $ PATH की आवश्यकता वाली सभी चीजों के लिए इसे बदलने के लिए सबसे अच्छी जगह है


3

मेरा जवाब स्थापन के के संदर्भ में है go-langपर Ubuntu linux/amd64मैं वातावरण चर (की राह स्थापित करने का एक ही परेशानी का सामना करना पड़ा है GOPATHऔर GOBIN,) टर्मिनल से बाहर निकलने पर यह खोने और का उपयोग कर इसे पुनर्निर्माण source <file_name>हर समय का गलती पथ डाल करने के लिए था ( GOPATHऔर GOBIN) ~/.bash_profileफ़ोल्डर में। कुछ अच्छे घंटे बर्बाद कर के बाद, मैंने पाया कि समाधान डाल करने के लिए था GOPATHऔर GOBINमें ~/.bash_rcढंग से फ़ाइल:

export GOPATH=$HOME/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOPATH:$GOBIN

और ऐसा करने से, गो इंस्टॉलेशन ने ठीक काम किया और कोई नुकसान नहीं हुआ।

EDIT 1: जिस कारण से यह समस्या संबंधित हो सकती है, वह यह है कि आपके ubuntu टर्मिनल या गनोम-टर्मिनल जैसे गैर-लॉग शेल के लिए सेटिंग्स जहां हम गो कोड चलाते हैं, ~./bash_rcफ़ाइल से लिया जाता है और लॉगिन शेल के लिए सेटिंग्स ~/.bash_profileफ़ाइल से ली जाती हैं, और से ~/.profileफ़ाइल यदि ~/.bash_profileफ़ाइल पहुँच है।


3

मान लें कि आप MacOS चला रहे हैं और आपके पास एक बाइनरी है जिस पर आप भरोसा करते हैं और अपने सिस्टम पर उपलब्ध कराना चाहते हैं, लेकिन जरूरी नहीं कि वह निर्देशिका जिसमें आपके PATH में बाइनरी जोड़ी जानी है, आप कॉपी / स्थानांतरित करने का विकल्प चुन सकते हैं बाइनरी टू /usr/local/bin, जो पहले से ही आपके पैट में होना चाहिए। यह द्विआधारी निष्पादन योग्य को किसी भी अन्य बाइनरी की तरह बना देगा जो आपके टर्मिनल में पहले से ही उपयोग कर सकते हैं।


3

इसे निम्नलिखित कमांड का उपयोग करके सीधे जोड़ा जा सकता है:

echo 'export PATH=$PATH:/new/directory' >> ~/.zshrc
source ~/.zshrc

2
प्रश्न को लेबल किया गया है bash, इसलिए यह बहुत उपयोगी नहीं है।
लॉरेंज एल्बे

2
यह एक मान्य उत्तर है -> शीर्षक में केवल Linux का उल्लेख है, इसलिए bash और ALSO zsh करेंगे ... यदि टैगिंग केवल "bash" है तो हमें "zsh" को भी टैग में जोड़ने की आवश्यकता है
कार्लोस साल्टोस

2

सबसे अच्छा सरल तरीका निम्नलिखित पंक्ति है:
PATH="<directory you want to include>:$PATH"
होम डायरेक्टरी में आपकी .bashrc फ़ाइल में।
टर्मिनल को बंद करने या अपने पीसी को रिबूट करने पर भी यह रीसेट नहीं होगा। इसका स्थायी


1
@ यदि आप जो कहते हैं वह करते हैं, तो यह आपकी सेटिंग्स को स्थायी रूप से सेट कर देगा। यदि आप टर्मिनल को बंद करते हैं तो भी यह काम करेगा।
एडवर्ड टोरवाल्ड्स

1

मुझे लगता है कि सबसे सुंदर तरीका है:

1. इसमें ~। / Bashrc फाइल को एड करें

if [ -d "new-path" ]; then
  PATH=$PATH:new-path
fi

2. स्रोत ~ / .bashrc

(उबंटू)


और ऊपर के बाद पथ प्रदर्शित करने के लिए: printf "% s \ n" $ PATH
Robot70

1

स्थायी रास्ता जोड़ने का एक तरीका, जो मेरे लिए काम करता है:

    cd /etc/profile.d
    touch custom.sh
    vi custom.sh 
    export PATH=$PATH:/path according to your setting/

अपने कंप्यूटर को पुनः आरंभ करें और यहां हम जाते हैं वहां स्थायी रूप से चीयर्स होंगे।


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

0

डेबियन वितरण के लिए, आपको निम्न करना होगा:

    - edit ~/.bashrc  e.g: vim ~/.bashrc 
    - add export PATH=$PATH:/path/to/dir
    - then restart your computer. Be aware that if you edit ~/.bashrc  as root, your environment variable you added will work only for root

0

यह है एक वन-लाइनर है । यह एक लाइन जोड़ता है .bashrc। Tha लाइन यह जांचने जा रही है कि क्या निर्देशिका को पहले ही पथ में जोड़ दिया गया है और यदि नहीं तो संलग्न करें। यह आपके स्रोत को हर बार स्रोत में डुप्लिकेट करने से रोकेगा .bashrc

echo "[[ \":\$PATH:\" != *\":$(pwd)/path/to/add:\"* ]] && export PATH=\"\${PATH:+\${PATH}}:$(pwd)/path/to/add\"" >> ~/.bashrc

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