Questão quais diferenças / whereis


Qual é a diferença entre which e whereis ?


89


origem


Sinto muito, mas no meu sistema 10.5.8 OS X que e onde sempre dê os mesmos resultados. Talvez isto é uma questão específica muito OS X, desde que eu concordo, um resultado diferente é esperado. Talvez whereis não cumpra o que deveria fazer. Pelo menos os dois exemplos (veja abaixo) não estão funcionando: whereis ls e whereis php sempre dão o mesmo resultado que ... Alguém pode confirmar isso? O Snow Leopard se comporta da mesma maneira? - Wolf
Sim, eu sei, é por isso que fiz esta pergunta. - mk12
@Wolf aqui está um exemplo de which e whereis dando saída diferente (no macOS Sierra) apple.stackexchange.com/questions/259047/… - Matthew
@ mk12 eu sinto como type é superior. Também conhece aliases definidos, funções, etc. - Blauhirn


Respostas:


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 arquivos "possivelmente úteis", enquanto which apenas procura por 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

103



não sabia sobre o que é, obrigado. - mk12
BTW, eu removeria a tag "osx", já que esta questão se aplica a todas as variantes unix (incluindo Linux, BSD, Mac OS X, ...) - Denilson Sá Maia
mudou para unix - mk12
Há mais do que isso. No meu sistema, whereis e que retornam diferentes caminhos executáveis. Eu só posso obter o caminho para o que realmente funciona com whereis, não aquele para which. - Jordan Reiter
@JordanReiter: Não pode ser! which mostra o caminho real. Você tem certeza do caminho apontado por which não é apenas um symlink para o caminho apontado por whereis? Talvez seja um alias de shell. No bash, tente correr type your_cmd_here. - Denilson Sá Maia


whereis procura os locais padrão * nix para um comando especificado.

which pesquisa seu PATH específico do usuário (que pode incluir algumas das localizações onde pesquisa e não pode incluir outras - também pode incluir alguns locais que whereis não pesquisa se você adicionou ao seu PATH)


20



O que é o * nix? - mk12
Unix, Linux etc. (Mac OS X pertencente ao etc.)
Ohhh, haha, eu sempre achei que o estouro de pilha estava censurando o U no unix sempre que eu via isso por alguma razão. - mk12
Não. Apenas uma convenção bastante comum de uso de curingas criativos para se referir a uma família de sistemas operacionais semelhantes. ;)


Citando suas páginas de manual:

Onde é :

onde está localizada fonte / binária e   seções de manuais para arquivos especificados.

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 qual :

que retorna os nomes de caminho do   arquivos que seriam executados no   ambiente atual

Por exemplo :

$ which php
/usr/bin/php

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


6





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

$ que ls
  / bin / ls
  $ que ifconfig
  $ # Sem saída, porque o ifconfig existe apenas no PATH da raiz.

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

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

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


1



você executou o comando updatedb? localizar confia nisso, tanto quanto me lembro - Oliver M Grech