Direnv – valdykite projektui būdingus aplinkos kintamuosius sistemoje Linux
direnv yra puikus atvirojo kodo plėtinys jūsų apvalkalui UNIX operacinėse sistemose, pvz., „Linux“ ir „MacOS“. Jis sukompiliuotas į vieną statinį vykdomąjį failą ir palaiko apvalkalus, tokius kaip bash, zsh, tcsh ir fish.
Pagrindinis direnv tikslas – leisti naudoti konkrečiam projektui būdingus aplinkos kintamuosius neužgriozdinant ~/.profile
ar susijusių apvalkalo paleisties failų. Tai įgyvendina naują būdą įkelti ir iškrauti aplinkos kintamuosius, atsižvelgiant į dabartinį katalogą.
Jis naudojamas 12 faktorių programoms (programinės įrangos kaip paslaugos programų kūrimo metodika) aplinkos kintamiesiems įkelti, projekto izoliuotai kūrimo aplinkai kurti ir paslaptims įkelti diegimui. Be to, jį galima naudoti kuriant kelių versijų diegimo ir valdymo sprendimus, panašius į rbenv, pyenv ir phpenv.
Taigi, kaip veikia direnv?
Prieš apvalkalui įkeliant komandų eilutę, direnv patikrina, ar esamame (kurį galite rodyti naudodami komandą pwd) ir pirminiame kataloge .envrc
failas. Tikrinimo procesas yra greitas ir jo negalima pastebėti kiekviename raginime.
Suradęs .envrc
failą su atitinkamais leidimais, jis įkelia jį į bash antrinį apvalkalą ir užfiksuoja visus eksportuotus kintamuosius ir padaro juos prieinamus dabartiniam apvalkalui.
Direnv diegimas Linux sistemose
Daugumoje „Linux“ paskirstymų paketą direnv galima įdiegti iš numatytųjų saugyklų naudojant sistemos paketų tvarkyklę, kaip parodyta.
sudo apt install direnv #Debian,Ubuntu and Mint
sudo dnf install direnv #Fedora
Kituose platinimuose, pvz., Red Hat Enterprise Linux (RHEL) ir CentOS arba bet kuriame paskirstyme, kuris palaiko snaps, galite jį įdiegti kaip >užfiksuoti. Tam reikia, kad jūsų sistemoje būtų įdiegtas snapd.
sudo snap install direnv
Kaip prijungti direnv į „Bash Shell“.
Įdiegę direnv, turite jį prijungti prie dabartinio „Linux“ apvalkalo. Pavyzdžiui, Bash, pridėkite šią eilutę failo ~/.bashrc
pabaigoje.
Įsitikinkite, kad jis rodomas net po rvm, git-prompt ir kitų apvalkalo plėtinių, kurie manipuliuoja raginimu.
eval "$(direnv hook bash)"
Dėl ZSH Shell
Pridėkite šią eilutę ~/.zshrc
failo pabaigoje:
eval "$(direnv hook zsh)"
Skirta FISH Shell
Failo ~/.config/fish/config.fish
pabaigoje pridėkite šią eilutę:
eval (direnv hook fish)
Tada uždarykite aktyvų terminalo langą ir atidarykite naują apvalkalą arba gaukite failą, kaip parodyta.
source ~/.bashrc
source ~/.zshrc
source ~/.config/fish/config.fish
Kaip naudoti direnv „Linux Shell“.
Norėdami parodyti, kaip veikia direnv, sukursime naują katalogą pavadinimu tecmint_projects
ir į jį persikelsime.
mkdir ~/tecmint_projects
cd tecmint_projects/
Tada komandinėje eilutėje sukurkime naują kintamąjį, pavadintą TEST_VARIABLE
, o kai jis kartojasi, reikšmė turi būti tuščia:
echo $TEST_VARIABLE
Dabar sukursime naują .envrc
failą, kuriame yra „Bash“ kodas, kurį įkels direnv. Taip pat bandome į ją įtraukti eilutę „export the TEST_VARIABLE=tecmint“ naudodami komandą echo ir išvesties peradresavimo simbolį (>)
:
echo export TEST_VARIABLE=tecmint > .envrc
Pagal numatytuosius nustatymus saugos mechanizmas blokuoja .envrc
failo įkėlimą. Kadangi žinome, kad tai saugus failas, turime patvirtinti jo turinį vykdydami šią komandą:
direnv allow .
Dabar, kai buvo leista įkelti failo .envrc
turinį, patikrinkime TEST_VARIABLE
reikšmę, kurią nustatėme anksčiau:
echo $TEST_VARIABLE
Kai išeisime iš tecmint_project
katalogo, direnv bus iškrautas ir, jei dar kartą patikrinsime TEST_VARIABLE
reikšmę, ji turėtų būti tuščia:
cd ..
echo $TEST_VARIABLE
Kiekvieną kartą, kai pereinate į tecmint_projects katalogą, .envrc
failas bus įkeltas, kaip parodyta šioje ekrano kopijoje:
cd tecmint_projects/
Norėdami atšaukti nurodyto .envrc
įgaliojimą, naudokite komandą neleisti.
direnv deny . #in current directory
OR
direnv deny /path/to/.envrc
Daugiau informacijos ir naudojimo instrukcijų rasite direnv vadovo puslapyje:
man direnv
Be to, direnv taip pat naudoja stdlib (direnv-stdlib) su keliomis funkcijomis, kurios leidžia lengvai pridėti naujų katalogų prie PATHir padaryti daug daugiau.
Norėdami rasti visų galimų funkcijų dokumentaciją, patikrinkite direnv-stdlib rankinio įvedimo puslapį:
man direnv-stdlib
Tai viskas, ką turėjome jums! Jei turite klausimų ar minčių, kuriais norite pasidalinti su mumis, naudokite toliau pateiktą atsiliepimų formą.