Weboldal keresés

Direnv – Projektspecifikus környezeti változók kezelése Linuxban


A direnv egy remek, nyílt forráskódú kiterjesztés UNIX operációs rendszereken, például Linuxon és macOS-en. Egyetlen statikus végrehajtható fájlba van fordítva, és támogatja az olyan parancsértelmezőket, mint a bash, zsh, tcsh és a fish.

A direnv fő célja, hogy lehetővé tegye projekt-specifikus környezeti változók használatát a ~/.profile vagy a kapcsolódó shell indítófájlok zsúfoltsága nélkül. Új módot valósít meg a környezeti változók betöltésére és eltávolítására az aktuális könyvtártól függően.

12faktoros alkalmazások (a szoftver-as-a-service alkalmazások létrehozásának módszere) környezeti változók betöltésére, projektenként izolált fejlesztői környezetek létrehozására, valamint a telepítéshez szükséges titkok betöltésére szolgál. Ezenkívül több verziójú telepítési és felügyeleti megoldások készítésére is használható, amelyek hasonlóak az rbenv-hez, a pyenv-hez és a phpenv-hez.

Tehát hogyan működik a direnv?

Mielőtt a shell betölt egy parancssort, a direnv ellenőrzi, hogy van-e .envrc fájl az aktuális (amelyet a pwd paranccsal jeleníthet meg) és a szülőkönyvtárban. Az ellenőrzési folyamat gyors, és nem lehet minden felszólításnál észrevenni.

Miután megtalálta a megfelelő jogosultságokkal rendelkező .envrc fájlt, betölti egy bash-alhéjba, és rögzíti az összes exportált változót, és elérhetővé teszi az aktuális shell számára.

A direnv telepítése Linux rendszerekben

A legtöbb Linux-disztribúcióban a direnv csomag telepíthető az alapértelmezett tárolókból a rendszercsomagkezelő használatával, ahogy az ábra mutatja.

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

Más disztribúciókon, mint például a Red Hat Enterprise Linux (RHEL) és a CentOS vagy bármely olyan disztribúció, amely támogatja a snap-eket, telepítheti >pattanásra. Ehhez a snapd telepítve kell lennie a rendszeren.

sudo snap install direnv

Hogyan akassza be a direnv-t a Bash Shell-be

A direnv telepítése után csatlakoztatnia kell a jelenlegi Linux rendszerhéjhoz. Például a Bash esetén adja hozzá a következő sort a ~/.bashrc fájl végéhez.

Győződjön meg arról, hogy az rvm, git-prompt és más, a promptot kezelő shell-bővítmények után is megjelenik.

eval "$(direnv hook bash)"

A ZSH Shell számára

Illessze a következő sort a ~/.zshrc fájl végéhez:

eval "$(direnv hook zsh)" 

FISH Shellhez

Illessze a következő sort a ~/.config/fish/config.fish fájl végéhez:

eval (direnv hook fish)

Ezután zárja be az aktív terminálablakot, és nyisson meg egy új parancsértelmezőt vagy forráskódot a fájlból az ábrán látható módon.

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

A direnv használata Linux Shellben

A direnv működésének bemutatására létrehozunk egy új könyvtárat tecmint_projects néven, és belépünk abba.

mkdir ~/tecmint_projects
cd tecmint_projects/

Ezután hozzunk létre egy új változót TEST_VARIABLE néven a parancssorban, és amikor visszhangzik, az értéknek üresnek kell lennie:

echo $TEST_VARIABLE

Most létrehozunk egy új .envrc fájlt, amely tartalmazza a Bash kódot, amelyet a direnv tölt be. Megpróbáljuk hozzáadni az „export the TEST_VARIABLE=tecmint ” sort is az echo paranccsal és a (>) kimeneti átirányítási karakterrel:

echo export TEST_VARIABLE=tecmint > .envrc

Alapértelmezés szerint a biztonsági mechanizmus blokkolja az .envrc fájl betöltését. Mivel tudjuk, hogy biztonságos fájl, jóvá kell hagynunk a tartalmát a következő parancs futtatásával:

direnv allow .

Most, hogy az .envrc fájl tartalma betöltődött, nézzük meg a TEST_VARIABLE értékét, amelyet korábban beállítottunk:

echo $TEST_VARIABLE

Amikor kilépünk a tecmint_project könyvtárból, a direnv betöltődik, és ha még egyszer ellenőrizzük a TEST_VARIABLE értékét, akkor üresnek kell lennie:

cd ..
echo $TEST_VARIABLE

Minden alkalommal, amikor a tecmint_projects könyvtárba lép, az .envrc fájl betöltődik, ahogy az a következő képernyőképen látható:

cd tecmint_projects/

Egy adott .envrc engedélyének visszavonásához használja a deny parancsot.

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

További információkért és használati utasításokért tekintse meg a direnv kézikönyvoldalt:

man direnv

Ezenkívül a direnv egy stdlib-et is használ (direnv-stdlib), amely számos olyan funkcióval rendelkezik, amelyek lehetővé teszik új könyvtárak egyszerű hozzáadását a PATHt és még sok minden mást.

Az összes elérhető funkció dokumentációjának megtalálásához tekintse meg a direnv-stdlib kézi beviteli oldalt:

man direnv-stdlib

Ennyit adtunk neked! Ha bármilyen kérdése vagy gondolata van, amit megosztana velünk, használja az alábbi visszajelzési űrlapot.