最近投稿しました。一つの質問bash
、およびシェルで観察される奇妙な動作に関して、またはfish
シェルではzsh
この動作は表示されません。この行動は、次のように発生したことがわかりました。tcsh
csh
ksh
dash
多様性ライブラリのデフォルト設定でreadline
これをset enable-bracketed-paste Off
私~/.inputc
。
それは私を気にする。これが私のシステムの特定のシェルサブセットにのみ影響するのはなぜですか?すべてのシェルがそれを使用していませんかreadline
?どのような一般的な規則がありますか?bash
、zsh
およびfish
動作を変更しますが、他のシェルは変更しないのはなぜですか?
ベストアンサー1
readline
bash
同じ著者が同時に実装し、人気のあるbash
シェルで使用され、ほとんどはbash
。
このreadline
ライブラリはbashから派生した。bash
1.02用のファイルはChangeLog
次のとおりです。
Wed Jun 28 16:51:42 1989 Brian Fox (bfox at aurel) * New directory: LIB contains readline and history stuff, and is Make-able on its own. Also contains its own ChangeLog * history.c: removed shell dependent stuff, made into standalone library. Tue Jun 27 13:05:54 1989 Brian Fox (bfox at aurel) * readline.c: removed shell dependent stuff. * New file: bashline.c contains all of the shell specific readline material in an attempt to begin using the readline stuff as a library. Mon Jun 26 13:35:16 1989 Brian Fox (bfox at aurel) [...] * readline.c, jobs.c Make commands that do not complete sucessfully restore the tty state to whatever it was before the command was executed.
zsh
1990年の最初の1.0バージョンは、独自のbash
ラインエディタがまだ準備されていないため、修正版のreadlineを使用しましたが、4ヶ月後の1991年2.0では独自のreadlineに切り替えました。README
1.0のドキュメントから:
zsh v1.0 バージョンです。私は一時的に私の人生をより簡単にするためにBrian Foxによって書かれたGNU "readline"エディタをシェルに統合しました。たくさん修正したので、エディタにエラーがあるとしたら、おそらく私のせいでしょう。 readline は、次のバージョンの zsh には含まれません。
dash
dash
Ashベースのシェルは通常BSDのlibeditを使用します(対話型シェルではなくスクリプトの実行にのみ使用されるため、通常はアクティブではなくコンパイルするとき)。
Byron Rakitzisが複製したUnix V10 / Plan9シェルでは、GNU、Simmule Turner、Gert-Jan Vonsなどのrc
コンパイルタイムラインエディタを選択できます。最初のバージョンはreadlineのみを提供します。そして提供項目と提供項目の選択に基づいています。readline
editline
vrl
es
akanga
rc
readline
editline
hush
ash
busyboxには、シェルベースやその他の小さなプログラム(たとえば、、、などbc
)でed
使用される独自の行エディタがありますfdisk
。
readline
できる行エディタを提供しているので良いです。はい)は一貫性を提供するためにさまざまなツールで使用されていますが、おそらく最も豊富な機能を備えた(最も豊富な機能ではありません)、汎用ライン編集ライブラリの1つであっても、その用途は比較的制限されます。また、GPLに基づいてライセンスが付与されているため、GPLに基づいてライセンスされたソフトウェアでのみ使用できます。GPLまたは互換性。
ksh、pdksh、およびそれらの派生物であるtcsh、zsh、fish、またはyashを含むほとんどのシェルには、通常、より高度な独自のラインエディタがあります。 kshのラインエディタは1983年頃に作成され、bash
bashのreadlineはほとんどこのインタフェースを複製します。pdksh
ラインtcsh
エディタも bash と readline より前のバージョンです。vi
POSIX は ksh ベースのスタイルラインエディタを指定します。emacs
POSIXはこれを明示していません。なぜなら、Richard Stallman(GNUの主な著者でemacs
あり、「POSIX」の名前も考えた人)がこれに反対したからです。
これをサポートするターミナルエディタまたは行エディタで角かっこ貼り付けモードを有効にするには、妥当な理由があります。望むより:クリップボードの乱用から自分をどのように保護できますか?。
より「以前の提案には、KornShellから派生したemacsコマンドライン編集モードが含まれていましたが、emacsエディタ自体は含まれていませんでした。サプライヤーがコミュニティに必要なスケーラビリティが欠けている厳密に一貫したバージョンをリリースすることを奨励する予定です。ただし、サポートされていないがviを含み、サポートされていないシェルはほとんどありません。たくさんありましたが、KornShellの作成者はシェルを一貫して作成するために変更を検討することに同意しましたが、標準開発者は当時の仕様を延期することにしました。存在するPOSIX仕様sh
のRATIONALE部分。