Почему Cygwin может запускать сценарии .bat? - PullRequest
18 голосов
/ 25 апреля 2009

Когда я запускаю скрипт .bat из bash в Cygwin, по какому механизму он запускается? Я понимаю, что если я запустлю .EXE, он запустится независимо от того, является ли .EXE из Cygwin или из более традиционной среды. Я понимаю, что когда я выполняю исполняемый скрипт с #! вначале Cygwin предоставляет магию для его запуска.

Но почему работает скрипт .bat? Есть ли какой-то компонент внутри Cygwin, который знает, что такое скрипт Windows .bat и что с ним делать? Или это то, что в Windows как-то невозможно выполнить вызов для запуска .EXE-файла, который вместо этого автоматически не будет работать для сценария .bat?

Ответы [ 3 ]

13 голосов
/ 13 марта 2012

Бег

./test.bat params

из bash похоже на

cmd /c test.bat params
11 голосов
/ 25 апреля 2009

Я считаю, что bash в cygwin рассматривает расширение bat как помеченный как исполняемый файл (соглашение о переходе с cygwin на windows). Таким образом, он загружает и выполняет файл с соответствующим интерпретатором (cmd.exe, per os configuration), так же, как он создает новый экземпляр bash для запуска вашего #! скрипты (по стандарту posix).

1 голос
/ 05 июля 2013

А если вы хотите разорвать выполнение файла * .cmd как процесс ShellScript и добавить его журнал в файл:

cmd /c test.bat > nohup.out &

Наслаждайтесь!

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