为什么我的方向键在 sh 中不起作用?

为什么我的方向键在 sh 中不起作用?

我最近安装了 Ubuntu,当我在终端上运行 sh 时,我的箭头键不起作用,因此我无法查看通话记录或编辑我正在输入的内容。它只是以奇怪的字符出现,比如^[[A

登录 shellbash工作正常,但一旦我切换到sh,它们就不起作用。

我怎样才能解决这个问题?

答案1

(dash) shell/bin/sh是一个符合 POSIX 标准的精简功能 shell,可以更有效(更小)地启动系统。作为其中的一部分,历史记录和高级命令行编辑不包括在内。它比作为交互式 shell 更适合严格的 POSIX 脚本编写。这个想法是“登录”shell 默认情况下是 bash,但引导系统将使用 dash。 Ubuntu 11.04 中的手册页显示 dash 具有历史记录和命令行编辑功能,但该程序没有这些功能。查看基本可执行文件的大小。

$ ls -l /bin/*ash /bin/sh
-rwxr-xr-x 1 root root 822420 Mar 31 15:26 /bin/bash
-rwxr-xr-x 1 root root  83848 Nov 15  2010 /bin/dash
lrwxrwxrwx 1 root root      4 May 17 21:15 /bin/rbash -> bash
lrwxrwxrwx 1 root root      4 May 17 21:15 /bin/sh -> dash
$ strings /bin/bash | egrep -ci 'fc|hist'
181
$ strings /bin/dash | egrep -ci 'fs|hist'
1

尝试习惯跑步$SHELLbash而不只是跑步sh

答案2

万一/bin/sh短跑,必须--with-libedit在编译前配置。否则你仍然可以set -o vi在 shell 中运行,但它不会做任何有用的事情。

答案3

sh没有任何历史。至少,我的没有:

server$ sh
\h$ history 
sh: history: not found
\h$ fc
sh: fc: not found
\h$ exit
server$ type sh
sh is hashed (/bin/sh)
server$ ll /bin/sh
lrwxrwxrwx 1 root root 4 Jun  1 18:43 /bin/sh -> dash*

相关内容