Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

PATH ?

9 réponses
Avatar
romer
Bonjour,

Quand je lance dans la ligne de commande echo PATH, j'obtiens cela :

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/usr/X11/bin.

Qui peut me dire ce que cela signifie exactement ?

Merci.
--
A+

Romer

9 réponses

Avatar
sebastienmarty
Bernd wrote:

Bonjour,

Quand je lance dans la ligne de commande echo PATH, j'obtiens cela :

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/usr/X11/bin.

Qui peut me dire ce que cela signifie exactement ?



Sauf erreur, que lorsque tu taperas dans le Terminal la commande "toto",
elle sera recherchée dans /usr/bin, puis dans /bin, puis dans /usr/sbin,
etc.

--
[SbM]
<http://sebastienmarty.free.fr> - <http://tradintosh.free.fr>
<http://sbm.ordinotheque.free.fr> - <http://palmiciel.free.fr>
"If the French were really intelligent, they'd speak English" (W. Sheed)
Avatar
Eric Levenez
Le 18/02/09 17:25, dans <1ivcgaw.1mk5y94g1q0o6N%,
« Bernd » a écrit :

Quand je lance dans la ligne de commande echo PATH, j'obtiens cela :



Si tu lances "echo PATH" tu verras "PATH" s'afficher. Tu as en fait dû
lancer "echo $PATH", et tu obtiens le contenu de la variable PATH.

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/usr/X11/bin.



C'est la liste de gauche à droite, séparée par ":", du chemin de recherche
du shell courant pour trouver un exécutable.

Qui peut me dire ce que cela signifie exactement ?



Que tu as ajouté "/usr/texbin" au PATH ?

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Avatar
romer
Eric Levenez wrote:

> Quand je lance dans la ligne de commande echo PATH, j'obtiens cela :

Si tu lances "echo PATH" tu verras "PATH" s'afficher. Tu as en fait dû
lancer "echo $PATH", et tu obtiens le contenu de la variable PATH.



Oui bien sûr, c'était $PATH

> /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/usr/X11/bin.



C'est la liste de gauche à droite, séparée par ":", du chemin de recherche
du shell courant pour trouver un exécutable.



> Qui peut me dire ce que cela signifie exactement ?



Que tu as ajouté "/usr/texbin" au PATH ?



Non, je n'ai rien ajouté - juste voir ce que cette commande produisait.
J'ai lu qu'on peut modifier ce chemin mais pour l'heure, je n'en vois
pas bien l'utilité.
Quant à usr/X11/bin ? je ne vois pas pourquoi ce chemin est ptivilégié
et pas de multiples autres ?
Un peu mystérieux mais je m'informe...

--
A+

Romer
Avatar
Eric Levenez
Le 18/02/09 19:16, dans <1ivcl8t.k5yhz4b1rx3aN%,
« Bernd » a écrit :

Eric Levenez wrote:

Que tu as ajouté "/usr/texbin" au PATH ?



Non, je n'ai rien ajouté - juste voir ce que cette commande produisait.



Si ce n'est pas toi, c'est LaTeX, que tu as installé qui l'a fait pour toi,
mais cela revient au même.

J'ai lu qu'on peut modifier ce chemin mais pour l'heure, je n'en vois
pas bien l'utilité.



L'utilité est que quand on utilise un shell, on peut taper des noms courts
et non des noms complets.

Quant à usr/X11/bin ? je ne vois pas pourquoi ce chemin est ptivilégié



Privilégié par rapport à qui ? Je ne comprends pas. Il est à droite et n'est
pas privilégié dans la recherche vu qu'il est le dernier.

et pas de multiples autres ?



/usr/X11/bin sont placés les exécutables utilisateurs du monde X Window, il
est normal que le shell puisse y accéder.

Je ne sais pas si c'est cela que tu recherches, mais le but du PATH est
d'éclater dans plusieurs répertoires les exécutables unix pour ne pas tout
mettre au même endroit. Normalement un exécutable donné, par exemple "toto"
ne devrait être que dans un des répertoires décrits dans le PATH. Mais une
astuce consiste à mettre un autre "toto" dans un répertoire se trouvant en
tête de recherche du PATH (plus à gauche donc). Le shell prendra le premier
"toto" trouvé.

--
Éric Lévénez -- <http://www.levenez.com/>
Unix is not only an OS, it's a way of life.
Avatar
romer
Eric Levenez wrote:

Je ne sais pas si c'est cela que tu recherches, mais le but du PATH est
d'éclater dans plusieurs répertoires les exécutables unix pour ne pas tout
mettre au même endroit. Normalement un exécutable donné, par exemple "toto"
ne devrait être que dans un des répertoires décrits dans le PATH. Mais une
astuce consiste à mettre un autre "toto" dans un répertoire se trouvant en
tête de recherche du PATH (plus à gauche donc). Le shell prendra le premier
"toto" trouvé.



Merci de ces infos - cela se décante et s'éclaircit lentement.

--
A+

Romer
Avatar
Nicolas-Michel_REMOVE
Bernd wrote:

Bonjour,

Quand je lance dans la ligne de commande echo PATH, j'obtiens cela :

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/usr/X11/bin.

Qui peut me dire ce que cela signifie exactement ?



la commande "echo $PATH" affiche la variable $PATH.

