Direnv - Pārvaldiet projektam raksturīgos vides mainīgos Linux


direnv ir izveicīgs atvērtā koda paplašinājums jūsu čaulai UNIX operētājsistēmā, piemēram, Linux un macOS. Tas ir apkopots vienā statiskā izpildāmā failā un atbalsta tādas čaulas kā bash, zsh, tcsh un zivis.

Direnv galvenais mērķis ir atļaut projektam raksturīgus vides mainīgos, nepārblīvējot ~/.profile vai saistītos čaulas starta failus. Tas ievieš jaunu veidu, kā ielādēt un izkraut vides mainīgos atkarībā no pašreizējā direktorija.

To izmanto, lai ielādētu 12 faktoru lietotnes (metodoloģija programmatūras kā pakalpojuma lietotņu izveidei) vides mainīgos, izveidotu katram projektam izolētas izstrādes vides un ielādēšanas noslēpumus. Turklāt to var izmantot, lai izveidotu vairāku versiju instalēšanas un pārvaldības risinājumus, kas līdzīgi rbenv, pyenv un phpenv.

Tātad, kā darbojas direnv?

Pirms čaulas ielādē komandu uzvedni, direnv pārbauda, vai pašreizējā (kuru varat parādīt, izmantojot komandu pwd) un vecāku direktorijā ir .envrc fails. Pārbaudes process ir ātrs, un to nevar pamanīt katrā uzvednē.

Atrodot failu .envrc ar atbilstošām atļaujām, tas tiek ielādēts bash apakškorpusā, un tas tver visus eksportētos mainīgos un padara tos pieejamus pašreizējai čaulai.

Direnv instalēšana Linux sistēmās

Lielākajā daļā Linux izplatījumu pakotni direnv var instalēt no noklusējuma krātuvēm, izmantojot sistēmas pakotņu pārvaldnieku, kā parādīts.

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

Citos izplatījumos, piemēram, Red Hat Enterprise Linux (RHEL) un CentOS vai jebkurā izplatīšanā, kas atbalsta jūsu sistēmā instalēto snapd.

$ sudo snap install direnv

Kā iestiprināt direnv savā Bash Shell

Pēc direnv instalēšanas tas jāpiestiprina pašreizējā Linux čaulā. Piemēram, Bash faila ~/.bashrc beigās pievienojiet šādu rindu.

Pārliecinieties, ka tas parādās pat pēc rvm, git-prompt un citiem čaulas paplašinājumiem, kas manipulē ar uzvedni.

eval "$(direnv hook bash)"

Pievienojiet šādu rindiņu faila ~/.zshrc beigās:

eval "$(direnv hook zsh)" 

Pievienojiet šo rindiņu faila ~/.config/fish/config.fish beigās:

eval (direnv hook fish)

Pēc tam aizveriet aktīvā termināla logu un atveriet jaunu apvalku vai avotu failu, kā parādīts.

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

Kā lietot direnv Linux čaulā

Lai parādītu, kā darbojas direnv, mēs izveidosim jaunu direktoriju ar nosaukumu tecmint_projects un pārvietosimies tajā.

$ mkdir ~/tecmint_projects
$ cd tecmint_projects/

Pēc tam komandrindā izveidosim jaunu mainīgo ar nosaukumu TEST_VARIABLE , un, kad tas tiek atbalsots, vērtībai jābūt tukšai:

$ echo $TEST_VARIABLE

Tagad mēs izveidosim jaunu .envrc failu, kas satur Bash kodu, kuru ielādēs direnv. Mēs arī mēģinām tajā pievienot rindu “eksportēt TEST_VARIABLE = tecmint”, izmantojot komandu echo un izvades novirzīšanas rakstzīmi (>) :

$ echo export TEST_VARIABLE=tecmint > .envrc

Pēc noklusējuma drošības mehānisms bloķē faila .envrc ielādi. Tā kā mēs zinām, ka tas ir drošs fails, mums ir jāapstiprina tā saturs, izpildot šādu komandu:

$ direnv allow .

Tagad, kad ir atļauts ielādēt faila .envr saturu, pārbaudīsim iepriekš iestatīto TEST_VARIABLE vērtību:

$ echo $TEST_VARIABLE

Kad iziesim no direktorija tecmint_project , direnv tiks izkrauta un, ja vēlreiz pārbaudīsim TEST_VARIABLE vērtību, tai jābūt tukšai:

$ cd ..
$ echo $TEST_VARIABLE

Katru reizi, kad pārvietojat direktorijā tecmint_projects, fails .envrc tiks ielādēts, kā parādīts šajā ekrānuzņēmumā:

$ cd tecmint_projects/

Lai atsauktu attiecīgā .envrc autorizāciju, izmantojiet komandu deny.

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

Plašāku informāciju un lietošanas instrukcijas skatiet direnv man lapā:

$ man direnv

Turklāt direnv izmanto arī stdlib (direnv-stdlib), kas aprīkots ar vairākām funkcijām, kas ļauj ērti pievienot jaunus direktorijus savam PATH un darīt daudz vairāk.

Lai atrastu visu pieejamo funkciju dokumentāciju, skatiet direnv-stdlib manuālās ievades lapu:

$ man direnv-stdlib

Tas ir viss, kas mums bija jums! Ja jums ir kādi jautājumi vai domas, ko dalīties ar mums, izmantojiet tālāk sniegto atsauksmju veidlapu.