状況
- MSYS2 をインストーラからインストール
- スタートメニューから MSYS2 Shell を起動すると、cmd.exeが一瞬起動し、終了した後。msys_shell.batが起動する
-
pacman -Syuu
などでパッケージをアップデート - スタートメニューから MSYS2 Shell を起動すると、cmd.exeが終了しない
環境
- Windows7
- インストーラ
- msys2-x86_64-20160205.exe
原因
スタートメニューに登録されている MSYS2 Shell のリンクは以下になっています。
C:\Windows\System32\cmd.exe /A /Q /K C:\msys64\msys2_shell.bat
cmd.exe の各オプションの意味は以下の通りです。
オプション | 意味 |
---|---|
/A |
出力をANSIで |
/Q |
エコーがOFFの状態でプロンプトを起動 |
/K <command> |
で指定した内容を実行。引き続きcmd.exeを表示 |
/C <command> |
で指定した内容を実行。cmd.exeは終了 |
解決策
そのため以下のように/K
オプションではなく/C
オプションを指定してやるとcmd.exeは終了します。
C:\Windows\System32\cmd.exe /A /Q /C C:\msys64\msys2_shell.bat
未解決の謎
- なぜ
msys2_shell.bat
ではなくこのようなショートカットがスタートメニューに登録されているのか? - なぜ pacman でパッケージをアップデートする前は
/K
オプションにもかかわらず cmd.exe が終了していたのか?
既に試したこと
$ pacman -V
の結果が 4.2.1.6187
だった場合、pacman -Syuu
ではなく update-core
と pacman -Suu
の実行の組み合わせでアップデートするべきだった1みたいなのですが、やり直してみたところそれが原因ではないようでした