पर्यावरण की एक प्रति उप-गोले तक फैलती है, इसलिए यह काम करता है:
$ export MY_VAR=200
$ bash
$ echo $MY_VAR
200
लेकिन चूंकि यह एक प्रति है, आप उस मूल्य को मूल शेल तक प्राप्त नहीं कर सकते हैं - पर्यावरण को बदलकर नहीं, कम से कम।
ऐसा लगता है कि आप वास्तव में एक कदम आगे जाना चाहते हैं, जो कि कुछ ऐसा बनाना है जो एक वैश्विक चर की तरह काम करता है, जिसे "सिबलिंग" गोले द्वारा अलग-अलग जनक से शुरू किया गया है - जैसे गनोम टर्मिनल में आपका नया टैब।
ज्यादातर, जवाब "आप नहीं कर सकते, क्योंकि पर्यावरण चर उस तरह से काम नहीं करते हैं"। हालांकि, एक और जवाब है, जो है, ठीक है, आप हमेशा कुछ हैक कर सकते हैं। एक दृष्टिकोण यह होगा कि चर का मान किसी फ़ाइल में लिखें, जैसे ~/.myvar
, और फिर उस में शामिल करें ~/.bashrc
। फिर, प्रत्येक नया शेल शुरू होगा उस फ़ाइल से पढ़े गए मूल्य से ।
आप एक कदम और आगे बढ़ सकते हैं - ~/.myvar
प्रारूप में हों MYVAR=200
, और फिर सेट करें PROMPT_COMMAND=source ~/.myvar
, जिससे मूल्य आपको हर बार नया संकेत मिलने पर फिर से पढ़ने के लिए प्रेरित करेगा। यह अभी भी नहीं है काफी एक साझा वैश्विक चर, लेकिन यह यह की तरह काम करना शुरू कर रहा है। यह तब तक सक्रिय नहीं होगा जब तक एक संकेत वापस नहीं आता है, हालांकि, जो आप करने की कोशिश कर रहे हैं उसके आधार पर एक गंभीर सीमा हो सकती है।
और फिर, निश्चित रूप से, अगली बात यह है कि परिवर्तनों को स्वचालित रूप से लिखना है ~/.myvar
। यह थोड़ा और जटिल हो जाता है, और मैं इस बिंदु पर रुकने जा रहा हूं, क्योंकि वास्तव में, पर्यावरण चर एक अंतर-शेल संचार तंत्र नहीं थे, और इसे करने के लिए सिर्फ एक और तरीका खोजना बेहतर है।