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 iforwhilestatement.
 
- 
Bash does not allow unbalanced quotes. The SVR4.2 shell will silently
insert a needed closing quote at EOFunder 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
trapping SIGSEGV. If the shell is started from a process withSIGSEGVblocked (e.g., by using thesystem()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 SIGSEGV,SIGALRM, orSIGCHLD.
 
- 
The SVR4.2 shell does not allow the IFS,MAILCHECK,PATH,PS1, orPS2variables to be unset.
 
- 
The SVR4.2 shell treats `^' as the undocumented equivalent of
`|'.
 
- 
Bash allows multiple option arguments when it is invoked (-x -v);
the SVR4.2 shell allows only one option argument (-xv). In
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 jsh(it turns on job control).
 
This document was generated
on 
May 3, 2002
using 
texi2html