“Whereis” e “what” retornam caminhos diferentes no Mac OS X

27

Eu tenho o OpenSSL 9.8 padrão (Mac OS X 10.6.8) e decidi instalar a versão mais recente (1.0.1) via MacPorts ( sudo port install openssl).

Estes são saída do console de que e whereis comandos:

$ whereis openssl
/usr/bin/openssl

(este é o sistema padrão)

$which openssl
/opt/local/bin/openssl

(isso é instalado via MacPorts)

$ openssl version
OpenSSL 1.0.1c 10 May 2012

(existe a versão da porta mac no PATH)

Por que caminhos diferentes são retornados para whereise which, e está tudo bem? Existe alguma maneira de obter resultados iguais?

jctim
fonte

Respostas:

31

Na página de manual whereis, ele diz claramente (ênfase minha):

O utilitário whereis verifica os diretórios binários padrão para os programas especificados, imprimindo os caminhos dos que encontrar.

O caminho pesquisado é a sequência retornada pelo utilitário sysctl (8) para a sequência `` user.cs_path ''

Ao contrário disso, whiché a ferramenta comumente usada para verificar onde está o binário do caminho do usuário.

O utilitário que pega uma lista de nomes de comandos e pesquisa o caminho para cada arquivo executável que seria executado se esses comandos fossem realmente chamados .

Isso explica a sua diferença, já que /opt/local/binnão é um caminho "padrão" em todo o sistema - afinal, o MacPorts é uma instalação completamente opcional - e sysctlpossui apenas /usr/bin:/bin:/usr/sbin:/sbino user.cs_pathpadrão.

Em geral, atenha-se whichou which -aencontre um binário em vez de usá-lo whereis.


Você pode mudar teoricamente user.cs_pathatravés

sysctl -w user.cs_path=/opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

mas não sei se é uma boa ideia.

slhck
fonte
Obrigado, você destacou que "O utilitário whereis verifica os diretórios binários padrão " - eis a resposta! Não foi possível votar em você para responder a causa de pequena reputação ((
jctim
Não se preocupe, você certamente obterá mais reputação em breve. Bem-vindo ao Super Usuário! :)
slhck
Tenha o mesmo problema com o psql no OS X - infelizmente o user.cs_path não é gravável. Chegando mais perto da minha solução, obrigado por uma resposta tão útil!
user208769