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.