2009-04-24 9 views
15

Cygwinのbashから.batスクリプトを実行すると、どのような仕組みで動作していますか? .EXEがCygwinかより伝統的な環境かにかかわらず、.EXEを実行すると、起動されることを理解しています。 #!で実行可能なスクリプトを実行するとわかります。最初はCygwinが実行するための魔法を供給しています。Cygwinで.batスクリプトを実行できるのはなぜですか?

しかし、なぜ.batスクリプトが機能しますか? Cygwinの内部にWindowsの.batスクリプトが何であり、何をするべきかを認識しているコンポーネントがありますか?それとも、Windows上で.batスクリプトの代わりに自動的には動作しない.EXEファイルを起動する呼び出しを実行するのはどういうわけか不可能なのでしょうか?

答えて

10

cygwinのbashは、バット拡張機能にフラグが立てられていると見なします(CygwinのヒットチップからWindowsへのコンベンション)。このように、ファイルを関連するインタプリタ(cmd.exe、os構成ごと)でロードして実行します。これは、あなたの#を実行するためのbashの新しいインスタンスを作成するのと同じです!スクリプト(POSIX標準)。 bashのから

./test.bat params 

cmd /c test.bat params 
+1

通常のUNIXシェルスクリプトでは、shebangの後に指定されたプログラムをロードする必要があります。盲目的にはbashを使用しません(bashを指定するスクリプトには移植性が高くない可能性があります:)) – Joey

+0

これは.batでは有効ですが、 .ps1(PowerShell)。 Cygwinには、.batファイルの組み込み処理が組み込まれている必要があります。 –

9

そして、あなたは、シェルスクリプトのプロセスのように* .CMDファイルの実行をforkして、ファイルに自分のログを追加したい場合は:

cmd /c test.bat > nohup.out & 

お楽しみください!

2

に相当すると思わ実行

関連する問題