为什么Cygwin可以运行.bat脚本?

当我在Cygwin中从bash执行.bat脚本时,它运行的是什么机制? 我知道,如果我运行.EXE它将启动,无论.exe是来自Cygwin还是来自更传统的环境。 我明白,当我用#执行可执行脚本! Cygwin一开始就提供了运行的魔力。

但为什么一个.bat脚本工作? Cygwin中是否有一些组件知道Windows .bat脚本是什么以及如何处理它? 还是在Windows下执行一个调用来启动一个不会自动为.bat脚本工作的.EXE文件呢?

Solutions Collecting From Web of "为什么Cygwin可以运行.bat脚本?"

我相信cygwin中的bash将bat扩展看成是被标记为可执行文件的(cygwin命令是windows常规)。 因此,它会通过相关的解释器(cmd.exe,per os配置)来加载和执行文件,就像它创建一个新的bash实例来运行你的#! 脚本(每个POSIX标准)。

运行

./test.bat params 

从bash似乎相当于

 cmd /c test.bat params 

如果你想fork一个* .cmd文件执行,就像一个ShellScript进程并把他的日志附加到一个文件中:

 cmd /c test.bat > nohup.out & 

请享用!