“Whereis” dan “which” mengembalikan jalur yang berbeda di Mac OS X

27

Saya mendapatkan OpenSSL 9.8 default (Mac OS X 10.6.8) dan memutuskan untuk menginstal versi terbaru (1.0.1) melalui MacPorts ( sudo port install openssl).

Ini adalah output konsol yang diperintahkan dan di mana :

$ whereis openssl
/usr/bin/openssl

(Ini adalah sistem default)

$which openssl
/opt/local/bin/openssl

(ini diinstal melalui MacPorts)

$ openssl version
OpenSSL 1.0.1c 10 May 2012

(ada versi port mac di PATH)

Mengapa jalur yang berbeda dikembalikan untuk whereisdan which, dan apakah ini oke? Apakah ada cara untuk mendapatkan hasil yang sama?

jctim
sumber

Jawaban:

31

Di halaman manualnya whereis, tertulis dengan jelas (beri penekanan pada saya):

Utilitas whereis memeriksa direktori biner standar untuk program yang ditentukan, mencetak jalur apa pun yang ditemukannya.

Path yang dicari adalah string yang dikembalikan oleh utilitas sysctl (8) untuk string `` user.cs_path ''

Bertentangan dengan itu, whichadalah alat yang biasa digunakan untuk memeriksa di mana biner untuk jalur pengguna Anda.

Utilitas mana yang mengambil daftar nama perintah dan mencari path untuk setiap file yang dapat dieksekusi yang akan dijalankan seandainya perintah ini benar-benar dipanggil .

Yang menjelaskan perbedaan Anda, karena /opt/local/bintidak seluruh sistem "standar" jalan-setelah semua, MacPorts adalah opsional instalasi-dan sysctlhanya memiliki /usr/bin:/bin:/usr/sbin:/sbindi nya user.cs_pathper default.

Secara umum, patuhi whichatau which -auntuk menemukan biner daripada menggunakan whereis.


Anda secara teoritis dapat mengubah user.cs_pathmelalui

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

tapi saya tidak tahu apakah itu ide yang bagus.

slhck
sumber
Terima kasih, Anda telah menyatakan bahwa "Utilitas di mana memeriksa direktori biner standar " - itulah jawabannya! tidak dapat memberikan suara untuk Anda menjawab karena reputasi kecil ((
jctim
Jangan khawatir, Anda pasti akan segera mendapatkan lebih banyak reputasi. Selamat Datang di Pengguna Super! :)
slhck
Memiliki masalah yang sama dengan psql pada OS X - sayangnya user.cs_path tidak dapat ditulisi. Namun, semakin dekat dengan solusi saya, terima kasih atas jawaban yang bermanfaat!
user208769