KornShell
Page Module:Infobox/styles.css has no content.
| KornShell | |
|---|---|
| Lua error in package.lua at line 80: module 'Module:InfoboxImage/data' not found. | |
| [[Programmer|Original authorTemplate:Pluralize from text]] | David Korn |
| Initial release | 1983[1][2] |
| Written in | C |
| Engine | Page Template:Plainlist/styles.css has no content.Template:EditAtWikidata |
| Operating system | Unix and Unix-like (e.g. Linux and macOS; also works in Windows 10[3]) |
| Available in | English |
| Type | Unix shell |
| License | Page Template:Plainlist/styles.css has no content.
|
| Website | Lua error in package.lua at line 80: module 'Module:If preview' not found. |
| Repository | github |
Script error: No such module "Check for conflicting parameters". Page Module:Infobox/styles.css has no content.
| ksh2020 | |
|---|---|
| [[Programmer|DeveloperTemplate:Pluralize from text]] | Kurtis Rader, Siteshwar Vashisht, community |
| Engine | Page Template:Plainlist/styles.css has no content.Template:EditAtWikidata |
| Predecessor | 93v- |
| License | Eclipse Public License |
| Website | Script error: No such module "WikidataIB". |
| Repository | github |
Script error: No such module "Check for conflicting parameters". Page Module:Infobox/styles.css has no content.
| ksh93u+m | |
|---|---|
| [[Programmer|DeveloperTemplate:Pluralize from text]] | Martijn Dekker, Johnothan King, hyenias |
| Engine | Page Template:Plainlist/styles.css has no content.Template:EditAtWikidata |
| Predecessor | 93u+ |
| License | Eclipse Public License |
| Website | github |
| Repository | github |
Script error: No such module "Check for conflicting parameters".
KornShell (ksh) is a Unix shell which was developed by David Korn at Bell Labs in the early 1980s and announced at USENIX on July 14, 1983.[1][2] The initial development was based on Bourne shell source code.[7] Other early contributors were Bell Labs developers Mike Veach and Pat Sullivan, who wrote the Emacs and vi-style line editing modes' code, respectively.[8] KornShell is backward-compatible with the Bourne shell and includes many features of the C shell, inspired by the requests of Bell Labs users.
Features
KornShell complies with POSIX.2, Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992.) Major differences between KornShell and the traditional Bourne shell include:
- job control, command aliasing, and command history designed after the corresponding C shell features; job control was added to the Bourne Shell in 1989[9]
- a choice of three command line editing styles based on vi, Emacs, and Gosling Emacs
- associative arrays and built-in floating-point arithmetic operations (only available in the Page Template:Mono/styles.css has no content.ksh93 version of KornShell)
- dynamic search for functions
- mathematical functions
- process substitution and process redirection
- C-language-like expressions
- enhanced expression-oriented Page Template:Mono/styles.css has no content.for and Page Template:Mono/styles.css has no content.while loops
- dynamic extensibility of (dynamically loaded) built-in commands (since Page Template:Mono/styles.css has no content.ksh93)
- reference variables
- hierarchically nested variables
- variables can have member functions associated with them
- object-oriented-programming (since Page Template:Mono/styles.css has no content.ksh93t)
- variables can be objects with member (sub-)variables and member methods
- object methods are called with the object variable name followed (after a dot character) by the method name
- special object methods are called on: object initialization or assignment, object abandonment (Page Template:Mono/styles.css has no content.unset)
- composition and aggregation is available, as well as a form of inheritance
History
KornShell was initially distributed as part of AT&T's Experimental Toolchest, in 1986, and was later included in UNIX System V Release 4, in 1989.

