„whereis“ und „which“ geben in Mac OS X unterschiedliche Pfade zurück

„whereis“ und „which“ geben in Mac OS X unterschiedliche Pfade zurück

Ich habe das Standard-OpenSSL 9.8 (Mac OS X 10.6.8) und habe mich entschieden, die neueste Version (1.0.1) über MacPorts ( sudo port install openssl) zu installieren.

Dies sind die Konsolenausgaben vonwelcheUndwo istBefehle:

$ whereis openssl
/usr/bin/openssl

(das ist das Standardsystem)

$which openssl
/opt/local/bin/openssl

(dies wird über MacPorts installiert)

$ openssl version
OpenSSL 1.0.1c 10 May 2012

(im PATH befindet sich die Version des Mac-Ports)

whereisWarum werden für und unterschiedliche Pfade zurückgegeben whichund ist das in Ordnung? Gibt es eine Möglichkeit, gleiche Ergebnisse zu erhalten?

Antwort1

In der Manpage von whereissteht eindeutig (Hervorhebung von mir):

Das Dienstprogramm „whereis“ überprüft dieStandard-Binärverzeichnissefür die angegebenen Programme und gibt die Pfade aller gefundenen Programme 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 whichist dies das Tool, das üblicherweise verwendet wird, um zu überprüfen, wo sich eine Binärdatei für den Pfad Ihres Benutzers befindet.

Das Dienstprogramm which nimmt eine Liste von Befehlsnamen und durchsucht den Pfad für jede ausführbare Datei, die ausgeführt werden sollwären diese Befehle tatsächlich aufgerufen worden.

Das erklärt Ihren Unterschied, da /opt/local/bines sich nicht um einen systemweiten „Standard“-Pfad handelt – schließlich handelt es sich bei MacPorts um eine völlig optionale Installation – und sysctlnur /usr/bin:/bin:/usr/sbin:/sbinin seiner user.cs_pathStandardeinstellung vorhanden ist.

Bleiben Sie im Allgemeinen bei whichoder, which -aum eine Binärdatei zu finden, anstatt zu verwenden whereis.


Theoretisch kann man sich ändern user.cs_pathdurch

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

aber ich weiß nicht, ob das so eine gute Idee ist.

verwandte Informationen