Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Bash प्रोग्रामिंग

Direnv: Linux और macOS के लिए निर्बाध परियोजना-विशिष्ट पर्यावरण चर प्रबंधन

direnv आपके शेल के लिए एक उपयोगी ओपन-सोर्स एक्सटेंशन है जो लिनक्स और macOS जैसे UNIX ऑपरेटिंग सिस्टम पर काम करता है। यह एकल स्टैटिक एक्जीक्यूटेबल के रूप में कंपाइल होता है और bash, zsh, tcsh, और fish जैसे शेल्स को सपोर्ट करता है।

direnv का मुख्य उद्देश्य

direnv का मुख्य उद्देश्य ~/.profile या संबंधित शेल स्टार्टअप फ़ाइलों को अव्यवस्थित किए बिना परियोजना-विशिष्ट पर्यावरण चर की अनुमति देना है। यह वर्तमान डायरेक्टरी के आधार पर पर्यावरण चर को लोड और अनलोड करने का एक नया तरीका लागू करता है।

इसका उपयोग 12factor ऐप्स (सॉफ्टवेयर-एज-ए-सर्विस ऐप्स बनाने की एक पद्धति) के पर्यावरण चर लोड करने, प्रति-परियोजना अलग विकास वातावरण बनाने, और डिप्लॉयमेंट के लिए सीक्रेट्स लोड करने के लिए किया जाता है। इसके अलावा, इसका उपयोग rbenv, pyenv, और phpenv के समान मल्टी-वर्जन इंस्टॉलेशन और प्रबंधन समाधान बनाने के लिए भी किया जा सकता है।

direnv कैसे काम करता है?

शेल द्वारा कमांड प्रॉम्प्ट लोड करने से पहले, direnv वर्तमान डायरेक्टरी (जिसे pwd कमांड से प्रदर्शित किया जा सकता है) और पैरेंट डायरेक्टरी में .envrc फ़ाइल के अस्तित्व की जांच करता है। यह जांच प्रक्रिया तेज़ है और प्रत्येक प्रॉम्प्ट पर ध्यान देने योग्य नहीं होती।

एक बार जब यह उपयुक्त अनुमतियों के साथ .envrc फ़ाइल ढूंढ लेता है, तो यह इसे एक bash सब-शेल में लोड करता है और सभी निर्यात किए गए चर को कैप्चर करके उन्हें वर्तमान शेल के लिए उपलब्ध कराता है।

Linux सिस्टम में direnv इंस्टॉल करना

अधिकांश Linux डिस्ट्रीब्यूशन में, direnv पैकेज डिफ़ॉल्ट रिपॉजिटरी से आपके सिस्टम पैकेज मैनेजर का उपयोग करके इंस्टॉल करने के लिए उपलब्ध होता है:

$ sudo apt install direnv  # Debian, Ubuntu और Mint
$ sudo dnf install direnv  # Fedora

Red Hat Enterprise Linux (RHEL) और CentOS जैसे अन्य डिस्ट्रीब्यूशन पर या किसी भी डिस्ट्रीब्यूशन जो स्नैप्स सपोर्ट करता है, आप इसे snap के रूप में इंस्टॉल कर सकते हैं। इसके लिए आपके सिस्टम पर snapd इंस्टॉल होना आवश्यक है।

$ sudo snap install direnv

अपने Bash शेल में direnv को हुक करना

direnv इंस्टॉल करने के बाद, आपको इसे अपने वर्तमान Linux शेल में हुक करना होगा। उदाहरण के लिए Bash के लिए, ~/.bashrc फ़ाइल के अंत में निम्न लाइन जोड़ें:

सुनिश्चित करें कि यह rvm, git-prompt, और प्रॉम्प्ट में हेरफेर करने वाले अन्य शेल एक्सटेंशन के बाद भी दिखाई दे।

eval "$(direnv hook bash)"

ZSH शेल के लिए

~/.zshrc फ़ाइल के अंत में निम्न लाइन जोड़ें:

eval "$(direnv hook zsh)"

FISH शेल के लिए

~/.config/fish/config.fish फ़ाइल के अंत में निम्न लाइन जोड़ें:

eval (direnv hook fish)

फिर सक्रिय टर्मिनल विंडो को बंद करें और एक नया शेल खोलें या फ़ाइल को सोर्स करें:

$ source ~/.bashrc
$ source ~/.zshrc
$ source ~/.config/fish/config.fish

Linux शेल में direnv का उपयोग कैसे करें

direnv कैसे काम करता है यह प्रदर्शित करने के लिए, हम tecmint_projects नामक एक नई डायरेक्टरी बनाएंगे और उसमें जाएंगे:

