3

这一直困扰着我。当我通过 ssh 或 telnet 连接到 Unix 服务器(无论何种风格)时,它总是能够正确猜测我正在登录的终端类型,因此键盘总是“正常”运行......即退格键有效。

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

stty erase ...

键入命令来修复它。

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

4

3 回答 3

2

我认为您的意思是退格在您输入用户名和密码时正常工作,然后在您登录后停止工作。

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

找到该文件并注释该行。

于 2008-11-19T10:38:09.690 回答
1

安全外壳 (ssh) 很可能会在尝试联系主机之前在客户端软件中询问用户名和密码,因此它使用本地约定。

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

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

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

顺便说一句,profile-type 只为登录 shell 运行,而其他的则倾向于为任何创建的子 shell 运行。

于 2008-11-19T10:49:39.917 回答
0

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

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

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

于 2008-11-19T10:43:05.607 回答