Direnv - Upravljanje varijablama okruženja specifičnim za projekt u Linuxu


direnv je izvrsno proširenje otvorenog koda za vašu ljusku na UNIX operativnom sustavu kao što su Linux i macOS. Kompajliran je u jednu statičku izvršnu datoteku i podržava ljuske kao što su bash, zsh, tcsh i fish.

Glavna svrha direnv-a je omogućiti varijable okoline specifične za projekt bez pretrpavanja ~/.profile ili povezanih datoteka za pokretanje ljuske. Implementira novi način za učitavanje i istovar varijabli okoline ovisno o trenutnom direktoriju.

Koristi se za učitavanje varijabli okruženja aplikacija 12factor (metodologija za izgradnju aplikacija softvera kao usluge), stvaranje izoliranih razvojnih okruženja po projektu i učitavanje tajni za implementaciju. Osim toga, može se koristiti za izgradnju rješenja za instalaciju i upravljanje s više verzija sličnih rbenv, pyenv i phpenv.

Dakle, kako direnv radi?

Prije nego što ljuska učita naredbeni redak, direnv provjerava postojanje datoteke .envrc u trenutnom (koju možete prikazati pomoću naredbe pwd) i nadređenom direktoriju. Proces provjere je brz i ne može se primijetiti na svakom upitu.

Nakon što pronađe datoteku .envrc s odgovarajućim dopuštenjima, učitava je u bash podljusku i hvata sve izvezene varijable te ih čini dostupnima trenutnoj ljusci.

Instaliranje direnv-a u Linux sustavima

U većini distribucija Linuxa paket direnv dostupan je za instalaciju iz zadanih repozitorija pomoću upravitelja paketa vašeg sustava kao što je prikazano.

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

Na drugim distribucijama kao što su Red Hat Enterprise Linux (RHEL) i CentOS ili bilo kojoj distribuciji koja podržava snaps, možete ga instalirati kao snap. Ovo zahtijeva da na vašem sustavu imate instaliran snapd.

sudo snap install direnv

Kako spojiti direnv na vaš Bash Shell

Nakon instaliranja direnv, morate ga spojiti na svoju trenutnu Linux ljusku. Na primjer za Bash, dodajte sljedeći redak na kraj ~/.bashrc datoteke.

Provjerite pojavljuje li se čak i nakon rvm, git-prompt i drugih ekstenzija ljuske koje manipuliraju upitom.

eval "$(direnv hook bash)"

Za ZSH Shell

Dodajte sljedeći redak na kraj ~/.zshrc datoteke:

eval "$(direnv hook zsh)" 

Za FISH Shell

Dodajte sljedeći redak na kraj ~/.config/fish/config.fish datoteke:

eval (direnv hook fish)

Zatim zatvorite aktivni prozor terminala i otvorite novu ljusku ili izvor datoteke kao što je prikazano.

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

Kako koristiti direnv u Linux Shellu

Da bismo demonstrirali kako radi direnv, stvorit ćemo novi direktorij pod nazivom tecmint_projects i preseliti se u njega.

mkdir ~/tecmint_projects
cd tecmint_projects/

Zatim, kreirajmo novu varijablu pod nazivom TEST_VARIABLE u naredbenom retku i kada se ponovi, vrijednost bi trebala biti prazna:

echo $TEST_VARIABLE

Sada ćemo stvoriti novu datoteku .envrc koja sadrži Bash kod koji će učitati direnv. Također pokušavamo dodati redak “export the TEST_VARIABLE=tecmint” pomoću naredbe echo i znaka za preusmjeravanje izlaza (>):

echo export TEST_VARIABLE=tecmint > .envrc

Prema zadanim postavkama, sigurnosni mehanizam blokira učitavanje datoteke .envrc. Budući da znamo da je to sigurna datoteka, moramo odobriti njezin sadržaj pokretanjem sljedeće naredbe:

direnv allow .

Sad kad je dozvoljeno učitavanje sadržaja datoteke .envrc, provjerimo vrijednost TEST_VARIABLE koju smo prethodno postavili:

echo $TEST_VARIABLE

Kada izađemo iz direktorija tecmint_project, direnv će se isprazniti i ako još jednom provjerimo vrijednost TEST_VARIABLE, trebao bi biti prazan:

cd ..
echo $TEST_VARIABLE

Svaki put kada se pomaknete u direktorij tecmint_projects, datoteka .envrc bit će učitana kao što je prikazano na sljedećoj snimci zaslona:

cd tecmint_projects/

Za opoziv autorizacije određenog .envrc koristite naredbu deny.

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

Za više informacija i upute za korištenje, pogledajte direnv stranicu priručnika:

man direnv

Osim toga, direnv također koristi stdlib (direnv-stdlib) dolazi s nekoliko funkcija koje vam omogućuju jednostavno dodavanje novih direktorija u vaš PATHi učiniti mnogo više.

Kako biste pronašli dokumentaciju za sve dostupne funkcije, provjerite stranicu za ručni unos direnv-stdlib:

man direnv-stdlib

To je sve što smo imali za vas! Ako imate pitanja ili misli koje želite podijeliti s nama, upotrijebite obrazac za povratne informacije u nastavku.