The निर्यात ’कमांड क्या करता है?


85

मैं लिनक्स के लिए थोड़ा नया हूं, और कुछ चीजों को प्राप्त करने के लिए मैं नेत्रहीन रूप से कुछ कमांड चलाने के लिए होता हूं। मैंने सोचा था कि इस प्रकार के प्रश्न पूछना व्यर्थ नहीं होगा, क्योंकि अधिक नए लोगों को उन लोगों के बारे में नियमित ज्ञान होगा।

मैंने हाल ही में जेनकिंस के साथ काम करना शुरू किया , और फिर मुझे जेनकिन्स युद्ध संग्रहexport को चलाने के लिए इस कमांड का उपयोग करना पड़ा । इसलिए मुझे यह जानने की आवश्यकता थी कि जेनकिन्स को चलाने के बाद (जेनकीन्स के घर पर सेट होने के बाद) सामान्य रूप से कमांड क्या करता है, और हमें इस कमांड को चलाने की आवश्यकता क्यों है।export

धन्यवाद!


1
यदि आपने उपयोग की गई निर्यात कमांड के बारे में अधिक कहा तो यह मदद करेगा। अधिक संदर्भ के बिना, मुझे लगता है कि आप एक पर्यावरण चर स्थापित कर रहे थे। देखें en.wikipedia.org/wiki/Environment_variable#Unix
यहोशू डी बॉयड


जवाबों:


99

exportमें shऔर संबंधित गोले (जैसे bash), बच्चे-प्रक्रियाओं के लिए निर्यात किए जाने वाले पर्यावरण चर को चिह्नित करते हैं , ताकि बच्चा उन्हें विरासत में मिले।

exportPOSIX में परिभाषित किया गया है :

शेल निर्दिष्ट नामों के अनुरूप चर को निर्यात विशेषता देगा, जिससे उन्हें बाद में निष्पादित आदेशों के वातावरण में हो जाएगा। यदि चर का नाम = शब्द के बाद है, तो उस चर का मान शब्द पर सेट किया जाएगा।


आपका बहुत बहुत धन्यवाद! आपके सभी उत्तर वास्तव में सहायक थे, और वे कुछ और चीजें सीखने के लिए मार्गदर्शन करते हैं! :-)
चतुरा कुलसिंघे

1
इस अर्थ में एक बाल प्रक्रिया क्या है?
ज़िनन ज़िंग

13
समझ नहीं आता
मार्टिन हैनेंस

@MartinHansen तुम क्या नहीं समझते? यह भी देखें, मेरा जवाब
बार्लॉप

लिंक के अंत में एक अतिरिक्त वर्ग ब्रैकेट है, मैं इसे संपादित नहीं कर सकता, क्योंकि यह एक-प्रतीक संपादित है :)
Radoslav Stoyanov

27

मुझे लगता है कि आप एक विंडो बैकग्राउंड से आ रहे हैं। तो मैं उनके विपरीत होगा (मैं भी Linux के लिए नए तरह हूँ)। मुझे अपनी टिप्पणी के लिए उपयोगकर्ता का जवाब मिला, चीजों का पता लगाने में उपयोगी होना।

विंडोज में, एक चर स्थायी हो सकता है या नहीं। पर्यावरण चर शब्द में SET कमांड के साथ cmd शेल में एक चर सेट शामिल है, साथ ही साथ जब GUI विंडोज़ GUI के भीतर सेट किया जाता है, इस प्रकार रजिस्ट्री में सेट किया जाता है, और नई cmd विंडो में देखा जा सकता है। उदाहरण के लिए विंडोज़ में सेट कमांड के लिए प्रलेखन https://technet.microsoft.com/en-us/library/bb490998.aspx "पर्यावरण चर को प्रदर्शित करता है, सेट करता है या हटाता है। मापदंडों के बिना उपयोग किया जाता है, सेट वर्तमान पर्यावरण सेटिंग्स को प्रदर्शित करता है।" लिनक्स में, सेट पर्यावरण चर प्रदर्शित नहीं करता है, यह शेल चर प्रदर्शित करता है जिसे यह पर्यावरण चर नहीं कहता / संदर्भित करता है। इसके अलावा, लिनक्स सेट करने के लिए चर का उपयोग नहीं करता है (इसके अलावा स्थितीय मापदंडों और शेल विकल्प, जिसे मैं अंत में एक नोट के रूप में समझाता हूं), केवल उन्हें प्रदर्शित करने के लिए और फिर भी केवल शेल चर प्रदर्शित करने के लिए। विंडोज सेट और प्रदर्शित करने के लिए सेट का उपयोग करता है जैसे कि a = 5 सेट, लिनक्स नहीं करता है।

लिनक्स में, मुझे लगता है कि आप एक स्क्रिप्ट बना सकते हैं जो बूटअप पर चर सेट करता है, उदाहरण के लिए /etc/profileया /etc/.bashrcअन्यथा, वे स्थायी नहीं हैं। वे राम में संग्रहीत हैं।

शेल चर, और पर्यावरण चर के बीच लिनक्स में एक अंतर है। लिनक्स में, शेल चर केवल वर्तमान शेल में होते हैं, और पर्यावरण चर, उस शेल और सभी चाइल्ड शेल में होते हैं।

