KornShell - Wikipedia
Jump to content
From Wikipedia, the free encyclopedia
(Redirected from
Korn Shell
Bourne shell backward compatible Unix shell created by David Korn
KornShell
Interaction with
OpenBSD
's default shell,
pdksh
Original author
David Korn
Initial release
1983
; 43 years ago
1983
Final release
93u+
/ August 1, 2012
; 13 years ago
2012-08-01
Preview release
93v-
/ December 24, 2014
; 11 years ago
2014-12-24
Written in
Operating system
Unix
and
Unix-like
(e.g.
Linux
and
macOS
; also works in
Windows 10
Available in
Type
Unix shell
License
AT&T KornShell
Eclipse Public License
pdksh
Public domain
with some
ISC
-like code
mksh
MirOS Licence
dtksh
Eclipse Public License
with some
LGPL
Website
kornshell
.com
Repository
github
.com
/att
/ast
ksh2020
Developers
Kurtis Rader, Siteshwar Vashisht, community
Final release
2020
/ October 10, 2019
; 6 years ago
2019-10-10
Predecessor
93v-
License
Eclipse Public License
Website
kornshell
.com
Repository
github
.com
/ksh2020
/ksh
ksh93u+m
Developers
Martijn Dekker, Johnothan King, hyenias
Stable release
1.0.10
/ August 2, 2024
; 20 months ago
2024-08-02
Predecessor
93u+
License
Eclipse Public License
Website
github
.com
/ksh93
/ksh
/wiki
Repository
github
.com
/ksh93
/ksh
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.
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
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 search for functions
mathematical functions
process substitution and process redirection
C-language-like expressions
enhanced expression-oriented
for
and
while
loops
dynamic extensibility of (dynamically loaded) built-in commands (since
ksh93
reference variables
hierarchically nested variables
variables can have member functions associated with them
object-oriented-programming (since
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 (
unset
composition and aggregation is available, as well as a form of inheritance
History
edit
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.
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
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
Z shell
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
10
As "Desktop KornShell" (
dtksh
),
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,
ksh88
, became the default shell on
AIX
in version 4,
13
14
with ksh93 being available separately.
15
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
16
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 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
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:
AT&T Bell Laboratories
AT&T Network Systems International
AT&T Laboratories (now AT&T Labs)
Omnium Software Engineering
Oracle Corporation
Google
Red Hat
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):
Coverity
GitHub
Travis CI
Variants
edit
There are several
forks
and
clones
of 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 variant of KornShell, intended to be maximally portable
24
across operating systems. It was used as the default shell in
DeLi Linux
7.2.
loksh
– a
Linux
port of
OpenBSD
's variant of KornShell, with minimal changes.
25
mksh
– a
free
implementation of the KornShell language, forked from OpenBSD
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,
26
and is the default shell on Android.
27
SKsh
– an
AmigaOS
variant that provides several Amiga-specific features, such as
ARexx
interoperability.
28
In this tradition
MorphOS
uses
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
/bin/sh
in Doug Gwyn's (US Army BRL) System V on BSD package included Ron Natalie's version of the SVR2
/bin/sh
that had both job control and command line editing. This was a contemporary of the original
ksh
at a time when it had not escaped AT&T. This was subsequently the
/bin/sh
that shipped with all the CMU Mach-derived systems.
33
See also
edit
Free and open-source software portal
Comparison of computer shells
List of Unix commands
test (Unix)
References
edit
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
"Korn Shell Launcher for Windows Subsystem for Linux « Musings"
blog.fpmurphy.com
. Retrieved
2021-01-29
"ast-open package"
. AT&T Research. n.d. Archived from
the original
on October 1, 2015
. Retrieved
December 19,
2022
"LEGAL"
. Archived from
the original
on 2012-02-06
. Retrieved
2010-06-10
"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
"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. pp.
viii–
ix.
ISBN
978-0-596-00195-7
Pendergrast, J. Stephen (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. p. 21.
ISBN
978-0-13-021344-0
"IBM Knowledge Center"
. IBM
. Retrieved
10 December
2018
"IBM Knowledge Center"
. IBM
. Retrieved
10 December
2018
"UNIX95 conformance"
Uw714doc.sco.com
. Retrieved
10 December
2018
"ksh2020"
GitHub
. 26 Feb 2021.
"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
"2020.0.0: Stable release of ksh-2020.0.0"
GitHub
. Retrieved
2021-01-29
Note: ksh2020 is not maintained or supported
"ksh 2020.0.0 CHANGELOG"
GitHub
. 2021-01-29.
"ksh
93u+m
GitHub
. 17 November 2021.
"oksh at GitHub"
GitHub
. 1 August 2020.
"loksh at GitHub"
GitHub
. 15 October 2021.
"5.11. The PDKSH to MKSH transition"
. Archived from
the original
on 2014-07-28
. Retrieved
2014-07-28
"Android's shell and utilities"
android.googlesource.com
. Retrieved
2025-06-27
"Aminet - util/Shell/SKsh21.LZH"
"David Korn Tells All"
. Slashdot. 7 February 2001
. Retrieved
2009-10-22
"Jerry Feldman — USENIX NT/LISA NT conference attendee"
. Lists.blu.org. 29 August 1998
. Retrieved
2009-10-22
"Windows Services for UNIX Version 3.0"
. Technet.microsoft.com. 5 December 2007
. 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
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
edit
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; Jeffery Korn (July 1996).
"The New KornShell—ksh93"
Linux Journal
(27).
{{
cite journal
}}
: CS1 maint: deprecated archival service (
link
External links
edit
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)
mksh(1)
MirOS BSD
i386 General Commands
Manual
Unix shells
Almquist
Bash
Bourne
csh
fish
Hamilton
Korn
PWB
Qshell
rc
sash
tcsh
Thompson
Wish
Zsh
Comparison of command shells
Authority control databases
National
United States
Israel
Other
Yale LUX
Retrieved from "
Categories
Unix shells
Cross-platform software
Free software programmed in C
Scripting languages
Software that uses Meson
Hidden categories:
Articles with short description
Short description is different from Wikidata
CS1 maint: deprecated archival service
Webarchive template wayback links
KornShell
Add topic