関数が定義されているかを調べる

whichコマンドを関数に対して実行するとzshでのみ関数の定義を返す。

$ zsh -c 'f() { echo foo; }; which f'
f () {
        echo foo
}
$ bash -c 'f() { echo foo; }; which f' || echo 'not found'
not found
$ ksh -c 'f() { echo foo; }; which f' || echo 'not found'
not found

bashではdeclare -fkshではtypeset -fを使用して関数の定義を表示できる。

$ bash -c 'f() { echo foo; }; declare -f f'
f ()
{
    echo foo
}
$ ksh -c 'f() { echo foo; }; typeset -f f'
f() { echo foo; };