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.