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.