Aller au contenu principal

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.

· 2 minutes de lecture
Voir la source
Christophe
Amoureux de Markdown, WSL et Docker ~ Curieux insatiable.
Cet article existe aussi en anglais — lire la version originale.

Traduction automatique

Cette traduction a été produite par une IA. Elle peut contenir des contresens ou des maladresses, en particulier sur les termes techniques. En cas de doute, consultez l'article de référence en anglais — c'est lui qui fait foi.

Cet article a plus d'un an, mais il a été relu le 30 juillet 2026 — son contenu est toujours exact.

Bash - Charger des variables d'environnement depuis un fichier

⚡
TL;DR

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 allexport
source .env
set +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 :

>user@machine: ~/yourproject

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 vous a-t-il été utile ?
Avez-vous suivi les étapes de cet article ?