yash-cli-0.3.0
·
92 commits
to master
since this release
[0.3.0] - 2025-03-23
Added
- The shell now supports declaration utilities as defined in POSIX.
- The
cd
built-in now supports the-e
option as defined in POSIX. - The
read
built-in now supports the-d
(--delimiter
) option, which allows
specifying a delimiter character to terminate the input. - The
trap
built-in now implements the POSIX.1-2024 behavior of showing
signal dispositions that are not explicitly set by the user. It also supports
the-p
(--print
) option. - The
-p
option for thecommand
built-in now works on Linux.
Changed
- When a foreground job is suspended in an interactive shell, the shell now
discards any remaining commands in the current command line and prompts for
the next command line. This behavior basically conforms to POSIX.1-2024, but
differs in that the shell does not resume with the remaining commands
following the next asynchronous and-or list. - When the shell starts job control, if it is in the background, the shell now
suspends itself until it is resumed in the foreground. Previously, the shell
would continue running in the background, interfering with the foreground
process group. - If job control is enabled and the shell does not have a controlling terminal,
the shell now proceeds without managing foreground-ness of process groups.
Jobs are still assigned to their own process groups. Previously, the shell
would abort command execution in this case. - The
cd
built-in now errors out when a given operand is an empty string. - The
cd
built-in now returns different exit statuses for different errors. - The
fg
andbg
built-ins now error out if job control is not enabled. - The command
kill -l
now shows signals in the ascending order of their
numbers. - The
read
built-in now returns a more specific exit status depending on the
cause of the error. It also rejects an input containing a null byte. - The output of the
trap
built-in now includes not only user-defined traps but
also signal dispositions that are not explicitly set by the user. - The
wait
built-in no longer treats suspended jobs as terminated jobs. When
waiting for a suspended job, the built-in now waits indefinitely until the job
is resumed and finished.