Original author(s) | David Korn |
---|---|
Initial release | 1983[1] [2] |
Final release | 93u+ / August 1, 2012 |
Preview release | 93v- / December 24, 2014 |
Repository | github |
Written in | C |
Operating system | Unix and Unix-like (e.g. Linux and macOS; also works in Windows 10 [3] ) |
Available in | English |
Type | Unix shell |
License |
|
Website | kornshell |
Developer(s) | Kurtis Rader, Siteshwar Vashisht, community |
---|---|
Final release | 2020 / October 10, 2019 |
Repository | github |
Predecessor | 93v- |
License | Eclipse Public License |
Website | kornshell |
Developer(s) | Martijn Dekker, Johnothan King, hyenias |
---|---|
Stable release | 1.0.9 / July 2, 2024 |
Repository | github |
Predecessor | 93u+ |
License | Eclipse Public License |
Website | github |
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.
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:
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).
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.
The following are listed in a roughly ascending chronological order of their contributions:
The following are listed in a roughly ascending chronological order of their contributions:
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):
There are several forks and clones of KornShell:
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 command 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.
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.
vi is a screen-oriented text editor originally created for the Unix operating system. The portable subset of the behavior of vi and programs based on it, and the ex editor language supported within these programs, is described by the Single Unix Specification and POSIX.
The Bourne shell (sh
) is a shell command-line interpreter for computer operating systems.
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 is a Unix shell based on and backward compatible with the C shell (csh
).
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.
In Unix-like and some other operating systems, the pwd
command writes the full pathname of the current working directory to the standard output.
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 Gerard Korn is an American UNIX programmer and the author of the Korn shell (ksh), a command line interface/programming language.
Interix was an optional, POSIX-conformant Unix subsystem for Windows NT operating systems. Interix was a component of Windows Services for UNIX, and a superset of the Microsoft POSIX subsystem. Like the POSIX subsystem, Interix was an environment subsystem for the NT kernel. It included numerous open source utility software programs and libraries. Interix was originally developed and sold as OpenNT until purchased by Microsoft in 1999.
A command shell is a command-line interface to interact with and manipulate a computer's operating system.
Fish is a Unix-like shell with a focus on interactivity and usability. Fish is designed to be feature-rich by default, rather than highly configurable. Fish is considered an exotic shell since it does not adhere to POSIX shell standards, at the discretion of its maintainers.
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, FreeDOS, 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.
The script command is a Unix utility that records a terminal session. It dates back to the 1979 3.0 Berkeley Software Distribution (BSD).
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.
In computing, command substitution is a facility that allows a command to be run and its output to be pasted back on the command line as arguments to another command. Command substitution first appeared in the Bourne shell, introduced with Version 7 Unix in 1979, and has remained a characteristic of all later Unix shells. The feature has since been adopted in other programming languages as well, including Perl, PHP, Ruby and Microsoft's Powershell under Windows. It also appears in Microsoft's CMD.EXE in the FOR
command and the ( )
command.
Instead of inventing a new script language, we built a form entry system by modifying the Bourne shell, adding built-in commands as necessary.
Note: ksh2020 is not maintained or supported
... 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.