"dónde está" y "cuál" devuelven rutas diferentes en Mac OS X

"dónde está" y "cuál" devuelven rutas diferentes en Mac OS X

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).

Estas son salidas de consola decualydónde escomandos:

$ 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 la versión del puerto mac en PATH)

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

Respuesta1

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

La utilidad Whereis comprueba eldirectorios binarios estándarpara 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 Which toma una lista de nombres de comandos y busca la ruta de cada archivo ejecutable que se ejecutaría.si estos comandos realmente hubieran sido invocados.

Eso explica su diferencia, ya que /opt/local/binno es una ruta "estándar" para todo el sistema (después de todo, MacPorts es una instalación completamente opcional) y sysctlsolo tiene /usr/bin:/bin:/usr/sbin:/sbinsu user.cs_pathconfiguración predeterminada.

En general, utilice whicho which -abusque un binario en lugar de utilizar whereis.


Teóricamente puedes cambiar user.cs_patha través de

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

pero no sé si es tan buena idea.

información relacionada