6

Можно ли вызвать команду bash, которая была переопределена функцией? Я хотел бы сделать pushd без псевдонимов аргументов для pushd . в противном случае получите нормальное поведение.

я пробовал

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

но это, кажется, дает бесконечную рекурсию. Обычно я бы использовал полный путь к любой программе, которую я переопределяю, но push - встроенная функция bash, так что это невозможно.

1 ответ1

9

Вы должны использовать builtin команду:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .