Direnv - Gestionar les variables d'entorn específiques del projecte a Linux
direnv és una enginyosa extensió de codi obert per al vostre shell en un sistema operatiu UNIX com Linux i macOS. Es compila en un únic executable estàtic i admet shells com bash, zsh, tcsh i fish.
El propòsit principal de direnv és permetre variables d'entorn específiques del projecte sense desordenar ~/.profile
o els fitxers d'inici de l'intèrpret d'ordres relacionats. Implementa una nova manera de carregar i descarregar variables d'entorn en funció del directori actual.
S'utilitza per carregar variables d'entorn aplicacions de 12 factors (una metodologia per crear aplicacions de programari com a servei), crear entorns de desenvolupament aïllats per projecte i també carregar secrets per al desplegament. A més, es pot utilitzar per crear solucions de gestió i instal·lació multiversió similars a rbenv, pyenv i phpenv.
Llavors, com funciona direnv?
Abans que l'intèrpret de comandaments carregui un indicador d'ordres, direnv comprova l'existència d'un fitxer .envrc
al directori principal i actual (que podeu mostrar amb l'ordre pwd). El procés de comprovació és ràpid i no es pot notar a cada indicació.
Un cop troba el fitxer .envrc
amb els permisos adequats, el carrega en una subintèrpret d'ordres bash i captura totes les variables exportades i les posa a disposició de l'intèrpret d'ordres actual.
Instal·lació de direnv en sistemes Linux
A la majoria de les distribucions de Linux, el paquet direnv està disponible per instal·lar-se des dels repositoris predeterminats mitjançant el gestor de paquets del sistema, tal com es mostra.
$ sudo apt install direnv #Debian,Ubuntu and Mint $ sudo dnf install direnv #Fedora
En altres distribucions com Red Hat Enterprise Linux (RHEL) i CentOS o qualsevol distribució que admeti snapd instal·lat al vostre sistema.
$ sudo snap install direnv
Com connectar direnv al vostre Bash Shell
Després d'instal·lar direnv, heu de connectar-lo al vostre shell de Linux actual. Per exemple, per a Bash, afegiu la línia següent al final del fitxer ~/.bashrc
.
Assegureu-vos que aparegui fins i tot després de rvm, git-prompt i altres extensions d'intèrpret d'ordres que manipulin l'indicador.
eval "$(direnv hook bash)"
Afegiu la línia següent al final del fitxer ~/.zshrc
:
eval "$(direnv hook zsh)"
Afegiu la línia següent al final del fitxer ~/.config/fish/config.fish
:
eval (direnv hook fish)
A continuació, tanqueu la finestra de terminal activa i obriu un nou intèrpret d'ordres o origen del fitxer tal com es mostra.
$ source ~/.bashrc $ source ~/.zshrc $ source ~/.config/fish/config.fish
Com utilitzar direnv a Linux Shell
Per demostrar com funciona direnv, crearem un nou directori anomenat tecmint_projects
i hi passarem.
$ mkdir ~/tecmint_projects $ cd tecmint_projects/
A continuació, creem una nova variable anomenada TEST_VARIABLE
a la línia d'ordres i, quan es fa ressò, el valor hauria d'estar buit:
$ echo $TEST_VARIABLE
Ara crearem un nou fitxer .envrc
que contingui codi Bash que serà carregat per direnv. També intentem afegir-hi la línia \export the TEST_VARIABLE=tecmint mitjançant l'ordre echo i el caràcter de redirecció de sortida (>)
:
$ echo export TEST_VARIABLE=tecmint > .envrc
Per defecte, el mecanisme de seguretat bloqueja la càrrega del fitxer .envrc
. Com que sabem que és un fitxer segur, hem d'aprovar-ne el contingut executant l'ordre següent:
$ direnv allow .
Ara que s'ha permès carregar el contingut del fitxer .envrc
, comprovem el valor de TEST_VARIABLE
que hem establert abans:
$ echo $TEST_VARIABLE
Quan sortim del directori tecmint_project
, el direnv es descarregarà i si tornem a comprovar el valor de TEST_VARIABLE
, hauria d'estar buit:
$ cd .. $ echo $TEST_VARIABLE
Cada vegada que us moveu al directori tecmint_projects, el fitxer .envrc
es carregarà tal com es mostra a la següent captura de pantalla:
$ cd tecmint_projects/
Per revocar l'autorització d'un determinat .envrc
, utilitzeu l'ordre deny.
$ direnv deny . #in current directory OR $ direnv deny /path/to/.envrc
Per obtenir més informació i instruccions d'ús, consulteu la pàgina de manual direnv:
$ man direnv
A més, direnv també utilitza un stdlib (direnv-stdlib) que inclou diverses funcions que us permeten afegir fàcilment nous directoris al vostre PATH i fer molt més.
Per trobar la documentació de totes les funcions disponibles, consulteu la pàgina d'entrada manual direnv-stdlib:
$ man direnv-stdlib
Això és tot el que teníem per a tu! Si teniu cap pregunta o pensament per compartir amb nosaltres, utilitzeu el formulari de comentaris que trobareu a continuació.