题 不能在亚马逊ec2中输入低级电子邮件(亚马逊Linux)


在我的新ec2版本上运行几天后,会发生以下情况:

  1. 我登录SSH,一切都很好,我做我的编码
  2. 我第二天回来,登录SSH
  3. 我不能打一个较低的套装 e 我再输入错误了
  4. 我尝试从另一台计算机ssh,同样的问题
  5. 我重新启动服务器,同样的问题
  6. 我打开 nano 要么 vi 和 e 工作正常,只是没有 bash 要么 sh
  7. 我终止服务器,创建一个新服务器,从头开始安装,几天后再次发生

这令人费解!我在哪里开始排除故障?

我的本地机器设置:

  • Windows XP或7
  • putty(最新)或cygwin / openssh

EC2设置

输出 stty -a 虽然我不能打字 e

sh-4.1$ stty -a
speed 38400 baud; rows 30; columns 95; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>;
swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W; lnext = ^V;
flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 -hupcl -cstopb cread -clocal -crtscts -cdtrdsr
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany
-imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke

如果它帮助其他人遇到类似的问题,我创建了一个脚本(称为 sub)将大写的E转换为低级的,然后回显命令。然后我用反引号运行它来得到一个 e 在命令行上::

#!/bin/sh
echo ${@//E/e}

> `sub Emacs /Etc/profilE`

更新

  1. 这打破了所有用户
  2. 仅在bash中(csh工作正常)
  3. 仅在emacs编辑模式下

我创造了 聊天室讨论这个问题 并在解决方案中磨练。


16
2017-11-29 16:27




张贴输出 stty -a 当ec2服务器变得不稳定时 - MikeyB
在/ etc / profile,〜/ .profile或〜/ .bashrc中有什么好笑的吗?你可以su给另一个用户并尝试一下吗?似乎要么或者你的键盘字符映射被更改 - 可能在更新期间? - thinice
如果你跑 reset 其次是 stty sane 问题消失了吗? - voretaq7
@ voretaq7 - 不,但我不确定从脚本运行它们意味着什么(显然我不能从CLI运行它们,因为它们包含 e :(我的脚本中是否需要说“这适用于我的shell会话”? - Kato
另外看看 ~/.inputrc 和 /etc/inputrc 对于破坏的readline键绑定。 - Sergey Vlasov


答案:


你错误地说:

export EDITOR=/usr/bin/emacs

进入你的 /etc/inputrc。这将把字母“e”映射到任何东西。

删除它,你应该没事。


21
2017-11-29 22:38



非常感谢你的帮助!要记住在我外出喝酒的时候不要让人们节目;( - Kato
有人可以解释为什么设置一个环境变量打破字母'e'? - Russell Borogove
/etc/inputrc 不适用于环境变量。这是readline读取的特定输入格式。 - MikeyB