$ mkdir ~/tecmint_projects
$ cd tecmint_projects/

अब, कमांड लाइन पर TEST_VARIABLE नामक एक नया चर बनाएं और जब इसे इको किया जाए, तो मान खाली होना चाहिए:

$ echo $TEST_VARIABLE

अब हम एक नई .envrc फ़ाइल बनाएंगे जिसमें Bash कोड होगा जिसे direnv द्वारा लोड किया जाएगा। हम इको कमांड और आउटपुट रीडायरेक्शन कैरेक्टर (>) का उपयोग करके इसमें “export TEST_VARIABLE=tecmint” लाइन जोड़ेंगे:

$ echo export TEST_VARIABLE=tecmint > .envrc

डिफ़ॉल्ट रूप से, सुरक्षा तंत्र .envrc फ़ाइल को लोड होने से रोकता है। चूंकि हम जानते हैं कि यह एक सुरक्षित फ़ाइल है, हमें निम्न कमांड चलाकर इसकी सामग्री को अनुमोदित करने की आवश्यकता है:

$ direnv allow .

अब जब .envrc फ़ाइल की सामग्री को लोड करने की अनुमति दे दी गई है, आइए पहले सेट किए गए TEST_VARIABLE के मान की जांच करें:

$ echo $TEST_VARIABLE

जब हम tecmint_project डायरेक्टरी से बाहर निकलते हैं, तो direnv अनलोड हो जाएगा और यदि हम एक बार फिर TEST_VARIABLE का मान जांचते हैं, तो यह खाली होना चाहिए:

$ cd ..
$ echo $TEST_VARIABLE

हर बार जब आप tecmint_projects डायरेक्टरी में जाते हैं, तो .envrc फ़ाइल लोड हो जाएगी।

दिए गए .envrc के प्राधिकरण को रद्द करने के लिए, deny कमांड का उपयोग करें।

$ direnv deny .  # वर्तमान डायरेक्टरी में
# या
$ direnv deny /path/to/.envrc

अधिक जानकारी और उपयोग निर्देशों के लिए, direnv मैन पेज देखें:

$ man direnv

इसके अलावा, direnv एक stdlib (direnv-stdlib) का भी उपयोग करता है जो कई फ़ंक्शंस के साथ आता है जो आपको आसानी से अपने PATH में नई डायरेक्टरी जोड़ने और बहुत कुछ करने की अनुमति देते हैं।

सभी उपलब्ध फ़ंक्शंस के दस्तावेज़ीकरण को खोजने के लिए, direnv-stdlib मैनुअल एंट्री पेज देखें:

$ man direnv-stdlib

आपके लिए बस इतना ही! यदि आपके कोई प्रश्न या विचार हैं, तो नीचे दिए गए फीडबैक फॉर्म का उपयोग करें।

  1. लिनक्स शेल स्क्रिप्टिंग: वेरिएबल्स पर गहन नज़र – भाग 9 लिनक्स शेल स्क्रिप्टिंग: वेरिएबल्स पर गहन नज़र – भाग 9

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

  1. रूबी में एनवायरनमेंट वेरिएबल्स मास्टर करें: एक व्यावहारिक मार्गदर्शिका रूबी में एनवायरनमेंट वेरिएबल्स मास्टर करें: एक व्यावहारिक मार्गदर्शिका

    एक एनवायरनमेंट वेरिएबल एक कुंजी/मान जोड़ी है, यह इस तरह दिखती है: KEY=VALUE हम इन वेरिएबल्स का उपयोग अपने कंप्यूटर में सभी प्रोग्राम्स के बीच कॉन्फ़िगरेशन विकल्प साझा करने के लिए करते हैं। यही कारण है कि यह सीखना महत्वपूर्ण है कि वे कैसे काम करते हैं और ENV विशेष वेरिएबल का उपयोग करके अपने रूबी प्

  1. Windows 10 पर्यावरण चर सेट करें: चरण-दर-चरण मार्गदर्शिका Windows 10 पर्यावरण चर सेट करें: चरण-दर-चरण मार्गदर्शिका

    पर्यावरण चर आपके PC पर चल रहे प्रोग्राम्स को कॉन्फ़िगर करने के लिए उपयोग किए जाने वाले वैश्विक मान हैं। हालांकि वे तकनीकी लगते हैं, वे वास्तव में अलग-अलग ऐप्स के लिए हुक करने के लिए एक साझा कॉन्फ़िगरेशन स्टोर हैं। पर्यावरण चर व्यक्तिगत उपयोगकर्ता खातों से जुड़े होते हैं, इसलिए अलग-अलग उपयोगकर्ताओं