कंप्यूटिंग में, एक चर एक शब्द है जो एक मूल्य के लिए खड़ा है जो बदल सकता है। आप सामान्य भाषण में हर दिन चर का उपयोग करते हैं, हालांकि आप उन्हें चर के रूप में नहीं सोचते हैं। जब आप "मेरी कार" कहते हैं, तो आप "मेरी कार" का उपयोग एक प्रकार के चर के रूप में कर रहे हैं जो उस समय आपके पास जो भी कार होती है उसे संदर्भित करता है। जब आप एक पुरानी कार को एक नई कार से बदलते हैं, तो मेक और मॉडल आपके जीवन के दौरान बदलना निश्चित है, लेकिन "माय कार" वेरिएबल बनाकर आपको इस बात पर ध्यान देने की ज़रूरत नहीं है कि आप वर्तमान में किस तरह की कार हैं। हर बार जब आप अपने वाहन को संदर्भित करना चाहते हैं।
कंप्यूटर पर वेरिएबल का एक समान तरीके से उपयोग किया जाता है।
उदाहरण के लिए, कंप्यूटर पर उपयोगकर्ता खाते वाले किसी भी व्यक्ति की होम निर्देशिका होती है जहां कंप्यूटर अपना व्यक्तिगत डेटा रखता है। लेकिन प्रत्येक उपयोगकर्ता की एक अलग होम निर्देशिका होती है (/home/seth
सेठ के लिए, /home/tux
टक्स के लिए, और इसी तरह प्रत्येक उपयोगकर्ता के लिए), इसलिए जब आप सामान्य रूप से किसी होम निर्देशिका को संदर्भित करना चाहते हैं, तो आप चर $HOME
का उपयोग कर सकते हैं वर्तमान . की होम निर्देशिका को इंगित करने के लिए उपयोगकर्ता, उपयोगकर्ता के लॉगिन नाम की परवाह किए बिना।
पर्यावरण चर विशेष चर हैं (जैसे $HOME
) जिसमें आपके लॉगिन सत्र के बारे में जानकारी हो। कमांड निष्पादित करते समय उपयोग करने के लिए वे सिस्टम शेल के लिए संग्रहीत होते हैं। वे मौजूद हैं चाहे आप लिनक्स, मैक या विंडोज का उपयोग कर रहे हों। इनमें से कई चर स्थापना या उपयोगकर्ता निर्माण के दौरान डिफ़ॉल्ट रूप से सेट किए जाते हैं।
जबकि पर्यावरण चर सभी आधुनिक प्रणालियों पर लागू होते हैं, यह लेख विशेष रूप से लिनक्स, बीएसडी, मैक और सिगविन पर बैश शेल में पर्यावरण चर को संबोधित करता है।
पर्यावरण चर को समझना
पर्यावरण चर, तकनीकी रूप से, चर से भिन्न नहीं हैं। चर के लिए उपयोग किए जाने वाले समान सिंटैक्स के साथ उन्हें सेट, रिकॉल और क्लियर किया जा सकता है। यदि आप बैश में चर का उपयोग करने के अभ्यस्त नहीं हैं, तो जारी रखने से पहले बैश लेख में मेरे चर पढ़ें।
आप अक्सर सीधे पर्यावरण चर का उपयोग नहीं करते हैं। आवश्यकतानुसार उन्हें अलग-अलग एप्लिकेशन और डेमॉन द्वारा संदर्भित किया जाता है। उदाहरण के लिए, जब आप लॉग इन करते हैं तो आपकी होम डायरेक्टरी एक पर्यावरण चर के रूप में सेट होती है। उदाहरण के लिए, लिनक्स पर आप अपना होम देख सकते हैं। पर्यावरण चर की सामग्री इस तरह:
$ echo $HOME
HOME=/home/seth
मैक पर:
$ echo $HOME
HOME=/Users/bogus
विंडोज़ पर:
C:\Users\bogus
आप अपने सिस्टम पर सेट किए गए सभी पर्यावरण चरों को env . के साथ देख सकते हैं आदेश। सूची लंबी है, इसलिए आउटपुट को अधिक . के माध्यम से पाइप करें पढ़ने में आसान बनाने के लिए:
$ env | more
TERM=xterm-256color
LESSOPEN=||/usr/bin/lesspipe.sh %s
USER=seth
SUDO_EDITOR=emacs
WWW_HOME=https://mirror.lagoon.nc/pub/slackware/slackware64-current/ChangeLog.txt
VISUAL=emacs
DISPLAY=:0
PS1=$
XDG_DATA_DIRS=/home/seth/.local/share/flatpak/exports/share/:/var/lib/flatpak/exports/share/:/usr/local/share/:/usr/share/
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/snap/bin:/home/seth/bin:/home/seth/.local/bin:/snap/bin
GDMSESSION=gnome
MAIL=/var/spool/mail/seth
[...]
पर्यावरण चर उपयोगी हो सकते हैं जब आप डिफ़ॉल्ट सेटिंग्स को ओवरराइड करना चाहते हैं, या जब आपको नई सेटिंग्स को प्रबंधित करने की आवश्यकता होती है जिसे आपके सिस्टम के पास स्वयं बनाने का कोई कारण नहीं है। उदाहरण के लिए, जब आप कोई आदेश टाइप करते हैं, तो आपका कंप्यूटर केवल यही कारण जानता है कि ढूंढें . कैसे उस आदेश के अनुरूप अनुप्रयोग यह है कि पथ पर्यावरण चर यह बताता है कि कहां देखना है। यह चर आपके ऑपरेटिंग सिस्टम के लिए आदेशों की खोज करने के लिए मान्य निर्देशिकाओं को सूचीबद्ध करता है, चाहे वह आदेश ls . हो या सीपी, या एक ग्राफिकल एप्लिकेशन जैसे फ़ायरफ़ॉक्स या लुट्रिस, या कुछ और।
विभिन्न पर्यावरण चर विभिन्न प्रणालियों द्वारा उपयोग किए जाते हैं। आपका पथ उदाहरण के लिए, आपके टर्मिनल एमुलेटर के लिए वैरिएबल महत्वपूर्ण है, लेकिन जावा (जिसके अपने पथ हैं, जो महत्वपूर्ण जावा लाइब्रेरी की ओर इशारा करते हैं) के लिए बहुत कम महत्वपूर्ण है। हालांकि, उपयोगकर्ता चर का उपयोग कई प्रणालियों द्वारा यह पहचानने के लिए किया जाता है कि सेवा का अनुरोध कौन कर रहा है। उदाहरण के लिए, यदि आप एक बहुउपयोगकर्ता प्रणाली पर हैं और आपको अपने स्थानीय मेलबॉक्स की जांच करने की आवश्यकता है, तो आपका मेल कमांड जानता है कि मेल के आधार पर कौन सा मेल स्पूल पुनर्प्राप्त करना है। और उपयोगकर्ता चर।
एक पर्यावरण चर सेट करना
आमतौर पर, इंस्टॉलर प्रोग्राम, चाहे वह dnf . हो फेडोरा पर, उपयुक्त उबंटू पर, काढ़ा Mac पर, या कोई कस्टम इंस्टॉलर, नए एप्लिकेशन के लिए आपके परिवेश चर को अपडेट करता है। कभी-कभी, हालांकि, जब आप अपने वितरण के इच्छित टूलसेट के बाहर कुछ स्थापित कर रहे होते हैं, तो आपको स्वयं एक पर्यावरण चर का प्रबंधन करना पड़ सकता है। या आप अपनी प्राथमिकताओं के अनुरूप एक पर्यावरण चर जोड़ना चुन सकते हैं। यदि आप निर्णय लेते हैं कि आप कुछ अनुप्रयोगों को बिन . में रखना चाहते हैं फ़ोल्डर आपके होम निर्देशिका में स्थित है, तो आपको उस निर्देशिका को अपने पथ . में जोड़ना होगा इसलिए आपका ऑपरेटिंग सिस्टम जानता है कि जब आप कोई आदेश जारी करते हैं तो एप्लिकेशन चल रहे होते हैं।
अस्थायी परिवेश चर
आप अपने पथ में एक स्थान जोड़ सकते हैं जिस तरह से आप थ्रो-अवे चर बनाते हैं। यह काम करता है, लेकिन केवल तब तक जब तक आप अपने सिस्टम पथ को संशोधित करने के लिए जिस शेल का उपयोग करते हैं वह खुला रहता है। उदाहरण के लिए, बैश शेल खोलें और अपने सिस्टम पथ को संशोधित करें:
$ export PATH=$PATH:/home/seth/bin
परिणाम की पुष्टि करें:
$ echo $PATH
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/snap/bin:/home/seth/bin:/home/seth/.local/bin:/snap/bin:/home/seth/bin
सत्र बंद करें:
$ exit
एक नया खोलें और पथ . पर एक नज़र डालें चर:
$ echo $PATH
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/snap/bin:/home/seth/bin:/home/seth/.local/bin:/snap/bin
यह चर अपनी डिफ़ॉल्ट स्थिति में वापस आ गया है क्योंकि PATH प्रत्येक नए शेल के साथ सेट नहीं हो रहा है। उसके लिए, आपको किसी भी शेल के लॉन्च होने पर लोड करने के लिए अपने वेरिएबल को कॉन्फ़िगर करना होगा।
स्थायी पर्यावरण चर
आप अपनी शेल कॉन्फ़िगरेशन फ़ाइल में अपने स्वयं के लगातार पर्यावरण चर सेट कर सकते हैं, जिनमें से सबसे आम है ~/.bashrc . यदि आप कई उपयोगकर्ताओं को प्रबंधित करने वाले सिस्टम व्यवस्थापक हैं, तो आप /etc/profile.d में रखी गई स्क्रिप्ट में पर्यावरण चर भी सेट कर सकते हैं निर्देशिका।
कॉन्फ़िगरेशन फ़ाइल द्वारा एक चर सेट करने का सिंटैक्स आपके शेल में एक चर सेट करने जैसा ही है:
export PATH=$PATH:/snap/bin:/home/seth/bin
मौजूदा शेल को बंद करें, या फिर इसे अपडेट किए गए कॉन्फिग को लोड करने के लिए बाध्य करें:
$ . ~/.bashrc
अंत में, अपने सिस्टम पथ पर एक और नज़र डालें:
$ echo $PATH
PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/snap/bin:/home/seth/bin:/home/seth/.local/bin:/snap/bin:/home/seth/bin
अब आपकी अतिरिक्त कस्टम निर्देशिका को शामिल करने के लिए इसे सही तरीके से सेट किया गया है।
अन्य पर्यावरण चर की खोज करना
आप अपनी इच्छानुसार पर्यावरण चर बना सकते हैं और उनमें हेरफेर कर सकते हैं, और कुछ एप्लिकेशन ऐसा ही करते हैं। इस तथ्य का अर्थ है कि आपके अधिकांश अनुप्रयोगों द्वारा आपके कई पर्यावरण चर का उपयोग नहीं किया जाता है, और यदि आप अपने स्वयं के मनमाना चर जोड़ते हैं तो कुछ का उपयोग कुछ भी नहीं किया जा सकता है। तो सवाल यह है:आप कैसे पता लगाते हैं कि कौन से पर्यावरण चर अर्थपूर्ण हैं?
उत्तर एक आवेदन के दस्तावेज़ीकरण में निहित है। उदाहरण के लिए, यह पता लगाने के लिए कि आपके सामान्य बैश वातावरण के लिए आपके लिए कौन से विकल्प उपलब्ध हैं, आप बैश दस्तावेज़ पढ़ सकते हैं। जबकि बैश मैन पेज में कई महत्वपूर्ण चर का उल्लेख है, बैश के लिए जीएनयू जानकारी पृष्ठ में उपयोगी बॉर्न शेल और बैश पर्यावरण चर की दो विस्तृत सूचियां हैं, और प्रत्येक का उपयोग कैसे किया जाता है।
उदाहरण के लिए, जानकारी पृष्ठ सूची में:
'HISTCONTROL'
A colon-separated list of values controlling how commands are saved
on the history list. If the list of values includes 'ignorespace',
lines which begin with a space character are not saved in the
history list. A value of 'ignoredups' causes lines which match the
previous history entry to not be saved. A value of 'ignoreboth' is
shorthand for 'ignorespace' and 'ignoredups'.
[...]
यह आउटपुट आपको बताता है कि HISTCONTROL पर्यावरण चर नियंत्रित करता है कि आपका बैश इतिहास कैसे प्रस्तुत किया जाता है, और उस अनुभव को अनुकूलित करने के लिए आप किन मूल्यों का उपयोग कर सकते हैं। इस उदाहरण में, अनदेखा किए गए value इतिहास . के आउटपुट को बताता है डुप्लिकेट लाइनों को अनदेखा करने का आदेश।
आप इसे आसानी से टेस्ट कर सकते हैं। सबसे पहले, एक ही कमांड को लगातार दो बार जारी करें:
$ echo "hello world"
hello world
$ echo "hello world"
hello world
अपना इतिहास देखें, या कम से कम नवीनतम प्रविष्टियां देखें:
$ history | tail -5
996 man bash
997 info bash
998 echo "hello world"
999 echo "hello world"
1000 history
आप देख सकते हैं कि डुप्लीकेट प्रविष्टियां वास्तव में अब सूचीबद्ध हैं।
अपने .bashrc . में एक नया परिवेश चर सेट करें जानकारी पृष्ठ में आपने जो पढ़ा है उसके आधार पर फ़ाइल:
export HISTCONTROL=$HISTCONTROL:ignorespace:ignoredups
सहेजें और फिर अपना नया कॉन्फ़िगरेशन लोड करें:
$ source ~/.bashrc
लगातार दो बार दो कमांड जारी करें:
$ echo "hello once"
hello once
$ echo "hello once"
hello once
अपने इतिहास में सबसे हाल की प्रविष्टियां देखें:
$ history | tail -5
1000 history
1001 emacs ~/.bashrc
1002 source ~/.bashrc
1003 echo "hello once"
1004 history
आपके नए परिवेश चर के कारण डुप्लिकेट प्रविष्टियाँ अब एक प्रविष्टि में संक्षिप्त हो गई हैं, ठीक वैसे ही जैसे जानकारी पृष्ठ निर्दिष्ट किया गया है।
प्रासंगिक पर्यावरण चर ढूँढना आमतौर पर उस एप्लिकेशन के दस्तावेज़ीकरण को पढ़ने का मामला है जिसे आप प्रभावित करना चाहते हैं। अधिकांश पर्यावरण चर विशिष्ट हैं जिन्हें एक एप्लिकेशन को सुचारू रूप से चलाने की आवश्यकता है। सामान्य प्रविष्टियों के लिए, आपके शेल का दस्तावेज़ीकरण देखने का तार्किक स्थान है। यदि आप स्क्रिप्ट या एप्लिकेशन लिखते हैं जिसके लिए नए पर्यावरण चर की आवश्यकता होती है, तो उन चरों को अपने स्वयं के दस्तावेज़ में परिभाषित करना सुनिश्चित करें।