选项卡和箭头键redhat中的奇怪行为

时间:2016-05-13 18:24:10

标签: linux terminal iterm2 arrow-keys tab-completion

尝试使用Iterm2或OSX Terminal尝试ssh到服务器时,我遇到了一些奇怪的行为。基本上,问题是当使用tab进行自动完成时,它会在最后打印一个随机的额外字符,例如:

//the 'e' is extra in this case
$ cd keys/e

当尝试使用任何箭头键进行导航时,它基本上根本不起作用。

//^[[C^[[C^[[C^[[C^[[C^[[C^[[C are printed by pressing arrow keys
$ cd keys/^[[C^[[C^[[C^[[C^[[C^[[C^[[Ce

//Kernel Version
OS Version: 2.6.39-400.246.2.el6uek.x86_64

//Distribution Information
$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.6 (Santiago)

但它在我的macbook中工作正常,我猜它是由我的服务器配置文件设置引起的,但我已经仔细检查过我家里没有以下任何一个文件:

$ vi .bash_profile
$ vi .bashrc

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:3)

我弄清楚了,因为我服务器中的默认shell是ksh,需要让系统管理员将其更改为bashzsh

顺便说一句,我真的很讨厌那些无缘无故地回答这个问题的人,有点不高兴,如果你不喜欢这个问题,你可以忽略它。

答案 1 :(得分:1)

你所说的"导航"是行编辑的一部分。

如果您正在使用ksh,那么最好地使用其线路编辑功能的方法是启用emacs模式:

set -o emacs

显然ksh的开发者并没有使用vi,因为vi模式非常有限。但是,emacs模式是默认模式。

在您的问题中,光标键处于正常模式^[[字符),假设TERM=linux,而其他终端通常使用应用程序模式^[O个字符)。如果您的TERM设置不正确,可能会导致ksh混淆。有些人在shell初始化中定义了别名,以使shell可以使用。

例如,参见 Make Arrow and delete keys work in KornShell command line 。答案中的解决方案应该适合您,因为RHEL6(和CentOS6)使用ksh-93:

Name        : ksh                          Relocations: (not relocatable)
Version     : 20120801                          Vendor: CentOS
Release     : 28.el6_7.3                    Build Date: Tue Sep 22 11:08:59 2015
Install Date: Mon Mar 28 16:22:50 2016         Build Host: c6b9.bsys.dev.centos>
Group       : System Environment/Shells     Source RPM: ksh-20120801-28.el6_7.3>
Size        : 1743023                          License: EPL
Signature   : RSA/SHA1, Tue Sep 22 14:35:03 2015, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://www.kornshell.com/
Summary     : The Original ATT Korn Shell
Description :
KSH-93 is the most recent version of the KornShell by David Korn of
AT&T Bell Laboratories.
KornShell is a shell programming language, which is upward compatible
with "sh" (the Bourne Shell).

进一步阅读: