"Whereis" y "which" devuelven diferentes rutas en Mac OS X

27

Tengo el OpenSSL 9.8 predeterminado (Mac OS X 10.6.8) y decidí instalar la versión más reciente (1.0.1) a través de MacPorts ( sudo port install openssl).

Estos son salida de la consola de qué y whereis comandos:

$ whereis openssl
/usr/bin/openssl

(este es el sistema predeterminado)

$which openssl
/opt/local/bin/openssl

(esto se instala a través de MacPorts)

$ openssl version
OpenSSL 1.0.1c 10 May 2012

(hay una versión de Mac Port en PATH)

¿Por qué se devuelven diferentes rutas para whereisy which, y está bien? ¿Hay alguna manera de obtener resultados iguales?

jctim
fuente

Respuestas:

31

En la página de manual de whereis, dice claramente (énfasis mío):

La utilidad whereis verifica los directorios binarios estándar para los programas especificados, imprimiendo las rutas de cualquiera que encuentre.

La ruta buscada es la cadena devuelta por la utilidad sysctl (8) para la cadena `` user.cs_path ''

Al contrario de eso, whiches la herramienta comúnmente utilizada para verificar dónde está un binario para la ruta de su usuario.

La utilidad que toma una lista de nombres de comandos y busca la ruta para cada archivo ejecutable que se ejecutaría si estos comandos realmente se hubieran invocado .

Eso explica su diferencia, ya que /opt/local/binno es un sistema de toda la ruta, después de "estándar" de todo, MacPorts es una instalación completamente opcional y sysctlsólo tiene /usr/bin:/bin:/usr/sbin:/sbinen su user.cs_pathpor defecto.

En general, manténgase whicho which -abusque un binario en lugar de usarlo whereis.


Teóricamente puedes cambiar a user.cs_pathtravés de

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

Pero no sé si es una buena idea.

slhck
fuente
Gracias, ha resaltado que "La utilidad whereis verifica los directorios binarios estándar ", ¡esa es la respuesta! no podía votar por su respuesta debido a la pequeña reputación ((
jctim
No se preocupe, seguramente obtendrá más reputación pronto. ¡Bienvenido a Super User! :)
slhck
Tiene el mismo problema con psql en OS X: desafortunadamente user.cs_path no se puede escribir. Sin embargo, cada vez más cerca de mi solución, ¡gracias por una respuesta tan útil!
user208769