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.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- 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 »
Qu’est-ce qu’une variable d’environnement ?
Section intitulée « Qu’est-ce qu’une variable d’environnement ? »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.
Afficher une variable
Section intitulée « Afficher une variable »La commande echo suivie de $NOM affiche le contenu d’une variable :
echo $HOME/home/bobLe signe $ indique au shell de remplacer le nom par sa valeur. Sans le $,
le shell affiche le texte littéral :
echo HOMEHOMELes variables essentielles
Section intitulée « Les variables essentielles »Voici les variables que vous rencontrerez le plus souvent :
| Variable | Contenu | Exemple |
|---|---|---|
HOME | Répertoire personnel | /home/bob |
USER | Nom de l’utilisateur connecté | bob |
SHELL | Shell de login configuré | /bin/bash |
PATH | Liste des dossiers où chercher les commandes | /usr/local/bin:/usr/bin:/bin |
PWD | Répertoire courant | /home/bob/projets |
LANG | Langue et encodage | fr_FR.UTF-8 |
HOSTNAME | Nom de la machine | serveur01 |
Pour afficher n’importe laquelle :
echo $USERecho $SHELLecho $LANGLister toutes les variables
Section intitulée « Lister toutes les variables »La commande env affiche toutes les variables d’environnement exportées :
envLa sortie est longue. Pour chercher une variable précise, combinez avec grep :
env | grep PATHPATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/gamesCréer une variable
Section intitulée « Créer une variable »Pour créer une variable, écrivez NOM=valeur sans espaces autour du = :
PRENOM="Alice"echo $PRENOMAliceVariable locale vs exportée
Section intitulée « Variable locale vs exportée »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 :
export PRENOM="Alice"Vérification — lancez un sous-shell et affichez la variable :
bash -c 'echo $PRENOM'Sans export, le résultat est vide. Avec export, la valeur s’affiche.
Combiner création et export
Section intitulée « Combiner création et export »Vous pouvez créer et exporter en une seule ligne :
export PROJET="mon-site"Comprendre PATH
Section intitulée « Comprendre PATH »PATH est la variable la plus importante pour l’exécution des commandes. Elle
contient une liste de dossiers séparés par : :
echo $PATH/usr/local/bin:/usr/bin:/binQuand vous tapez une commande comme ls, le shell cherche un fichier nommé
ls dans chaque dossier de PATH, dans l’ordre :
- Il cherche dans
/usr/local/bin/→ pas trouvé - Il cherche dans
/usr/bin/→ trouvé ! Il exécute/usr/bin/ls
Vous pouvez vérifier où se trouve une commande avec which :
which ls/usr/bin/lsAjouter un dossier à PATH
Section intitulée « Ajouter un dossier à PATH »Pour ajouter temporairement un dossier (par exemple ~/scripts) :
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).
Supprimer une variable
Section intitulée « Supprimer une variable »La commande unset supprime une variable :
export TEST="bonjour"echo $TESTunset TESTecho $TESTLa dernière ligne n’affiche rien : la variable n’existe plus.
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
commande : command not found | Le dossier contenant la commande n’est pas dans $PATH | echo $PATH puis export PATH="/chemin/manquant:$PATH" |
echo $MA_VAR n’affiche rien | Variable non définie ou non exportée | Vérifier avec `env |
| Variable perdue après fermeture du terminal | Variable non ajoutée dans .bashrc | Ajouter export MA_VAR="valeur" dans ~/.bashrc |
NOM = valeur donne une erreur | Espaces autour du = | Écrire NOM=valeur sans espaces |
| Programme enfant ne voit pas la variable | export oublié | Utiliser export NOM=valeur |
À retenir
Section intitulée « À retenir »- Une variable d’environnement est un couple nom=valeur hérité par les programmes enfants.
echo $NOMaffiche la valeur,envliste toutes les variables exportées.exportrend une variable visible aux sous-processus.PATHdétermine où le shell cherche les commandes.- Les changements sont temporaires sauf si ajoutés dans
~/.bashrc. unsetsupprime une variable.