Info Node: (bash.info)What is a shell?

CFHT HOME bash.info: What is a shell?


up: Introduction prev: What is Bash? Back to Software Index

1.2 What is a shell?
====================

At its base, a shell is simply a macro processor that executes commands.
The term macro processor means functionality where text and symbols are
expanded to create larger expressions.

   A Unix shell is both a command interpreter and a programming
language.  As a command interpreter, the shell provides the user
interface to the rich set of GNU utilities.  The programming language
features allow these utilitites to be combined.  Files containing
commands can be created, and become commands themselves.  These new
commands have the same status as system commands in directories such as
'/bin', allowing users or groups to establish custom environments to
automate their common tasks.

   Shells may be used interactively or non-interactively.  In
interactive mode, they accept input typed from the keyboard.  When
executing non-interactively, shells execute commands read from a file.

   A shell allows execution of GNU commands, both synchronously and
asynchronously.  The shell waits for synchronous commands to complete
before accepting more input; asynchronous commands continue to execute
in parallel with the shell while it reads and executes additional
commands.  The "redirection" constructs permit fine-grained control of
the input and output of those commands.  Moreover, the shell allows
control over the contents of commands' environments.

   Shells also provide a small set of built-in commands ("builtins")
implementing functionality impossible or inconvenient to obtain via
separate utilities.  For example, 'cd', 'break', 'continue', and 'exec')
cannot be implemented outside of the shell because they directly
manipulate the shell itself.  The 'history', 'getopts', 'kill', or 'pwd'
builtins, among others, could be implemented in separate utilities, but
they are more convenient to use as builtin commands.  All of the shell
builtins are described in subsequent sections.

   While executing commands is essential, most of the power (and
complexity) of shells is due to their embedded programming languages.
Like any high-level language, the shell provides variables, flow control
constructs, quoting, and functions.

   Shells offer features geared specifically for interactive use rather
than to augment the programming language.  These interactive features
include job control, command line editing, command history and aliases.
Each of these features is described in this manual.


automatically generated by info2www version 1.2