Recherche de site Web

Direnv - Gérer les variables d'environnement spécifiques au projet sous Linux


direnv est une astucieuse extension open source pour votre shell sur un système d'exploitation UNIX tel que Linux et macOS. Il est compilé en un seul exécutable statique et prend en charge les shells tels que bash, zsh, tcsh et fish.

L'objectif principal de direnv est d'autoriser les variables d'environnement spécifiques au projet sans encombrer ~/.profile ou les fichiers de démarrage du shell associés. Il implémente une nouvelle façon de charger et décharger les variables d'environnement en fonction du répertoire courant.

Il est utilisé pour charger des variables d'environnement d'applications 12factor (une méthodologie permettant de créer des applications logicielles en tant que service), créer des environnements de développement isolés par projet et également charger des secrets pour le déploiement. De plus, il peut être utilisé pour créer des solutions d'installation et de gestion multiversions similaires à rbenv, pyenv et phpenv.

Alors, comment fonctionne direnv ?

Avant que le shell ne charge une invite de commande, direnv vérifie l'existence d'un fichier .envrc dans le répertoire actuel (que vous pouvez afficher à l'aide de la commande pwd) et parent. Le processus de vérification est rapide et ne peut pas être remarqué à chaque invite.

Une fois qu'il a trouvé le fichier .envrc avec les autorisations appropriées, il le charge dans un sous-shell bash et capture toutes les variables exportées et les met à la disposition du shell actuel.

Installation de direnv sur les systèmes Linux

Dans la plupart des distributions Linux, le package direnv peut être installé à partir des référentiels par défaut à l'aide de votre gestionnaire de packages système, comme indiqué.

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

Sur d'autres distributions telles que Red Hat Enterprise Linux (RHEL) et CentOS ou toute distribution prenant en charge les snaps, vous pouvez l'installer en tant que claquer. Cela nécessite que vous ayez installé Snapd sur votre système.

sudo snap install direnv

Comment accrocher direnv à votre shell Bash

Après avoir installé direnv, vous devez le connecter à votre shell Linux actuel. Par exemple pour Bash, ajoutez la ligne suivante à la fin du fichier ~/.bashrc.

Assurez-vous qu'il apparaît même après rvm, git-prompt et d'autres extensions shell qui manipulent l'invite.

eval "$(direnv hook bash)"

Pour coque ZSH

Ajoutez la ligne suivante à la fin du fichier ~/.zshrc :

eval "$(direnv hook zsh)" 

Pour coquille de poisson

Ajoutez la ligne suivante à la fin du fichier ~/.config/fish/config.fish :

eval (direnv hook fish)

Fermez ensuite la fenêtre du terminal actif et ouvrez un nouveau shell ou sourcez le fichier comme indiqué.

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

Comment utiliser direnv dans Linux Shell

Pour démontrer le fonctionnement de direnv, nous allons créer un nouveau répertoire appelé tecmint_projects et y accéder.

mkdir ~/tecmint_projects
cd tecmint_projects/

Ensuite, créons une nouvelle variable appelée TEST_VARIABLE sur la ligne de commande et lorsqu'elle est renvoyée, la valeur doit être vide :

echo $TEST_VARIABLE

Nous allons maintenant créer un nouveau fichier .envrc qui contient le code Bash qui sera chargé par direnv. Nous essayons également d'y ajouter la ligne « export the TEST_VARIABLE=tecmint » en utilisant la commande echo et le caractère de redirection de sortie (>) :

echo export TEST_VARIABLE=tecmint > .envrc

Par défaut, le mécanisme de sécurité bloque le chargement du fichier .envrc. Puisque nous savons qu'il s'agit d'un fichier sécurisé, nous devons approuver son contenu en exécutant la commande suivante :

direnv allow .

Maintenant que le contenu du fichier .envrc a été autorisé à se charger, vérifions la valeur de TEST_VARIABLE que nous avons définie auparavant :

echo $TEST_VARIABLE

Lorsque nous quittons le répertoire tecmint_project, le direnv sera déchargé et si nous vérifions à nouveau la valeur de TEST_VARIABLE, il devrait être vide :

cd ..
echo $TEST_VARIABLE

Chaque fois que vous accédez au répertoire tecmint_projects, le fichier .envrc sera chargé comme indiqué dans la capture d'écran suivante :

cd tecmint_projects/

Pour révoquer l'autorisation d'un .envrc donné, utilisez la commande deny.

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

Pour plus d'informations et d'instructions d'utilisation, consultez la page de manuel direnv :

man direnv

De plus, direnv utilise également un stdlib (direnv-stdlib) livré avec plusieurs fonctions qui vous permettent d'ajouter facilement de nouveaux répertoires à votre PATH et faites bien plus encore.

Pour trouver la documentation de toutes les fonctions disponibles, consultez la page d'entrée du manuel direnv-stdlib :

man direnv-stdlib

C'est tout ce que nous avions pour vous ! Si vous avez des questions ou des idées à partager avec nous, utilisez le formulaire de commentaires ci-dessous.