
direnv charge et décharge automatiquement vos variables d’environnement quand
vous entrez ou sortez d’un répertoire. Fini les export AWS_PROFILE=... à
répéter dans chaque terminal. Avec un fichier .envrc à la racine de votre
projet, direnv configure votre shell instantanément : variables, PATH, layouts
Python/Node/Go, et même environnements Nix.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »À la fin de ce guide, vous saurez configurer direnv pour automatiser la gestion
de vos variables d’environnement par projet. Vous maîtriserez les fonctions de
la stdlib comme PATH_add et dotenv, vous créerez des environnements Python
et Node.js isolés avec les layouts, et vous appliquerez les bonnes pratiques de
sécurité pour protéger vos secrets.
Pourquoi utiliser direnv ?
Section intitulée « Pourquoi utiliser direnv ? »Imaginez que vous travaillez sur trois projets différents. Le premier utilise
AWS avec le profil “client-a”, le second nécessite des variables d’API pour
Stripe, et le troisième a besoin d’un virtualenv Python spécifique. Sans direnv,
vous devez manuellement exporter ces variables à chaque fois que vous changez de
projet, ou pire, les mettre dans votre .bashrc où elles polluent tous vos
terminaux.
Avec direnv, chaque projet a son propre fichier .envrc qui s’active
automatiquement quand vous entrez dans le répertoire. Quand vous en sortez, tout
est nettoyé. C’est comme avoir un majordome qui ajuste l’éclairage, la
température et la musique selon la pièce où vous entrez.
Fonctionnement de direnv
Section intitulée « Fonctionnement de direnv »Voici ce qui se passe quand vous utilisez direnv :
-
Le hook s’active : À chaque fois que vous tapez
cd, le hook direnv installé dans votre shell vérifie si un fichier.envrcexiste dans le nouveau répertoire (ou ses parents). -
Vérification de sécurité : direnv ne charge pas automatiquement n’importe quel fichier
.envrc. Vous devez d’abord l’autoriser avecdirenv allow. Cette protection empêche l’exécution de code malveillant si vous clonez un dépôt compromis. -
Exécution dans un sub-shell : Le fichier
.envrcest un script bash. Il s’exécute dans un sous-process isolé, pas dans votre shell actuel. direnv capture toutes les variables exportées. -
Export du diff : Seules les différences d’environnement sont injectées dans votre shell. Si vous aviez
PATH=/usr/binet que le script ajoute/mon-projet/bin, direnv exporte uniquement le nouveau PATH complet. -
Nettoyage à la sortie : Quand vous quittez le répertoire, direnv restaure l’environnement original. Les variables ajoutées disparaissent.
Installation de direnv
Section intitulée « Installation de direnv »L’installation se fait en deux étapes : installer le binaire, puis configurer le hook dans votre shell.
-
Installer avec mise
La méthode recommandée utilise mise qui gère les versions de direnv comme n’importe quel autre outil :
Fenêtre de terminal mise use -g direnv@latestVérifiez l’installation :
Fenêtre de terminal direnv --version2.37.1 -
Configurer le hook shell
Le hook doit être ajouté à la fin de votre fichier de configuration shell, après toute modification du PATH. C’est crucial car direnv doit s’exécuter après que votre environnement de base soit configuré.
Pour Bash :
Fenêtre de terminal echo 'eval "$(direnv hook bash)"' >> ~/.bashrcsource ~/.bashrcPour Zsh :
Fenêtre de terminal echo 'eval "$(direnv hook zsh)"' >> ~/.zshrcsource ~/.zshrc -
Vérifier que le hook fonctionne
Créez un projet de test pour confirmer que tout est en place :
Fenêtre de terminal mkdir /tmp/test-direnv && cd /tmp/test-direnvecho 'export HELLO="direnv fonctionne"' > .envrcVous devriez voir ce message :
direnv: error /tmp/test-direnv/.envrc is blocked.Run `direnv allow` to approve its contentC’est normal ! direnv vous demande d’autoriser le fichier avant de l’exécuter.
-
Installer avec le gestionnaire de paquets
Fenêtre de terminal # Debian/Ubuntusudo apt install direnv# Fedora/RHELsudo dnf install direnv -
Configurer le hook shell
Pour Bash :
Fenêtre de terminal echo 'eval "$(direnv hook bash)"' >> ~/.bashrcsource ~/.bashrcPour Zsh :
Fenêtre de terminal echo 'eval "$(direnv hook zsh)"' >> ~/.zshrcsource ~/.zshrc
-
Installer avec Homebrew
Fenêtre de terminal brew install direnv -
Configurer le hook shell (Zsh)
macOS utilise Zsh par défaut depuis Catalina :
Fenêtre de terminal echo 'eval "$(direnv hook zsh)"' >> ~/.zshrcsource ~/.zshrc
Premier projet avec direnv
Section intitulée « Premier projet avec direnv »Mettons direnv en pratique avec un exemple concret. Nous allons créer un projet qui nécessite des variables d’environnement spécifiques.
-
Créer le répertoire du projet
Fenêtre de terminal mkdir ~/mon-projet && cd ~/mon-projet -
Créer le fichier .envrc
Le fichier
.envrccontient des commandes bash qui définissent vos variables :Fenêtre de terminal cat > .envrc << 'EOF'export PROJECT_NAME="demo-direnv"export DATABASE_URL="postgres://user:pass@localhost:5432/mydb"export DEBUG=trueEOF -
Autoriser le fichier
direnv refuse d’exécuter un
.envrcnon autorisé. C’est une mesure de sécurité importante :Fenêtre de terminal direnv allowdirenv: loading ~/mon-projet/.envrcdirenv: export +DATABASE_URL +DEBUG +PROJECT_NAMELe message
+DATABASE_URL +DEBUG +PROJECT_NAMEindique les variables qui ont été ajoutées à votre environnement. -
Vérifier que les variables sont chargées
Fenêtre de terminal echo "Projet: $PROJECT_NAME"echo "Base de données: $DATABASE_URL"Projet: demo-direnvBase de données: postgres://user:pass@localhost:5432/mydb -
Observer le déchargement automatique
Sortez du répertoire et vérifiez que les variables ont disparu :
Fenêtre de terminal cd ..direnv: unloadingFenêtre de terminal echo "Projet: $PROJECT_NAME"Projet:La variable est vide car direnv a restauré votre environnement original.
Commandes essentielles de direnv
Section intitulée « Commandes essentielles de direnv »Voici les commandes que vous utiliserez au quotidien. Chacune a un rôle précis dans votre workflow.
Autoriser un fichier .envrc
Section intitulée « Autoriser un fichier .envrc »La commande direnv allow marque le fichier .envrc actuel comme sûr à
exécuter. Sans cette autorisation, direnv ignore le fichier et affiche un
avertissement.
direnv allowdirenv: loading /tmp/direnv-demo/mon-projet/.envrcdirenv: export +DATABASE_URL +PROJECT_NAMEVous devez réexécuter direnv allow chaque fois que vous modifiez le fichier
.envrc. C’est une protection contre les modifications malveillantes.
Révoquer l’autorisation
Section intitulée « Révoquer l’autorisation »Si vous ne voulez plus que direnv charge un .envrc (par exemple, après avoir
cloné un dépôt suspect), utilisez :
direnv denyLe fichier sera ignoré jusqu’à ce que vous l’autorisiez à nouveau.
Recharger après modification
Section intitulée « Recharger après modification »Quand vous modifiez votre .envrc, direnv détecte le changement et demande une
nouvelle autorisation. Vous pouvez forcer le rechargement avec :
direnv reloadCette commande est utile quand direnv n’a pas détecté une modification
(par exemple, si un fichier surveillé avec watch_file a changé).
Éditer et autoriser en une commande
Section intitulée « Éditer et autoriser en une commande »La commande direnv edit ouvre le .envrc dans votre éditeur par défaut
($EDITOR) et l’autorise automatiquement quand vous sauvegardez :
export EDITOR=vim # ou nano, code, etc.direnv editC’est la méthode recommandée pour modifier votre .envrc car elle évite
d’oublier le direnv allow.
Vérifier l’état de direnv
Section intitulée « Vérifier l’état de direnv »Pour diagnostiquer des problèmes, utilisez direnv status qui affiche l’état
complet de direnv dans le répertoire courant :
direnv statusdirenv exec path /home/bob/.local/share/mise/installs/direnv/2.37.1/direnvDIRENV_CONFIG /home/bob/.config/direnvbash_path /usr/bin/bashdisable_stdin falsewarn_timeout 5swhitelist.prefix []whitelist.exact map[]Loaded RC path /tmp/direnv-demo/mon-projet/.envrcLoaded watch: ".envrc" - 2026-01-26T08:23:21+01:00Loaded RC allowed 2Found RC path /tmp/direnv-demo/mon-projet/.envrcCette sortie vous indique quel fichier .envrc est chargé, quand il a été
modifié pour la dernière fois, et s’il est autorisé.
La stdlib : fonctions intégrées
Section intitulée « La stdlib : fonctions intégrées »direnv fournit une bibliothèque standard de fonctions (stdlib) que vous
pouvez utiliser dans vos fichiers .envrc. Ces fonctions simplifient les
tâches courantes et évitent les erreurs classiques.
Ajouter un dossier au PATH avec PATH_add
Section intitulée « Ajouter un dossier au PATH avec PATH_add »L’erreur la plus fréquente quand on manipule le PATH est d’écrire
PATH=$PWD/bin au lieu de PATH=$PWD/bin:$PATH, ce qui écrase le PATH
existant. La fonction PATH_add évite ce piège :
PATH_add binPATH_add scriptsVoyons ce que ça donne en pratique. Créons un projet avec un script personnalisé :
mkdir -p ~/projet-scripts/bincat > ~/projet-scripts/bin/mon-script << 'EOF'#!/bin/bashecho "Script personnalisé exécuté !"EOFchmod +x ~/projet-scripts/bin/mon-script
echo 'PATH_add bin' > ~/projet-scripts/.envrccd ~/projet-scriptsdirenv allowdirenv: loading ~/projet-scripts/.envrcdirenv: export ~PATHMaintenant, le script est accessible directement :
which mon-script/home/bob/projet-scripts/bin/mon-scriptmon-scriptScript personnalisé exécuté !Le symbole ~PATH dans la sortie de direnv indique que le PATH a été modifié
(pas ajouté avec +, mais modifié avec ~).
Charger un fichier .env avec dotenv
Section intitulée « Charger un fichier .env avec dotenv »La fonction dotenv charge un fichier .env au format standard
VARIABLE=valeur. C’est pratique pour séparer la logique (dans .envrc) des
valeurs (dans .env) :
mkdir ~/projet-dotenv && cd ~/projet-dotenv
# Créer un fichier .envcat > .env << 'EOF'API_KEY=sk-demo-123456DATABASE_HOST=localhostDEBUG=trueEOF
# Le .envrc charge simplement le .envecho 'dotenv' > .envrcdirenv allowdirenv: loading ~/projet-dotenv/.envrcdirenv: export +API_KEY +DATABASE_HOST +DEBUGVérifiez que les variables sont chargées :
echo "API_KEY: $API_KEY"echo "DATABASE_HOST: $DATABASE_HOST"echo "DEBUG: $DEBUG"API_KEY: sk-demo-123456DATABASE_HOST: localhostDEBUG: trueCharger un fichier optionnel avec dotenv_if_exists
Section intitulée « Charger un fichier optionnel avec dotenv_if_exists »Si le fichier .env n’existe pas toujours (par exemple, .env.local pour
les surcharges locales), utilisez dotenv_if_exists qui ne génère pas
d’erreur si le fichier est absent :
# Configuration de base (versionnée)export NODE_ENV=developmentexport API_URL=http://localhost:3000
# Surcharges locales (non versionnées)dotenv_if_exists .env.localCharger la configuration parent avec source_up
Section intitulée « Charger la configuration parent avec source_up »Dans un monorepo ou un projet avec des sous-dossiers, vous pouvez hériter de la configuration du répertoire parent :
# Créer une structure de projetmkdir -p ~/monorepo/services/apimkdir -p ~/monorepo/services/web
# Configuration racinecat > ~/monorepo/.envrc << 'EOF'export MONOREPO_ROOT=$PWDexport DOCKER_COMPOSE_PROJECT=monorepoEOF
# Configuration du service API qui hérite de la racinecat > ~/monorepo/services/api/.envrc << 'EOF'source_up # Charge le .envrc parentexport SERVICE_NAME=apiexport PORT=3001EOF
cd ~/monorepodirenv allowcd services/apidirenv allowecho "Racine: $MONOREPO_ROOT"echo "Service: $SERVICE_NAME"echo "Port: $PORT"Racine: /home/bob/monorepoService: apiPort: 3001Surveiller des fichiers avec watch_file
Section intitulée « Surveiller des fichiers avec watch_file »La fonction watch_file permet de recharger automatiquement l’environnement
quand un fichier spécifique change. C’est utile quand votre .envrc génère
des variables à partir de fichiers externes :
# Recharger si requirements.txt changewatch_file requirements.txt
# Recharger si package.json changewatch_file package.json
# Extraire la version depuis package.jsonif [[ -f package.json ]]; then export APP_VERSION=$(jq -r '.version' package.json)fiVérifier les prérequis avec has
Section intitulée « Vérifier les prérequis avec has »La fonction has vérifie si une commande est disponible. C’est pratique pour
adapter votre configuration selon les outils installés :
# Charger la configuration Docker seulement si Docker est installéif has docker; then export DOCKER_HOST=unix:///var/run/docker.sock export COMPOSE_PROJECT_NAME=mon-projetfi
# Utiliser direnv seulement si la version est suffisantedirenv_version 2.30.0Layouts : environnements isolés par langage
Section intitulée « Layouts : environnements isolés par langage »Les layouts sont la fonctionnalité la plus puissante de direnv. Ils créent automatiquement des environnements isolés pour chaque langage, sans configuration manuelle.
Layout Python : virtualenv automatique
Section intitulée « Layout Python : virtualenv automatique »Le layout Python crée un virtualenv dans .direnv/python-X.Y et l’active
automatiquement. Plus besoin de python -m venv ou source venv/bin/activate :
mkdir ~/projet-python && cd ~/projet-python
# Créer le .envrc avec le layout Pythonecho 'layout python3' > .envrcdirenv allowdirenv: loading ~/projet-python/.envrcdirenv: export +VIRTUAL_ENV ~PATHdirenv a créé un virtualenv. Vérifions :
ls -la .direnv/total 16drwxrwxr-x 3 bob bob 4096 janv. 26 08:23 .drwxrwxr-x 3 bob bob 4096 janv. 26 08:23 ..-rw-rw-r-- 1 bob bob 190 janv. 26 08:23 CACHEDIR.TAGdrwxrwxr-x 5 bob bob 4096 janv. 26 08:23 python-3.12Le Python utilisé est maintenant celui du virtualenv :
which python/home/bob/projet-python/.direnv/python-3.12/bin/pythonpython --versionPython 3.12.3Installez des packages, ils iront dans le virtualenv :
pip install requestspip listLes packages sont isolés dans ce projet. Quand vous sortez du répertoire, le virtualenv est désactivé automatiquement.
Layout Node.js : binaires npm locaux
Section intitulée « Layout Node.js : binaires npm locaux »Le layout Node.js ajoute node_modules/.bin au PATH. Vous pouvez ainsi
exécuter directement les binaires installés par npm sans préfixer par npx :
mkdir ~/projet-node && cd ~/projet-nodenpm init -ynpm install --save-dev eslint prettier
# Configurer direnvecho 'layout node' > .envrcdirenv allowdirenv: loading ~/projet-node/.envrcdirenv: export ~PATHMaintenant, eslint et prettier sont accessibles directement :
which eslint/home/bob/projet-node/node_modules/.bin/eslinteslint --versionv9.39.2Sans le layout, vous auriez dû taper npx eslint ou
./node_modules/.bin/eslint.
Layout Go : GOPATH local
Section intitulée « Layout Go : GOPATH local »Le layout Go configure un GOPATH local dans .direnv/go et ajoute bin/ au
PATH :
layout goEffet :
GOPATHpointe vers.direnv/go$PWD/binest ajouté au PATH
Les binaires Go compilés avec go install iront dans .direnv/go/bin au
lieu de ~/go/bin.
Layout Ruby : gems locales
Section intitulée « Layout Ruby : gems locales »Le layout Ruby configure GEM_HOME pour installer les gems dans le projet :
layout rubyEffet : les gems s’installent dans .direnv/ruby/ au lieu du système. Plus
besoin de préfixer par bundle exec.
Intégration avec Nix
Section intitulée « Intégration avec Nix »direnv s’intègre nativement avec Nix pour créer des environnements de développement reproductibles. Si vous utilisez Nix, ces fonctions vous permettent de charger automatiquement votre environnement de développement.
use nix pour shell.nix
Section intitulée « use nix pour shell.nix »La fonction use nix charge l’environnement défini dans shell.nix ou
default.nix :
use nix{ pkgs ? import <nixpkgs> {} }:
pkgs.mkShell { buildInputs = [ pkgs.nodejs pkgs.python3 pkgs.terraform ];}use flake pour Nix Flakes
Section intitulée « use flake pour Nix Flakes »Si vous utilisez les Nix Flakes (fonctionnalité expérimentale), utilisez
use flake :
use flake{ inputs.nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
outputs = { self, nixpkgs }: { devShells.x86_64-linux.default = nixpkgs.legacyPackages.x86_64-linux.mkShell { packages = with nixpkgs.legacyPackages.x86_64-linux; [ nodejs python3 ]; }; };}Exemples de configurations complètes
Section intitulée « Exemples de configurations complètes »Voici des configurations .envrc prêtes à l’emploi pour différents types de
projets.
Projet Python avec Flask
Section intitulée « Projet Python avec Flask »# Créer un virtualenv Python isolélayout python3
# Variables Flaskexport FLASK_APP=app.pyexport FLASK_ENV=developmentexport FLASK_DEBUG=1
# Configuration de la base de donnéesexport DATABASE_URL="sqlite:///dev.db"
# Charger les secrets locaux (non versionnés)dotenv_if_exists .env.local
# Ajouter src/ au PYTHONPATH pour les importspath_add PYTHONPATH src
# Recharger si les dépendances changentwatch_file requirements.txtwatch_file pyproject.tomlProjet Node.js avec Docker
Section intitulée « Projet Node.js avec Docker »# Binaires npm locauxlayout node
# Configuration Docker Composeexport COMPOSE_PROJECT_NAME=mon-apiexport COMPOSE_FILE=docker-compose.yml:docker-compose.dev.yml
# Variables de développementexport NODE_ENV=developmentexport API_URL=http://localhost:3000export LOG_LEVEL=debug
# Charger les variables privéesdotenv_if_exists .env
# Vérifier que Docker est disponibleif has docker; then echo "Docker disponible : $(docker --version)"fiProjet Terraform avec AWS
Section intitulée « Projet Terraform avec AWS »# Profil AWS spécifique au projetexport AWS_PROFILE=client-productionexport AWS_DEFAULT_REGION=eu-west-3
# Configuration Terraformexport TF_VAR_environment=productionexport TF_VAR_project_name=infrastructure
# Backend S3 pour l'état Terraformexport TF_CLI_ARGS_init="-backend-config=environments/prod/backend.tfvars"
# Charger les variables sensibles (non versionnées)dotenv_if_exists .env.terraform
# Vérifier que les outils sont installésif ! has terraform; then echo "⚠️ Terraform n'est pas installé"fi
if ! has aws; then echo "⚠️ AWS CLI n'est pas installé"fiProjet multi-environnements
Section intitulée « Projet multi-environnements »# Détecter l'environnement depuis .env.local ou variableif [[ -f .env.local ]]; then ENV=$(grep '^ENV=' .env.local | cut -d'=' -f2)else ENV=${ENV:-development}fi
export ENV
# Configuration selon l'environnementcase $ENV in development) export API_URL=http://localhost:8080 export DEBUG=true export LOG_LEVEL=debug ;; staging) export API_URL=https://staging.example.com export DEBUG=false export LOG_LEVEL=info ;; production) export API_URL=https://api.example.com export DEBUG=false export LOG_LEVEL=warn ;; *) echo "⚠️ Environnement inconnu: $ENV" ;;esac
echo "🌍 Environnement: $ENV"echo "🔗 API: $API_URL"Bonnes pratiques de sécurité
Section intitulée « Bonnes pratiques de sécurité »Le fichier .envrc est un script bash qui peut exécuter n’importe quelle
commande. Cette puissance vient avec des responsabilités.
Séparer configuration et secrets
Section intitulée « Séparer configuration et secrets »La meilleure pratique est de séparer la configuration (versionnée) des secrets (non versionnés) :
# Configuration publiqueexport NODE_ENV=developmentexport API_URL=http://localhost:3000layout node
# Charger les secrets depuis un fichier non versionnédotenv_if_exists .env.local# Secrets - Ne JAMAIS committer ce fichierSTRIPE_SECRET_KEY=sk_test_xxxDATABASE_PASSWORD=motdepasse_secretJWT_SECRET=cle_tres_secrete# Fichiers de secrets.env.local.env.*.local.envrc.privateUtiliser un gestionnaire de secrets
Section intitulée « Utiliser un gestionnaire de secrets »Pour les projets professionnels, utilisez un gestionnaire de secrets comme sops ou HashiCorp Vault :
# Charger les secrets depuis sops (fichier chiffré)if has sops; then eval "$(sops -d --output-type dotenv secrets.enc.yaml)"fiProtection contre les lockfiles malveillants
Section intitulée « Protection contre les lockfiles malveillants »Depuis la version 2.38, direnv propose require_allowed pour forcer une
nouvelle autorisation si certains fichiers changent. C’est utile pour se
protéger contre les attaques via les lockfiles (npm, pixi) qui peuvent
exécuter du code :
# Exiger une nouvelle autorisation si ces fichiers changentrequire_allowed package-lock.jsonrequire_allowed pixi.lockConfiguration globale de direnv
Section intitulée « Configuration globale de direnv »Vous pouvez personnaliser le comportement de direnv pour tous vos projets via
le fichier de configuration ~/.config/direnv/direnv.toml.
Options courantes
Section intitulée « Options courantes »[global]# Charger automatiquement les fichiers .env (en plus de .envrc)load_dotenv = true
# Cacher le diff d'environnement dans les messageshide_env_diff = true
# Mode strict : échouer si une variable n'est pas définiestrict_env = false
[whitelist]# Répertoires où direnv est automatiquement autorisé# (sans besoin de `direnv allow`)prefix = [ "~/Projets", "~/work"]Créer des fonctions personnalisées
Section intitulée « Créer des fonctions personnalisées »Vous pouvez étendre direnv avec vos propres fonctions en créant le fichier
~/.config/direnv/direnvrc :
# Fonction pour charger un profil AWSuse_aws_profile() { local profile=$1 export AWS_PROFILE=$profile
if has aws; then if aws configure list-profiles 2>/dev/null | grep -q "^${profile}$"; then log_status "Profil AWS: $profile" else log_error "Profil AWS '$profile' non trouvé" return 1 fi fi}
# Fonction pour activer un environnement condalayout_conda() { local env_name=${1:-$(basename "$PWD")}
if has conda; then eval "$(conda shell.bash hook)" conda activate "$env_name" 2>/dev/null || { log_status "Création de l'environnement conda: $env_name" conda create -n "$env_name" python=3.12 -y conda activate "$env_name" } fi}Utilisation dans un projet :
use aws_profile client-productionlayout conda mon-env-mlDépannage
Section intitulée « Dépannage »Voici les problèmes les plus fréquents et leurs solutions.
”direnv: error .envrc is blocked”
Section intitulée « ”direnv: error .envrc is blocked” »Cause : Le fichier .envrc n’a pas été autorisé.
Solution :
direnv allowLes variables ne sont pas chargées après cd
Section intitulée « Les variables ne sont pas chargées après cd »Cause : Le hook direnv n’est pas configuré dans votre shell.
Solution : Vérifiez que la ligne eval "$(direnv hook bash)" (ou zsh)
est présente à la fin de votre .bashrc ou .zshrc, puis rechargez :
source ~/.bashrc # ou ~/.zshrc“direnv: command not found”
Section intitulée « “direnv: command not found” »Cause : direnv n’est pas dans votre PATH.
Solution : Réinstallez direnv ou ajoutez son chemin au PATH. Avec mise :
mise use -g direnv@latestLes modifications du .envrc ne sont pas détectées
Section intitulée « Les modifications du .envrc ne sont pas détectées »Cause : direnv attend une nouvelle autorisation.
Solution :
direnv allowOu si vous avez modifié un fichier surveillé :
direnv reloadCommandes de diagnostic
Section intitulée « Commandes de diagnostic »# État complet de direnvdirenv status
# Variables qui seraient exportéesdirenv export bash
# Tester le .envrc sans l'appliquerdirenv exec . env | grep MA_VARIABLEÀ retenir
Section intitulée « À retenir »Voici les points essentiels à retenir pour utiliser direnv efficacement :
Commandes quotidiennes :
direnv allowautorise le.envrcactueldirenv editouvre et autorise automatiquementdirenv reloadforce le rechargement
Fonctions stdlib utiles :
PATH_add binajoute un dossier au PATH en toute sécuritédotenvoudotenv_if_existscharge un fichier.envlayout python3crée un virtualenv automatiquementlayout nodeajoutenode_modules/.binau PATHwatch_filerecharge quand un fichier change
Bonnes pratiques :
- Séparez la configuration (versionnée) des secrets (non versionnés)
- Utilisez
dotenv_if_exists .env.localpour les surcharges locales - Ajoutez
.env.localet.envrc.privateà votre.gitignore
Outils annexes
Section intitulée « Outils annexes »Ressources
Section intitulée « Ressources »- Site officiel : direnv.net
- Documentation stdlib : direnv-stdlib
- Dépôt GitHub : github.com/direnv/direnv
- Wiki communautaire : github.com/direnv/direnv/wiki
- nix-direnv : github.com/nix-community/nix-direnv (cache Nix amélioré)