Comment fonctionne PATH dans Bash

How Does Path Work Bash



Lorsque vous tapez une commande dans le terminal Linux, vous appelez généralement un programme pour effectuer un certain travail, par exemple, ls , CD , rm , mkdir , etc. Tous ces programmes sont situés quelque part dans le système de fichiers, n'est-ce pas ? Comment bash sait-il où se trouvent ces programmes ?

Voici les variables d'environnement en jeu, en particulier la variable PATH. Cette variable est chargée de dire à bash où chercher ces programmes. Voyons comment fonctionne PATH et comment afficher/modifier PATH.







Variable d'environnement et $PATH

Dans la terminologie du shell, l'environnement est une zone que le shell construit chaque fois qu'il démarre une session. Pour gérer l'environnement, il existe des variables d'environnement désignant différentes parties de l'environnement. La valeur de la variable peut être une chaîne, un emplacement de répertoire, une valeur ou autres.



PATH est une telle variable d'environnement qui assure le suivi de certains répertoires. Par défaut, la variable PATH contient les emplacements suivants.



  • /usr/bin
  • /usr/sbin
  • /usr/local/bin
  • /usr/local/sbin
  • /un m
  • /sbin
  • /snap/bin (si Snap est installé)

Vous voulez voir quels répertoires sont actuellement enregistrés sous PATH ? Lancez un terminal et exécutez la commande suivante.





$chassèrent $CHEMIN

Ici, le signe $ désigne une variable. Les chassèrent La commande imprime la valeur de la variable PATH.



Maintenant, pourquoi cette variable d'environnement spécifique est-elle si importante ? C'est parce que le shell et le système dans son ensemble le traitent. La variable PATH stocke où les exécutables peuvent être trouvés. Chaque fois qu'une commande est exécutée, le shell recherche les répertoires PATH pour le fichier exécutable cible et l'exécute.

Par exemple, testons avec le chassèrent commander. Ici, j'exécute une commande echo.

$chassèrentBonjour le monde!

Où est le fichier exécutable de chassèrent ? Exécutez la commande suivante pour le savoir.

$lequel chassèrent

Comme on peut le voir, le chassèrent l'exécutable se trouve dans /usr/bin/echo. Où se trouve lequel ? Découvrons-le.

$lequel lequel

Il se trouve également dans /usr/bin/which. La plupart des outils de commande se trouvent dans le répertoire /usr/bin. Ici, bash consulte PATH pour les emplacements de recherche du ou des exécutables d'une commande.

Modification du CHEMIN

Avant de modifier la valeur de PATH, il est important de comprendre sa structure. Exécutez à nouveau la commande pour vérifier la valeur de PATH.

$chassèrent $CHEMIN

Notez que chacun des répertoires est séparé par un signe :.

Ajout d'un répertoire à PATH

Pour ajouter un répertoire personnalisé à PATH, nous utiliserons l'aide du fichier bashrc. C'est un script bash spécial que bash se charge chaque fois qu'une nouvelle session bash démarre. Notez que le fichier bashrc est unique à chaque utilisateur du système Linux.

Ouvrez le fichier bashrc dans un éditeur de texte. Si le fichier bashrc n'est pas déjà présent, l'éditeur le créera automatiquement.

$je suis venu~/.bashrc

Ici, c'est le bashrc par défaut fourni avec Ubuntu. Allez à la fin du fichier (s'il existe) et ajoutez la ligne suivante.

$exportation CHEMIN='$CHEMIN: / '

Ici, la nouvelle valeur de la variable PATH sera l'ancienne variable avec le nouveau répertoire que nous venons d'ajouter.

Enregistrez le fichier et dites à bash de le recharger.

$la source~/.bashrc

Vérifions si le nouveau chemin a été ajouté avec succès.

$chassèrent $CHEMIN

Voila ! PATH mis à jour avec succès ! Maintenant, bash recherchera également le nouveau chemin d'exécutable(s). j'ai déjà un script démo.sh sur le bureau. Voyons si bash peut l'appeler sans spécifier l'emplacement exact.

$démo.sh

Oui, bash peut l'appeler directement sans aucun problème.

Suppression du répertoire de PATH

Il n'y a pas de moyen simple d'ajouter/supprimer des répertoires de PATH. Laissez-moi expliquer.

La valeur de PATH est en fait fixe. Alors, qu'en est-il de l'astuce bashrc ? Bashrc est un script bash qui se charge à chaque fois qu'il démarre une session. Dans bashrc, nous venons de déclarer que la nouvelle valeur de PATH sera sa valeur par défaut et le répertoire défini par l'utilisateur. Maintenant, chaque fois que bash se charge, il voit que bashrc dit d'attribuer une nouvelle valeur de PATH et c'est ce qu'il fait.

De même, si nous voulons supprimer un répertoire de PATH, nous devons réaffecter une valeur différente de PATH dans le bashrc afin qu'à chaque démarrage de bash, il utilise la valeur modifiée.

Regardons cet exemple. Je suis prêt à supprimer le répertoire ~/Desktop du PATH.

$chassèrent $CHEMIN | sed -Et 's/:~/Bureau$//'

Si le répertoire était /home/wrong/dir, la commande ressemblerait à ceci.

$chassèrent $CHEMIN | sed -Et 's/:/home/mauvais/dir$//'

Ici, la partie intéressante est l'outil sed. En savoir plus sur sed ici et ici . Pour faire court, en utilisant sed, nous modifions la sortie du chassèrent commander. Maintenant, nous pouvons utiliser cette sortie modifiée pour changer la valeur de PATH.

Ouvrez bashrc dans un éditeur de texte et ajoutez les lignes suivantes. Je garde intentionnellement les lignes précédentes pour prouver que cela fonctionne.

$exportation CHEMIN='$(echo $CHEMIN | sed -e 's/:~/Desktop$//')'

Alternativement, vous pouvez également définir manuellement la valeur de PATH. C'est un processus laborieux mais plus direct et simple.

$exportation CHEMIN=/usr/local/sbin :/usr/local/un m:/usr/sbin :/usr/un m:/sbin :/un m:
/usr/Jeux:/usr/local/Jeux:/se casser/un m

Ici, la valeur de la commande sera affectée à PATH. Enregistrez le fichier et rechargez bashrc.

$la source~/.bashrc

Vérifions le résultat.

$chassèrent $CHEMIN

La valeur PATH est mise à jour !

Dernières pensées

Dans bash, la variable PATH est importante. Tout programme qui s'exécute via la session bash hérite de la variable, il est donc important que PATH inclue uniquement les répertoires nécessaires. L'ajout de répertoires supplémentaires ne fera qu'ajouter de la redondance au système.

Pour voir toutes les variables d'environnement pour bash, exécutez cette commande. La première partie de la commande renverra toutes les variables d'environnement et la seconde partie triera la sortie par ordre croissant.

$env | sorte

Vous voulez pimenter votre expérience bash? Les alias Bash offrent un moyen unique d'accélérer et de pimenter les choses. En savoir plus sur les alias bash .

Prendre plaisir!