Direnv - Linux-da taslama aýratyn gurşaw üýtgeýjilerini dolandyryň


direnv, Linux we macOS ýaly UNIX operasiýa ulgamynda gabygyňyz üçin elli açyk çeşme. Stateke-täk statiki ýerine ýetirilip bilner we bash, zsh, tcsh we balyk ýaly gabyklary goldaýar.

Direnv-iň esasy maksady, ~/.profile ýa-da şoňa degişli gabyk başlangyç faýllaryny gysmazdan taslama aýratyn gurşaw üýtgeýjilerine rugsat bermekdir. Häzirki kataloga baglylykda daşky gurşaw üýtgeýjilerini ýüklemegiň we düşürmegiň täze usuly bar.

12 faktorly programmalary (programma üpjünçiligi-hyzmat ediş programmalaryny gurmagyň usulyýeti) daşky gurşaw üýtgeýjilerini ýüklemek, taslama boýunça izolirlenen ösüş gurşawyny döretmek we ýerleşdirmegiň syrlaryny ýüklemek üçin ulanylýar. Mundan başga-da, rbenv, pyenv we phpenv ýaly köp wersiýaly gurnama we dolandyryş çözgütlerini gurmak üçin ulanylyp bilner.

Direnv nähili işleýär?

Gabyk buýruk görkezmesini ýüklemezden ozal, direnv tokda (pwd buýrugyny ulanyp görkezip bilersiňiz) we ene katalogynda .envrc faýlynyň bardygyny barlaýar. Barlamak prosesi çalt we her haýyşda üns berilmeýär.

Degişli rugsatlar bilen .envrc faýly tapylansoň, ony baş kiçi gabyň içine ýükleýär we eksport edilen ähli üýtgeýänleri ele alýar we häzirki gabykda elýeterli edýär.

Linux ulgamlarynda direnv gurmak

Linux paýlamalarynyň köpüsinde direnv bukjasy, görkezilişi ýaly ulgam paket dolandyryjyňyzy ulanyp, adaty ammarlardan gurmak üçin elýeterlidir.

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

Red Hat Enterprise Linux (RHEL) we CentOS ýaly beýleki paýlamalarda ýa-da ulgamyňyzda gurnalan snapdy goldaýan islendik paýlamada.

$ sudo snap install direnv

Baş gabygyňyza direnw nädip girmeli

Direnv guranyňyzdan soň, ony häzirki Linux gabygyna dakmaly. Mysal üçin Baş üçin, ~/.bashrc faýlynyň soňuna aşakdaky setiri goşuň.

Rvm, git-prompt we haýyşy dolandyrýan beýleki gabyk giňeltmelerinden soň hem peýda bolýandygyna göz ýetiriň.

eval "$(direnv hook bash)"

Aşakdaky setiri ~/.zshrc faýlynyň soňuna goşuň:

eval "$(direnv hook zsh)" 

Aşakdaky setiri ~/.config/fish/config.fish faýlynyň soňuna goşuň:

eval (direnv hook fish)

Soňra işjeň terminal penjiresini ýapyň we täze gabyny açyň ýa-da görkezilişi ýaly faýly çeşme ediň.

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

Linux Shell-de direnv nädip ulanmaly

Direnv-iň nähili işleýändigini görkezmek üçin, tecmint_projects atly täze katalog dörederis we oňa geçeris.

$ mkdir ~/tecmint_projects
$ cd tecmint_projects/

Indiki, buýruk setirinde TEST_VARIABLE atly täze üýtgeýjini döredeliň we ol gaýtalananda bahasy boş bolmaly:

$ echo $TEST_VARIABLE

Indi direnv tarapyndan ýüklenjek Baş kody öz içine alýan täze .envrc faýly dörederis. Şeýle hem, echo buýrugyny we çykyş gönükdirme nyşany (>) ulanyp, içindäki TEST_VARIABLE=tecmint eksport setirini goşmaga synanyşýarys.

$ echo export TEST_VARIABLE=tecmint > .envrc

Düzgüne görä, howpsuzlyk mehanizmi .envrc faýlynyň ýüklenmegini bökdeýär. Ygtybarly faýl bilýändigimiz üçin, aşakdaky buýrugy işledip, mazmunyny tassyklamaly:

$ direnv allow .

Indi .envrc faýlynyň mazmuny ýüklenmäge rugsat berlensoň, geliň öň bellän TEST_VARIABLE bahasyny barlap göreliň:

$ echo $TEST_VARIABLE

tecmint_project katalogyndan çykanymyzda direnv düşüriler we TEST_VARIABLE bahasyny ýene bir gezek barlasak, boş bolmaly:

$ cd ..
$ echo $TEST_VARIABLE

Her gezek tecmint_projects katalogyna geçeniňizde, .envrc faýly aşakdaky skrinshotda görkezilişi ýaly ýüklener:

$ cd tecmint_projects/

Berlen .envrc ygtyýarnamasyny ýatyrmak üçin inkär buýrugyny ulanyň.

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

Has giňişleýin maglumat we ulanyş görkezmeleri üçin direnv adam sahypasyna serediň:

$ man direnv

Mundan başga-da, direnv stdlib-i ulanýar (direnv-stdlib), PATH-a täze kataloglary aňsatlyk bilen goşmaga we başga-da köp zatlary etmäge mümkinçilik berýän birnäçe funksiýa bilen gelýär.

Availablehli elýeterli funksiýalar üçin resminamalary tapmak üçin direnv-stdlib el bilen giriş sahypasyna göz aýlaň:

$ man direnv-stdlib

Bu siziň üçin bar zat! Biziň bilen paýlaşmak üçin soraglaryňyz ýa-da pikirleriňiz bar bolsa, aşakdaky jogap görnüşini ulanyň.