+o The `helptopic' completion action now maps to all the help topics, not just
+ the shell builtins.
+
+o The `help' builtin no longer does prefix substring matching first, so
+ `help read' does not match `readonly', but will do it if exact string
+ matching fails.
+
+o The shell can be compiled to not display a message about processes that
+ terminate due to SIGTERM.
+
+o Non-interactive shells now react to the setting of checkwinsize and set
+ LINES and COLUMNS after a foreground job exits.
+
+o There is a new shell option, `globasciiranges', which, when set to on,
+ forces globbing range comparisons to use character ordering as if they
+ were run in the C locale.
+
+o There is a new shell option, `direxpand', which makes filename completion
+ expand variables in directory names in the way bash-4.1 did.
+
+o In Posix mode, the `command' builtin does not change whether or not a
+ builtin it shadows is treated as an assignment builtin.
+
+o The `return' and `exit' builtins accept negative exit status arguments.
+
+o The word completion code checks whether or not a filename containing a
+ shell variable expands to a directory name and appends `/' to the word
+ as appropriate. The same code expands shell variables in command names
+ when performing command completion.
+
+o In Posix mode, it is now an error to attempt to define a shell function
+ with the same name as a Posix special builtin.
+
+o When compiled for strict Posix conformance, history expansion is disabled
+ by default.
+
+o The history expansion character (!) does not cause history expansion when
+ followed by the closing quote in a double-quoted string.
+
+o `complete' and its siblings compgen/compopt now takes a new `-o noquote'
+ option to inhibit quoting of the completions.
+
+o Setting HISTSIZE to a value less than zero causes the history list to be
+ unlimited (setting it 0 zero disables the history list).
+
+o Setting HISTFILESIZE to a value less than zero causes the history file size
+ to be unlimited (setting it to 0 causes the history file to be truncated
+ to zero size).
+
+o The `read' builtin now skips NUL bytes in the input.
+
+o There is a new `bind -X' option to print all key sequences bound to Unix
+ commands.
+
+o When in Posix mode, `read' is interruptible by a trapped signal. After
+ running the trap handler, read returns 128+signal and throws away any
+ partially-read input.
+
+o The command completion code skips whitespace and assignment statements
+ before looking for the command name word to be completed.
+
+o The build process has a new mechanism for constructing separate help files
+ that better reflects the current set of compilation options.
+
+o The -nt and -ot options to test now work with files with nanosecond
+ timestamp resolution.
+
+o The shell saves the command history in any shell for which history is
+ enabled and HISTFILE is set, not just interactive shells.
+
+o The shell has `nameref' variables and new -n(/+n) options to declare and
+ unset to use them, and a `test -R' option to test for them.
+
+o The shell now allows assigning, referencing, and unsetting elements of
+ indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which
+ count back from the last element of the array.
+
+o The {x}<word redirection feature now allows words like {array[ind]} and
+ can use variables with special meanings to the shell (e.g., BASH_XTRACEFD).
+
+o There is a new CHILD_MAX special shell variable; its value controls the
+ number of exited child statues the shell remembers.
+
+o There is a new configuration option (--enable-direxpand-default) that
+ causes the `direxpand' shell option to be enabled by default.
+
+o Bash does not do anything special to ensure that the file descriptor
+ assigned to X in {x}<foo remains open after the block containing it
+ completes.
+
+o The `wait' builtin has a new `-n' option to wait for the next child to
+ change status.
+
+o The `printf' %(...)T format specifier now uses the current time if no
+ argument is supplied.
+
+o There is a new variable, BASH_COMPAT, that controls the current shell
+ compatibility level.
+
+o The `popd' builtin now treats additional arguments as errors.
+
+o The brace expansion code now treats a failed sequence expansion as a
+ simple string and will continue to expand brace terms in the remainder
+ of the word.
+
+o Shells started to run process substitutions now run any trap set on EXIT.
+
+o The fc builtin now interprets -0 as the current command line.
+
+o Completing directory names containing shell variables now adds a trailing
+ slash if the expanded result is a directory.
+
+A short feature history dating back to Bash-2.0:
+
+Bash-4.2 contained the following new features:
+
+o `exec -a foo' now sets $0 to `foo' in an executable shell script without a
+ leading #!.
+
+o Subshells begun to execute command substitutions or run shell functions or
+ builtins in subshells do not reset trap strings until a new trap is
+ specified. This allows $(trap) to display the caller's traps and the
+ trap strings to persist until a new trap is set.
+
+o `trap -p' will now show signals ignored at shell startup, though their
+ disposition still cannot be modified.
+
+o $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences.
+
+o declare/typeset has a new `-g' option, which creates variables in the
+ global scope even when run in a shell function.
+
+o test/[/[[ have a new -v variable unary operator, which returns success if
+ `variable' has been set.
+
+o Posix parsing changes to allow `! time command' and multiple consecutive
+ instances of `!' (which toggle) and `time' (which have no cumulative
+ effect).
+
+o Posix change to allow `time' as a command by itself to print the elapsed
+ user, system, and real times for the shell and its children.
+
+o $((...)) is always parsed as an arithmetic expansion first, instead of as
+ a potential nested command substitution, as Posix requires.
+
+o A new FUNCNEST variable to allow the user to control the maximum shell
+ function nesting (recursive execution) level.
+
+o The mapfile builtin now supplies a third argument to the callback command:
+ the line about to be assigned to the supplied array index.
+
+o The printf builtin has as new %(fmt)T specifier, which allows time values
+ to use strftime-like formatting.
+
+o There is a new `compat41' shell option.
+
+o The cd builtin has a new Posix-mandated `-e' option.
+
+o Negative subscripts to indexed arrays, previously errors, now are treated
+ as offsets from the maximum assigned index + 1.
+
+o Negative length specifications in the ${var:offset:length} expansion,
+ previously errors, are now treated as offsets from the end of the variable.
+
+o Parsing change to allow `time -p --'.
+
+o Posix-mode parsing change to not recognize `time' as a keyword if the
+ following token begins with a `-'. This means no more Posix-mode
+ `time -p'. Posix interpretation 267.
+
+o There is a new `lastpipe' shell option that runs the last command of a
+ pipeline in the current shell context. The lastpipe option has no
+ effect if job control is enabled.
+
+o History expansion no longer expands the `$!' variable expansion.
+
+o Posix mode shells no longer exit if a variable assignment error occurs
+ with an assignment preceding a command that is not a special builtin.
+
+o Non-interactive mode shells exit if -u is enabled an an attempt is made
+ to use an unset variable with the % or # expansions, the `//', `^', or
+ `,' expansions, or the parameter length expansion.
+
+o Posix-mode shells use the argument passed to `.' as-is if a $PATH search
+ fails, effectively searching the current directory. Posix-2008 change.
+
+A short feature history dating back to Bash-2.0:
+
+Bash-4.1 contained the following new features:
+
+o Here-documents within $(...) command substitutions may once more be
+ delimited by the closing right paren, instead of requiring a newline.
+
+o Bash's file status checks (executable, readable, etc.) now take file
+ system ACLs into account on file systems that support them.
+
+o Bash now passes environment variables with names that are not valid
+ shell variable names through into the environment passed to child
+ processes.
+
+o The `execute-unix-command' readline function now attempts to clear and
+ reuse the current line rather than move to a new one after the command
+ executes.
+
+o `printf -v' can now assign values to array indices.
+
+o New `complete -E' and `compopt -E' options that work on the "empty"
+ completion: completion attempted on an empty command line.
+
+o New complete/compgen/compopt -D option to define a `default' completion:
+ a completion to be invoked on command for which no completion has been
+ defined. If this function returns 124, programmable completion is
+ attempted again, allowing a user to dynamically build a set of completions
+ as completion is attempted by having the default completion function
+ install individual completion functions each time it is invoked.
+
+o When displaying associative arrays, subscripts are now quoted.
+
+o Changes to dabbrev-expand to make it more `emacs-like': no space appended
+ after matches, completions are not sorted, and most recent history entries
+ are presented first.
+
+o The [[ and (( commands are now subject to the setting of `set -e' and the
+ ERR trap.
+
+o The source/. builtin now removes NUL bytes from the file before attempting
+ to parse commands.
+
+o There is a new configuration option (in config-top.h) that forces bash to
+ forward all history entries to syslog.
+
+o A new variable $BASHOPTS to export shell options settable using `shopt' to
+ child processes.
+
+o There is a new confgure option that forces the extglob option to be
+ enabled by default.
+
+o New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace
+ output to that file descriptor.
+
+o If the optional left-hand-side of a redirection is of the form {var}, the
+ shell assigns the file descriptor used to $var or uses $var as the file
+ descriptor to move or close, depending on the redirection operator.
+
+o The < and > operators to the [[ conditional command now do string
+ comparison according to the current locale.
+
+o Programmable completion now uses the completion for `b' instead of `a'
+ when completion is attempted on a line like: a $(b c.
+
+o Force extglob on temporarily when parsing the pattern argument to
+ the == and != operators to the [[ command, for compatibility.
+
+o Changed the behavior of interrupting the wait builtin when a SIGCHLD is
+ received and a trap on SIGCHLD is set to be Posix-mode only.
+
+o The read builtin has a new `-N nchars' option, which reads exactly NCHARS
+ characters, ignoring delimiters like newline.
+
+o The mapfile/readarray builtin no longer stores the commands it invokes via
+ callbacks in the history list.
+
+o There is a new `compat40' shopt option.
+
+o The < and > operators to [[ do string comparisons using the current locale
+ only if the compatibility level is greater than 40 (set to 41 by default).
+
+o New bindable readline function: menu-complete-backward.
+
+o In the readline vi-mode insertion keymap, C-n is now bound to menu-complete
+ by default, and C-p to menu-complete-backward.
+
+o When in readline vi command mode, repeatedly hitting ESC now does nothing,
+ even when ESC introduces a bound key sequence. This is closer to how
+ historical vi behaves.
+
+o New bindable readline function: skip-csi-sequence. Can be used as a
+ default to consume key sequences generated by keys like Home and End
+ without having to bind all keys.
+
+o New bindable readline variable: skip-completed-text, active when
+ completing in the middle of a word. If enabled, it means that characters
+ in the completion that match characters in the remainder of the word are
+ "skipped" rather than inserted into the line.
+
+o The pre-readline-6.0 version of menu completion is available as
+ "old-menu-complete" for users who do not like the readline-6.0 version.
+
+o New bindable readline variable: echo-control-characters. If enabled, and
+ the tty ECHOCTL bit is set, controls the echoing of characters
+ corresponding to keyboard-generated signals.
+
+o New bindable readline variable: enable-meta-key. Controls whether or not
+ readline sends the smm/rmm sequences if the terminal indicates it has a
+ meta key that enables eight-bit characters.
+
+Bash-4.0 contained the following new features:
+