| コーンシェル | |
|---|---|
OpenBSDのデフォルトシェルであるpdkshとのやり取り | |
| 原作者 | デヴィッド・コーン |
| リリース | 1983年 (1983年)[ 1 ] [ 2 ] |
| 最終リリース | 93u+ / 2012年8月1日 ( 2012-08-01 ) |
| プレビュー版 | 93v- / 2014年12月24日 ( 2014-12-24 ) |
| 執筆 | C |
| オペレーティング·システム | UnixおよびUnixライクなシステム(例:LinuxおよびmacOS。Windows 10でも動作します[ 3 ]) |
| 利用可能 | 英語 |
| タイプ | Unixシェル |
| ライセンス |
|
| Webサイト | kornshell.com |
| リポジトリ | github.com/att/ast |
| ksh2020 | |
|---|---|
| 開発者 | Kurtis Rader、Siteshwar Vashsht、コミュニティ |
| 最終リリース | 2020年 / 2019年10月10日 ( 2019-10-10 ) |
| 前任者 | 93v- |
| ライセンス | Eclipseパブリックライセンス |
| Webサイト | kornshell.com |
| リポジトリ | github.com/ksh2020/ksh |
| ksh93u+m | |
|---|---|
| 開発者 | マーティン・デッカー、ジョノサン・キング、ハイエニア |
| 安定放出 | 1.0.10 / 2024年8月2日 ( 2024-08-02 ) |
| 前任者 | 93歳以上 |
| ライセンス | Eclipseパブリックライセンス |
| Webサイト | github.com/ksh93/ksh/wiki |
| リポジトリ | github.com/ksh93/ksh |
KornShell ( ksh) は、1980 年代初頭にベル研究所のDavid Kornによって開発され、 1983 年 7 月 14 日にUSENIXで発表されたUnix シェルです。 [ 1 ] [ 2 ] 初期の開発はBourne シェルのソース コードに基づいていました。[ 7 ] 他の初期の貢献者には、ベル研究所の開発者である Mike Veach と Pat Sullivan がおり、それぞれEmacs スタイルとviスタイルの行編集モードのコードを記述しました。[ 8 ] KornShell は Bourne シェルとの後方互換性があり、ベル研究所のユーザーからの要望に触発されたC シェルの多くの機能が含まれています。
KornShellはPOSIX.2、シェルおよびユーティリティ、コマンドインタープリタ(IEEE Std 1003.2-1992)に準拠しています。KornShellと従来のBourneシェルとの主な違いは以下のとおりです。
KornShellは、1986年にAT&Tの実験ツールキットの一部として最初に配布され、その後1989年にUNIX System Vリリース4に組み込まれた。

