quais / onde estão as diferenças


112

Qual é a diferença entre whiche whereis?


Sinto muito, mas no meu sistema OS X 10.5.8, que e onde sempre dão os mesmos resultados. Talvez esta seja uma pergunta muito específica do OS X, pois concordo que se espera um resultado diferente. Talvez onde não esteja em conformidade com 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, foi por isso que fiz essa pergunta.
Mk12 12/09/09

@Wolf aqui está um exemplo de whiche whereissaída diferente dando (no MacOS Sierra) apple.stackexchange.com/questions/259047/...
Matthew

@ mk12 Eu sinto que typeé superior. Ele também sabe sobre aliases definidos, funções etc
phil294

Respostas:


121

Que tal aprender whereise whichusar 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, whereisprocura por arquivos "possivelmente úteis", enquanto whichapenas 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 este comando?

$  which ls
/bin/ls

$  whereis ls
ls: /bin/ls /usr/share/man/man1p/ls.1p.bz2 /usr/share/man/man1/ls.1.bz2

34
não sabia o que é, obrigado.
Mk12 12/09/09

1
BTW, eu remover a tag "OSX", como esta questão se aplica a todas as variantes de Unix (incluindo Linux, BSD, Mac OS X, ...)
Denilson Sá Maia

alterado para unix
mk12 12/12/09

1
Há mais do que isso. No meu sistema, onde e que retornam caminhos executáveis ​​diferentes. Só consigo encontrar o caminho para aquele que realmente roda whereis, e não para o que which.
Re

1
@JordanReiter: Não pode ser! whichmostra o caminho real. Tem certeza de que o caminho apontado por whichnão é apenas um link simbólico para o caminho apontado por whereis? Talvez seja um apelido de shell. No bash, tente executar type your_cmd_here.
Denilson Sá Maia

23

whereis procura nos locais padrão * nix por um comando especificado.

whichpesquisa seu PATH específico do usuário (que pode incluir alguns dos locais em que é pesquisado e pode não incluir outros - também pode incluir alguns lugares que whereisnão pesquisam se você tiver adicionado ao seu PATH)


O que é * nix?
Mk12 12/09/09

2
Unix, Linux etc. (Mac OS X pertencente na etc.)

8
Ohhh, haha, eu sempre pensei que estouro de pilha foi censurar a U em unix sempre que eu vi que, por algum motivo ..
MK12

Não. Apenas uma convenção bastante comum de uso de curinga criativa para se referir a uma família de sistemas operacionais semelhantes. ;)

6

Citando suas páginas de manual:

em que :

whereis localiza seções fonte / binária e manuais para arquivos especificados.

Por exemplo :

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

ou seja, o executável "php" e outras coisas (como páginas de manual).


e quais :

que retorna os nomes dos caminhos dos arquivos que seriam executados no ambiente atual

Por exemplo :

$ which php
/usr/bin/php

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


1

que pesquisam executáveis ​​nos diretórios especificados pela variável de ambiente PATH. E se for descoberto, o nome completo do caminho deste executável será impresso.

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

onde é possível procurar executáveis, arquivos de origem e páginas de manual usando um banco de dados criado pelo sistema automaticamente.

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

Mas parece que whereis e localizar não usar o mesmo banco de dados. Quando instalei um software e usei whereis e localize-o imediatamente para procurar esse software. O resultado é que whereis poderia descobrir alguns arquivos relacionados a este software enquanto localizar não podia. Eles realmente usam bancos de dados diferentes? Como o banco de dados funciona? - Que tal se recusar a ser pedante? :)


você executou o comando updatedb? localizar confia em que, tanto quanto eu me lembro
Oliver M Grech
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.