在我的新 ec2 构建上运行几天后,发生了以下情况:
- 我登录 SSH,一切正常,我开始编码
- 第二天我回来,登录 SSH
- 我无法再输入小写字母
e
——输入时会收到错误提示 - 我尝试从另一台计算机进行 ssh,同样的问题
- 我重启了服务器,同样的问题
- 我打开
nano
或vi
工作e
正常,只是不在bash
或sh
- 我终止了服务器,创建了一个新的服务器,从头开始安装,几天后又发生了这种情况
这真是令人困惑!我该从哪里开始排除故障?
我的本地机器设置:
- Windows XP 或 7
- putty (最新版) 或 cygwin/openssh
EC2 设置
- Amazon Linux(默认选项)
- 节点.js
- iptables 将端口 80 转发到端口 8003 上的节点
- emacs、npm 和 openssl-devel
没有其他模组
- 这是我的 /etc/inputrc
- 这是我的 ~/.bashrc 和 ~/.bash_profile
- 环境输出
输出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`
更新
- 这对所有用户都无效
- 仅在 bash 中(csh 也可以)
- 仅在 emacs 编辑模式下
我已经创建讨论此问题的聊天室并磨练解决方案。
答案1
你错误地输入了:
export EDITOR=/usr/bin/emacs
到你的 中/etc/inputrc
。这会将字母 'e' 映射为零。
去掉它你就没事了。