Прямо сейчас я испытываю очень и очень странное поведение на сервере 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
Прямо сейчас я совершенно не понимаю, что могло быть причиной этого.
Я был бы очень рад совету, как это исправить.
Моя проблема не такая, как невозможно ввести e в нижнем регистре в amazon ec2 (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
И поэтому привело к странному поведению.
Большое спасибо Эрик Ренуф, за ссылку на другой вопрос с аналогичной проблемой!