आप शेल चर को setकमांड के साथ देख सकते हैं (हालांकि ध्यान दें कि खिड़कियों के विपरीत, चर सेट कमांड के साथ लिनक्स में सेट नहीं हैं)।

set -o posix; set (एक बार पहले उस सेट-पॉज़िक्स को करने से बहुत अनावश्यक सामान प्रदर्शित नहीं करने में मदद मिलती है)। तो setशेल वैरिएबल प्रदर्शित करता है।

आप envकमांड के साथ पर्यावरण चर देख सकते हैं

शेल चरों को उदाहरण के लिए सेट किया जाता है a = 5

पर्यावरण चर निर्यात के साथ सेट किए जाते हैं, निर्यात शेल चर भी सेट करता है

यहाँ आप zzz = 5 के साथ शेल चर zzz सेट देखते हैं, और यह देखते हैं कि कब चल रहा है setलेकिन एक पर्यावरण चर के रूप में नहीं दिखाता है।

यहाँ हम निर्यात के साथ yyy सेट देखते हैं, इसलिए यह एक पर्यावरण चर है। और इसे शेल चर और पर्यावरण चर दोनों के तहत दिखाता है

$ zzz=5

$ set | grep zzz
zzz=5

$ env | grep zzz

$ export yyy=5

$ set | grep yyy
yyy=5

$ env | grep yyy
yyy=5

$

अन्य उपयोगी सूत्र

/unix/176001/how-can-i-list-all-shell-variables

/ubuntu/26318/environment-variable-vs-shell-variable-whats-the-difference

नोट- एक बिंदु जो थोड़ा विस्तृत होता है और जो कुछ मैंने लिखा है, उसके लिए कुछ हद तक सुधारात्मक है, यह है कि, लाइनक्स बैश में, "सेट" का उपयोग "स्थितीय मापदंडों" और "शेल विकल्प / विशेषताओं" को सेट करने के लिए किया जा सकता है, और तकनीकी रूप से दोनों वे चर हैं, हालांकि मैन पेज उन्हें इस तरह का वर्णन नहीं कर सकते हैं। लेकिन फिर भी, जैसा कि उल्लेख किया गया है, सेट शेल चर या पर्यावरण चर सेट नहीं करेगा)। यदि आप करते हैं set asdfतो यह asdf में $ 1 सेट करता है, और यदि आप echo $1asdf देखते हैं। यदि तुम करोset a=5यह 5 के बराबर चर सेट नहीं करेगा। यह "1 a = 5" के स्ट्रिंग के बराबर स्थितीय पैरामीटर $ 1 सेट करेगा। इसलिए अगर आपने कभी linux में a = 5 सेट देखा है तो यह शायद एक गलती है जब तक कि कोई वास्तव में उस स्ट्रिंग a = 5 को $ 1 में नहीं चाहता था। दूसरी चीज जो लिनक्स के सेट को सेट कर सकती है, वह शेल विकल्प / विशेषताएँ हैं। यदि आप सेट -ओ करते हैं तो आप उनकी सूची देखते हैं। और आप उदाहरण के लिए set -o verbose, बंद कर सकते हैं , क्रिया को चालू करने के लिए (डिफ़ॉल्ट रूप से बंद होता है, लेकिन इससे कोई फर्क नहीं पड़ता है)। या आप set +o verboseक्रिया को बंद करने के लिए कर सकते हैं । विंडोज़ के पास इसके सेट कमांड के लिए ऐसा कोई उपयोग नहीं है।


ऐसा लगता है कि सेट शो शेल और पर्यावरण को दर्शाता है, और 'एनवी' केवल पर्यावरण दिखाता है
बारलोप

1
इस जवाब को बहुत पसंद है क्योंकि यह निक्स बनाम जीत के मामलों को कवर करता है जो पहले भ्रमित हो सकते हैं।
N0thing

6

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


1
लेकिन अगर मैं कहता हूं a=5तो echo $aयह कहता है 5. फिर भी आपने "किसी भी समय यदि आप किसी भी चर मान को बदलते हैं, तो शेल में उस परिवर्तन को चुनने का कोई तरीका नहीं है। इसका मतलब है कि आपके द्वारा किए गए परिवर्तन नए शेल सत्रों में प्रभावी हो जाते हैं।" । <- तो बिना एक्सपोर्ट के शेल सेशन को कैसे अपडेट किया। क्या आप एक उदाहरण दे सकते हैं जहां निर्यात आवश्यक है?
बार्लोप

शेल सत्र के दौरान आपके द्वारा सेट किया गया चर शेल चर है। यह स्थानीय और वर्तमान शेल सत्र के लिए सुलभ है। आप इसे किसी भी समय बदल सकते हैं, जिसे आप चाहते हैं और इसका मौजूदा मूल्य मौजूदा शेल प्रक्रिया के लिए उपलब्ध होगा, जिसमें बदलावों की आवश्यकता नहीं है। दूसरी ओर पर्यावरण चर को लॉगिन समय पर सेट किया जाता है। जब आप उनके किसी भी मूल्य को बदलते हैं, तो आपको यह प्रदर्शन करने की आवश्यकता होती है कि सरल शब्द में क्या होगा जो वर्तमान शेल प्रक्रिया और किसी भी नई चाइल्ड प्रक्रिया दोनों के लिए नया मूल्य उपलब्ध कराएगा। बिल्कुल वही जो निर्यात करता है।
कटवेकिब्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.