KornShell は元々プロプライエタリ ソフトウェアでした。2000 年にソース コードが AT&T 専用のライセンスで公開されましたが、 2005 年初頭のksh93qリリース以降はEclipse Public Licenseでライセンスされています。[ 4 ] KornShell は AT&T Software Technology (AST) Open Source Software Collection の一部として利用可能です。KornShell は当初 AT&T のプロプライエタリ ライセンスでのみ利用可能だったため、多数のフリーでオープンソースの代替品が作成されました。これらには、pdksh、mksh、Bash、Z shellなどがあります。
オリジナルのKornShellであるksh88の機能は、標準規格POSIX.2「シェルおよびユーティリティ、コマンドインタープリタ(IEEE Std 1003.2-1992)」の基礎として使用されました。
一部のベンダーは、拡張機能付きの古いksh88バージョンの独自のバージョンを今でも出荷しています。ksh93はGitHubでメンテナンスされています。[ 10 ]
ksh93は「Desktop KornShell」(dtksh)として、Common Desktop Environmentの一部として配布されています。[ 11 ]このバージョンでは、 Motifウィジェットのシェルレベルのマッピングも提供されています。Tcl / Tkの競合となることを意図していました。[ 12 ]
オリジナルのKornShellであるksh88は、バージョン4でAIXのデフォルトシェルとなり[ 13 ] [ 14 ]、ksh93は別々に利用可能になった[ 15 ] 。
UnixWare 7 にはksh88とksh93 の両方が含まれています。デフォルトの Korn シェルはksh93で、 /usr/bin/kshとして提供され、古いバージョンは/usr/bin/ksh88として利用できます。[ 16 ] UnixWare にはCDEがインストールされている場合、dtkshも含まれています。
ksh93ディストリビューションは、安定版ksh93u+の時点で 2012 年頃に著者が AT&T を退職した後、不安定な運命をたどりました。主な著者は、 2014 年頃までksh93v- beta ブランチでの作業を続けました。その作業は最終的に 2017 年にRed Hatが主に引き継ぎ(顧客からの要望による)、2019 年秋にksh2020 [ 17 ]の最初のリリースにつながりました。この最初のリリース (以前の安定性の問題のいくつかは修正されましたが) は、破損や互換性の問題を引き起こしました。[ 18 ] 2020 年 3 月に、AT&T は、コミュニティの変更をロールバックし、ブランチに保管し、ksh93u+から再開することを決定しました。変更が広範囲にわたり、ksh に特化しすぎているため、メンテナンス モードのプロジェクトに組み込むことができなかったためです。[ 19 ] [ 20 ] ksh2020 [ 21 ]は、 EBCDICサポートの削除、 ksh93u+用に書かれたバイナリ プラグインのサポートの終了、壊れた数学関数の削除など、 「いくつかの理由」[ 22 ]からメジャー リリースとしてリリースされましたが、AT&T によってメンテナンスまたはサポートされたことはありません (最初のリリース日でさえ)。ksh2020のソース コードは 2020 年 2 月以降コミットされておらず、2021 年 10 月に読み取り専用としてアーカイブされました。[ 17 ]
ksh2020ブランチの問題と開発中止を受けて、2020 年 5 月に、最後の安定版 AT&T リリース ( ksh93u+ 2012-08-01) をベースとしたksh93u+mブランチ用の新しいリポジトリが作成され、バグ修正開発が積極的に続けられています。[ 23 ]
以下のリストにおいて、KSHの主要ソフトウェアブランチとは、1983年7月から2019年末のKSH2020リリースまでのオリジナルプログラムを指します。KSHの後継バージョン(ブランチ)の開発は2020年から複数のグループに分かれており、以下では詳細には触れません。
以下は、貢献度の高い順に概ね時系列順に並べたものです。
以下は、貢献度の高い順に概ね時系列順に並べたものです。
主要な貢献企業(上記参照)の他に、KSHの開発に無償でリソースを提供してくれた企業がいくつかあります。以下に、それらの企業をアルファベット順に列挙します。
KornShellにはいくつかの派生版やクローンが存在する。
新しいスクリプト言語を発明する代わりに、Bourne シェルを修正し、必要に応じて組み込みコマンドを追加することで、フォーム入力システムを構築しました。
注: ksh2020 はメンテナンスもサポートもされていません
... Berkeley のジョブ制御は興味深いハックでした。BRL での私たちの問題は、私が C シェル構文を全く嫌っていたことです。Korn シェルはまだ AT&T から抜け出していなかったので、C シェルで実際にどのように動作するのか (あまりよく文書化されていませんでした)、主に目視で理解し、その後、Bourne Shell で再実装しました (そのために System V のソースコードバージョンを使用していました)。それでも、Bourne シェルの使用について BRL で支持を得ることができませんでした。なぜなら、その頃には tcsh がコマンドライン編集機能を備えて登場していたからです。そこで、シェルのソースに戻りました。この頃には 5R2 がリリースされていたので、そこからシェルのソースを取得しました。 [...] Emacs 風のコマンドライン編集を再構築しました。シェル。その後、USENIX の David Korn と楽しい会話をしました。おそらくその時点では、Bourne シェルのジョブ制御の内部構造に最も詳しいのは彼ら 2 人だったでしょう。また、bash か pdksh (どちらだったか覚えていません) を書いている人たちと座って、この仕組みをすべて説明しました。...数年後 、 私は BRL を離れ、ラトガース大学の管理者として 3 年間勤務し、バージニア州の小さなスタートアップで働いていました。そこには MIPS ワークステーションがありました。私は ed を使用して苦労していました... 何も考えずに、「fg」と入力してバックグラウンド ジョブを取得しようとしました。驚いたことに、シェルは「ジョブ制御が有効になっていません」と表示しました。ふむ、と私は言いました。これは私のエラー メッセージに似ています。「set -J」と入力します。「ジョブ制御が有効になりました」。おいおい!これは私のシェルだ。Doug Gwyn が私の修正を彼の「System V on BSD」配布テープに入れ、それが Mach コード ベースに入り込み、すべての Mach 派生システムがそれを持つことになったことがわかりました。