Open1
git-bash上からbatを呼び出すときにハマったことメモ

環境
- git version 2.47.1.windows.2
- GNU bash, version 5.2.37(1)-release (x86_64-pc-msys)
- WSL バージョン: 2.5.7.0
WSLでのcmd.exeの呼び出し
WSL上からcmd.exe
を呼び出すときは以下のコマンドで呼び出せる。
/c
オプションを使うとコマンド実行後にbashに処理が戻る。
cmd.exe /c echo test
batファイルを呼び出すときは以下のように引数を""
で囲うことで正常に動作する。
引数内のパスの指定は\
になるので気を付けること。
cmd.exe /c "path\to\dir\script.bat arg1 arg2"
Git Bashでのcmd.exeの呼び出し
git-bash上で同じコマンドを呼び出してもcmd.exeが立ち上がるだけでその後処理は正常に動作しない。
# NG
cmd.exe /c echo test
git-bashでは/
から始まるオプションの引数を//
に修正することで解決する。
# OK
cmd.exe //c echo test
なぜこのような動作になるのか?
git-for-windowsのrelease notesに理由が書いてある。/
から始まるものはPOSIX準拠のパス形式からWindows準拠のパス形式への変換が行われてしまうため正常に動作しない。
//
にすることでパス変換を回避することができる。
結論
git-bash
を使用するのはやめたほうがいいかもしれない。