पथ को सेट करना इसलिए यह रूट / सुडोल सहित सभी उपयोगकर्ताओं पर लागू होता है


41

निर्देश कैसे मैं एक सर्वर पर सभी उपयोगकर्ताओं के लिए पथ चर सेट करूँ? सभी 'सामान्य' उपयोगकर्ताओं के लिए पेट को सेट करने के लिए काम करते हैं। हालाँकि, यदि मैं करता हूँ sudo -sऔर फिर printenv PATHअद्यतन पथ नहीं दिखाया गया है। मैंने उदाहरण के लिए एक नज़र ली है TeX लाइव पथ को रूट के लिए सेट करना , लेकिन यह मेरे लिए समझ में नहीं आता है, शायद जैसा कि मैं विंडोज पृष्ठभूमि से हूं। क्या वास्तव में सिस्टम-वाइड पथ सेट करने का कोई तरीका है, जैसे कि प्रविष्टियाँ सिस्टम पर चल रही हर प्रक्रिया द्वारा विरासत में मिली हैं?

जवाबों:


43

अपडेट करें:

वैश्विक पर्यावरण चर सेट करना अभी भी अंदर किया जाना चाहिए /etc/environment, लेकिन जैसा कि आपने बताया, sudo -sइन चर का प्रभाव "गायब" हो गया है।

इसका कारण पर्यावरणsudo को रीसेट करने और सुरक्षित मार्ग स्थापित करने की नीति है । इसे बाई दिफ़ौल्ट मर्थकृत किया गया है:

/etc/sudoers:

Defaults  env_reset
Defaults  secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

इस प्रकार /etc/environmentमार्ग के लिए जो कुछ भी निर्धारित किया गया है, वह अतिदेय है sudo

sudoersराज्यों के लिए मैनुअल पेज :

   env_reset       If set, sudo will reset the environment to only contain
                   the LOGNAME, MAIL, SHELL, USER, USERNAME and the SUDO_*
                   variables.  Any variables in the caller's environment
                   that match the env_keep and env_check lists are then
                   added.  The default contents of the env_keep and
                   env_check lists are displayed when sudo is run by root
                   with the -V option.  If the secure_path option is set,
                   its value will be used for the PATH environment
                   variable.  This flag is on by default.

वर्कअराउंड के रूप में, आप इसका उपयोग कर सकते हैं sudo suजो रूट विशेषाधिकारों के साथ एक शेल प्रदान करेगा लेकिन सही पेट वाला।


मूल उत्तर

आपको इसमें सेट करना चाहिए /etc/environment

प्रयास करें sudo YOUR_TEXT_EDITOR /etc/environment(पहले बैकअप बनाना सुनिश्चित करें)।

अधिक जानकारी के लिए: EnvironmentVariables

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

पर्यावरण चर सेटिंग्स जो सिस्टम को एक पूरे के रूप में प्रभावित करती हैं (बल्कि सिर्फ एक विशेष उपयोगकर्ता) को कई सिस्टम-स्तरीय स्क्रिप्ट में नहीं रखा जाना चाहिए, जो सिस्टम या डेस्कटॉप सत्र लोड होने पर निष्पादित हो जाते हैं, लेकिन

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

सिफारिश नहीं की गई:

/etc/profile- यह फ़ाइल तब भी निष्पादित की जाती है जब भी एक बैश लॉगिन शेल दर्ज किया जाता है (जैसे कंसोल से या ssh से लॉगिंग करते समय), साथ ही डेस्कटॉप सत्र लोड होने पर DisplayManager द्वारा। यह संभवतः वह फ़ाइल है जिसे आप पर्यावरण के चर के बारे में अनुभवी UNIX सिस्टम प्रशासकों से पूछते समय प्राप्त करेंगे। हालांकि, उबंटू में, यह फ़ाइल थोड़ा और अधिक करती है, फिर /etc/bash.bashrc फ़ाइल का उपयोग करें।

/etc/bash.bashrc- यह ~ / .bashrc फ़ाइल का सिस्टम-वाइड संस्करण है। जब भी कोई उपयोगकर्ता किसी शेल या डेस्कटॉप वातावरण में प्रवेश करता है, तो इस फ़ाइल को निष्पादित करने के लिए उबंटू डिफ़ॉल्ट रूप से कॉन्फ़िगर किया गया है।


आह अच्छी तरह से: मेरे लिए यह सब गलत तरीका है (हर किसी को एक ही रास्ता, अवधि विरासत में मिलनी चाहिए), लेकिन मुझे लगता है कि यह कैसा है।
जोसेफ राइट

आप visudoसुरक्षित पथ सेटिंग्स को संपादित करने के लिए (रूट अनुमतियों की आवश्यकता है) का उपयोग कर सकते हैं । यह एक अनुशंसित अभ्यास नहीं है। यह सिर्फ शिक्षा के लिए यहां है।
इलियट लैब्स एलएलसी

2

sudo -iएक लॉगिन (समान तरीके से sudo su -) का अनुकरण करेगा और इस प्रकार आपको ये पर्यावरण चर देगा।


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