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.