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
locate
esto, puede ayudarlo a encontrar archivos. Utiliza una base de datos mantenida por laupdatedb
cual se ejecuta desde un trabajo cron. Dado quelocate
busca 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 -a
puede ser confuso. por ejemplo, en caso denvm
que sea una función bash que necesitaba hacer:type -a nvm | head -n1
averiguar qué es exactamentenvm
.type -a
genera la definición de la función y el tipo de ejecutable. El riesgo con el usohead
es 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
which
es 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 sutype
lugar.type -a lshw
PATH
es 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
which
comando 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
readlink
y alimentarlo con la salida dewhich
:El
-f
parámetro le indicareadlink
que 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
where
comando, por ejemplo:fuente
El shell Korn
ksh
, ofrece elwhence
incorporado, que identifica otros complementos incorporados, macros, etc.which
Sin embargo, el comando es más portátil.fuente
whence -a
es similar a Bashtype -a
.Una alternativa a
type -a
escommand -V
Como 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