| [ << ] | [ < ] | [ 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
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 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.
