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