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.

KornShell
Interaction with OpenBSD's default shell, pdksh
Original author(s)David Korn
Initial release1983 (1983)[1][2]
Stable release
2020.0.0[3][4] / October 10, 2019 (2019-10-10)
Repositorygithub.com/att/ast
Written inC
Operating systemUnix and Unix-like (e.g. Linux and macOS; also works in Windows 10[5])
Available inEnglish
TypeUnix shell
License
Websitewww.kornshell.org

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:

History

Korn Shell running on Windows Services for UNIX

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

References

  1. Ron Gomes (Jun 9, 1983). "Toronto USENIX Conference Schedule (tentative)". Newsgroup: net.usenix. Retrieved Dec 29, 2010.
  2. Guy Harris (Oct 10, 1983). "csh question". Newsgroup: net.flame. Retrieved Dec 29, 2010.
  3. "Releases · att/ast". GitHub. Retrieved 2021-01-29. Note: ksh2020 is not maintained or supported
  4. "C code bug fixes · att/ast@e8b3274". GitHub. Retrieved 2021-01-29.
  5. "Korn Shell Launcher for Windows Subsystem for Linux « Musings". blog.fpmurphy.com. Retrieved 2021-01-29.
  6. "Archived copy". Archived from the original on 2018-11-14. Retrieved 2018-12-10.CS1 maint: archived copy as title (link)
  7. "MirBSD Korn Shell". Mirbsd.org. Retrieved 10 December 2018.
  8. 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.
  9. 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.
  10. "att/ast". GitHub. Retrieved 2021-01-29.
  11. "traditional Bourne shell family / history and development". In-ulm.de. Retrieved 10 December 2018.
  12. "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.
  13. Bill Rosenblatt; Arnold Robbins (2002). Learning the Korn Shell (2 ed.). O'Reilly Media, Inc. pp. viii–ix. ISBN 978-0-596-00195-7.
  14. J. Stephen Pendergrast (1995). Desktop KornShell graphical programming. Addison-Wesley. p. 359. ISBN 978-0-201-63375-7.
  15. Casey Cannon; Scott Trent; Carolyn Jones (1999). Simply AIX 4.3. Prentice Hall PTR. p. 21. ISBN 978-0-13-021344-0.
  16. "IBM Knowledge Center". Ibm.com. Retrieved 10 December 2018.
  17. "IBM Knowledge Center". Ibm.com. Retrieved 10 December 2018.
  18. "UNIX95 conformance". Uw714doc.sco.com. Retrieved 10 December 2018.
  19. "ksh2020 changelog". GitHub. 29 May 2020.
  20. "Rewinding this repo and encouraging community · Issue #1466 · att/ast". GitHub.
  21. "segfault with extended globs · #1464 · att/ast". GitHub.
  22. "ksh2020 at GitHub". GitHub. 2 March 2020.
  23. "Debian Package Tracker - ksh". tracker.debian.org.
  24. "ksh 93u+m". GitHub.
  25. "oksh at GitHub". GitHub. 1 August 2020.
  26. "Archived copy". Archived from the original on 2014-07-28. Retrieved 2014-07-28.CS1 maint: archived copy as title (link)
  27. "David Korn Tells All". Slashdot. Retrieved 2009-10-22.
  28. "Jerry Feldman — USENIX NT/LISA NT conference attendee". Lists.blu.org. Retrieved 2009-10-22.
  29. "Windows Services for UNIX Version 3.0". Technet.microsoft.com. Retrieved 2009-10-22.
  30. Anatole Olczak (2001). The Korn shell: Unix and Linux programming manual. Addison-Wesley Professional. p. 4. ISBN 978-0-201-67523-8.

Further reading

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.