+This document details the changes between this version, bash-4.2-release,
+and the previous version, bash-4.2-rc2.
+
+1. Changes to Bash
+
+a. Fixed a bug that caused some variables to be clobbered by a longjmp,
+ resulting in stack corruption.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.2-rc2,
+and the previous version, bash-4.2-rc1.
+
+1. Changes to Bash
+
+a. Changes to bash_directory_completion_hook so that it's assigned to the
+ readline rl_directory_rewrite_hook variable, which modifies the directory
+ name passed to opendir without modifying the directory name the user
+ typed.
+
+b. Fixed bug in select builtin that caused it to not terminate correctly if
+ the read timed out due to $TMOUT.
+
+c. Fixed a problem that resulted in non-repeatable sequences of random
+ numbers when RANDOM=0.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.2-rc1,
+and the previous version, bash-4.2-beta.
+
+1. Changes to Bash
+
+a. Fixed a bug that caused some redirection errors to leak file descriptors.
+
+b. Fixed a bug that caused unary `+' and `-' arithmetic operators to have a
+ higher precedence than unary `!' and `~'.
+
+c. Fixed a bug that caused simple commands in a pipeline to affect the exit
+ status ($?) seen by subsequent pipeline commands.
+
+d. A number of cygwin-specific changes to avoid the use of text-mode files
+ and file access, and to make sure that \r is handled correctly.
+
+e. Fixed a bug that caused the read builtin to not return failure if an
+ attempt is made to assign to a readonly variable.
+
+f. Fixed a bug that caused some builtin usage messages to not be translated.
+
+g. Fixed a bug that caused the getopts builtin to not return failure if an
+ attempt is made to assign to a readonly variable. Now it returns 2.
+
+h. Fixed the cd and pwd builtins to return failure if PWD is readonly and
+ cannot be assigned to.
+
+i. Added code to check the return value of access(2) on Solaris systems,
+ since it returns success for executable tests (e.g., `test -x') when
+ run by root, even if the file permissions don't allow execution.
+
+2. Changes to Readline
+
+a. Fixed a bug that caused directory names in words to be completed to not
+ be dequoted correctly.
+
+3. New Features in Bash
+
+4. New Features in Readline
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.2-beta,
+and the previous version, bash-4.2-alpha.
+
+1. Changes to Bash
+
+a. Fixed a bug that caused the \W prompt string escape to not add a closing
+ NULL.
+
+b. Fixed a bug that caused partially-quoted words that were not subject to
+ word splitting to retained quoted NULLs.
+
+c. Added considerable efficiency speedups when pattern matching in multibyte
+ locales by skipping multibyte character functions where possible.
+
+d. Added considerable speedups to variable expansion when in multibyte locales.
+
+e. Fixed a bug that caused the expansion of $* when there are no positional
+ parameters to cause the shell to dump core when used in a pattern
+ matching context.
+
+f. Fixed a bug that caused variable expansions preceding regular builtins to
+ not change the shell environment during their execution.
+
+2. Changes to Readline
+
+a. Fixed a bug that made an explicit argument of 0 to yank-last-arg behave
+ as if it were a negative argument.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.2-alpha,
+and the previous version, bash-4.1-release.
+
+1. Changes to Bash
+
+a. Fixed a bug in the parser when processing alias expansions containing
+ quoted newlines.
+
+b. Fixed a memory leak in associative array expansion.
+
+c. Fixed a bug that caused quoted here-strings to be requoted when printed.
+
+d. Fixed a bug in arithmetic expansion that caused the index in an array
+ expansion to be evaluated twice under certain circumstances.
+
+e. Fixed several bugs with the expansion and display of variables that have
+ been given attributes but not values and are technically unset.
+
+f. Fixed a bug that caused core dumps when using filename completion that
+ expands to a filename containing a globbing character.
+
+g. Fixed a bug that caused assignment statements preceding a special builtin
+ when running in Posix mode to not persist after the builtin completed
+ when the special builtin was executed in a shell function without any
+ local variables.
+
+h. Fixed a bug that caused a command to remain in the hash table even after
+ `hash command' did not find anything if there was already an existing
+ hashed pathname.
+
+i. Fixed several bugs caused by executing unsafe functions from a signal
+ handler in the cases where a signal handler is executed immediately
+ rather than setting a flag for later execution.
+
+j. Fixed a bug that caused some internal flag variables to be set
+ incorrectly if `read -t' timed out.
+
+k. Fixed a Posix compatibility issue by making sure that a backslash escaping
+ a `}' within a double-quoted ${...} parameter expansion is removed as part
+ of the parameter expansion.
+
+l. Fixed a bug that caused execution of a trap to overwrite PIPESTATUS.
+
+m. Fixed a bug that caused here documents to not be displayed correctly
+ when attached to commands inside compound commands.
+
+n. Fixed a bug that caused the printf builtin to use the wrong precision
+ when using the `*' modifier.
+
+o. Fixed a bug that caused an arriving SIGCHLD to interrupt output functions
+ like those invoked by echo or printf.
+
+p. Changed to use a more robust mechanism than eaccess(2) when test is
+ checking filenames for execution permission.
+
+q. Fixed a bug that caused spurious semicolons to be added into the command
+ history in certain cases.
+
+r. Fixed a bug that caused the shell to free non-allocated memory when
+ unsetting element 0 of an associative array after it was assigned
+ implicitly.
+
+s. Fixed a bug that could cause the shell to dump core if using the `v'
+ vi editing command on a multi-line command.
+
+t. Fixed a bug that left FIFOs opened by process substitutions open long
+ enough to potentially cause file descriptor exhaustion when running a
+ shell function or shell builtin.
+
+u. Fixed a bug that caused the history expansion functions to not recognize
+ process substitution or extended glob patterns as single words.
+
+v. Fixed a bug that caused restricted shells to set a restricted command's
+ exit status incorrectly.
+
+w. Fixed a bug that caused bash to ignore the wrong set of filenames when
+ completing a command using the `complete-filename' readline command.
+
+x. Fixed a bug that caused a -PID argument following a -s sig or -n sig to
+ not be interpreted as a signal specification.
+
+y. Changed posix-mode behavior of a parse error in a `.' script or `eval'
+ command to exit the shell under Posix-specified conditions. Previous
+ versions printed a warning.
+
+z. Fixed a bug in \W prompt expansion that resulted in incorrect expansion
+ in the event of overlapping strings.
+
+aa. Fixed a bug that caused the := parameter expansion operator to return the
+ wrong value as the result of the expansion.
+
+bb. When in Posix mode, a single quote is not treated specially in a
+ double-quoted ${...} expansion, unless the expansion operator is
+ # or % or the non-Posix `//', `^', and `,'. In particular, it does
+ not define a new quoting context. This is from Posix interpretation 221.
+
+cc. Fixed a bug that inadvertently allowed program names containing slashes
+ to be entered into the command hash table.
+
+dd. Fixed a bug that caused the select builtin to incorrectly compute the
+ display width of the arguments in the presence of multibyte characters.
+
+ee. Fixed a bug that caused bash to not change the xtrace file descriptor if
+ BASH_XTRACEFD was found in the shell environment at startup.
+
+ff. Fixed a memory leak in the pattern removal parameter expansion.
+
+gg. Fixed a bug that caused SIGINT to fail to interrupt a nested loop if the
+ loop was in a pipeline.
+
+hh. Fixed a problem in $(...) parsing that caused the parser to add an extra
+ space to a here-document delimiter if the first word contained a `/'.
+
+ii. Fixed a bug that caused functions defined with the `function' reserved
+ word to require braces around the function body.
+
+jj. Fixed a bug that caused bash to dump core when a variable expansion being
+ used as an array subscript failed.
+
+kk. Fixed a bug that caused bash to dump core if the case-modification
+ expansions were used on a variable with a null value.
+
+ll. Fixed a bug that caused partially-quoted strings to be split incorrectly
+ if a variable with a null value was expanded within double quotes.
+
+mm. The pattern substitution word expansion has been sped up dramatically
+ when running in a locale with multibyte characters.
+
+nn. Fixed a bug that caused history -a to not write the correct lines to
+ the history file if all the new lines in the history list were added
+ since the last time the history file was read or written.
+
+oo. Fixed a bug that caused completion of a word with an unclosed `` command
+ substitution to set the prompt incorrectly.
+
+pp. Fixed a bug that caused extended globbing patterns in $HISTIGNORE or
+ $GLOBIGNORE to be incorrectly scanned.
+
+qq. Fixed a bug caused by closing file descriptors 3-20 on shell startup. The
+ shell now sets them to close-on-exec.
+
+rr. Fixed a bug that caused the exit status of `exec file' to be set incorrectly
+ if `file' was a directory.
+
+ss. Fixed a bug in the `.' builtin to make a non-interactive posix-mode shell
+ exit if the file argument to `.' is not found. Prefixing exec with
+ `command' makes the shell not exit. Posix requires this behavior.
+
+tt. Fixed a bug that caused `sh -c 'command exec; exit 1' to hang.
+
+uu. Fixed a bug in $(...) command substitution parsing that caused the shell
+ to treat backslash-newline incorrectly when parsing a comment.
+
+vv. Fixed bug that caused brace expansion sequence generation to misbehave
+ when supplied integers greater than 2**31 - 1.
+
+ww. Fixed a bug that caused failure to save file descriptors for redirections
+ to corrupt shell file descriptors.
+
+xx. Fixed a bug that caused bash-forward-shellword to not correctly handle
+ quoted strings.
+
+2. Changes to Readline
+
+a. Fixed a bug that caused the unconverted filename to be added to the list of
+ completions when the application specified filename conversion functions.
+
+b. Fixed a bug that caused the wrong filename to be passed to opendir when the
+ application has specified a filename dequoting function.
+
+c. Fixed a bug when repeating a character search in vi mode in the case where
+ there was no search to repeat.
+
+d. When show-all-if-ambiguous is set, the completion routines no longer insert
+ a common match prefix that is shorter than the text being completed.
+
+e. The full set of vi editing commands may now be used in callback mode.
+
+f. Fixed a bug that caused readline to not update its idea of the terminal
+ dimensions while running in `no-echo' mode.
+
+h. Fixed a bug that caused readline to dump core if an application called
+ rl_prep_terminal without setting rl_instream.
+
+i. Fixed a bug that caused meta-prefixed characters bound to incremental
+ search forward or backward to not be recognized if they were typed
+ subsequently.
+
+j. The incremental search code treats key sequences that map to the same
+ functions as (default) ^G, ^W, and ^Y as equivalent to those characters.
+
+k. Fixed a bug in menu-complete that caused it to misbehave with large
+ negative argument.
+
+l. Fixed a bug that caused vi-mode yank-last-arg to ring the bell when invoked
+ at the end of the line.
+
+3. New Features in Bash
+
+a. `exec -a foo' now sets $0 to `foo' in an executable shell script without a
+ leading #!.
+
+b. 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.
+
+c. `trap -p' will now show signals ignored at shell startup, though their
+ disposition still cannot be modified.
+
+d. $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences.
+
+e. declare/typeset has a new `-g' option, which creates variables in the
+ global scope even when run in a shell function.
+
+f. test/[/[[ have a new -v variable unary operator, which returns success if
+ `variable' has been set.
+
+g. Posix parsing changes to allow `! time command' and multiple consecutive
+ instances of `!' (which toggle) and `time' (which have no cumulative
+ effect).
+
+h. 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.
+
+j. $((...)) is always parsed as an arithmetic expansion first, instead of as
+ a potential nested command substitution, as Posix requires.
+
+k. A new FUNCNEST variable to allow the user to control the maximum shell
+ function nesting (recursive execution) level.
+
+l. The mapfile builtin now supplies a third argument to the callback command:
+ the line about to be assigned to the supplied array index.
+
+m. The printf builtin has a new %(fmt)T specifier, which allows time values
+ to use strftime-like formatting.
+
+n. There is a new `compat41' shell option.
+
+o. The cd builtin has a new Posix-mandated `-e' option.
+
+p. Negative subscripts to indexed arrays, previously errors, now are treated
+ as offsets from the maximum assigned index + 1.
+
+q. Negative length specifications in the ${var:offset:length} expansion,
+ previously errors, are now treated as offsets from the end of the variable.
+
+r. Parsing change to allow `time -p --'.
+
+s. 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.
+
+t. 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.
+
+u. History expansion no longer expands the `$!' variable expansion.
+
+v. Posix mode shells no longer exit if a variable assignment error occurs
+ with an assignment preceding a command that is not a special builtin.
+
+w. Non-interactive mode shells exit if -u is enabled and an attempt is made
+ to use an unset variable with the % or # expansions, the `//', `^', or
+ `,' expansions, or the parameter length expansion.
+
+x. Posix-mode shells use the argument passed to `.' as-is if a $PATH search
+ fails, effectively searching the current directory. Posix-2008 change.
+
+4. New Features in Readline
+
+a. The history library does not try to write the history filename in the
+ current directory if $HOME is unset. This closes a potential security
+ problem if the application does not specify a history filename.
+
+b. New bindable variable `completion-display-width' to set the number of
+ columns used when displaying completions.
+
+c. New bindable variable `completion-case-map' to cause case-insensitive
+ completion to treat `-' and `_' as identical.
+
+d. There are new bindable vi-mode command names to avoid readline's case-
+ insensitive matching not allowing them to be bound separately.
+
+e. New bindable variable `menu-complete-display-prefix' causes the menu
+ completion code to display the common prefix of the possible completions
+ before cycling through the list, instead of after.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.1-rc,
+and the previous version, bash-4.1-beta.
+
+1. Changes to Bash
+
+a. Fixed a bug that caused printf to not return a partial value when it
+ encountered an error while converting an integer argument.
+
+b. Fixed a bug that caused setting one of the compatNN options to not
+ turn off the others.
+
+c. The (undocumented) --wordexp option is no longer included by default.
+
+d. Fixed a bug in conditional command execution that caused it to not
+ correctly ignore the exit status under certain circumstances.
+
+e. Added a configure-time check for correctly-working asprintf/snprintf.
+
+f. Fixed some problems with line number calculation and display when sourcing
+ a file in an interactive shell.
+
+g. Fixed a bug that caused the shell to crash when using `declare -A foo=bar'.
+
+h. Fixed a bug that caused an off-by-one error when calculating the directories
+ to display with the PROMPT_DIRTRIM option.
+
+2. Changes to Readline
+
+a. Fixed a bug that caused applications using the callback interface to not
+ react to SIGINT (or other signals) until another character arrived.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.1-beta,
+and the previous version, bash-4.1-alpha.
+
+1. Changes to Bash
+
+a. Fixed a bug in mapfile that caused the shell to crash if it was passed the
+ name of an associative array.
+
+b. Fixed a bug that caused the shell to incorrectly split case patterns if
+ they contained characters in $IFS.
+
+c. Fixed a bug that caused the shell to set $? to the wrong value when using
+ a construct ending with a variable assignment with set -x enabled and PS4
+ containing a command substitution.
+
+d. Fixed a bug that caused the shell to read commands incorrectly if an
+ expansion error occurred under certain conditions in a user-specified
+ subshell.
+
+e. Fixed a bug that caused the shell to set $? incorrectly if a parse error
+ occurred in an evaluation context ("eval", trap command, dot script, etc.)
+
+f. Fixed a bug that caused the shell to attempt command substitution
+ completion within a single-quoted string.
+
+g. Fixed a bug that caused the shell to insert an extra single quote during
+ word completion.
+
+h. Fixed a bug that caused the shell to crash if invoked with the environment
+ variable EMACS having a null value.
+
+i. Fixed a bug that caused bash to incorrectly report the presence of new
+ mail in a `maildir' environment.
+
+j. Fixed a bug that caused the shell to not recognize a here-document ending
+ delimiter inside a command substitution.
+
+k. Fixed a bug that caused the shell to crash when a a dynamic array variable
+ was assigned a scalar value.
+
+2. Changes to Readline
+
+3. New Features in Bash
+
+a. The mapfile/readarray builtin no longer stores the commands it invokes via
+ callbacks in the history list.
+
+b. There is a new `compat40' shopt option.
+
+c. 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).
+
+4. New Features in Readline
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.1-alpha,
+and the previous version, bash-4.0-release.
+
+1. Changes to Bash
+
+a. Fixed bugs in the parser involving new parsing of the commands contained
+ in command substitution when the substitution is read.
+
+b. Fixed a bug that caused the shell to dump core when performing programmable
+ completion using a shell function.
+
+c. Fixed a bug in `mapfile' that caused it to invoke callbacks at the wrong
+ time.
+
+d. Fixed a bug that caused the shell to dump core when listing jobs in the
+ `exit' builtin.
+
+e. Fixed several bugs encountered when reading subscripts in associative
+ array assignments and expansions.
+
+f. Fixed a bug that under some circumstances caused an associative array to
+ be converted to an indexed array.
+
+g. Fixed a bug that caused syntax errors and SIGINT interrupts to not set
+ $? to a value > 128.
+
+h. Fixed a bug that caused the shell to remove FIFOs associated with process
+ substitution inside shell functions.
+
+i. Fixed a bug that caused terminal attributes to not be reset when the
+ `read' builtin timed out.
+
+j. Fixed a bug in brace expansion that caused unwanted zero padding of the
+ expanded terms.
+
+k. Fixed a bug that prevented the |& construct from working as intended when
+ used with a simple command with additional redirections.
+
+l. Fixed a bug with the case statment ;& terminator that caused the shell to
+ dereference a NULL pointer.
+
+m. Fixed a bug that caused assignment statements or redirections preceding
+ a simple command name to inhibit alias expansion.
+
+n. Fixed the behavior of `set -u' to conform to the latest Posix interpretation:
+ every expansion of an unset variable except $@ and $* will cause the
+ shell to exit.
+
+o. Fixed a bug that caused double-quoted expansions of $* inside word
+ expansions like ${x#$*} to not expand properly when $IFS is empty.
+
+p. Fixed a bug that caused traps to set $LINENO to the wrong value when they
+ execute.
+
+q. Fixed a bug that caused off-by-one errors when computing history lines in
+ the `fc' builtin.
+
+r. Fixed a bug that caused some terminating signals to not exit the shell
+ quickly enough, forcing the kernel to send the signal (e.g., SIGSEGV)
+ multiple times.
+
+s. Fixed a bug that caused the shell to attempt to add empty lines to the
+ history list when reading here documents.
+
+t. Made some internal changes that dramatically speeds up sequential indexed
+ array access.
+
+u. Fixed a bug that caused the shell to write past the end of a string when
+ completing a double-quoted string ending in a backslash.
+
+v. Fixed a bug that caused the shell to replace too many characters when a
+ pattern match was null in a ${foo//bar} expansion.
+
+w. Fixed bugs in the expansion of ** that caused duplicate directory names
+ and the contents of the current directory to be omitted.
+
+x. Fixed a bug that caused $? to not be set correctly when referencing an
+ unset variable with set -u and set -e enabled.
+
+y. Fixed a bug caused by executing an external program from the DEBUG trap
+ while a pipeline was running. The effect was to disturb the pipeline
+ state, occasionally causing it to hang.
+
+z. Fixed a bug that caused the ** glob expansion to dump core if it
+ encountered an unsearchable directory.
+
+aa. Fixed a bug that caused `command -v' and `command -V' to not honor the
+ path set by the -p option.
+
+bb. Fixed a bug that caused brace expansion to take place too soon in some
+ compound array assignments.
+
+cc. Fixed a bug that caused programmable completion functions' changes to
+ READLINE_POINT to not be reflected back to readline.
+
+dd. Fixed a bug that caused the shell to dump core if a trap was executed
+ during a shell assignment statement.
+
+ee. Fixed an off-by-one error when computing the number of positional
+ parameters for the ${@:0:n} expansion.
+
+ff. Fixed a problem with setting COMP_CWORD for programmable completion
+ functions that could leave it set to -1.
+
+gg. Fixed a bug that caused the ERR trap to be triggered in some cases where
+ `set -e' would not have caused the shell to exit.
+
+hh. Fixed a bug that caused changes made by `compopt' to not persist past the
+ completion function in which compopt was executed.
+
+ii. Fixed a bug that caused the list of hostname completions to not be cleared
+ when HOSTNAME was unset.
+
+jj. Fixed a bug that caused variable expansion in here documents to look in
+ any temporary environment.
+
+kk. Bash and readline can now convert file names between precomposed and
+ decomposed Unicode on Mac OS X ("keyboard" and file system forms,
+ respectively). This affects filename completion (using new
+ rl_filename_rewrite_hook), globbing, and readline redisplay.
+
+ll. The ERR and EXIT traps now see a non-zero value for $? when a parser
+ error after set -e has been enabled causes the shell to exit.
+
+mm. Fixed a bug that in brace expansion that caused zero-prefixed terms to
+ not contain the correct number of digits.
+
+nn. Fixed a bug that caused the shell to free non-allocated memory when
+ unsetting an associative array which had had a value implicitly assigned
+ to index "0".
+
+oo. Fixed a memory leak in the ${!prefix@} expansion.
+
+pp. Fixed a bug that caused printf to not correctly report all write errors.
+
+qq. Fixed a bug that caused single and double quotes to act as delimiters
+ when splitting a command line into words for programmable completion.
+
+rr. Fixed a bug that caused ** globbing that caused **/path/* to match every
+ directory, not just those matching `path'.
+
+ss. Fixed a bug that caused the shell to dump core when running `help' without
+ arguments if the terminal width was fewer than 7 characters.
+
+2. Changes to Readline
+
+a. The SIGWINCH signal handler now avoids calling the redisplay code if
+ one arrives while in the middle of redisplay.
+
+b. Changes to the timeout code to make sure that timeout values greater
+ than one second are handled better.
+
+c. Fixed a bug in the redisplay code that was triggered by a prompt
+ containing invisible characters exactly the width of the screen.
+
+d. Fixed a bug in the redisplay code encountered when running in horizontal
+ scroll mode.
+
+e. Fixed a bug that prevented menu completion from properly completing
+ filenames.
+
+f. Fixed a redisplay bug caused by a multibyte character causing a line to
+ wrap.
+
+g. Fixed a bug that caused key sequences of two characters to not be
+ recognized when a longer sequence identical in the first two characters
+ was bound.
+
+h. Fixed a bug that caused history expansion to be attempted on $'...'
+ single-quoted strings.
+
+i. Fixed a bug that caused incorrect redisplay when the prompt contained
+ multibyte characters in an `invisible' sequence bracketed by \[ and
+ \].
+
+j. Fixed a bug that caused history expansion to short-circuit after
+ encountering a multibyte character.
+
+3. New Features in Bash
+
+a. Here-documents within $(...) command substitutions may once more be
+ delimited by the closing right paren, instead of requiring a newline.
+
+b. Bash's file status checks (executable, readable, etc.) now take file
+ system ACLs into account on file systems that support them.
+
+c. Bash now passes environment variables with names that are not valid
+ shell variable names through into the environment passed to child
+ processes.
+
+d. 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.
+
+e. `printf -v' can now assign values to array indices.
+
+f. New `complete -E' and `compopt -E' options that work on the "empty"
+ completion: completion attempted on an empty command line.
+
+g. 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.
+
+h. When displaying associative arrays, subscripts are now quoted.
+
+i. 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.
+
+j. The [[ and (( commands are now subject to the setting of `set -e' and the
+ ERR trap.
+
+k. The source/. builtin now removes NUL bytes from the file before attempting
+ to parse commands.
+
+l. There is a new configuration option (in config-top.h) that forces bash to
+ forward all history entries to syslog.
+
+m. A new variable $BASHOPTS to export shell options settable using `shopt' to
+ child processes.
+
+n. 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.
+
+p. 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.
+
+q. The < and > operators to the [[ conditional command now do string
+ comparison according to the current locale.
+
+r. Programmable completion now uses the completion for `b' instead of `a'
+ when completion is attempted on a line like: a $(b c.
+
+s. Force extglob on temporarily when parsing the pattern argument to
+ the == and != operators to the [[ command, for compatibility.
+
+t. 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.
+
+u. The read builtin has a new `-N nchars' option, which reads exactly NCHARS
+ characters, ignoring delimiters like newline.
+
+4. New Features in Readline
+
+a. New bindable function: menu-complete-backward.
+
+b. In the vi insertion keymap, C-n is now bound to menu-complete by default,
+ and C-p to menu-complete-backward.
+
+c. When in 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.
+
+d. New bindable 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.
+
+e. New application-settable function: rl_filename_rewrite_hook. Can be used
+ to rewite or modify filenames read from the file system before they are
+ compared to the word to be completed.
+
+f. New bindable 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.
+
+g. 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.
+
+h. New bindable variable: echo-control-characters. If enabled, and the
+ tty ECHOCTL bit is set, controls the echoing of characters corresponding
+ to keyboard-generated signals.
+
+i. New bindable 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.
+
+------------------------------------------------------------------------------
+This document details the changes between this version, bash-4.0-release,
+and the previous version, bash-4.0-rc1.
+
+1. Changes to Bash
+
+a. Changed the message printed when setlocale(3) fails to only include the
+ strerror error text if the call changes errno.
+
+b. Changed trap command execution to reset the line number before running a
+ trap (except DEBUG and RETURN traps).
+
+c. Fixed behavior of case-modifiying word expansions to not work on
+ individual words within a variable's value.
+
+d. Fixed a bug that caused mapfile to not be interruptible when run in an
+ interactive shell.
+
+e. Fixed a bug that caused mapfile to not run callbacks for the first line
+ read.
+
+f. Fixed a bug that caused mapfile to not honor EOF typed in an interactive
+ shell.
+
+g. Fixed the coprocess reaping code to not run straight from a signal handler.
+
+h. Fixed a bug that caused printf -b to ignore the first % conversion specifier
+ in the format string on 64-bit systems.
+
+i. Fixed a bug that caused incorrect word splitting when `:', `=', or `~'
+ appeared in $IFS.
+
+j. Fixed a bug that caused data corruption in the programmable completion code
+ when a shell function called from a completion aborted execution.
+
+k. Fixed a bug that caused the CPU usage reported by the `time' builtin to be
+ capped at 100%.
+
+l. Changed behavior of shell when -e option is in effect to reflect consensus
+ of Posix shell standardization working group.
+
+m. Fixed a bug introduced in bash-4.0-alpha that caused redirections to not
+ be displayed by `type' or `declare' when appearing in functions under
+ certain circumstances.
+
+2. Changes to Readline
+
+a. Fixed a bug that caused !(...) extended glob patterns to inhibit later
+ history expansion.
+
+b. Reworked the signal handling to avoid calling disallowed functions from a
+ signal handler.
+
+3. New Features in Bash
+
+a. `readarray' is now a synonym for `mapfile'.
+------------------------------------------------------------------------------
This document details the changes between this version, bash-4.0-rc1,
and the previous version, bash-4.0-beta2.
------------------------------------------------------------------------------
This document details the changes between this version, bash-4.0-beta,
-and the previous version, bash-4.0-beta.
+and the previous version, bash-4.0-alpha.
1. Changes to Bash
and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT,
respectively.
-cc. There is a new >>& redirection operator, which appends the standard output
+cc. There is a new &>> redirection operator, which appends the standard output
and standard error to the named file.
dd. The parser now understands `|&' as a synonym for `2>&1 |', which redirects