Chet Ramey [Wed, 20 May 2026 14:18:32 +0000 (10:18 -0400)]
fixed a bug with expanding unquoted $* when the separator is not whitespace and one or more of the positional parameters ends with the separator, resulting in an extra blank field being generated; fixed an issue with adjusting SHLVL in subshells that caused the environment to be rebuilt too many times; fix to make sure function substitution doesn't leave the -v option unset
Chet Ramey [Thu, 2 Apr 2026 15:02:52 +0000 (11:02 -0400)]
fix a bug in word splitting that could potentially drop the first word; complete -p now prefixes the compspec for commands that begin with `-' with `--'; several builtins updated to use $'...' quoting for output when appropriate
Chet Ramey [Tue, 24 Mar 2026 14:10:30 +0000 (10:10 -0400)]
update fix to save history if fatal signal arrives during $PROMPT_COMMAND execution; fix issue with extglob and empty patterns preceding pattern beginning with a `.'
Chet Ramey [Mon, 9 Mar 2026 18:54:45 +0000 (14:54 -0400)]
fix for heuristic to detect case statements when parsing $() command substitutions to find history expansion; fix for history not being saved if a SIGHUP arrives during $PROMPT_COMMAND execution; workaround for Cygwin bug that results in bash incorrectly calculating the system pipe size
Chet Ramey [Tue, 3 Mar 2026 16:14:10 +0000 (11:14 -0500)]
fix cosmetic error when printing if commands containing here-documents in the body; compiling -DSTRICT_POSIX now forces posix-mode shells to expand redirections before assignment statements preceding simple commands
Chet Ramey [Tue, 17 Feb 2026 18:08:27 +0000 (13:08 -0500)]
fix posix-mode tilde expansion so non-assignment words containing "~:" do not undergo tilde expansion; heuristic to skip case statements while performing history expansion on $() command substitutions; undo redirections before running an EXIT trap when executing a builtin in a subshell
Chet Ramey [Fri, 30 Jan 2026 21:43:46 +0000 (16:43 -0500)]
change `read -d' on a tty when the delimiter is not a newline to set the terminal EOL character instead of putting the terminal into character-at-a-time mode; change some calls to atoi to use strol instead
Chet Ramey [Fri, 23 Jan 2026 21:39:00 +0000 (16:39 -0500)]
new `jobid' loadable builtin like ash-based shells; fix for nofork command substitution when followed by an asynchronous subshell using GNU nohup; fix for nofork command substitution to move the file descriptor moved to the anonymous file out of the user-accessible range
Chet Ramey [Sun, 18 Jan 2026 22:48:33 +0000 (17:48 -0500)]
the `history' builtin prints error messages for certain read and write errors; implementation of new form of nofork command substitution that does not remove trailing newlines
Chet Ramey [Wed, 14 Jan 2026 16:08:22 +0000 (11:08 -0500)]
modify way bash avoids running traps in subshells that haven't reset the trap strings yet; new readline bindable command 'shell-expand-and-requote-line'
Chet Ramey [Tue, 6 Jan 2026 15:46:14 +0000 (10:46 -0500)]
change posix-mode implicit redirection from /dev/null for asynchronous commands so that 0<&0 does not count as an explicit redirection for austin-group interp 1913; fix spurious debug message about job notification for -c command; fix error handling for wait builtin if there are no children in a subshell
Chet Ramey [Mon, 5 Jan 2026 16:57:18 +0000 (11:57 -0500)]
history builtin has a -H option to display history entries as they would be written to the history file; history builtin now takes a START-END range specifier for listing; fix stray semicolon when printing shell functions containing a case command; changes to stdin redirection detection in preparation for POSIX interp 1913
Chet Ramey [Tue, 30 Dec 2025 21:06:40 +0000 (16:06 -0500)]
fixes for several bugs found via fuzzing: overflow in $'...' hex expansion; fix for accessing freed memory when reading input from stdin and using multiple redirections to stdin; fix for pointer aliasing problem after a syntax error while executing a command string
Chet Ramey [Tue, 30 Dec 2025 20:55:55 +0000 (15:55 -0500)]
New -D option for fc to force it to delete history entries selected for editing and re-execution; change readline edit-and-execute-command bindable command so it acts more like an accept-line followed by a command execution than an editing command that returns to readline()
Chet Ramey [Wed, 17 Dec 2025 14:59:56 +0000 (09:59 -0500)]
allow locale's decimal point as radix character when parsing fixed-point decimal into seconds and fractional seconds; handle case of shell script file descriptor being made non-blocking; fix smalkl memory leak in programmable completion of shell option names; fix for patsub_replacement behavior when BASH_COMPAT = 42 and the replacement string is quoted; fix for readine when changing show-mode-in-prompt variable
Chet Ramey [Tue, 2 Dec 2025 22:15:44 +0000 (17:15 -0500)]
fix longjmp error when timing null command in posix mode; unset exit trap in subshells before checking for pending fatal signal; changes for gcc sometimes-uninitialized warning
Chet Ramey [Mon, 24 Nov 2025 14:51:15 +0000 (09:51 -0500)]
fix expansion of $* and $@ in contexts where word splitting is not performed to be more consistent across different word expansions; fix pathname canonicalization when setting $BASH
Chet Ramey [Wed, 19 Nov 2025 15:18:54 +0000 (10:18 -0500)]
fix export environment if a local variable inherits the export attribute from a variable with the same name at a previous scope; changes to help builtin and glob pattern arguments; fix for fpurge declaration in a source file; man page typesetting updates
Chet Ramey [Mon, 17 Nov 2025 19:50:43 +0000 (14:50 -0500)]
fix for a trap on SIGINT restoring the default disposition in an asynchronous subshell; change cd exit status if -Pe supplied and the directory can't be changed; fix for compound associative array assignment if one of the expanded words unsets the array during word expansion; fixes for rare systems that don't have various defines and system calls
Chet Ramey [Tue, 11 Nov 2025 16:36:53 +0000 (11:36 -0500)]
minor test suite updates; fix for export string when a variable from a function temporary environment is converted to an array variable; use fpurge to discard builtin output after a SIGINT in an interactive shell; fix for words containing quoted strings and {forward,backward}-shellword; experimental fix to discard a bgpid when a child with the same pid is created only if the new child is also an asynchronous pid; change read builtin to return >1 on read error, since 1 is reserved for EOF
Chet Ramey [Mon, 27 Oct 2025 14:42:10 +0000 (10:42 -0400)]
speedups for character processing in a multibyte locale when expanding $'...'; cosmetic fix for select command when read returns EOF; fix for a forced interactive shell running under emacs with a pipe for stdin; fix for local nameref variables with the same name as variables in a function's temporary environment; fix for `x=y local -n x' not making `x' visible as a local variable; turn off nameref attribute for local nameref variables converted to arrays
Chet Ramey [Thu, 23 Oct 2025 20:35:55 +0000 (16:35 -0400)]
round seconds in command timing information if precision is >= 0; fix for readline word boundaries when quoted command substitutions appear; remove nameref attribute when converting nameref variable into an array; change how help strings are written to builtins.c; change read builtin to update unwind-protect if the input string is reallocated; fix crash when an expansion on the rhs of an assignment statement unsets the variable on the lhs
Chet Ramey [Fri, 17 Oct 2025 19:30:08 +0000 (15:30 -0400)]
more test suite changes to partially highlight warning messages; several fixes to bracket expression parsing with equivalence classes, collating symbols, and character classes together with range expressions
Chet Ramey [Thu, 16 Oct 2025 15:44:26 +0000 (11:44 -0400)]
test suite updates: highlight failed test scripts; optionally save failed test output; report number of successful tests; exit based on number of test failures; indent warning messages to make them stand out
Chet Ramey [Tue, 14 Oct 2025 18:21:00 +0000 (14:21 -0400)]
read builtin fixes for CHERI environment; use CLOCK_GETTIME in gettimeofday replacement; readline fix to not optimize typeahead while defining a keyboard macro; fix for crash with unset nameref variable; make sure to save currently executing command around running DEBUG trap
Chet Ramey [Mon, 6 Oct 2025 21:20:10 +0000 (17:20 -0400)]
fix issue with making local variables from the temporary environment arrays; documentation updates; fix read builtin to check that the delimiter is not a newline before changing the terminal settings with a zero-length timeout
Chet Ramey [Mon, 6 Oct 2025 19:29:41 +0000 (15:29 -0400)]
fix for %P in TIMEFORMAT; make updating variables that aren't subject to allexport smoother; fix spurious compiler warning about realloc; efficiency improvement for command timing; fix issue with read builtin and failure to set terminal attributes
Chet Ramey [Wed, 1 Oct 2025 15:14:27 +0000 (11:14 -0400)]
fix problem with completing filenames with user-supplied double quotes containing word expansion characters; fix problem with printf %S and precision overflow; fix issue with %P in TIMEFORMAT when timing null commands in posix mode; fix problem with SIGINT while parsing command substitutions
Chet Ramey [Wed, 1 Oct 2025 14:44:10 +0000 (10:44 -0400)]
builtins now return success if supplied --help; use groff to build HTML man pages; reset mbstate if $'...' strings read an invalid multibyte sequence; read -t 0 now looks at other options (-n/-N/-d) and sets the terminal state appropriately
Chet Ramey [Thu, 18 Sep 2025 21:54:55 +0000 (17:54 -0400)]
fix for potential read builtin crash if bash gets a signal before read reads any input; make wait -f work if there are no pid or job arguments and update documentation; save and restore variable reflected in $BASH_COMMAND around shell function calls
Chet Ramey [Thu, 18 Sep 2025 21:35:34 +0000 (17:35 -0400)]
fix for invalid bracketed paste prefix when the final character is wrong; fixes for unlikely SIGINTs while readline is reading from the keyboard; android fix for generating $'...' strings in the presence of invalid multibyte characters
Chet Ramey [Thu, 18 Sep 2025 21:26:51 +0000 (17:26 -0400)]
experimental change to use groff instead of man2html for HTML man pages; man page updates for reserved words; fix for pattern matching bracket expression ranges; readline changes to disallow defining some recursive keyboard macros
Chet Ramey [Thu, 4 Sep 2025 16:29:57 +0000 (12:29 -0400)]
declare builtin changes to reject -i when used with -n; readline changes to make control characters visible in search strings; readline signal handling changes to avoid data corruption and UAF; documentation updates for more consistent quoting
Chet Ramey [Fri, 22 Aug 2025 20:10:45 +0000 (16:10 -0400)]
fix for rare readline case where read(2) succeeds but also gets a signal as it is returning to user mode; fix for bash completion filename quoting when there is more than one match
Chet Ramey [Wed, 20 Aug 2025 15:08:28 +0000 (11:08 -0400)]
fix for nofork comsubs undoing enclosing command's redirections; fix for binding _ variable in the temporary environment; fix for crash when making special variables arrays; accommodate IFS as array variable; fix for SIGINT arriving while cleaning up a readline incremental search
Chet Ramey [Thu, 14 Aug 2025 14:27:52 +0000 (10:27 -0400)]
fix issue with break in nofork comsub when expanding for command word list; add error message if the value of a nameref variable expands to an invalid variable name
Chet Ramey [Fri, 8 Aug 2025 16:11:17 +0000 (12:11 -0400)]
allow the --with-curses configure argument to specify a library name; fix for case pattern lists containing both null and non-null strings; fix for bug with PS1 expansion containing an arithmetic syntax error
Chet Ramey [Mon, 4 Aug 2025 14:18:32 +0000 (10:18 -0400)]
fix for parameter expansions that contain valid and invalid expansions; avoid stale readdir() value in getcwd replacement; check libtinfow for termcap functions; fix to propagate exit status of builtins run in subshells back to calling shell
Chet Ramey [Fri, 1 Aug 2025 20:26:31 +0000 (16:26 -0400)]
history library can now read history from non-regular files; fix for readline char search and macros; better fix for PROMPT_COMMAND and aliases ending in newlines; fix for casting COMMAND * and SIMPLE_COM * when parsing |&; fix to avoid undefined behavior when performing left and right arithmetic shifts
Chet Ramey [Fri, 18 Jul 2025 15:53:01 +0000 (11:53 -0400)]
fix for `wait -n' in posix mode; fix for long messages in readline; fix for short reads by `source' builtin; fix for crash on RISC-V machines; fix for bad memory read when getopts is called twice with different sets of arguments
Chet Ramey [Wed, 9 Jul 2025 20:33:00 +0000 (16:33 -0400)]
fix for crash when executing PROMPT_COMMAND; fix for readline crash when rl_save_prompt is not followed by rl_set_prompt; fix for bash C-xg key binding listing completions; fix for precision overflow issue in printf; fix for readline non-multibyte builds
Chet Ramey [Mon, 16 Jun 2025 17:47:40 +0000 (13:47 -0400)]
updated translations; back out change allowing quoted characters and process substitution words in function names; rework readline change for GNU Hurd and ncurses
Chet Ramey [Fri, 6 Jun 2025 16:16:11 +0000 (12:16 -0400)]
addition to POSIX mode documentation; new translations; update copyrights on some files; update formatted documentation; changes to cut/lcut loadable builtins when supplied -a ARRAY
Chet Ramey [Mon, 19 May 2025 13:10:57 +0000 (09:10 -0400)]
some fixes for static analysis findings; fix for brace expansion being too greedy checking sequence expressions; fix for strip targets when cross-compiling
Chet Ramey [Sun, 4 May 2025 21:21:25 +0000 (17:21 -0400)]
fix for command substitution string parsing that resulted in top-level unwind-protects being run in the wrong spot; fix for delimiter byte being part of invalid multibyte character in read builtin
Chet Ramey [Wed, 30 Apr 2025 20:19:08 +0000 (16:19 -0400)]
check for delimiter_depth being 0 before popping off the stack (reset_parser resets it); make EOFs while reading here-doc delimiters sticky; when reading arith command, push back a character after the first closing paren that isn't a second close paren to fix backslash issue
Chet Ramey [Tue, 22 Apr 2025 14:39:43 +0000 (10:39 -0400)]
fix for read builtin and invalid multibyte characters followed by the delimiter; updated formatted documentation; new bash.pot file with updated strings; updated translations
Chet Ramey [Fri, 18 Apr 2025 15:08:27 +0000 (11:08 -0400)]
fix to preserve blank lines when reading multiline entries from a history file; fix for completion with quoted command delimiters; updated translations
Chet Ramey [Mon, 24 Mar 2025 21:07:43 +0000 (17:07 -0400)]
fix for invalid brace sequence expressions; cosmetic fix to help builtin; documentation and copyright updates; bump version to bash-5.3-rc1; cosmetic locale fixes
Chet Ramey [Fri, 7 Mar 2025 15:23:58 +0000 (10:23 -0500)]
documentation updates for arithmetic expansion and array subscripts; update BASH_COMMAND for subshells; fix potential file descriptor leak in here document pipes
Chet Ramey [Mon, 24 Feb 2025 16:36:49 +0000 (11:36 -0500)]
revert change that suppressed array subscript expansion when called by the let builtin; fix default file descriptor for <> redirection when printing command
Chet Ramey [Fri, 24 Jan 2025 16:21:16 +0000 (11:21 -0500)]
taking the length of an unset variable subscripted with anything but @ or * is a fatal error; quote results of u prompt expansion; posix mode changes for exiting on -e when in a shell function; fix readline redisplay issue when bold prompt spans multiple lines
Chet Ramey [Fri, 17 Jan 2025 16:41:49 +0000 (11:41 -0500)]
fix issue with internally quoting multibyte characters; the let builtin now suppresses additional array subscript expansion; small change to how readline export-completions displays filenames; new loadable builtin to do floating-point arithmetic
Chet Ramey [Mon, 30 Dec 2024 15:45:14 +0000 (10:45 -0500)]
fix issue with failed history expansion changing the history list offset; fix some tests to avoid problems with error messages that differ between systems; fix issue with readline rl_abort not clearing any pending command to execute
Chet Ramey [Fri, 8 Nov 2024 16:13:57 +0000 (11:13 -0500)]
fix for readline redisplay issue in C locale; fix for small memory leak in termcap replacement library; updates to formatted documentation; fix problem with distclean and y.tab.h; Makefile clean targets updates
Chet Ramey [Mon, 4 Nov 2024 22:51:50 +0000 (17:51 -0500)]
changes to non-incremental search implementation for consistency with incremental search; fix for readline unsetting rl_eof_found; minor man page updates
Chet Ramey [Mon, 28 Oct 2024 19:05:35 +0000 (15:05 -0400)]
fixes for a couple of autoconf macros; update exit builtin for POSIX interp 1602; include more info in EOF error message when parsing compound command; update Makefiles by removing some variables, initializing others; update dependencies on version.h
Chet Ramey [Sat, 26 Oct 2024 16:39:17 +0000 (12:39 -0400)]
do not require leading . for rl color prefix etension; fix for isearch in single-byte locales; next set of doc updates (SIGNALS); add warning for invalid job id; allow function names to be non-identifiers in posix mode
Chet Ramey [Tue, 15 Oct 2024 14:02:17 +0000 (10:02 -0400)]
next set of documentation updates (job control); fix read timeout problem; fix bash-source-fullpath default; brace expansion integer overflow fix; fix for help output for loadable builtins
Chet Ramey [Fri, 27 Sep 2024 16:00:46 +0000 (12:00 -0400)]
fix for set -e and compound commands inverting return status; tty fix for `fg' from a key binding; posix mode `wait -n' can return notified jobs; off-by-one error in history word tokenization; new configure option to set bash_source_fullpath
Chet Ramey [Fri, 20 Sep 2024 18:47:56 +0000 (14:47 -0400)]
in posix mode, don't notify about other terminated jobs if the jobs builtin is listing individual jobs; in posix mode, if `wait pid' finds pid in bgpids, remove it from there
Chet Ramey [Wed, 11 Sep 2024 19:54:24 +0000 (15:54 -0400)]
`wait -n' notifies on a job it returns; in posix mode, `wait' defers notification on a reaped pid unless the shell is interactive, as posix now specifies
Chet Ramey [Wed, 4 Sep 2024 21:26:15 +0000 (17:26 -0400)]
track initial line number of `{'', `(', and `[[' compound commands; don't have readline check for signals while it's handling a signal; fix for malformed printf time format specifier
Chet Ramey [Wed, 28 Aug 2024 15:42:10 +0000 (11:42 -0400)]
documentation updates; fix for null commands with redirection expansion errors; changes to job notifications for interactive shells sourcing files; fix underflow issue with word_top
Chet Ramey [Wed, 21 Aug 2024 20:11:01 +0000 (16:11 -0400)]
fix for printf with broken strtold; fix readline reading specified number of multibyte characters; fix read builtin to deal with invalid utf-8 continuation character as delimiter; turn off -n if supplied at interactive shell invocation
Chet Ramey [Thu, 15 Aug 2024 20:37:54 +0000 (16:37 -0400)]
optimize asynchronous function invocations; fix for running return from trap while sourcing a file; restore completion function if read -e is interrupted
Chet Ramey [Fri, 9 Aug 2024 14:01:38 +0000 (10:01 -0400)]
fix issue with read builtin delimiter in invaild mutibyte char; fix crash if caller passes negative count argument to one of the history file writing functions
Chet Ramey [Thu, 18 Jul 2024 20:48:17 +0000 (16:48 -0400)]
job control cleanups; wait -n can return terminated jobs if supplied pid arguments; wait -n can wait for process substitutions if supplied pid arguments