KornShell

KornShell（コーンシェル、ksh）は、Unixシェルの一種であり、1980年代初期にベル研究所のデビッド・コーン（英語版）が開発し、1983年7月14日のUSENIX年次大会で発表した。初期にはベル研究所の開発者マイク・ヴィーチとパット・サリヴァンも開発に関わり、それぞれ入力行編集モードのEmacsスタイルとviスタイルのコードを書いた。Bourne Shellに対して完全上位互換であり、コマンド履歴などのC Shellの機能の多くも取り入れている。彼はベル研究所内のユーザーの要望を受けてkshを開発したと言われている。 KornShellは、POSIX.2 Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992) に準拠している。 従来のBourne shellとKornShellとの主な違いは次の通りである。 ジョブコントロール（英語版）、コマンド・エイリアシング、コマンド履歴（英語版）といったC Shell由来の機能が追加されている。 対話モードで使用する場合、kshはコマンド行をWYSIWYG風の方法で編集することができる。カーソルを上に移動させるキー操作で以前入力したコマンド行を呼び出し、そのコマンド行をラインモードエディタを使うように編集できる。このときのキー操作はvi互換モードとemacs互換モードとXEmacs互換モードを選択できる。 ksh93 では、連想配列や浮動小数点数演算機能が組み込まれている。 2000年まで、KornShellはAT&Tの権利保有するプロプライエタリソフトウェアであった。その後AT&T独自のライセンスの下でオープンソースとなり、2005年の 93q から Common Public License での配布となった。KornShellはAT&T Software Technology (AST) Open Source Software Collectionの一部として入手可能である。ks は当初AT&Tの商用ライセンスでしか入手できなかったため、オープンソースの代替実装がいくつも生まれた。その中には、パブリックドメインのpdksh、mksh、GNUプロジェクトのbash、zshなどが含まれる。 最初のKornShellであるksh88の機能がPOSIX.2 Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992) の元になっている。 ベンダーによっては古いksh88を/bin/kshとしていまだに使っているところもあり、独自に拡張している場合もある。ksh93は作者であるコーンがいまだに保守している。ksh93の後ろにアルファベット1文字をつけてバージョンを表しており、最新版はksh93u+である。その1つ前はksh93u、さらに前はksh93t+だった。バグ修正用の中間バージョンはこのバージョン文字列を変更せずにリリースされることもある。 デスクトップ用KornShellとされるdtkshはCDEの一部として配布されたksh93である。このバージョンではMotifウィジェットのシェルレベルでのマッピングを提供しており、Tcl/Tkとの対抗を意図していた。 最初のKornShellである ksh88 は、AIXバージョン4からAIXのデフォルトのシェルとされており、ksh93はそれとは別に用意されている。 KornShellからの派生ソフトウェアを以下に示す。 dtksh — ksh93からのフォーク。CDEの一部。 tksh — ksh93からのフォーク。Tkウィジェット・ツールキットへのアクセスを提供。 oksh — OpenBSD版KornShellのフォーク。GNU/Linuxでのみ動作。DeLi Linux（英語版）でデフォルトのシェルとして使われている。 mksh — KornShellのフリーソフトウェア実装。MirOS BSD（英語版）で開発。 SKsh — AmigaOS版KornShell。ARexx（英語版）との相互作用などAmiga固有の機能を提供している。 MKS Korn shell — MKS社による商用実装。Microsoft Windows Services for UNIX (SFU) のバージョン2.0までで使われていた。デビッド・コーンによれば、1998年時点のMKS Korn ShellはKornShellと完全互換ではなかった。SFUバージョン3.0でマイクロソフトはMKS Korn shellの代替として新たにPOSIX.2準拠のシェルをInterixの一部として導入した。 デビッド・コーンが開発したUWIN（英語版）はWindows上のUNIX互換パッケージで、KornShellも含まれている。 [脚注の使い方] ^ a b Ron Gomes (9 June 1983). "Toronto USENIX Conference Schedule (tentative)". Newsgroup: net.usenix. 2010年12月29日閲覧。 ^ a b Guy Harris (10 October 1983). "csh question". Newsgroup: net.flame. 2010年12月29日閲覧。 ^ “GitHub - att/ast: AST - AT&T Software Technology”. 2020年12月1日閲覧。 ^ Bolsky, Morris I.; Korn, David G. (1989). “Acknowledgements”. The KornShell Command and Programming Language. Englewood Cliffs, NJ: Prentice Hall. pp. xii. ISBN 0-13-516972-0  ^ http://www2.research.att.com/sw/download/notes.html ^ Bill Rosenblatt; Arnold Robbins (2002). Learning the Korn Shell (2 ed.). O'Reilly Media, Inc.. pp. viii–ix. ISBN 9780596001957. https://books.google.co.jp/books?id=5nMCY272chUC&pg=PR8&redir_esc=y&hl=ja  ^ J. Stephen Pendergrast (1995). Desktop KornShell graphical programming. Addison-Wesley. p. 359. ISBN 9780201633757. https://books.google.co.jp/books?id=O6xQAAAAMAAJ&redir_esc=y&hl=ja  ^ Casey Cannon; Scott Trent; Carolyn Jones (1999). Simply AIX 4.3. Prentice Hall PTR. p. 21. ISBN 9780130213440  ^ http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=/com.ibm.aix.cmds/doc/aixcmds5/sh.htm ^ http://publib.boulder.ibm.com/infocenter/aix/v6r1/index.jsp?topic=/com.ibm.aix.baseadmn/doc/baseadmndita/korn_shell_enhanced.htm ^ “David Korn Tells All”. Slashdot. 2009年10月22日閲覧。 ^ “Jerry Feldman — USENIX NT/LISA NT conference attendee”. Lists.blu.org. 2009年10月22日閲覧。 ^ “Windows Services for UNIX Version 3.0”. Technet.microsoft.com. 2009年10月22日閲覧。 ^ Anatole Olczak (2001). The Korn shell: Unix and Linux programming manual. Addison-Wesley Professional. pp. 4. ISBN 9780201675238. https://books.google.co.jp/books?id=dCIJv94vXUMC&pg=PA4&redir_esc=y&hl=ja  Morris I. Bolsky; David G. Korn (1995). The new KornShell command and programming language. Prentice Hall PTR. ISBN 978-0-13-182700-4. https://archive.org/details/newkornshellcomm00bols  Safari G. corn, Sharfes J. Rightsip ana Jeffeshr Aorn Ahe Low AornSholl—Ash13, Linux Journal, Issuers 18, Jary 1880 Aorn shell home page (AS&S ash) Ash310 mani page Ash81 main pager Public Domain Korn shell (pdksh) MirBSD Korn Shell (mksh) mksh man page (also as PDF in DIN A4 paper size)