सवाल CentOS में $ PATH में निर्देशिका जोड़ना?


हमें अभी हमारे नए सर्वर मिल गए हैं और हम उन सभी पर सेंटोस चला रहे हैं। रूबी एंटरप्राइज़ संस्करण को सफलतापूर्वक स्थापित करने के बाद, अब मैं आरईई / बिन (पर स्थित) जोड़ना चाहता हूं /usr/lib/ruby-enterprise/bin) निर्देशिका को सर्वर पर डिफ़ॉल्ट रूबी दुभाषिया बनाने के लिए।

मैंने निम्नलिखित कोशिश की है, जो इसे केवल वर्तमान शेल सत्र में जोड़ती है:

export PATH=/usr/lib/ruby-enterprise/bin:$PATH

सही दृष्टिकोण क्या होगा स्थायी रूप से इस निर्देशिका को $ PATH में जोड़ना सभी उपयोगकर्ताओं। मैं वर्तमान में रूट के रूप में लॉग इन हूँ।

अग्रिम में धन्यवाद!


68
2018-01-15 03:15


मूल




जवाब:


संपादित करना अच्छा विचार नहीं है /etc/profile इस तरह की चीजों के लिए, क्योंकि जब भी CentOS इस फ़ाइल के लिए अद्यतन प्रकाशित करता है तो आप अपने सभी परिवर्तन खो देंगे। यह वही है /etc/profile.d के लिए है:

# echo 'pathmunge /usr/lib/ruby-enterprise/bin' > /etc/profile.d/ree.sh
# chmod +x /etc/profile.d/ree.sh

वापस लॉग इन करें और अपने (सुरक्षित रूप से) अद्यतन पाथ का आनंद लें:

# echo $PATH
/usr/lib/ruby-enterprise/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
# which ruby
/usr/lib/ruby-enterprise/bin/ruby

वापस लॉग इन करने के बजाय, आप प्रोफाइल पुनः लोड कर सकते हैं:

# . /etc/profile

यह अद्यतन होगा $PATH चर।


101
2017-08-22 16:29



~/.profile एक और वैध विकल्प भी है - Zypher
हाँ, एक उपयोगकर्ता के लिए। लेकिन सवाल के लिए पथ बदलने के बारे में था सब उपयोगकर्ताओं। - Mike
@ माइक इस पथमार्ग कमांड क्या है? - Nickolai Leschov
@ निकोलई लेस्चोव मुझे यकीन है कि यह सिर्फ $ पाथ के लिए एक रास्ता जोड़ता है। - Mike
@ निकोलई लेस्चोव यह एक ऐसा फ़ंक्शन है जिसे / etc / profile में परिभाषित किया गया है - CrazyPheel


फॉनम की सलाह का पालन करने के बाद मैंने चेक आउट किया /etc/bashrc, जहां मैंने देखा कि यह कहा गया है कि "पर्यावरण सामग्री / etc / प्रोफ़ाइल में जाती है।" मैं अंदर देखने के लिए आगे बढ़े /etc/profile, मैंने यह देखा:

pathmunge () {
    if ! echo $PATH | /bin/egrep -q "(^|:)$1($|:)" ; then
       if [ "$2" = "after" ] ; then
          PATH=$PATH:$1
       else
          PATH=$1:$PATH
       fi
    fi
}

[...]

# Path manipulation
if [ "$EUID" = "0" ]; then
    pathmunge /sbin
    pathmunge /usr/sbin
    pathmunge /usr/local/sbin
fi

मेरी समस्या को हल करने के लिए, मैंने बस जोड़ा pathmunge /usr/lib/ruby-enterprise/bin अगर कथन के नीचे। यह मेरी समस्या हल हो गई।


9
2018-01-15 04:10



क्या कोई समझा सकता है कि क्या "$EUID" = "0" इस संदर्भ में मतलब है? - Eli
ईयूआईडी 0 का मतलब है कि उपयोगकर्ता रूट है। - bbaja42
आपको /etc/profile.d का उपयोग करना चाहिए था। नीचे मेरा जवाब देखें। - Mike
कृपया @MikeConigliaro उत्तर को सही के रूप में स्वीकार करने पर विचार करें। उसका रास्ता सही है। यह इस तरह से काम करने के लिए विकसित किया गया है। फाइलों पर एक नज़र डालें /etc/profile.d/ फ़ोल्डर और आप इसे नोटिस करेंगे। साथ ही, जैसा कि उन्होंने कहा, एक सिस्टम अपडेट आपके समाधान को पूर्ववत कर सकता है। - Caio Cunha


"एक इंटरैक्टिव लॉगिन खोल शुरू हो गया है   एक सफल लॉगिन के बाद, का उपयोग कर   / बिन / लॉगिन, / etc / passwd पढ़कर   फ़ाइल। सामान्य रूप से यह खोल आमंत्रण   पढ़ता है / आदि / प्रोफाइल और इसके निजी   बराबर ~ / .bash_profile पर   चालू होना।

