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

Gav*_*nes 0 linux bash cd function amazon-ec2

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

$ cd
hi
hi
hi
hi
hi
hi
hi
hi
hi
$
Run Code Online (Sandbox Code Playgroud)

我之前做过:做一个功能: : () { echo hi; }

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

有谁知道为什么会这样?

Kaz*_*Kaz 5

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

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

while true ; do
  :
done
Run Code Online (Sandbox Code Playgroud)

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

while true do done
while true do ; done
while true do : ; done
Run Code Online (Sandbox Code Playgroud)

如果你重新定义:为一个函数,一个好问题是:它是否定义明确?但没关系,假设它有效.突然间,这些:在脚本中不时出现的事件将会调用你的功能!

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