Trisha Shetty (Editor)

KornShell

Updated on
Edit
Like
Comment
Share on FacebookTweet on TwitterShare on LinkedInShare on Reddit
Original author(s)
  
David Korn

Repository
  
github.com/att/ast

Written in
  
C

Initial release
  
1983

Development status
  
Active

KornShell

Stable release
  
ksh93u+ / August 6, 2012; 4 years ago (2012-08-06)

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. The initial development was based on Bourne shell source code. Other early contributors were Bell Labs developers Mike Veach and Pat Sullivan, who wrote the Emacs- and vi-style line editing modes' code, respectively. KornShell is backward-compatible with the Bourne shell and includes many features of the C shell, inspired by the requests of Bell Labs users.

Contents

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.
  • A choice of three command line editing styles based on vi, Emacs, and XEmacs.
  • 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

    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. 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, GNU 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 still maintained by its author. Releases of ksh93 are versioned by appending a letter to the name; the current version as of 16 January 2017 is ksh93u+, following ksh93u (which followed ksh93t+); ksh93v is in the beta phase (as of 16 January 2017)

    As "Desktop KornShell" (dtksh), ksh93 is distributed as part of the Common Desktop Environment. This version also provides shell-level mappings for Motif widgets. It was intended as competitor to Tcl/Tk.

    The original KornShell, ksh88, became the default shell on AIX in version 4, with ksh93 being available separately.

    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. UnixWare also includes dtksh when CDE is installed.

    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 Linux-based fork of OpenBSD's flavour of KornShell. It is used as the default shell in DeLi Linux.
  • 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. In addition to its usage on BSD, this variant has replaced pdksh on Debian.
  • 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. in SFU version 3.0 Microsoft replaced the MKS Korn shell with a new POSIX.2-compliant shell as part of Interix.
  • KornShell is included in UWIN, a Unix compatibility package by David Korn.
  • References

    KornShell Wikipedia