现在,我在管理的 Ubuntu 14.04.2 LTS 服务器上遇到了一些非常非常奇怪的行为。
通过 ssh 从 cygwin(mintty)或 Linux 机器上的终端连接到服务器,我无法输入字母e
。
我做了以下调试:
e
可以在远程服务器上的 vim 中输入该字母e
可以在本地机器的终端上输入该字母$TERM
被设定为xterm
$LANG
并设置$LANGUAGE
为$LC_ALL
de_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
并因此导致了奇怪的行为。
非常感谢艾瑞克·雷诺夫,感谢他链接到了另一个有类似问题的问题!