我们的ksh环境定义了几个函数。可以使用typeset -f
ksh命令(或functions
别名)列出这些函数的名称。是否可以看到这些函数的定义(即源代码)?
这似乎是一个显而易见的问题,但我已经尝试了typeset -f
的各种参数而没有运气。
作为一个例子(在Linux上):
$ foo()
> {
> echo foo
> }
$ foo
foo
$ typeset -f foo
foo
$
对于环境中默认定义的某些(但不是全部)其他功能,typeset -f
会显示来源。
更新1:Linux内核2.4.21-32
正在发生这种情况更新2:更新2:Ctrl-V给出“版本M 1993-12-28 n +” - 看起来这是一个相当旧版本,所以可能没有下面Gilles提到的修复
谢谢, 史蒂夫
答案 0 :(得分:4)
要查看给定函数的来源,请使用typeset -f <function-name>
,例如:
$ foo
foo
$ typeset -f foo
function foo
{
echo foo
}
您还可以使用裸typeset -f
查看所有功能及其来源。
答案 1 :(得分:2)
问题没有提到ksh的版本,但暗示了可能有错误或限制的旧版本。以下是ksh93更改日志的相关摘录:
08-01-31 ---释放ksh93s + ---
07-11-01排版-f fun未显示函数定义的错误 在子shell中调用时已经修复。03-03-18 ---释放ksh93o ---
03-02-28所有函数定义都可以使用typeset -f not显示 只是存储在历史文件中的那些。另外,排版+ f 显示函数名称,后跟包含的注释 行号和定义此函数的文件的路径名。