shell

n. [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 incantations 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.
