quais / whereis diferenças

95

Qual é a diferença entre which e whereis ?

    
por mk12 12.09.2009 / 22:12

4 respostas

107

Que tal aprender sobre 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

Basicamente, whereis procura por arquivos "possivelmente úteis", enquanto which apenas procura executáveis.

Eu raramente uso whereis . Por outro lado, which é muito útil, especialmente em scripts. which é a resposta para a seguinte pergunta: De onde vem esse comando?

$  which ls
/bin/ls

$  whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.bz2 /usr/share/man/man1/ls.1.bz2
    
por 12.09.2009 / 22:38
21

whereis pesquisa as localizações * nix padrão para um comando especificado.

which pesquisa seu PATH específico do usuário (que pode incluir alguns locais em que ele pesquisa, e pode não incluir outros. Também pode incluir alguns lugares que whereis não pesquisa se você tivesse adicionado ao seu PATH)

    
por 12.09.2009 / 22:16
6

Citando as páginas do manual:

whereis :

whereis locates source/binary and manuals sections for specified files.

Por exemplo:

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

, isto é, o executável "php" e algumas outras coisas (como man pages).


e que :

which returns the pathnames of the files which would be executed in the current environment

Por exemplo:

$ which php
/usr/bin/php

ou seja, apenas o executável "php".

    
por 12.09.2009 / 22:17
1

que procura por executáveis nos diretórios especificados pela variável de ambiente PATH. E, se descoberto, o caminho completo desse executável será impresso.

$ which ls
/bin/ls
$ which ifconfig
$ # No output, because ifconfig only exist in root's PATH.

onde procura por executáveis, arquivos de origem e páginas de manual usando um banco de dados construído automaticamente pelo sistema.

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

Mas parece que whereis e locate não usam o mesmo banco de dados. Quando eu instalei um software e usei whereis e localize imediatamente para procurar por este software. O resultado é que whereis pode descobrir alguns arquivos relacionados a este software enquanto locate não pôde. Eles realmente usam banco de dados diferente? Como o banco de dados funciona? - Bem, que tal se recusar a ser um pedante? :)

    
por 24.01.2013 / 16:09