“cd”重新定义导致 bash 中无限循环

“cd”重新定义导致 bash 中无限循环

我重新定义cd.bashrc

function cd() {
  builtin cd $*
  pwd
}

这招管用了一段时间,直到我输错了

cd *2

作为

cd *(2

当我这样做时,bash 提示我,我输入“d'oh”,当我输入时),它陷入了无限循环。

好吧,我应该在函数定义中使用"$@"而不是$*(尽管我仍然不确定我是否可以解释原因)。但是为什么这会导致 bash 超越这个尘世?

答案1

除非你当前目录中有一个名为的目录$'2\n',否则我无法理解它。

该语法*(pattern)是一种“扩展通配符”模式(參考) 返回零个或多个给定模式。给定您的模式(a2和换行符),我期望它返回 null。然后调用不带参数的函数应该只需 cd 到您的主目录即可。

相关内容