Operating system shell
An operating system shell is a software component that presents a user interface to various operating system functions and services. Thus, it is nearly synonymous with "operating system user interface".[1] The shell is so called because it is an outer layer of interface between the user and the innards of the operating system (the kernel).[2]
Purpose
The services that an operating system provides to its user(s) include, but are not limited to, the following:
- primary purpose is to interpret commands.
- File management
- Process management – running and terminating applications
- Batch processing
- Operating system monitoring
- Operating system setup
Functioning
Most OS shells are not direct interfaces to the kernel, even if communicate with user via peripheral devices attached to the computer directly. Shells are actually special applications which use the kernel API in just the same way as it is used by other application programs. A shell manages the user–system interaction by prompting user(s) for input, interpreting their input, and then handling an output from the operating system.[1]
Since the OS shell is actually an application, it may easily be replaced with other similar program, for most OSes.
Remote shell
User | ||||
I/O ↕ devices | ||||
Kernel I/O functions | ||||
↕ | kernel API ↕ | |||
Shell process |
||||
kernel | ↑ ↓ |
API | Subpro- cesses (possibly) | |
↕ | ||||
The kernel | ||||
An OS shell, as it usually functions. A direct user–kernel dialogue is very uncommon, and only on most primitive devices is a shell program able to communicate with the user without the kernel API |
There are different approaches to remote access to an operation system, which sometimes also referred to as remote administration. The classical approach of multi-user mainframes is to provide text-based UI for each active user simultaneously by means of a text terminal connected to the mainframe via serial line or modem. This approach is now associated with Unix-like systems. Now, the Secure Shell protocol is used for a text-based UI, and for also GUI, if required, through SSH tunelling and X Window System networking capabilities.
Likewise, a remote GUI is possible for Microsoft Windows with Remote Desktop Protocol.
Alternative approach, for GUI shells, is a desktop environment controlled both locally and remotely, such as Radmin and Windows Desktop Sharing.
In any case, a shell-level remote access provides much more essential access to the computer than client–server protocols usually do. This implies additional security threats.
Design
Most operating system shells 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). Other possibilities, although not so common, include voice UI and various implementations of a text-based user interface (TUI) which are not CLI.
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[citation needed], 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. On the other hand, a GUI would probably be more appropriate for a computer to be used for secretarial work.
Command-line OS shells
user@host:~$ |
A command prompt of the bash shell |
Command-line OS interfaces were dominant when resources, such as primary memory and CPU performance, were scarce. In such systems as Unix and DOS command shells were centered on file system operations, although the classical Unix shell had also considerable process management capabilities. Many OS command-line shells actually became command language interpreters. This is the case, most notably, of numerous Unix shell variants.
As for other command-line interpreters, the use of an OS CLI does not imply actual text mode display. The use of command-line within a text window controlled by a GUI window manager is, as of 2012, quite common, if not dominant; see text-based user interface for details. Also shells, especially text-based ones, are often used remotely, as explained above.
Graphical (GUI) shells
A graphical user interface is possible as an extension of an operating system which traditionally uses CLI. In this case the GUI is referred to as a graphical interface or "desktop environment". But certain OSes use a GUI shell as a primary user interface.[3] As of 2012, it is common and perfectly normal that a desktop OS has both command-line and GUI shells (GUI environment). Also, GUI shells usually incorporate some features of the command-line interpreter, especially its command language.
Modern versions of Microsoft's Windows operating system utilize and only officially support Windows Explorer as their GUI shell.[4] 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 which was the shell for the 3.x series of Microsoft Windows.
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, GeoShell and FlyakiteOSX are good examples of the latter. This does not affect GUI applications (except for some possible changes in window manager behaviour), but provides a redesign of the interface to OS.
Proponents of Unix-like systems often argue that the GUI under UNIX is separate from the OS itself, unlike Microsoft Windows or MacOS.[5]
List of GUI shells
- Microsoft Windows environments:
- Windows shell (a.k.a. Explorer.exe)
- Litestep
- GeoShell
- BB4Win
- Emerge Desktop
- SharpEnviro
- Macintosh Finder
- X Window System-based environments (primarily for Unix):
- DOS Shell
- AmigaOS environments.
- Workbench (GUI-Shell capabilities added since AmigaOS 2.0)
- Ambient (for MorphOS)
- Directory Opus
- ScalOS
- Wanderer (for AROS)
Terminology
Eric S. Raymond acknowledges a considerable confusion about etymology and different modern usages of the word "shell".[2] Although it is usually associated with command lines in the IT world, its usage for graphical environments is not uncommon too, especially for OS platforms where GUI historically was a primary user interface.[4][6][7] These systems may refer to its CLI shell, if present, as to command(-line) shell.[8] Some sources[3] distinguish between "GUI operating systems" (those which support a GUI natively) and GUI interfaces for operating systems.
Denotation of the term "shell" is usually restricted to few programs, including the main shell process,[4][8] which forms the core of the operating system's UI. The term "operating system user interface" may have a broader meaning, including some specialized components such as control panel.
See also
- Human–computer interaction
- Window manager – provides a rudimentary process management interface
References
- ↑ 1.0 1.1 "Operating system shells". AIX 6.1 Information Center. IBM Corp. Retrieved September 16, 2012.
- ↑ 2.0 2.1 Raymond, Eric S.. "Shell". The Jargon File. Retrieved September 16, 2012.
- ↑ 3.0 3.1 "What is Graphical User Interface (GUI)?". Computer dictionary and glossary. Computerhope. 2012-05-01. Retrieved September 15, 2012.
- ↑ 4.0 4.1 4.2 "Windows Shell". Windows Development Reference. MSDN. Retrieved September 10, 2012.
- ↑ "Part 3: The GUI". Introduction to UNIX. Vanderbilt University Center for Structural Biology. 2009-01-30. Retrieved September 15, 2012.
- ↑ Landau, Ted; Frakes, Dan (2006). "Mac OS X Help Line". Peachpit Press. p. 923. ISBN 0321334299. Retrieved September 15, 2012.
- ↑ "Top 10 Mac OS X Text Editors With Graphical Shell Integration". Explore Text Editors. Pikimal. Retrieved September 15, 2012.
- ↑ 8.0 8.1 "Command shell overview". Microsoft Windows XP. Microsoft Corp. Retrieved September 15, 2012.
External links
- Curt Franklin; Dave Coustan (2011). "User Interface". How Operating Systems Work. HowStuffWorks.com. Retrieved September 15, 2012.
|