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

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

direnv est une extension open source nifty 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 frapper, zsh, tcsh, et les poissons.

Le but principal de direnv est de permettre des variables d'environnement spécifiques au projet sans encombre ~ /.profil ou fichiers de démarrage de shell associés. Il met en œuvre une nouvelle façon de charger et de décharger les variables d'environnement en fonction du répertoire actuel.

Il est utilisé pour charger 12facteurs applications (une méthodologie pour créer des variables d'environnement 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 multi-version similaires rbenv, pyenv, et phpenv.

Alors, comment fonctionne Direnv?

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

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

Installation de Direnv dans les systèmes Linux

Dans la plupart des distributions Linux, le direnv Un package est disponible pour installer à partir des référentiels par défaut à l'aide de votre gestionnaire de package système comme indiqué.

$ sudo apt installer Direnv # debian, ubuntu et menthe $ sudo dnf installer direnv #fedora 

Sur d'autres distributions telles que Red Hat Enterprise Linux (Rhel) et Centos ou toute distribution qui prend en charge les snaps, vous pouvez l'installer en tant que instantané. Cela vous oblige à installer Snapd sur votre système.

$ sudo snap installer direnv 

Comment accrocher Direnv dans votre coquille de bash

Après installation direnv, Vous devez l'accrocher à votre shell Linux actuel. Par exemple pour Frapper, Ajouter la ligne suivante à la fin du ~ /.bashrc déposer.

Assurez-vous qu'il apparaît même après RVM, git-compit, et d'autres extensions de coque qui manipulent l'invite.

eval "$ (Direnv Hook bash)" 

Pour la coquille zsh

Ajoutez la ligne suivante à la fin du ~ /.zshrc déposer:

eval "$ (Direnv Hook Zsh)" 

Pour la coquille de poisson

Ajoutez la ligne suivante à la fin du ~ /.config / poisson / config.poisson déposer:

Evale (Direnv Hook Fish) 

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

$ source ~ /.Bashrc $ source ~ /.Zshrc $ source ~ /.config / poisson / config.poisson 

Comment utiliser Direnv dans Shell Linux

Pour démontrer comment direnv fonctionne, nous créerons un nouveau répertoire appelé Tecmint_projects et montez dedans.

$ 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 repris, la valeur doit être vide:

$ echo $ test_variable 

Maintenant, nous allons créer un nouveau .Envrc fichier qui contient du code bash qui sera chargé par direnv. Nous essayons également d'ajouter la ligne "exporter le test_variable = tecmint«Dedans 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 .Envrc déposer. Puisque nous le savons un fichier sécurisé, nous devons approuver son contenu en exécutant la commande suivante:

$ Direnv Autoriser . 

Maintenant que le contenu de .Envrc Le fichier a été autorisé à se charger, vérifions la valeur de Test_variable que nous avons mis avant:

$ echo $ test_variable 

Lorsque nous quittons le Tecmint_project répertoire, le direnv sera déchargé et si nous vérifions la valeur de Test_variable Une fois de plus, il devrait être vide:

$ cd… $ echo $ test_variable 
Démonstration de la fonctionnalité de Direnv dans Linux

Chaque fois que vous vous déplacez dans le Tecmint_projects répertoire, le .Envrc Le fichier sera chargé comme indiqué dans la capture d'écran suivante:

$ cd tecmint_projects / 
Chargement du fichier Envrc dans un répertoire

Pour révoquer l'autorisation d'un .Envrc, Utilisez le refuser commande.

$ Direnv Deny . # dans le répertoire actuel ou $ Direnv Deny / Path / To /.Envrc 

Pour plus d'informations et d'instructions d'utilisation, consultez le direnv Page de l'homme:

$ man direnv 

En outre, direnv utilise également un stdlib (Direnv-stdlib) est livré avec plusieurs fonctions qui vous permettent d'ajouter facilement de nouveaux répertoires à votre CHEMIN Et faites tellement plus.

Pour trouver la documentation de toutes les fonctions disponibles, consultez le Direnv-stdlib Page d'entrée manuelle:

$ Man Direnv-stdlib 

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