Bash:「e」を入力できない、または「H」を無限に繰り返す


2

私の職場には、複数の独立したネットワークがあり、すべてがさまざまなバージョンのRedHat Linux 4、5、および6を実行しています。

これらのネットワークの1つでは、bashを使用できません(または、筆者が知る限り、python、gdbなどのbashフロントエンドを使用するもの)。

> exit

私は代わりに以下を取得します:

> HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH<control-C>

control-C(bashまたはgdbの場合)を押すか、別の端末でpythonのkillall pythonを実行するまで。

私の主な作業シェルはtcshですが、スクリプト作成にはすべてbashを使用しています。また、単純なループなどを実行するために、対話形式でシェルにドロップすることもあります。幸いなことに、「終了」は私の履歴にあるため、上矢印を使用して元に戻して終了できます。

明確にするために、これらのプログラムをインタラクティブに実行した場合にのみ発生します。シェルを開始したかどうかは関係ありません。

> bash

> bash --login

> env bash --login

> env bash

これは、bash_profileファイルとbashrcファイルを削除してもしなくても発生します。私の知る限り、これを引き起こすシステムのプロファイルには何もありません。

私はこれを見つける方法を完全に迷っています!誰もが提供できる助けを本当に感謝しています!

TIA!


2
.inputrc有効なものはありますか?を使用bind -pして調べます。reset助けて?
choroba

「E」キーは他のプログラムでおかしくなりますか?それは奇妙なキーボード、または場所の設定ですか?キーボードを別のマシンと交換すると何が変わりますか?
Xen2050

1
あなたが指摘しているように、上矢印を押して履歴で「終了」を見つけることで、「終了」できます。空白行でEOFを押して終了することもできます。Ctrl-C(行をすばやく空白にする)とCtrl-Dを押します。これは問題を解決しませんが、回避策を高速化するのに役立ち、一般的に知っておくと便利です。
TOOGAM

あなたはシステム管理者ですか?これがすべてのユーザーに起こるのか、それとも1人のユーザーに起こるのかわかりますか?これは他のシェル(sh、dash、zshなど)にも影響しますか?
-TOOGAM

@ Xen2050:他のプログラムではおかしくはなかった。私が言及するのを忘れていた別のことは、X-Winを使用してLinuxマシンに接続するWindowsマシン(ick)にいたことです。私のプライマリシェル、Intelデバッガ、nedit、kateなどはすべて問題ありませんでした-ほんのいくつかが壊れていました。この特定の環境では、キーボードの交換は不可能です。
iAdjunct

回答:


4

だから、チョロバからの提案の助けを借りて、私はそれを理解しました。

この環境では、すべての人が独自の構成に加えて同じリソースファイルをすべてソースすることをほぼ強制するというばかげたポリシーがあります。ある日、彼らは何かを変えて、貝殻の半分を壊しました。

これを修正しようとする過程で、さまざまなプロファイルとリソースファイルにprintステートメントを挿入して、どのステートメントが実行されていたのかを確認して、原因を突き止めました。

「rc」で終わる他のすべてのファイルとは異なり、「。inputrc」は実行されず、PARSEDになることを認識していませんでした。そして、奇妙に解析されます。だから、私はこれを.inputrcに入れました:

echo "Hello..."

これはどういうわけか、バインディングシステム(明らかにbash、gdb、python、およびおそらく私がまだ使用していなかった他のいくつかのもののみ)によって「ユーザーがeを入力してHを無限に印刷する」と解釈されました。それは明らかに私が意図したことです。

機能的なbash、python、gdbができました!ありがとうございました!


どうやら "e"を "Hello ..."にバインドしているようですが、もちろんその2番目の文字は "e"なので、それは "Hello ..."に変わり、それを繰り返します。実行してみてbind 'z "1234 z"'から、「z」を押して楽しみを見てください。
ゴードンデイヴィソン

ああ!それで説明できます!
iAdjunct

3

簡単なハック、

$ 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

これは-1にダウン投票されました。これは質問に答えませんが、私はそれが役に立つかもしれない回避策であることを認識しています。また、書式設定により、コメントに簡単に収まらないほど長くなります。私はこれを有用な貢献として支持しました。追加するのは、逆引用符の代わりに$(および)を使用でき、より簡単にネストできることです。私の以前のコメントのように、このアプローチは本当に重要な質問、iAdjunctがそもそも問題を経験している理由、または適切に修正する方法に答えていません。その答えはまだ求められています。
TOOGAM

これは、おそらくスタック交換でこれまで読んだ中で最も陽気なものです。文字通り笑い出した。それから同僚/友人を見せて、彼は笑い出した。それから、私は別の同僚/友人(ひどい行為をするために構文を完全に乱用するのが常であった)を見せて、彼は私を「おお、いや」のように見た。
iAdjunct

これは実際に役に立ちました。このため、私は実際にbashで突くことができました。
-iAdjunct
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.