Sé que cuando está en shell, los únicos comandos que se pueden usar son los que se pueden encontrar en algún conjunto de directorios en PATH. Incluso si no sé cómo ver qué directorios están en mi variable PATH (y esta es otra buena pregunta que podría responderse), lo que me gustaría saber es:
Vengo a shell y escribo:
$ lshw
Quiero saber un comando en shell que pueda decirme DÓNDE se encuentra este comando. En otras palabras, ¿dónde se encuentra este "archivo ejecutable"?
Algo como:
$ location lshw
/usr/bin
¿Nadie?
fuente

locateesto, puede ayudarlo a encontrar archivos. Utiliza una base de datos mantenida por laupdatedbcual se ejecuta desde un trabajo cron. Dado quelocatebusca en una base de datos en lugar de en todo el sistema de archivos, es mucho más rápido quefind(lo que podría usarse como último recurso).type -apuede ser confuso. por ejemplo, en caso denvmque sea una función bash que necesitaba hacer:type -a nvm | head -n1averiguar qué es exactamentenvm.type -agenera la definición de la función y el tipo de ejecutable. El riesgo con el usoheades que, en el caso de nombres con más de un tipo, no se generarán los tipos adicionales. Es posible que desee mirartype -t.Me gusta esto:
Para ver todos los comandos que coinciden en su ruta:
fuente
whiches problemático porque hay múltiples implementaciones, muchas de las cuales hacen completamente lo incorrecto, y otras parecen funcionar bien, pero tienen sorpresas extrañas. Deberías preferir en sutypelugar.type -a lshwPATHes una variable de entorno y se puede mostrar con el comando echo:Es una lista de caminos separados por el carácter de dos puntos '
:'El
whichcomando le dice qué archivo se ejecuta cuando ejecuta un comando:a veces lo que obtienes es una ruta a un enlace simbólico; si desea rastrear ese enlace hasta donde vive el ejecutable real, puede usarlo
readlinky alimentarlo con la salida dewhich:El
-fparámetro le indicareadlinkque siga siguiendo el enlace simbólico de forma recursiva.Aquí hay un ejemplo de mi máquina:
fuente
fuente
En TENEX C Shell, tcsh , se pueden enumerar las ubicaciones de un comando, o si es un comando incorporado, utilizando el
wherecomando, por ejemplo:fuente
El shell Korn
ksh, ofrece elwhenceincorporado, que identifica otros complementos incorporados, macros, etc.whichSin embargo, el comando es más portátil.fuente
whence -aes similar a Bashtype -a.Una alternativa a
type -aescommand -VComo la mayoría de las veces estoy interesado solo en el primer resultado, también lo hago desde la cabeza. De esta manera, la pantalla no se inundará de código en caso de una función bash.
fuente