.Bashrc में निर्यात का उपयोग करना


45

मैंने अपने अंदर देखा है .bashrcकि कुछ पंक्तियाँ exportउनके सामने हैं, जैसे कि

export HISTTIMEFORMAT="%b-%d  %H:%M  "
...
export MYSQL_HISTFILE="/root/.mysql_history"

जबकि अन्य, जैसे कि नहीं

HISTSIZE=100000

मैं सोच रहा था कि क्या, पहला, यह सही है, और दूसरा यह कि नियम का उपयोग करने के लिए क्या exportहै .bashrc

जवाबों:


53

आपको केवल 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"echoI का उपयोग करना इसके मूल्य को प्रतिध्वनित कर सकता है क्योंकि प्रतिध्वनि शेल का हिस्सा है।
  • फिर मैं बनाता हूं echo.sh। यह एक छोटी स्क्रिप्ट है जो मूल रूप से एक ही है, यह सिर्फ गूँजती है ${MYVAR}, लेकिन अंतर यह है कि यह एक अलग प्रक्रिया में चलेगा क्योंकि यह एक अलग स्क्रिप्ट है।
  • जब echo.shयह कहते हैं, तो कुछ भी नहीं होता है, क्योंकि नई प्रक्रिया विरासत में नहीं मिलती है${MYVAR}
  • तब मैं कीवर्ड के ${MYVAR}साथ अपने वातावरण में निर्यात करता हूंexport
  • जब मैं अब echo.shफिर से वही चलाता हूं , तो यह सामग्री को गूँजता है ${MYVAR}क्योंकि यह इसे पर्यावरण से प्राप्त करता है

तो आपके प्रश्न का उत्तर देने के लिए:

यह निर्भर करता है कि एक चर का उपयोग कहां होने जा रहा है, आपको इसे निर्यात करना है या नहीं।


17

पर्यावरण चर केexport लिए उपयोग करें । पर्यावरण चर एक ऑपरेटिंग सिस्टम सुविधा है। पर्यावरण चर बच्चे प्रक्रियाओं द्वारा विरासत में मिले हैं: यदि आप उन्हें एक शेल में सेट करते हैं, तो वे इस शेल द्वारा शुरू किए गए सभी कार्यक्रमों में उपलब्ध हैं। कई अनुप्रयोगों या गोले के अलावा अन्य विशिष्ट अनुप्रयोगों द्वारा उपयोग किए जाने वाले चर पर्यावरण चर हैं। यहां आम पर्यावरण चर के कुछ उदाहरण दिए गए हैं:

  • HOME- उपयोगकर्ता की होम निर्देशिका को इंगित करता है, जो कि प्रति उपयोगकर्ता कॉन्फ़िगरेशन फ़ाइल स्थित है। प्रति उपयोगकर्ता कॉन्फ़िगरेशन फ़ाइलों को पढ़ने वाले किसी भी प्रोग्राम द्वारा उपयोग किया जाता है या अन्यथा उपयोगकर्ता के होम डायरेक्टरी का स्थान जानने की आवश्यकता होती है।
  • PATH- इंगित करता है कि अन्य कार्यक्रमों को लॉन्च करने के लिए निष्पादन योग्य फाइलें कहां मिलेंगी। प्रत्येक प्रोग्राम द्वारा उपयोग किया जाता है जिसे दूसरे प्रोग्राम को शुरू करने की आवश्यकता होती है।
  • LD_LIBRARY_PATH- इंगित करता है कि डायनामिक लाइब्रेरी फ़ाइलों को कहाँ खोजें। हर गतिशील रूप से जुड़े निष्पादन योग्य द्वारा उपयोग किया जाता है।
  • EDITOR, VISUAL- इंगित करता है कि जब संपादक की आवश्यकता होती है तो कौन सा कार्यक्रम चलाना है। किसी भी प्रोग्राम द्वारा उपयोग किया जाता है जिसे टेक्स्ट एडिटर लॉन्च करने की आवश्यकता होती है।
  • DISPLAY, XAUTHORITY- इंगित करता है कि X11 सर्वर से कैसे कनेक्ट किया जाए। X11 क्लाइंट (यानी GUI प्रोग्राम) द्वारा उपयोग किया जाता है।
  • LESS- विकल्प स्वचालित रूप से चालू होने पर चालू हो lessजाते हैं। द्वारा उपयोग किया जाता है less
  • http_proxy- उपयोग करने के लिए वेब प्रॉक्सी इंगित करता है। अधिकांश वेब ब्राउज़र द्वारा उपयोग किया जाता है।

exportशेल चरों के लिए उपयोग न करें । शेल चर एक प्रोग्रामिंग भाषा के रूप में शेल की एक विशेषता है। शेल चर केवल शेल के अंदर उपयोग किए जाते हैं जहां वे सेट होते हैं; उन्हें शेल द्वारा शुरू किए गए कार्यक्रमों से कोई मतलब नहीं है। शेल वेरिएबल डुप्लिकेट होने पर शेष शेल स्टेट की तरह बनाया जाता है। यहाँ शेल चरों के कुछ उदाहरण दिए गए हैं, जिनका अर्थ लोकप्रिय गोले हैं:

  • PS1 - प्रत्येक कमांड से पहले प्रदर्शित करने का संकेत।
  • IFS - वर्ण जो अलग-अलग चर विस्तार और कमांड प्रतिस्थापन में शब्दों को अलग करते हैं।
  • HISTFILE - एक फाइल जहां शेल कमांड हिस्ट्री लिखेगा।

शेल द्वारा उपयोग किए जाने वाले चर के अलावा, अधिकांश शेल स्क्रिप्ट अपने आंतरिक उद्देश्यों के लिए चर का उपयोग करते हैं।

अधिकांश पर्यावरण चर (जैसे PATH) पूरे सत्र के लिए समझ में आते हैं, और इसे ~/.profileएक समान फ़ाइल में सेट किया जाना चाहिए । चर जो केवल एक विशिष्ट शेल (जैसे PS1) के लिए समझ में आते हैं, उन्हें शेल-विशिष्ट फ़ाइल में सेट किया जाना चाहिए जैसे कि ~/.bashrcया ~/.zshrc। देखें क्या सभी गोले द्वारा पढ़ी गई ".bashrc" समकक्ष फ़ाइल है?


3

आंतरिक वैरिएबल के लिए आपको आवश्यकता नहीं है export। आपके उदाहरण HISTTIMEFORMATसे ही बैश द्वारा उपयोग किया जाता है और इसके MYSQL_HISTFILEलिए किसी निर्यात की आवश्यकता नहीं होती है mysqlऔर इसके लिए निर्यात की आवश्यकता होती है अन्यथा mysqlइसे नहीं देखा जाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.