linux - 为什么 cd 会调用函数 ':' ?

标签 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 然后尝试重现它不起作用)。

有谁知道为什么会这样?

最佳答案

你做的是一个非常糟糕的主意,因为 : 是 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/

相关文章:

c++ - Unix 和 Windows 服务器上的 GUI 开发

linux - GREP 两个特定的列

linux - 如何压缩不符合特定条件的文件?

git - 使用来自 cmder 的 git 别名

ios - Swift iOS 接受输入并将其用作函数名称

linux - 如何在Linux终端中搜索单词

linux - 如何在 bash 运行时使用 $ 创建变量值

bash - shell脚本如何返回本地用户?

c - 如何在 C 中将 ENUM 作为函数参数传递

在 C 函数中更改字符数组