OpenBSDのデフォルトシェルpdkshとの相互作用 | |
| 原作者 | デビッド・コーン |
|---|---|
| 初回リリース | 1983年[1] [2] |
| 最終リリース | 93u+ / 2012年8月1日 |
| プレビューリリース | 93v- / 2014年12月24日 |
| リポジトリ | github.com/att/ast |
| 書かれた | C |
| オペレーティング·システム | UnixおよびUnixライク(例:LinuxおよびmacOS 、 Windows 10でも動作[3]) |
| 利用可能 | 英語 |
| タイプ | Unixシェル |
| ライセンス |
|
| Webサイト | kornshell.com |
| 開発者 | Kurtis Rader、Siteshwar Vashsht、コミュニティ |
|---|---|
| 最終リリース | 2020 / 2019年10月10日 |
| リポジトリ | github.com/ksh2020/ksh |
| 前任者 | 93v- |
| ライセンス | Eclipse パブリックライセンス |
| Webサイト | kornshell.com |
| 開発者 | マーティン・デッカー、ジョノサン・キング、ハイエニア |
|---|---|
| 安定版リリース | 1.0.9 / 2024年7月2日 |
| リポジトリ | github.com/ksh93/ksh |
| 前任者 | 93u+ |
| ライセンス | Eclipse パブリックライセンス |
| Webサイト | github.com/ksh93/ksh/wiki |
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 シェルの主な違いは次のとおりです。
- ジョブ制御、コマンドエイリアス、コマンド履歴はCシェルの機能に倣って設計された。ジョブ制御は1989年にBourne Shellに追加された[9]
- vi、Emacs、Gosling Emacsに基づく3つのコマンドライン編集スタイルを選択可能
- 連想配列と組み込みの浮動小数点演算( KornShell のksh93バージョンでのみ使用可能)
- 関数の動的検索
- 数学関数
- プロセス置換とプロセスリダイレクト
- C言語のような表現
- 強化された式指向のforループとwhileループ
- (動的にロードされる)組み込みコマンドの動的な拡張性(ksh93以降)
- 参照変数
- 階層的にネストされた変数
- 変数にはメンバー関数を関連付けることができます
- オブジェクト指向プログラミング ( ksh93t以降)
- 変数は、メンバー(サブ)変数とメンバーメソッドを持つオブジェクトになることができます。
- オブジェクトメソッドは、オブジェクト変数名に続いて(ドット文字の後に)メソッド名が続く形で呼び出されます。
- 特別なオブジェクトメソッドは、オブジェクトの初期化または割り当て、オブジェクトの放棄(未設定)のときに呼び出されます。
- 継承形式だけでなく、合成と集約も利用可能
歴史

