| status | bash | dash | mksh | zsh | ash | osh | |
| pass | 5 | 5 | 7 | 5 | 5 | 4 | |
| ok | 1 | 2 | 0 | 0 | 0 | 1 | |
| N-I | 0 | 1 | 0 | 0 | 1 | 0 | |
| BUG | 2 | 0 | 1 | 3 | 2 | 0 | |
| FAIL | 0 | 0 | 0 | 0 | 0 | 3 | |
| total | 8 | 8 | 8 | 8 | 8 | 8 | |
| case | bash | dash | mksh | zsh | ash | osh | description |
| 0 | pass | pass | pass | BUG | pass | pass | : is special and prefix assignments persist after special builtins (set -o posix) |
| details | |||||||
| 1 | ok | pass | pass | pass | pass | ok | readonly is special and prefix assignments persist (set -o posix) |
| details | details | ||||||
| 2 | pass | pass | pass | pass | pass | pass | true is not special |
| 3 | BUG | ok | pass | BUG | BUG | FAIL | Shift is special and the whole script exits if it returns non-zero |
| details | details | details | details | details | |||
| 4 | BUG | ok | pass | pass | BUG | FAIL | set is special and fails, even if using || true |
| details | details | details | details | ||||
| 5 | pass | pass | BUG | BUG | pass | FAIL | Special builtins can't be redefined as functions (set -o posix) |
| details | details | details | |||||
| 6 | pass | pass | pass | pass | pass | pass | Non-special builtins CAN be redefined as functions |
| 7 | pass | N-I | pass | pass | N-I | pass | command, builtin - both can be redefined, not special (regression) |
| details | details |
31 passed, 4 OK, 2 not implemented, 8 BUG, 3 failed, 0 timeouts, 0 cases skipped 3 failed under osh
| zsh | 0 : is special and prefix assignments persist after special builtins (set -o posix) stdout: foo= z=stderr: |
| bash | 1 readonly is special and prefix assignments persist (set -o posix) stdout: foo=bar spam=eggs bar Nonestderr: |
| osh | 1 readonly is special and prefix assignments persist (set -o posix) stdout: foo=bar spam=eggs bar Nonestderr: |
| bash | 3 Shift is special and the whole script exits if it returns non-zero stdout: status=1stderr: bash: line 5: shift: 3: shift count out of range |
| dash | 3 Shift is special and the whole script exits if it returns non-zero stdout: stderr: dash: 5: shift: can't shift that many |
| zsh | 3 Shift is special and the whole script exits if it returns non-zero stdout: status=1stderr: shift: shift count must be <= $# |
| ash | 3 Shift is special and the whole script exits if it returns non-zero stdout: status=1stderr: |
| osh | 3 Shift is special and the whole script exits if it returns non-zero [osh stdout] Expected '', got 'status=1\n' [osh status] Expected 1, got 0 stdout: status=1stderr: |
| bash | 4 set is special and fails, even if using || true stdout: ok should not get herestderr: bash: line 1: shopt: invalid_: invalid shell option name bash: line 3: set: invalid_: invalid option name |
| dash | 4 set is special and fails, even if using || true stdout: okstderr: dash: 1: shopt: not found dash: 3: set: Illegal option -o invalid_ |
| ash | 4 set is special and fails, even if using || true stdout: ok should not get herestderr: ash: shopt: not found ash: set: line 3: illegal option -o invalid_ |
| osh | 4 set is special and fails, even if using || true [osh stdout] Expected 'ok\n', got 'ok\nshould not get here\n' [osh status] Expected 1, got 0 stdout: ok should not get herestderr: shopt -s invalid_ || true ^~~~~ [ stdin ]:1: 'shopt' got invalid option 'invalid_' set -o invalid_ || true ^~~ [ stdin ]:3: 'set' got invalid option 'invalid_' |
| mksh | 5 Special builtins can't be redefined as functions (set -o posix) stdout: status=0stderr: |
| zsh | 5 Special builtins can't be redefined as functions (set -o posix) stdout: status=0stderr: |
| osh | 5 Special builtins can't be redefined as functions (set -o posix) [osh status] Expected 2, got 0 stdout: status=0stderr: |
| dash | 7 command, builtin - both can be redefined, not special (regression) stdout: stderr: |
| ash | 7 command, builtin - both can be redefined, not special (regression) stdout: stderr: |