KornShell
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.[9] Other early contributors were Bell Labs developers Mike Veach and Pat Sullivan, who wrote the Emacs and vi-style line editing modes' code, respectively.[10] KornShell is backward-compatible with the Bourne shell and includes many features of the C shell, inspired by the requests of Bell Labs users.
![]() Interaction with OpenBSD's default shell, pdksh | |
Original author(s) | David Korn |
---|---|
Initial release | 1983[1][2] |
Stable release | |
Repository | github |
Written in | C |
Operating system | Unix and Unix-like (e.g. Linux and macOS; also works in Windows 10[5]) |
Available in | English |
Type | Unix shell |
License |
|
Website | www |
KornShell, i.e. ksh2020,[3] a "major release for several reasons"[11] (such as removal of EBCDIC support, dropped support for binary plugins written for ksh93u+ and removal of some broken math functions), was released by AT&T, but is not maintained or supported (by AT&T; wasn't even on release date).
Design
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.[12]
- 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 ksh93 version of KornShell).
- Dynamic extensibility of built-in commands (as of ksh93).
History
![](../I/Korn_Shell_running_on_SUA.png.webp)
KornShell was originally proprietary software. In 2000 the source code was released under a license particular to AT&T, but since the 93q release in early 2005 it has been licensed under the Eclipse Public License.[6] 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 pdksh, mksh, bash, and zsh.
The functionality of the original KornShell, 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 ksh88 variant, sometimes with extensions. ksh93 is maintained on GitHub.[13]
As "Desktop KornShell" (dtksh), ksh93 is distributed as part of the Common Desktop Environment.[14] This version also provides shell-level mappings for Motif widgets. It was intended as a competitor to Tcl/Tk.[15]
The original KornShell, ksh88, became the default shell on AIX in version 4,[16][17] with ksh93 being available separately.[18]
UnixWare 7 includes both ksh88 and ksh93. The default Korn shell is ksh93, which is supplied as /usr/bin/ksh, and the older version is available as /usr/bin/ksh88.[19] UnixWare also includes 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 authors continued working on a ksh93v- beta branch until around 2014, when a few community developers essentially "took over" and kept working to produce a heavily refactored "ksh2020" which also introduced breakage and compatibility issues.[20] 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.[21][22] Debian offers ksh2020[23] in its testing version.[24] Active development continues on the ksh 93u+m branch based off the last stable AT&T release (93u+ 2012-08-01).[25]
Variants
There are several software products related to KornShell:
- dtksh – a fork of ksh93 included as part of CDE.
- tksh – a fork of ksh93 that provides access to the Tk widget toolkit.
- oksh – a port of OpenBSD's flavour of KornShell, intended to be maximally portable[26] across operating systems. It was used as the default shell in DeLi Linux 7.2.
- mksh – a free implementation of the KornShell language, forked from pdksh. It was originally developed for MirOS BSD and is licensed under permissive (though not public domain) terms; specifically, the MirOS Licence.[8] In addition to its usage on BSD, this variant has replaced pdksh on Debian,[27] and is the default shell on Android.
- SKsh – an AmigaOS flavour that provides several Amiga-specific features, such as ARexx interoperability.
- 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.[28][29] In SFU version 3.0 Microsoft replaced the MKS Korn shell with a new POSIX.2-compliant shell as part of Interix.[30]
- KornShell is included in UWIN, a Unix compatibility package by David Korn.[31]
See also
- Comparison of computer shells
- List of Unix commands
- The test program
References
- Ron Gomes (Jun 9, 1983). "Toronto USENIX Conference Schedule (tentative)". Newsgroup: net.usenix. Retrieved Dec 29, 2010.
- Guy Harris (Oct 10, 1983). "csh question". Newsgroup: net.flame. Retrieved Dec 29, 2010.
- "Releases · att/ast". GitHub. Retrieved 2021-01-29.
Note: ksh2020 is not maintained or supported
- "C code bug fixes · att/ast@e8b3274". GitHub. Retrieved 2021-01-29.
- "Korn Shell Launcher for Windows Subsystem for Linux « Musings". blog.fpmurphy.com. Retrieved 2021-01-29.
- "Archived copy". Archived from the original on 2018-11-14. Retrieved 2018-12-10.CS1 maint: archived copy as title (link)
- "Archived copy". Archived from the original on 2012-02-06. Retrieved 2010-06-10.CS1 maint: archived copy as title (link)
- "MirBSD Korn Shell". Mirbsd.org. Retrieved 10 December 2018.
-
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.
- 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.
- "att/ast". GitHub. Retrieved 2021-01-29.
- "traditional Bourne shell family / history and development". In-ulm.de. Retrieved 10 December 2018.
- "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.
- Bill Rosenblatt; Arnold Robbins (2002). Learning the Korn Shell (2 ed.). O'Reilly Media, Inc. pp. viii–ix. ISBN 978-0-596-00195-7.
- J. Stephen Pendergrast (1995). Desktop KornShell graphical programming. Addison-Wesley. p. 359. ISBN 978-0-201-63375-7.
- Casey Cannon; Scott Trent; Carolyn Jones (1999). Simply AIX 4.3. Prentice Hall PTR. p. 21. ISBN 978-0-13-021344-0.
- "IBM Knowledge Center". Ibm.com. Retrieved 10 December 2018.
- "IBM Knowledge Center". Ibm.com. Retrieved 10 December 2018.
- "UNIX95 conformance". Uw714doc.sco.com. Retrieved 10 December 2018.
- "ksh2020 changelog". GitHub. 29 May 2020.
- "Rewinding this repo and encouraging community · Issue #1466 · att/ast". GitHub.
- "segfault with extended globs · #1464 · att/ast". GitHub.
- "ksh2020 at GitHub". GitHub. 2 March 2020.
- "Debian Package Tracker - ksh". tracker.debian.org.
- "ksh 93u+m". GitHub.
- "oksh at GitHub". GitHub. 1 August 2020.
- "Archived copy". Archived from the original on 2014-07-28. Retrieved 2014-07-28.CS1 maint: archived copy as title (link)
- "David Korn Tells All". Slashdot. Retrieved 2009-10-22.
- "Jerry Feldman — USENIX NT/LISA NT conference attendee". Lists.blu.org. Retrieved 2009-10-22.
- "Windows Services for UNIX Version 3.0". Technet.microsoft.com. Retrieved 2009-10-22.
- Anatole Olczak (2001). The Korn shell: Unix and Linux programming manual. Addison-Wesley Professional. p. 4. ISBN 978-0-201-67523-8.
Further reading
- Morris I. Bolsky; David G. Korn (1995). The new KornShell command and programming language. Prentice Hall PTR. ISBN 978-0-13-182700-4.
- David G. Korn, Charles J. Northrup and Jeffery Korn The New KornShell—ksh93, Linux Journal, Issue 27, July 1996
External links
- ksh93 man page at the Wayback Machine (archived June 5, 2013)
- ksh88 man page at the Wayback Machine (archived November 5, 2015)
- Public Domain Korn shell (pdksh) at the Wayback Machine (archived October 21, 2016)
- MirBSD Korn Shell (mksh)
- – MirOS BSD i386 General Commands Manual