Direnv - Upravljanje varijablama okruženja specifičnim za projekat u Linuxu
direnv je sjajna ekstenzija otvorenog koda za vašu školjku na UNIX operativnom sistemu kao što su Linux i macOS. Kompajliran je u jedan statički izvršni fajl i podržava školjke kao što su bash, zsh, tcsh i fish.
Glavna svrha direnv je da omogući varijable okruženja specifične za projekat bez zatrpavanja ~/.profile
ili povezanih datoteka za pokretanje ljuske. Implementira novi način učitavanja i izbacivanja varijabli okruženja ovisno o trenutnom direktoriju.
Koristi se za učitavanje varijabli okruženja aplikacija 12 faktora (metodologija za pravljenje aplikacija softvera kao usluge), kreiranje izolovanih razvojnih okruženja po projektu, kao i za učitavanje tajni za implementaciju. Osim toga, može se koristiti za izgradnju rješenja za instalaciju i upravljanje u više verzija sličnih rbenv, pyenv i phpenv.
Dakle, kako radi direnv?
Prije nego što shell učita komandnu liniju, direnv provjerava postojanje datoteke .envrc
u trenutnom (koju možete prikazati pomoću komande pwd) i roditeljskom direktoriju. Proces provjere je brz i ne može se primijetiti na svakom upitu.
Jednom kada pronađe datoteku .envrc
sa odgovarajućim dozvolama, učitava je u bash pod-ljusku i hvata sve izvezene varijable i čini ih dostupnim trenutnoj ljusci.
Instaliranje direnv u Linux sistemima
U većini Linux distribucija, paket direnv je dostupan za instalaciju iz zadanih spremišta koristeći vaš sistemski menadžer paketa 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 koja distribucija koja podržava snaps, možete je instalirati kao snap. Ovo zahtijeva da imate instaliran snapd na vašem sistemu.
sudo snap install direnv
Kako spojiti direnv u svoju Bash Shell
Nakon instalacije direnv, morate ga spojiti na vašu trenutnu Linux shell. Na primjer za Bash, dodajte sljedeći red na kraj datoteke ~/.bashrc
.
Pobrinite se da se pojavi čak i nakon rvm, git-prompt i drugih ekstenzija ljuske koje manipuliraju promptom.
eval "$(direnv hook bash)"
Za ZSH Shell
Dodajte sljedeći red na kraj datoteke ~/.zshrc
:
eval "$(direnv hook zsh)"
Za FISH Shell
Dodajte sljedeći red na kraj datoteke ~/.config/fish/config.fish
:
eval (direnv hook fish)
Zatim zatvorite prozor aktivnog terminala i otvorite novu ljusku ili izvorni fajl kao što je prikazano.
source ~/.bashrc
source ~/.zshrc
source ~/.config/fish/config.fish
Kako koristiti direnv u Linux Shell-u
Da bismo demonstrirali kako direnv radi, kreirat ćemo novi direktorij pod nazivom tecmint_projects
i premjestiti se u njega.
mkdir ~/tecmint_projects
cd tecmint_projects/
Zatim, kreirajmo novu varijablu pod nazivom TEST_VARIABLE
u komandnoj liniji i kada se odjekne, vrijednost bi trebala biti prazna:
echo $TEST_VARIABLE
Sada ćemo kreirati novu datoteku .envrc
koja sadrži Bash kod koji će učitati direnv. Također pokušavamo dodati red “export the TEST_VARIABLE=tecmint” u njega koristeći naredbu echo i izlazni znak za preusmjeravanje (>)
:
echo export TEST_VARIABLE=tecmint > .envrc
Podrazumevano, sigurnosni mehanizam blokira učitavanje datoteke .envrc
. Pošto znamo da je sigurna datoteka, moramo odobriti njen sadržaj tako što ćemo pokrenuti sljedeću naredbu:
direnv allow .
Sada kada je sadržaj datoteke .envrc
dozvoljen za učitavanje, provjerimo vrijednost TEST_VARIABLE
koju smo postavili prije:
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
će se učitati kao što je prikazano na sljedećem snimku ekrana:
cd tecmint_projects/
Da opozovete autorizaciju datog .envrc
, koristite naredbu deny.
direnv deny . #in current directory
OR
direnv deny /path/to/.envrc
Za više informacija i uputstva za upotrebu, pogledajte direnv man stranicu:
man direnv
Osim toga, direnv također koristi stdlib (direnv-stdlib) koji dolazi s nekoliko funkcija koje vam omogućavaju da lako dodate nove direktorije u svoj PATHi uradite mnogo više.
Da biste pronašli dokumentaciju za sve dostupne funkcije, provjerite direnv-stdlib stranicu za ručni unos:
man direnv-stdlib
To je sve što smo imali za vas! Ako imate bilo kakvih pitanja ili razmišljanja koje možete podijeliti s nama, koristite obrazac za povratne informacije u nastavku.