Qual è la differenza tra which
e whereis
?
Che ne dici di conoscere whereis
e which
usando 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
Fondamentalmente, whereis
cerca i file "possibilmente utili", mentre which
cerca solo i file eseguibili.
Uso raramente whereis
. D'altra parte, which
è molto utile, specialmente negli script. which
è la risposta alla seguente domanda: Da dove viene questo comando?
$ which ls
/bin/ls
$ whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.bz2 /usr/share/man/man1/ls.1.bz2
whereis
cerca le posizioni standard * nix per un comando specificato.
which
cerca il PATH specifico dell'utente (che può includere alcune delle posizioni in cui vengono eseguite le ricerche e potrebbe non includerne altre; potrebbe anche includere alcune posizioni che whereis
non esegue la ricerca se lo avessi aggiunto al PATH)
Citando le loro pagine man:
whereis :
whereis individua le sezioni source/binary e manuals per i file specificati.
Per esempio :
$ whereis php
php: /usr/bin/php /usr/share/php /usr/share/man/man1/php.1.gz
cioè, l'eseguibile "php" e altre cose (come le pagine man).
e che :
che restituisce il percorso dei file che verrebbero eseguiti nell'ambiente corrente
Per esempio :
$ which php
/usr/bin/php
cioè, solo l'eseguibile "php".
which cerca gli eseguibili nelle directory specificate dalla variabile di ambiente PATH. E se scoperto, verrà stampato il percorso completo di questo eseguibile.
$ quale ls
/bin/ls
$ che ifconfig
$ # Nessun output, perché ifconfig esiste solo nel PATH di root.
whereis cerca gli eseguibili, i file di origine e le pagine di manuale usando automaticamente un database creato dal sistema.
$ dove è di meno
less:/bin/less/usr/bin/less/usr/bin/X11/less /usr/share/man/man1/less.1.gz
Ma sembra che whereis e locate non usa lo stesso database. Quando ho installato un software e poi usato whereis e locate immediatamente per cercare questo software. Il risultato è che whereis potrebbe trovare alcuni file relativi a questo software mentre locate non poteva. Utilizzano davvero database diversi? Come funziona il database? - Be ', che ne dici di non essere pedante? :)