Bash:不能输入“e”,否则我会得到无限重复的“H”

Bash:不能输入“e”,否则我会得到无限重复的“H”

在我的工作场所,有几个独立的网络可供使用,它们都运行着各种版本的 RedHat Linux 4、5 和 6。

在其中一个网络上,我无法使用 bash(或者,据我发现,任何使用 bash 前端的东西,如 python、gdb 等),因为当我尝试输入以下内容时:

> exit

我得到的却是:

> HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH<control-C>

直到我按下 control-C(用于 bash 或 gdb)或者在另一个终端中对 python 执行 killall python。

我的主要工作 shell 是 tcsh,但我使用 bash 编写所有脚本。有时我也会以交互方式进入 shell 执行简单的循环等。幸运的是,“exit”在我的历史记录中,因此我可以使用向上箭头将其返回并退出。

需要说明的是:这种情况仅当我以交互方式运行这些程序时才会发生。我是否启动了 shell 并不重要:

> bash

> bash --login

> env bash --login

> env bash

无论我是否删除 bash_profile 和 bashrc 文件,都会发生这种情况。据我所知,系统配置文件中没有任何内容会导致这种情况。

我完全不知道该如何找到它!如果有人能提供任何帮助,我将不胜感激!

短暂性失眠!

答案1

因此,在 choroba 的建议的帮助下,我找到了答案。

在这种环境下,他们采取了愚蠢的政策,几乎强迫每个人除了自己的配置外,还要获取所有相同的资源文件。有一天,他们更改了一些东西,破坏了我们一半的 shell。

在尝试修复此问题的过程中,我将打印语句放入各种配置文件和资源文件中,以便我可以看到哪些语句正在运行,从而追踪出现问题的原因。

我没有意识到,与其他以“rc”结尾的文件不同,“.inputrc”不会被运行,而是会被解析。而且它的解析方式很奇怪。因此,我在 .inputrc 中写了以下内容:

echo "Hello..."

绑定系统(显然只有 bash、gdb、python 和一些我还没用过的东西才能实际查看)不知怎么地将其解释为“当用户键入 e 时,无限打印 H”。这显然就是我的意思。

我现在有了一个可以运行的 bash、python 和 gdb!谢谢!

答案2

快速破解,

$ i () { printf "%x" 14;}

或者

$ i () { printf \\x65;}
$ l`i`ss
Missing filename ("less --help" for help)
$ `i`xit

另一个黑客

$ E^b^[l

这使得 E 更低。

这可能会有帮助,

$ bind -m `i`macs

相关内容