shで矢印キーが機能しないのはなぜですか?

shで矢印キーが機能しないのはなぜですか?

最近Ubuntuをインストールしましたが、端末でshを実行すると、矢印キーが機能しなくなり、通話履歴を表示したり、入力している内容を編集したりできません。などの奇妙な文字が表示されます^[[A

ログインシェルはbash正常に動作しますが、一度ログインシェルに切り替えると機能shしません。

この問題をどのように解決できますか?

答え1

(ダッシュ)シェルは、/bin/shより効率的で小さなシステム起動を可能にするPOSIX準拠のシンプルなシェルです。これにより、履歴と高度なコマンドライン編集は含まれません。対話型シェルよりも厳しいPOSIXスクリプトに適しています。デフォルトでは、「ログイン」シェルはbashですが、ブートシステムではダッシュを使用するというアイデアです。 Ubuntu 11.04のマニュアルページには、ダッシュに履歴とコマンドライン編集機能がありますが、プログラムにはこれらの機能はありません。デフォルトの実行可能ファイルのサイズを確認してください。

$ 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

走りに慣れるように努力したり、$SHELL単にbash走ったりしないでくださいsh

答え2

ケース/bin/shではスプリント--with-libeditコンパイルする前に構成する必要があります。それ以外の場合は、シェルでset -o vi実行できますが、役に立つ操作は実行されません。

答え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*

関連情報