डायरेनव लिनक्स और मैकओएस जैसे यूनिक्स ऑपरेटिंग सिस्टम पर आपके शेल के लिए एक निफ्टी ओपन-सोर्स एक्सटेंशन है। इसे एकल स्थिर निष्पादन योग्य में संकलित किया गया है और यह bash . जैसे शेल का समर्थन करता है , zsh , टीसीएसएच , और मछली।
direnv . का मुख्य उद्देश्य ~/.profile
. को अव्यवस्थित किए बिना परियोजना-विशिष्ट पर्यावरण चरों के लिए अनुमति देना है या संबंधित शेल स्टार्टअप फ़ाइलें। यह वर्तमान निर्देशिका के आधार पर पर्यावरण चर को लोड और अनलोड करने का एक नया तरीका लागू करता है।
इसका उपयोग 12factor . लोड करने के लिए किया जाता है ऐप्स (सॉफ़्टवेयर-ए-ए-सर्विस ऐप्स के निर्माण के लिए एक पद्धति) पर्यावरण चर, प्रति-प्रोजेक्ट पृथक विकास वातावरण बनाते हैं, और परिनियोजन के लिए रहस्य भी लोड करते हैं। इसके अतिरिक्त, इसका उपयोग rbenv . के समान बहु-संस्करण स्थापना और प्रबंधन समाधान बनाने के लिए किया जा सकता है , पायनेव, और phpenv ।
तो direnv कैसे काम करता है?
शेल के एक कमांड प्रॉम्प्ट को लोड करने से पहले, direnv .envrc
. के अस्तित्व की जांच करता है वर्तमान में फ़ाइल (जिसे आप pwd कमांड का उपयोग करके प्रदर्शित कर सकते हैं) और मूल निर्देशिका। जाँच प्रक्रिया तेज़ है और प्रत्येक संकेत पर ध्यान नहीं दिया जा सकता है।
एक बार जब यह .envrc
मिल जाता है उपयुक्त अनुमतियों के साथ फ़ाइल, यह इसे एक बैश उप-खोल में लोड करता है और यह सभी निर्यात किए गए चर को कैप्चर करता है और उन्हें वर्तमान खोल में उपलब्ध कराता है।
लिनक्स सिस्टम में direnv इंस्टाल करना
अधिकांश Linux वितरणों में, direnv जैसा कि दिखाया गया है, आपके सिस्टम पैकेज मैनेजर का उपयोग करके डिफ़ॉल्ट रिपॉजिटरी से स्थापित करने के लिए पैकेज उपलब्ध है।
$ sudo apt install direnv #Debian,Ubuntu and Mint $ sudo dnf install direnv #Fedora
अन्य वितरण पर जैसे Red Hat Enterprise Linux (आरएचईएल ) और CentOS या कोई भी वितरण जो स्नैप का समर्थन करता है, आप उसे स्नैप . के रूप में स्थापित कर सकते हैं . इसके लिए आपको अपने सिस्टम पर स्नैपडील इंस्टाल करना होगा।
$ sudo snap install direnv
डिरेनव को अपने बैश शेल में कैसे शामिल करें
direnv . स्थापित करने के बाद , आपको इसे अपने वर्तमान Linux शेल में जोड़ने की आवश्यकता है। उदाहरण के लिए बैश . के लिए , ~/.bashrc
. के अंत में निम्न पंक्ति जोड़ें फ़ाइल।
सुनिश्चित करें कि यह rvm . के बाद भी दिखाई दे , गिट-प्रॉम्प्ट , और अन्य शेल एक्सटेंशन जो प्रॉम्प्ट में हेरफेर करते हैं।
eval "$(direnv hook bash)"
ZSH शेल के लिए
~/.zshrc
. के अंत में निम्न पंक्ति जोड़ें फ़ाइल:
eval "$(direnv hook zsh)"
फिश शेल के लिए
~/.config/fish/config.fish
. के अंत में निम्न पंक्ति जोड़ें फ़ाइल:
eval (direnv hook fish)
फिर सक्रिय टर्मिनल विंडो को बंद करें और एक नया शेल खोलें या फ़ाइल को दिखाए अनुसार स्रोत करें।
$ source ~/.bashrc $ source ~/.zshrc $ source ~/.config/fish/config.fish
लिनक्स शेल में direnv का उपयोग कैसे करें
यह प्रदर्शित करने के लिए कि कैसे direnv काम करता है, हम tecmint_projects
. नामक एक नई निर्देशिका बनाएंगे और उसमें चले जाओ।
$ mkdir ~/tecmint_projects $ cd tecmint_projects/
इसके बाद, चलिए एक नया वैरिएबल बनाते हैं जिसे TEST_VARIABLE
. कहा जाता है कमांड लाइन पर और जब यह प्रतिध्वनित होता है, तो मान खाली होना चाहिए:
$ echo $TEST_VARIABLE
अब हम एक नया .envrc
बनाएंगे फ़ाइल जिसमें बैश कोड है जिसे direnv . द्वारा लोड किया जाएगा . हम "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
फ़ाइल को निम्न स्क्रीनशॉट में दिखाए अनुसार लोड किया जाएगा:
$ cd tecmint_projects/
किसी दिए गए .envrc
. के प्राधिकरण को निरस्त करने के लिए , अस्वीकार करें . का उपयोग करें आदेश।
$ direnv deny . #in current directory OR $ direnv deny /path/to/.envrc
अधिक जानकारी और उपयोग के निर्देशों के लिए, direnv . देखें मैन पेज:
$ man direnv
इसके अतिरिक्त, direnv stdlib . का भी उपयोग करता है (direnv-stdlib ) कई कार्यों के साथ आता है जो आपको आसानी से अपने PATH . में नई निर्देशिका जोड़ने की अनुमति देता है और भी बहुत कुछ करें।
सभी उपलब्ध कार्यों के लिए दस्तावेज़ खोजने के लिए, direnv-stdlib . देखें मैन्युअल प्रविष्टि पृष्ठ:
$ man direnv-stdlib
हमारे पास आपके लिए बस इतना ही था! यदि आपके पास हमसे साझा करने के लिए कोई प्रश्न या विचार हैं, तो नीचे दिए गए फ़ीडबैक फ़ॉर्म का उपयोग करें।