LSB Standard Shell Proposal
There are many shells available for GNU/Linux; however, the two major
shells being considered are Bash and Pdksh. As the GNU/Linux standard shell,
a shell needs to comply with the POSIX-1003.2 standard and, at the same time,
has other favorable attributes such as widespread usage and availability.
After careful research and testing, Bash shell shall be the standard shell for
GNU/Linux for the following reasons. Bash shell was found to be mostly POSIX compliant;
moreover, Bash maintainer does intend and is willing to work towards full compliance.
Equally important is that Bash shell is widely used among shell users, and is included
in many distributions as the default shell. In addition Bash shell is easy to use
with huge amount of documentation available both on the Internet and commercially in
bookstores.
Bash shell offers many other features that are not specified in the POSIX-1003.2
standard, conforming application shall not reply on these features, if the application
is to be portable. All of the features defined in the POSIX-1003.2 standard, section 3:
Shell Command Language, are applicable except the followings.
- POSIX Section: 3.9.1.1 line: 779-784: When the search for
command name using the PATH environment variable succeeds, then the command
is executed with actions equivalent to calling 'execve()' with the path argument
set to the pathname resulting from the search, 'argv[0]' set to the command name
and the remaining arguments set to the operands.
EXCEPTION (GNU way):When the search for
command name using the PATH environment variable succeeds, then the command
is executed with actions equivalent to calling 'execve()' with the path argument
set to the pathname resulting from the search,'argv[0]' set to the full-path command
name (e.g., $0= /d1/d2/command-name instead of just $0= command-name) and the remaining
arguments set to the operands.
- POSIX Section: 3.14.4 line: 1493-1498: When PATH is used to locate a file for
the dot utility, then the file's readable bit has to be set, executable bit is not important.
EXCEPTION (GNU way): When PATH is used to locate a file for the dot utility, then the
first file with matched name in the path is looked at. If both the readable bit and the
executable bit are set, then the shell shall execute all the commands found in the file. Otherwise
an interactive shell shall display diagnostic message to standard error, and a non-interactive
shell shall abort.
VSC5.1.1L is the testsuite used to test for POSIX conformity of Bash and Pdksh.
This testsuite was developed by The Open Group based on the POSIX.2-1992 standard. Only the
testsets that tested for shell conformance were used. Extensions or supplement features that
are not specified in the POSIX-1003.2 standard are not tested by this testsuite. A journal
file and a detailed report generated by the testsuite for Bash shell can be found at
www.linuxbase.org
/tests/results/Detailed_Bash_2.04.html. Also included below is an analysis of all the
failed testcases as well as the current maintainer of Bash Mr. Chet Ramey's resolutions to
them in Bash-2.05.
Summary of Test Results
Tested Shell: bash-v2.04 v2.2 edition manual
TOTAL TESTS = 492
PASS = 437
FAIL = 55
Pass Breakdown:
Number of successes: 333 Number of warnings: 0
Number unsupported: 40 Number not implemented: 31
Number of untested: 33
Failure Breakdown:
Number of failures: 55 Number unresolved: 0
Number uninitiated: 0 Number unreported: 0
A Closer Look at the Failed Tests
Further Breakdown of Failures:
Number of failures in test suite: 11
Number of failures in bash: 23
Number of failures due to one bash non-conformant feature: 21
Total Number of failures 55
Of the 492 tests implemented in VSC5.1.1L; 55 testcases failed due to
various reasons. Eleven failed because of probable bugs in the test
suite. Twenty one tests failed due to one non-complying feature of bash.
And the rest (23 tests) failed because of different non-complying features of bash.
POSIX: IEEE Std 1003.2-1992 Standard
section: section in the standard
sh_## ###: the exact test number in the test suite
Test: comment for the particular test.
Bash: comment on how bash behaves.
Type:
1: bug in testsuite
2: bug in bash
3: same bug in bash
- POSIX: section 3.3 Token Recognition: sh_04 277:
When a shell is reading input from a file and the current character is an
unquoted <newline>, '\n', the current token shall be delimited.
Bash: Does not recognize <newline> as the token delimiter when inputs
from a file. Exit status 127 was received.
Type: 2
- POSIX: section 3.5 Parameters and Variables: sh_05 293:
When a variable has been assigned a value (including the null value),
then the variable is set and can only be unset by use of the unset
special built-in.
Test: BUG: Expecting ' set | grep "an_unset_var" ' to return 1 as exit status
indicating an_unset_var is in fact unset. However, grep will catch lots of false
positives this way. The correct way is to grep for '^an_unset_var='.
Bash:
Type: 1
- POSIX: section 3.5.2 Special Parameters: sh_05 303:
The special parameter - expand to the current set of option flags set for the
shell. The flags can be specified on invocation, by the set command or
implicitly by the shell.
Bash: looses some of the set option flags when echo $- back.
Type: 2
- POSIX: section 3.6.2 Parameter Expansion: sh_05 334:
When the value of the variable parameter is unset or null and the _expression_
${parameter:?word} is encountered, then the value of word after being
subjected to tilde expansion, parameter expansion, command substitution
and arithmetic expansion is written to the standard error and a non-
interactive shell exits with a non-zero exit status.
Test: Parameter expansion form for indicate error using : ? with an unset and
null variable.
Bash: exits the non-interactive with a zero exit status instead of with
a non-zero exit status.
Type: 2
- POSIX: section 3.6.2 Parameter Expansion: sh_05 335:
When the value of parameter is unset or null and the _expression_
${parameter:?} is encountered, then a message indicating that
parameter is unset is written to the standard error and a
non-interactive shell exits with a non-zero exit status.
Test: Parameter expansion form to indicate error using :? with no word
present with an unset or null variable.
Bash: Non-interactive shell exits with a zero exit status instead of with
a non-zero exit status.
Type: 3
- POSIX: section 3.6.2 Parameter Expansion: sh_05 343:
When the value of parameter is unset and the _expression_
${parameter?word} is encountered, then the value of word after being
subjected to tilde expansion, parameter expansion, command substitution
and arithmetic expansion shall be written to the standard error and a
non-interactive shell exits with a non-zero exit status.
Test: Parameter expansion form for indicate error using ? without a colon
with an unset variable.
Bash: Non-interactive shell exits with a zero exit status instead of with
a non-zero exit status.
Type: 3
- POSIX: section 3.6.2 Parameter Expansion: sh_05 344:
When the value of the variable parameter is unset and the _expression_
${parameter?word} is encountered, then a message indication that
parameter is unset is written to standard error and a non-interactive
shell exits.
Test: Parameter expansion form to indicate error using ? with a colon with no
word present with an unset variable
Bash: Non-interactive shell exits with a zero exit status instead of with
a non-zero exit status.
Type: 3
- POSIX: section 3.6.4 Arithmetic Expansion: sh_05 357:
The resulting _expression_ derived from $((_expression_)) is evaluated
according to the rules for Arithmetic Precision and Operations, subject
to the exceptions given in POSIX.2 {9}, and substitutes the resulting
value for the _expression_.
Test: BUG: accessing value of a variable without using $ in front of a variable
(e.g., [ x -eq 2 ] instead of [$x -eq 2]).
Bash:
Type: 1
- POSIX: section 3.6.4 Arithmetic Expansion: sh_05 358:
When the arithmetic _expression_ obtained from expanding $((_expression_)) is invalid,
then the shell prints a message to standard error indicating the failure.
Test: Expects the above and non-interactive shell to exit with a non-zero exit
status.
Bash: writes error message but does not exit non-interactive shell.
Type: 2
- POSIX: section 3.6.5 Field Splitting: sh_05 364:
When the value of IFS consists of a combination of white space characters and
other characters, then any sequence of zero or more of the IFS white space
characters with a single occurrence of one of the other IFS characters shall serve
as a single delimiter to delimit a field.
Bash: using a non-white-space IFS character adjacent to any sequence of
IFS white space as two delimiters instead of one.
Type: 2
- POSIX: GA10 sh_05 378:
GA10 - When a file is newly created by the $CATCREATEOUT utility, then
the file attributes are set as follows:
(1) The file's user ID is set to the effective user ID of the creating
process.
(2) The file's group ID is set to either the effective group ID of the
creating process or to the group ID of the directory in which the file
is created.
(3) The file's permission bits are set to
S_IROTH|S_IWOTH|S_IRGRP|S_IWGRP|S_IRUSR|S_IWUSR
except that the bits set in the creating processes file mode creation
mask are cleared.
(4) The st_atime, st_ctime and st_mtime fields of the file are updated
(5) When the file is a directory, then the directory is created empty.
(6) When the file is not a directory, then it has zero length.
(7) When the file type is not specified, then a regular file is
created.
Test: BUG: unable to locate GetFileData which is supposed to come with
the test suite.
Bash:
Type: 1
- POSIX: GA11 sh_06 379:
When a file that exists is re-created by a POSIX.2 application, then the
file attributes are set as follows:
(1) When the file type is a directory or FIFO special file, then the attempt
fails and the file attributes are not changed.
(2) When the file type is a regular file, then the file is truncated to zero
length and the st_ctime and st_mtime fields are updated. The user-ID,
group-ID and permission bits associated with the file are unchanged.
Test: BUG: unable to locate GetFileData which is supposed to come with
the test suite.
Bash:
Type: 1
- POSIX: section 3.7.7 Open File Descriptors for Reading and Writing: sh_06 413:
The redirection operator [n]<>word shall cause the file whose name is
the expansion of word to be opened for both reading and writing on
the file descriptor denoted by n, or standard input if n is not
specified. If the file does not exist, it shall be created.
Bash: { echo hello <> xxx 1>&0 } generates empty xxx file instead a xxx file
with hello in it as the test suite expects.
Type: 2
- POSIX: section 3.8.1 Consequences of Shell Errors: sh_06 425:
When a 'dot' script is not found by the shell, then the shell
writes a diagnostic message to standard error and exits with a
non-zero status.
Bash: writes diagnostic error message but does not exit subshell with
non-zero status.
Type: 2
- POSIX: section 3.9.1 Simple Commands: sh_07 433:
When a simple command is required to be executed, then the words
that are not variable assignments or redirections are expanded.
The first remaining field, if any, is considered the command name
and the remaining fields are operands for the command.
Bash: Unable to define and use an alias in a non-interactive shell;
therefore, bash produces erroneous results.
Type: 2
- POSIX: section 3.9.1 Simple Commands: sh_07 435:
When a search for a command in PATH results in no matching command name, then
the variable assignments affect the current execution environment.
Bash: Unable to define and use an alias in subshell; therefore, bash
produces erroneous results.
Type: 3
- POSIX: section 3.9.1 Simple Commands : sh_07 436:
When a command name results, then the variable assignments are
exported for the execution environment of the command and do not
affect the current execution environment.
Bash: Unable to define and use an alias in subshell; therefore, bash
produces erroneous results.
Type: 3
- POSIX: section 3.9.1 Simple Commands: sh_07 437:
When a variable assignment attempts to assign a value to a readonly
variable, then the command immediately fails with an exit status
greater than zero. The shell prints an error message to standard
error indicating the failure.
Bash: does not exit subshell nor returns a non-zero exit status.
Type: 2
- POSIX: section 3.9.1 Simple Commands: sh_07 441:
When no command name is generated and no command substitution
occurred, then the exit status is zero.
Bash: exit status 127: unable to define/use an alias in a subshell.
Type: 2
- POSIX: section 3.9.1.1 Command Search and Execution: sh_07 444:
When the command name does not contain any slashes and the command
name does not match any special built-in or any function but does
match a regular built-in utility specified in POSIX.2 {9} 2.3,
then the built-in utility is invoked.
Bash: error: command not found: unable to define and use an alias
in a subshell.
Type: 3
- POSIX: section 3.9.1.1 Command Search and Execution: sh_07 448:
When the search for command name using the PATH environment variable
succeeds, then the command is executed with actions equivalent to
calling 'execve()' with the path argument set to the pathname resulting
from the search, 'argv[0]' set to the command name and the remaining
arguments set to the operands.
Bash: gives full path to command name(/xx/yy/script) for $0 in subshell
instead of just command name(script).
Type: 2
- POSIX: section 3.9.1.1 Command Search and Execution: sh_07 449:
When the search for command name using the PATH environment variable
succeeds and the 'execve()' function fails with an ENOEXEC error
condition, then the shell executes a command equivalent to invoking
the shell with the name of the command as its first operand followed
by any shall remaining operands.
Bash: gives full path to command name(/xx/yy/script) for $0 in subshell
instead of just command name(script).
Type: 3
- POSIX: section 3.9.3.1 Asynchronous Lists: sh_08 461:
The special parameter $! expands to the process ID of the last command
in an asynchronous list.
Test: BUG: 1) use print command in a script.
2) invoke a shell script directly without putting the dot/sh
command in front (e.g., sh8_461_2sh& instead of sh sh8_461_2sh& ).
Bash:
Type: 1
- POSIX: section 3.9.3.1 Asynchronous Lists: sh_08 462:
The process ID of the last command in an asynchronous list shall remains
available to the shell (via the special parameter $!) until the shell
executes a wait command, or another asynchronous list is invoked
before $! is expanded in the current execution environment.
Test: BUG: 1) use print command in a script.
2) invoke a shell script directly without putting the dot/sh
command in front (e.g., sh8_461_2sh& instead of sh sh8_461_2sh& ).
Bash:
Type: 1
- POSIX: section 3.9.4.1 Grouping Commands: sh_08 474:
Variable assignments and built-in commands that affect the environment
do not shall remain in effect after the (list) finishes.
Test: BUG: Using 'set | grep "an_unset_var" to make sure an unset variable
does not exist; however, this will catch lots of false positive.
Bash: works.
Type: 1
- POSIX: section 3.9.4.2 for Loop: sh_08 478:
The commands executed in the for loop are delimited by the words do
and done.
Test: BUG: 1) use print command in a script.
2) invoke a shell script directly without putting the dot/sh
command in front (e.g., sh8_461_2sh& instead of sh sh8_461_2sh& ).
Bash: works.
Type: 1
- POSIX: section 3.9.4.2 for Loop: sh_08 479:
The list of words following 'in' in the for loop shall expand to generate a list
of words
Test: BUG: 1) use print command in a script.
2) invoke a shell script directly without putting the dot/sh
command in front (e.g., sh8_461_2sh& instead of sh sh8_461_2sh& ).
Bash: works.
Type: 1
- POSIX: section 3.9.5 Function Definition Command: sh_09 517:
When a word expansion error occurs during a call to a
function, then a non-interactive shell aborts. Redirection error shall
not cause non-interactive shell to abort.
Test: BUG: expects non-interactive shell to abort when redirection error is
encountered.
Bash: works.
Type: 1
- POSIX: section 3.12 Shell Execution Environment: sh_09 529:
Each command in a multi-command pipeline is executed in a
subshell environment.
Bash: does execute each command in a subshell
Type: 2
- POSIX: section 3.12 Shell Execution Environment: sh_09 530:
All other commands, ( other than command substitution, grouped commands in parentheses, and
asynchronous lists) including the shell built-ins, are executed in the current shell
environment.
Bash: executes other built-in commands in subshells.
Type: 2
- POSIX: section 3.13.1 Patterns Matching a Single Character: sh_09 532:
When used outside a bracket _expression_ and immediately preceded by
a backslash each of the characters '|', '&', ';', '<', '>',
'(', ')', '$', '`', '\', '"', "'", '', '', '',
'?', '*', or '[' matches itself. [Derived from GA108.]
Test: BUG: syntax error when trying to create a shell script(e.g., using \\& instead
of \&).
Bash: works.
Type: 1
- POSIX: section 3.13.1 Patterns Matching a Single Character: sh_09 538:
A right bracket represents itself in a bracket _expression_ when one
of the following is true:
(1) it occurs first in the list
(2) it occurs first in the list after an initial
exclamation mark ('!')
(3) it appears in a collating symbol
(4) it is the ending right bracket of a collating symbol,
equivalence class, or character class.
Bash: does not recognize collating symbol [[.].]] nor character class
_expression_ [[:alpha:]]
Type: 2
- POSIX: section 3.13.1 Patterns Matching a Single Character: sh_09 539:
Within a bracket _expression_, an _expression_ within '[. .]' is treated
as a collating symbol when it is in the current collating sequence
and has characters associated with it.
Bash: does not recognize collating symbol [[.x.]-z]
Type: 3
- POSIX: section 3.13.1 Patterns Matching a Single Character: sh_09 543:
Within a bracket _expression_, when a collating element is not a member
of a primary equivalent class and enclosed by '[= =]', then the
_expression_ matches the collating symbol.
Bash: does not recognize equivalence class _expression_ [[=x=]].
Type: 2
- POSIX: section 3.13.1: sh_09 544:
Within a bracket _expression_, one of the following character class
names within '[: :]' matches any collating element within the
character class: alnum, cntrl, lower, space, alpha, digit, print,
upper, blank, graph, punct, xdigit.
Bash: does not recognize character class _expression_ [[:xxx:]].
Type: 2
- POSIX: section 3.13.1 Patterns Matching a Single Character: sh_09 548:
Within a bracket _expression_, the hyphen character is treated as
itself when one of the following occurs:
(1) it is first in the list
(2) it is first in the list after an initial exclamation mark (!)
(3) it is last in the list
(4) it is used as the ending point of a range _expression_
(5) it is used as a collating symbol
Bash: fails because it does not recognize collating symbol [[.-.]]
Type: 3
- POSIX: section 3.14.1 break command: sh_10 597:
When a shell application is not executing a 'for', 'while' or 'until'
loop, then a call to 'break' has no effect. Execution continues with
the next command.
Bash: does not recognize 'break' outside of a 'for', 'while' , or
'until' loop.
Type: 2
- POSIX: section 3.14.1 break command: sh_10 600:
Exit status of the break command is 0 upon successful completion.
Bash: does not recognize 'break' outside of a 'for', 'while' , or
'until' loop.
Type: 3
- POSIX: section 3.14: sh_10 601:
A variable assignment specified with a special built-in command
shall remain in effect after the built-in completes.
Test: break command.
Bash: does not retain variable assignment specified with a special
built-in command.
Type: 2
- POSIX: section 3.14.2 colon: sh_10 603:
A variable assignment specified with a special built-in command
shall remain in effect after the built-in completes.
Test: Null utility (colon).
Bash: does not retain variable assignment specified with a special
built-in command.
Type: 3
- POSIX: section 3.14.3 continue: sh_10 607:
Exit status of the 'continue' is 0 upon successful completion.
Bash: does not recognize 'continue' outside of a 'for', 'while' , or
'until' loop.
Type: 2
- POSIX: section 3.14 Special Built-in Utility: sh_10 608:
A variable assignment specified with a special built-in command
shall remain in effect after the built-in completes.
Test: continue command.
Bash: does not retain variable assignment specified with a special
built-in command.
Type: 3
- POSIX: section 3.14.4 dot: sh_10 611:
When $PATH is used to locate a file for the dot utility, then the file's
readable bit has to be set, executable bit is not important.
Bash: once bash finds a file with matching name; it looks at this file even if
this file is a non-readable and writes error message without searching
further down the path to find a readable file.
Type: 2
- POSIX: section 3.14.4 Special Built-in Utility: sh_10 612:
When no readable filename that matches 'file' is found using the
search path specified by PATH, then a non-interactive shell aborts.
Bash: does not abort non-interactive shell when no readable filename that
matches a given 'file' is found.
Type: 2
- POSIX: section 3.14 Special Built-in Utility: sh_10 615:
A variable assignment specified with a special built-in command
shall remain in effect after the built-in completes.
Test: dot command.
Bash: does not retain variable assignment specified with a special
built-in command.
Type: 3
- POSIX: section 3.14 Special Built-in Utility: sh_10 620:
A variable assignment specified with a special built-in command
shall remain in effect after the built-in completes.
Test: eval command.
Bash: does not retain variable assignment specified with a special
built-in command.
Type: 3
- POSIX: section 3.14 Special Built-in Utility: sh_10 630:
A variable assignment specified with a special built-in command
shall remain in effect after the built-in completes.
Test: exec command.
Bash: does not retain variable assignment specified with a special
built-in command.
Type: 3
- POSIX: section 3.14 Special Built-in Utility: sh_10 642:
A variable assignment specified with a special built-in command
shall remain in effect after the built-in completes.
Test: export command.
Bash: does not retain variable assignment specified with a special
built-in command.
Type: 3
- POSIX: section 3.14 Special Built-in Utility: sh_10 648:
A variable assignment specified with a special built-in command
shall remain in effect after the built-in completes.
Test: readonly command.
Bash: does not retain variable assignment specified with a special
built-in command.
Type: 3
- POSIX: section 3.14 Special Built-in Utility: sh_10 652:
A variable assignment specified with a special built-in command
shall remain in effect after the built-in completes.
Test: return command.
Bash: does not retain variable assignment specified with a special
built-in command.
Type: 3
- POSIX: section : sh_11 654:
When 'set' is called with no options or arguments, then the format
of the output of the 'value' string is such that it is suitable for
re-input to the shell.
Bash: does not recognize the variable assignment contain a
blank (var="xxx yyy"). Bash takes yyy as the name of a command;
therefore, it writes a command (yyy) not found error message.
Type: 2
- POSIX: section 3.14 Special Built-in Utility: sh_11 705:
A variable assignment specified with a special built-in command
shall remain in effect after the built-in completes.
Test: set command.
Bash: does not retain variable assignment specified with a special
built-in command.
Type: 3
- POSIX: section 3.14.13: sh_12 722:
If the implementation supports numeric signal numbers, then the
following mapping of signals to names is supported:
1 = SIGHUP 2 = SIGINT 3 = SIGQUIT 6 = SIGABRT
9 = SIGKILL 14 = SIGALRM 15 = SIGTERM
Bash: does not recognize ABRT or SIGABRT as valid signal name.
Type: 2
- POSIX: section 3.14 Special Built-in Utility: sh_12 726:
A variable assignment specified with a special built-in command
shall remain in effect after the built-in completes.
Test: trap command.
Bash: does not retain variable assignment specified with a special
built-in command.
Type: 3
- POSIX: section 3.14 Special Built-in Utility: sh_12 733:
A variable assignment specified with a special built-in command
shall remain in effect after the built-in completes.
Test: unset command.
Bash: does not retain variable assignment specified with a special
built-in command.
Type: 3
Following is a list of bugs that were detected by VSC-lite and that Mr. Ramey
indicated he had fixed in the latest version of Bash-2.05-beta. All of the information and
work below are provided by Mr. Ramey.
1. Command substitution inherits the `-e' flag when in posix mode.
2. Tilde expansion is now performed on WORD in ${PARAM[:]?WORD}.
3. Bash arithmetic evaluation now handles a^=b.
4. Subshells begun to execute a shell script without a leading `#!' now
inherit the posix mode setting from their parent.
5. `break' and `continue' don't complain when used outside of a loop in
posix mode.
6. `break' and `continue' now return success even when run outside a loop.
7. Fixed a problem that caused `var=xxx return' in a shell function to not
change the global value of `var'.
8. `Bash -o posix' now behaves the same as `Bash --posix'.
9. Fixed a problem with variable assignments preceding the `.' and `eval'
builtins not making it into the environment exported to subprocesses.
Mr. Ramey's Resolution of failed vsc-lite tests:
Testing methodology was as follows:
Isolate the failed test in a shell script, which includes a file `vsc.inc'.
vsc.inc sets the TET_SHELL variable to the full pathname of the shell that is being
tested (the current development version), enables posix mode with `set -o
posix', and provides a bunch of shell variables and functions to satisfy
the test suite requirements (like SetResult, JrnlDiff, etc.). The last
line in each script is a call to the shell function implementing the test.
Each such script was then run by the testing shell, with the script name as
the only argument.
Here are the test results, broken down by source file. In the following
descriptions, `bash-2.05' is the current development version before making
the changes 'listed above'; `bash-2.05+fixes' incorporates
those changes. The references to $TET_SHELL mean that replace calls to
`sh' in those testcases with calls to $TET_SHELL.
sh_04
277 - relies on echo translating backslash escapes; works with bash-2.05
when echo changed to echo -e
sh_05
293 - works with bash-2.05 when grep command changed to add `^'
303 - calls `sh' directly; works with bash-2.05+fixes using $TET_SHELL
334 - works with bash-2.05+fixes
335 - works with bash-2.05
343 - works with bash-2.05+fixes
344 - works with bash-2.05
357 - tests rely on ksh behavior of performing arithmetic expansion on
arguments to test/[ numeric operators
358 - works with bash-2.05+fixes
364 - works with bash-2.05
sh_06
413 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
sh_07
425 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
433 - non-interactive bash shells don't do alias expansion by default;
calls `sh' directly; works with bash-2.05 using $TET_SHELL when
a line reading `shopt -s expand_aliases' is added to the generated
script
435 - non-interactive bash shells don't do alias expansion by default;
calls `sh' directly; works with bash-2.05 using $TET_SHELL when
a line reading `shopt -s expand_aliases' is added to the generated
script
436 - non-interactive bash shells don't do alias expansion by default;
calls `sh' directly; works with bash-2.05 using $TET_SHELL when
a line reading `shopt -s expand_aliases' is added to the generated
script
437 - non-interactive bash shells don't do alias expansion by default;
calls `sh' directly; works with bash-2.05 using $TET_SHELL when
a line reading `shopt -s expand_aliases' is added to the generated
script
441 - non-interactive bash shells don't do alias expansion by default;
calls `sh' directly; works with bash-2.05 using $TET_SHELL when
a line reading `shopt -s expand_aliases' is added to the generated
script
444 - non-interactive bash shells don't do alias expansion by default;
calls `sh' directly; works with bash-2.05 using $TET_SHELL when
a line reading `shopt -s expand_aliases' is added to the generated
script
449 - non-interactive bash shells don't do alias expansion by default;
calls `sh' directly; works with bash-2.05 using $TET_SHELL when
a line reading `shopt -s expand_aliases' is added to the generated
script
sh_08
461 - calls `print'; works with bash-2.05 when `print' changed to `echo'
462 - calls `print'; works with bash-2.05 when `print' changed to `echo'
474 - bash includes functions in `set' output, causing `grep' to return
multiple matches; works with bash-2.05 when changed to grep for
'^var1='
478 - calls `print'; works with bash-2.05 when `print' changed to `echo'
479 - calls `print'; works with bash-2.05 when `print' changed to `echo'
sh_09
517 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
529 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
530 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
532 - calls `sh' directly; relies on `echo' translating backslash escape
sequences; works with bash-2.05 using $TET_SHELL and `echo -e'
538 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
539 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
543 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
544 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
548 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
sh_10
597 - calls `sh' directly; works with bash-2.05+fixes using $TET_SHELL
600 - calls `sh' directly; works with bash-2.05+fixes using $TET_SHELL
when called as `sh' or with `--posix'
601 - calls `sh' directly; works with bash-2.05+fixes using $TET_SHELL
when called as `sh' or with `--posix'
603 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
607 - calls `sh' directly; works with bash-2.05+fixes using $TET_SHELL
608 - calls `sh' directly; works with bash-2.05+fixes using $TET_SHELL
612 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
615 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
620 - calls `sh' directly; works with bash-2.05+fixes using $TET_SHELL
630 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
642 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
648 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
652 - calls `sh' directly; works with bash-2.05+fixes using $TET_SHELL
sh_11
654 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
708 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
sh_12
711 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
722 - calls `sh' directly; works with bash-2.05 using $TET_SHELL on
FreeBSD 4.2 (since it relies on the system's signal numbering)
726 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
733 - calls `sh' directly; works with bash-2.05 using $TET_SHELL
In addition, all of the unsupported features are being looked at and worked on by Mr. Ramey.
These features will be fully documented once they are fixed.
* Bash-2.05 is still in the developmental phase and has not being released.
|