6

Единственные два приложения, с которыми я смог воспроизвести проблему, - это tail и cat . Если я tail -f log/development.log или какой-либо другой файл и нажму CTRL-C, чтобы выйти, когда я набираю дополнительные команды, на экране не появляется эхо клавиатуры. Если я нажимаю Enter, команды запускаются и генерируют вывод, но эхо клавиатуры не работает.

Интересным моментом является то, что мне удалось восстановить эхо клавиатуры несколькими различными способами:

1) stty echo

2) irb

Выполнение любой из этих команд восстановит эхо клавиатуры до тех пор, пока одна из вызывающих ошибку команд не будет снова завершена с помощью CTRL-C.

Я попытался настроить эмуляцию терминала на rxvt и xterm-color, но изменение этого значения не имеет значения.

4 ответа4

4

Для сброса вашего терминала используйте команду reset .

Я не понимаю, почему tail и cat вызывают эту проблему, поскольку они не должны ничего делать, чтобы повлиять на настройки линии терминала. Вы используете Terminal.app или другой терминал? Вы используете Bash или другую оболочку? У тебя работает screen? Есть ли у вас что-нибудь еще, что может использовать проклятия или делать какие-то другие манипуляции с экраном? Есть ли у вас trap для Ctrl-C?

2

Это ошибка с завершением MacPorts bash. Отчет об ошибке здесь.

Я исправил это, изменив мою оболочку на /opt/local/bin/bash предоставленную macports, используя это.

1

Подводя итог, что Майкл обнаружил: стандартный MacOS Bash, v3.2.48(1)-release , плюс bash_completion, предоставляемый MacPorts, заставляет некоторые команды (tail(1) , cat(1) и т.д.) Отключать эхо TTY в оболочке после их завершения, как описано в этой ошибке. Исправление заключается в использовании версии Bash для MacPorts, как описано здесь.

Для чего бы это ни стоило, я нашел ту же ошибку при использовании bash-дополнения, поставляемого Homebrew со стандартной версией Bash.

0

У меня есть эта проблема в byobu (рабочий экран, я полагаю) в сеансе SSH к Linux. Если я скажу, скажем, команду rsync требующую less пароля, less может запутаться. Ctrl-C выводит меня из этого, но эхо клавиатуры иногда не работает впоследствии.

Решение @Michael Guterl решает проблему:

stty echo

PS: я запускаю встроенный Bash от Apple: 4.2.45(2) -релиз (i386-apple-darwin12.3.0)

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