查找 Bash 函数的定义

查找 Bash 函数的定义

我工作的环境里有很多遗留的 shell 脚本魔法。命令行中经常使用的一个东西是 bash 函数,这些函数来自某个文件,包括某个文件,包括某个文件...包括在我的 .bash_profile 中。有没有办法获取这些函数的定义,甚至更好地找到它们定义的位置,而无需通过 5 层包含来追踪它们?

答案1

获取函数定义:

type -a function_name

答案2

假设您有一个名为 foo 的函数,下面的命令将获取该函数定义的位置,也就是说,它将获取定义该函数的文件的名称以及该文件中定义该函数的行号。

# 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

就我而言,这些命令的输出是:

foo 32 /source/private/main/developer/cue.pub.sh

答案3

要查看函数的定义(而不是它的来源),请使用:

declare -f <functionname>

答案4

另一种方法,最近我发现更简单:

  which <functionname>

(这也将显示它是别名还是脚本,但不会追踪别名的来源)

相关内容