"Shell" is a set of functions that includes a text-based user interface.
It hides the function details and complexities of the inner core or Kernel of the Operating System (OS). The Kernel is comprised of the device drivers to access various types and brands of disk, printers, networks, and other hardware peripherals in the market. There are dozens of each kind and type of these peripherals out there. For each of these peripherals a unique device driver maybe needed for it to work. For example, the shell could read data from any disk, ide, sata, or scsi using a single function call. This is possible because the OS is layered. It's called Shell because it covers the Kernel of the OS. In many illustrations of the Unix OS,the OS is presented as a sphere, with three layers. The inner most layer is the Kernel, the next layer is the Shell which surrounds the Kernel, and the Applications which surround the Shell. This is to illustrate that Applications request services via the Shell. Of course one could write an Application to bypass the Shell but only a masochist or a fool would do that. There are always exceptions to this last statement, i.e., if an application requires better access efficiency or some cute features. Applications request OS services from the Kernel through the Shell. The OS returns the result to the Application via the Shell. One obvious reason why we love the shell is, so that we do not need to rewrite our Applications every time there is a new brand or type of device. Our OS developer or Device manufacturer writes the device driver and we simply add that to our Kernel. Installing is easier than developing. There are scores of peripherals manufactured every year and so imagine the amount of modifications that Application developers will have to do if OS was not designed with a Shell. KDE, GNOME, etc., are shells with Graphics User Interfaces. -- SLUG - Sydney Linux User's Group Mailing List - http://slug.org.au/ Subscription info and FAQs: http://slug.org.au/faq/mailinglists.html