Another name for a user interface of an operating system. The term “shell” usually refers to the command-line interface (called the command interpreter) used by various flavors of the UNIX operating system, but on Microsoft Windows platforms the desktop graphical user interface (GUI) element can also be considered a type of shell.
In a UNIX command-line shell, when a user types a command such as ls (list directory contents), the shell executes the associated program called ls. When the shell executes the command, it typically starts a new process for the command and goes into a sleep state until the command finishes executing, at which time the shell wakes up and issues a prompt to indicate that it is ready to receive another command. The output of shell commands is directed by default to Standard Output, which is the screen, but you can redirect command outputs to files and other applications. One advantage of using a command-line shell is that shell scripts can be written for batch execution of a series of shell commands.
Various shells are available for different UNIX platforms, each tailored to a different administration and programming environment. One commonly used shell is the Bourne Shell, which functions as both a command interpreter and a high-level programming language in which shell scripts can be used to automate groups of processes. Other UNIX shells include the C Shell of System V UNIX, which includes job control and command history mechanisms, and the Korn shell, which supports command-line editing.
The command prompt in Windows provides similar functionality to UNIX shells, although scripting capabilities are more limited because they are based on the MS-DOS command language. The Windows Script Host (WSH) overcomes these limitations by supporting higher-level scripting languages such as Microsoft Visual Basic, Scripting Edition (VBScript), and JScript.
The term “shell” refers to the external user-accessible portion of an operating system, while the term “kernel” refers to the stuff under the hood that is normally hidden from the user.
UNIX shell scripts are called batch files in Windows programming environments. In an IBM mainframe environment, they are called EXECs.