如何在Bash中打印函数定义?

91

我在.bash_profile中定义了几个不同的函数。通常我会记住函数的名称,但希望在运行它之前快速查看代码。

在我的.bash_profile中,我有以下内容:

gpm () {
  echo "git pull origin master"
  git pull origin master
}

现在我想在Bash中运行像这样的命令:

$ <something> gpm

期望的结果:不执行函数,仅打印出函数定义本身。

2个回答

111

编辑:最好的答案不是这个,而是下面的另一个。

这个答案曾经说的是,您可以使用内置的type,例如type gpm在Bash中获取函数定义。然而,如其他答案所述,使用declare在任何方面都更好。


3
虽然“declare”通常比较适用于脚本处理,但在频繁使用命令行时,我更喜欢使用“type”,因为我只需要 <type> 四个字母! - Germán Bouzas
1
我实际上更喜欢使用 type gpm,因为它可以用来显示函数或别名... 当你有很多自定义快捷方式时非常有用。 - Conal Da Costa

97

declare -f gpm 只会打印函数 gpm 的函数定义,不包含其他文本。


13
+1 比 type 更好,因为它不会打印出“gpm是一个函数”的行。 - l0b0
只是注意到declare在现有的OSX中不可用。 - hlfcoding
3
你为什么这样认为?该命令是Shell内置命令,即使是内置于Mac OS的古老版本Bash也有它。 - David Ongaro
1
声明(仅仅是)也会打印出所有的函数 - 这是 afaikt 类型所做不到的。 - markhahn
2
注意:在ksh和kornshell克隆中,typeset基本上执行与declare相同的操作。 - Wyatt Ward
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接