BashはCh、Cj、Ck、Clを飲み込んでいる

BashはCh、Cj、Ck、Clを飲み込んでいる

Tmux でペイン間を移動するために Ch ... Cl をマップしようとしたときに、この問題を発見しました。キーを押しても、Tmux には何も送信されません。

これは、Bash 4.3.11 を搭載した Ubuntu 14.04 VM 上にあります。私は Mac OS Mojave から ssh で接続しています。

私は Mac でこれらのキーを使用できます。たとえば、cat に入力すると、キーが受信され、テキストが出力されます。

  ~/mac: cat
^H^K^L

明示的にターミナルを割り当てて、VM 上で ssh 経由で cat を実行すると、同様に動作します。

  ~/mac: ssh -t vm "cat"
^H^K^L

しかし、VM にログインして cat を実行すると、文字は cat に渡されるのではなく、飲み込まれてしまいます。

  ~/vm: cat


# hitting C-h, C-k, C-l...nothing happens

実験がcat示すように、入力を飲み込んでいるのは VM 上のターミナルではありません。私の理解では、入力はターミナルから bash へ、そして bash 内で実行されているプロセスへと送られるので、bash が入力を飲み込んでいるようです。これをさらにデバッグするにはどうすればよいでしょうか?

答え1

免責事項: これをコメントとして残したいのですが、十分なカルマを持っていないので、皆さん私に低評価を付けないでください。

Bash は、コマンドライン編集とキーバインドを処理するために GNU readline ライブラリを使用します。

このコマンドの出力を投稿して、キーシーケンスを妨げて通過できないようにする何かが「Control-hjkl」にバインドされているかどうかを確認できますか。

bind -p | grep -v "(not bound)"

関連情報