B.1 Implementation Differences From The SVR4.2 Shell
Since Bash is a completely new implementation, it does not suffer from
many of the limitations of the SVR4.2 shell. For instance:
Bash does not fork a subshell when redirecting into or out of
a shell control structure such as an
Bash does not allow unbalanced quotes. The SVR4.2 shell will silently
insert a needed closing quote at
EOF under certain circumstances.
This can be the cause of some hard-to-find errors.
The SVR4.2 shell uses a baroque memory management scheme based on
SIGSEGV. If the shell is started from a process with
SIGSEGV blocked (e.g., by using the
system() C library
function call), it misbehaves badly.
In a questionable attempt at security, the SVR4.2 shell,
when invoked without the `-p' option, will alter its real
and effective UID and GID if they are less than some
magic threshold value, commonly 100.
This can lead to unexpected results.
The SVR4.2 shell does not allow users to trap
The SVR4.2 shell does not allow the
PS2 variables to be unset.
The SVR4.2 shell treats `^' as the undocumented equivalent of
Bash allows multiple option arguments when it is invoked (
the SVR4.2 shell allows only one option argument (
fact, some versions of the shell dump core if the second argument begins
with a `-'.
The SVR4.2 shell exits a script if any builtin fails; Bash exits
a script only if one of the POSIX 1003.2 special builtins fails, and
only for certain failures, as enumerated in the POSIX 1003.2 standard.
The SVR4.2 shell behaves differently when invoked as
(it turns on job control).
This document was generated
on May 3, 2002