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


73

我在中定义了一些不同的功能.bash_profile。我通常记得函数的名称,但是想在运行它之前先看一下代码。

在我的.bash_profile我有以下几点:

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

现在,我想在Bash中运行以下内容:

$ <something> gpm

预期结果:不要执行功能,而只是打印出功能定义本身。

Answers:


95

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

这个答案过去常说的是,您可以使用type内置函数在bash中获得函数定义type gpm。但是,使用declare其他答案中所述的方法在各个方面都更好。


1
尽管'declare'通常更适合脚本处理,但是对于频繁使用命令行,我还是更喜欢'type',因为我只<type>四个字母!
赫尔曼Bouzas

我实际上更喜欢,type gpm因为它可以用来显示函数或别名...当您有许多自定义快捷键时非常有用
Conal Trinitrotoluene Da Costa

72

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


12
+1-比type不打印“ gpm is a function”行更好。
l0b0 2012年

请注意declare,现货OSX中不提供。
hlfcoding 2014年

3
@hlfcoding:您为什么这么认为?它是内置的shell,甚至Mac OS附带的旧版bash都有它。
David Ongaro

1
声明(单独)还将打印所有功能-afaikt类型无法执行。
markhahn

2
注意:在kshtypeset克隆克隆中,基本上执行与相同的操作declare
Wyatt8740 '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.