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 aller fouiller dans l’atelier pour le trouver. Est-ce sur votre établi ou sur un support mural? C’est ce que le $PATH la variable d’environnement le fait. 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 le type commande comme indiqué ci-dessous:

type clear
type cd

Les commandes "type clear" et "type cd" dans une fenêtre de terminal.

Cela nous dit que clear est un fichier binaire, et le premier trouvé dans le chemin se trouve à /usr/bin. Vous pouvez avoir plus d’une version de clear installé sur votre ordinateur, mais c’est celui 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 le echo commander et imprimez la valeur tenue dans le $PATH variable:

echo $PATH

La commande "echo $ PATH" dans une fenêtre de terminal.

La sortie est une liste de deux points (:) emplacements délimités du système de fichiers. 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.

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
  • /bin
  • /usr/games
  • /usr/local/games
  • /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.

En relation :  Comment trouver le lien de téléchargement d'un fichier sur macOS

Pour démontrer cela, nous avons créé un petit programme appelé rf. Une fois 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 /dave/work annuaire.

Nous tapons ce qui suit which commander pour nous montrer quelle version de notre programme le shell trouvera et utilisera:

which rf

La commande "which rf" dans une fenêtre de terminal.

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

La commande "rf" dans une fenêtre de terminal.

Version 1.0 de rf s’exécute 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

La commande "./work/rf" dans une fenêtre de terminal.

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

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 souhaitez effectuer des tests de vérification avant de le rendre public.

Si nous ajoutons notre répertoire de travail au chemin, nous faisons en sorte que le shell trouve notre version. Et cette modification ne nous concernera que: d’autres continueront d’utiliser la version de rf dans /usr/local/bin .

Ajout d’un répertoire à votre $ PATH

Vous pouvez utiliser le export commande à ajouter un répertoire à la $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

La commande "export PATH = / home / dave / work: $ PATH" dans une fenêtre de terminal.

Cette commande définit $PATH être égal au répertoire que nous ajoutons, /home/dave/work, puis l’ensemble du chemin actuel.

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

Voyons à quoi ressemble le chemin maintenant:

echo $PATH

La commande "echo $ PATH" dans une fenêtre de terminal.

Notre /home/dave/work Le répertoire 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 notre version de rf est le premier trouvé:

which rf

La commande "which rf" dans une fenêtre de terminal.

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

rf

La commande "rf" dans une fenêtre de terminal.

Le shell trouve la version 1.1 et l’exécute à partir de /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 au $PATH sont partis. Pour les rendre permanents, vous devez mettre votre export commande dans un fichier de configuration.

En relation :  3 outils Linux amusants à exécuter sur Windows 10 avec WSL

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

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

Cependant, nous avons constaté que si nous mettons le export commande dans l’un ou l’autre .bashrc ou .profile fichiers, il définit 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.

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

gedit .bashrc

La commande "gedit .bashrc" dans une fenêtre de terminal.

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

L

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 le dot commande pour lire le .bashrc fichier, comme suit:

. .bashrc

Ensuite, tapez ce qui suit echo commande pour vérifier le chemin:

echo $PATH

Les commandes ". .Bashrc" et "echo $ PATH" dans une fenêtre de terminal.

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

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

gedit .profile

La commande "gedit .profile" dans une fenêtre de terminal.

le gedit l’éditeur se lance avec le .profile fichier chargé.

L

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

. .profile

Bientôt: Comment modifier graphiquement des fichiers texte sous Linux avec gedit

Tracer la voie pour tout le monde

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

Vous devrez utiliser sudo, comme suit:

sudo gedit /etc/profile

Quand le gedit L’éditeur se lance, ajoutez la commande d’exportation au bas du fichier.

L

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 de deux points « :»Vers le chemin, comme illustré ci-dessous.

La commande "echo $ PATH" avec deux points en surbrillance dans une fenêtre de terminal.

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 c’était un exécutable malveillant, vous auriez accidentellement déclenché celui-là au lieu du réel unzip exécutable. Cela se produirait parce que le shell chercherait d’abord dans le répertoire courant.

Alors, soyez toujours prudent lorsque vous tapez votre export commandes. Utilisation echo $ PATH pour les examiner et vous assurer qu’ils correspondent à ce que vous souhaitez qu’ils soient.

body #primary .entry-content ul # nextuplist {list-style-type: none; margin-left: 0px; padding-left: 0px;} body #primary .entry-content ul # nextuplist li a {text-decoration: none ; couleur: # 1d55a9;}

Moyens Staff
Moyens I/O Staff vous a motivé, donner des conseils sur la technologie, le développement personnel, le style de vie et des stratégies qui vous aider.