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ą.