- Shell (computing)
A shell is a piece of software that provides an interface for users of an operating system which provides access to the services of a kernel. However, the term is also applied very loosely to applications and may include any software that is "built around" a particular component, such as web browsers and email clients that are "shells" for HTML rendering engines. The name shell originates from shells being an outer layer of interface between the user and the internals of the operating system (the kernel).
Operating system shells generally fall into one of two categories: command-line and graphical. Command-line shells provide a command-line interface (CLI) to the operating system, while graphical shells provide a graphical user interface (GUI). In either category the primary purpose of the shell is to invoke or "launch" another program; however, shells frequently have additional capabilities such as viewing the contents of directories.
The relative merits of CLI- and GUI-based shells are often debated. CLI proponents claim that certain operations can be performed much faster under CLI shells than under GUI shells (such as moving files, for example). However, GUI proponents advocate the comparative usability and simplicity of GUI shells. The best choice is often determined by the way in which a computer will be used. On a server mainly used for data transfers and processing with expert administration , a CLI is likely to be the best choice. However, a GUI would be more appropriate for a computer to be used for image or video editing and the development of the above data.
In expert systems, a shell is a piece of software that is an "empty" expert system without the knowledge base for any particular application.
The first Unix shell, Ken Thompson's sh, was modeled after the Multics shell, itself modeled after the RUNCOM program Louis Pouzin showed to the Multics Team. The 'rc' suffix on some Unix configuration files (e.g. ".vimrc"), is a remnant of the RUNCOM ancestry of Unix shells.
Practically all modern operating system shells can be used in both interactive and batch mode, the latter usually by specifying the name of a text file with commands listed therein. Batch mode use of shells usually involves structures, conditionals, variables, and other elements of programming languages; some have the bare essentials needed for such a purpose, others are very sophisticated programming languages in and of themselves. Conversely, some programming languages can be used interactively from an operating system shell or in a purpose-built programmer.
Text (CLI) shells
Unix shellsMain article: Unix shell
Notable historic or popular Unix shells include:
- Bourne shell (sh)
- Almquist shell (ash)
- Debian Almquist shell (dash)
- Bourne-Again shell (bash)
- Korn shell (ksh)
- Z shell (zsh)
- Almquist shell (ash)
- C shell (csh)
- TENEX C shell (tcsh)
- Hamilton C shell
- EMACS shell (eshell)
- Es shell (es)
- esh (Unix) – Easy Shell
- friendly interactive shell (fish)
- rc shell (rc) – shell for Plan 9 from Bell Labs and Unix
- scsh (Scheme Shell)
- Stand-alone Shell (sash)
- rsh - a remote shell available on many systems, can also mean Restricted shell on some systems
- tclsh (command line) and wish (GUI), the shells provided with implementations of the Tcl and Tcl/Tk programming languages -- some implementations may include the version number in the name of the shell, such as tclsh83 or tcl83sh.
- psh - a Perl-based general purpose shell available in some cases.
- smrsh - restricted shell for use with the Unix sendmail programme.
- sqsh - a shell available with some SQL implementations for database queries and other tasks.
Several of the above are available with DOS and Windows software packages which allow for interoperability with Unix at varying levels. Common examples are the MKS Toolkit (sh, bash, ksh, csh, tclsh, rsh with version 8.0 and subsequent), UnxUtils, UWIN (AT&T Unix for Windows, also abbreviated U/WIN), Cygwin, DJGPP, Interix, and other programmes of the same type. Windows Services For Unix in most versions provides a Korn and C shell as well as Perl capable of command line use.
Unix shells are also available for other operating systems including OS/2 and VMS[disambiguation needed ], as well as the main VMS shell, DCL[disambiguation needed ] being available for DOS, Windows, OS/2, and Unix-type systems in various forms.
Versions of DOS and Windows NT shells are also available for Unix/Linux type systems.
- 4DOS, 4OS2, 4NT – shells for DOS, OS/2, and Windows NT written and sold by JP Software. The Take Command programs were compatible shells requiring and enjoying a GUI. Like command.com, 4DOS can of course be run on Windows NT type systems and at least some versions run on OS/2 as well, and early 4OS/2 versions can be run on Windows NT by means of the OS/2 environmental subsystem included in versions 3.51 and 4.0 of Windows NT.
- Amiga CLI/AmigaShell, which functioned as an alternative to the AmigaOS GUI, called Workbench
- BASIC-PLUS – RSTS/E
- Beemos (BEEMos) – A small project that provides settings, applications, and feels like a separate OS that runs over Windows XP.
- CANDE MCS – command line shell and text editor on the MCP operating system
- CCP – console command processor of CP/M
- cmd.exe – CMD.exe is the name of the main shell for OS/2, Windows CE and Windows NT-based operating systems. Although similar in name, they are notably different. Emulators exist for some versions of Windows CE of the Windows NT 4.0 version of cmd.exe as well as the MS-DOS 6.22 and PC-DOS 7 versions of command.com, and at least one version of the DR-DOS analogue thereof. After version 2.2, OS/2 has Rexx directly available to it in the default installation, as does PC-DOS 7 and subsequent versions. It is difficult or impossible to use the native Windows CE version in batch mode in some versions. Windows NT cmd.exe includes math and many other programming functions not available in MS-DOS/Windows 95-98 command.com batch programming; programs written for batch-mode execution by the former are often called shell programs and the latter batch files.
- COMMAND.COM – shell for various DOS versions including Windows 95-98-ME, also present in the operating systems of the Windows NT-2000 and XP substreams. MS-DOS Command.com is directly available when using OS/2 on a dual-boot configuration.
- Console  – A replacement for the Win32 console window. The default back-end is cmd.exe but other shells like PyCmd can be used too.
- Commodore DOS Wedge – an extension to the Commodore 64's BASIC 2.0 that included shorthand for common disk operations
- DCL – the standard shell for OpenVMS, deriving from versions created for earlier DEC operating systems
- DDT – PDP-10 debugger from DEC used as a command shell for the MIT Incompatible Timesharing System
- DROS – Java ME platform based DOS like shell for smart phones.
- EFI-SHELL – an open source Extensible Firmware Interface command shell
- Google Shell – Browser based front end for Google Search
- iSeries QSHELL – Unix style shell on the IBM OS/400
- Macintosh Programmer's Workshop – old command line environment used for software development on the classic Mac OS
- Microsoft BASIC – the primary operating environment for a number of older 8-bit computer systems
- NDOS -- provided with some versions of the Norton Utilities for DOS along with a set of batch enhancers, this is a lightly modified version 4DOS.
- PyCmd  – A cmd.exe replacement, using the Win32 console window.
- Rexx – IBM's scripting languages
- Singularity shell – the standard shell for Singularity
- Windows PowerShell – the object-oriented successor of cmd.exe (formerly known as Monad or the Microsoft Shell (MSH))
- Windows Recovery Console – feature of the Windows 2000, Windows XP and Windows 2003 operating systems
Shells for programming languages
Noteworthy interactive versions of programming languages include:
- The Read-eval-print loop commonly associated with Lisp, but used in other programming languages as well. An example is SLIME for Common Lisp.
- BeanShell – shell for Java
- GMLCMD – GML Shell
- Interactive Ruby Shell – interactive version of Ruby
- PHPsh – shell for PHP
- Python's standard interpreter can be invoked in a shell mode
- Wish (GUI) and tclsh (CLI) for Tcl/Tk
- tkcon shell and IDE for Tcl/Tk has many hidden powers, including interacting with other running Tcl/Tk programs.
- Rexx implementations can be invoked and used interactively in a fashion which allows access to the shell on which it is run, and both Rexx programmes and shell scripts for the latter can be written in this way.
- BASIC versions as well as other languages may in some cases have commands like kill, system, files, and others which allow operating system access from the interactive and often from programme mode.
- The Windows Script Host, which uses scripting engines for many glue languages like Perl, Rexx, PHP, Ruby, Tcl, Delphi, XSLT, Python and others and has those for VBScript, JScript, and VBA installed by default, is capable of running in interactive mode from cmd.exe, command.com, or most other shells running under Windows like the MKS Unix shells, (or any script or programme with OS access or the Run box of the GUI) by invoking as CScript.exe //I.
Shells for Other Software
Some implementations of telnet, other telecommunications tools, and other types of software can have shells capable of interactive and batch/script use.
Graphical (GUI) shells
On Microsoft WindowsMain articles: Windows Shell and Windows shell replacement
Modern versions of the Microsoft Windows operating system use Windows Shell as their shell. Explorer provides the familiar desktop environment, start menu, and task bar, as well as the file management functions of the operating system. Older versions also include Program Manager (progman.exe) which was the shell for the 3.x series of Microsoft Windows, and which in fact ships with later versions of Windows of both the 95 and NT types at least through Windows XP. The interfaces of Windows versions 1 and 2 were markedly different.
Many individuals and developers dissatisfied with the interface of Windows Explorer have developed software that either alters the functioning and appearance of the shell or replaces it entirely. WindowBlinds by StarDock is a good example of the former sort of application. LiteStep, SharpE and Emerge Desktop are good examples of the latter.
Interoperability programmes and purpose-designed software allows Windows users to also use equivalents of many of the various Unix-based GUIs discussed below as well as Macintosh, and an equivalent of the OS/2 Presentation Manager for version 3.0 is available to run some OS/2 programmes under some conditions using the OS/2 environmental subsystem in versions of Windows NT. For an example of the first, X Window-type environments can be run using combinations of Windows/Unix interoperability packages, communications suites such as Hummingbird Connectivity, and/or X server progammes for Windows such as WinAxe and others.
On X Window System
Graphical (GUI) shells typically build on top of a windowing system. In case of the X Window System, there are both independent X window managers, and complete desktop environments which depend on a window manager.
X Window System environments (mainly for Unix-like operating systems):
- independent X window managers, such as Blackbox and Fluxbox
- desktop shells, such as Enlightenment DR17
- full desktop environments, such as:
On other platforms
- Amiga environments:
- Ambient (for MorphOS)
- Directory Opus
- Wanderer (for AROS)
- DOS Shell
- Finder (for Mac OS X)
- Doors CS, MirageOS, Ion, and CrunchyOS (for TI-83 and TI-84 series graphing calculators)
- OS/2 environments:
- Presentation Manager (for OS/2 1.1 and greater and eComStation)
- Workplace Shell (for OS/2 2.0 and greater and eComStation)
- ^ British Computer Society: The BCS glossary of ICT and computing terms, Pearson Education, 2005, ISBN 0131479571, 9780131479579, page 135
- ^ http://v6shell.org/history/
- ^ http://www.multicians.org/unix.html
- ^ http://www.multicians.org/shell.html
- ^ Console
- ^ PyCmd
- ^ developer.mozilla.org/en/Setting_up_extension_development_environment
- Batch file
- Comparison of computer shells
- DOS Shell
- Internet Explorer shell
- Shell account
- Shell builtin
- Shell script
- Unix shell
- Command shells
- Desktop environments
- Operating system technology
- Bourne shell (sh)
Wikimedia Foundation. 2010.