![覆盖 bash 命令的函数](https://linux22.com/image/1271296/%E8%A6%86%E7%9B%96%20bash%20%E5%91%BD%E4%BB%A4%E7%9A%84%E5%87%BD%E6%95%B0.png)
是否可以调用已被函数覆盖的 bash 命令?我想使用pushd
不带参数的别名来pushd .
获得正常行为。
我试过了
pushd(){
if [ $# -eq 0 ]; then
pushd .
else
pushd $@
fi
}
但这似乎会导致无限递归。通常我会使用要覆盖的程序的完整路径,但这push
是内置的 bash 功能,因此这是不可能的。
答案1
您应该使用以下builtin
命令:
推送(){ 如果 [ $# -eq 0 ]; 那么 内置 pushd。 别的 内置 pushd "$@" 菲 }