Que signifie $ PATH?

28

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

"Placez-le sur votre $PATH"

Qu'est-ce que ça veut dire? Qu'est-ce que c'est?

J'ai cherché sur ce site et sur Google, mais tout le monde le tient pour acquis!

Adam
la source
2
@muru Non, j'ai lu cette question et elle n'a rien de commun avec la mienne. De plus, cette question n'était pas du tout utile.
Adam
4
@muru Je pense que la question n'est pas de savoir comment ajouter (ou je peux me méprendre sur ce que l'on entend par "placez-le sur votre $ PATH").
Jacob Vlijm
1
@JacobVlijm vous avez raison, ce n'est pas le cas.
Adam
2
Je vois. Bien. En relation; askubuntu.com/q/141718/158442
muru

Réponses:

24

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 placez 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 $PATHne devraient pas avoir d'extension de langue par convention (bien qu'ils fonctionnent)

Modification de votre variable $ PATH

Vous pouvez (définitivement) ajouter un répertoire à $PATHen ajoutant la ligne suivante à votre ~/.profilefichier (invisible par défaut, appuyez sur Ctrl+ Hdans le gestionnaire de fichiers pour le rendre visible):

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

Plus d'informations utiles sur les variables d'environnement

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

Jacob Vlijm
la source
nous pouvons suggérer comment le changer dans .bashrc PATH = $ PATH: / path / you / want, ou dans .profile, qu'en pensez-vous?
Lety
et ceci est un lien utile pour les débutants
Lety
@Letizia, je préfère le premier. Avez-vous supprimé votre réponse? nous étions à peu près en même temps. nous aurions pu faire une combinaison bien répartie :)
Jacob Vlijm
Oui, je l'ai déjà fait, ma réponse est supprimée et je pensais qu'il valait mieux contribuer à votre. Que pensez-vous de mon commentaire?
Lety
@Letizia comment = parfait, je vais éditer. Merci!
Jacob Vlijm
6

$PATHest une variable d'environnement liée à l'emplacement du fichier .

Lorsque l'on tape une commande à exécuter, le système la recherche dans les répertoires spécifiés par PATHdans l'ordre spécifié.

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

Supposons qu'il existe un fichier exécutable foobar01.shsur /home/user/foo1/foo2/foobar01.shlequel vous souhaitez exécuter régulièrement. taper tout le "chemin" prendrait beaucoup de temps. Nous ajoutons donc le répertoire à la $PATHvariable et nous pouvons exécuter foobar.shdirectement sans même spécifier le chemin.

Vous pouvez l'ajouter $PATHen tapant la commande suivante

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

astrob0t
la source
2

Je suppose que vous venez d'un arrière-plan 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 courant. Par exemple, si vous avez un fichier appelé uptime.bat dans c: \ myscripts, et que vous cd c: \ myscripts et tapez uptime, 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 de cd / home / teresa puis de taper ./checkHost (notez le ./ ce qui signifie que vous demandez explicitement que le fichier soit exécuté à partir du répertoire courant.

Pour éviter cela, vous pouvez simplement taper

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

ce qui signifie qu'en plus du chemin qui existe déjà maintenant, recherchez également dans / hone / teresa / scripts. Cependant, le problème avec cela est qu'une fois que vous vous déconnectez, ce paramètre disparaîtra. Vous devez donc modifier 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, c'est très tentant d'avoir. dans le chemin de recherche, ce qui signifie essentiellement que rechercher également dans le répertoire courant. Cependant, cela n'est pas considéré comme une bonne pratique pour les raisons évoquées ailleurs.

HTH

Hopping Bunny
la source