无法通过 ssh 输入字母‘e’

无法通过 ssh 输入字母‘e’

现在,我在管理的 Ubuntu 14.04.2 LTS 服务器上遇到了一些非常非常奇怪的行为。

通过 ssh 从 cygwin(mintty)或 Linux 机器上的终端连接到服务器,我无法输入字母e

我做了以下调试:

  • e可以在远程服务器上的 vim 中输入该字母
  • e可以在本地机器的终端上输入该字母
  • $TERM被设定为xterm
  • $LANG并设置$LANGUAGE$LC_ALLde_DE.utf8
  • locale charmap返回UTF-8

现在,我完全不知道是什么原因导致了这种情况。

我很高兴得到一些关于如何解决这个问题的建议。

答案1

我的问题和无法在 amazon ec2 中输入小写的 e(Amazon Linux),但类似。

检查后/etc/inputrc发现没什么异常,我才想起我确实在 中设置了一些键绑定。/etc/bash.bashrc不过,这个已经存在很长时间了,而且运行正常。为什么现在会出现问题呢?

我检查时发现/etc/bash.bashrc

由于所有文件都使用 ansible 进行管理,因此也使用 ansible 插入了此命令:

- name: Up Arrow Command Search
  lineinfile: dest=/etc/bash.bashrc line="bind '\"\e[A\"':history-search-backward"

- name: Down Arrow Command Search
  lineinfile: dest=/etc/bash.bashrc line="bind '\"\e[B\"':history-search-forward"

显然,最近的 ansible 更新改变了 lineinfile 的行为,因此该命令导致

bind \e[A:history-search-backward
bind \e[B:history-search-forward

代替

bind '"\e[A"':history-search-backward
bind '"\e[B"':history-search-forward

并因此导致了奇怪的行为。

非常感谢艾瑞克·雷诺夫,感谢他链接到了另一个有类似问题的问题!

相关内容