Présentation
Les variables d’environnement sont des paires nom=valeur utilisées par le shell et les applications.
Elles stockent des informations de configuration, comme la langue, le nom d’utilisateur, le chemin de recherche des commandes, etc.
Elles sont visibles et modifiables par l’utilisateur courant, et peuvent être temporaires ou permanentes.
Quelques variables courantes
| Variable | Description |
|---|---|
| $USER | Nom de l’utilisateur connecté |
| $HOME | Répertoire personnel |
| $PATH | Liste des dossiers contenant les commandes |
| $LANG | Langue et encodage utilisés |
| $SHELL | Shell utilisé (souvent /bin/bash) |
Afficher les variables existantes
printenv
# ou
env
# ou pour une variable spécifique :
echo "$HOME"
# ou
env
# ou pour une variable spécifique :
echo "$HOME"
Définir une variable temporaire
NOM=John
echo "$NOM"
echo "$NOM"
Cela ne sera valable que pour le shell courant.
Rendre une variable accessible à un script ou un sous-processus
Il faut l’exporter :
export NOM=John
./mon_script.sh
./mon_script.sh
Le script pourra utiliser $NOM.
Définir une variable de façon permanente
Ajouter la ligne dans l’un de ces fichiers :
- ~/.bashrc → pour les shells interactifs
- ~/.profile ou ~/.bash_profile → à la connexion
Exemple :
export EDITOR=nano
export PATH="$PATH:$HOME/bin"
export PATH="$PATH:$HOME/bin"
Puis recharger avec :
source ~~/.bashrc
Astuce : tester si une variable existe
if [ -z "$MON_VAR" ]; then
echo "MON_VAR n'est pas définie"
fi
echo "MON_VAR n'est pas définie"
fi
En mode strict (set -u), une variable non définie interrompt le script. Prévoir une valeur par défaut :
echo "${MON_VAR:-valeur_par_defaut}"
Bonnes pratiques
- Utiliser des majuscules pour les noms (convention POSIX)
- Éviter les noms trop courts (T, X, D) qui pourraient entrer en conflit
- Toujours entourer les variables de guillemets ("$VAR") dans les scripts pour éviter les bugs avec des espaces
- Ne jamais mettre de mot de passe ni de jeton dans une variable exportée : elle est lisible par tous les processus de la session. Préférer un fichier réservé à root, chargé avec . au moment voulu