Direnv - Immaniġġja Varjabbli Ambjentali Speċifiċi għall-Proġett fil-Linux


direnv hija estensjoni nifty open-source għall-qoxra tiegħek fuq sistema operattiva UNIX bħal Linux u macOS. Huwa miġbur f'eżekutibbli statiku wieħed u jappoġġja qxur bħal bash, zsh, tcsh, u fish.

L-iskop ewlieni ta' direnv huwa li jippermetti varjabbli ambjentali speċifiċi għall-proġett mingħajr ma jħoll ~/.profile jew fajls tal-istartjar tal-qoxra relatati. Jimplimenta mod ġdid biex jgħabbi u jinħattu varjabbli ambjentali skont id-direttorju attwali.

Jintuża biex jgħabbi varjabbli ambjentali ta' apps 12factor (metodoloġija għall-bini ta' software-as-a-service), toħloq ambjenti ta' żvilupp iżolati għal kull proġett, u wkoll tagħbija sigrieti għall-iskjerament. Barra minn hekk, jista 'jintuża biex jinbnew soluzzjonijiet ta' installazzjoni u ġestjoni b'diversi verżjoni simili għal rbenv, pyenv, u phpenv.

Allura Kif Jaħdem direnv?

Qabel ma l-qoxra jgħabbi pront ta' kmand, direnv jiċċekkja għall-eżistenza ta' fajl .envrc fid-direttorju kurrenti (li tista' turi bl-użu tal-kmand pwd) u parent. Il-proċess tal-iċċekkjar huwa mgħaġġel u ma jistax jiġi nnutat fuq kull pront.

Ladarba jsib il-fajl .envrc bil-permessi xierqa, jgħabbih f'sub-shell bash u jaqbad il-varjabbli esportati kollha u jagħmilhom disponibbli għall-qoxra attwali.

Installazzjoni direnv fis-Sistemi Linux

Fil-biċċa l-kbira tad-distribuzzjonijiet tal-Linux, il-pakkett direnv huwa disponibbli biex jiġi installat mir-repożitorji default billi tuża l-maniġer tal-pakkett tas-sistema tiegħek kif muri.

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

Fuq distribuzzjonijiet oħra bħal Red Hat Enterprise Linux (RHEL) u CentOS jew kwalunkwe distribuzzjoni li tappoġġja snapd installat fis-sistema tiegħek.

$ sudo snap install direnv

Kif Hook direnv fil-Bash Shell Tiegħek

Wara li tinstalla direnv, għandek bżonn tgħaqqadha fil-qoxra attwali tal-Linux tiegħek. Per eżempju għal Bash, żid il-linja li ġejja fl-aħħar tal-fajl ~/.bashrc.

Kun żgur li jidher anke wara rvm, git-prompt, u estensjonijiet oħra tal-qoxra li jimmanipulaw il-pront.

eval "$(direnv hook bash)"

Ehmeż il-linja li ġejja fl-aħħar tal-fajl ~/.zshrc:

eval "$(direnv hook zsh)" 

Ehmeż il-linja li ġejja fl-aħħar tal-fajl ~/.config/fish/config.fish:

eval (direnv hook fish)

Imbagħad agħlaq it-tieqa tat-terminal attiva u tiftaħ qoxra ġdida jew sors il-fajl kif muri.

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

Kif tuża direnv fil-Linux Shell

Biex nuru kif jaħdem direnv, aħna se noħolqu direttorju ġdid imsejjaħ tecmint_projects u nimxu fih.

$ mkdir ~/tecmint_projects
$ cd tecmint_projects/

Sussegwentement, ejja noħolqu varjabbli ġdida msejħa TEST_VARIABLE fuq il-linja tal-kmand u meta ssir eku, il-valur għandu jkun vojt:

$ echo $TEST_VARIABLE

Issa se noħolqu fajl .envrc ġdid li fih kodiċi Bash li se jitgħabba minn direnv. Nippruvaw inżidu wkoll il-linja \esporta t-TEST_VARIABLE=tecmint fiha billi tuża l-kmand tal-echo u l-karattru ta' direzzjoni mill-ġdid tal-output (>):

$ echo export TEST_VARIABLE=tecmint > .envrc

B'mod awtomatiku, il-mekkaniżmu tas-sigurtà jimblokka t-tagħbija tal-fajl .envrc. Peress li nafu li huwa fajl sigur, irridu napprovaw il-kontenut tiegħu billi nħaddmu l-kmand li ġej:

$ direnv allow .

Issa li l-kontenut tal-fajl .envrc tħalla jgħabbi, ejja niċċekkjaw il-valur ta' TEST_VARIABLE li ssettjajna qabel:

$ echo $TEST_VARIABLE

Meta noħorġu mid-direttorju tecmint_project, id- direnv jinħatt u jekk niċċekkjaw il-valur ta' TEST_VARIABLE għal darb'oħra, għandu jkun vojt:

$ cd ..
$ echo $TEST_VARIABLE

Kull darba li tiċċaqlaq fid-direttorju tecmint_projects, il-fajl .envrc jitgħabba kif muri fil-screenshot li ġej:

$ cd tecmint_projects/

Biex tirrevoka l-awtorizzazzjoni ta' .envrc partikolari, uża l-kmand deny.

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

Għal aktar informazzjoni u istruzzjonijiet dwar l-użu, ara l-paġna man direnv:

$ man direnv

Barra minn hekk, direnv juża wkoll stdlib (direnv-stdlib) jiġi b'diversi funzjonijiet li jippermettulek faċilment iżżid direttorji ġodda mal-PATH tiegħek u tagħmel ħafna aktar.

Biex issib id-dokumentazzjoni għall-funzjonijiet kollha disponibbli, iċċekkja l-paġna tad-dħul manwali direnv-stdlib:

$ man direnv-stdlib

Dak kollu kellna għalik! Jekk għandek xi mistoqsijiet jew ħsibijiet x'taqsam magħna, uża l-formola ta' feedback hawn taħt.