¿Cómo verificar qué comando se toma?

9

Tengo un script de shell llamado foo.shen /usr/local/sbin. Además uso otro script con el mismo nombre. Se almacena en /home/user/scripts.

Ambos caminos pertenecen PATH. ¿Cómo puedo averiguar cuál de esos scripts se ejecuta al escribir foo.shen la línea de comando? ¿Puedo influenciarlo?

nulo
fuente

Respuestas:

10

Hace unos días estaba satisfecho con mi respuesta. También sabía que el whichcomando no se usa para probar si existe un comando. Ahora no estoy tan satisfecho con mi respuesta, y me refiero a esta gran respuesta .


Con un simple whichcomando:

which foo.sh

O un typecomando:

type foo.sh

Y puede influir en esto con el orden de las rutas en su $PATHo a través de una ruta absoluta cuando se inicia el script, EG

/home/user/scripts/foo.sh

Ejemplo

Si PATH se define a continuación

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Y comienzas un script o algo más que está dentro /usr/local/biny dentro /usr/bin, el script /usr/local/bincomo una prioridad más alta.

AB
fuente
1
Hablando de eso bashy zshtambién está el typeincorporado; en cambio zsh which, de manera diferente a bash, es un incorporado (y no /usr/bin/which)
kos
@muru gracias. Ya lo sabía un poco, pero no con tanto detalle. He agregado mis puntos de vista a mi respuesta. Gracias de nuevo.
AB