में एक चर स्थापित करते समय .bashrc, क्या मुझे इसका उपयोग करना चाहिए?
export VAR=value
या यह पर्याप्त होगा?
VAR=value
वास्तव में क्या अंतर है (अगर वहाँ एक है)?
में एक चर स्थापित करते समय .bashrc, क्या मुझे इसका उपयोग करना चाहिए?
export VAR=value
या यह पर्याप्त होगा?
VAR=value
वास्तव में क्या अंतर है (अगर वहाँ एक है)?
जवाबों:
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कमांड का उपयोग करके ) स्क्रिप्ट में सेट चर खोल के जीवन के लिए बनी रहती है।
PS1एक पर्यावरण चर के रूप में निर्यात किए जाने वाले चर का एक बुरा उदाहरण है। यह केवल बाल प्रक्रियाओं के लिए सार्थक है जो कि गोले हैं और इसकी व्याख्या अलग-अलग शेल (जैसे, बैश और डैश) द्वारा की जाती है। सबसे अच्छा अभ्यास बस इसे एक नियमित शेल चर के रूप में सेट करना है .bashrc। वातावरण चर का बेहतर उदाहरणों में शामिल हैं HOME, PATH, EDITOR, आदि
दोनों ही ठीक काम करने लगते हैं, लेकिन निर्यात का उपयोग यह सुनिश्चित करेगा कि चर उप-समूहों और अन्य कार्यक्रमों के लिए उपलब्ध है। इसका परीक्षण करने के लिए यह प्रयास करें।
इन दो लाइनों को अपनी .bashrc फ़ाइल में जोड़ें
TESTVAR="no export"
export MYTESTVAR="with export"
फिर एक नया खोल खोलें।
चल रहा है echo $TESTVARऔर echo $MYTESTVARप्रत्येक चर की सामग्री दिखाएगा। अब उसी शेल के अंदर अपनी .bashrc फ़ाइल से उन दो लाइनों को हटा दें और bashएक सबशेल शुरू करने के लिए दौड़ें ।
रनिंग echo $TESTVARका एक खाली आउटपुट होगा, लेकिन रनिंग echo $MYTESTVAR"निर्यात के साथ" प्रदर्शित होगा