在我的工作场所,有几个独立的网络可供使用,它们都运行着各种版本的 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