C'est une variable d'environnement, c'est à dire que c'est un truc qui
sert à la configuration de ton shell.

Il y a plein de variables d'environnement.
Celle ci indique où se trouvent les binaires

Par exemple la commande ls se trouve dans /bin :

$ which ls
/bin/ls


Si tu tapes
PATH=rien

puis que tu retapes ls, tu auras :

$ PATH=rien
$ ls
-bash: ls: command not found

C'est à dire que le shell ne sait plus où chercher la commande "ls".
Ni toutes les autres d'aileur.

par contre si tu indiques le chemin complet, il n'a plus besoins de
chercher les commandes et ça fonctionne :
$ /bin/ls
Desktop
Documents
Downloads
Library
Movies
Music
Pictures
Projects
Public


En fermant ta fenêtre de terminal, puis en la rouvant, tu auras à
nouveau la variable PATH avec tout dedant.

A quoi ça sert ?
A indiquer où se trouvent tes binaires.

Quand est-ce que tu pourrais avoir à le modifier ?
Par exemple si tu fais un super script qui se nome "monscript".
Tu le places dans /Users/bernd/bin
(c'est l'emplacement usuel pour tes propres scripts / binaires)

Pour le lancer tu dois écrire
/Users/bernd/bin/monscript

ou alors modifier ton $PATH en y ajoutant /Users/bernd/bin/
afin de pouvoir juste taper "monscript" pour le lancer.

On peut placer des binaires où on veux sur son ordi et des tas de softs
les mettent dans des endroits qui leur sont propre.
Fink place les binaires dans /sw/bin, darwinport les place sauf erreur
dans /opts/bin, chez toi tu as des trucs dans /usr/texbin.
Par défaut le $PATH ne connais pas ces chemins.

Comment modifier le $PATH ?
Tout dépends de ton shell et de sa configuration.
avec bash, par exemple, on peut ajouter un fichier ~/.profile et y
mettre :
PATH=$PATH:~/bin
pour ajouter ~/bin au $PATH.

Note qu'il y a plein d'autres variables d'environnement.
avec bash, pour lister toutes les variables d'environnement,
tu peux taper la commande "set"

$ set
BASH=/bin/bash
BASH_VERSINFO=([0]="3" [1]="2" [2]="17" [3]="1" [4]="release"
[5]="i386-apple-darwin9.0")
HISTFILESIZEP0
HISTSIZEP0
LESS='-X -m'
PAGER=less
PATH='/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:~/bin:/u
sr/local/sbin:/sw/bin:/sw/sbin:/System/Library/ServerSetup'
[snip]


En espérant avoir été clair ... :)

--
Nicolas Michel
Avatar
romer
Michel Nicolas Alex wrote:

> Qui peut me dire ce que cela signifie exactement ?

la commande "echo $PATH" affiche la variable $PATH.


...

En espérant avoir été clair ... :)



Merci de cette longue info - c'est très clair en effet et plus que le
bouquin que je suis en train de lire (Unix, CampusPress) qui effleure à
peine le sujet en 3 lignes pas très explicites.
--
A+

Romer
Avatar
Nicolas-Michel_REMOVE
Bernd wrote:

Merci de cette longue info - c'est très clair en effet et plus que le
bouquin que je suis en train de lire (Unix, CampusPress) qui effleure à
peine le sujet en 3 lignes pas très explicites.



Tien, ça me rappelles ...

La première fois que j'ai vu quelqu'un avec un problème de $PATH,
je bossais encore avec Mac OS 9.

Je l'ai vraiment pris pour un con, et unix avec :
Mais c'est quoi ce système où on s'emmerde avec des trucs pareils.
ça va pas non ? ^_^

Voilà qui ne me rajeunis pas.


--
Nicolas Michel
Avatar
blanc
Bernd wrote:

Quand je lance dans la ligne de commande echo PATH, j'obtiens cela :

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/usr/X11/bin.

Qui peut me dire ce que cela signifie exactement ?



J'ajouterais à toutes les bonnes infos qui t'ont été données, que :
- si tu veux savoir dans lequel des dossiers du PATH se trouve telle ou
telle commande, tu peux utiliser la commande which. Par exemple
which rm
te donne (normalement) : /bin/rm
- si tu veux exécuter une commande qui se trouve dans un autre dossier,
il fait faire un chemin complet (absolu ou relatif). Par exemple, si tu
as mis une commande "toto" dans /Users/bernd/bin comme suggéré
précédemment, et si ce dossier n'est pas dans ton PATH, tu peux lancer
toto par l'une des trois commandes suivantes :

/Users/bernd/bin/toto (chemin absolu)
~/bin/toto (chemin relatif à ton "home")
./toto (chemin relatif au répertoire courant)

(cette dernière fonctionne à condition que ton répertoire courant soit
justement celui qui contient la commande, soit : /Users/bernd/bin )

- si tu veux que le répertoire courant soit dans le PATH, tu peux le
rajouter, mais ce n'est pas recommandé, et en tout cas il vaut mieux le
rajouter à la fin du PATH :

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/usr/X11/bin:.

(Le point est d'ailleurs facultatif)
--
JiPaul.
/ /--/--// Jean-Paul Blanc
|/| L | quelquepart en (somewhere in)
/|| = ||| FRANCE