【问题标题】:Remote Unix Terminal Key Mapping远程 Unix 终端键映射
【发布时间】:2008-11-19 10:25:08
【问题描述】:

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

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

stty erase ...

键入命令来修复它。

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

【问题讨论】:

    标签: unix terminal keymapping


    【解决方案1】:

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

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

    找到该文件并注释该行。

    【讨论】:

    • 是的,对不起,我应该更明确一点。这更像是一个一般性问题,而不是特定平台,但你是对的......它可能就像 /etc/profile 中的内容一样简单
    【解决方案2】:

    安全外壳 (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 运行。

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2012-09-12
        • 2019-05-24
        • 1970-01-01
        • 2020-12-11
        • 1970-01-01
        • 2022-09-25
        • 2014-08-23
        • 2012-01-14
        • 1970-01-01
        相关资源
        最近更新 更多