2019-01-25_MSYS2(mintty)でwindowsコマンドが中止できない

このページで分かること

  • minntyでwindowsコマンドをCtrl+cで中止できない現象の解決方法

先日msys2でvagrantを動かしていたときにCtrl+cでコマンド中止ができなく非常に困ったので調べました。

環境

  • Windows10 pro v1803
  • Vagrant 2.2.2

対応方法

原因としてはminttyは対話形式のコマンドをうまく扱えない仕様があるようです。winコマンドに関してはwinptyというコマンドでラップしてあげると正常動作になりますのでaliasに登録してあげましょう。

1
alias vagran'='winpty vagrant'

.bashrcに登録してあげるとラップを意識しせずに使えるので便利です。

備考

Ruby on Railsなども同じ現象に見舞われてrails sでサーバー起動後、Ctrl+cで停止できなのでその場合はkillコマンドでプロセスを終了させるしかなさそうです。

ctrl+cでSIGINTがシェルに送られるはずですが、minttyと対話形式は相性が悪いようです。WSLからWindows側Vagrantが動かせると風の噂で聞き試しましたが上手くいかず……ぐぬぬ。

ubuntuでもネイティブなLinux環境が動くのは魅力ですが普段VagrantとDockerを使っているのでこの二つが動かないと厳しかったりします。DockerはWSLのUbuntu 16.4で動くようになったようなので後日試してみます!