Вызов программы, когда функция bash имеет то же имя - PullRequest
23 голосов
/ 16 июня 2011

В моем скрипте bash есть следующая функция:

make() {
    cd Python-3.2
    make
}

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

Ответы [ 2 ]

51 голосов
/ 16 июня 2011

Вы можете использовать встроенный 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.
10 голосов
/ 16 июня 2011

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

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

$(which make)

, которая найдет полный путь и выполнит make.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...