In der Manpage von whereis
heißt es klar (Hervorhebung meines):
Das Dienstprogramm whereis überprüft die Standard-Binärverzeichnisse nach den angegebenen Programmen und gibt die Pfade aller gefundenen Dateien aus.
Der gesuchte Pfad ist die Zeichenfolge, die vom Dienstprogramm sysctl (8) für die Zeichenfolge "user.cs_path" zurückgegeben wird
Im Gegensatz dazu which
wird das Tool normalerweise verwendet, um zu überprüfen, wo sich eine Binärdatei für den Pfad Ihres Benutzers befindet.
Das Dienstprogramm which nimmt eine Liste mit Befehlsnamen und durchsucht den Pfad für jede ausführbare Datei, die ausgeführt werden würde, wenn diese Befehle tatsächlich aufgerufen wurden .
Das erklärt Ihren Unterschied, da /opt/local/bin
es sich nicht um einen systemweiten "Standardpfad" handelt - MacPorts ist eine vollständig optionale Installation - und hat sysctl
nur standardmäßig /usr/bin:/bin:/usr/sbin:/sbin
eine user.cs_path
Standardeinstellung.
Bleiben Sie im Allgemeinen bei which
oder which -a
, um eine Binärdatei zu finden, anstatt sie zu verwenden whereis
.
Sie können theoretisch verändern user.cs_path
durch
sysctl -w user.cs_path=/opt/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
Aber ich weiß nicht, ob das eine gute Idee ist.