我曾经在 O'Reilly 的一本 Bash 书中读过以下内容(我的总结):
命令并启用
cd () {
echo "Improved CD !"
# Improvement one;
command cd
# Improvement two;
# Do cool stuff...
}
cd
command
当包含内置函数的函数与该内置函数同名时,该命令很有用 - 它可以防止函数中内置函数的递归循环;
我的问题是,如果我们只调用该函数一次,为什么首先会出现递归循环?
答案1
如果你试试
cd () {
echo "Improved CD !"
# Improvement one;
cd
# Improvement two;
# Do cool stuff...
}
cd
没有 command
,cd
将调用cd
函数,该函数将调用该cd
函数,该函数将调用该cd
函数,依此类推:cd
函数内部的语句调用该cd
函数,而不是cd
内置函数。您会看到“改进的 CD!”在你的终端中重复令人恶心的事情。
最终结果将根据 shell 的不同而有所不同:Zsh 将停止(“达到最大嵌套函数级别”),Bash 将崩溃。