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




bash unix (14)

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

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

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

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


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

sudo nano /etc/profile

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


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

  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
    

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


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

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

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

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

source ~/.bash_profile

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


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

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

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

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

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

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

वितरण विशिष्ट दस्तावेज


कल मैंने इस सवाल पर ठोकर खाई थी कि पैथ में अपनी स्क्रिप्ट वाली फ़ोल्डर जोड़ने के लिए एक रास्ता खोजना - और यह जानकर आश्चर्य हुआ कि मेरी अपनी ~/.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 बनाया गया था और वहां मेरी स्क्रिप्ट डालें।


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

    - 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

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


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

1. इसे ~ / bashrc फ़ाइल में जोड़ें इस कमांड को चलाएं

जीएडिट ~। / bashrc

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

निर्यात पाथ = $ पाथ: / ऑप्ट / नोड / बिन

2. स्रोत ~ / .bashrc

(उबंटू)


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

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

और ऐसा करने के बाद, जाओ स्थापना ठीक काम किया और कोई रास्ता नुकसान नहीं था।

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


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


स्थायी पथ जोड़ने का एक तरीका, जो मेरे लिए काम करता है, है: cd /etc/profile.d स्पर्श custom.sh vi custom.sh निर्यात PATH = $ पथ: / पथ आपकी सेटिंग के अनुसार / अपने कंप्यूटर को पुनरारंभ करें और यहां हम पथ पर जाएं वहां स्थायी रूप से उत्साह होगा।


आपको इसे अपने ~/.profile या ~/.bashrc फ़ाइल में जोड़ना होगा।

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

आप जो कर रहे हैं उसके आधार पर, आप बाइनरी को सिम्लिंक भी करना चाहेंगे:

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

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

source ~/.profile 
or
source ~/.bashrc

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

ग्लोबल:

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

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

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

वैश्विक पुनरारंभ के लिए। स्थानीय relogin के लिए।

उदाहरण

पहले:

$ 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 'निर्यात PATH = $ पथ: / नया / पथ / परिवर्तनीय' ... और वैसे, निर्यात कीवर्ड बहुत बेकार है क्योंकि पैथ चर वैरिएबल को पहले ही निर्यात के रूप में चिह्नित किया गया है। - gniourf_gniourf





path