В linux bash есть command которая может выполнить "настоящую" команду, даже если у вас есть имя функции или имя файла сценария, имя которого равно этой команде.

function ping(){
    echo do nothing
}
command ping

все еще будет работать.

В пакетном режиме Windows у меня есть файл ping.cmd который зацикливается, если я запускаю ping внутри него.

Что эквивалентно command в пакете Windows?

1 ответ1

2

Ответ 1: Нет, потому что пакет Windows даже не имеет таких функций, как bash. Он имеет только подпрограммы, которые используют синтаксис, отличный от обычных команд - ping vs call :ping - поэтому нет необходимости переопределять.

Если вы читаете документацию более внимательно, command пропускает только псевдонимы и функции, но ничего не делает со скриптами в $ PATH. В обеих оболочках, если вы переопределяете с помощью реального файла сценария, вам нужно найти "настоящую" команду.

Ответ 2: Чтобы избежать цикла, который вы описали, вам нужно указать полное имя "ping".

  • С bash это будет означать вызов /bin/ping , или, возможно, циклический переход по $ PATH, пока вы его не найдете.

  • В Windows такие же параметры существуют; однако, поскольку ваш скрипт на самом деле называется ping.bat или ping.cmd , вы можете запустить ping.exe чтобы избежать зацикливания.

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