2012-12-10 14 views
69

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

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

धन्यवाद!

+1

यदि आपने निर्यात किए गए निर्यात आदेश के बारे में और कहा तो इससे मदद मिलेगी। अधिक संदर्भ के बिना, मुझे लगता है कि आप एक पर्यावरण चर सेट कर रहे थे। Http://en.wikipedia.org/wiki/Environment_variable#Unix –

+4

संभावित डुप्लिकेट [bash: निर्यात के साथ या बिना किसी चर को परिभाषित करना] देखें (http://stackoverflow.com/questions/1158091/bash-defining-a- परिवर्तनीय-साथ-या-बिना निर्यात) – tripleee

+0

[यूनिक्स निर्यात कमांड] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/7328223/unix-export-command) –

उत्तर

87

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

export is defined in POSIX:

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

+0

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

+0

इस अर्थ में बाल प्रक्रिया क्या है? –

+6

समझ में नहीं आता –

2

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

+1

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

+0

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

18

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

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

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

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

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

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

आप env आदेश

खोल चर उदा साथ स्थापित कर रहे हैं के साथ वातावरण चर देख सकते हैं बस a=5

वातावरण चर निर्यात के साथ स्थापित कर रहे हैं, निर्यात भी खोल चर

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

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

$ zzz=5 

$ set | grep zzz 
zzz=5 

$ env | grep zzz 

$ export yyy=5 

$ set | grep yyy 
yyy=5 

$ env | grep yyy 
yyy=5 

$ 

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

https://unix.stackexchange.com/questions/176001/how-can-i-list-all-shell-variables

https://askubuntu.com/questions/26318/environment-variable-vs-shell-variable-whats-the-difference

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

+0

सेट शो शैल और पर्यावरण की तरह दिखता है, और 'env' केवल पर्यावरण को दिखाता है – barlop

+1

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

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