¿Cómo puedo encontrar la ruta a un ejecutable en OSX?

46

¿Hay algún comando que pueda usar para encontrar fácilmente la ruta a un ejecutable? Estoy buscando identificación en mi máquina local, ¿algo así como pwd?

pwd identify
=> /usr/local/bin/identify
Codebeef
fuente

Respuestas:

60

which buscará en su ruta los argumentos que proporcione, se encuentra en casi cualquier BSD o SysV UNIX

moriarty:~ dave$ which bash true false
/bin/bash
/usr/bin/true
/usr/bin/false
Dave Cheney
fuente
1
Sin whichembargo, el comando funcionará generalmente no es la herramienta adecuada para hacer este tipo de trabajo. Vea estas preguntas y respuestas de U&L: unix.stackexchange.com/questions/85249/…
slm
66
En OSX, whichno da ningún resultado para un script personalizado (que está en $PATH). typehace.
wisbucky
17

Si usa bash builtin type, le mostrará todas las ubicaciones (en ruta) para un comando:

$ type -a ls
ls is aliased to `ls --color=always'
ls is /bin/ls

$ type -a printf
printf is a shell builtin
printf is /usr/bin/printf

$ type -a touch
touch is /usr/bin/touch
touch is /bin/touch

Si el comando es una función, enumerará la definición de la función:

$ type -a somefunc
somefunc is a function
somefunc ()
{
    echo "hello, world"
}

Estos ejemplos son de un sistema Ubuntu, pero los resultados serán similares para OS X.

Dennis Williamson
fuente
44
En OSX, whichno muestra la ruta de un script personalizado (que está en $PATH). typehace.
wisbucky
3

intente 'localizar identificar'

Chopper3
fuente
55
Esto funciona cuando "cuál" no lo hará porque el ejecutable no está en su RUTA actual, sino que también tiende a arrojar muchas cosas que no desea. Primer filtro de ruta: "localizar comando | grep bin". Use "which" primero.
dmckee
0

Depende de lo que estés buscando. La mayoría de las utilidades dependen de la variable de ruta. Sin embargo, si lo que está buscando está en su camino, es probable que realmente no necesite saber dónde está, a menos que haya varias copias del mismo ejecutable.

Sin embargo, esto no se aplica a la mayoría de las cosas que se ejecutan en OSX porque no se ejecutan como binarios normales de Linux / Unix. Aquí hay algunos métodos para encontrar cosas que no están en su declaración de ruta.

encontrar:

sudo find / -name <FILE>

Esto encontrará todo lo que exista en el sistema de archivos que proporcione como primer argumento. Debe ejecutarse como root para buscar directorios privados. También admite comodines si no está completamente seguro del nombre.

Terminal:

Si tiene el archivo en el buscador, puede abrir una ventana de terminal y colocar el archivo en él. Terminal con luego mostrar la ruta completa al archivo.

Destacar:

Bastante autoexplicativo. Estás donando ciclos de procesador para permitirle mantener un índice de tu fi

keegan2149
fuente