git logをctrl+cで終了すると、それ以降のコマンドが表示されないの続き
Conemu+Gitのbashでgit logをctrl+cで終了すると、それ以降のコマンドが表示されないの続き。
疑問は残ったまま。
発端
あるある。
— 非実在naka aki (@naka_aki_spl) 2017年2月22日
あれ?minttyでも起きる気がする。
あとlessってそもそもctrl-cで止まるものでしたっけ?30年wくらいqしか使ってなかったや。
そうね、Linuxだとq
で止めてるんだけど、Windowsだと、たまにCtrl+c
に指が動いてしまう。
これ書いていて気づいた。
Git Bash
って、Gitインストール先\bin\bash.exe
じゃなくて、Gitインストール先\git-bash.exe
なのね。
mintty と書いたのは、Git Bash
で、Gitインストール先\bin\bash.exe
のこと。
なので、改めて確認。
git-bash.exeとbash.exeでCtrl+cで止める
スクロール待ちになっている状態のgit log
と普通に起動したless
に対して、
Ctrl+c
で止める。
ターミナル | git log | less |
---|---|---|
git-bash | 終了して、それ以降のコマンドも正常に表示される | 終了しない |
bash | 終了して、それ以降のコマンドは表示されない | 終了しない |
bashだと発生する。conemu関係なかった。
kill -INTで止めるとどうなるか?
スクロール待ちになってる状態のgit log
と、git log
から起動したless
対して
kill -INT
で止める。
ターミナル | git log | less |
---|---|---|
git-bash | 終了して、それ以降のコマンドも正常に表示される | 終了しない |
bash | 終了して、それ以降のコマンドも正常に表示される | 終了しない |
送信するシグナルの確認
git-bash
でもbash
でも、stty -a
の実行結果はintr = ^C;
なので同じはず。
疑問
kill
で指定したプロセスに対してSIGINTだと問題ないということは、
bash
でCtrl+c
でプロセスグループに属する全プロセスに対して送信するとダメのか?
そこに、Git bash
とbash
の違いがあるのか?
分からん。だれか教えて。