Qual é a diferença entre which
e whereis
?
which
e whereis
saída diferente dando (no MacOS Sierra) apple.stackexchange.com/questions/259047/...
type
é superior. Ele também sabe sobre aliases definidos, funções etc
Qual é a diferença entre which
e whereis
?
which
e whereis
saída diferente dando (no MacOS Sierra) apple.stackexchange.com/questions/259047/...
type
é superior. Ele também sabe sobre aliases definidos, funções etc
Respostas:
Que tal aprender whereis
e which
usar 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 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
whereis
, e não para o que which
.
which
mostra o caminho real. Tem certeza de que o caminho apontado por which
nã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
.
whereis
procura nos locais padrão * nix por um comando especificado.
which
pesquisa 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 whereis
não pesquisam se você tiver adicionado ao seu PATH)
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".
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? :)