पर्यावरण चर * * / आदि / पर्यावरण को संदर्भित करना?


19

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

अर्थात्, मेरे पास यह है:

JAVA_HOME="/tools/java"
GRAILS_HOME="/tools/grails"
GROOVY_HOME="/tools/groovy"
GRADLE_HOME="/tools/gradle"
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"

यदि मैं $JAVA_HOME/binPATH परिभाषा में जोड़ने की कोशिश करता हूं , हालांकि, मुझे $ JAVA_HOME / बिन मिलता है, और इंटरपोल संस्करण नहीं। इसे दूर करने के लिए, मैं /binप्रविष्टियाँ पथ में प्रविष्टियां जोड़ने के लिए profile.d में environment.sh बना रहा हूं , लेकिन यह मैला और अव्यवस्थित लगता है।

क्या पर्यावरण के चर को / etc / पर्यावरण में पीछे हटाने का कोई तरीका है?

जवाबों:


13

/etc/environmentफ़ाइल द्वारा पढ़ा जाता है pam_envपीएएम मॉड्यूल । यह केवल साधारण की-वैल्यू पेयर का समर्थन करता है, जिसमें दायीं ओर कोई प्रतिस्थापन नहीं है।

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


प्रतिस्थापन के बिना, आप बहुत से अतिरेक के साथ समाप्त होते हैं /etc/environment, मैंने /etc/profileआपके सुझाव के लिए धन्यवाद का सहारा लिया ।
SAFX

2

उबंटू प्रलेखन यह असंभव प्रतीत होता है। लेकिन, एक जवाब है।

उत्तर : सिस्टम वाइड इनवायर्नमेंट वैरिएबल बनाएं/etc/.bashrc

JAVA_HOME="/tools/java"
...
PATH="$JAVA_HOME:$PATH"  

विवरण:
यहाँ पर्यावरण चर दस्तावेज़ से कुछ और विवरण हैं ।
आधिकारिक सिफारिश का उपयोग करना है /etc/environment, जैसा कि आपने कोशिश की है। समस्या यह है कि यह फ़ाइल एक स्क्रिप्ट फ़ाइल नहीं है। दूसरे शब्दों में, आप चर घोषणाओं में चर का उपयोग नहीं कर सकते।

प्रलेखन 2 अन्य "अनुशंसित नहीं" फाइलों के साथ जारी है
/etc/profileऔर /etc/bash.bashrc

/etc/profile"/etc/bash.bashrc फ़ाइल को आमंत्रित करने की तुलना में बहुत कम है"। इसलिए इसके बजाय चुनें

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


मैंने कुछ उबंटू डेवलपर्स के परामर्श से एनवायरमेंटल वेरिएबल्स को अपडेट किया है, इसलिए "अनुशंसित नहीं" बयान अब नहीं हैं।
गुन्नार हजलमर्सन

"जब भी कोई उपयोगकर्ता किसी शेल में प्रवेश करता है"। शेल में प्रवेश करने के लिए कोई उपयोगकर्ता नहीं होने पर मुझे क्या करना चाहिए? मुझे अपने स्वचालित उपयोगकर्ताओं के लिए पर्यावरण चर की आवश्यकता है जो स्टार्टअप पर सॉफ़्टवेयर चलाते हैं। उदाहरण के लिए, मेरे पास अकेले प्रॉक्सी कॉन्फ़िगरेशन की 6 लाइनें हैं। मैं इसके साथ क्या करूं?
eis
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.