ডাইরেনভ - লিনাক্সে প্রকল্প-নির্দিষ্ট পরিবেশের ভেরিয়েবলগুলি পরিচালনা করুন


ডিরেক্টনভ হ'ল ইউনিক্স অপারেটিং সিস্টেম যেমন লিনাক্স এবং ম্যাকোস-এ আপনার শেলের জন্য একটি নিফটি ওপেন সোর্স এক্সটেনশন। এটি একক স্ট্যাটিক এক্সিকিউটেবলের মধ্যে সংকলিত এবং ব্যাশ, জেডএস, টিসিএস এবং ফিশের মতো শেলকে সমর্থন করে।

ডার্নিভের মূল উদ্দেশ্য হ'ল । /। প্রোফাইলে বা সম্পর্কিত শেল স্টার্টআপ ফাইলগুলি ছাড়াই প্রকল্প-নির্দিষ্ট পরিবেশের ভেরিয়েবলগুলির জন্য অনুমতি দেওয়া। এটি বর্তমান ডিরেক্টরি অনুসারে পরিবেশের ভেরিয়েবলগুলি লোড এবং আনলোড করার জন্য একটি নতুন উপায় প্রয়োগ করে।

এটি 12 ফ্যাক্টর অ্যাপ্লিকেশনগুলি (সফটওয়্যার হিসাবে একটি অ্যাপ্লিকেশন অ্যাপ্লিকেশন তৈরির পদ্ধতি) পরিবেশের ভেরিয়েবলগুলি লোড করতে, প্রতি-প্রকল্পের বিচ্ছিন্ন বিকাশের পরিবেশ তৈরি করতে এবং স্থাপনার জন্য গোপনীয়তা লোড করতে ব্যবহৃত হয়। অতিরিক্ত হিসাবে, এটি rbenv, pyenv এবং phpenv এর অনুরূপ বহু সংস্করণ ইনস্টলেশন ও পরিচালনা সমাধান তৈরি করতে ব্যবহৃত হতে পারে।

সুতরাং কিভাবে ডার্নিভ কাজ করে?

শেলটি একটি কমান্ড প্রম্পট লোড করার আগে, ডিরেক্টনেভ বর্তমানের একটি .envrc ফাইলের উপস্থিতি (যা আপনি পিডাব্লুডির কমান্ড ব্যবহার করে প্রদর্শন করতে পারেন) এবং প্যারেন্ট ডিরেক্টরিটি পরীক্ষা করে। চেকিং প্রক্রিয়াটি দ্রুত এবং প্রতিটি প্রম্পটে লক্ষ্য করা যায় না।

এটি উপযুক্ত অনুমতি সহ .envrc ফাইলটি খুঁজে পেয়ে এটি এটিকে একটি ব্যাশ সাব-শেলের মধ্যে লোড করে এবং এটি সমস্ত রফতানি ভেরিয়েবলগুলি ক্যাপচার করে এবং বর্তমান শেলটিতে তাদের উপলব্ধ করে তোলে।

লিনাক্স সিস্টেমগুলিতে ডিরেক্টনভি ইনস্টল করা

লিনাক্স ডিস্ট্রিবিউশনের বেশিরভাগ ক্ষেত্রে, আপনার সিস্টেম প্যাকেজ ম্যানেজার হিসাবে প্রদর্শিত হয়েছে তা ব্যবহার করে ডিফল্ট সংগ্রহস্থলগুলি থেকে ডাইরনভ প্যাকেজ ইনস্টল করা যায়।

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

অন্যান্য বিতরণ যেমন যেমন রেড হ্যাট এন্টারপ্রাইজ লিনাক্স (আরএইচইএল) এবং সেন্টোস বা কোনও সিস্টেম যা আপনার সিস্টেমে ইনস্টল করা স্ন্যাপড সমর্থন করে।

$ sudo snap install direnv

আপনার বাশ শেলের মধ্যে কীভাবে হুক করবেন

ডিরেক্টনভি ইনস্টল করার পরে, আপনার এটি আপনার বর্তমান লিনাক্স শেলের মধ্যে আবদ্ধ করা দরকার। বাশের উদাহরণস্বরূপ, ।/.Bashrc ফাইলের শেষে নিম্নলিখিত লাইনটি যুক্ত করুন।

নিশ্চিত হয়ে নিন যে এটি আরভিএম, গিট-প্রম্পট, এবং অন্যান্য শেল এক্সটেনশানগুলির পরেও প্রম্পটটি সামাল দেয়।

