web-dev-qa-db-ja.com

SSHで文字「e」を入力できません

現在、管理しているUbuntu 14.04.2 LTSサーバーで非常に奇妙な動作が発生しています。

Cygwin(mintty)またはLinuxマシンの端末からsshを介してサーバーに接続しているときに、eを入力できません。

私は次のデバッグを行いました:

  • 文字eは、リモートサーバーのvimに入力できます。
  • 文字eは、ローカルマシンのターミナルに入力できます
  • $TERMxtermに設定されます
  • $LANG$LANGUAGEおよび$LC_ALLde_DE.utf8に設定されます
  • locale charmapUTF-8を返します

今、私はこれを引き起こしている可能性のあるアイデアを完全に失っています。

これを修正する方法に関するいくつかのアドバイスについては、私は非常に満足しています。

59
Zulakis

私の問題は Amazon ec2(Amazon Linux)では小文字のeを入力できない と同じではありませんが、似ています。

/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

そしてそのため、奇妙な行動をもたらしました。

Eric Renouf に感謝します。同様の問題を持つ他の質問へのリンクに感謝します!

59
Zulakis