2009-10-26 132 views
15

我是Unix新手,正在使用sun solaris(我认为是v10)。我把我的shell设置为KornShell(ksh)。使箭头和删除键在KornShell命令行中工作

我想知道如何使箭头键和删除命令行中的关键工作。我已经完成set -o emacs和退格工作,但不是箭头键和删除键。

还有可能设置向上和向下箭头键循环查看命令行历史吗?

回答

28

对于箭头键,你可以把这个到您的.kshrc文件在你的home目录:

set -o emacs 
alias __A=`echo "\020"`  # up arrow = ^p = back a command 
alias __B=`echo "\016"`  # down arrow = ^n = down a command 
alias __C=`echo "\006"`  # right arrow = ^f = forward a character 
alias __D=`echo "\002"`  # left arrow = ^b = back a character 
alias __H=`echo "\001"`  # home = ^a = start of line 
alias __Y=`echo "\005"`  # end = ^e = end of line 

请注意,在等号左侧的字母之前有两个下划线字符。在等号的右侧,目标是获得分配给别名的正确控制字符。这个脚本的做法是通过运行命令(通过back-tics)

echo "\020" 

得到分配给__B的控制n字符。

+1

如果你能说出上面的内容是什么会更有帮助吗? – nikhil 2012-02-22 04:46:22

+0

另外,如果你没有.kshrc文件,创建一个并添加上面的内容。使用下面的命令设置ENV “ENV = $ HOME/.kshrc; export ENV”通过发出“printenv”命令再次确保 – 2015-12-14 20:19:46

+0

请注意,pdksh和mksh都使用'.mkshrc'文件 – thecarpy 2017-08-25 07:46:19

8

不要打它。 只需让您的管理员将您的默认shell更改为bash。 bash包含在Solaris 10中,与ksh兼容,并且支持您喜欢的键映射。 您可以只需键入推出的bash:

$ bash 

你可以Exec的庆典你的.profile文件,如果你的管理员是没有帮助的。 这里是你的管理员会做些什么来改变USER1来砸(根):

# passwd -e user1 
Old shell: /bin/ksh 
New shell: /usr/bin/bash  <- You type this, use whence bash to look up the path 
passwd: password information changed for user1 
+0

有Solaris 10中没有'chsh'? – 2009-12-02 00:01:01

+0

不,Solaris不支持chsh命令。 :( – 2009-12-04 15:53:20

0

默认的ksh可能是ksh88--它不支持别名__键盘宏。 Ksh93的确如此。基本上,如果它不起作用 - 你可能使用ksh88。

9

我用以下,并且工作正常:

set -o emacs 

注:这些都是实际控制字符。在六,I型CTRL-V再按Ctrl-P(如果想要可CTRL-P)

alias _A=^P 
alias _B=^N 
alias _D=^B 
alias _C=^F 

,并添加以下行太:

alias __A=^P 
alias __B=^N 
alias __D=^B 
alias __C=^F