Le PATH
La curiosité n’est pas un vilain défaut mais une qualité fondamentale.
Il faut bien faire la différence entre un chemin relatif et un chemin absolu. Pour cela, nous allons prendre le cas où l'on désire lancer un exécutable nommé "aterm" et que l'on se situe dans le dossier /usr. Nous allons voir un peu plus loin comment se présente le "shell", pour le moment retenez juste que le shell est représenté par le caractère "$", donc il n'est pas à taper dans tous les exemples qui vont suivre. Les lignes ne contenant pas le caractère "$" sont les résultats des commandes.
Le chemin absolu est le chemin complet en partant de la racine, plus le nom de l'exécutable :
/usr/bin/aterm
Le chemin relatif est le chemin complet de l'exécutable mais en partant du dossier courant, ici on se trouve dans le dossier /usr :
bin/aterm
Si l'on se trouvait dans un sous-dossier de /usr/bin, prenons par exemple le dossier "X11/", on pourrait exécuter "aterm" en tapant :
./../aterm
Le problème c'est qu'il faut tout de même taper à chaque fois le chemin complet, ce qui peut s'avérer très embêtant à la longue. C'est pour éviter cela que Linux utilise une variable d'environnement appelée PATH. Cette variable est définie pour tous les utilisateurs dans le fichier /etc/profile qui est uniquement modifiable par le superutilisateur (root). Les fichiers .profile et .bash_profile pouvant se trouver dans le dossier personnel de chaque utilisateur (ex. : /home/papi), permettent aux utilisateurs de personnaliser leur profile. Si les 2 fichiers sont présents dans le dossier d'un utilisateur, .bash_profile est prioritaire, donc profile sera ignoré.
La variable PATH
La variable $PATH contient plusieurs chemins qui indiqueront au shell où il devra aller chercher les commandes à exécuter. Ce qui évite de taper le chemin complet à chaque fois que l'on désire lancer un programme. $PATH fait partie des variables d'environnement.
Commande | Description |
---|---|
echo $PATH |
Affiche la variable $PATH. |
env |
Affiche les variables d'environnement. |
Exemple :
echo $PATH
/usr/local/bin:/usr/bin:/usr/bin/X11
Donc dans le cas ci-dessus, quand l'utilisateur tapera une commande sans indiquer son chemin, Linux recherchera en premier dans le dossier /usr/local/bin, ensuite dans /usr/bin et pour finir, dans /usr/bin/X11. Si jamais l'utilisateur veut rajouter un dossier dans la variable PATH, il lui suffira de taper :
PATH=$PATH:/home/papi/bin
echo $PATH
/usr/local/bin:/usr/bin:/usr/bin/X11:/home/papi/bin
Exécuter un programme
Il existe trois manières différentes pour exécuter un programme sous Linux.
La première est en indiquant le chemin complet de l'exécutable :
/bin/ls
Va exécuter la commande "ls" se trouvant dans le dossier /bin.
La deuxième nécessite un "./" devant le nom de notre fichier à exécuter.
Par exemple, si nous nous trouvons dans le dossier /bin :
./ls
Si je me trouve dans un dossier où "ls" n'est pas présent, même si "ls" se trouve dans un des dossiers de la variable PATH, la commande ne sera pas exécutée. Donc en mettant un "./" devant le nom de la commande, celle-ci sera exécutée à partir du dossier courant sans utiliser la variable PATH.
La dernière manière est en tapant tout simplement le nom de la commande :
ls
Dans le cas, la commande est recherchée dans un des dossiers définis dans la variable PATH mais pas dans le dossier courant . Si la commande "ls" se trouve dans un des dossiers de la variable PATH, "ls" sera exécuté là où l'on se trouve.