Apprenez en lisant dans l'ordre

Les variables d'environnement — PATH et export

Apprends à référencer des variables avec echo $VAR et env, ce que signifient HOME et PATH, à définir des variables avec export, et la substitution de commande $(...) — tout en pratique dans un terminal en navigateur.

Référencer des variables — echo $VAR et env

Les variables d'environnement sont des réglages partagés par le shell et les programmes.

Tu stockes une valeur sous un nom, et écrire $name y substitue cette valeur.

Référence-en une en la préfixant de $, comme echo $HOME, et lance env pour afficher la liste des variables d'environnement actuellement définies.

Comme variables représentatives, HOME est le chemin vers ton répertoire personnel (ici /root), et PATH est une liste de répertoires où trouver les commandes, séparés par des deux-points.

Taper juste ls fonctionne parce que l'exécutable ls se trouve dans l'un des répertoires listés dans PATH, et le shell l'y trouve.

Autres exemples : PWD est le répertoire de travail courant, USER est le nom de l'utilisateur connecté (ici root), et SHELL est le chemin vers le shell de connexion.

VariableSignificationExemple ici
$HOMEChemin vers le répertoire personnel/root
$PATHListe de répertoires où trouver les commandes (séparés par :)/sbin:/usr/sbin:/bin:/usr/bin
$PWDRépertoire de travail courant/root
$USERNom de l'utilisateur connectéroot
$SHELLChemin vers le shell de connexion/bin/sh
Référencer les variables d'environnement
echo $HOME/root (chemin home)echo $PATHliste des lieux oùtrouver les commandesenvaffiche toutes lesvariables d'environnement
$name affiche une valeur ; env affiche la liste de toutes les variables.
echo $HOME      # chemin home (/root)
echo $PATH      # la liste des chemins de recherche des commandes
env             # affiche toutes les variables d'environnement

① Lance echo $HOME et confirme que le chemin vers le répertoire personnel s'affiche.

② Lance echo $PATH et confirme que les lieux où trouver les commandes sont listés, séparés par des deux-points.

③ Lance env pour afficher la liste des variables d'environnement définies. (Lance-le correctement et une explication apparaîtra.)

Linux console
0 / 3 exécutée(s)
Loading Linux Terminal...

Définir des variables — export et $(...)

name=value met une valeur dans une variable, et ajouter export name transmet cette variable aux programmes que tu lances ensuite.

Tu peux aussi l'écrire en une seule ligne comme export name=value.

Tu peux référencer avec $name, mais l'envelopper en ${name} rend explicite la limite du nom de variable, donc cela se développe sans ambiguïté même quand des caractères suivent directement, comme ${HOME}/bin.

En cas de doute, l'écrire sous la forme ${name} est recommandé.

$(command) est la substitution de commande : elle lance la commande à l'intérieur et la remplace sur place par cette sortie sous forme de chaîne.

Par exemple, echo $(pwd) affiche la sortie de pwd (le chemin vers ta position courante) sous forme de chaîne.

Utilise-la quand tu veux mettre le résultat d'une commande dans la valeur d'une variable.

Comment l'écrireSignificationExemple
$VARSubstitue la valeur de la variableecho $HOME
${VAR}Référence avec une limite explicite (recommandé)echo ${HOME}/bin
VAR=valueAffecte dans le shell courant uniquementNAME=demo
export VAR=valueAffecte et transmet aux processus enfantsexport NAME=demo
$(command)Substitue la sortie de la commandeecho $(pwd)
export et substitution de commande
export NAME=demotransmet NAME aussiaux processus enfantsecho $NAMEaffiche demoecho $(pwd)remplacé par la sortie de pwd
export transmet la valeur plus loin, et $(...) intègre la sortie d'une commande.
export GREETING=hello   # définit une variable et la transmet plus loin
echo $GREETING          # hello
echo "today is $(date)" # intègre la sortie d'une commande avec $(...)

① Définis une variable d'environnement avec export NAME=demo.

② Lance echo $NAME et confirme que la valeur que tu as définie, demo, s'affiche.

③ Lance echo $(pwd) et confirme que la sortie de pwd à l'intérieur de $(...) s'affiche sous forme de chaîne.

Linux console
0 / 3 exécutée(s)
Loading Linux Terminal...

Le fonctionnement de PATH — comment une commande est trouvée

PATH est une variable d'environnement listant les répertoires où trouver les commandes, séparés par des deux-points :.

Quand tu tapes une commande par son seul nom, sans chemin, comme ls ou cat, le shell parcourt les répertoires listés dans PATH de gauche à droite et lance le premier exécutable qu'il trouve.

C'est pourquoi ls seul fonctionne sans écrire le chemin complet /bin/ls.

À l'inverse, une commande qui n'est dans aucun des répertoires de PATH donne not found.

Pour appeler ton propre script par son seul nom, tu dois ajouter son emplacement à PATH, ce que nous verrons ensuite.

Comment une commande est trouvée via PATH
tape lscherche dans PATHdepuis la gauches'arrête à lapremière correspondance/sbinpas de lslieu suivant/usr/sbinpas de lslieu suivant/binls est icilance /bin/ls/usr/binjamais atteintla recherche est finie
Quand PATH vaut /sbin:/usr/sbin:/bin:/usr/bin, ls est cherché depuis la gauche /sbin dans l'ordre, trouvé dans /bin, et la recherche s'arrête là. Elle ne va jamais jusqu'à /usr/bin.

Comment ajouter à PATH

Quand tu veux lancer ta propre commande par son seul nom, ajoute son emplacement à PATH.

Écris-le comme export PATH=${PATH}:/new/dir, en ajoutant un deux-points et le nouveau répertoire à la fin du PATH actuel.

Tu inclus ${PATH} pour ajouter aux lieux de recherche existants sans les effacer.

① Affiche d'abord le chemin de recherche actuel avec echo ${PATH}.

② Lance export PATH=${PATH}:/opt/bin pour ajouter un emplacement à la fin.

③ Relance echo ${PATH} et confirme que /opt/bin a été ajouté à la fin.

Linux console
0 / 3 exécutée(s)
Loading Linux Terminal...
QUIZ

Vérification des connaissances

Répondez à chaque question une par une.

Question 1Qu'affiche echo $HOME ?

Question 2Qu'est-ce qui est correct au sujet du rôle de PATH ?

Question 3Qu'est-ce qui s'affiche quand tu lances echo $(pwd) ?