2010-04-08 19 views
5

我们的ksh环境定义了几个函数。可以使用typeset -f ksh命令(或functions别名)列出这些函数的名称。是否有可能看到这些函数的定义(即源代码)?是否可以查看ksh函数的“源”?

这似乎是一个明显的问题,但我已尝试所有方式的参数typeset -f没有运气。

作为一个例子(在Linux):

$ foo() 
> { 
> echo foo 
> } 
$ foo 
foo 
$ typeset -f foo 
foo 
$ 

对于一些(但不是全部)通过默认在环境中定义的其他功能,typeset -f确实显示源。

更新1:这是与Linux内核发生2.4.21-32

更新2:更新2:按Ctrl-V提供了 “版本中号1993年12月28日N +” - 看起来这是很老版本,所以可能没有被吉尔mentionned的修复之下

谢谢你,史蒂夫

+1

'函数'会列出源码,至少我试过了我的ksh版本 – ghostdog74 2010-04-08 13:20:02

+0

看来,在Linux上,“函数”命令显示了一些函数的源代码,但并非全部。在Solaris上它只显示功能名称的列表。 – stevec 2010-04-08 13:40:46

+0

和ksh的版本?不妨也包括发行版本及其版本。 – 2010-04-22 16:20:44

回答

2

这个问题没有提到ksh的版本,而是提出了一个可能有错误或限制的旧版本。下面是从ksh93的更新日志相关的提取物:

31年8月1日---释放ksh93s + ---
01年7月11日在排版-f乐趣并没有显示函数定义中的bug 当在子外壳中调用时已经修复。

18年3月3日---释放ksh93o ---
28年3月2日的所有功能定义可以排版显示-f不 只是那些存储在历史文件。另外,排版+ f 显示函数名称,后面跟着包含 行号的注释以及定义此函数的文件的路径名称。

+0

感谢编辑的问题。史蒂夫 – stevec 2010-08-31 16:30:15

2

要查看一个给定函数的源代码,使用typeset -f <function-name>,例如:

$ foo 
foo 
$ typeset -f foo 
function foo 
{ 
    echo foo 
} 

您也可以使用裸露的typeset -f来查看所有功能及其来源。

+0

谢谢 - 我没有意识到'functions'只是'typeset -f'的别名 - 我已经更新了上面的问题。 – stevec 2010-04-08 15:41:50

+0

这是一个奇怪的。什么版本的linux&ksh?不显示的功能有什么共同点? – pra 2010-04-08 16:18:22

+0

2.4.21-32(我也更新了上面的原始问题) – stevec 2010-04-21 15:42:48

相关问题