如何在ubuntu上的.bashrc函数或别名中使用参数?

时间:2016-09-23 17:25:51

标签: bash

例如,这不起作用:

man(){ man -H "$1" & }

但我需要参数,因为我希望命令以&符结束。

这不起作用:

man(){ firefox & man -H }

如果firefox进程由man和man终止,我不希望firefox关闭。

1 个答案:

答案 0 :(得分:3)

参数不是问题。 递归是(最严重的直接)问题。

当你有一个名为man的函数man时,它会自行调用。你正在开始一组无限的背景贝壳。使用command将阻止该递归,因为它绕过了函数查找。

建议对参数传递做出的一个更改是使用"$@",因此完整的参数集不仅会传递给第一个:

man() { command man -H "$@" & }

顺便说一句,请注意,至少对于Apple使用的BSD实现,man -H期望可以将HTML转换为文本的程序的名称是紧随其后的参数。例如,如果您认为man -H bash &将在后台的Web浏览器中启动bash手册页...好吧,在您的平台上可能就是这种情况,但它并非普遍适用。