2013-06-27 13 views
5

जो मैंने पढ़ा है, setenv सीएसएच में और export बैश में समकक्ष हैं। हालांकि, मुझे दोनों के साथ काम करते समय कुछ अजीब मुद्दे मिले।सीएस बनाम "निर्यात" में "setenv" का दायरा

जब मैं पोटीन खोलने के लिए और टाइप करना आरंभ करें:

setenv TEMP yes 
echo $TEMP //this give me "yes" 

तो मैं अगर मैं विपरीत क्रम में यह कर पार्टी की योजना बनाई और टाइप करने के लिए

echo $TEMP //this give me "yes" as well 

हालांकि जाना, यह नहीं देंगे एक ही परिणाम। विशेष रूप से, पहले पार्टी की योजना बनाई और टाइप

export TEMP=no 
echo $TEMP //this give me "no" 

तो मैं csh के लिए वापस जाओ और प्रकार

echo $TEMP // this give me "Undefined Variable" 

यह मुझे दे "नहीं" के रूप में अच्छी नहीं करना चाहिए जब मैं जाना? क्या मैं कुछ भूल रहा हूँ?

धन्यवाद!

+1

आपका मतलब क्या है "तो मैं वापस सीएसएच पर जाता हूं"? आप "सीएसएच पर वापस जाने" के लिए क्या टाइप करते हैं? – rici

+0

सीएसएच मेरा लॉगिन खोल है इसलिए जब मैं बैश में हूं और "बाहर निकलें" टाइप करता हूं, तो यह सीएसएच पर वापस जाता है। –

+2

दाएं। जब आप एक चर निर्यात करते हैं, तो इसे बच्चों को निर्यात किया जाता है, लेकिन यह माता-पिता को निर्यात नहीं किया जाता है। जब आप "बाहर निकलें" टाइप करते हैं, तो सभी चर गायब हो जाते हैं। – rici

उत्तर

8

एक चर का निर्यात करने का अर्थ है कि उस चर की एक प्रति किसी भी नव निर्मित बाल प्रक्रियाओं के वातावरण में रखी जाती है। यह चर की एक प्रति है; अगर बाल प्रक्रिया परिवर्तनीय को संशोधित करती है, तो माता-पिता को संशोधन दिखाई नहीं देता है। इसके अलावा, अगर कोई बच्चा एक चर निर्यात करता है, तो यह माता-पिता में दिखाई नहीं देता है।

इसलिए, आपके दो मामले असमान हैं। जब आप सीएसएच में शुरू करते हैं, एक चर निर्यात करते हैं, और फिर बैश शुरू करते हैं, तो बैश निर्यात किए गए चर को देखता है। जब आप bsh में एक नया चर निर्यात करते हैं और bsh से बाहर निकलने के लिए bsh से बाहर निकलें, तो बैश सत्र में बनाए गए सभी चर गायब हो जाते हैं।

यदि आप बैश में एक चर निर्यात करना चाहते हैं और फिर एक बच्चे सीएसएच शुरू करें (csh टाइप करके), तो आप लगभग निश्चित रूप से निर्यात किए गए चर को देखेंगे।

+0

बहुत समझ में आता है! धन्यवाद! –

संबंधित मुद्दे