我曾经在O'Reilly的Bash书中读过以下内容(我的摘要):
cd () {
echo "Improved CD !"
# Improvement one;
command cd
# Improvement two;
# Do cool stuff...
}
cd
command
当包含内建函数的名称与内建函数同名时,此命令很有用-它可以防止函数中内建函数的递归循环。
我的问题是,如果只调用一次函数,为什么会首先出现递归循环?
如果你试试
cd () {
echo "Improved CD !"
# Improvement one;
cd
# Improvement two;
# Do cool stuff...
}
cd
不带 command
,cd
将调用cd
函数,将调用cd
函数,将调用cd
函数,依此类推:cd
函数内部的语句将调用cd
函数,而不是cd
内置函数。您会看到“改进的CD!” 在您的终端上反复出现了恶心的广告。
最终结果将因外壳而异:Zsh将停止(“达到最大嵌套功能级别”),Bash将崩溃。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句