Que signifie $ PATH?

26

J'essaie d'installer quelque chose et parmi les étapes il y avait celle-ci:

"Placez-le sur votre $PATH "

Qu'est-ce que cela signifie? Qu'est-ce que c'est?

J'ai cherché à la fois sur ce site et sur Google, mais tout le monde le prend pour acquis!

    
posée Adam 20.11.2014 - 22:39
la source

3 réponses

23

Exécuter dans un terminal:

echo $PATH

ou

printf "%s\n" "$PATH"

ce que vous voyez est une liste de répertoires, ressemblant à:

/home/jacob/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Si vous mettez un exécutable dans l'un de ces répertoires, vous n'avez pas besoin de définir le chemin d'accès à l'exécutable / script, mais vous pouvez l'exécuter par son nom en tant que commande.

Les exécutables dans $PATH ne doivent pas avoir une extension de langue par convention (bien que ils travailleraient)

Modifier votre variable $ PATH

Vous pouvez (de manière permanente) ajouter un répertoire à $PATH en ajoutant la ligne suivante à votre fichier ~/.profile (invisible par défaut, appuyez sur Ctrl + H dans le gestionnaire de fichiers pour le rendre visible):

export PATH=$PATH:/path/to/dir

Informations plus utiles sur les variables d'environnement

(tel que $PATH ) peut être trouvé ici (merci pour les suggestions @Letizia)

    
réponse donnée Jacob Vlijm 20.11.2014 - 22:45
la source
5

$PATH est un emplacement de fichier associé variable d'environnement .

Quand on tape une commande à exécuter, le système le recherche dans les répertoires spécifiés par PATH dans l’ordre spécifié.

Vous pouvez afficher les répertoires spécifiés en tapant echo $PATH dans le terminal.

Supposons qu’il existe un fichier exécutable foobar01.sh présent sur /home/user/foo1/foo2/foobar01.sh que vous souhaitez exécuter régulièrement. taper le "chemin" entier prendrait du temps. Nous ajoutons donc le répertoire dans la variable $PATH et nous pouvons exécuter directement foobar.sh sans même spécifier le chemin.

Vous pouvez l’ajouter à $PATH en tapant la commande suivante

export PATH=$PATH:/home/user/foo1/foo2

    
réponse donnée astrob0t 20.11.2014 - 22:54
la source
2

Je suppose que vous venez d’un environnement Windows (excuses si ce n’est pas vrai). En termes simples, un chemin (ou le chemin de recherche) est la liste des répertoires qui seront recherchés pour tout ce que vous tapez sur la ligne de commande. Si vous tapez une commande intégrée comme ls, il recherchera une liste de répertoires spécifiée. Vous pouvez rechercher votre chemin en tapant echo $ PATH. Voici une différence entre Windows et * nix: Par défaut, Windows recherche toujours le fichier exécutable dans le répertoire en cours. Par exemple, si vous avez un fichier appelé uptime.bat dans c: \ myscripts, et que vous cd c: \ myscripts et que vous saisissez le temps de disponibilité, il s'exécutera. Cependant, dans * nix, le chemin sera consulté et l'exécutable trouvé (si disponible).

Si vous conservez vos scripts dans un répertoire appelé / home / teresa / scripts, pour exécuter ces scripts, vous devrez spécifier le chemin d'accès complet à ce répertoire. Exemple: / hone / teresa / checkHost. Une variante serait cd / home / teresa, puis tapez ./checkHost (notez le ./ ce qui signifie que vous demandez explicitement au fichier de s'exécuter depuis le répertoire en cours.

Pour éviter cela, vous pouvez simplement taper

export PATH = $ PATH: / home / teresa / scripts

ce qui signifie que, en plus du chemin qui existe déjà, recherchez également dans / hone / teresa / scripts. Cependant, le problème est que, une fois que vous vous déconnectez, ce paramètre disparaîtra. Donc, vous devez éditer le fichier caché ~ / .bashrc, y trouver la ligne PATH et l’ajouter en conséquence. Je suppose que vous utilisez bash. Dans le cas d'autres shells, la syntaxe et le fichier sont différents.

En tant que nouvel utilisateur, il est très tentant d’avoir. dans le chemin de recherche, ce qui signifie essentiellement que recherche également dans le répertoire en cours. Cependant, cela n'est pas considéré comme une bonne pratique pour des raisons évoquées ailleurs.

HTH

    
réponse donnée Hopping Bunny 28.11.2014 - 05:09
la source

Lire d'autres questions sur les étiquettes