1

fname在名为a.sh的文件中定义一个 bash 函数:

fname(){
  echo "Foo"
}

我们可以这样包含函数:

source a.sh

之后我们可以fname在shell中调用。我想知道是否有办法显示所有包含的功能。

谢谢!

4

2 回答 2

3

要列出所有声明的函数和主体,您可以运行:

set

或者

declare -f

如果您只想要函数名称:

declare -f -F 

或者

declare -f -F | cut -d " " -f3 

请注意,typeset2013 年已弃用

并来自http://wiki.bash-hackers.org/scripting/obsolete关于typeset

这与上述密切相关,应该经常一起使用。typeset 的存在主要是为了与 ksh 兼容,但在 Bash 中被标记为“已弃用”(尽管我并不完全同意这一点)。这在某种程度上是有道理的,因为无法保证未来的兼容性,而且任何兼容性都需要了解其他 shell 的非 POSIX 特性及其差异。使用 declare 而不是 typeset 强调您的意图是“仅限 bash”,并且肯定会在其他任何地方中断(如果幸运的话,可能 zsh 除外)。Dash 和 Debian 对本地内置程序的政策要求使问题更加复杂,它本身与 Bash 和其他 shell 不完全兼容。

于 2013-03-12T12:12:20.803 回答
0

typeset -f

关于文档typeset

于 2013-03-12T12:12:51.630 回答