KornShell (
ksh
) is a
Unix shell
A Unix shell is a Command-line_interface#Command-line_interpreter, command-line interpreter or shell (computing), shell that provides a command line user interface for Unix-like operating systems. The shell is both an interactive command languag ...
which was developed by
David Korn at
Bell Labs
Nokia Bell Labs, commonly referred to as ''Bell Labs'', is an American industrial research and development company owned by Finnish technology company Nokia. With headquarters located in Murray Hill, New Jersey, Murray Hill, New Jersey, the compa ...
in the early 1980s and announced at
USENIX
USENIX is an American 501(c)(3) nonprofit membership organization based in Berkeley, California and founded in 1975 that supports advanced computing systems, operating system (OS), and computer networking research. It organizes several confe ...
on July 14, 1983.
[ The initial development was based on ]Bourne shell
The Bourne shell (sh) is a shell command-line interpreter for computer operating systems. It first appeared on Version 7 Unix, as its default shell. Unix-like systems continue to have /bin/sh—which will be the Bourne shell, or a symbolic lin ...
source code. Other early contributors were Bell Labs developers Mike Veach and Pat Sullivan, who wrote the Emacs
Emacs (), originally named EMACS (an acronym for "Editor Macros"), is a family of text editors that are characterized by their extensibility. The manual for the most widely used variant, GNU Emacs, describes it as "the extensible, customizable, s ...
and vi-style line editing modes' code, respectively. KornShell is backward-compatible with the Bourne shell and includes many features of the C shell
The C shell (csh or the improved version, tcsh) is a Unix shell created by Bill Joy while he was a graduate student at University of California, Berkeley in the late 1970s. It has been widely distributed, beginning with the 2BSD release of the ...
, inspired by the requests of Bell Labs users.
Features
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
Command history is a feature in many operating system shells, computer algebra programs, and other software that allows the user to recall, edit and rerun previous commands.
Command line history was added to Unix in Bill Joy's C shell of 1978; ...
designed after the corresponding C shell
The C shell (csh or the improved version, tcsh) is a Unix shell created by Bill Joy while he was a graduate student at University of California, Berkeley in the late 1970s. It has been widely distributed, beginning with the 2BSD release of the ...
features; job control was added to the Bourne Shell in 1989
* a choice of three command line editing styles based on vi, Emacs
Emacs (), originally named EMACS (an acronym for "Editor Macros"), is a family of text editors that are characterized by their extensibility. The manual for the most widely used variant, GNU Emacs, describes it as "the extensible, customizable, s ...
, and Gosling Emacs
* associative array
In computer science, an associative array, key-value store, map, symbol table, or dictionary is an abstract data type that stores a collection of (key, value) pairs, such that each possible key appears at most once in the collection. In math ...
s and built-in floating-point arithmetic
In computing, floating-point arithmetic (FP) is arithmetic on subsets of real numbers formed by a ''significand'' (a Sign (mathematics), signed sequence of a fixed number of digits in some Radix, base) multiplied by an integer power of that ba ...
operations (only available in the version of KornShell)
* dynamic search for functions
* mathematical functions
* process substitution and process redirection
* C-language-like expressions
* enhanced expression-oriented and loops
* dynamic extensibility of (dynamically loaded) built-in commands (since )
* reference variables
* hierarchically nested variables
* variables can have member functions associated with them
* object-oriented-programming (since )
** 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 ()
** composition and aggregation is available, as well as a form of inheritance
History
KornShell was originally proprietary software
Proprietary software is computer software, software that grants its creator, publisher, or other rightsholder or rightsholder partner a legal monopoly by modern copyright and intellectual property law to exclude the recipient from freely sharing t ...
. 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
The Eclipse Public License (EPL) is a free and open source software license most notably used for the Eclipse IDE and other projects by the Eclipse Foundation. It replaces the Common Public License (CPL) and removes certain terms relating t ...
. 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 , , Bash, and Z shell
The Z shell (Zsh) is a Unix shell that can be used as an interactive login shell and as a command interpreter for shell scripting. Zsh is an extended Bourne shell with many improvements, including some features of Bash, ksh, and tcsh.
Zsh w ...
.
The functionality of the original KornShell, , 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 variant, sometimes with extensions. is maintained on GitHub
GitHub () is a Proprietary software, proprietary developer platform that allows developers to create, store, manage, and share their code. It uses Git to provide distributed version control and GitHub itself provides access control, bug trackin ...
.
As "Desktop KornShell" (), is distributed as part of the Common Desktop Environment
The Common Desktop Environment (CDE) is a desktop environment for Unix and OpenVMS, based on the Motif (software), Motif widget toolkit. It was part of the UNIX 98, UNIX 98 Workstation Product Standard, and was for a long time the Unix desktop a ...
. This version also provides shell-level mappings for Motif widgets. It was intended as a competitor to Tcl
TCL or Tcl or TCLs may refer to:
Business
* TCL Technology, a Chinese consumer electronics and appliance company
** TCL Electronics, a subsidiary of TCL Technology
* Texas Collegiate League, a collegiate baseball league
* Trade Centre Limited ...
/ Tk.
The original KornShell, , became the default shell on AIX in version 4, with ksh93 being available separately.
UnixWare 7 includes both and . The default Korn shell is , which is supplied as , and the older version is available as . UnixWare also includes 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
Red Hat, Inc. (formerly Red Hat Software, Inc.) is an American software company that provides open source software products to enterprises and is a subsidiary of IBM. Founded in 1993, Red Hat has its corporate headquarters in Raleigh, North ...
in 2017 (due to customer requests) and resulted in the eventual initial release of ksh2020 in the fall of 2019. That initial release (although fixing several prior stability issues) introduced breakage and compatibility issues. 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. ksh2020 was released as a "major release for several reasons" such as removal of EBCDIC
Extended Binary Coded Decimal Interchange Code (EBCDIC; ) is an eight- bit character encoding used mainly on IBM mainframe and IBM midrange computer operating systems. It descended from the code used with punched cards and the corresponding si ...
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.
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.
Primary contributions to the main software branch
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
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
* Roland Mainz
Primary corporate contributors
The following are listed in a roughly ascending chronological order of their contributions:
* AT&T Bell Laboratories
Nokia Bell Labs, commonly referred to as ''Bell Labs'', is an American industrial research and development company owned by Finnish technology company Nokia. With headquarters located in Murray Hill, New Jersey, Murray Hill, New Jersey, the compa ...
* AT&T Network Systems International
* AT&T Laboratories (now AT&T Labs)
* Omnium Software Engineering
* Oracle Corporation
Oracle Corporation is an American Multinational corporation, multinational computer technology company headquartered in Austin, Texas. Co-founded in 1977 in Santa Clara, California, by Larry Ellison, who remains executive chairman, Oracle was ...
* Google
Google LLC (, ) is an American multinational corporation and technology company focusing on online advertising, search engine technology, cloud computing, computer software, quantum computing, e-commerce, consumer electronics, and artificial ...
* Red Hat
Red Hat, Inc. (formerly Red Hat Software, Inc.) is an American software company that provides open source software products to enterprises and is a subsidiary of IBM. Founded in 1993, Red Hat has its corporate headquarters in Raleigh, North ...
Donated corporate resources
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
GitHub () is a Proprietary software, proprietary developer platform that allows developers to create, store, manage, and share their code. It uses Git to provide distributed version control and GitHub itself provides access control, bug trackin ...
* Travis CI
Variants
There are several forks
In cutlery or kitchenware, a fork (from 'pitchfork') is a Eating utensil, utensil, now usually made of metal, whose long handle terminates in a head that branches into several narrow and often slightly curved tine (structural), tines with whic ...
and clones of KornShell:
* – a fork of included as part of CDE.
* – a fork of that provides access to the Tk widget toolkit
A widget toolkit, widget library, GUI toolkit, or UX library is a library (computing), library or a collection of libraries containing a set of graphical control elements (called ''widgets'') used to construct the graphical user interface (GUI) of ...
.
* – a port of OpenBSD
OpenBSD is a security-focused operating system, security-focused, free software, Unix-like operating system based on the Berkeley Software Distribution (BSD). Theo de Raadt created OpenBSD in 1995 by fork (software development), forking NetBSD ...
's variant of KornShell, intended to be maximally portable across operating systems. It was used as the default shell in DeLi Linux 7.2.
* – a Linux
Linux ( ) is a family of open source Unix-like operating systems based on the Linux kernel, an kernel (operating system), operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically package manager, pac ...
port of OpenBSD
OpenBSD is a security-focused operating system, security-focused, free software, Unix-like operating system based on the Berkeley Software Distribution (BSD). Theo de Raadt created OpenBSD in 1995 by fork (software development), forking NetBSD ...
's variant of KornShell, with minimal changes.
* – a free implementation of the KornShell language, forked from OpenBSD . 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 on Debian, and is the default shell on Android.
* – an AmigaOS
AmigaOS is a family of proprietary native operating systems of the Amiga and AmigaOne personal computers. It was developed first by Commodore International and introduced with the launch of the first Amiga, the Amiga 1000, in 1985. Early versions ...
variant that provides several Amiga-specific features, such as ARexx
ARexx is a Rexx interpreter for Amiga, written in 1987 by William S. Hawes, with a number of Amiga-specific features beyond standard Rexx. An ARexx script can communicate with software that implements an ''ARexx port''. An Amiga application can ...
interoperability. In this tradition MorphOS
MorphOS is an AmigaOS-like operating system designed for Power and PowerPC based computers. The core, based on the Quark microkernel, is proprietary, although several libraries and other parts are open source, such as the Ambient desktop.
The p ...
uses 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. In SFU version 3.0 Microsoft
Microsoft Corporation is an American multinational corporation and technology company, technology conglomerate headquartered in Redmond, Washington. Founded in 1975, the company became influential in the History of personal computers#The ear ...
replaced the MKS Korn shell with a new POSIX.2-compliant shell as part of Interix.
* KornShell is included in UWIN
UWIN is a computer software package created by David Korn which allows programs written for the operating system Unix to be built and run on Microsoft Windows with few, if any, changes. Some of the software development was subcontracted to Wi ...
, a Unix compatibility package by David Korn.
* in Doug Gwyn's (US Army BRL) System V on BSD package included Ron Natalie's version of the SVR2 that had both job control and command line editing. This was a contemporary of the original at a time when it had not escaped AT&T. This was subsequently the that shipped with all the CMU Mach-derived systems.
See also
* Comparison of computer shells
* List of Unix commands
This is a list of the shell commands of the most recent version of the Portable Operating System Interface (POSIX) IEEE Std 1003.1-2024 which is part of the Single UNIX Specification (SUS). These commands are implemented in many shells on moder ...
* test (Unix)
test is a command-line utility found in Unix, Plan 9, and Unix-like operating systems that evaluates conditional expressions. test was turned into a shell builtin command in 1981 with UNIX System III and at the same time made available under ...
References
Further reading
*
*
External links
*
*
*
MirBSD Korn Shell (mksh)
*
{{Authority control
Cross-platform software
Free software programmed in C
Scripting languages
Software that uses Meson
Unix shells