web-dev-qa-db-fra.com

quelles / où sont les différences

Quelle est la différence entre which et whereis?

106
mk12

Pourquoi ne pas en savoir plus sur whereis et which en utilisant 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

En gros, whereis recherche les fichiers "éventuellement utiles", alors que which ne recherche que les exécutables.

J'utilise rarement whereis. which est très utile, spécialement dans les scripts. which est 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
115
Denilson Sá Maia

whereis recherche les commandes * nix standard pour une commande spécifiée.

which recherche dans votre PATH spécifique à l'utilisateur (ce qui peut inclure certains des emplacements où la recherche est effectuée et peut ne pas en inclure d'autres. Il peut également inclure certains endroits que whereis ne recherche pas si vous avez ajouté à votre PATH).

22
Amber

Citant leurs pages de manuel:

whereis :

whereis localise les sections source/binary et les manuels pour les fichiers spécifiés.

Par exemple :

$ whereis php
php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz

c'est-à-dire l'exécutable "php", et quelques autres choses (comme des pages de manuel).


et qui :

qui renvoie les noms de chemin des fichiers qui seraient exécutés dans l'environnement actuel

Par exemple :

$ which php
/usr/bin/php

c'est-à-dire, seulement l'exécutable "php".

6
Pascal MARTIN

qui recherche 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é.

$ qui ls
/bin/ls
$ iffconfig
$ # Aucune sortie, car ifconfig n'existe que dans le chemin de la racine.

whereis permet de rechercher des exécutables, des fichiers source et des 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 localise n'utilise pas la même base de données. Lorsque j’ai installé un logiciel, puis utilisé , whereis et localisez immédiatement pour rechercher ce logiciel. Le résultat est que whereis pourrait trouver des fichiers liés à ce logiciel tandis que localiser n'a pas pu. 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? :)

1
user192505