के बीच क्या अंतर है:
a=b
तथा
export a=b
बैश में?
मैं समझता हूं कि वे दोनों पर्यावरण चर को परिभाषित करते हैं, लेकिन मैं अंतर को पूरी तरह से नहीं समझता हूं।
के बीच क्या अंतर है:
a=b
तथा
export a=b
बैश में?
मैं समझता हूं कि वे दोनों पर्यावरण चर को परिभाषित करते हैं, लेकिन मैं अंतर को पूरी तरह से नहीं समझता हूं।
जवाबों:
export
उपप्रकारों के लिए चर का प्रचार करता है।
उदाहरण के लिए, यदि आपने किया
FOO=bar
तब एक सबप्रोसेस जो FOO के लिए चेक किया गया था जबकि वैरिएबल नहीं मिलेगा
export FOO=bar
सबप्रोसेस को इसे खोजने की अनुमति देगा।
लेकिन अगर FOO
है पहले से ही एक वातावरण चर के रूप में परिभाषित किया गया है, तो FOO=bar
यह है कि पर्यावरण चर के मूल्य को संशोधित करेगा।
उदाहरण के लिए:
FOO=one # Not an environment variable
export FOO # Now FOO is an environment variable
FOO=two # Update the environment variable, so sub processes will see $FOO = "two"
पुराने गोले export FOO=bar
वाक्य रचना का समर्थन नहीं करते थे ; आपको लिखना था FOO=bar; export FOO
।
export
" का उपयोग नहीं करते हैं, तो आप एक पर्यावरण चर को परिभाषित नहीं कर रहे हैं, लेकिन सिर्फ एक शेल चर। शेल चर केवल शेल प्रक्रिया के लिए उपलब्ध हैं; पर्यावरण चर किसी भी बाद की प्रक्रिया के लिए उपलब्ध हैं , न कि केवल गोले। इसके अलावा, उप-समूह कोष्ठक के भीतर सम्मिलित कमांड हैं, जिनकी शेल चरों तक पहुंच है, जबकि आप जिस बारे में बात कर रहे हैं वह बाल प्रक्रियाएं हैं जो शेल होती हैं।
इसके अलावा, यदि आप निर्यात का उपयोग किए बिना कॉलिंग शेल के लिए उपलब्ध चर चाहते हैं, तो आप ऐसा कर सकते हैं:
फ़ाइल a.ksh है -
#!/bin/ksh
FOO=bar
प्रॉम्प्ट पर, इसे चलाएं
> . a.ksh
यह एक ही शेल के भीतर कमांड चलाएगा और $ FOO उपलब्ध होगा।
जहाँ तक,
> a.ksh
$ FOO को केवल a.ksh के भीतर उपलब्ध कराएगा, a.ksh पर कॉल के बाद यह मौजूद नहीं होगा।