Você deve usar o comando builtin :
pushd(){
if [ $# -eq 0 ]; then
builtin pushd .
else
builtin pushd "$@"
fi
}
É possível chamar um comando bash que foi substituído por uma função? Eu gostaria de fazer com que pushd sem alias de argumentos para pushd . obtivesse um comportamento normal.
Eu tentei
pushd(){
if [ $# -eq 0 ]; then
pushd .
else
pushd $@
fi
}
mas isso parece dar uma recursão infinita. Normalmente eu usaria o caminho completo para qualquer programa que eu estivesse sobrescrevendo, mas push é uma coisa básica, então isso não é possível.
Tags bash