Bash: не можу набрати 'e', ​​або я змушу нескінченно повторювати 'H'


2

На моєму робочому місці є декілька незалежних мереж, з якими я працюю, і всі вони працюють з різними версіями RedHat Linux 4, 5 і 6.

В одній із цих мереж я не можу використовувати bash (або, як я з'ясував, все, що використовує bash front-end, як python, gdb тощо), тому що коли я намагаюся ввести це:

> exit

Я натомість отримую:

> HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH<control-C>

Поки я не натисну на control-C (для bash або gdb) або, в іншому терміналі, не буду робити python для Killall.

Моя основна робоча оболонка - tcsh, але я використовую bash для всіх своїх сценаріїв. Я також інтерактивно потрапляю в оболонку, щоб іноді робити прості петлі тощо. На щастя, "вихід" є в моїй історії, тому я можу використовувати стрілку вгору, щоб повернути її та вийти.

Просто, щоб було зрозуміло: це відбувається лише тоді, коли я запускаю ці програми інтерактивно. Не має значення, чи запустив я оболонку:

> bash

> bash --login

> env bash --login

> env bash

Це трапляється, чи я видалю файли bash_profile та bashrc чи ні. AFAIK, у профілі системи немає нічого, що спричиняло б це.

Я зовсім в збитку, як навіть піти про це! Я б Вдячно вдячний за будь-яку допомогу, яку кожен може запропонувати!

ТІА!


2
Чи є якісь .inputrcдіючі? Використовуйте, bind -pщоб дізнатися. Чи resetдопомагає?
choroba

Чи діє клавіша "Е" смішно в будь-яких інших програмах? Це дивна клавіатура чи налаштування місцеположення? Чи зміна клавіатур на іншій машині щось змінює?
Xen2050

1
Ви можете "вийти", натиснувши стрілку вгору та знайшовши "вихід" у своїй історії, як ви вказуєте. Ви можете також вийти, натиснувши EOF у порожньому рядку. Натисніть Ctrl-C (для швидкого заповнення рядка) та Ctrl-D. Це не вирішує вашу проблему, але це допоможе прискорити вирішення проблеми і просто загалом приємно знати.
TOOGAM

Ви системний адміністратор? Чи можете ви сказати, чи трапляється це з усіма користувачами, або лише з одним? Чи впливає це також на інші оболонки (sh, dash, zsh тощо .--- можливо спробуйте, що є в / etc / shell) Чи це станеться, якщо ви запускаєте bash зсередини xterm?
TOOGAM

@ Xen2050: Це не виглядало смішно в будь-яких інших програмах. Ще одне, що я забув згадати, це те, що я знаходився на машині Windows (ick), використовуючи X-Win для підключення до машини Linux. Моя основна оболонка, відладчик Intel, nedit, kate тощо - все було чудово - лише кілька речей були зламані. У цьому конкретному середовищі заміна клавіатур ... неможлива.
iAdjunct

Відповіді:


4

Отож, за допомогою пропозиції від чороба я зрозумів це.

У цьому середовищі вони ведуть ідіотичну політику майже примушувати всіх джерел усіх тих же файлів ресурсів на додаток до власної конфігурації. Одного разу вони щось змінили і розбили половину наших снарядів.

У процесі спроби виправити це, я помістив заяви про друк у різні профілі та файли ресурсів, щоб я міг бачити, які з них навіть запускаються, щоб відстежити, чому все було порушено.

Я не усвідомлював, що, на відміну від усіх інших файлів, що закінчуються на "rc", ".inputrc" не отримує RUN, він отримує PARSED. І це дивно розбирається. Отже, у мене це було в .inputrc:

echo "Hello..."

Що якимось чином інтерпретується системою зв'язування (яка, мабуть, лише bash, gdb, python, а може бути, і деякі інші речі, які я ще не використовував насправді), як "коли користувач вводить текст, друкує H нескінченно". Що явно я мав на увазі.

Тепер у мене є функціональний bash, python та gdb! Дякую!


Мабуть, це прив'язує "e" до "Hello ...", але, звичайно, друга літера це "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

Це насправді було корисним: я дійсно зміг би з цього приводу заграти.
iAdjunct
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.