[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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
if
orwhile
statement. -
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
trapping
SIGSEGV
. If the shell is started from a process withSIGSEGV
blocked (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
, orPS2
variables 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 special builtins fails, and only for certain failures, as enumerated in the POSIX standard.
-
The SVR4.2 shell behaves differently when invoked as
jsh
(it turns on job control).
[ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on February 28, 2014 using texi2html 5.0.