![退格键、Tab 键在终端中不起作用(使用 ssh)](https://linux22.com/image/23946/%E9%80%80%E6%A0%BC%E9%94%AE%E3%80%81Tab%20%E9%94%AE%E5%9C%A8%E7%BB%88%E7%AB%AF%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%88%E4%BD%BF%E7%94%A8%20ssh%EF%BC%89.png)
当我使用我的帐户(具有 sudo 权限)ssh 到另一台装有 Debian 的机器时,我的退格键在按下时会生成一些尴尬的符号。而且Tab&del键也不起作用。
另一方面,我在同一台机器上还有另一个帐户,当我通过这个帐户进行 ssh 时,它的终端工作得很好。我不明白为什么会发生这种情况。
答案1
除了“stty”解决方案之外,您还可以尝试“TERM”解决方案。
您从某个终端(putty、solaris dterm、debain xterm、you-name-it)通过 ssh 连接到 Debian,该终端通过 TERM 环境变量宣布功能(包括 Backspace 和 Tab 等键)。
因此,在 ssh 到 unix 主机(它不依赖于 debian 或其他主机)之后,根据您的终端设置 TERM 变量。假设您使用 bash 作为 shell,使用 vt100 作为终端:
export TERM=vt100
ps: TERM 应该通过 ssh 自动宣布,但在某些情况下这个魔法会失败。
答案2
我以前见过这样的问题。
以退格键为例,远程主机期望使用某个字符作为“擦除/退格”,当您在终端中按退格键时,终端程序将向远程主机发送一些字符,如果远程主机期望的字符与远程主机期望的字符不同终端程序发送的字符,就会遇到这个问题。因此,快速修复如下:
- 在远程主机中运行命令
#stty -a
,并在输出中找到预期的擦除代码。说erase=^?
。 - 在终端中,按Ctrl+v并按退格键。您将看到发送“擦除”的代码。说是吧
^H
。 - 在远程主机中,运行
#stty erase ^H
.
(注意:使用Ctrlv+ Backspace,不要手动输入 ^ )
您可以使用与上面相同的方法修复选项卡问题。
答案3
这是因为您的默认 shell 是sh
,要使用,只需从您的 shellbash
运行即可。bash
bash
设置bash
为默认 shell:
chsh -s /bin/bash
或者
sudo chsh -s /bin/bash yourusername
答案4
您的 shell 可能被设置为/bin/sh
而不是/bin/bash