eval "$(direnv hook bash)"

।/.Zshrc ফাইলের শেষে নিম্নলিখিত লাইনটি যুক্ত করুন:

eval "$(direnv hook zsh)" 

।/.Config/માછલી/config.fish ফাইলের শেষে নিম্নলিখিত লাইনটি যুক্ত করুন:

eval (direnv hook fish)

তারপরে সক্রিয় টার্মিনাল উইন্ডোটি বন্ধ করুন এবং নতুন শেল খুলুন বা প্রদর্শিত ফাইল হিসাবে উত্স করুন।

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

লিনাক্স শেলটিতে কীভাবে ডার্নিভ ব্যবহার করবেন

ডিরেক্টনভি কীভাবে কাজ করে তা প্রদর্শনের জন্য, আমরা টেকমিট_প্রজেক্টস নামে একটি নতুন ডিরেক্টরি তৈরি করব এবং এতে স্থানান্তর করব।

$ mkdir ~/tecmint_projects
$ cd tecmint_projects/

এর পরে, কমান্ড লাইনে TEST_VARIABLE নামে একটি নতুন ভেরিয়েবল তৈরি করা যাক এবং যখন এটি প্রতিধ্বনিত হয় তখন মানটি খালি হওয়া উচিত:

$ echo $TEST_VARIABLE

এখন আমরা একটি নতুন .এনভিসিআর ফাইল তৈরি করব যাতে বাশ কোড রয়েছে যা ডাইরনভ দ্বারা লোড হবে। ইকো কমান্ড এবং আউটপুট পুনঃনির্দেশ অক্ষর (>) ব্যবহার করে আমরা এতে "TEST_VARIABLE = tecmint" রফতানি যুক্ত করার চেষ্টা করি:

$ echo export TEST_VARIABLE=tecmint > .envrc

ডিফল্টরূপে, সুরক্ষা ব্যবস্থা .envrc ফাইলটি লোড করে। যেহেতু আমরা এটিকে একটি সুরক্ষিত ফাইল জানি তাই আমাদের নীচের কমান্ডটি চালিয়ে এর সামগ্রীটি অনুমোদন করতে হবে:

$ direnv allow .

এখন .envrc ফাইলের সামগ্রীটি লোড করার অনুমতি দেওয়া হয়েছে, আমরা TEST_VARIABLE এর মানটি যা আগে সেট করেছিলাম তা পরীক্ষা করে দেখুন:

$ echo $TEST_VARIABLE

আমরা যখন টেকমিন্ট_প্রজেক্ট ডিরেক্টরিটি থেকে বেরিয়ে যাব তখন ডিরেক্টনভিটি লোড হবে এবং আমরা যদি আরও একবার TEST_VARIABLE এর মান পরীক্ষা করে দেখি তবে এটি খালি হওয়া উচিত:

$ cd ..
$ echo $TEST_VARIABLE

প্রতিবার আপনি যখন tecmint_projects ডিরেক্টরিতে যান, নীচের স্ক্রিনশটে প্রদর্শিত ফাইলটিকে .envrc ফাইলটি লোড করা হবে:

$ cd tecmint_projects/

প্রদত্ত .vvc এর অনুমোদন প্রত্যাহার করতে অস্বীকার আদেশটি ব্যবহার করুন।

$ direnv deny .			#in current directory
OR
$ direnv deny /path/to/.envrc

আরও তথ্য এবং ব্যবহারের নির্দেশাবলীর জন্য, ডিরেক্ট ম্যান পৃষ্ঠাটি দেখুন:

$ man direnv

অতিরিক্ত হিসাবে, ডিরেক্টনভ একটি স্টডিলিবও ব্যবহার করে (ডাইরেনভ-স্টডিলিব) বিভিন্ন ফাংশন নিয়ে আসে যা আপনাকে সহজেই আপনার রাস্তায় নতুন ডিরেক্টরি যুক্ত করতে এবং আরও অনেক কিছু করতে দেয়।

সমস্ত উপলভ্য ফাংশনগুলির জন্য ডকুমেন্টেশন সন্ধান করতে ডাইরেনভ-স্টিডলিব ম্যানুয়াল এন্ট্রি পৃষ্ঠাটি দেখুন:

$ man direnv-stdlib

আমাদের জন্য এটিই ছিল! আমাদের সাথে ভাগ করে নিতে যদি আপনার কোনও প্রশ্ন বা চিন্তা থাকে তবে নীচের প্রতিক্রিয়া ফর্মটি ব্যবহার করুন।