2009-04-24 38 views
15

當我從Cygwin的bash執行.bat腳本時,它運行的是什麼機制?我知道,如果我運行.EXE,它將啓動,無論.exe是來自Cygwin還是來自更傳統的環境。我明白,當我用#執行可執行腳本! Cygwin在開始時提供了它運行的魔力。爲什麼Cygwin可以運行.bat腳本?

但爲什麼.bat腳本可以工作? Cygwin中是否有一些組件知道Windows .bat腳本是什麼以及如何處理它?還是在Windows下執行一個調用以啓動一個不會自動爲.bat腳本工作的.EXE文件的方式在某種程度上是不可能的?

回答

10

我相信cygwin中的bash將bat擴展看作被標記爲可執行文件(一個cygwin命令提示符到windows約定)。因此,它會通過相關的解釋器(cmd.exe,per os配置)來加載和執行文件,就像它創建一個新的bash實例來運行你的#!腳本(每個posix標準)。

+1

對於普通的UNIX shell腳本,它應該加載在shebang之後指定的程序,而不是盲目地使用bash(以及指定bash的腳本可能不是非常便攜的:)) – Joey 2009-04-25 05:28:52

9

運行

./test.bat params 

從慶典似乎是等同於

cmd /c test.bat params 
2

如果你想要到餐桌的* .cmd文件執行類似的shell進程,他的日誌追加到文件中:

cmd /c test.bat > nohup.out & 

Enjoy!

相關問題