Je suis désolé, mais sur mon système OS X 10.5.8, qui donne toujours les mêmes résultats. Peut-être que c'est une question très spécifique à OS X, puisque je suis d'accord, un résultat différent est attendu. Peut-être que whereis ne se conforme pas à ce qu'il devrait faire. Au moins les deux exemples (voir ci-dessous) ne fonctionnent pas: whereis ls et whereis php donnent toujours le même résultat que lequel ... Quelqu'un peut-il confirmer cela? Snow Leopard se comporte-t-il de la même manière?
Wolf
Oui je sais, c'est pourquoi j'ai posé cette question.
@ mk12 Je me sens comme typesupérieur. Il connaît également des alias définis, des fonctions, etc.
phil294
Réponses:
121
Que diriez-vous d'apprendre whereiset d' whichutiliser whatis?
$ whatis which
which (1) - shows the full path of (shell) commands
$ whatis whereis
whereis (1) - locate the binary, source, and manual page files for a command
Fondamentalement, whereisrecherche des fichiers «éventuellement utiles», alors que whichseuls les exécutables sont recherchés.
Je l'utilise rarement whereis. D'autre part, whichest très utile, spécialement dans les scripts. whichest la réponse à la question suivante: D'où vient cette commande?
$ which ls
/bin/ls
$ whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.bz2 /usr/share/man/man1/ls.1.bz2
BTW, je voudrais supprimer la balise "osx", car cette question s'applique à toutes les variantes d'Unix (y compris Linux, BSD, Mac OS X, ...)
Denilson Sá Maia
changé pour unix
mk12
1
Il y a plus que ça. Sur mon système, whereis et qui renvoient différents chemins exécutables. Je ne peux obtenir que le chemin vers celui qui fonctionne réellement whereis, pas celui pour which.
Jordanie Reiter
1
@ JordanReiter: Cela ne peut pas être! whichmontre le chemin réel. Êtes-vous sûr que le chemin indiqué par whichn'est pas simplement un lien symbolique au chemin indiqué par whereis? Peut-être que c'est un alias de shell. En bash, essayez de courir type your_cmd_here.
Denilson Sá Maia
23
whereis recherche les emplacements standard * nix pour une commande spécifiée.
whichrecherche dans votre PATH spécifique à l'utilisateur (qui peut inclure certains des emplacements où des recherches sont effectuées, mais peut ne pas en inclure d'autres - il peut également inclure des emplacements qui whereisn'effectuent pas de recherche si vous avez ajouté à votre PATH)
qui recherchent des exécutables dans les répertoires spécifiés par la variable d’environnement PATH. Et s’il est au courant, le chemin complet de cet exécutable sera imprimé.
$ which ls
/ bin / ls
$ ifconfig
$ # Aucune sortie, car ifconfig n'existe que dans le chemin PATH de la racine.
Whereis recherche les exécutables, les fichiers sources et les pages de manuel à l'aide d'une base de données créée automatiquement par le système.
$ whereis less
less: / bin / less / usr / bin / less / usr / bin / X11 / less /usr/share/man/man1/less.1.gz
Mais il semble que whereis et localiser ne pas utiliser la même base de données. Lorsque j’ai installé un logiciel et que j’ai utilisé whereis et localiser immédiatement pour rechercher ce logiciel. Le résultat est que, où pourrait trouver certains fichiers liés à ce logiciel alors que localiser ne le pouvait pas. Utilisent-ils vraiment une base de données différente? Comment fonctionne la base de données? - Bon, pourquoi ne pas refuser d'être pédant? :)
which
etwhereis
une sortie différente (sur macOS Sierra) apple.stackexchange.com/questions/259047/…type
supérieur. Il connaît également des alias définis, des fonctions, etc.Réponses:
Que diriez-vous d'apprendre
whereis
et d'which
utiliserwhatis
?Fondamentalement,
whereis
recherche des fichiers «éventuellement utiles», alors quewhich
seuls les exécutables sont recherchés.Je l'utilise rarement
whereis
. D'autre part,which
est très utile, spécialement dans les scripts.which
est la réponse à la question suivante: D'où vient cette commande?la source
whereis
, pas celui pourwhich
.which
montre le chemin réel. Êtes-vous sûr que le chemin indiqué parwhich
n'est pas simplement un lien symbolique au chemin indiqué parwhereis
? Peut-être que c'est un alias de shell. En bash, essayez de courirtype your_cmd_here
.whereis
recherche les emplacements standard * nix pour une commande spécifiée.which
recherche dans votre PATH spécifique à l'utilisateur (qui peut inclure certains des emplacements où des recherches sont effectuées, mais peut ne pas en inclure d'autres - il peut également inclure des emplacements quiwhereis
n'effectuent pas de recherche si vous avez ajouté à votre PATH)la source
Citant leurs pages de manuel:
où est :
Par exemple :
c'est-à-dire l'exécutable "php", et quelques autres choses (comme des pages de manuel).
et qui :
Par exemple :
c'est-à-dire, seulement l'exécutable "php".
la source
qui recherchent des exécutables dans les répertoires spécifiés par la variable d’environnement PATH. Et s’il est au courant, le chemin complet de cet exécutable sera imprimé.
Whereis recherche les exécutables, les fichiers sources et les pages de manuel à l'aide d'une base de données créée automatiquement par le système.
Mais il semble que whereis et localiser ne pas utiliser la même base de données. Lorsque j’ai installé un logiciel et que j’ai utilisé whereis et localiser immédiatement pour rechercher ce logiciel. Le résultat est que, où pourrait trouver certains fichiers liés à ce logiciel alors que localiser ne le pouvait pas. Utilisent-ils vraiment une base de données différente? Comment fonctionne la base de données? - Bon, pourquoi ne pas refuser d'être pédant? :)
la source