( What is a shell?

Info Catalog ( What is Bash? ( Introduction
 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 utilities 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.
Info Catalog ( What is Bash? ( Introduction
automatically generated byinfo2html