[orig. {Multics} techspeak, widely propagated via Unix]
1. [techspeak] The command interpreter used to pass commands to an
operating system; so called because it is the part of the operating
system that interfaces with the outside world.
2. More generally, any interface program that mediates access to a
special resource or {server} for convenience, efficiency, or security
reasons; for this meaning, the usage is usually a shell around
whatever. This sort of program is also called a wrapper.
3. A skeleton program, created by hand or by another program (like,
say, a parser generator), which provides the necessary {incantation}s
to set up some task and the control flow to drive it (the term
{driver} is sometimes used synonymously). The user is meant to fill
in whatever code is needed to get real work done. This usage is
common in the AI and Microsoft Windows worlds, and confuses Unix
hackers.
Historical note: Apparently, the original Multics shell (sense 1) was
so called because it was a shell (sense 3); it ran user programs not
by starting up separate processes, but by dynamically linking the
programs into its own code, calling them as subroutines, and then
dynamically de-linking them on return. The VMS command interpreter
still does something very like this.
[glossary]
[Reference(s) to this entry by made by: {DDT}{exec}{iron box}{path}{plumbing}]