"ए = बी" और "ए = बी" निर्यात के बीच अंतर


50

के बीच क्या अंतर है:

a=b

तथा

export a=b

बैश में?

मैं समझता हूं कि वे दोनों पर्यावरण चर को परिभाषित करते हैं, लेकिन मैं अंतर को पूरी तरह से नहीं समझता हूं।


क्या कोई इसे संपादित कर सकता है? यह लिनक्स से संबंधित नहीं है, लेकिन केवल उस शेल पर निर्भर करें जिसका आप उपयोग कर रहे हैं। मुझे लगता है कि यह यहाँ बैश है, जो विंडोज पर भी काम करता है।
इन्ना

मुझे सही साबित होना है।
एडम मटन

जवाबों:


54

export उपप्रकारों के लिए चर का प्रचार करता है।

उदाहरण के लिए, यदि आपने किया

FOO=bar

तब एक सबप्रोसेस जो FOO के लिए चेक किया गया था जबकि वैरिएबल नहीं मिलेगा

export FOO=bar

सबप्रोसेस को इसे खोजने की अनुमति देगा।

लेकिन अगर FOOहै पहले से ही एक वातावरण चर के रूप में परिभाषित किया गया है, तो FOO=barयह है कि पर्यावरण चर के मूल्य को संशोधित करेगा।

उदाहरण के लिए:

FOO=one     # Not an environment variable
export FOO  # Now FOO is an environment variable
FOO=two     # Update the environment variable, so sub processes will see $FOO = "two"

पुराने गोले export FOO=barवाक्य रचना का समर्थन नहीं करते थे ; आपको लिखना था FOO=bar; export FOO


33
वास्तव में, यदि आप " export" का उपयोग नहीं करते हैं, तो आप एक पर्यावरण चर को परिभाषित नहीं कर रहे हैं, लेकिन सिर्फ एक शेल चर। शेल चर केवल शेल प्रक्रिया के लिए उपलब्ध हैं; पर्यावरण चर किसी भी बाद की प्रक्रिया के लिए उपलब्ध हैं , न कि केवल गोले। इसके अलावा, उप-समूह कोष्ठक के भीतर सम्‍मिलित कमांड हैं, जिनकी शेल चरों तक पहुंच है, जबकि आप जिस बारे में बात कर रहे हैं वह बाल प्रक्रियाएं हैं जो शेल होती हैं।
12

ये कहाँ संग्रहीत हैं?
एचडीव

28

यदि आप उपयोग नहीं करते हैं export, तो आप पर्यावरण चर को परिभाषित नहीं कर रहे हैं; सिर्फ एक शेल चर।

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


2

इसके अलावा, यदि आप निर्यात का उपयोग किए बिना कॉलिंग शेल के लिए उपलब्ध चर चाहते हैं, तो आप ऐसा कर सकते हैं:

फ़ाइल a.ksh है -

#!/bin/ksh
FOO=bar

प्रॉम्प्ट पर, इसे चलाएं

> . a.ksh

यह एक ही शेल के भीतर कमांड चलाएगा और $ FOO उपलब्ध होगा।

जहाँ तक,

> a.ksh

$ FOO को केवल a.ksh के भीतर उपलब्ध कराएगा, a.ksh पर कॉल के बाद यह मौजूद नहीं होगा।


1
सही बात। ध्यान दें कि "।" केवल "स्रोत" के लिए एक शॉर्टकट है, जिसे कभी-कभी बेहतर पठनीयता के लिए स्क्रिप्ट में उपयोग किया जाता है। "मदद" देखें। या विवरण के लिए "सहायता स्रोत"।
22

1

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

बाद के मामले में, दोनों बयान कड़ाई से समकक्ष हैं।

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