Le $PATH

Un cas pratique : je veux installer un nouveau logiciel (un jeu par exemple) : asciijump. Je me logue donc en root pour faire un apt-get install asciijump.

L’installation se passe bien, je regarde dans le menu Applications, Jeux et constate que ce nouveau jeu ne s’affiche pas. Je décide donc de lancer mon jeu depuis la console, je tape donc la commande asciijump.

Problème, j’ai ce superbe message : 
bash : asciijump : command not found
.

Conclusion, le répertoire contenant l’exécutable de mon jeu n’est pas renseigné dans le $PATH du compte courant (en l’occurrence, root).

 

 

 

I. Généralités, qu’est-ce que le $PATH ?

Cette erreur arrive assez souvent, vous tapez une commande et vous avez un command not foud. C’est le cas pour les jeux en root par exemple. Pourquoi ?

Je vous invite à taper echo $PATH dans votre terminal. Vous obtenez une liste de répertoires. Par exemple chez moi :

/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games

A quoi ça sert ? C’est simple, en fait quand vous tapez une commande du genre frozen-bubble, le terminal va parcourir tous les répertoires présents dans le $PATH dans l’ordre afin de voir si il ne trouve pas un executable du nom que vous avez appelé précédemment.

Dans mon cas, je tape frozen-bubble, il va donc chercher si il ne trouve pas /usr/local/bin/frozen-bubble, si il ne trouve pas, il va regarder dans /usr/bin/frozen-bubble, etc…
Le dernier répertoire contenu dans mon $PATH est le répertoire /usr/games, il va donc regarder si il trouve /usr/games/frozen-bubble/usr/games/ étant le répertoire par défaut des jeux, il va bien trouver l’executable /usr/games/frozen-bubble et me lancer mon jeu favori 🙂

II. Cas pratique, comment changer les dossiers par défaut ?

Le problème que j’avais était que je ne pouvais pas lancer mon jeu (asciijump) directement depuis le compte root (à moins bien sur de taper l’adresse complète de l’exécutable (/usr/games/asciijump)). Je regarde donc ce que contient le $PATH root :

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11

Je me rend compte que le dossier /usr/games n’est pas présent. Voici donc comment l’ajouter !

Il y a deux solutions :

  • Soit vous ajoutez un ou plusieurs répertoires pour un utilisateur donné
  • Soit vous ajoutez un ou plusieurs répertoires pour tous les utilisateurs

Je vous recommande la première solution bien évidemment.

Comment faire :

Pour modifier le $PATH pour un utilisateur donné, éditez le fichier de configuration de votre terminal de votre compte. Normalement, le fichier de configuration pour un utilisateur est /home/utilisateur/.bashrc et celui du root est /root/.bashrc.
Dans notre exemple, je veux ajouter le dossier /usr/games dans le $PATH du root. J’ajoute donc cette ligne dans /root/.bashrc :

PATH=$PATH:/usr/games

Pour modifier le $PATH pour tous les utilisateurs, ajoutez la même ligne dans le fichier de configuration général de votre terminal qui doit se trouver ici : /etc/bash.bashrc.

Sources

Laisser un commentaire