Função que sobrescreve o comando bash

6

É 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.

    
por Andrew Wood 05.04.2011 / 20:26

1 resposta

9

Você deve usar o comando builtin :

pushd(){
   if [ $# -eq 0 ]; then
      builtin pushd .
   else
      builtin pushd "$@"
   fi
}
    
por 05.04.2011 / 20:44

Tags