Direnv - Manage Project-Spezifical Environment Variables in Linux
direnv ass eng flott Open Source Extensioun fir Är Shell op engem UNIX Betribssystem wéi Linux a MacOS. Et ass an eng eenzeg statesch ausführbar kompiléiert an ënnerstëtzt Shells wéi Bash, zsh, tcsh, a Fësch.
Den Haaptzweck vum Direnv ass fir Projetspezifesch Ëmfeldvariablen z'erméiglechen ouni ~/.profile
oder verwandte Shell-Startupdateien ze räissen. Et implementéiert en neie Wee fir Ëmfeldvariablen ze lueden an ze lueden ofhängeg vum aktuellen Verzeechnes.
Et gëtt benotzt fir 12Factor Apps (eng Methodologie fir Software-as-a-Service Apps ze bauen) Ëmfeldvariablen ze lueden, pro-Projet isoléiert Entwécklungsëmfeld ze kreéieren, an och Geheimnisser fir d'Deployment ze lueden. Zousätzlech kann et benotzt ginn fir Multi-Versioun Installatioun a Gestiounsléisungen ähnlech wéi rbenv, pyenv a phpenv ze bauen.
Also Wéi funktionnéiert Direnv?
Ier d'Shell eng Kommandoprompt lued, kontrolléiert Direnv fir d'Existenz vun enger .envrc
-Datei an der aktueller (déi Dir mat dem pwd-Kommando affichéiert) an Elterenverzeechnes. De Kontrollprozess ass séier a kann net op all Ufro bemierkt ginn.
Wann et d'.envrc
-Datei mat de passenden Permissiounen fënnt, lued se se an eng Bash-Sub-Shell an et erfaasst all exportéiert Variablen a mécht se zur aktueller Shell zur Verfügung.
Direnv an Linux Systemer installéieren
An de meeschte Linux Verdeelungen ass den Direnv Package verfügbar fir aus de Standardrepositories ze installéieren mat Ärem System Package Manager wéi gewisen.
$ sudo apt install direnv #Debian,Ubuntu and Mint $ sudo dnf install direnv #Fedora
Op aner Verdeelungen wéi Red Hat Enterprise Linux (RHEL) an CentOS oder all Verdeelung déi snapd ënnerstëtzt op Ärem System installéiert.
$ sudo snap install direnv
Wéi Hook Direnv an Är Bash Shell
Nodeems Dir Direnv installéiert hutt, musst Dir se an Är aktuell Linux Shell haken. Zum Beispill fir Bash, füügt déi folgend Zeil um Enn vun der ~/.bashrc
Datei.
Vergewëssert Iech datt et och no rvm, git-Prompt an aner Shell-Extensiounen erschéngt, déi d'Prompt manipuléieren.
eval "$(direnv hook bash)"
Fügt déi folgend Zeil um Enn vun der ~/.zshrc
Datei un:
eval "$(direnv hook zsh)"
Fügt déi folgend Zeil um Enn vun der ~/.config/fish/config.fish
Datei un:
eval (direnv hook fish)
Da maacht déi aktiv Terminalfenster zou an öffnen eng nei Shell oder Quell d'Datei wéi gewisen.
$ source ~/.bashrc $ source ~/.zshrc $ source ~/.config/fish/config.fish
Wéi Dir Direnv an Linux Shell benotzt
Fir ze demonstréieren wéi Direnv funktionnéiert, erstellen mir en neie Verzeichnis mam Numm tecmint_projects
a plënneren an et.
$ mkdir ~/tecmint_projects $ cd tecmint_projects/
Als nächst, loosst eis eng nei Variabel mam Numm TEST_VARIABLE
op der Kommandozeilung erstellen a wann et gekloert gëtt, soll de Wäert eidel sinn:
$ echo $TEST_VARIABLE
Elo wäerte mir eng nei .envrc
Datei erstellen, déi Bash Code enthält, deen duerch direnv gelueden gëtt. Mir probéieren och d'Zeil \export the TEST_VARIABLE=tecmint\ dran ze addéieren mat dem Echo Kommando an dem Output Redirection Charakter (>)
:
$ echo export TEST_VARIABLE=tecmint > .envrc
Par défaut blockéiert de Sécherheetsmechanismus d'Luede vun der .envrc
Datei. Well mir wëssen datt et eng sécher Datei ass, musse mir säin Inhalt approuvéieren andeems Dir de folgende Kommando ausféiert:
$ direnv allow .
Elo datt den Inhalt vun .envrc
Datei erlaabt ass ze lueden, loosst eis de Wäert vun TEST_VARIABLE
kontrolléieren, dee mir virdru festgestallt hunn:
$ echo $TEST_VARIABLE
Wa mir de tecmint_project
Verzeichnis verloossen, gëtt den Direnv entluet a wa mir de Wäert vun TEST_VARIABLE
nach eng Kéier iwwerpréift, da sollt et eidel sinn:
$ cd .. $ echo $TEST_VARIABLE
All Kéier wann Dir an den tecmint_projects Verzeichnis plënnert, gëtt d'Datei .envrc
gelueden wéi am folgenden Screenshot gewisen:
$ cd tecmint_projects/
Fir d'Autorisatioun vun engem gegebene .envrc
z'erweideren, benotzt de deny Kommando.
$ direnv deny . #in current directory OR $ direnv deny /path/to/.envrc
Fir méi Informatioun a Gebrauchsinstruktiounen, kuckt d'direnv Man Säit:
$ man direnv
Zousätzlech benotzt direnv och e stdlib (direnv-stdlib) kënnt mat verschiddene Funktiounen, déi Iech erlaben einfach nei Verzeechnes op Äre PATH ze addéieren an esou vill méi ze maachen.
Fir d'Dokumentatioun fir all verfügbare Funktiounen ze fannen, kuckt d'direnv-stdlib manuell Entrée Säit:
$ man direnv-stdlib
Dat ass alles wat mir fir Iech haten! Wann Dir Froen oder Gedanken hutt fir mat eis ze deelen, benotzt de Feedbackformular hei ënnen.