当我使用我的帐户(具有sudo权限)SSH到另一台Ubuntu计算机时,我的退格键在按下时会产生一些尴尬的符号。另外,Tab,Del和Arrow键不起作用。
另一方面,我在同一台计算机上还有另一个帐户,当我通过该帐户使用ssh时,其终端可以正常运行。我不知道为什么会这样。
当我使用我的帐户(具有sudo权限)SSH到另一台Ubuntu计算机时,我的退格键在按下时会产生一些尴尬的符号。另外,Tab,Del和Arrow键不起作用。
另一方面,我在同一台计算机上还有另一个帐户,当我通过该帐户使用ssh时,其终端可以正常运行。我不知道为什么会这样。
Answers:
编辑:参考:Mateng的答案
Mateng与我接近,因为我认为您可能正在运行Bourne Shell。但是,您不应该/etc/passwd
直接编辑文件。尝试改用以下chsh
命令:
chsh -s /bin/bash
-s标志将使新的shell(在本例中为Bash)成为您的登录shell,然后继续。
sudo chsh -s /bin/bash
以下更改为我解决了该问题。首先,我检查了运行哪个shell:
$ echo $0
返回:
/bin/sh
正如我在Ubuntuforums上的这篇文章中所读到的,更改外壳以/bin/bash
带来解决方案。因此,我将用户设置编辑/etc/passwd
为:
johndoe:x:1001:104:John Doe:/home/johndoe:/bin/bash
我注销,然后再次登录。奇怪的是,我不得不通过输入以下命令手动切换外壳(也许某些缓存处于活动状态):
/bin/bash
瞧!
[由于发行版更新,出现了问题。]
第一次使用ssh时,请尝试以下两个命令
stty sane
export TERM=linux
我必须在要修复此问题的某些机器上执行此操作
stty erase <backspace>
(<backspace>是您真正按下键的位置)
$ stty erase '^[[A' stty: invalid integer argument '\033[A'
。使用[Backspace]:$ stty erase '^?'
有效。使用[Tab]:$ stty erase ' '
没有错误,但是[Backspace]返回到异常行为。
export TERM=VT100
,但无济于事。
stty tab0
没有帮助。我猜想,xterm的某种常规重新配置是必要的。还是键盘映射根本错了?
解决此问题的最简单方法之一是在命令行界面提示符下键入/ bin / bash:
$ / bin / bash
上面提到的命令将在现有外壳程序的顶部执行Bourne Again Shell作为子进程。这带来了利用更多资源的缺点,但是无需进行任何编辑,也不需要特殊权限。例如,在最新的Kubuntu版本中,它将在默认的/ bin / dash命令行外壳程序界面上启动/ bin / bash会话。
但是,要保留更改,一种可能性是编辑/ etc / passwd文件,并将默认外壳程序添加/编辑/替换为与用户对应的行中最后一个':'字符后的/ bin / bash。但是,为了编辑此文件,将需要管理员特权。
'Gbnome Terminal'不能完全模拟'xterm'..
GNOME终端仿真xterm终端仿真器,并提供一些相同的功能。
有关此问题和解决方案的文章可以在这里找到:
每个Linux用户迟早都会陷入一种困境,即在控制台和X上都无法使用Backspace和Delete键。本文解释了为什么会发生这种情况并提出了解决方案。这里给出的概念本质上是与发行版无关的:由于每个发行版中系统配置文件的内容差异很大,因此,如有必要,我将尝试为读者提供足够的知识,以考虑自己的修订。
我假设Backspace键应该退回一个字符,然后擦除光标下方的字符。另一方面,Delete键应删除光标下的字符,而不移动它。如果您认为应该交换两个键的功能,尽管大多数键盘在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
这对我有用。
好的,我知道这不是每个人所说的“解决方案”,它可能对很多人没有帮助,但希望它对您至少有一个帮助。它确实解决了我的问题。
我六个月大的孩子在键盘上敲打,箭头键停止在腻子盒中的Debian盒中工作。他们确实在其他任何地方都工作(除腻子外的所有其他程序)。谷歌搜索甚至登陆后(我打算关闭此选项卡,但它并没有为我解决)。我试过了 我在同一框中打开了一个新的ssh会话,并且箭头键起作用了。我参加了屏幕会议,但没有工作。因此,与当前屏幕会话相关的事情刚刚发生,禁用了箭头键。不幸的是,我正处于一个大项目的中间,在屏幕会话中打开了28个窗口,并且不想关闭会话,这使我在所有28个窗口中都失去了位置。
所以..
在bash shell上,我尝试了所有我能想到的组合,包括CTRL +向上,向下,向左,向右,ALT +向上,向下,向左,向右,SHIFT +向上,向下,向左向右,CTRL + ALT +向上,向下,左,右,CTRL + SHIFT +,上,下,左,右等。仍然没有运气,我还尝试了Windows菜单和Windows应用程序键的上,下,左,右。
现在,我的箭头再次起作用!关于上述内容和箭头键的组合之一,它可以解决此问题。
上面的答案都没有解决我的相同问题,即从Ubuntu切入远程目录后无法使用退格键或类似的键(这里是ncurses-6.0的ubuntu-17.10)。
最终成为terminfo的问题。基本上,我的gnome-terminal表示它是一个xterm-256color终端(通过TERM变量,该变量由ssh导出到远程),但是远程没有针对xterm-256color的terminfo配置。
执行以下操作可以解决此问题:
$ host:回显$ TERM xterm-256color $ host:infocmp> terminfo.src $ host:tic terminfo.src $ host:scp .terminfo / x / xterm-256color $远程:/ usr / share / terminfo / x / xterm-256color
无任何选择,infocmp会在环境变量$ TERM中为终端生成源列表。因此,它等效于infocmp -I $ TERM。
然后,通过tic编译生成的源。
最后,将相应的terminfo配置安装到远程位置。因此,下次我通过$ host连接到$ remote时,它将知道我的终端。