Удаленное сопоставление ключей терминала Unix - PullRequest
3 голосов
/ 19 ноября 2008

Это всегда беспокоило меня. Когда я подключаюсь по ssh или telnet к Unix-серверу (какой бы ни была разновидность), ему всегда удается правильно угадать тип терминала, с которого я вхожу, и поэтому клавиатура всегда работает "нормально" ... то есть клавиша backspace работает.

Но затем, когда я успешно вошел в систему, он часто неправильно угадывает тип терминала, который я использую, и делает неправильные сопоставления клавиш - особенно для клавиши возврата, то есть мне нужно выдать:

stty erase ...

введите команду, чтобы исправить это.

Кто-нибудь из гуру Unix знает, почему это происходит?

Ответы [ 3 ]

2 голосов
/ 19 ноября 2008

Я думаю, что вы имеете в виду, что Backspace правильно работает, когда вы вводите имя пользователя и пароль, а затем перестает работать после входа в систему.

Скорее всего, stty устанавливается на что-то другое в ~ / .profile или / etc / profile (или другом скрипте, который выполняется при входе в систему).

Найдите этот файл и прокомментируйте строку.

1 голос
/ 19 ноября 2008

Безопасная оболочка (ssh), скорее всего, запросит имя пользователя и пароль в клиентском программном обеспечении, прежде чем пытаться связаться с хостом, поэтому она использует локальные соглашения.

Telnet обычно связывается с демоном telnetd на хосте (удаленный конец), и хост будет обрабатывать ввод / вывод.

Есть большая вероятность, что ваша терминальная программа настроена правильно для связи с telnetd, но после входа в систему запускаются различные сценарии, которые могут повлиять на настройки терминала (что-то вроде stty erase '^H'). В зависимости от системы UNIX, к которой вы подключаетесь, и оболочки, которую вы используете, это может быть сочетание / etc / profile, ~ / .profile, ~ / .bashrc, ~ / .kshrc и т. Д.).

Лучше всего найти последнее в цепочке файлов типа профиля (вероятно, ~ / .profile) и поместить туда stty erase 'X', где X - фактическое желаемое нажатие клавиши для вашей терминальной программы.

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

0 голосов
/ 19 ноября 2008

Какое программное обеспечение SSH / telnet вы используете?

При входе через SSH запись имени пользователя / пароля обычно обрабатывается клиентом, поэтому это может быть неактуально.

Я полагаю, что переменная окружения TERM неправильно установлена ​​вашим терминальным программным обеспечением, например. установить на «vt100», когда терминал настроен так, как xterm и т. д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...