एनवायरनमेंट वेरिएबल आपके लिनक्स, मैक, या विंडोज कंप्यूटर के लिए ग्लोबल सेटिंग्स हैं, जो सिस्टम शेल द्वारा कमांड निष्पादित करते समय उपयोग के लिए स्टोर की जाती हैं। कई डिफ़ॉल्ट रूप से इंस्टॉलेशन या उपयोगकर्ता निर्माण के दौरान सेट होते हैं।
उदाहरण के लिए, जब आप लॉग इन करते हैं तो आपकी होम डायरेक्टरी एक एनवायरनमेंट वेरिएबल के रूप में सेट होती है। यह पावरशेल में कैसा दिखता है यह आपके ऑपरेटिंग सिस्टम पर निर्भर करता है।
विंडोज पर:
PS C:\Users\bogus> Get-Variable HOME -valueOnly
C:\Users\bogus
लिनक्स पर:
pwsh> Get-Variable HOME -valueOnly
HOME=/home/seth
मैक पर:
pwsh> Get-Variable HOME -valueOnly
HOME=/Users/bogus
आप आमतौर पर एनवायरनमेंट वेरिएबल का सीधे उपयोग नहीं करते हैं, लेकिन उन्हें व्यक्तिगत एप्लिकेशन और डेमन द्वारा आवश्यकतानुसार संदर्भित किया जाता है। हालांकि, एनवायरनमेंट वेरिएबल तब उपयोगी हो सकते हैं जब आप डिफ़ॉल्ट सेटिंग्स को ओवरराइड करना चाहते हैं, या जब आपको नई सेटिंग्स प्रबंधित करने की आवश्यकता होती है जिन्हें आपके सिस्टम के पास अपने आप बनाने का कोई कारण नहीं है।
यह लेख ओपन सोर्स पावरशेल एनवायरनमेंट में एनवायरनमेंट वेरिएबल के बारे में है, और इसलिए यह विंडोज, लिनक्स, और मैक पर चलने वाले पावरशेल पर लागू होता है। बैश शेल के उपयोगकर्ताओं को बैश एनवायरनमेंट वेरिएबल के बारे में मेरे लेख का संदर्भ लेना चाहिए।
इस लेख के लिए, मैंने ओपन सोर्स ऑपरेटिंग सिस्टम लिनक्स पर पावरशेल चलाया। कमांड आपके प्लेटफॉर्म की परवाह किए बिना समान हैं, हालांकि आउटपुट भिन्न होगा (उदाहरण के लिए, यह सांख्यिकीय रूप से असंभव है कि आपका यूजरनेम seth है)।
एनवायरनमेंट वेरिएबल क्या हैं?
पावरशेल में एनवायरनमेंट वेरिएबल विशेष प्रकार के वेरिएबल हैं जो ऑपरेटिंग सिस्टम एनवायरनमेंट के बारे में सिस्टम को जानकारी प्रदान करते हैं। एनवायरनमेंट वेरिएबल के साथ, आप विंडोज रजिस्ट्री में वेरिएबल देख सकते हैं और बदल सकते हैं, साथ ही किसी विशेष सत्र के लिए सेट वेरिएबल भी।
पावरशेल में, एनवायरनमेंट वेरिएबल Env: "ड्राइव" में स्टोर होते हैं, जो पावरशेल एनवायरनमेंट प्रोवाइडर के माध्यम से एक्सेसिबल होते हैं, पावरशेल का एक सबसिस्टम। यह एक फिजिकल ड्राइव नहीं है, बल्कि एक वर्चुअल फाइल सिस्टम है।
क्योंकि एनवायरनमेंट वेरिएबल Env: ड्राइव में मौजूद हैं, जब आप उन्हें संदर्भित करते हैं तो आपको वेरिएबल नाम से पहले Env: प्रीपेंड करना होगा। वैकल्पिक रूप से, आप Set-Location कमांड के साथ अपनी वर्किंग लोकेशन को Env: ड्राइव पर सेट कर सकते हैं ताकि आप सभी एनवायरनमेंट वेरिएबल को लोकल वेरिएबल के रूप में ट्रीट कर सकें:
PS> Set-Location Env:
PS> pwd
Path
----
Env:/
एनवायरनमेंट वेरिएबल आपके लॉगिन सत्र के बारे में जानकारी आपके कंप्यूटर को देते हैं। उदाहरण के लिए, जब किसी एप्लिकेशन को यह निर्धारित करने की आवश्यकता होती है कि डेटा फाइल को डिफ़ॉल्ट रूप से कहां सेव करना है, तो यह आमतौर पर HOME एनवायरनमेंट वेरिएबल पर कॉल करता है। आपने शायद कभी HOME वेरिएबल को स्वयं सेट नहीं किया, और फिर भी यह मौजूद है क्योंकि अधिकांश एनवायरनमेंट वेरिएबल आपके ऑपरेटिंग सिस्टम द्वारा प्रबंधित किए जाते हैं।
आप Get-ChildItem कमांड के साथ Env: ड्राइव के भीतर से अपने सिस्टम पर सेट सभी एनवायरनमेंट वेरिएबल देख सकते हैं। सूची लंबी है, इसलिए आउटपुट को out-host -paging के माध्यम से पाइप करें ताकि इसे पढ़ना आसान हो:
PS> Get-ChildItem | out-host -paging
LOGNAME seth
LS_COLORS rs=0:mh=00:bd=48;5;232;38;5;
MAIL /var/spool/mail/seth
MODULEPATH /etc/scl/modulefiles:/etc/scl/modulefiles
MODULESHOME /usr/share/Modules
OLDPWD /home/seth
PATH /opt/microsoft/powershell/6:/usr/share/Modules/bin
PSModulePath /home/seth/.local/share/powershell/Modules
PWD /home/seth
[...]
यदि आप Env: ड्राइव में नहीं हैं, तो आप अपने कमांड में Env: जोड़कर वही काम कर सकते हैं:
PS> Get-ChildItem Env: | out-host -paging
LOGNAME seth
LS_COLORS rs=0:mh=00:bd=48;5;232;38;5;
MAIL /var/spool/mail/seth
MODULEPATH /etc/scl/modulefiles:/etc/scl/modulefiles
एनवायरनमेंट वेरिएबल को सामान्य वेरिएबल के लिए उपयोग किए जाने वाले कुछ समान सिंटैक्स के साथ सेट, याद किया और क्लियर किया जा सकता है। अन्य वेरिएबल की तरह, सत्र के दौरान आप जो कुछ भी सेट करते हैं वह केवल उस विशेष सत्र पर लागू होता है।
यदि आप किसी वेरिएबल में स्थायी परिवर्तन करना चाहते हैं, तो आपको विंडोज पर विंडोज रजिस्ट्री में या लिनक्स या मैक पर शेल कॉन्फ़िगरेशन फाइल (जैसे ~/.bashrc) में उन्हें बदलना होगा। यदि आप पावरशेल में वेरिएबल का उपयोग करने से परिचित नहीं हैं, तो जारी रखने से पहले मेरा पावरशेल में वेरिएबल लेख पढ़ें।
एनवायरनमेंट वेरिएबल किस लिए उपयोग किए जाते हैं?
विभिन्न एनवायरनमेंट वेरिएबल आपके कंप्यूटर के भीतर कई अलग-अलग सिस्टम द्वारा उपयोग किए जाते हैं। आपका PATH वेरिएबल आपके शेल के लिए महत्वपूर्ण है, उदाहरण के लिए, लेकिन जावा के लिए बहुत कम महत्वपूर्ण (जिसके अपने पाथ भी हैं, लेकिन वे महत्वपूर्ण जावा लाइब्रेरी के पाथ हैं न कि सामान्य सिस्टम फोल्डर)। हालांकि, USER वेरिएबल का उपयोग कई अलग-अलग प्रोसेस द्वारा यह पहचानने के लिए किया जाता है कि सेवा का अनुरोध कौन कर रहा है।
NSIS (नलसॉफ्ट स्क्रिप्टेबल इंस्टॉल सिस्टम) फ्रेमवर्क जैसे इंस्टॉलर विज़ार्ड, जब आप एक नया एप्लिकेशन इंस्टॉल कर रहे होते हैं तो आपके एनवायरनमेंट वेरिएबल को अपडेट करते हैं। कभी-कभी, जब आप अपने ऑपरेटिंग सिस्टम के इच्छित टूलसेट के बाहर कुछ इंस्टॉल कर रहे होते हैं, तो आपको एनवायरनमेंट वेरिएबल को स्वयं प्रबंधित करना पड़ सकता है। या, आप अपनी प्राथमिकताओं के अनुरूप एक एनवायरनमेंट वेरिएबल जोड़ना चुन सकते हैं।
वे नियमित वेरिएबल से कैसे भिन्न हैं?
जब आप एक सामान्य वेरिएबल बनाते हैं, तो वेरिएबल को लोकल माना जाता है, जिसका अर्थ है कि यह उस शेल के बाहर परिभाषित नहीं है जिसने इसे बनाया।
उदाहरण के लिए, एक वेरिएबल बनाएं:
PS> Set-Variable -Name VAR -Value "example"
PS> gv VAR -valueOnly
example
एक नया शेल लॉन्च करें, यहां तक कि अपने वर्तमान शेल के भीतर से:
PS> pwsh
PS c:\> gv VAR -valueOnly
gv : Cannot find a variable with the name 'example'.
दूसरी ओर, एनवायरनमेंट वेरिएबल, ग्लोबल स्कोप में होने के लिए होते हैं। वे उस शेल से अलग मौजूद होते हैं जिसने उन्हें बनाया और अन्य प्रोसेस के लिए उपलब्ध होते हैं।
एनवायरनमेंट वेरिएबल कैसे सेट करें?
एनवायरनमेंट वेरिएबल सेट करते समय, आपको $Env: नोटेशन का उपयोग करके स्पष्ट होना चाहिए कि यह एक एनवायरनमेंट वेरिएबल है:
PS Env:/> $Env:FOO = "hello world"
PS Env:/> Get-ChildItem FOO
hello world
एक टेस्ट के रूप में, एक नया सत्र लॉन्च करें और आपके द्वारा अभी बनाए गए वेरिएबल तक पहुंचें। क्योंकि वेरिएबल एक एनवायरनमेंट वेरिएबल है, हालांकि, आपको इसे $Env: से पूर्व करना होगा:
PS Env:/> pwsh
PS c:\> $Env.FOO
hello world
भले ही आपने चाइल्ड प्रोसेस के लिए एक वेरिएबल उपलब्ध कराया है, यह अभी भी केवल एक अस्थायी वेरिएबल है। यह काम करता है, आप सत्यापित कर सकते हैं कि यह मौजूद है, आप इसे किसी भी प्रोसेस से उपयोग कर सकते हैं, लेकिन यह तब नष्ट हो जाता है जब इसे बनाने वाला शेल बंद हो जाता है।
अपनी प्रोफाइल में एनवायरनमेंट वेरिएबल कैसे सेट करें?
एक एनवायरनमेंट वेरिएबल को सत्रों में बने रहने के लिए बाध्य करने के लिए, आपको इसे अपनी पावरशेल प्रोफाइल में जोड़ना होगा, जैसे आपका CurrentUser,AllHosts प्रोफाइल, जो HOME/Documents/Profile.ps1 में स्थित है:
PS> Add-Content -Path $Profile.CurrentUserAllHosts -Value '$Env:FOO = "hello world"'
इस लाइन के जुड़ने के साथ, लॉन्च किया गया कोई भी पावरशेल सत्र FOO एनवायरनमेंट वेरिएबल को इंस्टेंटिएट करता है और इसका मान hello world पर सेट करता है।
वर्तमान में पावरशेल सत्रों को नियंत्रित करने वाली छह डिफ़ॉल्ट प्रोफाइल हैं, इसलिए अधिक जानकारी के लिए Microsoft देव ब्लॉग देखें।
नए एनवायरनमेंट वेरिएबल कैसे खोजें?
आप इच्छानुसार एनवायरनमेंट वेरिएबल बना सकते हैं और हेरफेर कर सकते हैं, और कुछ एप्लिकेशन ठीक यही करते हैं। इस तथ्य का अर्थ है कि आपके कई एनवायरनमेंट वेरिएबल आपके अधिकांश एप्लिकेशन द्वारा उपयोग नहीं किए जाते हैं, और यदि आप अपने स्वयं के मनमाने वेरिएबल जोड़ते हैं तो कुछ किसी भी चीज़ द्वारा उपयोग नहीं किए जा सकते हैं।
तो सवाल है: आप कैसे पता लगाते हैं कि कौन से एनवायरनमेंट वेरिएबल सार्थक हैं? जवाब एक एप्लिकेशन के डॉक्यूमेंटेशन में निहित है।
उदाहरण के लिए, पायथन इंस्टॉल के दौरान आपके Path एनवायरनमेंट वेरिएबल में उपयुक्त पायथन पाथ जोड़ने की पेशकश करता है। [नोट: PATH?] यदि आप अस्वीकार करते हैं, तो अब आप इसे स्वयं सेट कर सकते हैं क्योंकि आप जानते हैं कि एनवायरनमेंट वेरिएबल को कैसे संशोधित किया जाए।
यही आपके द्वारा इंस्टॉल किए गए किसी भी एप्लिकेशन के लिए सच है: इंस्टॉलर से अपेक्षा की जाती है कि वह आपके एनवायरनमेंट में उपयुक्त वेरिएबल जोड़े, इसलिए आपको कभी भी Env: को मैन्युअल रूप से संशोधित करने की आवश्यकता नहीं होनी चाहिए। यदि आप एक एप्लिकेशन विकसित कर रहे हैं, तो आपका इंस्टॉलर आपके उपयोगकर्ताओं के लिए भी ऐसा ही करना चाहिए।
व्यक्तिगत एप्लिकेशन के लिए महत्वपूर्ण वेरिएबल खोजने के लिए, उनके उपयोगकर्ता और डेवलपर डॉक्यूमेंटेशन देखें।