KornShell はもともとプロプライエタリソフトウェアでした。2000 年にソースコードは AT&T 独自のライセンスでリリースされましたが、 2005 年初頭のksh93qリリース以降はEclipse Public Licenseでライセンスされています。[4] KornShell は、AT&T Software Technology (AST) オープンソースソフトウェアコレクションの一部として利用できます。KornShell は当初 AT&T のプロプライエタリライセンスでのみ利用可能であったため、無料のオープンソースの代替品が数多く作成されました。これには、pdksh、mksh、Bash、Z shellが含まれます。
オリジナルの KornShell であるksh88の機能は、標準POSIX.2、シェルおよびユーティリティ、コマンド インタープリタ (IEEE Std 1003.2-1992) の基礎として使用されました。
一部のベンダーは、古いksh88バリアントの独自バージョンを、拡張機能付きで出荷し続けています。ksh93はGitHubで管理されています。[10]
ksh93 は「デスクトップ 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ディストリビューションは、 2012年頃に作者が安定バージョンksh93u+でAT&Tを去った後、不安定な運命をたどりました。主要な作者は、 2014年頃までksh93v-ベータブランチで作業を続けました。その作業は最終的に2017年に主にRed Hatによって引き継がれ(顧客の要望により)、 2019年秋にksh2020 [17]の最初のリリースとなりました。その最初のリリースでは(以前の安定性の問題がいくつか修正されていましたが)、いくつかの小さな破損と互換性の問題が発生しました。 [18] 2020年3月、AT&Tはコミュニティの変更をロールバックしてブランチに保存し、ksh93u+から再起動することを決定しました。これは、変更が広範すぎてkshに重点が置かれていたため、メンテナンスモードのプロジェクトに吸収するには不十分だったためです。[19] [20]バグ修正の開発は、AT&Tの最後の安定したリリース(ksh93u+ 2012-08-01)に基づいて、 ksh93u+mブランチで継続されています。 [21] ksh2020 [22]は、 EBCDICサポートの削除、 ksh93u+用に書かれたバイナリプラグインのサポートの終了、いくつかの壊れた数学関数の削除など、 「いくつかの理由によるメジャーリリース」[23]としてリリースされましたが、AT&Tによってメンテナンスまたはサポートされたことはありません(最初のリリース日でさえも)。
メインソフトウェアブランチへの主な貢献
以下のリストでは、KSH のメイン ソフトウェア ブランチは、1983 年 7 月から2019 年後半のKSH2020のリリースまでのオリジナル プログラムとして定義されています。KSH の後継バージョン (ブランチ) の継続的な開発は、2020 年からさまざまなグループに分割されており、以下では詳しく説明しません。
主な個人貢献者
以下は、貢献度の高い順に並べたものです。
- デビッド・G・コーン(AT&T ベル研究所、AT&T 研究所、Google、および作成者)
- グレン・S・ファウラー(AT&T ベル研究所、AT&T 研究所)
- Kiem-Phong Vo (AT&T ベル研究所、AT&T 研究所)
- アダム エドガー (AT&T ベル研究所)
- マイケル・T・ビーチ(AT&Tベル研究所)
- パトリック・D・サリバン(AT&Tベル研究所)
- Matthijs N. Melchior (AT&T ネットワーク システムズ インターナショナル)
- Karsten-Fleischer (オムニアム ソフトウェア エンジニアリング)
- ボイヤー・ムーア
- シテシュワール・ヴァシシュト(レッドハット)
- カーティス・レイダー
統合コンサルタント
- ローランド・マインツ
主な企業寄付者
以下は、貢献度の高い順に並べたものです。
- AT&T ベル研究所
- AT&T ネットワーク システムズ インターナショナル
- AT&T 研究所 (現 AT&T ラボ)
- オムニウムソフトウェアエンジニアリング
- オラクル株式会社
- グーグル
- レッドハット
寄付された企業リソース
主な主要貢献企業 (上記にリスト) の他に、いくつかの企業が KSH の開発に無料のリソースを提供しています。これらは以下のとおりです (アルファベット順)。
バリエーション
KornShell には いくつかのフォークとクローンがあります。
- dtksh – CDEの一部として含まれるksh93 のフォーク。
- tksh – Tkウィジェット ツールキットへのアクセスを提供するksh93 のフォーク。
- oksh – OpenBSDのKornShellの変種の 移植版で、オペレーティングシステム間で最大限の移植性[24]を実現することを目的としている。DeLi Linux 7.2ではデフォルトのシェルとして使用された。
- loksh – OpenBSDのKornShellの変種を最小限の変更でLinuxに移植したもの。 [25]
- mksh – OpenBSD pdkshからフォークされた KornShell 言語の無料実装。もともとはMirOS BSD用に開発され、寛容な(ただしパブリックドメインではない)条件、具体的にはMirOS ライセンスの下でライセンスされています。[6] BSD での使用に加えて、このバリアントはDebian でpdksh に取って代わり、[26] Android のデフォルトシェルとなっています。
- SKsh – ARexx相互運用性など、いくつかのAmiga固有の機能を提供するAmigaOSの亜種。[27]この伝統に従い、MorphOSはSDKでpdkshを使用しています。
- MKS Inc.の MKS Korn シェル - Microsoft Windows Services for UNIX (SFU) バージョン 2.0 までのKornShell 言語の独自実装。David Korn によると、MKS Korn シェルは 1998 年の KornShell と完全に互換性がなかった。 [28] [29] SFU バージョン 3.0 では、Microsoft はInterixの一部として MKS Korn シェルを新しい POSIX.2 準拠のシェルに置き換えた。[30]
- KornShellは、David KornによるUnix互換パッケージであるUWINに含まれています。 [31]
- Doug Gwyn (US Army BRL) の System V on BSD パッケージの/bin/shには、ジョブ制御とコマンド ライン編集の両方を備えた Ron Natalie の SVR2 /bin/shバージョンが含まれていました。これは、AT&T からまだ出ていなかったオリジナルのkshと同時代のものでした。これはその後、すべての CMU Mach 派生システムに同梱された/bin/shとなりました。 [32]
参照
参考文献
- ^ ab Ron Gomes (1983 年 6 月 9 日). 「Toronto USENIX Conference Schedule (tentative)」.ニュースグループ: net.usenix . 2010 年12 月 29 日閲覧。
- ^ ab Guy Harris (1983 年 10 月 10 日). 「csh の質問」.ニュースグループ: net.flame . 2010 年12 月 29 日閲覧。
- ^ 「Korn Shell Launcher for Windows Subsystem for Linux « Musings」。blog.fpmurphy.com 。 2021年1月29日閲覧。
- ^ ab "ast-open package". AT&T Research. nd 2015年10月1日時点のオリジナルよりアーカイブ。2022年12月19日閲覧。
- ^ 「LEGAL」。2012年2月6日時点のオリジナルよりアーカイブ。2010年6月10日閲覧。
- ^ ab "MirBSD Korn Shell". Mirbsd.org . 2018年12月10日閲覧。
- ^ Korn, David G. (1994 年 10 月 26 日)、「ksh - An Extensible High Level Language」、Proceedings of the USENIX 1994 Very High Level Languages Symposium、USENIX Association 、2015 年2 月 5 日取得、
新しいスクリプト言語を発明する代わりに、Bourne シェルを修正し、必要に応じて組み込みコマンドを追加することで、フォーム入力システムを構築しました。
- ^ Bolsky, Morris I.; Korn, David G. (1989). 「謝辞」。KornShell コマンドおよびプログラミング言語。ニュージャージー州エングルウッドクリフス: Prentice Hall。pp. xii. ISBN 0-13-516972-0。
- ^ 「伝統的な Bourne シェル ファミリー / 歴史と発展」。In -ulm.de。2018年12 月 10 日閲覧。
- ^ 「これは、AT&T Research の AT&T Software Technology ast ソフトウェア ダウンロード サイトです。AT&T AST オープンソース ソフトウェア コレクションは、概要と実用的な再利用可能な UNIX ソフトウェアを提供します。」Github.com。2018 年 12 月 10 日。2018年12 月 10 日に取得。
- ^ビル・ローゼンブラット、アーノルド・ロビンズ (2002) 。Korn Shell の学習 (第 2 版)。オライリー。pp. viii– ix。ISBN 978-0-596-00195-7。
- ^ Pendergrast, J. Stephen (1995). デスクトップ KornShell グラフィカルプログラミング. Addison-Wesley. p. 359. ISBN 978-0-201-63375-7。
- ^ ケーシー・キャノン、スコット・トレント、キャロリン・ジョーンズ (1999)。Simply AIX 4.3。プレンティス・ホール。p. 21。ISBN 978-0-13-021344-0。
- ^ 「IBM Knowledge Center」。IBM 。 2018年12月10日閲覧。
- ^ 「IBM Knowledge Center」。IBM 。 2018年12月10日閲覧。
- ^ 「UNIX95準拠」Uw714doc.sco.com . 2018年12月10日閲覧。
- ^ “ksh2020”. GitHub . 2021年2月26日.
- ^ 「ksh2020 changelog」。GitHub。2020年5月29日。
- ^ 「このリポジトリを巻き戻してコミュニティを奨励する · 問題 #1466 · att/ast」。GitHub。
- ^ 「拡張グロブによるセグメント違反 · #1464 · att/ast」。GitHub。
- ^ “ksh 93u+m”. GitHub . 2021年11月17日.
- ^ 「2020.0.0: ksh-2020.0.0 の安定版リリース」。GitHub 。2021年1月29日閲覧。
注: ksh2020 はメンテナンスもサポートもされていません。
- ^ 「ksh 2020.0.0 CHANGELOG」. GitHub . 2021-01-29.
- ^ 「oksh at GitHub」。GitHub。2020年8月1日。
- ^ 「loksh at GitHub」。GitHub。2021年10月15日。
- ^ “5.11. PDKSH から MKSH への移行”. 2014 年 7 月 28 日時点のオリジナルよりアーカイブ。2014 年 7 月 28 日閲覧。
- ^ 「Aminet - util/Shell/SKsh21.LZH」。
- ^ 「David Korn Tells All」、Slashdot、2001年2月7日。 2009年10月22日閲覧。
- ^ 「Jerry Feldman — USENIX NT/LISA NT カンファレンス出席者」。Lists.blu.org。1998 年 8 月 29 日。2009 年 10 月 22 日閲覧。
- ^ 「Windows Services for UNIX バージョン 3.0」。Technet.microsoft.com。2007 年 12 月 5 日。2009 年 10 月 22 日閲覧。
- ^ Anatole Olczak (2001)。Korn シェル: Unix および Linux プログラミング マニュアル。Addison-Wesley Professional。p. 4。ISBN 978-0-201-67523-8。
- ^ Natalie, Ron (2023-01-30). 「ジョブ制御とその他の端末の楽しみ」. TUHS (「The Unix Heritage Society」) メーリングリストから。2024-07-07 にオリジナルからアーカイブ。2024-07-07に取得。...
Berkeley のジョブ制御は興味深いハックでした。BRL の私たちにとって問題は、C シェルの構文がまったく嫌いだったことです。Korn シェルはまだ AT&T から抜け出していなかったので、私は C シェルで実際にどのように機能するか (あまり文書化されていません) を主に検査して理解するのに時間を費やし、その後 Bourne シェルで再実装しました (そのためには System V ソース コード バージョンを使用していました)。その頃には tcsh がコマンド ライン編集機能を備えて登場していたため、BRL ではまだ Bourne シェルの使用に賛同できませんでした。そこで、シェルのソースに戻りました。この頃には 5R2 がリリースされていたので、シェルのソース コードを入手しました
。
[...] emacs 風のコマンド ライン編集をシェルに作り直しました。その後、USENIX の David Korn と楽しい会話をしました。おそらく、その時点では Bourne シェルのジョブ制御の内部に最も詳しい 2 人でした。また、bash か pdksh (どちらかは覚えていません) を書いている人たちと座って、この仕組みをすべて説明しました
。...
数年後、私は BRL を離れ、ラトガース大学の管理者として 3 年間を過ごし、バージニア州の小さなスタートアップ企業で働いていました。そこには MIPS ワークステーションがありました。私は ed を使って苦労していました... 何も考えずに、"fg" と入力してバックグラウンド ジョブを取得しようとしました。驚いたことに、シェルは "ジョブ制御が有効になっていません" と表示しました。うーん、これは私のエラー メッセージに似ていると思います。"set -J" と入力します。"ジョブ制御が有効です。" やあ! これが私のシェルです。結局、Doug Gwyn が私の改造を彼の「System V on BSD」配布テープに入れ、それが Mach コード ベースに組み込まれたため、すべての Mach 派生システムにそれが採用されることになったのです。
さらに読む
- Morris I. Bolsky、David G. Korn (1995)。新しい KornShell コマンドとプログラミング言語。Prentice Hall PTR。ISBN 978-0-13-182700-4。
- David G. Korn、Charles J. Northrup、Jeffery Korn (1996 年 7 月)。「新しい KornShell - ksh93」。Linux Journal (27)。2015 年 10 月 11 日時点のオリジナルよりアーカイブ。
外部リンク
- Wayback Machineの ksh93 マニュアルページ(2013 年 6 月 5 日アーカイブ)
- Wayback Machineの ksh88 マニュアルページ(2015 年 11 月 5 日アーカイブ)
- Wayback Machineのパブリック ドメイン Korn シェル (pdksh) (2016 年 10 月 21 日アーカイブ)
- MirBSD Korn シェル (mksh)
- – MirOS BSD i386 一般コマンドマニュアル
