尝试使用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
任何帮助将不胜感激。
答案 0 :(得分:3)
我弄清楚了,因为我服务器中的默认shell是ksh
,需要让系统管理员将其更改为bash
或zsh
。
答案 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).
进一步阅读:
某些操作也绑定到带有特殊标记的键,例如:向上箭头, Del (或删除)。这些也在适用的地方显示。请注意,如果终端仿真不正确,这些可能无效,
ksh
不支持它们bash
。