我正在使用 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/