Linux Tutoriels

Comment ajouter un répertoire à votre $ PATH sous Linux

$ PATH est l’un des manipulateurs silencieux en arrière-plan de votre ordinateur Linux. Cela affecte tranquillement votre expérience utilisateur, mais il n’y a rien d’ombre à ce sujet. Nous vous expliquerons ce qu’il fait et comment vous pouvez l’ajuster.

Qu’est-ce que $ PATH sous Linux et comment ça marche?

Lorsque vous tapez une commande dans une fenêtre de terminal et appuyez sur Entrée, vous lancez beaucoup d’activité avant même que votre commande ne soit exécutée.

Frapper est le shell par défaut sur la plupart des distributions Linux. Il interprète la ligne de texte que vous avez saisie et identifie les noms de commandes entremêlés avec les paramètres, tuyaux, redirections, et quoi que ce soit d’autre. Il localise ensuite les binaires exécutables de ces commandes et les lance avec les paramètres que vous avez fournis.

La première étape que le shell prend pour localiser l’exécutable est d’identifier si un binaire est même impliqué. Si la commande que vous utilisez se trouve dans le shell lui-même (un « Shell builtin ») aucune recherche supplémentaire n’est requise.

Les fonctions intégrées du shell sont les plus faciles à trouver car elles font partie intégrante du shell. C’est comme les avoir dans une ceinture à outils – ils sont toujours avec vous.

Si vous avez besoin d’un de vos autres outils, vous devez fouiller dans l’atelier pour le trouver. Est-ce sur votre établi ou sur un support mural? C’est ce que fait la variable d’environnement $ PATH. Il contient une liste des endroits où le shell recherche et l’ordre dans lequel ils seront recherchés.

Si vous voulez voir si une commande est une shell intégré, un alias, une fonction ou un mv / work / unfile binaire autonome, vous pouvez utiliser la commande type comme indiqué ci-dessous:

type clear
type cd

le

Cela nous indique que clear est un fichier binaire et que le premier trouvé dans le chemin se trouve dans / usr / bin. Vous pouvez avoir plus d’une version de clear installée sur votre ordinateur, mais c’est celle que le shell essaiera d’utiliser.

Sans surprise, cd est un shell intégré.

Liste de votre $ PATH

Il est facile de voir ce qui se trouve sur votre chemin. Tapez simplement ce qui suit pour utiliser la commande echo et imprimez la valeur tenu dans la variable $ PATH:

echo $PATH

le

La sortie est une liste d’emplacements de système de fichiers délimités par deux points (:). Le shell recherche de gauche à droite le chemin, vérifiant chaque emplacement du système de fichiers pour un exécutable correspondant pour exécuter votre commande.

  Comment utiliser l'image en mode image pour les vidéos sur Facebook

Nous pouvons choisir notre chemin dans la liste pour voir les emplacements du système de fichiers qui seront recherchés, et l’ordre dans lequel ils seront recherchés:

/ usr / local / sbin
/ usr / local / bin
/ usr / sbin
/ usr / bin
/ sbin
/poubelle
/ usr / jeux
/ usr / local / jeux
/ snap / bin

Quelque chose qui peut ne pas être immédiatement évident est que la recherche ne démarre pas dans le répertoire de travail actuel. Au contraire, il parcourt les répertoires répertoriés, et uniquement les répertoires répertoriés.

Si le répertoire de travail actuel n’est pas dans votre chemin, il ne sera pas recherché. De plus, si vous avez des commandes stockées dans des répertoires qui ne sont pas dans le chemin, le shell ne les trouvera pas.

Pour démontrer cela, nous avons créé un petit programme appelé rf. Lorsqu’il est exécuté, rf imprime le nom du répertoire à partir duquel il a été lancé dans la fenêtre du terminal. Il est situé dans / usr / local / bin. Nous avons également une version plus récente dans le répertoire / dave / work.

Nous tapons la commande suivante pour nous montrer quelle version de notre programme le shell trouvera et utilisera:

which rf

le

Le shell signale que la version trouvée est celle du répertoire qui se trouve dans le chemin.

Nous tapons ce qui suit pour le lancer:

rf

le

La version 1.0 de rf fonctionne et confirme que nos attentes étaient correctes. La version trouvée et exécutée se trouve dans / usr / local / bin.

Pour exécuter toute autre version de rf sur cet ordinateur, nous devrons utiliser le chemin d’accès à l’exécutable sur la ligne de commande, comme indiqué ci-dessous:

./work/rf

le

Maintenant que nous avons indiqué au shell où trouver la version de rf que nous voulons exécuter, il utilise la version 1.1. Si nous préférons cette version, nous pouvons la copier dans le répertoire / usr / local / bin et écraser l’ancienne.

Disons que nous développons une nouvelle version de rf. Nous devrons l’exécuter fréquemment au fur et à mesure que nous le développons et le testons, mais nous ne voulons pas copier une version de développement inédite dans l’environnement réel.

Ou peut-être avons-nous téléchargé une nouvelle version de rf et souhaitons-nous faire des tests de vérification avant de la rendre publique.

  Comment lutter contre le coronavirus avec Folding @ home et un PC de jeu

Si nous ajoutons notre répertoire de travail au chemin, nous faisons en sorte que le shell trouve notre version. Et ce changement ne nous concernera que – d’autres utiliseront toujours la version de rf dans / usr / local / bin.

Ajout d’un répertoire à votre $ PATH

