1

В Unix bash, когда я запускаю stty intr ^M (^ M - это Control-M), я фактически блокировал себя от запуска любых команд. Всякий раз, когда я нажимаю клавишу "возврат", я посылаю сигнал прерывания в оболочку, и моя команда никогда не запускается. Предположим, у меня это есть в моем профиле (на самом деле я не ..); как я мог выбраться из этой дыры из сеанса bash с ^ M, настроенным на запуск сигнала прерывания?

Крис

3 ответа3

3

bash имеет по умолчанию ^ M и ^ J, связанные с accept-line , так что вы можете использовать любой из них.

2

В общем (то есть, если что-то еще более запутано, чем это, и вы не знаете, как еще их исправить), вы можете запустить stty из другого tty, используя

stty sane < /dev/whatever
stty intr ^c < /dev/whatever

Если вы не уверены, какие tty имеют испорченные настройки, используйте who или ps чтобы узнать, какие ttys вы используете, и просто поочередно вводите stty < /dev/whatever каждого, пока не найдете неправильный.

0

Я собирался предложить stty sane ^J , но это не сбрасывает прерывание. Вам придется сделать что-то вроде этого:

$ stty intr ^C^J

^C обозначает Control-C. Обычно это можно получить, нажав Control-V/Control-C.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .