
最近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*