PATH, le chemin des commandes

Alain Leroy

Le rôle de la variable d'environnement PATH.

La mésaventure suivante peut vous arriver: vous tapez ls et le système vous répond "Command not found". Bigre! La commande ls a disparu!

Pas obligatoirement, simplement votre variable d'environnement PATH a été altérée et le répertoire /bin ne figure plus dans la liste de répertoires qu'elle contient.

Une commande est reconnue si elle est donnée avec son nom absolu (/bin/ls par exemple) ou bien si le répertoire qui la contient est listé dans la variable d'environnement PATH. De plus la recherche de la commande se fait dans l'ordre de la liste contenue dans PATH. Il arrive souvent que pour un essai, on écrive un fichier que l'on nomme test. Or il existe une commande Unix test (dans /bin ou dans /usr/ucb), si le nom du répertoire de travail où réside notre test est situé dans PATH après /bin ou /usr/ucb, ce n'est pas notre fichier qui est exécuté mais /bin/test (ou /usr/ucb/test) à notre plus grande perplexité.

Fixation de la valeur de PATH

En Shell de Bourne, par exemple bash :
PATH=/bin:/usr/bin:/usr/ucb:/usr/local/bin:$HOME/bin:.
export PATH

Une telle ligne sera à insérer ou modifier dans le fichier .bashrc de l'utilisateur (si celui-ci utilise bash)

En C-Shell (/bin/csh) ou T-C-Shell (/.../tcsh) :
set path = (/bin /usr/bin /usr/ucb /usr/local/bin $HOME/bin . )

La variable interne path est automatiquement transformée en variable d'environnement PATH.

Une telle ligne sera à insérer ou modifier dans le fichier .cshrc de l'utilisateur (si celui-ci utilise csh ou tcsh)

Remarque sur le caractère "." utilisé dans les syntaxes ci-dessus

Le caractère . représente le répertoire de travail. S'il ne figure pas dans PATH, on accédera cependant aux commande du répertoire courant (s'il n'est pas déjà dans PATH sous son nom normal) en tapant ./xxx (où xxx représente le nom de la commande).

En C-Shell, si on rajoute une commande dans un des répertoires de la liste contenue dans path, il faut réévaluer cette variable pour qu'elle prenne en compte la nouvelle commande. Cette opération se fait avec la commande interne rehash.

PATH (ou path en C-Shell) est positionnée généralement une fois pour toutes dans les fichiers d'environnement des utilisateurs : .profile (Shell standard /bin/sh ou Korn Shell /bin/ksh) ou dans .cshrc ou .login pour les C-Shell et T-C-Shell.