.Bashrc में पर्यावरण चर सेट करने का सबसे अच्छा तरीका क्या है?


11

में एक चर स्थापित करते समय .bashrc, क्या मुझे इसका उपयोग करना चाहिए?

export VAR=value

या यह पर्याप्त होगा?

VAR=value

वास्तव में क्या अंतर है (अगर वहाँ एक है)?

जवाबों:


16

सबसे अच्छा तरीका

export VAR=value

अंतर

करते हुए

VAR=value

केवल स्क्रिप्ट की अवधि ( .bashrcइस मामले में) के लिए चर सेट करता है । स्क्रिप्ट की बाल प्रक्रियाओं (यदि कोई हो) में VAR परिभाषित नहीं होगा, और एक बार स्क्रिप्ट से बाहर निकल VARजाने के बाद।

export VAR=value

स्पष्ट रूप VARसे उन चरों की सूची में जोड़ा जाता है जो बाल प्रक्रियाओं में पारित हो जाते हैं। यह कोशिश करना चाहते हैं? खोल दो, करो

PS1="foo > "
bash --norc

नए शेल को डिफ़ॉल्ट प्रॉम्प्ट मिलता है। अगर इसके बजाय आप कुछ ऐसा करते हैं

export PS1="foo > "
bash --norc

नए शेल का संकेत आपको बस सेट हो जाता है।

अपडेट: जैसा कि इयान कीलिंग नोटों के नीचे वैरिएबल सेट किए गए .bashrcहैं जो कि खट्टे खोल में बने रहते हैं .bashrc। आम तौर पर जब भी शेल स्रोत स्क्रिप्ट ( source scriptnameकमांड का उपयोग करके ) स्क्रिप्ट में सेट चर खोल के जीवन के लिए बनी रहती है।


1
"केवल स्क्रिप्ट की अवधि के लिए चर सेट करता है (.bashrc इस मामले में)" यह गलत / भ्रामक है। इस तरह से सेट किए गए चर, पढ़े जाने वाले इंटरेक्टिव शेल में बने रहते हैं।
इयान केलिंग

PS1एक पर्यावरण चर के रूप में निर्यात किए जाने वाले चर का एक बुरा उदाहरण है। यह केवल बाल प्रक्रियाओं के लिए सार्थक है जो कि गोले हैं और इसकी व्याख्या अलग-अलग शेल (जैसे, बैश और डैश) द्वारा की जाती है। सबसे अच्छा अभ्यास बस इसे एक नियमित शेल चर के रूप में सेट करना है .bashrc। वातावरण चर का बेहतर उदाहरणों में शामिल हैं HOME, PATH, EDITOR, आदि
एंथोनी Geoghegan

10

दोनों ही ठीक काम करने लगते हैं, लेकिन निर्यात का उपयोग यह सुनिश्चित करेगा कि चर उप-समूहों और अन्य कार्यक्रमों के लिए उपलब्ध है। इसका परीक्षण करने के लिए यह प्रयास करें।

इन दो लाइनों को अपनी .bashrc फ़ाइल में जोड़ें

TESTVAR="no export"
export MYTESTVAR="with export"

फिर एक नया खोल खोलें।

चल रहा है echo $TESTVARऔर echo $MYTESTVARप्रत्येक चर की सामग्री दिखाएगा। अब उसी शेल के अंदर अपनी .bashrc फ़ाइल से उन दो लाइनों को हटा दें और bashएक सबशेल शुरू करने के लिए दौड़ें ।

रनिंग echo $TESTVARका एक खाली आउटपुट होगा, लेकिन रनिंग echo $MYTESTVAR"निर्यात के साथ" प्रदर्शित होगा

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