Si tengo una función como esta:
#!/usr/bin/env bash
function foo {
}
y la función anterior está en .bash_profile, o en algún lugar.
Si lo uso which foo
, no me dará la ubicación de este comando en el script de shell.
¿Hay alguna forma de descubrir dónde está ubicado o es grep
mi mejor opción?
Respuesta1
Esta pregunta ya fue respondidaaquí. Entonces hay dos cosas que se pueden derivar de este hecho:
- Deberías investigar mejor antes de publicar tu pregunta aquí (pero bueno, todos somos vagos de vez en cuando)
- Hay un truco mucho mejor que
grep
hacer lo que quieres.
Entonces puedes obtener un archivo fuente y un número de línea de una función de shell en tu RUTA de esta manera: (crédito:esta respuesta)
# Turn on extended shell debugging
shopt -s extdebug
# Dump the function's name, line number and fully qualified source file
declare -F foo
# Turn off extended shell debugging
shopt -u extdebug
Respuesta2
which
sólo busca el camino. Para ver qué ejecuta realmente bash, utilice el comando integrado type
:
type foo