Bash 正在吞噬 Ch、Cj、Ck 和 Cl

Bash 正在吞噬 Ch、Cj、Ck 和 Cl

我在尝试映射 Ch ... Cl 以在 Tmux 中在窗格之间移动时发现了这个问题。当我按下按键时,没有任何内容传输到 Tmux。

这是在装有 Bash 4.3.11 的 Ubuntu 14.04 VM 上进行的。我正在从 Mac OS Mojave 进行 ssh 连接。

我可以在 Mac 上使用这些键。例如,当我将它们输入 cat 时,它会接收这些键并输出一些文本:

  ~/mac: cat
^H^K^L

当我在虚拟机上通过 ssh 运行 cat 时,明确分配了一个终端,它也能正常工作:

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

但是当我登录到我的虚拟机并运行 cat 时,字符会被吞掉而不是传递到 cat:

  ~/vm: cat


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

正如实验cat所示,并不是我的虚拟机上的终端吞噬了输入。我的理解是,输入从终端传到 bash,再传到 bash 内部运行的进程,所以这似乎表明 bash 吞噬了输入。我该如何进一步调试?

答案1

免责声明:我会把这作为评论写下来,但我没有足够的业力,所以请不要给我差评。

Bash 使用 GNU readline 库来处理命令行编辑和键绑定。

您能否发布此命令的输出,以便我们查看是否有任何内容与“Control-hjkl”绑定,从而阻止键序列通过:

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

相关内容