Shell 无法键入';e';或';P';在MinGW/msys外壳或端子中

Shell 无法键入';e';或';P';在MinGW/msys外壳或端子中,shell,terminal,mingw,msys,Shell,Terminal,Mingw,Msys,我曾经成功地安装并使用MinGW和msys编译和链接Windows可执行文件。在新安装的32位Vista(与我之前成功安装的平台相同)上,我遇到了一些令人抓狂的行为:当我在提供的shell环境中键入小写字母“e”或大写字母“P”时,我会听到嘟嘟声,但没有听到任何字符!例如,这意味着我不能键入“make”或“echo”然后运行这些命令。它说:m-a-k-BEEP 在通过安装程序生成的快捷方式调用msys时打开的shell中,以及在shell中,通过导航到c:\msys\1.0\bin并双击bash

我曾经成功地安装并使用MinGW和msys编译和链接Windows可执行文件。在新安装的32位Vista(与我之前成功安装的平台相同)上,我遇到了一些令人抓狂的行为:当我在提供的shell环境中键入小写字母“e”或大写字母“P”时,我会听到嘟嘟声,但没有听到任何字符!例如,这意味着我不能键入“make”或“echo”然后运行这些命令。它说:m-a-k-BEEP

在通过安装程序生成的快捷方式调用msys时打开的shell中,以及在shell中,通过导航到c:\msys\1.0\bin并双击bash.exe、sh.exe、rxvt.exe(实际上,它发出的是低沉的噪音,而不是清脆的嘟嘟声),都会出现这种无“e”嘟嘟声,但总是小写字母“e”和大写字母“P”不会在终端(或shell?显然,我无法理解这些术语之间的区别)

我已经尝试了MinGW和msys的自动安装程序,并尝试了全新的手动安装


我不太了解shell,也不太了解它们的环境在启动时是如何演变的,所以我不知道从哪里开始寻找这种古怪行为的根源。

我假设您正在使用Bash。在我看来,由于某种原因,键绑定被弄乱了

如果执行此命令:

bind -p|grep -i '"[pE]"'
您应该得到以下结果:

"E": self-insert
"e": self-insert
"P": self-insert
"p": self-insert
如果缺少“p”和“e”的条目,请尝试这些命令

bind '"e":self-insert'
bind '"P":self-insert'
显然,您无法键入字符,因此请键入其大小写相反的版本,按左箭头,然后按Alt-u将小的“p”升格,或按Alt-l(即小写的“ell”)将大写字母“E”降格(您需要在第一个命令中对每个“E”执行此操作)


如果有效,请检查
~/.inputrc
文件中是否存在无效的键绑定。此外,请检查您的启动文件,如
~/.bashrc
,等等。问题可能是引号丢失或放错了位置,可能是
\eP
之类的键绑定,默认情况下,已绑定到readline函数
do小写版本

在目录C:\Documents and Settings\yourusername中,您可以找到名为“.bashrc”的文件 添加以下两行 绑定“e”:自插入 绑定“P”:自插入


丹尼斯·威廉姆森,非常感谢!这个问题困扰了我很长时间。

你的指示非常有效。我能够看到“P”和“e”确实没有自插入绑定,添加它们后,一切都正常了。然后我开始四处寻找,在我的“~/.inputrc”文件中,我找到了我添加的有问题的行,认为它们是良性的:“echo$PATH”和“PATH=$PATH:/c/MinGW/msys/1.0/bin:.”和“echo$PATH”,无论出于什么原因,当出现问题时都会出现,取出后都会修复它。谢谢大家!@dim fish:是的,
~/.inputrc
不是一个可执行文件,所以你不能在其中放入命令。@Dennis Williamson我对“b”也有同样的问题。我在“e”上遇到了同样的问题,我通过从.inputrc中删除所有设置来解决这个问题。在“b”插入一个双引号之前,现在按“b”插入一个无限长的双引号字符串,直到我按ctrl-c。我将
bind''b':self insert'
放入inputrc中,但没有任何更改。我的msys非常小,除了coreutils之外几乎没有任何包。@otonvm:
bind
是一个shell命令,因此您可以在shell脚本中使用它(例如
~/.bashrc
)。但是,要在
~/.inputrc
中添加键绑定,请忽略
bind
命令和外部单引号集。还要注意的是,一个点是名字的第一个字符
。inputrc
@denniswillamson啊,我现在明白了!我只是假设.inputrc与.profile或.bash_profile相同。现在很明显。谢谢(很抱歉,我应该先读一下评论!)Windows上的git shell也有同样的问题,但fresh MinGW的bash没有。(同样的修复工作)。。。也许这是特定于某些MSys版本的?