एक इंटरैक्टिव गैर-लॉगिन खोल है   आमतौर पर कमांड लाइन पर शुरू किया   एक शैल प्रोग्राम का उपयोग (उदा।   [प्रॉम्प्ट] $ / बिन / बैश) या / bin / su द्वारा   आदेश। एक इंटरैक्टिव गैर-लॉगिन   टर्मिनल के साथ खोल भी शुरू किया जाता है   प्रोग्राम जैसे xterm या कंसोल से   एक ग्राफिकल पर्यावरण के भीतर। इस   सामान्य रूप से खोल आवेषण का प्रकार   माता-पिता पर्यावरण की प्रतिलिपि बनाता है और फिर   के लिए उपयोगकर्ता की ~ / .bashrc फ़ाइल पढ़ता है   अतिरिक्त स्टार्टअप विन्यास   निर्देश। "    http://www.linuxfromscratch.org/blfs/view/6.3/postlfs/profile.html

इसलिए मैं bashrc में पर्यावरण चर नहीं डालूंगा, क्योंकि यह न केवल सामान्य सम्मेलन के खिलाफ है, बल्कि ग्राफिकल डेस्कटॉप वातावरण से टर्मिनल का आविष्कार करते समय भी आप अपने bashrc varialbles को याद करेंगे।

रेडहाट में /etc/profile मुझे यह टिप्पणी मिली:

"सिस्टम विस्तृत उपनाम और कार्यों को / etc / bashrc में जाना चाहिए। व्यक्तिगत   पर्यावरण चर और स्टार्टअप कार्यक्रमों में जाना चाहिए   ~ / .Bash_profile। व्यक्तिगत उपनाम और कार्यों में जाना चाहिए   ~ / .Bashrc। "

इसलिए यदि आप उपयोगकर्ता आधार पर पर्यावरण चर सेट करना चाहते हैं, तो इसे उपयोगकर्ता की .bash_profile फ़ाइल में करें।

आगे बढ़ना .bash_profile मैंने पढ़ा:

"व्यक्तिगत पर्यावरण चर और स्टार्टअप कार्यक्रम।

व्यक्तिगत उपनाम और कार्यों ~ / .bashrc में जाना चाहिए। प्रणाली विस्तृत   पर्यावरण चर और स्टार्टअप प्रोग्राम / etc / प्रोफ़ाइल में हैं।   सिस्टम विस्तृत उपनाम और फ़ंक्शन / etc / bashrc में हैं। "

निष्कर्ष 
यदि आप केवल रूट्स प्रोग्राम देखना चाहते हैं, उदाहरण के लिए /sbinमैं रूट के लिए उस पथ को जोड़ दूंगा .bash_profile फ़ाइल। लेकिन यदि आप चाहते हैं कि प्रत्येक उपयोगकर्ता को यह देखने के लिए कि आपके बॉक्स पर कौन से रूट विशिष्ट प्रोग्राम इंस्टॉल किए गए हैं, तो मैं रखूंगा /sbin में /etc/.profile। अब प्रत्येक उपयोगकर्ता रूट विशिष्ट कार्यक्रमों को देखने के लिए टैब पूर्णता का उपयोग कर सकता है और यदि आवश्यक हो तो अधिकारों को बढ़ा सकता है।

विशेष मामला: एसएसएच
जब कमांडलाइन के साथ एसएसएच शुरू होता है, तो एक इंटरैक्टिव लॉगिन खोल शुरू होता है। लेकिन इस मामले में /etc/profile पढ़ा नहीं जाता है जब मैंने पर्यावरण चर को परिभाषित किया .bash_profile एसएसएच के साथ काम करने वाले प्रत्येक उपयोगकर्ता की फाइल।


3
2017-11-08 21:34





सोरी ने सवाल गलत तरीके से गलत किया निम्नलिखित एस्वर एक उपयोगकर्ता की प्रोफ़ाइल के लिए है अगर यह किसी की मदद करता है तो इसे छोड़ दें

.bash_profile संशोधित करें

nano ~/.bash_profile

फिर फ़ाइल में कहीं भी आपके पथों को अलग / संशोधित करें:

 PATH=$PATH:$HOME/bin:/your/path
 export PATH

फिर अपनी प्रोफाइल पुनः लोड करें

source ~/.bash_profile

या लॉगआउट और फिर से लॉगिन करें

यदि आप पथ की जांच करते हैं तो इसमें आपके नए जोड़े गए पथ शामिल होना चाहिए

echo $PATH

1
2017-10-31 08:53





आप एक .rc फ़ाइल में पर्यावरण चर सेट कर सकते हैं; बैश शैल के लिए (मुझे सबसे आम मानना ​​है, और सेंटोस में डिफ़ॉल्ट) प्रत्येक उपयोगकर्ता के पास अपनी होम निर्देशिका में .bashrc नामक एक फ़ाइल होती है।

आदेश को PATH = / usr / lib / ruby-enterprise / bin: $ pATH को इस फ़ाइल में किसी एक विशेष उपयोगकर्ता के लिए सेट करने के लिए जोड़ें।

इसे सभी उपयोगकर्ताओं के लिए सेट करने के लिए (जैसा कि आप उल्लेख करते हैं), इसे / etc / bashrc में बदलें (प्रत्येक उपयोगकर्ता की होम निर्देशिका में डिफ़ॉल्ट .bashrc इस फ़ाइल को स्रोत करना चाहिए, लेकिन आपको इसे दोबारा जांचना चाहिए)।


0
2018-01-15 03:49