Direnv - Jikwaa mgbanwe mgbanwe gburugburu ebe ọrụ akọwapụtara na Linux


direnv bụ ndọtị mepere emepe nke ọma maka shei gị na sistemụ arụmọrụ UNIX dị ka Linux na macOS. Achịkọtara ya n'ime otu static executable ma na-akwado shells dị ka bash, zsh, tcsh, na azụ.

Ebumnuche bụ isi nke direnv bụ inye ohere maka mgbanwe gburugburu ebe ọrụ akọwapụtara na-enweghị ntukọ ~/.profilema ọ bụ faịlụ mmalite shei metụtara. Ọ na-arụ ọrụ ọhụrụ iji budata na budata mgbanwe gburugburu ebe obibi dabere na ndekọ aha ugbu a.

A na-eji ya na-ebunye ngwa 12factor (usoro maka iwulite ngwa ngwa-dị ka ngwa ọrụ) mgbanwe gburugburu ebe obibi, mepụta gburugburu mmepe dịpụrụ adịpụ nke ọ bụla, ma na-ebukwa ihe nzuzo maka ibugharị. Na mgbakwunye, enwere ike iji ya wuo nrụnye ụdị dị iche iche na ngwọta njikwa dị ka rbenv, pyenv, na phpenv.

Yabụ kedu ka direnv si arụ ọrụ?

Tupu shei ahụ ebuo ngwa ngwa iwu, direnv na-enyocha ịdị adị nke faịlụ .envrc dị ugbu a (nke ị nwere ike igosipụta site na iji iwu pwd) yana ndekọ ndị nne na nna. Usoro nlele ahụ dị ngwa ma enweghị ike ịhụ ya na ngwa ngwa ọ bụla.

Ozugbo ọ chọtara faịlụ .envrc nwere ikike kwesịrị ekwesị, ọ na-ebuba ya na bash sub-shell wee weghara mgbanwe niile ebupụ ma mee ka ha dị na shei ugbu a.

Ịwụnye direnv na Linux Systems

N'ọtụtụ nkesa Linux, ngwugwu direnv dị maka ịwụnye site na ebe nchekwa ndabara site na iji njikwa ngwugwu sistemụ gị dịka egosiri.

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

Na nkesa ndị ọzọ dị ka Red Hat Enterprise Linux (RHEL) na CentOS ma ọ bụ nkesa ọ bụla na-akwado snapd arụnyere na sistemụ gị.

$ sudo snap install direnv

Otu esi ejikọta direnv n'ime bash Shell gị

Mgbe ị wụnye direnv, ịkwesịrị itinye ya na shei Linux gị ugbu a. Dịka ọmụmaatụ maka Bash, tinye ahịrị na-esote na njedebe nke faịlụ ~/.bashrc.

Gbaa mbọ hụ na ọ pụtara ọbụlagodi mgbe rvm, git-prompt na ndọtị shei ndị ọzọ na-emegharị ngwa ngwa.

eval "$(direnv hook bash)"

Tinye ahịrị ndị a na njedebe nke faịlụ ~/.zshrc:

eval "$(direnv hook zsh)" 

Tinye ahịrị na-esote na njedebe nke faịlụ ~/.config/fish/config.fish:

eval (direnv hook fish)

Mgbe ahụ mechie windo ọnụ ọnụ na-arụ ọrụ wee mepee shei ọhụrụ ma ọ bụ wepụta faịlụ dị ka egosiri.

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

Otu esi eji direnv na Linux Shell

Iji gosi ka direnv si arụ ọrụ, anyị ga-emepụta ndekọ ọhụrụ akpọrọ tecmint_projects wee banye na ya.

$ mkdir ~/tecmint_projects
$ cd tecmint_projects/

Na-esote, ka anyị mepụta mgbanwe ọhụrụ a na-akpọ TEST_VARIABLE n'ahịrị iwu na mgbe ọ na-emegharị ya, uru kwesịrị ịbụ ihe efu:

$ echo $TEST_VARIABLE

Ugbu a, anyị ga-emepụta faịlụ .envrc ọhụrụ nwere koodu Bash nke direnv ga-ebu. Anyị na-agbalịkwa itinye ahịrị \bupụ TEST_VARIABLE=tecmint n'ime ya site na iji iwu echo na agwa redirection (>):

$ echo export TEST_VARIABLE=tecmint > .envrc

Site na ndabara, usoro nchekwa na-egbochi nbudata faịlụ .envrc. Ebe anyị maara na ọ bụ faịlụ echekwara, anyị kwesịrị ịkwado ọdịnaya ya site na iji iwu a:

$ direnv allow .

Ugbu a ahapụla ọdịnaya nke .envrc faịlụ ka ibu, ka anyị lelee uru TEST_VARIABLE nke anyị debere na mbụ:

$ echo $TEST_VARIABLE

Mgbe anyị pụọ na ndekọ tecmint_project, a ga-ebutu direnv ma ọ bụrụ na anyị lelee uru TEST_VARIABLE ọzọ, ọ ga-abụ ihe efu:

$ cd ..
$ echo $TEST_VARIABLE

Oge ọ bụla ị banyere na ndekọ ndekọ tecmint_projects, a ga-ebunye faịlụ .envrc dị ka egosiri na nseta ihuenyo na-esonụ:

$ cd tecmint_projects/

Iji kagbuo ikike nke .envrc enyere, jiri iwu ngọnarị.

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

Maka ozi ndị ọzọ na ntuziaka ojiji, lee direnv man page:

$ man direnv

Na mgbakwunye, direnv na-ejikwa stdlib (direnv-stdlib) na-abịa na ọtụtụ ọrụ na-enye gị ohere itinye akwụkwọ ntuziaka ọhụrụ na PATH gị ngwa ngwa wee mee ọtụtụ ihe ndị ọzọ.

Iji chọta akwụkwọ maka ọrụ niile dị, lelee ibe ntinye akwụkwọ ntuziaka direnv-stdlib:

$ man direnv-stdlib

Nke ahụ bụ naanị ihe anyị nwere maka gị! Ọ bụrụ na ị nwere ajụjụ ọ bụla ma ọ bụ echiche ị ga-ekerịta anyị, jiri ụdị nzaghachi n'okpuru.