Jump to content

KornShell

From Niidae Wiki
Revision as of 03:43, 20 March 2025 by imported>Mscalindt (fix typo in name)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Template:Short description Template:Infobox software

Template:Infobox software

Template:Infobox software

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.<ref name=Gomes/><ref name=Harris/> The initial development was based on Bourne shell source code.<ref> Template:Citation</ref> Other early contributors were Bell Labs developers Mike Veach and Pat Sullivan, who wrote the Emacs and vi-style line editing modes' code, respectively.<ref>Template:Cite book</ref> 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

[edit]

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<ref>Template:Cite web</ref>
  • 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 Template:Mono version of KornShell)
  • dynamic search for functions
  • mathematical functions
  • process substitution and process redirection
  • C-language-like expressions
  • enhanced expression-oriented Template:Mono and Template:Mono loops
  • dynamic extensibility of (dynamically loaded) built-in commands (since Template:Mono)
  • reference variables
  • hierarchically nested variables
  • variables can have member functions associated with them
  • object-oriented-programming (since Template:Mono)
    • 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 (Template:Mono)
    • composition and aggregation is available, as well as a form of inheritance

History

[edit]
File:Korn Shell running on SUA.png
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 ksh93q release in early 2005 it has been licensed under the Eclipse Public License.<ref name="ksh93epl" /> 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 Template:Mono, Template:Mono, Bash, and Z shell.

The functionality of the original KornShell, Template:Mono, 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 Template:Mono variant, sometimes with extensions. Template:Mono is maintained on GitHub.<ref>Template:Cite web</ref>

As "Desktop KornShell" (Template:Mono), Template:Mono is distributed as part of the Common Desktop Environment.<ref name="RosenblattRobbins2002">Template:Cite book</ref> This version also provides shell-level mappings for Motif widgets. It was intended as a competitor to Tcl/Tk.<ref name="Pendergrast1995">Template:Cite book</ref>

The original KornShell, Template:Mono, became the default shell on AIX in version 4,<ref name="CannonTrent1999">Template:Cite book</ref><ref>Template:Cite web</ref> with ksh93 being available separately.<ref>Template:Cite web</ref>

UnixWare 7 includes both Template:Mono and Template:Mono. The default Korn shell is Template:Mono, which is supplied as Template:Mono, and the older version is available as Template:Mono.<ref name="UW714doc">Template:Cite web</ref> UnixWare also includes Template:Mono 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<ref name="ksh2020">Template:Cite web</ref> in the fall of 2019. That initial release (although fixing several prior stability issues) introduced breakage and compatibility issues.<ref>Template:Cite web</ref> 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.<ref>Template:Cite web</ref><ref>Template:Cite web</ref> ksh2020 <ref>Template:Cite web</ref> was released as a "major release for several reasons"<ref>Template:Cite web</ref> 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.<ref name="ksh2020"/>

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.<ref>Template:Cite web</ref>

Primary contributions to the main software branch

[edit]

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

[edit]

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

[edit]
  • Roland Mainz

Primary corporate contributors

[edit]

The following are listed in a roughly ascending chronological order of their contributions:

Donated corporate resources

[edit]

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

[edit]

There are several forks and clones of KornShell:

See also

[edit]

Template:Portal

References

[edit]

Template:Reflist

Further reading

[edit]
[edit]

Template:Unix shells Template:Authority control