远程Unix终端密钥映射

远程Unix终端密钥映射,unix,terminal,keymapping,Unix,Terminal,Keymapping,这一直困扰着我。当我将ssh或telnet连接到Unix服务器(无论什么风格)时,它总是能够正确猜测我登录的终端类型,因此键盘总是“正常”运行。。。i、 e.退格键起作用 但是,当我成功登录后,它经常错误地猜测我使用的终端类型,并进行错误的键映射-尤其是对于backspace键,这意味着我必须发出: stty erase ... 键入命令来修复它 任何Unix大师都知道为什么会发生这种情况吗?我想你的意思是,当你输入用户名和密码时,backspace会正常工作,然后在你登录后它就会停止工作 很

这一直困扰着我。当我将ssh或telnet连接到Unix服务器(无论什么风格)时,它总是能够正确猜测我登录的终端类型,因此键盘总是“正常”运行。。。i、 e.退格键起作用

但是,当我成功登录后,它经常错误地猜测我使用的终端类型,并进行错误的键映射-尤其是对于backspace键,这意味着我必须发出:

stty erase ...
键入命令来修复它


任何Unix大师都知道为什么会发生这种情况吗?

我想你的意思是,当你输入用户名和密码时,backspace会正常工作,然后在你登录后它就会停止工作

很可能stty被设置为~/.profile或/etc/profile(或登录时执行的另一个脚本)中的其他内容


找到该文件并注释该行。

您使用的是什么SSH/telnet软件

通过SSH登录时,用户名/密码输入通常由客户端处理,因此可能与此无关

我的猜测是,终端软件错误地设置了术语环境变量,例如,当终端设置为类似xterm的行为时,将其设置为“vt100”,等等。

Secure shell(ssh)在尝试联系主机之前,很可能会在客户端软件中询问用户名和密码,所以它使用了当地的惯例

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

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

最好的办法是找到配置文件类型文件链中的最后一个(可能是~/.profile),并在其中放置一个
stty-erase“X”
,其中X是终端程序实际需要的击键


另外,配置文件类型的配置文件只针对登录shell运行,而其他配置文件类型的配置文件则倾向于针对创建的任何子shell运行。

是的,对不起,我应该更明确一些。这更像是一个一般性的问题,而不是一个特定的平台,但你是对的……它可能像/etc/profile中的某些内容一样简单