6

Is it possible to call a bash command which has been overridden with a function? I'd like to make pushd with no arguments alias to pushd . otherwise get normal behaviour.

I've tried

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

but this seems to give infinite recursion. Normally I'd use the full path to whatever program I'm overriding, but push is a built-in bash thing, so that's not possible.

1 Answer 1

9

You should use the builtin command:

pushd(){
   if [ $# -eq 0 ]; then
      builtin pushd .
   else
      builtin pushd "$@"
   fi
}
2
  • 1
    The entire function could even be rewritten as pushd() { builtin pushd "${1:-.}"; } Apr 5, 2011 at 19:01
  • "${@-.}" would be better, since pushd can take multiple arguments. Apr 27, 2019 at 15:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .