1 This document details the changes between this version, bash-4.3-release, and
2 the previous version, bash-4.3-rc2.
6 a. Only Posix-mode shells should exit on an assignment failure in the
7 temporary environment preceding a special builtin. This is how it's been
10 b. Fixed a bug that caused a failed special builtin to not exit a posix-mode
11 shell if the failing builtin was on the LHS of a && or ||.
13 c. Changed the handling of unquoted backslashes in regular expressions to be
16 d. globstar (**) no longer traverses symbolic links that resolve to
17 directories. This eliminates some duplicate entries.
19 e. Fixed a bug that caused a SIGCHLD trap handler to not be able to change the
22 f. Fixed a bug that caused a crash when -x was enabled and a command
23 contained a printable multibyte (wide) character.
25 g. Fixed a bug that caused an interactive shell without line editing enabled
26 to read invalid data after receiving a SIGINT.
28 h. Fixed a bug that caused command word completion to fail if the directory in
29 $PATH where the completion would be found contained single or double quotes.
31 i. Fixed a bug that caused a shell with -v enabled to print commands in $()
34 2. Changes to Readline
36 a. Fixed a bug that caused `undo' to reference freed memory or null pointers.
38 3. New Features in Bash
40 a. The [[ -v ]] option now understands array references (foo[1]) and returns
41 success if the referenced element has a value.
43 ------------------------------------------------------------------------------
44 This document details the changes between this version, bash-4.3-rc2, and the
45 previous version, bash-4.3-rc1.
49 a. Fixed a bug that left variables set by printf -v marked as invisible.
51 b. Fixed an off-by-one error in a job control warning message.
53 c. Fixed a bug that caused the shell to crash after declaring a nameref variable
56 d. Fixed a bug that caused asynchronous commands to not set $? correctly.
58 e. Fixed a bug that caused out-of-order execution when executing aliases with
59 embedded newlines containing `.' commands.
61 f. Fixed a bug that caused error messages generated by expansion errors in
62 `for' commands to have the wrong line number.
64 g. Fixed a bug that caused the `wait' builtin to not be interruptible in an
65 interactive shell with job control enabled.
67 h. Fixed a bug that caused SIGINT and SIGQUIT to not be trappable in
68 asynchronous subshell commands.
70 i. Bash now requires that the value assigned to a nameref variable be a valid
71 shell identifier (variable name or array reference).
73 j. Converting an existing variable to a nameref variable now turns off the
74 -i/-l/-u/-c attributes.
76 k. Displaying a nameref variable with `declare -p' now displays the nameref
77 variable and its value rather than following the nameref chain.
79 l. Fixed a problem with interrupt handling that caused a second and subsequent
80 SIGINT to be ignored by interactive shells.
82 m. Fixed a bug that caused certain positional parameter and array expansions
83 to mishandle (discard) null positional parameters and array elements.
85 n. The shell no longer blocks receipt of signals while running trap handlers
86 for those signals, and allows most trap handlers to be run recursively
87 (running trap handlers while a trap handler is executing).
89 o. The shell now handles backslashes in regular expression arguments to the
90 [[ command's =~ operator slightly differently, resulting in more
93 2. Changes to Readline
95 a. Fixed a bug that could cause readline to crash and seg fault attempting to
96 expand an empty history entry.
98 b. Fixed a bug that caused a bad entry in the $LS_COLORS variable to abort all
99 color processing but leave color enabled.
101 c. Fixed a bug that caused display problems with multi-line prompts containing
102 invisible characters on multiple lines.
104 d. Fixed a bug that caused effects made by undoing changes to a history line to
107 3. New Features in Bash
109 4. New Features in Readline
111 a. When creating shared libraries on Mac OS X, the pathname written into the
112 library (install_name) no longer includes the minor version number.
113 ------------------------------------------------------------------------------
114 This document details the changes between this version, bash-4.3-rc1, and the
115 previous version, bash-4.3-beta2.
119 a. Fixed a bug in bash completion that caused a tilde to be expanded even if
120 the `direxpand' option was not enabled.
122 b. Fixed a potential bug that could cause corrupted input in interactive shells
123 running without line editing and with `ignoreeof' enabled.
125 c. Fixed a bug that could cause failures when opening pipes back to shells
126 created to run process substitutions.
128 d. Fixed a bug that caused an assignment to TEXTDOMAIN to require TEXTDOMAINDIR
129 to be set in order to actually change the current text domain.
131 e. Changed the way redirections are printed to avoid confusion when the target
132 of an output redirection is a process substitution beginning with `>'.
134 2. Changes to Readline
136 a. Shared library building is now supported on Mac OS X 10.9 (Darwin 13).
138 3. New Features in Bash
140 a. `cd' has a new `-@' option to browse a file's extended attributes on
141 systems that support O_XATTR.
143 4. New Features in Readline
145 a. There are additional default key bindings for MinGW32
147 ------------------------------------------------------------------------------
148 This document details the changes between this version, bash-4.3-beta2, and the
149 previous version, bash-4.3-beta.
153 a. Fixed a bug that caused assignment to an unset variable using a negative
154 subscript to result in a segmentation fault.
156 b. Fixed a bug that caused assignment to a string variable using a negative
157 subscript to use the incorrect index.
159 c. Fixed a bug that caused some strings to be interpreted as invalid
160 extended globbing expressions when used with the help builtin.
162 d. Fixed a bug that caused an attempt to trap a signal whose disposition
163 cannot be changed to reference uninitialized memory.
165 e. Command completion now skips assignment statements preceding a command
166 name and completes the command.
168 f. Fixed a bug that caused `compgen -f' in a non-interactive shell to dump
169 core under certain circumstances.
171 g. Fixed a bug that caused the `read -N' to misbehave when the input stream
174 2. Changes to Readline
176 a. Changed message when an incremental search fails to include "failed" in
177 the prompt and display the entire search string instead of just the last
180 b. Fixed a bug that caused an arrow key typed to an incremental search prompt
181 to process the key sequence incorrectly.
183 c. Additional key bindings for arrow keys on MinGW.
185 3. New Features in Bash
187 a. The help builtin now attempts substring matching (as it did through
188 bash-4.2) if exact string matching fails.
190 b. The fc builtin now interprets -0 as the current command line.
192 c. Completing directory names containing shell variables now adds a trailing
193 slash if the expanded result is a directory.
195 4. New Features in Readline
197 a. rl_change_environment: new application-settable variable that controls
198 whether or not Readline modifies the environment (currently readline
199 modifies only LINES and COLUMNS).
201 ------------------------------------------------------------------------------
202 This document details the changes between this version, bash-4.3-beta, and the
203 previous version, bash-4.3-alpha.
207 a. Fixed a bug in the prompt directory name "trimming" code that caused
208 memory corruption and garbled the results.
210 b. Fixed a bug that caused single quotes that resulted from $'...' quoting
211 in the replacement portion of a double-quoted ${word/pat/rep} expansion
212 to be treated as quote characters.
214 c. Fixed a bug that caused assignment statements preceding a command word to
215 result in assignment statements following a declaration command to not be
216 expanded like assignment statements.
218 d. Fixed a bug with variable search order in the presence of local variables
219 with the same name as variables in the temporary environment supplied to
222 e. Fixed a bug that caused constructs like 1<(2) to be interpreted as process
223 substitutions even in an arithmetic context.
225 f. Fixed several cases where `invisible' variables (variables with attributes
226 but no values, which are technically unset) were treated incorrectly.
228 g. Fixed a bug that caused group commands in pipelines that were not the
229 last element to not run the EXIT trap.
231 h. Fixed a bug that caused `unset -n' to not unset a nameref variable in
234 i. Fixed the nameref circular reference checking to be less strict and only
235 disallow a nameref variable with the same value as its name at the global
238 j. Fixed a bug that caused trap handlers to be executed recursively,
239 corrupting internal data structures.
241 k. Fixed a bug that could result in bash not compiling if certain options were
244 l. Fixed a bug that caused the arithmetic expansion code to attempt variable
245 assignments when operator precedence prohibited them.
247 m. Word expansions like ${foo##bar} now understand indirect variable references.
249 n. Fixed a bug that caused `declare -fp name' to not display a function
252 o. Fixed a bug that caused asynchronous child processes to modify the stdin
253 file pointer when bash was using it to read a script, which modified the
254 parent's value as well.
256 2. Changes to Readline
258 a. Fixed a bug in vi mode that caused the arrow keys to set the saved last
259 vi-mode command to the wrong value.
261 b. Fixed a bug that caused double-quoted strings to be scanned incorrectly
262 when being used as the value of a readline variable assignment.
264 c. Fixed a bug with vi mode that prevented `.' from repeating a command
265 entered on a previous line (command).
267 d. Fixed a bug that could cause completion to core dump if it was interrupted
270 e. Readline now sends the meta-key enable string to the terminal if the
271 terminal has been successfully initialized.
273 f. Readline now calls the signal hook after resizing the terminal when it
276 g. Fixed a bug that could cause the history list code to perform an out-of-
277 bounds array reference if the history list is empty.
279 3. New Features in Bash
281 a. Shells started to run process substitutions now run any trap set on EXIT.
283 b. There is now a configure-time option to enable the globasciiranges option
286 c. The read builtin now checks its first variable argument for validity before
287 trying to read any input.
289 ------------------------------------------------------------------------------
290 This document details the changes between this version, bash-4.3-alpha,
291 and the previous version, bash-4.2-release.
295 a. Fixed several bugs concerning incomplete bracket expressions in filename
296 generation (globbing) patterns.
298 b. Fixed a bug with single quotes and WORD in ${param op WORD} when running
301 c. Fixed a bug that caused the pattern removal and pattern substitution word
302 expansions and case statement word expansion to not match the empty string.
304 d. Fixed a bug that caused the tzset() function to not work after changing
305 the TZ enviroment variable.
307 e. Fixed a bug that caused the RHS of an assignment statement to undergo
308 word splitting when it contained an unquoted $@.
310 f. Fixed bugs that caused the shell to not react to a SIGINT sent while
311 waiting for a child process to exit.
313 g. Bash doesn't try to run things in a signal handler context when it gets a
314 signal (SIGINT/SIGHUP/etc) while reading input using readline but still
315 be responsive to terminating signals.
317 h. Fixed a bug that caused bash to go into an infinite loop if a filename
318 to be matched contained an invalid multibyte character.
320 i. Fixed a bug that caused PS4 to end up being truncated if it is longer
323 j. Fixed a bug that caused brace expansion to not skip over double-quoted
324 command substitution.
326 k. System-specific updates for: DJGPP, HP/UX, Mac OS X
328 l. Fixed a bug in displaying commands that caused redirections to be associated
329 with the wrong part of the command.
331 m. Fixed the coproc cleanup to unset the appropriate shell variables when a
334 n. Fixed a bug that caused `fc' to dump core due to incorrect calculation of
335 the last history entry.
337 o. Added workarounds for FreeBSD's implementation of faccessat/eaccess and
340 p. Fixed a bug that caused the shell to not match patterns containing
343 q. Fixed a bug that could result in doubled error messages when the `printf'
344 builtin got a write error.
346 r. Fixed a bug that caused the shell to not correctly expand words containing
347 multiple consecutive quoted empty strings (""""""aa).
349 s. Fixed a bug that caused the shell to not correctly parse multi-line
350 process substitutions containing comments and quoted strings.
352 t. Fixed a problem with the bash malloc's internal idea of the top of the
353 memory heap that resulted in incorrect decisions to try to reduce the
354 break and give memory back to the kernel.
356 u. There are changes to the expansions peformed on compound array assignments,
357 in an effort to make foo=( [ind1]=bar [ind2]=baz ) identical to
358 foo[ind1]=bar foo[ind2]=baz.
360 v. Bash now reports an error if `read -a name' is used when `name' is an
361 existing associative array.
363 w. Fixed a bug that allowed an attempted assignment to a readonly variable
364 in an arithmetic expression to not return failure.
366 x. Fixed several bugs that caused completion functions to be invoked even when
367 the cursor was before the first word in the command.
369 y. Fixed a bug that caused parsing a command substitution to overwrite the
370 parsing state associated with the complete input line.
372 z. Fixed several bugs with the built-in snprintf replacement and field widths
375 aa. Fixed a bug that caused incorrect offset calculations and input buffer
376 corruption when reading files longer than 2^31 bytes.
378 bb. Fixed several bugs where bash performed arithmetic evaluation in contexts
379 where evaluation is suppressed.
381 cc. Fixed a bug that caused bash to close FIFOs used for process substitution
382 too early when a shell function was executing, but protect against using
383 all file descriptors when the shell functions are invoked inside loops.
385 dd. Added checks for printable (and non-printable) multibyte characters for
386 use in error messages.
388 ee. Fixed a bug that caused ^O (operate-and-get-next) to not work correctly
389 at the end of the history list.
391 ff. Fixed a bug that caused command-oriented history to incorrectly combine
392 here documents into one line.
394 gg. Fixed a bug that caused importing SHELLOPTS from the environment into a
395 Posix-mode shell to print an error message and refuse to parse it.
397 hh. Fixed a bug that caused the shell to delete an extra history entry when
400 ii. Fixed a bug that caused floating-point exceptions and overflow errors
401 for the / and % arithmetic operators when using INTMAX_MIN and -1.
403 jj. Fixed a bug that caused parsing errors when reading an arithmetic for
404 loop inside a command substitution.
406 kk. Fixed a bug that caused a readonly function to be unset when unset was
407 called without the -f or -v option.
409 ll. Fixed several bugs in the code that quotes characters special to regular
410 expressions when used in a quoted string on the RHS of the =~ operator
413 mm. Fixed a bug that caused redirections to fail because the file descriptor
414 limit was set to a value less than 10.
416 nn. Fixed a bug that caused the `read' builtin to execute code in a signal
417 handler context if read timed out.
419 oo. Fixed a bug that caused extended globbing patterns to not match files
420 beginning with `.' correctly when a `.' was explicitly supplied in the
423 pp. Fixed a bug that caused key sequences longer than two characters to not
424 work when used with `bind -x'.
426 qq. Fixed a bug that resulted in redefined functions having the wrong source
427 file names in BASH_SOURCE.
429 rr. Fixed a bug that caused the read builtin to assign null strings to variables
430 when using `read -N', which caused core dumps when referenced
432 ss. Fixed a bug that caused `bash -m script' to not enable job control while
435 tt. Fixed a bug that caused `printf -v var' to dump core when used with the
438 uu. Fixed a bug that caused the shell to exit with the wrong status if -e was
439 active and the shell exited on a substitution error.
441 vv. Fixed a bug that caused the shell to seg fault if an array variable with
442 the same name as an existing associative array was implicitly created by
443 an assignment (declare a[n]=b).
445 ww. Fixed a bug that caused a redirection to misbehave if the number specified
446 for a file descriptor overflows an intmax_t.
448 xx. Fixed several bugs with the handling of valid and invalid unicode character
449 values when used with the \u and \U escape sequences to printf and $'...'.
451 yy. Fixed a bug that caused tildes to not be escaped in expanded filenames,
452 making them subject to later expansion.
454 zz. When using the pattern substitution word expansion, bash now runs the
455 replacement string through quote removal, since it allows quotes in that
456 string to act as escape characters. This is not backwards compatible, so
457 it can be disabled by setting the bash compatibility mode to 4.2.
459 aaa. Fixed the rest of the cases where the shell runs non-allowed code in a
460 signal handler context.
462 bbb. Fixed a bug that caused spurious DEL characters (\177) to appear in
463 double-quoted expansion where the RHS is evaluated to the empty string.
465 ccc. Fixed a bug that caused the use of the shell's internal random number
466 generator for temporary file names to perturb the random number
469 ddd. Fixed several bugs that caused `declare -g' to not set the right global
470 variables or to misbehave when declaring global indexed arrays.
472 eee. Fixed a logic bug that caused extended globbing in a multibyte locale to
473 cause failures when using the pattern substititution word expansions.
475 fff. Fixed a bug that caused the `lastpipe' option to corrupt the file
476 descriptor used to read the script.
478 ggg. Fixed a bug that causes the shell to delete DEL characters in the
479 expanded value of variables used in the same quoted string as variables
480 that expand to nothing.
482 hhh. Fixed a bug that caused the shell to assign the wrong value from an
483 assignment like (( x=7 )) when `x' was an existing array variable.
485 iii. Fixed a bug that caused the shell to misbehave when generating sequences
486 and the boundary values overflow an intmax_t.
488 jjj. Fixed a bug caused expansion errors if an expansion of "$@" appeared
489 next to another expansion (e.g.. "${@}${x}").
491 kkk. Fixed a potential buffer overflow bug when performing /dev/fd expansion.
493 lll. Fixed a bug that resulted in an extra semicolon being added to compound
494 assignments when they were added to the history list.
496 mmm. Fixed a bug that caused mapfile to read one extra line from the input.
498 nnn. Fixed a bug that caused the mail checking code to use uninitialized
501 ooo. Fixed a bug that prevented history timestamps from being saved if the
502 history comment character is unset.
504 ppp. Fixed a bug that caused the case-modifying expansions to not work with
505 multibyte characters.
507 qqq. Fixed a bug that caused the edit-and-execute bindable readline command
508 to see the wrong data if invoked in the middle of a multi-line quoted
511 rrr. Fixed a bug that resulted in the shell returning the wrong exit status
512 for a background command on systems that recycle PIDs very quickly.
514 sss. Fixed a bug that caused asynchronous group commands to not run any EXIT
515 trap defined in the body of the command.
517 ttt. Fixed a bug that caused `eval "... ; return"' to not clean up properly.
519 uuu. Fixed a bug that caused the shell to dump core if `read' reads an escaped
520 IFS whitespace character.
522 vvv. Fixed a bug that caused BASH_COMMAND to be set to an incorrect value when
523 executing a (...) subshell.
525 www. Fixed a couple of pointer aliasing bugs with the token string in arithmetic
528 xxx. Fixed a bug with parsing multi-line command substitutions when reading
529 the `do' keyword followed by whitespace.
531 yyy. Fixed a bug that caused the shell to seg fault if the time given to the
532 printf %(...)T format overflowed the value accepted by localtime(3).
534 zzz. Fixed a problem with displaying help topics in two columns when the
535 translated text contained multibyte characters.
537 aaaa. Fixed a bug with the extended globbing pattern matcher where a `*' was
538 followed by a negated extended glob pattern.
540 bbbb. Fixed a race condition with short-lived coproc creation and reaping that
541 caused the child process to be reaped before the various coproc shell
542 variables were initialized.
544 cccc. Fixed a bug where turning off `errexit' in command substitution subshells
545 was not reflected in $SHELLOPTS.
547 dddd. Partially fixed an inconsistency in how the shell treated shell
548 functions run from an EXIT trap.
550 eeee. Fixed a bug in how the shell invalidated FIFOs used for process
551 substitution when executing a pipeline (once rather than in every child).
553 ffff. Fixed a bug that occurred when expanding a special variable ($@, $*)
554 within double quotes and the expansion resulted in an empty string.
556 gggg. Fixed bugs with executing a SIGCHLD trap handler to make sure that it's
557 executed once per exited child.
559 hhhh. Fixed a bug that caused `declare' and `test' to find variables that
560 had been given attributes but not assigned values. Such variables are
563 iiii. Fixed a bug that caused commands in process substitutions to not look in
564 the local temporary environment when performing word expansions.
566 jjjj. Fixed several problems with globstar expansions (**/**) returning null
567 filenames and multiple instances of the same pathname.
569 kkkk. Fixed an oversight that did not allow the exit status of `coproc' to
570 be inverted using `!'.
572 llll. Fixed a bug that caused the -e option to be re-enabled using `set -e'
573 even when executing in a context where -e is ignored.
575 mmmm. Fixed a (mostly theoretical) bug with input lines longer than SIZE_MAX.
577 nnnn. Fixed a bug that could result in double evaluation of command
578 substitutions when they appear in failed redirections.
580 oooo. Fixed a bug that could cause seg faults during `mapfile' callbacks if
581 the callback unsets the array variable mapfile is using.
583 pppp. Fixed several problems with variable assignments using ${var:=value}
584 when the variable assignment is supposed to have side effects.
586 qqqq. Fixed a bug that caused a failure of an assignment statement preceding a
587 builtin caused the next invocation of a special builtin to exit the shell.
589 rrrr. Fixed several problems with IFS when it appears in the temporary environment
590 and is used in redirections.
592 ssss. Fixed a problem that caused IFS changes using ${IFS:=value} to modify
593 how preceding expansions were split.
595 tttt. Fixed a problem that caused subshells to not run an EXIT trap they set.
597 uuuu. Fixed a problem that caused shells started in posix mode to attempt to
598 import shell functions with invalid names from the environment. We now
601 vvvv. Worked around a kernel problem that caused SIGCHLD to interrupt open(2)
602 on a FIFO used for process substitution, even if the SIGCHLD handler was
603 installed with the SA_RESTART flag.
605 wwww. Fixed a problem that resulted in inconsistent expansion of $* and ${a[*]}.
607 xxxx. Fixed a problem that caused `read -t' to crash when interrupted by
610 yyyy. Fixed a problem that caused pattern removal to fail randomly because the
611 pattern matcher read beyond the end of a string.
613 zzzz. Fixed a bug that caused core dumps when shell functions tried to create
614 local shadow copies of special variables like GROUPS.
616 aaaaa. Fixed a bug that caused SIGTERM to be occasionally lost by children of
617 interactive shells when it arrived before the child process reset the
618 handler from SIG_DFL.
620 bbbbb. Fixed a bug that caused redirections like <&n- to leave file descriptor
621 n closed if executed with a builtin command.
623 ccccc. Fixed a bug that caused incorrect completion quoting when completing a
624 word containing a globbing character with `show-all-if-ambiguous' set.
626 ddddd. Fixed a bug that caused printf's %q format specifier not to quote a
627 tilde even if it appeared in a location where it would be subject to
630 2. Changes to Readline
632 a. Fixed a bug that did not allow the `dd', `cc', or `yy' vi editing mode
633 commands to work on the entire line.
635 b. Fixed a bug that caused redisplay problems with prompts longer than 128
636 characters and history searches.
638 c. Fixed a bug that caused readline to try and run code to modify its idea
639 of the screen size in a signal handler context upon receiving a SIGWINCH.
641 d. Fixed a bug that caused the `meta' key to be enabled beyond the duration
642 of an individual call top readline().
644 e. Added a workaround for a wcwidth bug in Mac OS X that caused readline's
645 redisplay to mishandle zero-width combining characters.
647 f. Fixed a bug that caused readline to `forget' part of a key sequence when
648 a multiple-key sequence caused it to break out of an incremental search.
650 g. Fixed bugs that caused readline to execute code in a signal handler
651 context if interrupted while reading from the file system during completion.
653 h. Fixed a bug that caused readline to `forget' part of a key sequence when
654 reading an unbound multi-character key sequence.
656 i. Fixed a bug that caused Readline's signal handlers to be installed beyond
657 the bounds of a single call to readline().
659 j. Fixed a bug that caused the `.' command to not redo the most recent `R'
662 k. Fixed a bug that caused ignoring case in completion matches to result in
663 readline using the wrong match.
665 l. Paren matching now works in vi insert mode.
667 m. Fix menu-completion to make show-all-if-ambiguous and menu-complete-display-prefix
670 n. Fixed a bug that didn't allow the `cc', `dd', or `yy' commands to be redone
673 o. Fixed a bug that caused the filename comparison code to not compare
674 multibyte characters correctly when using case-sensitive or case-mapping
677 p. Fixed the input reading loop to call the input hook function only when there
678 is no terminal input available.
680 q. Fixed a bug that caused binding a macro to a multi-character key sequence
681 where the sequence and macro value share a common prefix to not perform
682 the macro replacement.
684 r. Fixed several redisplay errors with multibyte characters and prompts
685 containing invisible characters when using horizontal scrolling.
687 s. Fixed a bug that caused redisplay errors when trying to overwrite
688 existing characters using multibyte characters.
690 3. New Features in Bash
692 a. The `helptopic' completion action now maps to all the help topics, not just
695 b. The `help' builtin no longer does prefix substring matching, so `help read'
696 does not match `readonly'.
698 c. The shell can be compiled to not display a message about processes that
699 terminate due to SIGTERM.
701 d. Non-interactive shells now react to the setting of checkwinsize and set
702 LINES and COLUMNS after a foreground job exits.
704 e. There is a new shell option, `globasciiranges', which, when set to on,
705 forces globbing range comparisons to use character ordering as if they
706 were run in the C locale.
708 f. There is a new shell option, `direxpand', which makes filename completion
709 expand variables in directory names in the way bash-4.1 did.
711 g. In Posix mode, the `command' builtin does not change whether or not a
712 builtin it shadows is treated as an assignment builtin.
714 h. The `return' and `exit' builtins accept negative exit status arguments.
716 i. The word completion code checks whether or not a filename containing a
717 shell variable expands to a directory name and appends `/' to the word
718 as appropriate. The same code expands shell variables in command names
719 when performing command completion.
721 j. In Posix mode, it is now an error to attempt to define a shell function
722 with the same name as a Posix special builtin.
724 k. When compiled for strict Posix conformance, history expansion is disabled
727 l. The history expansion character (!) does not cause history expansion when
728 followed by the closing quote in a double-quoted string.
730 m. `complete' and its siblings compgen/compopt now takes a new `-o noquote'
731 option to inhibit quoting of the completions.
733 n. Setting HISTSIZE to a value less than zero causes the history list to be
734 unlimited (setting it 0 zero disables the history list).
736 o. Setting HISTFILESIZE to a value less than zero causes the history file size
737 to be unlimited (setting it to 0 causes the history file to be truncated
740 p. The `read' builtin now skips NUL bytes in the input.
742 q. There is a new `bind -X' option to print all key sequences bound to Unix
745 r. When in Posix mode, `read' is interruptible by a trapped signal. After
746 running the trap handler, read returns 128+signal and throws away any
747 partially-read input.
749 s. The command completion code skips whitespace and assignment statements
750 before looking for the command name word to be completed.
752 t. The build process has a new mechanism for constructing separate help files
753 that better reflects the current set of compilation options.
755 u. The -nt and -ot options to test now work with files with nanosecond
756 timestamp resolution.
758 v. The shell saves the command history in any shell for which history is
759 enabled and HISTFILE is set, not just interactive shells.
761 w. The shell has `nameref' variables and new -n(/+n) options to declare and
762 unset to use them, and a `test -R' option to test for them.
764 x. The shell now allows assigning, referencing, and unsetting elements of
765 indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which
766 count back from the last element of the array.
768 y. The {x}<word redirection feature now allows words like {array[ind]} and
769 can use variables with special meanings to the shell (e.g., BASH_XTRACEFD).
771 z. There is a new CHILD_MAX special shell variable; its value controls the
772 number of exited child statues the shell remembers.
774 aa. There is a new configuration option (--enable-direxpand-default) that
775 causes the `direxpand' shell option to be enabled by default.
777 bb. Bash does not do anything special to ensure that the file descriptor
778 assigned to X in {x}<foo remains open after the block containing it
781 cc. The `wait' builtin has a new `-n' option to wait for the next child to
784 dd. The `printf' %(...)T format specifier now uses the current time if no
785 argument is supplied.
787 ee. There is a new variable, BASH_COMPAT, that controls the current shell
790 ff. The `popd' builtin now treats additional arguments as errors.
792 gg. The brace expansion code now treats a failed sequence expansion as a
793 simple string and will continue to expand brace terms in the remainder
796 4. New Features in Readline
798 a. Readline is now more responsive to SIGHUP and other fatal signals when
799 reading input from the terminal or performing word completion but no
800 longer attempts to run any not-allowable functions from a signal handler
803 b. There are new bindable commands to search the history for the string of
804 characters between the beginning of the line and the point
805 (history-substring-search-forward, history-substring-search-backward)
807 c. Readline allows quoted strings as the values of variables when setting
808 them with `set'. As a side effect, trailing spaces and tabs are ignored
809 when setting a string variable's value.
811 d. The history library creates a backup of the history file when writing it
812 and restores the backup on a write error.
814 e. New application-settable variable: rl_filename_stat_hook: a function called
815 with a filename before using it in a call to stat(2). Bash uses it to
816 expand shell variables so things like $HOME/Downloads have a slash
819 f. New bindable function `print-last-kbd-macro', prints the most-recently-
820 defined keyboard macro in a reusable format.
822 g. New user-settable variable `colored-stats', enables use of colored text
823 to denote file types when displaying possible completions (colored analog
826 h. New user-settable variable `keyseq-timout', acts as an inter-character
827 timeout when reading input or incremental search strings.
829 i. New application-callable function: rl_clear_history. Clears the history list
830 and frees all readline-associated private data.
832 j. New user-settable variable, show-mode-in-prompt, adds a characters to the
833 beginning of the prompt indicating the current editing mode.
835 k. New application-settable variable: rl_input_available_hook; function to be
836 called when readline needs to check whether there is data available on its
837 input source. The default hook checks rl_instream.
839 l. Readline calls an application-set event hook (rl_signal_event_hook) after
840 it gets a signal while reading input (read returns -1/EINTR but readline
841 does not handle the signal immediately) to allow the application to handle
842 or otherwise note it. Not currently called for SIGHUP or SIGTERM.
844 m. If the user-settable variable `history-size' is set to a value less than
845 0, the history list size is unlimited.