如何列出所有导出的bash函数?

如何列出所有导出的bash函数?,bash,shell,Bash,Shell,在bash中,我们可以通过以下方式导出函数: fname(){ echo "Foo" } export -f fname 在这种情况下,将导出函数fname。但是如何列出这个或其他导出的函数呢?AFAIK,命令export或export-p可用于显示所有导出/包含的变量,但不包括函数。以下将按名称列出所有导出的函数: declare -x -F 如果您还想查看功能代码,请使用: declare -x -f 有关详细信息,请参见帮助声明。declare是要使用的命令 下面是一个设置和

在bash中,我们可以通过以下方式导出函数:

fname(){
  echo "Foo"
}

export -f fname

在这种情况下,将导出函数
fname
。但是如何列出这个或其他导出的函数呢?AFAIK,命令
export
export-p
可用于显示所有导出/包含的变量,但不包括函数。

以下将按名称列出所有导出的函数:

declare -x -F
如果您还想查看功能代码,请使用:

declare -x -f 

有关详细信息,请参见帮助声明。

declare
是要使用的命令

下面是一个设置和导出某些函数并将其全部列出或仅列出一个特定函数的示例:

$ foo() { echo "Foo"; }
$ export -f foo
$ bar() { echo "Bar"; }
$ export -f bar
$
$ declare -f
bar ()
{
    echo "Bar"
}
declare -fx bar
foo ()
{
    echo "Foo"
}
declare -fx foo
$
$ declare -f foo
foo ()
{
    echo "Foo"
}
$

所选解决方案的输出为:

declare -fx exported_function_one declare -fx exported_function_two
在我的例子中,因为我只想知道函数的名称,所以我这样做了:

exported_functions=$(declare -x -F | sed 's/declare -fx//')
哪些产出:

exported_function_one exported_function_two

希望它能帮助别人:D

它适用于“导出”,但不适用于通过命令“source”导出的函数。
source
不导出任何内容。这只是“包含”另一个源文件。那么我如何知道包含了哪些功能?这是另一个问题-在新帖子中要求它。同意!增加了一个新职位。谢谢