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.