我正在使用ubuntu(amazon ec2),当我输入cd时,会发生以下情况:

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

我以前做过:成为一个函数:: () { echo hi; }
这种情况发生在顶级shell$SHLVL=1中,但不发生在任何子shell中(键入bash然后尝试重新生成它不起作用)。
有人知道为什么会这样吗?

最佳答案

您所做的是一个非常糟糕的主意,因为:是shell null命令。
在需要命令的构造中,它有时很有用。例如,如果要使用while编写无限循环,它将有助于:

while true ; do
  :
done

去掉:后,它就不再是格式良好的:do需要一个命令。在下面的三行代码中,只有最后一行是正确的,请尝试它们:
while true do done
while true do ; done
while true do : ; done

如果将:重新定义为一个函数,那么一个好问题是:它定义得好吗?但别介意,假设它有效。突然,这些不时出现在脚本中的:事件将调用您的函数!
在amazon ec2 shell环境中cd是什么?也许这是一个函数。键入set并浏览输出。我经常定义一个自定义的cd函数;这样做很有用。您可以执行动态更新提示和窗口标题等操作。

关于linux - 为什么cd会调用函数':'?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37759466/

10-09 08:35
查看更多