HOME

TheInfoList



OR:

KornShell (ksh) is a
Unix shell A Unix shell is a command-line interpreter or shell that provides a command line user interface for Unix-like operating systems. The shell is both an interactive command language and a scripting language, and is used by the operating syste ...
which was developed by David Korn at
Bell Labs Nokia Bell Labs, originally named Bell Telephone Laboratories (1925–1984), then AT&T Bell Laboratories (1984–1996) and Bell Labs Innovations (1996–2007), is an American industrial Research and development, research and scientific developm ...
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 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 th ...
, 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 th ...
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 Gosling Emacs (often shortened to "Gosmacs" or "gmacs") is a discontinued Emacs implementation written in 1981 by James Gosling in C. Gosling initially allowed Gosling Emacs to be redistributed with no formal restrictions, as required by the "E ...
*
associative array In computer science, an associative array, 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 mathematical terms an ...
s and built-in floating-point arithmetic 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 software that is deemed within the free and open-source software to be non-free because its creator, publisher, or other rightsholder or rightsholder partner exercises a legal monopoly afforded by modern copyright and i ...
. 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 to ...
. 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 , , , and . 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, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continu ...
. 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 widget toolkit. It was part of the UNIX 98 Workstation Product Standard, and was for a long time the Unix desktop associated with commercial ...
. This version also provides shell-level mappings for Motif widgets. It was intended as a competitor to Tcl/ 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 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 some minor 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. Bugfix development continues on the ksh93u+m branch, based on the last stable AT&T release (ksh93u+ 2012-08-01). 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 ...
support, dropped support for binary plugins written for ksh93u+ and removal of some broken math functions, was released by AT&T, but has never been maintained or supported by them (not even on its initial release date).


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 Raider


Integration consultant

* Roland Mainz


Primary corporate contributors

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 Google LLC () is an American Multinational corporation, multinational technology company focusing on Search Engine, search engine technology, online advertising, cloud computing, software, computer software, quantum computing, e-commerce, ar ...
* Red Hat


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 Coverity is a proprietary static code analysis tool from Synopsys. This product enables engineers and security teams to find and fix software defects. Coverity started as an independent software company in 2002 at the Computer Systems Laborator ...
*
GitHub GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, continu ...
*
Travis CI Travis CI is a hosted continuous integration service used to build and test software projects hosted on GitHub, Bitbucket, GitLab, Perforce, Apache Subversion and Assembla. Travis CI was the first CI service that provided services to open-sou ...


Variants

There are several forks and
clones Clone or Clones or Cloning or Cloned or The Clone may refer to: Places * Clones, County Fermanagh * Clones, County Monaghan, a town in Ireland Biology * Clone (B-cell), a lymphocyte clone, the massive presence of which may indicate a pathologi ...
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 or a collection of libraries containing a set of graphical control elements (called ''widgets'') used to construct the graphical user interface (GUI) of programs. Most widge ...
. *  – a port of OpenBSD'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 ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, w ...
port of OpenBSD'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 {{about, , the 1970 British film, Permissive (film), the grammatical mode, Permissive mood, the flavor of software license, permissive free software licence A permissive cell or host is one that allows a virus to circumvent its defenses and replica ...
(though not public domain) terms; specifically, the
MirOS Licence The MirOS Licence is a free content licence (for software and other free cultural works such as graphical, literal, musical, …) originated at The MirOS Project for their own publications because the ISC license used by OpenBSD was perceived as ...
. 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 an implementation of the Rexx language for the Amiga, written in 1987 by William S. Hawes, with a number of Amiga-specific features beyond standard REXX facilities. Like most REXX implementations, ARexx is an interpreted language. Program ...
interoperability. In this tradition
MorphOS MorphOS is an AmigaOS-like computer operating system (OS). It is a mixed proprietary and open source OS produced for the Pegasos PowerPC (PPC) processor based computer, PowerUP accelerator equipped Amiga computers, and a series of Freescale dev ...
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 technology corporation producing computer software, consumer electronics, personal computers, and related services headquartered at the Microsoft Redmond campus located in Redmond, Washin ...
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 Wipro ...
, a Unix compatibility package by David Korn.


See also

* Comparison of computer shells *
List of Unix commands This is a list of Unix commands as specified by IEEE Std 1003.1-2008, which is part of the Single UNIX Specification (SUS). These commands can be found on Unix operating systems and most Unix-like operating systems. List See also * List of G ...
*
test (Unix) test is a command line interface, command-line utility found in Unix, Plan 9 from Bell Labs, Plan 9, and Unix-like operating systems that evaluates Conditional (programming), conditional expressions. test was turned into a shell builtin command i ...


References


Further reading

* * David G. Korn, Charles J. Northrup and Jeffery Kor
The New KornShell—ksh93
Linux Journal, Issue 27, July 1996


External links

* * *
MirBSD Korn Shell (mksh)
* {{Authority control Cross-platform software Free software programmed in C Scripting languages Software that uses Meson Unix shells