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ó.