Agence web » Actualités du digital » Qu'est-ce que le CHEMIN Unix et comment y ajoutez-vous des programmes?

Qu'est-ce que le CHEMIN Unix et comment y ajoutez-vous des programmes?

Le chemin UNIX est une variable d'environnement qui indique au shell quels répertoires il doit rechercher lorsque vous émettez des commandes. Vous pouvez y penser comme une liste de dossiers Application ou Program Files.

Que fait le PATH?

Si vous souhaitez exécuter un binaire dans votre dossier actuel, vous devez fournir un chemin relatif, comme ceci:

./command (args)

Mais, si vous déplacez ce binaire vers un dossier comme /usr/local/bin/, vous tapez simplement le nom de la commande pour l'exécuter:

command (args)

Ceci est dû au fait /usr/local/bin/ est sur le CHEMIN. Le shell sait regarder dans ce dossier si vous ne spécifiez pas d’emplacement. De nombreux utilitaires de ligne de commande sont installés ici et dans des dossiers similaires. Vous pouvez voir quels dossiers se trouvent sur votre PATH en faisant écho à la variable elle-même, en utilisant le $ préfixe:

echo $PATH

Par défaut cependant, la variable PATH est une liste de noms de répertoires divisés par deux points. Ce n'est pas très lisible:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Mais, avec un peu de regex, vous pouvez le nettoyer pour imprimer une liste:

echo $PATH | sed $'s/:/\n/g'

Ces répertoires ont tous des objectifs différents:

  • Dossiers se terminant par bin sont à usage général, les dossiers se terminant par sbin sont destinés aux commandes d'administration du système, aux choses que le système exécute, mais vous n'interagirez probablement pas avec beaucoup. Bien qu'il existe
  • /bin et /sbin sont destinés aux programmes dont le système a besoin avant /usr est disponible. C'est là que des programmes clés comme sh et ls sont stockés.
  • /usr/bin et /usr/sbin sont destinés aux programmes utilisateur normaux, généralement intégrés au système d'exploitation.
  • /usr/local/bin et /usr/local/sbin sont pour les programmes que vous avez téléchargés ou compilés vous-même. Si vous avez un binaire que vous avez téléchargé et que vous ne savez pas où le mettre, glissez-le dans /usr/local/bin.

/usr/local/sbin peut même ne pas exister sur votre système, car il est de nature assez contradictoire. Il n'est pas présent sur macOS, mais contient quelques programmes sur Ubuntu.

Vous pouvez voir dans quels dossiers se trouvent les différentes commandes avec le which commander:

which ls

Qui affichera le chemin complet menant à la commande donnée.

Comment ajouter des dossiers au PATH

L'ajout d'un dossier au PATH est simple, il vous suffit de définir la variable. Mais vous ne pouvez pas l'écraser complètement, vous ajoutez donc un dossier à l'avant du CHEMIN:

PATH=~/folder:$PATH

Vous pouvez également clouer le dossier au dos du CHEMIN:

PATH=$PATH:~/folder

Ceux-ci ont des utilisations différentes. Les dossiers proches du devant seront vérifiés en premier, donc s'il y a des commandes en double (par exemple, deux versions de Python, toutes deux appelées "python“) L'ajout du dossier à l'avant garantira que le dossier que vous avez ajouté manuellement sera vérifié en premier. La plupart du temps, c'est probablement ce que vous voulez.

Habituellement, vous définissez cela dans le profil de votre shell, qui définira la variable chaque fois que vous ouvrirez un nouveau terminal. Si vous utilisez bash, c'est soit .bash_profile ou .bashrc. Si vous utilisez un shell comme zsh, ce sera un fichier différent (.zshrc dans ce cas). S'il existe déjà une définition, vous pouvez simplement ajouter votre dossier au début de la liste, séparé par deux points.

Envisagez d'utiliser des liens symboliques

Plutôt que d'ajouter directement un dossier, vous pouvez utiliser à la place un lien symbolique vers des commandes spécifiques et placer le lien symbolique dans/usr/local/bin. Par exemple, Python s'installe dans son propre dossier, mais plutôt que d'ajouter ce dossier au PATH, il utilise un lien symbolique. Vous pouvez voir où mènent les liens symboliques ls -la:

ls -la $(which python)

Et vous pouvez créer des liens symboliques avec ln:

ln -s command /usr/local/bin/command

Le CHEMIN peut changer

Étant donné que la variable PATH est généralement définie dans .bashrc, votre CHEMIN peut être différent lors de l'exécution dans un environnement différent. Ceci est particulièrement pertinent si vous exécutez dans un script bash ou si vous exécutez une commande via cron. Si vous rencontrez des problèmes de «commande introuvable», vous devez vérifier que le CHEMIN est correctement défini dans l'environnement dans lequel vous travaillez.

★★★★★