Posted at

MSYS2 Shell を起動すると cmd.exe も立ち上がってしまう

More than 3 years have passed since last update.


状況


  1. MSYS2 をインストーラからインストール

  2. スタートメニューから MSYS2 Shell を起動すると、cmd.exeが一瞬起動し、終了した後。msys_shell.batが起動する


  3. pacman -Syuu などでパッケージをアップデート

  4. スタートメニューから 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-corepacman -Suu の実行の組み合わせでアップデートするべきだった1みたいなのですが、やり直してみたところそれが原因ではないようでした