Подтвердить что ты не робот

Почему Cygwin может запускать сценарии .bat?

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

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

4b9b3361

Ответ 1

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

Ответ 2

Выполнение

./test.bat params

из bash кажется эквивалентным

cmd /c test.bat params

Ответ 3

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

cmd /c test.bat > nohup.out &

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