KornShell

Last updated
KornShell
Original author(s) David Korn
Initial release1983;41 years ago (1983) [1] [2]
Final release
93u+ / August 1, 2012;11 years ago (2012-08-01)
Preview release
93v- / December 24, 2014;9 years ago (2014-12-24)
Repository github.com/att/ast
Written in C
Operating system Unix and Unix-like (e.g. Linux and macOS; also works in Windows 10 [3] )
Available inEnglish
Type Unix shell
License
Website kornshell.com OOjs UI icon edit-ltr-progressive.svg
ksh2020
Developer(s) Kurtis Rader, Siteshwar Vashisht, community
Final release
2020 / October 10, 2019;4 years ago (2019-10-10)
Repository github.com/ksh2020/ksh
Predecessor93v-
License Eclipse Public License
Website kornshell.com   OOjs UI icon edit-ltr-progressive.svg
ksh93u+m
Developer(s) Martijn Dekker, Johnothan King, hyenias
Stable release
1.0.8 / January 1, 2024;45 days ago (2024-01-01)
Repository github.com/ksh93/ksh
Predecessor93u+
License Eclipse Public License
Website kornshell.com   OOjs UI icon edit-ltr-progressive.svg

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. [1] [2] The initial development was based on Bourne shell source code. [7] Other early contributors were Bell Labs developers Mike Veach and Pat Sullivan, who wrote the Emacs and vi-style line editing modes' code, respectively. [8] 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

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:

History

Korn Shell running on Windows Services for UNIX 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. [4] 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 some minor 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] Bugfix development continues on the ksh93u+m branch, based on the last stable AT&T release (ksh93u+ 2012-08-01). [21] ksh2020 [22] was released as a "major release for several reasons" [23] 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).

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:

Integration consultant

Primary corporate contributors

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

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):

Variants

There are several forks and clones of KornShell:

See also

Related Research Articles

<span class="mw-page-title-main">AWK</span> Programming language

AWK is a domain-specific language designed for text processing and typically used as a data extraction and reporting tool. Like sed and grep, it is a filter, and is a standard feature of most Unix-like operating systems.

<span class="mw-page-title-main">Shell script</span> Script written for the shell, or command line interpreter, of an operating system

A shell script is a computer program designed to be run by a Unix shell, a command-line interpreter. The various dialects of shell scripts are considered to be scripting languages. Typical operations performed by shell scripts include file manipulation, program execution, and printing text. A script which sets up the environment, runs the program, and does any necessary cleanup or logging, is called a wrapper.

<span class="mw-page-title-main">Unix shell</span> Command-line interpreter for Unix operating system

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 system to control the execution of the system using shell scripts.

<span class="mw-page-title-main">Bourne shell</span> Command-line interpreter for operating systems

The Bourne shell (sh) is a shell command-line interpreter for computer operating systems.

<span class="mw-page-title-main">Z shell</span> Unix 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.

tcsh Unix shell based on and compatible with the C shell

tcsh is a Unix shell based on and backward compatible with the C shell (csh).

rc Command line interpreter for Version 10 Unix and Plan 9 from Bell Labs operating systems

rc is the command line interpreter for Version 10 Unix and Plan 9 from Bell Labs operating systems. It resembles the Bourne shell, but its syntax is somewhat simpler. It was created by Tom Duff, who is better known for an unusual C programming language construct.

Almquist shell is a lightweight Unix shell originally written by Kenneth Almquist in the late 1980s. Initially a clone of the System V.4 variant of the Bourne shell, it replaced the original Bourne shell in the BSD versions of Unix released in the early 1990s.

<span class="mw-page-title-main">MirOS BSD</span>

MirOS BSD is a free and open source operating system which started as a fork of OpenBSD 3.1 in August 2002. It was intended to maintain the security of OpenBSD with better support for European localisation. Since then it has also incorporated code from other free BSD descendants, including NetBSD, MicroBSD and FreeBSD. Code from MirOS BSD was also incorporated into ekkoBSD, and when ekkoBSD ceased to exist, artwork, code and developers ended up working on MirOS BSD for a while.

In computer programming, glob patterns specify sets of filenames with wildcard characters. For example, the Unix Bash shell command mv *.txttextfiles/ moves all files with names ending in .txt from the current directory to the directory textfiles. Here, * is a wildcard and *.txt is a glob pattern. The wildcard * stands for "any string of any length including empty, but excluding the path separator characters ".

David G. Korn is an American UNIX programmer and the author of the Korn shell (ksh), a command line interface/programming language.

<span class="mw-page-title-main">Comparison of command shells</span>

A command shell is a command-line interface to interact with and manipulate a computer's operating system.

alias (command) Command in various command line interpreters

In computing, alias is a command in various command-line interpreters (shells), which enables a replacement of a word by another string. It is mainly used for abbreviating a system command, or for adding default arguments to a regularly used command. alias is available in Unix shells, AmigaDOS, 4DOS/4NT, KolibriOS, Windows PowerShell, ReactOS, and the EFI shell. Aliasing functionality in the MS-DOS and Microsoft Windows operating systems is provided by the DOSKey command-line utility.

