आपको केवल export
उन चर की आवश्यकता है जो अन्य कार्यक्रमों द्वारा "देखे" जाने चाहिए जिन्हें आप शेल में लॉन्च करते हैं, जबकि जो केवल शेल के अंदर उपयोग किए जाते हैं उन्हें export
एड करने की आवश्यकता नहीं है ।
मैन पेज यही कहता है:
The supplied names are marked for automatic export to the environ‐
ment of subsequently executed commands. If the -f option is given,
the names refer to functions. If no names are given, or if the -p
option is supplied, a list of all names that are exported in this
shell is printed. The -n option causes the export property to be
removed from each name. If a variable name is followed by =word,
the value of the variable is set to word. export returns an exit
status of 0 unless an invalid option is encountered, one of the
names is not a valid shell variable name, or -f is supplied with a
name that is not a function.
यह निम्नलिखित के साथ प्रदर्शित किया जा सकता है:
$ MYVAR="value"
$ echo ${MYVAR}
value
$ echo 'echo ${MYVAR}' > echo.sh
$ chmod +x echo.sh
$ ./echo.sh
$ export MYVAR="value-exported"
$ ./echo.sh
value-exported
स्पष्टीकरण:
- मैंने पहली बार
${MYVAR}
एक शेल वैरिएबल के साथ सेट किया MYVAR="value"
। echo
I का उपयोग करना इसके मूल्य को प्रतिध्वनित कर सकता है क्योंकि प्रतिध्वनि शेल का हिस्सा है।
- फिर मैं बनाता हूं
echo.sh
। यह एक छोटी स्क्रिप्ट है जो मूल रूप से एक ही है, यह सिर्फ गूँजती है ${MYVAR}
, लेकिन अंतर यह है कि यह एक अलग प्रक्रिया में चलेगा क्योंकि यह एक अलग स्क्रिप्ट है।
- जब
echo.sh
यह कहते हैं, तो कुछ भी नहीं होता है, क्योंकि नई प्रक्रिया विरासत में नहीं मिलती है${MYVAR}
- तब मैं कीवर्ड के
${MYVAR}
साथ अपने वातावरण में निर्यात करता हूंexport
- जब मैं अब
echo.sh
फिर से वही चलाता हूं , तो यह सामग्री को गूँजता है ${MYVAR}
क्योंकि यह इसे पर्यावरण से प्राप्त करता है
तो आपके प्रश्न का उत्तर देने के लिए:
यह निर्भर करता है कि एक चर का उपयोग कहां होने जा रहा है, आपको इसे निर्यात करना है या नहीं।