He estado probando una instalación mínima de Fedora. Para verificar la ruta de intérpretes como python o node, normalmente uso which
.
Noto which
que no está instalado por defecto. Podría agregar el paquete, pero me pregunto si hay un shell incorporado que se pueda usar para realizar esta tarea común.
Estoy usando bash 4.2.
which
. ¿Por qué no usar "which"? ¿Qué usar entonces?Respuestas:
Puede usar
type
, que es un Bash incorporado:Para obtener documentación, consulte
help [t]ype
, que se refiere a latype
sección en labash
página del manual.(
help type
imprime las páginas de ayuda para dos incorporaciones que comienzan con la cadena "tipo", una de las cuales es obsoleta y no tiene ninguna relación con esto).fuente
type -a
a mí mismo. ¿Por qué los corchetes[t]ype
?type -a
imprimirá todas las cosas a las que apunta el argumento, y no solo lo que se ejecutará al escribirlo.which
. ¿Por qué no usar "which"? ¿Qué usar entonces?type -a
es siempre lo que se ejecutaría. Hago lo mismo que Glenn y siempre usotype -a
también.type -p
no muestra la ruta si el comando es un alias.type -P
siempre muestra la ruta de comando correctamente. Yo creo que. debemos actualizar la respuesta aceptada comotype -P
@ l0b0Puedes usar
type
ocommand -v
. La salida detype
es legible por humanos; la salida decommand -v
puede ser ejecutada por Bash.Tenga en cuenta que en realidad son un poco diferentes.
type
ycommand
busque el valor hash del comando. Es decir, si escribecmd
,type cmd
ocommand -v cmd
le dirá exactamente lo que va a ser ejecutado. También funcionan en alias, funciones de Bash y componentes incorporados de Bash (aunquetype -p
los ignorará y solo devolverán archivos verdaderos).which
solo hace una búsqueda en la RUTA. Esto es diferente porque:which
, pero al ejecutar ese comando se usará el valor hash (puede forzar la actualización del hash en Bash conhash -r
).Por lo general, la gente realmente quiere
type
, nowhich
, al menos para uso interactivo, ya que lo usan para averiguar "¿de dónde viene este comando cuando lo ejecuto?" Solo debe usarlowhich
si realmente desea hacer una búsqueda de RUTA.fuente
command -v
es el equivalente deksh
whence
.where
,whence
y por supuesto tambiénwho
,why
ywhen
? ¿Por qué no haywhat
?echo 'main(){printf("what\n");}' | sudo cc -x c - -o /usr/local/bin/what