MKS Toolkit is a software package produced and maintained by PTC that provides a Unix-like environment for scripting, connectivity and porting Unix and Linux software to Microsoft Windows. It was originally created for MS-DOS, and OS/2 versions were released up to version 4.4. Several editions of each version, such as MKS Toolkit for developers, power users, enterprise developers and interoperability are available, with the enterprise developer edition being the most complete.

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, India. References, correct or not, to the software as U/Win and AT&T Unix for Windows can be found in some cases, especially from the early days of its existence.

<span class="mw-page-title-main">Unix-like</span> Operating system that behaves in a manner similar to a Unix system

A Unix-like operating system is one that behaves in a manner similar to a Unix system, although not necessarily conforming to or being certified to any version of the Single UNIX Specification. A Unix-like application is one that behaves like the corresponding Unix command or shell. Although there are general philosophies for Unix design, there is no technical standard defining the term, and opinions can differ about the degree to which a particular operating system or application is Unix-like.

<span class="mw-page-title-main">Unix</span> Family of computer operating systems

Unix is a family of multitasking, multi-user computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, and others.

Getopt is a C library function used to parse command-line options of the Unix/POSIX style. It is a part of the POSIX specification, and is universal to Unix-like systems. It is also the name of a Unix program for parsing command line arguments in shell scripts.

<span class="mw-page-title-main">Command-line interface</span> Computer interface that uses text

A command-line interface (CLI) is a means of interacting with a computer program by inputting lines of text called command-lines. Command-line interfaces emerged in the mid-1960s, on computer terminals, as an interactive and more user-friendly alternative to the non-interactive interface available with punched cards.

References

  1. 1 2 Ron Gomes (Jun 9, 1983). "Toronto USENIX Conference Schedule (tentative)". Newsgroup:  net.usenix . Retrieved Dec 29, 2010.
  2. 1 2 Guy Harris (Oct 10, 1983). "csh question". Newsgroup:  net.flame . Retrieved Dec 29, 2010.
  3. "Korn Shell Launcher for Windows Subsystem for Linux « Musings". blog.fpmurphy.com. Retrieved 2021-01-29.
  4. 1 2 "ast-open package". AT&T Research. n.d. Archived from the original on October 1, 2015. Retrieved December 19, 2022.
  5. 1 2 "MirBSD Korn Shell". Mirbsd.org. Retrieved 10 December 2018.
  6. 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.
  7. 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.
  8. "traditional Bourne shell family / history and development". In-ulm.de. Retrieved 10 December 2018.
  9. "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.
  10. Bill Rosenblatt; Arnold Robbins (2002). Learning the Korn Shell (2 ed.). O'Reilly. pp. viii–ix. ISBN   978-0-596-00195-7.
  11. Pendergrast, J. Stephen (1995). Desktop KornShell graphical programming. Addison-Wesley. p. 359. ISBN   978-0-201-63375-7.
  12. Casey Cannon; Scott Trent; Carolyn Jones (1999). Simply AIX 4.3. Prentice Hall. p. 21. ISBN   978-0-13-021344-0.
  13. "IBM Knowledge Center". IBM. Retrieved 10 December 2018.
  14. "IBM Knowledge Center". IBM. Retrieved 10 December 2018.
  15. "UNIX95 conformance". Uw714doc.sco.com. Retrieved 10 December 2018.
  16. "ksh2020". GitHub. 26 Feb 2021.
  17. "ksh2020 changelog". GitHub. 29 May 2020.
  18. "Rewinding this repo and encouraging community · Issue #1466 · att/ast". GitHub.
  19. "segfault with extended globs · #1464 · att/ast". GitHub.
  20. "ksh 93u+m". GitHub. 17 November 2021.
  21. "2020.0.0: Stable release of ksh-2020.0.0". GitHub. Retrieved 2021-01-29. Note: ksh2020 is not maintained or supported
  22. "ksh 2020.0.0 CHANGELOG". GitHub. 2021-01-29.
  23. "oksh at GitHub". GitHub. 1 August 2020.
  24. "loksh at GitHub". GitHub. 15 October 2021.
  25. "5.11. The PDKSH to MKSH transition". Archived from the original on 2014-07-28. Retrieved 2014-07-28.
  26. "Aminet - util/Shell/SKsh21.LZH".
  27. "David Korn Tells All". Slashdot. Retrieved 2009-10-22.
  28. "Jerry Feldman — USENIX NT/LISA NT conference attendee". Lists.blu.org. 29 August 1998. Retrieved 2009-10-22.
  29. "Windows Services for UNIX Version 3.0". Technet.microsoft.com. Retrieved 2009-10-22.
  30. Anatole Olczak (2001). The Korn shell: Unix and Linux programming manual. Addison-Wesley Professional. p. 4. ISBN   978-0-201-67523-8.

Further reading