Na manpage de whereis
, diz claramente (ênfase minha):
The whereis utility checks the standard binary directories for the specified programs, printing out the paths of any it finds.
The path searched is the string returned by the sysctl(8) utility for the ''user.cs_path'' string
Ao contrário disso, which
é a ferramenta comumente usada para verificar onde um binário é para o caminho do usuário.
The which utility takes a list of command names and searches the path for each executable file that would be run had these commands actually been invoked.
Isso explica sua diferença, pois /opt/local/bin
não é um caminho "padrão" para todo o sistema - afinal, MacPorts é uma instalação totalmente opcional - e sysctl
tem apenas /usr/bin:/bin:/usr/sbin:/sbin
em seu user.cs_path
por padrão.
Em geral, atenha-se a which
ou which -a
para encontrar um binário em vez de usar whereis
.
Você pode, teoricamente, alterar user.cs_path
por meio de
sysctl -w user.cs_path=/opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
mas não sei se é uma boa ideia.