覆盖 bash 命令的函数

覆盖 bash 命令的函数

是否可以调用已被函数覆盖的 bash 命令?我想使用pushd不带参数的别名来pushd .获得正常行为。

我试过了

pushd(){
   if [ $# -eq 0 ]; then
      pushd .
   else
      pushd $@
   fi
}

但这似乎会导致无限递归。通常我会使用要覆盖的程序的完整路径,但这push是内置的 bash 功能,因此这是不可能的。

答案1

您应该使用以下builtin命令:

推送(){
   如果 [ $# -eq 0 ]; 那么
      内置 pushd。
   别的
      内置 pushd "$@"
}

相关内容