2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

msys2 で敢えて mintty を使わない方法

Last updated at Posted at 2021-04-09

簡単に

C:\msys64\msys2_shell.cmd -mingw64 -defterm

とすれば mintty じゃなくて cmd で bash が上がるので winpty のお世話にならずに済むのではないでしょうか。

msys2_shell.cmd の中を見ると、-defterm オプションを付けると login-shell が Windows の start コマンドで実行されるので、login-shell が cmd.exe で動作する、というからくりです。

というわけで面倒ですが MSYS2 MinGW 64-bit などのショートカットのリンク先を編集して、
C:\msys64\msys2_shell.cmd -mingw64
となっているところを
C:\msys64\msys2_shell.cmd -mingw64 -defterm
にしておくと楽かな? お好みでどうぞ、かな?

いま開いてる PowerShell の上で実行したい場合

そもそも新たなウィンドウすら不要で、今動かしているCLI端末でmingw64環境に移行したいのであれば、

PS C:\Users\demouser> C:\msys64\msys2_shell.cmd -mingw64 -defterm -no-start 
demouser@demopc MINGW64 ~
$

ってな具合ですんなり移行してくれます。不慣れなbatファイルなんて書かなくていいんです。

なんで捨てるの?

msys2 で C言語を勉強している初心者が地味にハマる問題として、printf( )とscanf( )を組み合わせて簡単な対話型プログラムを書いたとき、mintty で動作している mingw 環境でCLIバイナリを動かすと、入力と出力の表示が噛み合わず、printf( )の出力がscanf( )の入力すべて受け付けてからじゃないと表示されない、みたいな問題が発生するためです。

これについては コンパイルしたCLIバイナリを winpty を通して実行すれば解決することが分かっているのですが、まあ、インストールを含めて忘れてしまいがちです。何とかならないかな? という一案でした。

なお、msys2は C:\msys64 にインストールしたという前提です。念のため。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?