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


16

最近Ubuntuをインストールしました。ターミナルでshを実行すると、矢印キーが機能しないため、通話履歴を確認したり、入力した内容を編集したりできません。それはただのような奇妙なキャラクターとして出てき^[[Aます。

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

どうすれば修正できますか?


2
なぜshに切り替えるのですか?
オエノン

2
@oenoneなぜOPが切り替わるのshですか 確かに彼がそうする理由は、問題があるという事実とは無関係です。
アギハマーシーフ14年

回答:


15

/bin/sh(ダッシュ)シェルは、POSIX準拠し、機能制限シェルは、システムをブートするためのより効率的な(小さい)ことがあります。その一環として、履歴と高度なコマンドライン編集は含まれていません。インタラクティブなシェルとしてよりも、厳密なPOSIXスクリプトに適しています。考えは、「ログイン」シェルはデフォルトでbashですが、ブートシステムはダッシュを使用するということです。Ubuntu 11.04のmanページには、ダッシュには履歴とコマンドライン編集がありますが、プログラムにはこれらの機能がありません。基本実行可能ファイルのサイズを見てください。

$ 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


8

ケースで/bin/shあるダッシュ、それは設定する必要があり、--with-libeditコンパイルの前に。それ以外の場合でもset -o vi、シェルで実行できますが、有用なことは何もしません。


0

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*


@jasonwryan、履歴または行編集モードに関連するものはすべて、その仕様でUPとマークされていることに気付くでしょう。
ステファンシャゼル

@StéphaneChazelas-たぶん本当ですが、とにかくjasonwryanは間違いなく正しいです。ここに別のリンクがあります。それに-あなたは言及しているのです$FCEDITか、$HISTFILEそれともただfcですか?私は少なくともそれらが必須だと思った-とのレンダリング$PS1 \!。私はPOSIX仕様について間違っている可能性があります-しかし、それらはすべて機能しdash、長年にわたって使用されています。
mikeserv 14年

1
@mikeserv、ないあなたが何を意味するか、しかし、繰り返しに、すべてのはfc$FCEDIT$HISTFILE$PS1POSIX(「ユーザポータビリティ」のためのUP印)にはオプションです。shUnixの準拠システムのは、(とりわけUnixはまた、その必要がUPとしてそれらはUnixの適合のために必要とされていますecho -e出力を-e<LF>)。しかし、システム/シェルがPOSIX準拠のみを要求する場合、それらを実装する必要はありません。Debianのash場合、すでに述べたように--with-libeditを使用してコンパイル時に有効にできますが、少なくともDebianは有効にしません。
ステファンシャゼル14年

@StéphaneChazelas-どうもありがとう。dashアーチ用にパッケージとしての私の使用は、したがって、Debianの私はそれを取るよりも大幅に異なっています。それは貴重な情報です。奇妙なことは、ではありませんman
mikeserv 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.