远程Unix终端键映射

3

这个问题一直困扰着我。每次使用ssh或telnet连接到Unix服务器时(无论是哪种类型的),它总是能够正确猜测我所使用的终端类型,因此键盘始终可以“正常”工作,即退格键有效。

但是,当我成功登录后,它经常错误地猜测我所使用的终端类型,并进行不正确的键映射,特别是退格键,这意味着我必须发出:

stty erase ...

输入命令以修复它。

有没有Unix专家知道为什么会发生这种情况?

3个回答

2

我想你的意思是,在输入用户名和密码时,退格键可以正常工作,但在登录后停止工作。

很可能是因为在~/.profile或/etc/profile(或其他在登录时执行的脚本)中将stty设置为其他值。

找到该文件并注释掉该行。


是的,抱歉我应该更明确一些。这更多是一个普遍性的问题,而不是针对特定平台的问题,但你说得对...可能只是在/etc/profile中做一些简单的设置。 - gnuchu

1

安全外壳(ssh)在尝试联系主机之前,大多数情况下会要求客户端软件输入用户名和密码,因此它使用本地约定。

Telnet通常会与主机(远程端)上的telnetd守护程序通信,并且主机将处理I/O。

你的终端程序很有可能已经正确配置了与telnetd通信,但是,在登录后,将运行各种脚本,这些脚本可以影响终端设置(类似于stty erase '^H')。 根据您连接到的UNIX系统和使用的Shell,这可能是/etc/profile、~/.profile、~/.bashrc、~/.kshrc的组合等)。

你最好找到文件链中的最后一个profile类型文件(可能是~/.profile),并在其中放置一个stty erase 'X',其中X是终端程序实际所需的按键。

顺便提一下,profile类型的文件仅针对登录shell运行,而其他类型的文件则倾向于运行任何子shell。


0
你使用的是什么SSH/telnet软件?
通过SSH登录时,用户名/密码输入通常由客户端处理,因此可能与此无关。
我猜测您的终端软件设置了TERM环境变量不正确,例如将其设置为“vt100”,而终端却被设置为像xterm一样运行等。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接