Direnv - Hallitse projektikohtaisia ympäristömuuttujia Linuxissa


direnv on näppärä avoimen lähdekoodin laajennus kuorillesi UNIX-käyttöjärjestelmässä, kuten Linuxissa ja macOS:ssä. Se on käännetty yhdeksi staattiseksi suoritettavaksi tiedostoksi ja tukee komentotulkoja, kuten bash, zsh, tcsh ja fish.

direnv:n päätarkoitus on sallia projektikohtaiset ympäristömuuttujat ilman, että ~/.profile tai siihen liittyvät shell-käynnistystiedostot sotkeutuvat. Se toteuttaa uuden tavan ladata ja poistaa ympäristömuuttujia nykyisestä hakemistosta riippuen.

Sitä käytetään 12-tekijän sovellusten (metodologia ohjelmisto-as-a-service -sovellusten rakentamiseen) ympäristömuuttujien lataamiseen, projektikohtaisten eristettyjen kehitysympäristöjen luomiseen ja myös salaisuuksien lataamiseen käyttöönottoa varten. Lisäksi sitä voidaan käyttää useiden versioiden asennus- ja hallintaratkaisujen rakentamiseen, jotka ovat samanlaisia kuin rbenv, pyenv ja phpenv.

Joten miten direnv toimii?

Ennen kuin komentotulkki lataa komentokehotteen, direnv tarkistaa, onko .envrc-tiedosto nykyisessä (jotka voit näyttää pwd-komennolla) ja päähakemistossa. Tarkastusprosessi on nopea, eikä sitä voi havaita jokaisessa kehotteessa.

Kun se löytää .envrc-tiedoston, jolla on tarvittavat oikeudet, se lataa sen bash-alikuoreen ja kaappaa kaikki viedyt muuttujat ja asettaa ne nykyisen kuoren saataville.

Direnv:n asentaminen Linux-järjestelmiin

Useimmissa Linux-jakeluissa direnv-paketti on asennettavissa oletusvarastoista käyttämällä järjestelmäpakettien hallintaa kuvan mukaisesti.

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

Muissa jakeluissa, kuten Red Hat Enterprise Linux (RHEL) ja CentOS tai missä tahansa jakelussa, joka tukee snapsia, voit asentaa sen >napsauttaa. Tämä edellyttää, että snapd on asennettu järjestelmään.

sudo snap install direnv

Kuinka kytkeä direnv Bash Shelliisi

Kun olet asentanut direnv-sovelluksen, sinun on kytkettävä se nykyiseen Linux-kuoreseesi. Esimerkiksi Bash:lle lisää seuraava rivi ~/.bashrc-tiedoston loppuun.

Varmista, että se näkyy myös rvm-, git-prompt- ja muiden komentotulkkilaajennusten jälkeen, jotka käsittelevät kehotetta.

eval "$(direnv hook bash)"

ZSH Shellille

Liitä seuraava rivi ~/.zshrc-tiedoston loppuun:

eval "$(direnv hook zsh)" 

FISH Shellille

Liitä seuraava rivi ~/.config/fish/config.fish-tiedoston loppuun:

eval (direnv hook fish)

Sulje sitten aktiivinen pääteikkuna ja avaa uusi komentotulkki tai lähde tiedostosta kuvan mukaisesti.

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

Direnv:n käyttäminen Linux Shellissä

Osoittaaksemme, miten direnv toimii, luomme uuden hakemiston nimeltä tecmint_projects ja siirrymme siihen.

mkdir ~/tecmint_projects
cd tecmint_projects/

Luodaan seuraavaksi komentoriville uusi muuttuja nimeltä TEST_VARIABLE ja kun se kaiutetaan, arvon tulee olla tyhjä:

echo $TEST_VARIABLE

Nyt luomme uuden .envrc-tiedoston, joka sisältää Bash-koodin, jonka direnv lataa. Yritämme myös lisätä siihen rivin "export the TEST_VARIABLE=tecmint" käyttämällä echo-komentoa ja tulosteen uudelleenohjausmerkkiä (>):

echo export TEST_VARIABLE=tecmint > .envrc

Oletusarvoisesti suojausmekanismi estää .envrc-tiedoston lataamisen. Koska tiedämme sen olevan suojattu tiedosto, meidän on hyväksyttävä sen sisältö suorittamalla seuraava komento:

direnv allow .

Nyt kun .envrc-tiedoston sisällön on sallittu latautua, tarkistetaan aiemmin asettamamme TEST_VARIABLE-arvo:

echo $TEST_VARIABLE

Kun poistumme hakemistosta tecmint_project, direnv puretaan, ja jos tarkistamme TEST_VARIABLE-arvon vielä kerran, sen pitäisi olla tyhjä:

cd ..
echo $TEST_VARIABLE

Aina kun siirryt tecmint_projects-hakemistoon, .envrc-tiedosto ladataan seuraavan kuvakaappauksen mukaisesti:

cd tecmint_projects/

Voit peruuttaa tietyn .envrc-luvan käyttämällä deny-komentoa.

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

Lisätietoja ja käyttöohjeita on direnv -manuaalisivulla:

man direnv

Lisäksi direnv käyttää myös stdlib-tiedostoa (direnv-stdlib), joka sisältää useita toimintoja, joiden avulla voit helposti lisätä uusia hakemistoja PATH ja tee paljon muuta.

Löydät kaikkien käytettävissä olevien toimintojen dokumentaation direnv-stdlib manuaalisen syöttösivun:

man direnv-stdlib

Siinä kaikki, mitä meillä oli sinulle! Jos sinulla on kysyttävää tai ajatuksia jakaa kanssamme, käytä alla olevaa palautelomaketta.