Bash - Charger des variables d'environnement depuis un fichier
Apprenez à charger les variables d'environnement d'un fichier .env dans un script Bash, afin d'externaliser la configuration et de réutiliser les variables dans d'autres applications comme Laravel.
Traduction automatique
Cet article a plus d'un an, mais il a été relu le 30 juillet 2026 — son contenu est toujours exact.
Cet article fait partie de la série Écrire de meilleurs scripts Bash :
- Bash - ASCII art
- Bash - Charger des variables d'environnement depuis un fichier
- Bash - Script pour ajouter des fonctionnalités de log à votre script
- Bash - Afficher sur la console et dans un fichier de log en même temps
- Linux - Comparer deux versions du même script
- Linux - Trier les fonctions dans un script Bash
- Linux - Générer de la documentation à partir de scripts Bash
- Linux - Tirez parti du nombre de CPU dont vous disposez ; lancez des jobs concurrents
- Linux - Utiliser une barre de progression dans vos scripts
- Linux - Scripts Bash - Lancer des tests unitaires avec bats/bats

Cet article montre la bonne façon de charger les variables d'un fichier .env dans l'environnement d'un script Bash : set -o allexport; source .env; set +o allexport. Cette méthode gère correctement les valeurs contenant des espaces — contrairement au pattern export $(... | xargs), très répandu mais peu fiable.
Imaginez que vous ayez un fichier .env comme celui-ci et que vous souhaitiez le traiter dans un script Bash.
DOCKER_GIT_USEREMAIL="christophe@me.com"DOCKER_GIT_FULLNAME="Christophe Avonture"DOCKER_GIT_USERNAME="Me and myself"Ce script définit trois variables d'environnement pour configurer les paramètres Git dans un conteneur Docker : l'adresse email, le nom complet et le nom d'utilisateur qui seront utilisés pour les commits Git.
Utiliser un fichier de configuration vous permet d'externaliser la gestion de vos constantes, mais aussi de réutiliser les variables d'une autre application, par exemple un site développé en Laravel.
Voyons comment faire cela le plus proprement possible.
Le snippet provient de https://gist.github.com/mihow/9c7f559807069a03e302605691f85572?permalink_comment_id=3954807#gistcomment-3954807
Vous pouvez charger facilement ce fichier dans votre environnement avec les instructions suivantes :
set -o allexport
source .env
set +o allexport
Une fois ceci fait, les variables seront accessibles comme n'importe quelle variable d'environnement dans votre script bash. À la sortie du script, les variables ajoutées sont supprimées (exactement comme dans un sous-shell).
Utiliser source est la meilleure solution pour éviter les problèmes avec, par exemple, les espaces comme dans Me and myself : les autres solutions comme export $(... | xargs) donneront toujours des résultats imprévisibles.
Pour l'illustrer, créez simplement un fichier appelé par exemple test.sh avec ce contenu :
#!/usr/bin/env bash
set -o allexportsource .envset +o allexport
echo "${DOCKER_GIT_FULLNAME} (${DOCKER_GIT_USEREMAIL})"Ce script charge les variables d'environnement depuis un fichier .env, puis les utilise pour afficher le nom complet et l'email d'un utilisateur Git au format Docker. Les options set contrôlent comment les variables importées sont traitées par le shell.
Avec le fichier .env fourni plus haut, nous obtiendrons cette sortie :
C'est, à mon avis, la meilleure et aussi la plus simple façon d'utiliser un fichier externe pour stocker des éléments de configuration en Bash.
Deux autres compagnons .env sur ce blog : Comparer des fichiers d'environnement dans la console Linux, pour repérer la clé que vous avez oublié de reporter depuis .env.example, et Édition en masse d'un fichier d'environnement, pour modifier la même variable dans une dizaine de projets d'un coup.
Cet article fait partie de la série Écrire de meilleurs scripts Bash :
- Bash - ASCII art
- Bash - Charger des variables d'environnement depuis un fichier
- Bash - Script pour ajouter des fonctionnalités de log à votre script
- Bash - Afficher sur la console et dans un fichier de log en même temps
- Linux - Comparer deux versions du même script
- Linux - Trier les fonctions dans un script Bash
- Linux - Générer de la documentation à partir de scripts Bash
- Linux - Tirez parti du nombre de CPU dont vous disposez ; lancez des jobs concurrents
- Linux - Utiliser une barre de progression dans vos scripts
- Linux - Scripts Bash - Lancer des tests unitaires avec bats/bats