KornShell was originally proprietary software. In 2000 the source code was released under a license particular to AT&T, but since the ksh93q release in early 2005 it has been licensed under the Eclipse Public License.[4] KornShell is available as part of the AT&T Software Technology (AST) Open Source Software Collection. As KornShell was initially only available through a proprietary license from AT&T, a number of free and open source alternatives were created. These include Page Template:Mono/styles.css has no content.pdksh, Page Template:Mono/styles.css has no content.mksh, Bash, and Z shell.
The functionality of the original KornShell, Page Template:Mono/styles.css has no content.ksh88, was used as a basis for the standard POSIX.2, Shell and Utilities, Command Interpreter (IEEE Std 1003.2-1992).
Some vendors still ship their own versions of the older Page Template:Mono/styles.css has no content.ksh88 variant, sometimes with extensions. Page Template:Mono/styles.css has no content.ksh93 is maintained on GitHub.[10]
As "Desktop KornShell" (Page Template:Mono/styles.css has no content.dtksh), Page Template:Mono/styles.css has no content.ksh93 is distributed as part of the Common Desktop Environment.[11] This version also provides shell-level mappings for Motif widgets. It was intended as a competitor to Tcl/Tk.[12]
The original KornShell, Page Template:Mono/styles.css has no content.ksh88, became the default shell on AIX in version 4,[13][14] with ksh93 being available separately.[15]
UnixWare 7 includes both Page Template:Mono/styles.css has no content.ksh88 and Page Template:Mono/styles.css has no content.ksh93. The default Korn shell is Page Template:Mono/styles.css has no content.ksh93, which is supplied as Page Template:Mono/styles.css has no content./usr/bin/ksh, and the older version is available as Page Template:Mono/styles.css has no content./usr/bin/ksh88.[16] UnixWare also includes Page Template:Mono/styles.css has no content.dtksh when CDE is installed.
The ksh93 distribution underwent a less stable fate after the authors left AT&T around 2012 at stable version ksh93u+. The primary authors continued working on a ksh93v- beta branch until around 2014. That work was eventually taken up primarily by Red Hat in 2017 (due to customer requests) and resulted in the eventual initial release of ksh2020[17] in the fall of 2019. That initial release (although fixing several prior stability issues) introduced breakage and compatibility issues.[18] In March 2020, AT&T decided to roll back the community changes, stash them in a branch, and restart from ksh93u+, as the changes were too broad and too ksh-focused for the company to absorb into a project in maintenance mode.[19][20] ksh2020 [21] was released as a "major release for several reasons"[22] such as removal of EBCDIC support, dropping support for binary plugins written for ksh93u+ and removal of some broken math functions, but has never been maintained or supported by AT&T (not even on its initial release date). The ksh2020 source code has received no commits since February 2020 and it was archived read only in October 2021.[17]
Following the issues with the ksh2020 branch and its abandonment, a new repository was created in May 2020 for the ksh93u+m branch, based on the last stable AT&T release (ksh93u+ 2012-08-01) where bugfix development actively continues.[23]
Primary contributions to the main software branch
For the purposes of the lists below, the main software branch of KSH is defined as the original program, dating from July 1983, up and through the release of KSH2020 in late 2019. Continuing development of follow-on versions (branches) of KSH have split into different groups starting in 2020 and are not elaborated on below.
Primary individual contributors
The following are listed in a roughly ascending chronological order of their contributions:
- David G. Korn (AT&T Bell Laboratories, AT&T Laboratories, and Google; and creator)
- Glenn S. Fowler (AT&T Bell Laboratories, AT&T Laboratories)
- Kiem-Phong Vo (AT&T Bell Laboratories, AT&T Laboratories)
- Adam Edgar (AT&T Bell Laboratories)
- Michael T. Veach (AT&T Bell Laboratories)
- Patrick D. Sullivan (AT&T Bell Laboratories)
- Matthijs N. Melchior (AT&T Network Systems International)
- Karsten-Fleischer (Omnium Software Engineering)
- Boyer-Moore
- Siteshwar Vashisht (Red Hat)
- Kurtis Rader
Integration consultant
- Roland Mainz
Primary corporate contributors
The following are listed in a roughly ascending chronological order of their contributions:
- AT&T Bell Laboratories
- AT&T Network Systems International
- AT&T Laboratories (now AT&T Labs)
- Omnium Software Engineering
- Oracle Corporation
- Red Hat
Donated corporate resources
Besides the primary major contributing corporations (listed above), some companies have contributed free resources to the development of KSH. These are listed below (alphabetically ordered):
Variants
There are several forks and clones of KornShell:
- Page Template:Mono/styles.css has no content.dtksh – a fork of Page Template:Mono/styles.css has no content.ksh93 included as part of CDE.
- Page Template:Mono/styles.css has no content.tksh – a fork of Page Template:Mono/styles.css has no content.ksh93 that provides access to the Tk widget toolkit.
- Page Template:Mono/styles.css has no content.oksh – a port of OpenBSD's variant of KornShell, intended to be maximally portable[24] across operating systems. It was used as the default shell in DeLi Linux 7.2.
- Page Template:Mono/styles.css has no content.loksh – a Linux port of OpenBSD's variant of KornShell, with minimal changes.[25]
- Page Template:Mono/styles.css has no content.mksh – a free implementation of the KornShell language, forked from OpenBSD Page Template:Mono/styles.css has no content.pdksh. It was originally developed for MirOS BSD and is licensed under permissive (though not public domain) terms; specifically, the MirOS Licence.[6] In addition to its usage on BSD, this variant has replaced Page Template:Mono/styles.css has no content.pdksh on Debian,[26] and is the default shell on Android.[27]
- Page Template:Mono/styles.css has no content.SKsh – an AmigaOS variant that provides several Amiga-specific features, such as ARexx interoperability.[28] In this tradition MorphOS uses Page Template:Mono/styles.css has no content.pdksh in its SDK.
- MKS Inc.'s MKS Korn shell – a proprietary implementation of the KornShell language from Microsoft Windows Services for UNIX (SFU) up to version 2.0; according to David Korn, the MKS Korn shell was not fully compatible with KornShell in 1998.[29][30] In SFU version 3.0 Microsoft replaced the MKS Korn shell with a new POSIX.2-compliant shell as part of Interix.[31]
- KornShell is included in UWIN, a Unix compatibility package by David Korn.[32]
- Page Template:Mono/styles.css has no content./bin/sh in Doug Gwyn's (US Army BRL) System V on BSD package included Ron Natalie's version of the SVR2 Page Template:Mono/styles.css has no content./bin/sh that had both job control and command line editing. This was a contemporary of the original Page Template:Mono/styles.css has no content.ksh at a time when it had not escaped AT&T. This was subsequently the Page Template:Mono/styles.css has no content./bin/sh that shipped with all the CMU Mach-derived systems.[33]
See also
Lua error in mw.title.lua at line 404: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').
References
Page Template:Reflist/styles.css has no content.
- ^ a b Page Module:Citation/CS1/styles.css has no content.Ron Gomes (Jun 9, 1983). "Toronto USENIX Conference Schedule (tentative)". Newsgroup: net.usenix. Retrieved Dec 29, 2010.
- ^ a b Page Module:Citation/CS1/styles.css has no content.Guy Harris (Oct 10, 1983). "csh question". Newsgroup: net.flame. Retrieved Dec 29, 2010.
- ^ Page Module:Citation/CS1/styles.css has no content."Korn Shell Launcher for Windows Subsystem for Linux « Musings". blog.fpmurphy.com. Retrieved 2021-01-29.
- ^ a b Page Module:Citation/CS1/styles.css has no content."ast-open package". AT&T Research. n.d. Archived from the original on October 1, 2015. Retrieved December 19, 2022.
- ^ Page Module:Citation/CS1/styles.css has no content."LEGAL". Archived from the original on 2012-02-06. Retrieved 2010-06-10.
- ^ a b Page Module:Citation/CS1/styles.css has no content."MirBSD Korn Shell". Mirbsd.org. Retrieved 10 December 2018.
- ^
Page Module:Citation/CS1/styles.css has no content.Korn, David G. (October 26, 1994), "ksh - An Extensible High Level Language", Proceedings of the USENIX 1994 Very High Level Languages Symposium, USENIX Association, retrieved February 5, 2015,
Instead of inventing a new script language, we built a form entry system by modifying the Bourne shell, adding built-in commands as necessary.
- ^ Page Module:Citation/CS1/styles.css has no content.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.
- ^ Page Module:Citation/CS1/styles.css has no content."traditional Bourne shell family / history and development". In-ulm.de. Retrieved 10 December 2018.
- ^ Page Module:Citation/CS1/styles.css has no content."This is the AT&T Software Technology ast software download site from AT&T Research. The AT&T AST OpenSource Software Collection provides an overview and Practical Reusable UNIX Software." Github.com. 10 December 2018. Retrieved 10 December 2018.
- ^ Page Module:Citation/CS1/styles.css has no content.Bill Rosenblatt; Arnold Robbins (2002). Learning the Korn Shell (2 ed.). O'Reilly. pp. viii–ix. ISBN 978-0-596-00195-7.
- ^ Page Module:Citation/CS1/styles.css has no content.Pendergrast, J. Stephen (1995). Desktop KornShell graphical programming. Addison-Wesley. p. 359. ISBN 978-0-201-63375-7.
- ^ Page Module:Citation/CS1/styles.css has no content.Casey Cannon; Scott Trent; Carolyn Jones (1999). Simply AIX 4.3. Prentice Hall. p. 21. ISBN 978-0-13-021344-0.
- ^ Page Module:Citation/CS1/styles.css has no content."IBM Knowledge Center". IBM. Retrieved 10 December 2018.
- ^ Page Module:Citation/CS1/styles.css has no content."IBM Knowledge Center". IBM. Retrieved 10 December 2018.
- ^ Page Module:Citation/CS1/styles.css has no content."UNIX95 conformance". Uw714doc.sco.com. Retrieved 10 December 2018.
- ^ a b Page Module:Citation/CS1/styles.css has no content."ksh2020". GitHub. 26 Feb 2021.
- ^ Page Module:Citation/CS1/styles.css has no content."ksh2020 changelog". GitHub. 29 May 2020.
- ^ Page Module:Citation/CS1/styles.css has no content."Rewinding this repo and encouraging community · Issue #1466 · att/ast". GitHub.
- ^ Page Module:Citation/CS1/styles.css has no content."segfault with extended globs · #1464 · att/ast". GitHub.
- ^ Page Module:Citation/CS1/styles.css has no content."2020.0.0: Stable release of ksh-2020.0.0". GitHub. Retrieved 2021-01-29.
Note: ksh2020 is not maintained or supported
- ^ Page Module:Citation/CS1/styles.css has no content."ksh 2020.0.0 CHANGELOG". GitHub. 2021-01-29.
- ^ Page Module:Citation/CS1/styles.css has no content."ksh 93u+m". GitHub. 17 November 2021.
- ^ Page Module:Citation/CS1/styles.css has no content."oksh at GitHub". GitHub. 1 August 2020.
- ^ Page Module:Citation/CS1/styles.css has no content."loksh at GitHub". GitHub. 15 October 2021.
- ^ Page Module:Citation/CS1/styles.css has no content."5.11. The PDKSH to MKSH transition". Archived from the original on 2014-07-28. Retrieved 2014-07-28.
- ^ Page Module:Citation/CS1/styles.css has no content."Android's shell and utilities". android.googlesource.com. Retrieved 2025-06-27.
- ^ Page Module:Citation/CS1/styles.css has no content."Aminet - util/Shell/SKsh21.LZH".
- ^ Page Module:Citation/CS1/styles.css has no content."David Korn Tells All". Slashdot. 7 February 2001. Retrieved 2009-10-22.
- ^ Page Module:Citation/CS1/styles.css has no content."Jerry Feldman — USENIX NT/LISA NT conference attendee". Lists.blu.org. 29 August 1998. Retrieved 2009-10-22.
- ^ Page Module:Citation/CS1/styles.css has no content."Windows Services for UNIX Version 3.0". Technet.microsoft.com. 5 December 2007. Retrieved 2009-10-22.
- ^ Page Module:Citation/CS1/styles.css has no content.Anatole Olczak (2001). The Korn shell: Unix and Linux programming manual. Addison-Wesley Professional. p. 4. ISBN 978-0-201-67523-8.
- ^ Page Module:Citation/CS1/styles.css has no content.Natalie, Ron (2023-01-30). ""Job Control and other terminal fun"". From the TUHS ("The Unix Heritage Society") mailing list. Archived from the original on 2024-07-07. Retrieved 2024-07-07.
... The Berkeley job control was an interesting hack. For us at BRL the problem was I absolutely detested the C shell syntax. The Korn shell hadn't escaped from AT&T yet, so, I spent time figuring out how that really worked in the C shell (not really well documented), mostly by inspection, and then reimplemented it in the Bourne Shell (we were using the System V source code version for that). I still couldn't get traction at BRL for using the Bourne shell because by that time, tcsh had come out with command line editing. So back to the shell sources I went. By this time, 5R2 had come out so I grabbed the shell source form[sic] that. [...] I reworked emacs-ish command line editing into the shell. Subsequently, I had a nice conversation with David Korn at USENIX, being probably at that point the two most familiar with Bourne shell job control internals. I also sat down with the guys writing either bash or the pdksh (can't remember which) and explained all how this work[sic]. ... Years later I, had left the BRL, spent three years as a Rutgers administrator and was working for a small startup in Virginia. There was a MIPS workstation there. I was slogging along using ed... Not thinking about it, I attempted to retrieve a backgrounded job by typing "fg." To my surprise the shell printed "Job control not enabled." Hmm, I say. That sounds like my error message. "set -J" I type. "Job control enabled." Hey! This is my shell. Turns out Doug Gwyn put my mods into his "System V on BSD" distribution tape and it had made its way into the Mach code base and so every Mach-derived system ended up with it.
Further reading
- Page Module:Citation/CS1/styles.css has no content.Morris I. Bolsky; David G. Korn (1995). The new KornShell command and programming language. Prentice Hall PTR. ISBN 978-0-13-182700-4.
- Page Module:Citation/CS1/styles.css has no content.David G. Korn; Charles J. Northrup; Jeffery Korn (July 1996). "The New KornShell—ksh93". Linux Journal (27).
{{cite journal}}: CS1 maint: deprecated archival service (link)
External links
- Script error: No such module "webarchive".
- Script error: No such module "webarchive".
- Script error: No such module "webarchive".
- MirBSD Korn Shell (mksh)
- Template:Man
Lua error in package.lua at line 80: module 'Module:Navbox/configuration' not found. Lua error in package.lua at line 80: module 'Module:Authority control/config' not found.