sh behavior (see section 6.11
Bash POSIX Mode).
bind builtin.
complete and compgen, to manipulate it.
history and fc builtins to manipulate
it.
csh-like history expansion
(see section 9.3
History Expansion).
$'...' quoting syntax, which
expands ANSI-C
backslash-escaped characters in the text between the single quotes,
is supported (see section 3.1.2.4
ANSI-C Quoting).
$"..." quoting
syntax to do
locale-specific translation of the characters between the double
quotes. The `-D', `--dump-strings', and `--dump-po-strings'
invocation options list the translatable strings found in a script
(see section 3.1.2.5
Locale-Specific Translation).
! keyword to negate the return
value of
a pipeline (see section 3.2.2
Pipelines).
Very useful when an if statement needs to act only if a
test fails.
time reserved word and command timing
(see section 3.2.2
Pipelines).
The display of the timing statistics may be controlled with the
TIMEFORMAT variable.
for (( expr1 ; expr2
; expr3 ))
arithmetic for command, similar to the C language (see section 3.2.4
Looping Constructs).
select compound command, which
allows the
generation of simple menus (see section 3.2.5
Conditional Constructs).
[[ compound command, which makes
conditional
testing part of the shell grammar (see section 3.2.5
Conditional Constructs).
alias and unalias
builtins (see section 6.6
Aliases).
(( compound
command
(see section 3.2.5
Conditional Constructs),
and arithmetic expansion (see section 6.5
Shell Arithmetic).
export
command.
${#xx}, which returns the length of ${xx},
is supported (see section 3.5.3
Shell Parameter Expansion).
${var:offset[:length]},
which expands to the substring of var's value of length
length, beginning at offset, is present
(see section 3.5.3
Shell Parameter Expansion).
${var/[/]pattern[/replacement]},
which matches pattern and replaces it with replacement
in
the value of var, is available (see section 3.5.3
Shell Parameter Expansion).
${!prefix}* expansion,
which expands to
the names of all shell variables whose names begin with prefix,
is available (see section 3.5.3
Shell Parameter Expansion).
${!word}
(see section 3.5.3
Shell Parameter Expansion).
$9
using
${num}.
$() form of command substitution
is implemented (see section 3.5.4
Command Substitution),
and preferred to the Bourne shell's " (which
is also implemented for backwards compatibility).
UID, EUID, and GROUPS),
the current host
(HOSTTYPE, OSTYPE, MACHTYPE,
and HOSTNAME),
and the instance of Bash that is running (BASH,
BASH_VERSION, and BASH_VERSINFO). See
section 5.2 Bash
Variables,
for details.
IFS variable is used to split only the results
of expansion,
not all words (see section 3.5.7
Word Splitting).
This closes a longstanding shell security hole.
extglob
shell option is enabled (see section 3.5.8.1
Pattern Matching).
sh does not separate the two name spaces.
local builtin, and thus useful recursive functions may
be written
(see section 4.2 Bash
Builtin Commands).
sh, all variable assignments preceding commands are
global unless the command is executed from the
file system.
noclobber option is available to avoid
overwriting existing
files with output redirection (see section 4.3 The
Set Builtin).
The `>|' redirection operator may be used to override noclobber.
cd and pwd builtins (see
section 4.1
Bourne Shell Builtins)
each take `-L' and `-P' options to switch
between logical and
physical modes.
builtin and command builtins (see
section 4.2 Bash
Builtin Commands).
command builtin allows selective disabling of
functions
when command lookup is performed (see section 4.2 Bash
Builtin Commands).
enable
builtin (see section 4.2 Bash
Builtin Commands).
exec builtin takes additional options that
allow users
to control the contents of the environment passed to the executed
command, and what the zeroth argument to the command is to be
(see section 4.1
Bourne Shell Builtins).
export -f (see section 3.3
Shell Functions).
export, readonly, and declare
builtins can
take a `-f' option to act on shell functions, a `-p'
option to
display variables with various attributes set in a format that can be
used as shell input, a `-n' option to remove various
variable
attributes, and `name=value' arguments to set variable
attributes
and values simultaneously.
hash builtin allows a name to be
associated with
an arbitrary filename, even when that filename cannot be found by
searching the $PATH, using `hash -p'
(see section 4.1
Bourne Shell Builtins).
help builtin for quick reference to
shell
facilities (see section 4.2 Bash
Builtin Commands).
printf builtin is available to display
formatted output
(see section 4.2 Bash
Builtin Commands).
read builtin (see section 4.2 Bash
Builtin Commands)
will read a line ending in `\' with
the `-r' option, and will use the REPLY
variable as a
default if no non-option arguments are supplied.
The Bash read builtin
also accepts a prompt string with the `-p' option and
will use
Readline to obtain the line when given the `-e' option.
The read builtin also has additional options to control
input:
the `-s' option will turn off echoing of input characters
as
they are read, the `-t' option will allow read
to time out
if input does not arrive within a specified number of seconds, the
`-n' option will allow reading only a specified number
of
characters rather than a full line, and the `-d' option
will read
until a particular character rather than newline.
return builtin may be used to abort execution
of scripts
executed with the . or source builtins
(see section 4.1
Bourne Shell Builtins).
shopt builtin, for finer control
of shell
optional capabilities (see section 4.2 Bash
Builtin Commands), and allows these options
to be set and unset at shell invocation (see section 6.1
Invoking Bash).
set
builtin (see section 4.3 The
Set Builtin).
test builtin (see section 4.1
Bourne Shell Builtins)
is slightly different, as it implements the POSIX algorithm,
which specifies the behavior based on the number of arguments.
trap builtin (see section 4.1
Bourne Shell Builtins) allows a
DEBUG pseudo-signal specification, similar to EXIT.
Commands specified with a DEBUG trap are executed after
every
simple command.
The DEBUG trap is not inherited by shell functions.
The trap builtin (see section 4.1
Bourne Shell Builtins) allows an
ERR pseudo-signal specification, similar to EXIT
and DEBUG.
Commands specified with an ERR trap are executed after a
simple
command fails, with a few exceptions.
The ERR trap is not inherited by shell functions.
type builtin is more extensive and gives
more information
about the names it finds (see section 4.2 Bash
Builtin Commands).
umask builtin permits a `-p'
option to cause
the output to be displayed in the form of a umask command
that may be reused as input (see section 4.1
Bourne Shell Builtins).
csh-like directory stack, and
provides the
pushd, popd, and dirs
builtins to manipulate it
(see section 6.8 The
Directory Stack).
Bash also makes the directory stack visible as the value of the
DIRSTACK shell variable.
disown builtin can remove a job from the
internal shell
job table (see section 7.2 Job
Control Builtins) or suppress the sending
of SIGHUP to a job when the shell exits as the result of
a
SIGHUP.
mldmode and priv) not present in Bash.
stop or newgrp
builtins.
SHACCT variable or perform
shell accounting.
sh uses a TIMEOUT variable
like Bash uses
TMOUT.
More features unique to Bash may be found in 6. Bash Features.
©Copyright 1997, 1998 Free Software Foundation,
Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA
Verbatim copying and distribution of this entire article is permitted
in any medium, provided this notice is preserved.