显示 shell 函数定义

我们知道在 bash/zsh 中可以用 “typeset -f” 来显示某个函数的定义。如果不用这个内置命令的话我们应该怎么显示函数定义呢?

下面这个技巧就可以用来显示函数定义:
[bash]

!/bin/bash

def() {
eval “$1() $2”
eval “function_$1=”$1() $2””
}

def foo ‘{
echo bar
}’
[/bash]

其中 foo 是定义的函数,$function_foo 是函数 foo 的定义。不过缺点也很明显,每次定义函数必须使用”def”,而且后面用的单引号也是个问题。