जवाबों:
के लिए POSIX संगत गोले (बैश सहित), मानक का कहना है:
2.5.3 शैल वैरिएबल
चर को पर्यावरण से आरंभ किया जाएगा [...] यदि एक चर पर्यावरण से आरम्भ किया जाता है, तो इसे तुरंत निर्यात के लिए चिह्नित किया जाएगा; निर्यात विशेष निर्मित में देखें। नए चर को परिभाषित किया जा सकता है और चर असाइनमेंट के साथ आरंभ किया जा सकता है, [आदि]
और के बारे में export
:
export name[=word]...
शेल निर्दिष्ट नामों के अनुरूप चर को निर्यात विशेषता देगा, जिससे उन्हें बाद में निष्पादित आदेशों के वातावरण में हो जाएगा।
तो शेल के दृष्टिकोण से, केवल चर हैं। उनमें से कुछ पर्यावरण से आ सकते हैं जब शेल शुरू किया गया था, और उनमें से कुछ शेल शुरू होने वाली प्रक्रियाओं के पर्यावरण को निर्यात किया जा सकता है।
("वातावरण" वास्तव में शुरू होने पर प्रक्रिया के लिए पारित स्ट्रिंग्स का एक गुच्छा है। जब प्रक्रिया चल रही होती है, तो यह जो कुछ भी इसे पसंद करता है वह इसे कर सकता है, इसका उपयोग कर सकता है, इसे अनदेखा कर सकता है, इसे अधिलेखित कर सकता है और एक प्रक्रिया क्या गुजरती है। अन्य प्रक्रियाओं को शुरू करते समय अभी तक एक और बात हो सकती है, हालांकि यह सामान्य रूप से सभी पर्यावरण चर को फिर से पारित करने के लिए सामान्य है।)
यदि आप कुछ गैर- POSIX शेल का उपयोग कर रहे हैं, जैसे कि csh
, चीजें अलग हो सकती हैं:
$ csh
% echo $foo
foo: Undefined variable.
% setenv foo bar
% echo $foo
bar
% set foo=asdf
% echo $foo
asdf
% env |grep foo
foo=bar
% exit
ये एक और एक ही चर हैं। शेल में, जैसा कि अधिकांश अन्य प्रोग्रामिंग भाषाओं में विरोध किया जाता है, पर्यावरण चर और शेल चर समान नाम स्थान साझा करते हैं। शेल में, एक पर्यावरण चर एक शेल चर है जिसे निर्यात किया गया है export
।
उदाहरण के लिए, अपने पिछले प्रश्न के लिए मेरा उत्तर " शेल चर और पर्यावरण चर के बीच उपयोग में अंतर क्या है? "
शेल वैरिएबल का उपयोग केवल वर्तमान शेल के लिए किया जा सकता है, इसका उपयोग सिस्टम वाइड में नहीं किया जा सकता है। दूसरे छोर पर पर्यावरणीय चर का उपयोग सिस्टम वाइड किया जा सकता है। कन्वेंशन द्वारा शेल वैरिएबल को लोअरकेस के रूप में लिखा जाता है जबकि पर्यावरण वैरिएबल को अपरकेस के रूप में लिखा जाता है। आप एक शेल वैरिएबल को एक पर्यावरण चर के रूप में काम कर सकते हैं, आपको बस इसे निर्यात करने की आवश्यकता है।