Вызов программы, когда функция bash имеет то же имя

У меня есть следующая функция в моем bash script:

make() {
    cd Python-3.2
    make
}

Когда make вызывается внутри этого script, эта функция вызывается, которая повторяется. Вызов функции make внутри функции должен вызвать внешнюю утилиту make. Помимо переименования моей функции make, какой самый чистый способ достичь этого?

Ответ 1

Вы можете использовать встроенный command, чтобы отключить поиск функций оболочки.

command: command [-pVv] command [arg ...]
    Execute a simple command or display information about commands.

    Runs COMMAND with ARGS suppressing  shell function lookup, or display
    information about the specified COMMANDs.  Can be used to invoke commands
    on disk when a function with the same name exists.

    Options:
      -p    use a default value for PATH that is guaranteed to find all of
        the standard utilities
      -v    print a description of COMMAND similar to the `type' builtin
      -V    print a more verbose description of each COMMAND

    Exit Status:
    Returns exit status of COMMAND, or failure if COMMAND is not found.

Ответ 2

Используйте полный путь к программе. Например. /usr/bin/make.

Если вы не знаете полный путь, вы можете использовать утилиту which, например:

$(which make)

Это найдет полный путь и выполнит make.