Aller au contenu
Administration Linux medium

Variables d'environnement Linux

5 min de lecture

Le shell conserve des informations dans des variables d’environnement : votre nom d’utilisateur, votre répertoire personnel, la liste des dossiers où il cherche les commandes. Savoir les lire et les modifier est indispensable pour comprendre le comportement du système. Ce guide couvre les variables les plus courantes et les commandes pour les manipuler.

  • Afficher la valeur d’une variable avec echo
  • Lister toutes les variables avec env
  • Créer une variable et la rendre disponible avec export
  • Connaître les variables essentielles : PATH, HOME, USER, SHELL
  • Supprimer une variable avec unset
  • Diagnostiquer le problème « commande introuvable »

Une variable d’environnement est un couple nom=valeur stocké en mémoire par le shell. Chaque programme lancé depuis le terminal hérite de ces variables.

Elles servent à configurer le comportement du système sans modifier de fichier. Par exemple, LANG détermine la langue des messages et PATH indique où chercher les commandes.

La commande echo suivie de $NOM affiche le contenu d’une variable :

Fenêtre de terminal
echo $HOME
Résultat
/home/bob

Le signe $ indique au shell de remplacer le nom par sa valeur. Sans le $, le shell affiche le texte littéral :

Fenêtre de terminal
echo HOME
Résultat
HOME

Voici les variables que vous rencontrerez le plus souvent :

VariableContenuExemple
HOMERépertoire personnel/home/bob
USERNom de l’utilisateur connectébob
SHELLShell de login configuré/bin/bash
PATHListe des dossiers où chercher les commandes/usr/local/bin:/usr/bin:/bin
PWDRépertoire courant/home/bob/projets
LANGLangue et encodagefr_FR.UTF-8
HOSTNAMENom de la machineserveur01

Pour afficher n’importe laquelle :

Fenêtre de terminal
echo $USER
echo $SHELL
echo $LANG

La commande env affiche toutes les variables d’environnement exportées :

Fenêtre de terminal
env

La sortie est longue. Pour chercher une variable précise, combinez avec grep :

Fenêtre de terminal
env | grep PATH
Résultat
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

Pour créer une variable, écrivez NOM=valeur sans espaces autour du = :

Fenêtre de terminal
PRENOM="Alice"
echo $PRENOM
Résultat
Alice

Une variable créée avec NOM=valeur n’existe que dans le shell courant. Les programmes lancés depuis ce shell ne la voient pas.

Pour la rendre visible aux programmes enfants, utilisez export :

Fenêtre de terminal
export PRENOM="Alice"

Vérification — lancez un sous-shell et affichez la variable :

Fenêtre de terminal
bash -c 'echo $PRENOM'

Sans export, le résultat est vide. Avec export, la valeur s’affiche.

Vous pouvez créer et exporter en une seule ligne :

Fenêtre de terminal
export PROJET="mon-site"

PATH est la variable la plus importante pour l’exécution des commandes. Elle contient une liste de dossiers séparés par : :

Fenêtre de terminal
echo $PATH
Résultat
/usr/local/bin:/usr/bin:/bin

Quand vous tapez une commande comme ls, le shell cherche un fichier nommé ls dans chaque dossier de PATH, dans l’ordre :

  1. Il cherche dans /usr/local/bin/ → pas trouvé
  2. Il cherche dans /usr/bin/ → trouvé ! Il exécute /usr/bin/ls

Vous pouvez vérifier où se trouve une commande avec which :

Fenêtre de terminal
which ls
Résultat
/usr/bin/ls

Pour ajouter temporairement un dossier (par exemple ~/scripts) :

Fenêtre de terminal
export PATH="$HOME/scripts:$PATH"

Ce changement est temporaire : il disparaît à la fermeture du terminal. Pour le rendre permanent, ajoutez la ligne dans ~/.bashrc (voir le guide Personnaliser son shell).

La commande unset supprime une variable :

Fenêtre de terminal
export TEST="bonjour"
echo $TEST
unset TEST
echo $TEST

La dernière ligne n’affiche rien : la variable n’existe plus.

SymptômeCause probableSolution
commande : command not foundLe dossier contenant la commande n’est pas dans $PATHecho $PATH puis export PATH="/chemin/manquant:$PATH"
echo $MA_VAR n’affiche rienVariable non définie ou non exportéeVérifier avec `env
Variable perdue après fermeture du terminalVariable non ajoutée dans .bashrcAjouter export MA_VAR="valeur" dans ~/.bashrc
NOM = valeur donne une erreurEspaces autour du =Écrire NOM=valeur sans espaces
Programme enfant ne voit pas la variableexport oubliéUtiliser export NOM=valeur
  • Une variable d’environnement est un couple nom=valeur hérité par les programmes enfants.
  • echo $NOM affiche la valeur, env liste toutes les variables exportées.
  • export rend une variable visible aux sous-processus.
  • PATH détermine où le shell cherche les commandes.
  • Les changements sont temporaires sauf si ajoutés dans ~/.bashrc.
  • unset supprime une variable.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn