Open
16 of 23 issues completedDescription
This issue tracks the tasks involved in implementing the requirements for the shell as defined by The Open Group Base Specifications Issue 8.
- exec: Don't exit on exec failure if interactive #87
- Update $! when resuming a background job #88
- Allow esac as the first pattern of a case branch #89
-
;&
,;|
, and;;&
in case command items #90 - Dollar-single-quotes 9b2d911
- Declaration utility #20
- New
printf
built-in semantics - New
cd
built-in semantics- Update the exit status of
cd
where the newPWD
value cannot be determined (with and without-e
) 764c3c7 - Reject an empty operand in the
cd
built-in #104
- Update the exit status of
- Update the exit status of
getopts
on error 1a3525d - Update trap built-in to support POSIX.1-2024 #113
trap
(without options or operands) should show signals ignored by inheritance inexec
trap -p
(without operands) should show all signals
- wait: Don't return when the target process is suspended #121
- Support POSIX.1-2024 read built-in behavior (except byte-wise field splitting) #123
- Add the
-d
option to theread
built-in - The
read
built-in should treat quotes and escapes as specified in POSIX.1-2024 - Return from the
read
built-in different exit statuses depending on the result
- Add the
- New job control semantics
- Ignore remaining commands after a foreground job stops #129
- Treat a job suspended when any of its component processes is suspended #130
- Applying job control to command substitutions #131
- Preventing process redirections from being suspended #132
- Allowing job control without a control terminal #133
- Avoid allocating a controlling terminal if the shell does not already have one
- Yash should foreground itself if it is started as a session leader and has a controlling terminal #134
- Job-control shell should suspend itself when it is started as a background job #135
- Documentation updates only
- Saving and restoring the terminal state of a suspended job #136
- Allocating a unique process group ID for a job-control shell #137
- Miscellaneous
- Accept
--
separator in theexec
built-in - Reject if a redirection operand expands to more than one field in an interactive shell #95
- Discard remaining commands on shell errors if interactive #151
- Exclude
.
and..
from pathname expansion results #97 - Change
false
,pwd
, andtrue
to substitutive built-ins #96 - Enable the interactive mode if the shell is invoked with the
-s
option and an operand with stdin and stderr connected to a terminal #100 - Disallow disabling the
ulimit
built-in inconfigure
and add test cases for the built-in #125 - Rejecting non-POSIX operators in the test built-in #153
- Treatment of variables that should not be made readonly #169
- Reject making LINENO, OLDPWD, OPTARG, OPTIND, and PWD readonly #170 *
- Document POSIX non-conformance of brace expansion 4e53f39
- Return exit status 128 on unrecoverable read error cb8e096
- Report job number and PID for async commands in interactive shell #155
- Propagate signal exit status to parent process #156
- Reject
{n}
redirection prefix #167 - Remove redundant trailing slash in tilde expansion #166 *
- Keep empty tilde expansion from empty field removal #164
- Document hashondef and nolog options for POSIX.1-2024 #168
- Reconsider when alias substitution should be performed in command substitutions of the form
$(...)
- Changing how command substitutions are parsed depending on the POSIX mode is kind of confusing and should be removed, but we won't do that anytime soon because both behaviors are POSIXly compliant.
-
Import only variables that have a valid name from the environment - Allow any non-null bytes (possibly not valid characters) in environment variable values
- Allow any non-null bytes (possibly not valid characters) in parameter values
- Change result types of expansions from character strings to bytes
- Reimplement field splitting in terms of bytes
- Revise field splitting in the
read
built-in to match the new field splitting semantics - Sort byte-by-byte if results of pathname expansion collate equal
- Update documentation on the POSIX version
- Set the exit status of suspended jobs to
$?
only in interactive job-controlling shells #154
- Accept
Items marked with an asterisk are behaviors that are newly allowed (but not required) by POSIX.1-2024.
The following are requirements that were not added in POSIX.1-2024, but have existed since earlier versions of POSIX.
- Fix default exit status of exit built-in in trap action #162
- return-p.tst: default exit status in trap in function #163
- Remove temporary file on termination signal #81
- Non-interactive shell should not ignore stop signals #26
-
printf %c
andprintf %.1s
should write one byte rather than one character or no character