Buscar la ubicación de la función shell/bash en el disco

Buscar la ubicación de la función shell/bash en el disco

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 grepmi mejor opción?

Respuesta1

Esta pregunta ya fue respondidaaquí. Entonces hay dos cosas que se pueden derivar de este hecho:

  1. Deberías investigar mejor antes de publicar tu pregunta aquí (pero bueno, todos somos vagos de vez en cuando)
  2. Hay un truco mucho mejor que grephacer 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

whichsólo busca el camino. Para ver qué ejecuta realmente bash, utilice el comando integrado type:

type foo

información relacionada