Jump to content

Operating system shell: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
AnomieBOT (talk | contribs)
m Dating maintenance tags: {{Merge to}}
merge to parent article
Line 1: Line 1:
#REDIRECT [[shell (computing)]]
{{Merge to|Shell (computing)|discuss=Talk:Shell (computing)#Merger proposal|date=April 2014}}

[[Image:System 1 File Edit.png|thumb|234px<!-- it is 1:1 scale, please, do not change -->|Two [[menu (computing)|menus]] of Apple's [[Finder (software)|Finder]], dropping down from the menu bar (montaged)]]
[[Image:MIUI-Free-screenshot.jpg|thumb|240px|The [[MIUI]] environment for [[Android (operating system)|Android]] operating system]]

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'''".<ref name="AIX">{{cite web | url=http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.baseadmn%2Fdoc%2Fbaseadmndita%2Fshells.htm | title=Operating system shells | publisher=[[IBM]] Corp | work=AIX 6.1 Information Center | accessdate=September 16, 2012}}</ref> 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 (computing)|kernel]]).<ref name="Jargon File">{{cite web | url=http://www.retrologic.com/jargon/S/shell.html | title=Shell | work=The [[Jargon File]] | accessdate=September 16, 2012 | author=Raymond, Eric S. | authorlink=Eric S. Raymond}}</ref>

== Purpose ==
{{expand section|date=September 2012}}
The services that an operating system provides to its user(s) include, but are not limited to, the following:
* [[File manager|File management]]
* [[process (computing)|Process]] management&nbsp;– running and terminating [[application program|applications]]
* [[Batch processing]]
* [[Operating system monitoring]]
* Operating system [[software setup|setup]]

== Functioning ==
Most OS shells are not ''direct'' interfaces to kernel, even if communicate with user via [[peripheral device]]s attached to the computer directly. Shells are actually special [[application program|applications]] which use the kernel [[application programming interface|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.<ref name="AIX"/>

Since the OS shell is actually an application, it may easily be replaced with other similar program, for most OSes.

=== Remote shell ===<!-- there are internal links to here from other parts of the article -->
{{unreferenced section|date=September 2012}}
<br clear="right" style="line-height:0.0625;"/>
{| align=right style="margin-left:1em" cellpadding=8px
|- align=center style="font-size:large"
| colspan=5 bgcolor=#FFFF66 |[[Image:User.svg]]<br/>User
|- align=center
| colspan=5 |&nbsp;&nbsp;&nbsp;[[I/O]] '''↕''' devices
|- align=center
| colspan=5 bgcolor=#FF66FF |[[device driver|Kernel I/O functions]]
|- align=center
|&nbsp;||'''↕'''
| colspan=2 align=right |kernel API &nbsp; '''↕'''&nbsp;&nbsp;&nbsp;
| rowspan=4 bgcolor=#FF66FF |&nbsp;
|- align=center
| colspan=3 bgcolor=#66FFFF style="font-size:large" |[[Image:User-krusader.svg|50px]]<br/>Shell [[process (computing)|process]]
|
|- align=center
| rowspan=2 align=right |kernel&nbsp;
| rowspan=2 style="font-size:200%; line-height:0.875" |↑<br/>↓
| rowspan=2 align=left |&nbsp;API
| bgcolor=#66FFFF style="font-size:80%" |Subpro-<br/>cesses<br/>(possibly)
|- align=center
|'''↕'''
|- align=center
| colspan=5 bgcolor=#FF66FF style="font-size:large" |[[Image:Emblem-system.svg|96px]]<br/>The kernel
|-
| colspan=5 style="font-size:80%; width:18em" |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 desktop software|remote access]] to an operation system, which sometimes also referred to as [[remote administration]]. The classical approach of [[multi-user]] [[mainframe computer|mainframes]] is to provide text-based UI for each active user ''simultaneously'' by means of a [[text terminal]] connected to the mainframe via [[serial port|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 [[#Graphical (GUI) shells|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 [[computer security|security]] threats.

== Design ==
{{see also|User interface#User interfaces in computing{{!}}User interfaces in computing}}
Most operating system shells fall into one of two categories: command-line and graphical. Command line shells provide a [[command-line interface]]&nbsp;(CLI) to the operating system, while graphical shells provide a [[graphical user interface]]&nbsp;(GUI). Other possibilities, although not so common, include [[voice user interface|voice UI]] and various implementations of a [[text-based user interface]]&nbsp;(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{{fact|date=September 2012}}, 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 ==<!-- there are internal links to here from other parts of the article -->
{| align=right style="margin-left:1em" cellpadding=4px
| bgcolor=#000000 style="font-family:monospace; font-size:250%; color:#999999" |user@host:~$&nbsp;
|-
| style="font-size:small" |A [[Command-line interface #Command prompt|command prompt]] of the [[bash (Unix shell)|bash]] shell
|}
[[Image:DirectoryListing1.svg|thumb|right|400px|The [[Command Prompt]], a DOS-style user interface in Windows]]
{{expand section|date=September 2012}}
{{main|Command-line interface}}
{{see also|List of command-line interpreters #Operating systems}}
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]] [[interpreter (computing)|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|lc=yes}}, quite common, if not dominant; see [[text-based user interface]] for details. Also shells, especially text-based ones, are often used remotely, as explained [[#Remote shell|above]].

=== Graphical (GUI) shells ===<!-- there are internal links to here from other parts of the article -->
[[Image:Taskbar-SharpEnviro-v8.png|thumb|right|800px|The [[taskbar]] of [[SharpEnviro]], a shell replacement for Windows]]
{{expand section|date=September 2012}}
[[Image:Drag-and-drop-en.svg|thumb|320px|[[Drag-and-drop]]ping a file between [[Kdesktop]] and [[Konqueror]]. The [[KDE]] environment is popular on Unix-like systems]]
[[Image:X-Window-System.png|thumb|245px|This graphical interface from 1990s features a [[text-based user interface|TUI]] window for a [[man page]]. Another text window for [[#Command-line OS shells|a Unix shell]] is partially visible]]
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.<ref name="ComputerHope">{{cite web | url=http://www.computerhope.com/jargon/g/gui.htm | title=What is Graphical User Interface (GUI)? | publisher=[[Computerhope]] | work=Computer dictionary and glossary | date=2012-05-01 | accessdate=September 15, 2012}}</ref> {{As of|2012}}, it is common and perfectly normal that a [[desktop computer|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 shell|Windows Explorer]] as their GUI shell.<ref name="Windows Shell">{{cite web | url=http://msdn.microsoft.com/en-us/library/windows/desktop/bb773177%28v=vs.85%29.aspx | title=Windows Shell | publisher=[[MSDN]] | work=Windows Development Reference | accessdate=September 10, 2012}}</ref> Explorer provides the familiar [[desktop environment]], [[start menu]], and [[task bar]], as well as the [[file manager|file management functions]] of the operating system. Older versions also include [[Program Manager]] which was the shell for the [[Windows 3|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 [[Windows shell replacement|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.<ref name="StructBio">{{cite web | url=http://structbio.vanderbilt.edu/comp/unix/part03.php | title=Part 3: The GUI | publisher=[[Vanderbilt University]] Center for Structural Biology | work=Introduction to UNIX | date=2009-01-30 | accessdate=September 15, 2012}}</ref>

==== List of GUI shells ====
* [[Microsoft Windows]] environments:
** [[Windows shell]] (a.k.a. Explorer.exe)
** [[Litestep]]
** [[GeoShell]]
** [[BB4Win]]
** [[Emerge Desktop]]
** [[SharpEnviro]]
* Macintosh [[Finder (software)|Finder]]
* [[X Window System]]-based environments (primarily for [[Unix]]):
** [[Xfce]]
** [[LXDE]]
** [[MATE (desktop environment)|MATE]]
** [[KDE]]
** [[GNOME]]
** [[Blackbox]]
** [[Common Desktop Environment]]
* [[DOS Shell]]
* [[AmigaOS]] environments.
**[[Workbench]] (GUI-Shell capabilities added since AmigaOS 2.0)
**[[Ambient (desktop environment)|Ambient]] (for [[MorphOS]])
**[[Directory Opus]]
**[[ScalOS]]
**[[Wanderer (AROS)|Wanderer]] (for [[AROS]])

== Terminology ==
[[Eric S. Raymond]] acknowledges a considerable confusion about etymology and different [[shell (disambiguation)#Computing|modern usages of the word "shell"]].<ref name="Jargon File"/> Although it is usually associated with [[command-line interface|command lines]] in the [[information technology|IT]] world, its usage for graphical environments is not uncommon too, especially for OS platforms where GUI historically was a primary user interface.<ref name="Windows Shell"/><ref name="Landau">{{cite web | url=http://books.google.ru/books?id=Vf4U4UkDANsC&pg=PA923&lpg=PA923&dq=Mac+OS+graphical+shell&source=bl&ots=s6Hmfvcnp4&sig=NuxsmdkZNmJAN6rAca5UA659q6s | title=Mac OS X Help Line | publisher=[[Peachpit Press]] | date=2006 | accessdate=September 15, 2012 | author=Landau, Ted |authorlink=Ted Landau |coauthor=Frakes, Dan | page=923 | isbn=0321334299}}</ref><ref name="Pikimal">{{cite web | url=http://pikimal.com/text-editor/top/10/with-graphical-shell-integration/mac-os-x-2 | title=Top 10 Mac OS X Text Editors With Graphical Shell Integration | publisher=[[Pikimal]] | work=Explore Text Editors | accessdate=September 15, 2012}}</ref> These systems may refer to its CLI shell, if present, as to ''command''(''-line'')'' shell''.<ref name="cmd.mspx">{{cite web | url=http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cmd.mspx?mfr=true| title=Command shell overview | publisher=[[Microsoft]] Corp | work=Microsoft Windows XP | accessdate=September 15, 2012}}</ref> Some sources<ref name="ComputerHope"/> distinguish between "GUI operating systems" (those which support a GUI [[native (computing)|natively]]) and GUI ''interfaces'' for operating systems.

Denotation of the term "shell" is usually restricted to few programs, including the main shell process,<ref name="Windows Shell"/><ref name="cmd.mspx"/> 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 (computer)|control panel]].

== See also ==
* [[Human–computer interaction]]
* [[Window manager]]&nbsp;– provides a rudimentary process management interface

== References ==
{{reflist}}

== External links ==
* {{cite web | url=http://computer.howstuffworks.com/operating-system10.htm | title=User Interface | publisher=HowStuffWorks.com | work=How Operating Systems Work | date=2011 |author= Curt Franklin; Dave Coustan | accessdate=September 15, 2012}}

{{Operating System}}

[[Category:Operating system technology|Shell]]
[[Category:User interfaces]]

Revision as of 10:21, 21 April 2014

Redirect to: