退格键,制表符,删除键和箭头键在终端中不起作用(使用ssh)

当我使用我的帐户(具有sudo权限)ssh到另一台Ubuntu机器时,我的退格键在按下时会生成一些尴尬的符号。 Tab键,Del键和箭头键也不起作用。

另一方面,我在同一台机器上也有另一个帐户,当我通过这个帐户,它的终端工作得非常好。 我无法弄清楚为什么会这样。

编辑:参考:Mateng的答案

Mateng很接近,我认为你可能正在运行Bourne Shell。 但是你不应该直接编辑你的/etc/passwd文件。 请尝试使用chsh命令:

 chsh -s /bin/bash 

-s标志将使新的shell(在本例中为Bash)成为您的登录shell,继续前进。

以下更改为我解决了问题。 首先,我检查了哪个shell正在运行:

 $ echo $0 

返回:

 /bin/sh 

正如我在Ubuntuforums中的这篇文章中所读到的那样 ,将shell更改为/bin/bash会带来解决方案。 所以我将/etc/passwd用户设置编辑为:

 johndoe:x:1001:104:John Doe:/home/johndoe:/bin/bash 

我退出了,然后再次登录。 奇怪的是,我必须通过输入以下命令手动切换shell(可能有些缓存处于活动状态):

 /bin/bash 

瞧!
[问题是由于分发更新引起的。]

当你第一次进入ssh时,尝试这两个命令

 stty sane export TERM=linux 

我必须在一些机器上执行此操作,以便解决此问题

解决此问题的最简单方法之一是在命令行界面提示符下键入/ bin / bash:

$ / bin / bash

上述命令将在现有shell的顶部执行Bourne Again Shell作为子进程。 这会带来利用更多资源的缺点,但不需要编辑任何内容,也不需要特殊权限。 例如,在最近的Kubuntu版本中,它将在默认的/ bin / dash命令行shell接口上启动/ bin / bash会话。

但是,要保留更改,一种可能性是编辑/ etc / passwd文件,并在与用户对应的行中的最后一个’:’字符后添加/编辑/替换默认shell到/ bin / bash。 但是,为了编辑此文件,需要管理员权限。

‘Gbnome Terminal’并不完全模仿’xterm’..

来自: 维基百科>> GNOME Terminal

GNOME终端模拟xterm终端仿真器并提供一些相同的function。


关于问题和解决方案的论文可以在这里找到:

Linux Backspace /删除mini-HOWTO

每个Linux用户迟早都会被困在控制台和X上工作Backspace和Delete键的情况下。 本文解释了为什么会发生这种情况并提出解 这里给出的概念本质上是与发布无关的:由于每个发行版中系统配置文件的内容差异很大,我会尽量给读者足够的知识,以便在必要时考虑他/她自己的修复。

我假设Backspace键应该返回一个字符然后擦除光标下的字符。 另一方面,Delete键应删除光标下的字符,而不移动它。 如果你认为应该交换两个键的function,尽管大多数键盘都有一个箭头指向Backspace键的左边(←),那么本文不会给你立即的解决方案,但你肯定是可能会发现这里给出的解释很有用。

给出的最简单的解决方案(可能在这里工作)是使用: bash $ export TERM = gnome

作为root用户编辑用户的/ etc / passwd文件,并从/ bin / sh更改为/ bin / bash

hdfs:x:1020:1001 :: / home / hdfs:/ bin / sh到hdfs:x:1020:1001 :: / home / hdfs:/ bin / bash

这对我有用。

我尝试了以上所有加上( 此链接 )的注释但没有成功。 您可能想要检查vim是否已安装。

我通常使用vi而不是vim。 所以我安装了vim。

 $ sudo apt-get install vim 

之后,当我执行vi时,键盘敲击开始正常工作。 查看以下内容的输出,看起来vi在安装后成为vim的别名:

 $ ls -al /etc/alternatives | grep vi lrwxrwxrwx 1 root root 18 Jan 13 09:38 vi -> /usr/bin/vim.basic 

这是键盘的兼容性问题,即它在主机系统中的解释方式。 您可能必须使用j或h在命令模式下在vi编辑器中移动。 箭头不起作用。

检查该特定用户的主机系统中的配置文件首选项 – >兼容性。

好吧,我知道这不是每个人说的“解决方案”,它可能对你们中的许多人没有帮助 ,但希望它能帮助至少一个人 。 它确实解决了我的问题。

我六个月大的时候敲了敲我的键盘,我的箭头键在我的腻子会话上停止了进入Debian盒子。 他们确实在其他地方工作(所有其他程序都在腻子之外)。 谷歌甚至登陆后(我打算关闭这个标签,它没有为我解决)。 我试了一下。 我在同一个盒子里打开了一个新的ssh会话,我的箭头键工作了。 我加入了我的屏幕会话,他们没有工作。 所以刚刚发生了与当前屏幕会话相关的事情,禁用了箭头键。 不幸的是,我正处于一个大项目的中间,在我的屏幕会话中打开了28个窗口,并且不想关闭会话,在所有28个窗口上失去我的位置。

所以..

在bash shell上,我尝试了我能想到的所有组合,CTRL +向上,向下,向左,ALT +向上,向下,向左,向右,向上,向下,向左,向上,向上,向下,向上,向下,左右,CTRL + SHIFT +向上,向下,向左,等等。仍然没有运气,我也尝试了向上,向下,向右的Windows菜单和Windows应用程序键。

现在我的箭再次运作! 关于上面的内容和箭头键的组合之一的东西固定它。

上面的答案都没有解决我的相同问题,即在从Ubuntu(这里是带有ncurses-6.0的ubuntu-17.10)sshing到遥控器后,不能使用退格键或类似的键。

它最终成为terminfo的一个问题。 基本上,我的gnome-terminal说它是一个xterm-256color终端(通过TERM变量,由ssh导出到遥控器),但遥控器没有xterm-256color的terminfo配置。

执行以下操作修复了问题:

 $ host:echo $ TERM
 xterm方式256color
 $ host:infocmp> terminfo.src
 $ host:tic terminfo.src
 $ host:scp .terminfo / x / xterm-256color $ remote:/ usr / share / terminfo / x / xterm-256color

infocmp,没有任何选项,在环境变量$ TERM中生成终端的源列表。 所以它相当于infocmp -I $ TERM。

然后通过tic编译生成的源。

最后,将相应的terminfo配置安装到远程位置。 所以,下次我通过$ host连接到$ remote时,它会知道我的终端。