どのシェルがreadlineを使用しますか?

どのシェルがreadlineを使用しますか?

最近投稿しました。一つの質問bash、およびシェルで観察される奇妙な動作に関して、またはfishシェルではzshこの動作は表示されません。この行動は、次のように発生したことがわかりました。tcshcshkshdash多様性ライブラリのデフォルト設定でreadlineこれをset enable-bracketed-paste Off~/.inputc

それは私を気にする。これが私のシステムの特定のシェルサブセットにのみ影響するのはなぜですか?すべてのシェルがそれを使用していませんかreadline?どのような一般的な規則がありますか?bashzshおよびfish動作を変更しますが、他のシェルは変更しないのはなぜですか?

ベストアンサー1

readlinebash同じ著者が同時に実装し、人気のあるbashシェルで使用され、ほとんどはbash

このreadlineライブラリはbashから派生した。bash1.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.

zsh1990年の最初の1.0バージョンは、独自のbashラインエディタがまだ準備されていないため、修正版のreadlineを使用しましたが、4ヶ月後の1991年2.0では独自のreadlineに切り替えました。README1.0のドキュメントから:

zsh v1.0 バージョンです。私は一時的に私の人生をより簡単にするためにBrian Foxによって書かれたGNU "readline"エディタをシェルに統合しました。たくさん修正したので、エディタにエラーがあるとしたら、おそらく私のせいでしょう。 readline は、次のバージョンの zsh には含まれません。

dashdashAshベースのシェルは通常BSDのlibeditを使用します(対話型シェルではなくスクリプトの実行にのみ使用されるため、通常はアクティブではなくコンパイルするとき)。

Byron Rakitzisが複製したUnix V10 / Plan9シェルでは、GNU、Simmule Turner、Gert-Jan Vonsなどのrcコンパイルタイムラインエディタを選択できます。最初のバージョンはreadlineのみを提供します。そして提供項目と提供項目の選択に基づいています。readlineeditlinevrlesakangarcreadlineeditline

hushashbusyboxには、シェルベースやその他の小さなプログラム(たとえば、、、などbc)でed使用される独自の行エディタがありますfdisk

readlineできる行エディタを提供しているので良いです。はい)は一貫性を提供するためにさまざまなツールで使用されていますが、おそらく最も豊富な機能を備えた(最も豊富な機能ではありません)、汎用ライン編集ライブラリの1つであっても、その用途は比較的制限されます。また、GPLに基づいてライセンスが付与されているため、GPLに基づいてライセンスされたソフトウェアでのみ使用できます。GPLまたは互換性

ksh、pdksh、およびそれらの派生物であるtcsh、zsh、fish、またはyashを含むほとんどのシェルには、通常、より高度な独自のラインエディタがあります。 kshのラインエディタは1983年頃に作成され、bashbashのreadlineはほとんどこのインタフェースを複製します。pdkshラインtcshエディタも bash と readline より前のバージョンです。viPOSIX は ksh ベースのスタイルラインエディタを指定します。emacsPOSIXはこれを明示していません。なぜなら、Richard Stallman(GNUの主な著者でemacsあり、「POSIX」の名前も考えた人)がこれに反対したからです。

これをサポートするターミナルエディタまたは行エディタで角かっこ貼り付けモードを有効にするには、妥当な理由があります。望むより:クリップボードの乱用から自分をどのように保護できますか?


より「以前の提案には、KornShellから派生したemacsコマンドライン編集モードが含まれていましたが、emacsエディタ自体は含まれていませんでした。サプライヤーがコミュニティに必要なスケーラビリティが欠けている厳密に一貫したバージョンをリリースすることを奨励する予定です。ただし、サポートされていないがviを含み、サポートされていないシェルはほとんどありません。たくさんありましたが、KornShellの作成者はシェルを一貫して作成するために変更を検討することに同意しましたが、標準開発者は当時の仕様を延期することにしました。存在するPOSIX仕様shのRATIONALE部分

おすすめ記事