我想获得.bashrc
中出现的函数及其位置(定义函数的文件)列表或来自那里的任何文件。 E.g。
foo ~/.bashrc
bar ~/.bin/func.sh
可以通过declare
获取功能名称,但是它们的位置如何?我认为在.bashrc
中获取所有源文件(例如使用egrep '^ *(\.)|(source) ' ~/.bashrc
之类的内容),然后遍历declare -F | cut -d' ' -f3
并查找.bashrc
中的每个函数和源文件。有更简单的方法吗?
P.S。关于列表功能的许多其他问题(例如this),但它们不处理位置。
编辑:我在bash的手册页中找到了以下内容:
声明或排版的-F选项将列出 仅限函数名称(如果启用了extdebug shell选项,则可选择源文件和行>编号)。
但是shopt -s extdebug && declare -F
不会列出文件。
答案 0 :(得分:2)
文档没有明确说明,但您需要使用特定函数作为参数调用declare -F
,以获取其声明的文件和行号。它可以循环完成:
$ shopt -s extdebug
$ declare -F | while read foo bar fun ; do declare -F "$fun" ;done
$ shopt -u extdebug