Vous pouvez utiliser la commande d’exportation pour ajouter un répertoire au $ PATH. Le répertoire est alors inclus dans la liste des emplacements du système de fichiers que le shell recherche. Lorsque le shell trouve un exécutable correspondant, il arrête la recherche, vous voulez donc vous assurer qu’il recherche d’abord votre répertoire, avant / usr / local / bin.

Cela est facile à faire. Pour notre exemple, nous tapons ce qui suit pour ajouter notre répertoire au début du chemin donc c’est le premier emplacement recherché:

export PATH=/home/dave/work:$PATH

le

Cette commande définit $ PATH comme étant égal au répertoire que nous ajoutons, / home / dave / work, puis au chemin actuel complet.

Le premier PATH n’a pas de signe dollar ($). Nous définissons la valeur de PATH. Le $ PATH final a un signe dollar car nous référençons le contenu stocké dans la variable PATH. Notez également les deux points (:) entre le nouveau répertoire et le nom de la variable $ PATH.

Voyons à quoi ressemble le chemin maintenant:

echo $PATH

le

Notre répertoire / home / dave / work est ajouté au début du chemin. Le deux-points que nous avons fourni le sépare du reste du chemin.

Nous tapons ce qui suit pour vérifier que notre version de rf est la première trouvée:

which rf

le

La preuve dans le pudding est en cours d’exécution rf, comme indiqué ci-dessous:

rf

le

Le shell trouve la version 1.1 et l’exécute depuis / home / dave / work.

Pour ajouter notre répertoire à la fin du chemin, nous le déplaçons simplement à la fin de la commande, comme ceci:

export PATH=$PATH:/home/dave/work

Rendre les changements permanents

Comme Beth Brooke-Marciniak a déclaré: «Le succès est bien, mais le succès est éphémère.» Au moment où vous fermez la fenêtre du terminal, toutes les modifications que vous avez apportées à $ PATH ont disparu. Pour les rendre permanents, vous devez mettre votre commande d’exportation dans un fichier de configuration.

Lorsque vous placez la commande d’exportation dans votre fichier .bashrc, elle définit le chemin à chaque fois que vous ouvrez une fenêtre de terminal. contrairement à Sessions SSH, pour lesquelles vous devez vous connecter, on parle de sessions «interactives».

Dans le passé, vous mettiez la commande d’exportation dans votre fichier .profile pour définir le chemin d’accès aux sessions de connexion du terminal.

Cependant, nous avons constaté que si nous mettons la commande d’exportation dans les fichiers .bashrc ou .profile, elle définissait correctement le chemin pour les sessions interactives et de connexion du terminal. Votre expérience peut être différente. Pour gérer toutes les éventualités, nous allons vous montrer comment le faire dans les deux fichiers.

  Comment désinstaller en toute sécurité Minecraft Dungeons sur Windows 10

Utilisez la commande suivante dans votre répertoire / home pour modifier le fichier .bashrc:

gedit .bashrc

le

L’éditeur gedit s’ouvre avec le fichier .bashrc chargé.

L'éditeur gedit avec le

Faites défiler vers le bas du fichier, puis ajoutez la commande d’exportation suivante que nous avons utilisée précédemment:

export PATH=/home/dave/work:$PATH

Enregistrez le fichier. Ensuite, fermez et rouvrez la fenêtre du terminal ou utilisez la commande dot pour lire le fichier .bashrc, comme suit:

. .bashrc

Ensuite, tapez la commande echo suivante pour vérifier le chemin:

echo $PATH

le

Cela ajoute le répertoire / home / dave / work au début du chemin.

Le processus pour ajouter la commande au fichier .profile est le même. Tapez la commande suivante:

gedit .profile

le

L’éditeur gedit démarre avec le fichier .profile chargé.

L'éditeur gedit avec le

Ajoutez la commande d’exportation au bas du fichier, puis enregistrez-le. La fermeture et l’ouverture d’une nouvelle fenêtre de terminal sont insuffisantes pour forcer la relecture du fichier .profile. Pour que les nouveaux paramètres prennent effet, vous devez vous déconnecter et vous reconnecter ou utiliser la commande point comme indiqué ci-dessous:

. .profile

Tracer la voie pour tout le monde

Pour définir le chemin de tous les utilisateurs du système, vous pouvez modifier le fichier / etc / profile.

Vous devrez utiliser sudo, comme suit:

sudo gedit /etc/profile

Au lancement de l’éditeur gedit, ajoutez la commande d’exportation au bas du fichier.

L'éditeur gedit avec le

Enregistrez et fermez le fichier. Les modifications prendront effet pour les autres lors de leur prochaine connexion.

Une note sur la sécurité

Assurez-vous de ne pas ajouter accidentellement un signe deux-points « : » au chemin, comme indiqué ci-dessous.

le

Si vous le faites, cela recherchera d’abord le répertoire actuel, ce qui introduit un risque de sécurité. Supposons que vous ayez téléchargé un fichier d’archive et que vous l’aviez décompressé dans un répertoire. Vous regardez les fichiers et voyez un autre fichier compressé. Vous appelez une fois de plus unzip pour extraire cette archive.

Si la première archive contenait un fichier exécutable appelé unzip qui était un exécutable malveillant, vous allumeriez accidentellement celui-ci au lieu du véritable exécutable de décompression. Cela se produirait parce que le shell chercherait d’abord dans le répertoire courant.

Alors, soyez toujours prudent lorsque vous tapez vos commandes d’exportation. Utilisez echo $ PATH pour les revoir et assurez-vous qu’ils correspondent à ce que vous voulez qu’ils soient.

x