为什么cd可以调用函数':'?

时间:2016-06-11 02:49:00

标签: linux bash function amazon-ec2 cd

我正在使用Ubuntu(Amazon EC2),当我输入cd时,会发生这种情况:

$ cd
hi
hi
hi
hi
hi
hi
hi
hi
hi
$

我之前做过:成为一个函数:: () { echo hi; }

这发生在顶级shell $SHLVL=1中,但不在任何子shell中(键入bash然后尝试重现它不起作用)。

有谁知道为什么会这样?

1 个答案:

答案 0 :(得分:5)

你所做的是一个非常糟糕的主意,因为:是shell null命令。

在需要命令的构造中,它会不时有用。例如,如果您希望代码使用while进行无限循环,则有助于:

while true ; do
  :
done

取出:并且它不再格式良好:do需要一个命令。在以下三个单行中,只有最后一个是正确的 - 尝试它们:

while true do done
while true do ; done
while true do : ; done

如果您将:重新定义为一个函数,那么一个好问题是:它定义得很好吗?但没关系,假设它有效。突然间,这些出现在:中的cd不时出现在脚本中会调用你的函数!

Amazon EC2 shell环境中的set是什么?也许这是一个功能。输入cd并浏览输出。我经常定义自定义/index.html功能;它很有用。您可以执行诸如动态更新提示和窗口标题等内容。