]> git.ipfire.org Git - thirdparty/bash.git/blob - NEWS
62d22127fcad336e59c5e5067567d5912ff5b8a9
[thirdparty/bash.git] / NEWS
1 This is a terse description of the new features added to bash-5.2 since
2 the release of bash-5.1. As always, the manual page (doc/bash.1) is
3 the place to look for complete descriptions.
4
5 1. New Features in Bash
6
7 a. The bash malloc returns memory that is aligned on 16-byte boundaries.
8
9 b. There is a new internal timer framework used for read builtin timeouts.
10
11 c. Rewrote the command substitution parsing code to call the parser recursively
12 and rebuild the command string from the parsed command. This allows better
13 syntax checking and catches errors much earlier. Along with this, if
14 command substitution parsing completes with here-documents remaining to be
15 read, the shell prints a warning message and reads the here-document bodies
16 from the current input stream.
17
18 d. The `ulimit' builtin now treats an operand remaining after all of the options
19 and arguments are parsed as an argument to the last command specified by
20 an option. This is for POSIX compatibility.
21
22 e. Here-document parsing now handles $'...' and $"..." quoting when reading the
23 here-document body.
24
25 f. The `shell-expand-line' and `history-and-alias-expand-line' bindable readline
26 commands now understand $'...' and $"..." quoting.
27
28 g. There is a new `spell-correct-word' bindable readline command to perform
29 spelling correction on the current word.
30
31 h. The `unset' builtin now attempts to treat arguments as array subscripts
32 without parsing or expanding the subscript, even when `assoc_expand_once'
33 is not set.
34
35 i. There is a default value for $BASH_LOADABLES_PATH in config-top.h.
36
37 j. Associative array assignment and certain instances of referencing (e.g.,
38 `test -v' now allow `@' and `*' to be used as keys.
39
40 k. Bash attempts to expand indexed array subscripts only once when executing
41 shell constructs and word expansions.
42
43 l. The `unset' builtin allows a subscript of `@' or `*' to unset a key with
44 that value for associative arrays instead of unsetting the entire array
45 (which you can still do with `unset arrayname'). For indexed arrays, it
46 removes all elements of the array without unsetting it (like `A=()').
47
48 m. Additional builtins (printf/test/read/wait) do a better job of not
49 parsing array subscripts if array_expand_once is set.
50
51 n. New READLINE_ARGUMENT variable set to numeric argument for readline commands
52 defined using `bind -x'.
53
54 o. The new `varredir_close' shell option causes bash to automatically close
55 file descriptors opened with {var}<fn and other styles of varassign
56 redirection unless they're arguments to the `exec' builtin.
57
58 p. The `$0' special parameter is now set to the name of the script when running
59 any (non-interactive) startup files such as $BASH_ENV.
60
61 q. The `enable' builtin tries to load a loadable builtin using the default
62 search path if `enable name' (without any options) attempts to enable a
63 non-existent builtin.
64
65 r. The `printf' builtin has a new format specifier: %Q. This acts like %q but
66 applies any specified precision to the original unquoted argument, then
67 quotes and outputs the result.
68
69 s. The new `noexpand_translations' option controls whether or not the translated
70 output of $"..." is single-quoted.
71
72 t. There is a new parameter transformation operator: @k. This is like @K, but
73 expands the result to separate words after word splitting.
74
75 u. There is an alternate array implementation, selectable at `configure' time,
76 that optimizes access speed over memory use (use the new configure
77 --enable-alt-array-implementation option).
78
79 v. If an [N]<&WORD- or [N]>&WORD- redirection has WORD expand to the empty
80 string, treat the redirection as [N]<&- or [N]>&- and close file descriptor
81 N (default 0).
82
83 w. Invalid parameter transformation operators are now invalid word expansions,
84 and so cause fatal errors in non-interactive shells.
85
86 x. New shell option: patsub_replacement. When enabled, a `&' in the replacement
87 string of the pattern substitution expansion is replaced by the portion of
88 the string that matched the pattern. Backslash will escape the `&' and
89 insert a literal `&'.
90
91 y. `command -p' no longer looks in the hash table for the specified command.
92
93 z. The new `--enable-translatable-strings' option to `configure' allows $"..."
94 support to be compiled in or out.
95
96 aa. The new `globskipdots' shell option forces pathname expansion never to
97 return `.' or `..' unless explicitly matched. It is enabled by default.
98
99 bb. Array references using `@' and `*' that are the value of nameref variables
100 (declare -n ref='v[@]' ; echo $ref) no longer cause the shell to exit if
101 set -u is enabled and the array (v) is unset.
102
103 cc. There is a new bindable readline command name:
104 `vi-edit-and-execute-command'.
105
106 dd. In posix mode, the `printf' builtin checks for the `L' length modifier and
107 uses long double for floating point conversion specifiers if it's present,
108 double otherwise.
109
110 ee. The `globbing' completion code now takes the `globstar' option into account.
111
112 ff. `suspend -f' now forces the shell to suspend even if job control is not
113 currently enabled.
114
115 gg. Since there is no `declare -' equivalent of `local -', make sure to use
116 `local -' in the output of `local -p'.
117
118 2. New Features in Readline
119
120 a. There is now an HS_HISTORY_VERSION containing the version number of the
121 history library for applications to use.
122
123 b. History expansion better understands multiple history expansions that may
124 contain strings that would ordinarily inhibit history expansion (e.g.,
125 `abc!$!$').
126
127 c. There is a new framework for readline timeouts, including new public
128 functions to set timeouts and query how much time is remaining before a
129 timeout hits, and a hook function that can trigger when readline times
130 out. There is a new state value to indicate a timeout.
131
132 d. Automatically bind termcap key sequences for page-up and page-down to
133 history-search-backward and history-search-forward, respectively.
134
135 e. There is a new `fetch-history' bindable command that retrieves the history
136 entry corresponding to its numeric argument. Negative arguments count back
137 from the end of the history.
138
139 f. `vi-undo' is now a bindable command.
140
141 g. There is a new option: `enable-active-region'. This separates control of
142 the active region and bracketed-paste. It has the same default value as
143 bracketed-paste, and enabling bracketed paste enables the active region.
144 Users can now turn off the active region while leaving bracketed paste
145 enabled.
146
147 h. rl_completer_word_break_characters is now `const char *' like
148 rl_basic_word_break_characters.
149
150 i. Readline looks in $LS_COLORS for a custom filename extension
151 (*.readline-colored-completion-prefix) and uses that as the default color
152 for the common prefix displayed when `colored-completion-prefix' is set.
153
154 j. Two new bindable string variables: active-region-start-color and
155 active-region-end-color. The first sets the color used to display the
156 active region; the second turns it off. If set, these are used in place
157 of terminal standout mode.
158
159 k. New readline state (RL_STATE_EOF) and application-visible variable
160 (rl_eof_found) to allow applications to detect when readline reads EOF
161 before calling the deprep-terminal hook.
162
163 l. There is a new configuration option: --with-shared-termcap-library, which
164 forces linking the shared readline library with the shared termcap (or
165 curses/ncurses/termlib) library so applications don't have to do it.
166
167 m. Readline now checks for changes to locale settings (LC_ALL/LC_CTYPE/LANG)
168 each time it is called, and modifies the appropriate locale-specific display
169 and key binding variables when the locale changes.
170
171 -------------------------------------------------------------------------------
172 This is a terse description of the new features added to bash-5.1 since
173 the release of bash-5.0. As always, the manual page (doc/bash.1) is
174 the place to look for complete descriptions.
175
176 1. New Features in Bash
177
178 a. `bind -x' now supports different bindings for different editing modes and
179 keymaps.
180
181 b. Bash attempts to optimize the number of times it forks when executing
182 commands in subshells and from `bash -c'.
183
184 c. Here documents and here strings now use pipes for the expanded document if
185 it's smaller than the pipe buffer size, reverting to temporary files if it's
186 larger.
187
188 d. There are new loadable builtins: mktemp, accept, mkfifo, csv, cut/lcut
189
190 e. In posix mode, `trap -p' now displays signals whose disposition is SIG_DFL
191 and those that were SIG_IGN when the shell starts.
192
193 f. The shell now expands the history number (e.g., in PS1) even if it is not
194 currently saving commands to the history list.
195
196 g. `read -e' may now be used with arbitrary file descriptors (`read -u N').
197
198 h. The `select' builtin now runs traps if its internal call to the read builtin
199 is interrupted by a signal.
200
201 i. SRANDOM: a new variable that expands to a 32-bit random number that is not
202 produced by an LCRNG, and uses getrandom/getentropy, falling back to
203 /dev/urandom or arc4random if available. There is a fallback generator if
204 none of these are available.
205
206 j. shell-transpose-words: a new bindable readline command that uses the same
207 definition of word as shell-forward-word, etc.
208
209 k. The shell now adds default bindings for shell-forward-word,
210 shell-backward-word, shell-transpose-words, and shell-kill-word.
211
212 l. Bash now allows ARGV0 appearing in the initial shell environment to set $0.
213
214 m. If `unset' is executed without option arguments, bash tries to unset a shell
215 function if a name argument cannot be a shell variable name because it's not
216 an identifier.
217
218 n. The `test -N' operator uses nanosecond timestamp granularity if it's
219 available.
220
221 o. Bash posix mode now treats assignment statements preceding shell function
222 definitions the same as in its default mode, since POSIX has changed and
223 no longer requires those assignments to persist after the function returns
224 (POSIX interp 654).
225
226 p. BASH_REMATCH is no longer readonly.
227
228 q. wait: has a new -p VARNAME option, which stores the PID returned by `wait -n'
229 or `wait' without arguments.
230
231 r. Sorting the results of pathname expansion now uses byte-by-byte comparisons
232 if two strings collate equally to impose a total order; the result of a
233 POSIX interpretation.
234
235 s. Bash now allows SIGINT trap handlers to execute recursively.
236
237 t. Bash now saves and restores state around setting and unsetting posix mode,
238 instead of having unsetting posix mode set a known state.
239
240 u. Process substitution is now available in posix mode.
241
242 v. READLINE_MARK: a new variable available while executing commands bound with
243 `bind -x', contains the value of the mark.
244
245 w. Bash removes SIGCHLD from the set of blocked signals if it's blocked at shell
246 startup.
247
248 x. `test -v N' can now test whether or not positional parameter N is set.
249
250 y. `local' now honors the `-p' option to display all local variables at the
251 current context.
252
253 z. The `@a' variable transformation now prints attributes for unset array
254 variables.
255
256 aa. The `@A' variable transformation now prints a declare command that sets a
257 variable's attributes if the variable has attributes but is unset.
258
259 bb. `declare' and `local' now have a -I option that inherits attributes and
260 value from a variable with the same name at a previous scope.
261
262 cc. When run from a -c command, `jobs' now reports the status of completed jobs.
263
264 dd. New `U', `u', and `L' parameter transformations to convert to uppercase,
265 convert first character to uppercase, and convert to lowercase,
266 respectively.
267
268 ee. PROMPT_COMMAND: can now be an array variable, each element of which can
269 contain a command to be executed like a string PROMPT_COMMAND variable.
270
271 ff. `ulimit' has a -R option to report and set the RLIMIT_RTTIME resource.
272
273 gg. Associative arrays may be assigned using a list of key-value pairs within
274 a compound assignment. Compound assignments where the words are not of
275 the form [key]=value are assumed to be key-value assignments. A missing or
276 empty key is an error; a missing value is treated as NULL. Assignments may
277 not mix the two forms.
278
279 hh. New `K' parameter transformation to display associative arrays as key-
280 value pairs.
281
282 ii. Writing history to syslog now handles messages longer than the syslog max
283 length by writing multiple messages with a sequence number.
284
285 jj. SECONDS and RANDOM may now be assigned using arithmetic expressions, since
286 they are nominally integer variables. LINENO is not an integer variable.
287
288 kk. Bash temporarily suppresses the verbose option when running the DEBUG trap
289 while running a command from the `fc' builtin.
290
291 ll. `wait -n' now accepts a list of job specifications as arguments and will
292 wait for the first one in the list to change state.
293
294 mm. The associative array implementation can now dynamically increase the
295 size of the hash table based on insertion patterns.
296
297 nn. HISTFILE is now readonly in a restricted shell.
298
299 oo. The bash malloc now returns memory that is 16-byte aligned on 64-bit
300 systems.
301
302 pp. If the hash builtin is listing hashed filenames portably, don't print
303 anything if the table is empty.
304
305 qq. GLOBIGNORE now ignores `.' and `..' as a terminal pathname component.
306
307 rr. Bash attempts to optimize away forks in the last command in a function body
308 under appropriate circumstances.
309
310 ss. The globbing code now uses fnmatch(3) to check collation elements (if
311 available) even in cases without multibyte characters.
312
313 tt. The `fg' and `bg' builtins now return an error in a command substitution
314 when asked to restart a job inherited from the parent shell.
315
316 uu. The shell now attempts to unlink all FIFOs on exit, whether a consuming
317 process has finished with them or not.
318
319 vv. There is a new contributed loadable builtin: asort.
320
321 2. New Features in Readline
322
323 a. If a second consecutive completion attempt produces matches where the first
324 did not, treat it as a new completion attempt and insert a match as
325 appropriate.
326
327 b. Bracketed paste mode works in more places: incremental search strings, vi
328 overstrike mode, character search, and reading numeric arguments.
329
330 c. Readline automatically switches to horizontal scrolling if the terminal has
331 only one line.
332
333 d. Unbinding all key sequences bound to a particular readline function now
334 descends into keymaps for multi-key sequences.
335
336 e. rl-clear-display: new bindable command that clears the screen and, if
337 possible, the scrollback buffer (bound to emacs mode M-C-l by default).
338
339 f. New active mark and face feature: when enabled, it will highlight the text
340 inserted by a bracketed paste (the `active region') and the text found by
341 incremental and non-incremental history searches. This is tied to bracketed
342 paste and can be disabled by turning off bracketed paste.
343
344 g. Readline sets the mark in several additional commands.
345
346 h. Bracketed paste mode is enabled by default.
347
348 i. Readline tries to take advantage of the more regular structure of UTF-8
349 characters to identify the beginning and end of characters when moving
350 through the line buffer.
351
352 j. The bindable operate-and-get-next command (and its default bindings) are
353 now part of readline instead of a bash-specific addition.
354
355 k. The signal cleanup code now blocks SIGINT while processing after a SIGINT.
356
357 -------------------------------------------------------------------------------
358 This is a terse description of the new features added to bash-5.0 since
359 the release of bash-4.4. As always, the manual page (doc/bash.1) is
360 the place to look for complete descriptions.
361
362 1. New Features in Bash
363
364 a. The `wait' builtin can now wait for the last process substitution created.
365
366 b. There is an EPOCHSECONDS variable, which expands to the time in seconds
367 since the Unix epoch.
368
369 c. There is an EPOCHREALTIME variable, which expands to the time in seconds
370 since the Unix epoch with microsecond granularity.
371
372 d. New loadable builtins: rm, stat, fdflags.
373
374 e. BASH_ARGV0: a new variable that expands to $0 and sets $0 on assignment.
375
376 f. When supplied a numeric argument, the shell-expand-line bindable readline
377 command does not perform quote removal and suppresses command and process
378 substitution.
379
380 g. `history -d' understands negative arguments: negative arguments offset from
381 the end of the history list.
382
383 h. The `name' argument to the `coproc' reserved word now undergoes word
384 expansion, so unique coprocs can be created in loops.
385
386 i. A nameref name resolution loop in a function now resolves to a variable by
387 that name in the global scope.
388
389 j. The `wait' builtin now has a `-f' option, which signifies to wait until the
390 specified job or process terminates, instead of waiting until it changes
391 state.
392
393 k. There is a define in config-top.h that allows the shell to use a static
394 value for $PATH, overriding whatever is in the environment at startup, for
395 use by the restricted shell.
396
397 l. Process substitution does not inherit the `v' option, like command
398 substitution.
399
400 m. If a non-interactive shell with job control enabled detects that a foreground
401 job died due to SIGINT, it acts as if it received the SIGINT.
402
403 n. The SIGCHLD trap is run once for each exiting child process even if job
404 control is not enabled when the shell is in Posix mode.
405
406 o. A new shopt option: localvar_inherit; if set, a local variable inherits the
407 value of a variable with the same name at the nearest preceding scope.
408
409 p. `bind -r' now checks whether a key sequence is bound before binding it to
410 NULL, to avoid creating keymaps for a multi-key sequence.
411
412 q. A numeric argument to the line editing `operate-and-get-next' command
413 specifies which history entry to use.
414
415 r. The positional parameters are now assigned before running the shell startup
416 files, so startup files can use $@.
417
418 s. There is a compile-time option that forces the shell to disable the check
419 for an inherited OLDPWD being a directory.
420
421 t. The `history' builtin can now delete ranges of history entries using
422 `-d start-end'.
423
424 u. The `vi-edit-and-execute-command' bindable readline command now puts readline
425 back in vi insertion mode after executing commands from the edited file.
426
427 v. The command completion code now matches aliases and shell function names
428 case-insensitively if the readline completion-ignore-case variable is set.
429
430 w. There is a new `assoc_expand_once' shell option that attempts to expand
431 associative array subscripts only once.
432
433 x. The shell only sets up BASH_ARGV and BASH_ARGC at startup if extended
434 debugging mode is active. The old behavior of unconditionally setting them
435 is available as part of the shell compatibility options.
436
437 y. The `umask' builtin now allows modes and masks greater than octal 777.
438
439 z. The `times' builtin now honors the current locale when printing a decimal
440 point.
441
442 aa. There is a new (disabled by default, undocumented) shell option to enable
443 and disable sending history to syslog at runtime.
444
445 bb. Bash no longer allows variable assignments preceding a special builtin that
446 changes variable attributes to propagate back to the calling environment
447 unless the compatibility level is 44 or lower.
448
449 cc. You can set the default value for $HISTSIZE at build time in config-top.h.
450
451 dd. The `complete' builtin now accepts a -I option that applies the completion
452 to the initial word on the line.
453
454 ee. The internal bash malloc now uses mmap (if available) to satisfy requests
455 greater than 128K bytes, so free can use mfree to return the pages to the
456 kernel.
457
458 ff. The shell doesn't automatically set BASH_ARGC and BASH_ARGV at startup
459 unless it's in debugging mode, as the documentation has always said, but
460 will dynamically create them if a script references them at the top level
461 without having enabled debugging mode.
462
463 gg. The localvar_inherit option will not attempt to inherit a value from a
464 variable of an incompatible type (indexed vs. associative arrays, for
465 example).
466
467 hh. The `globasciiranges' option is now enabled by default; it can be set to
468 off by default at configuration time.
469
470 ii. Associative and indexed arrays now allow subscripts consisting solely of
471 whitespace.
472
473 jj. `checkwinsize' is now enabled by default.
474
475 kk. The `localvar_unset' shopt option is now visible and documented.
476
477 ll. The `progcomp_alias' shopt option is now visible and documented.
478
479 mm. The signal name processing code now understands `SIGRTMIN+n' all the way
480 up to SIGRTMAX.
481
482 nn. There is a new `seq' loadable builtin.
483
484 oo. Trap execution now honors the (internal) max invocations of `eval', since
485 traps are supposed to be executed as if using `eval'.
486
487 pp. The $_ variable doesn't change when the shell executes a command that forks.
488
489 qq. The `kill' builtin now supports -sSIGNAME and -nSIGNUM, even though
490 conforming applications aren't supposed to use them.
491
492 rr. POSIX mode now enables the `shift_verbose' option.
493
494 2. New Features in Readline
495
496 a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as
497 Posix specifies (uses fnmatch(3) if available).
498
499 b. There are new `next-screen-line' and `previous-screen-line' bindable
500 commands, which move the cursor to the same column in the next, or previous,
501 physical line, respectively.
502
503 c. There are default key bindings for control-arrow-key key combinations.
504
505 d. A negative argument (-N) to `quoted-insert' means to insert the next N
506 characters using quoted-insert.
507
508 e. New public function: rl_check_signals(), which allows applications to
509 respond to signals that readline catches while waiting for input using
510 a custom read function.
511
512 f. There is new support for conditionally testing the readline version in an
513 inputrc file, with a full set of arithmetic comparison operators available.
514
515 g. There is a simple variable comparison facility available for use within an
516 inputrc file. Allowable operators are equality and inequality; string
517 variables may be compared to a value; boolean variables must be compared to
518 either `on' or `off'; variable names are separated from the operator by
519 whitespace.
520
521 h. The history expansion library now understands command and process
522 substitution and extended globbing and allows them to appear anywhere in a
523 word.
524
525 i. The history library has a new variable that allows applications to set the
526 initial quoting state, so quoting state can be inherited from a previous
527 line.
528
529 j. Readline now allows application-defined keymap names; there is a new public
530 function, rl_set_keymap_name(), to do that.
531
532 k. The "Insert" keypad key, if available, now puts readline into overwrite
533 mode.
534
535 -------------------------------------------------------------------------------
536 This is a terse description of the new features added to bash-4.4 since
537 the release of bash-4.3. As always, the manual page (doc/bash.1) is
538 the place to look for complete descriptions.
539
540 1. New Features in Bash
541
542 a. There is now a settable configuration #define that will cause the shell
543 to exit if the shell is running setuid without the -p option and setuid
544 to the real uid fails.
545
546 b. Command and process substitutions now turn off the `-v' option when
547 executing, as other shells seem to do.
548
549 c. The default value for the `checkhash' shell option may now be set at
550 compile time with a #define.
551
552 d. The `mapfile' builtin now has a -d option to use an arbitrary character
553 as the record delimiter, and a -t option to strip the delimiter as
554 supplied with -d.
555
556 e. The maximum number of nested recursive calls to `eval' is now settable in
557 config-top.h; the default is no limit.
558
559 f. The `-p' option to declare and similar builtins will display attributes for
560 named variables even when those variables have not been assigned values
561 (which are technically unset).
562
563 g. The maximum number of nested recursive calls to `source' is now settable
564 in config-top.h; the default is no limit.
565
566 h. All builtin commands recognize the `--help' option and print a usage
567 summary.
568
569 i. Bash does not allow function names containing `/' and `=' to be exported.
570
571 j. The `ulimit' builtin has new -k (kqueues) and -P (pseudoterminals) options.
572
573 k. The shell now allows `time ; othercommand' to time null commands.
574
575 l. There is a new `--enable-function-import' configuration option to allow
576 importing shell functions from the environment; import is enabled by
577 default.
578
579 m. `printf -v var ""' will now set `var' to the empty string, as if `var=""'
580 had been executed.
581
582 n. GLOBIGNORE, the pattern substitution word expansion, and programmable
583 completion match filtering now honor the value of the `nocasematch' option.
584
585 o. There is a new ${parameter@spec} family of operators to transform the
586 value of `parameter'.
587
588 p. Bash no longer attempts to perform compound assignment if a variable on the
589 rhs of an assignment statement argument to `declare' has the form of a
590 compound assignment (e.g., w='(word)' ; declare foo=$w); compound
591 assignments are accepted if the variable was already declared as an array,
592 but with a warning.
593
594 q. The declare builtin no longer displays array variables using the compound
595 assignment syntax with quotes; that will generate warnings when re-used as
596 input, and isn't necessary.
597
598 r. Executing the rhs of && and || will no longer cause the shell to fork if
599 it's not necessary.
600
601 s. The `local' builtin takes a new argument: `-', which will cause it to save
602 and the single-letter shell options and restore their previous values at
603 function return.
604
605 t. `complete' and `compgen' have a new `-o nosort' option, which forces
606 readline to not sort the completion matches.
607
608 u. Bash now allows waiting for the most recent process substitution, since it
609 appears as $!.
610
611 v. The `unset' builtin now unsets a scalar variable if it is subscripted with
612 a `0', analogous to the ${var[0]} expansion.
613
614 w. `set -i' is no longer valid, as in other shells.
615
616 x. BASH_SUBSHELL is now updated for process substitution and group commands
617 in pipelines, and is available with the same value when running any exit
618 trap.
619
620 y. Bash now checks $INSIDE_EMACS as well as $EMACS when deciding whether or
621 not bash is being run in a GNU Emacs shell window.
622
623 z. Bash now treats SIGINT received when running a non-builtin command in a
624 loop the way it has traditionally treated running a builtin command:
625 running any trap handler and breaking out of the loop.
626
627 aa. New variable: EXECIGNORE; a colon-separate list of patterns that will
628 cause matching filenames to be ignored when searching for commands.
629
630 bb. Aliases whose value ends in a shell metacharacter now expand in a way to
631 allow them to be `pasted' to the next token, which can potentially change
632 the meaning of a command (e.g., turning `&' into `&&').
633
634 cc. `make install' now installs the example loadable builtins and a set of
635 bash headers to use when developing new loadable builtins.
636
637 dd. `enable -f' now attempts to call functions named BUILTIN_builtin_load when
638 loading BUILTIN, and BUILTIN_builtin_unload when deleting it. This allows
639 loadable builtins to run initialization and cleanup code.
640
641 ee. There is a new BASH_LOADABLES_PATH variable containing a list of directories
642 where the `enable -f' command looks for shared objects containing loadable
643 builtins.
644
645 ff. The `complete_fullquote' option to `shopt' changes filename completion to
646 quote all shell metacharacters in filenames and directory names.
647
648 gg. The `kill' builtin now has a `-L' option, equivalent to `-l', for
649 compatibility with Linux standalone versions of kill.
650
651 hh. BASH_COMPAT and FUNCNEST can be inherited and set from the shell's initial
652 environment.
653
654 ii. inherit_errexit: a new `shopt' option that, when set, causes command
655 substitutions to inherit the -e option. By default, those subshells disable
656 -e. It's enabled as part of turning on posix mode.
657
658 jj. New prompt string: PS0. Expanded and displayed by interactive shells after
659 reading a complete command but before executing it.
660
661 kk. Interactive shells now behave as if SIGTSTP/SIGTTIN/SIGTTOU are set to
662 SIG_DFL when the shell is started, so they are set to SIG_DFL in child
663 processes.
664
665 ll. Posix-mode shells now allow double quotes to quote the history expansion
666 character.
667
668 mm. OLDPWD can be inherited from the environment if it names a directory.
669
670 nn. Shells running as root no longer inherit PS4 from the environment, closing
671 a security hole involving PS4 expansion performing command substitution.
672
673 oo. If executing an implicit `cd' when the `autocd' option is set, bash will
674 now invoke a function named `cd' if one exists before executing the `cd'
675 builtin.
676
677 pp. Value conversions (arithmetic expansions, case modification, etc.) now
678 happen when assigning elements of an array using compound assignment.
679
680 qq. There is a new option settable in config-top.h that makes multiple
681 directory arguments to `cd' a fatal error.
682
683 rr. Bash now uses mktemp() when creating internal temporary files; it produces
684 a warning at build time on many Linux systems.
685
686 2. New Features in Readline
687
688 a. The history truncation code now uses the same error recovery mechanism as
689 the history writing code, and restores the old version of the history file
690 on error. The error recovery mechanism handles symlinked history files.
691
692 b. There is a new bindable variable, `enable-bracketed-paste', which enables
693 support for a terminal's bracketed paste mode.
694
695 c. The editing mode indicators can now be strings and are user-settable
696 (new `emacs-mode-string', `vi-cmd-mode-string' and `vi-ins-mode-string'
697 variables). Mode strings can contain invisible character sequences.
698 Setting mode strings to null strings restores the defaults.
699
700 d. Prompt expansion adds the mode string to the last line of a multi-line
701 prompt (one with embedded newlines).
702
703 e. There is a new bindable variable, `colored-completion-prefix', which, if
704 set, causes the common prefix of a set of possible completions to be
705 displayed in color.
706
707 f. There is a new bindable command `vi-yank-pop', a vi-mode version of emacs-
708 mode yank-pop.
709
710 g. The redisplay code underwent several efficiency improvements for multibyte
711 locales.
712
713 h. The insert-char function attempts to batch-insert all pending typeahead
714 that maps to self-insert, as long as it is coming from the terminal.
715
716 i. rl_callback_sigcleanup: a new application function that can clean up and
717 unset any state set by readline's callback mode. Intended to be used
718 after a signal.
719
720 j. If an incremental search string has its last character removed with DEL, the
721 resulting empty search string no longer matches the previous line.
722
723 k. If readline reads a history file that begins with `#' (or the value of
724 the history comment character) and has enabled history timestamps, the
725 history entries are assumed to be delimited by timestamps. This allows
726 multi-line history entries.
727
728 l. Readline now throws an error if it parses a key binding without a
729 terminating `:' or whitespace.
730
731 m. The default binding for ^W in vi mode now uses word boundaries specified
732 by Posix (vi-unix-word-rubout is bindable command name).
733
734 n. rl_clear_visible_line: new application-callable function; clears all
735 screen lines occupied by the current visible readline line.
736
737 o. rl_tty_set_echoing: application-callable function that controls whether
738 or not readline thinks it is echoing terminal output.
739
740 p. Handle >| and strings of digits preceding and following redirection
741 specifications as single tokens when tokenizing the line for history
742 expansion.
743
744 q. Fixed a bug with displaying completions when the prefix display length
745 is greater than the length of the completions to be displayed.
746
747 r. The :p history modifier now applies to the entire line, so any expansion
748 specifying :p causes the line to be printed instead of expanded.
749
750 s. New application-callable function: rl_pending_signal(): returns the signal
751 number of any signal readline has caught but not yet handled.
752
753 t. New application-settable variable: rl_persistent_signal_handlers: if set
754 to a non-zero value, readline will enable the readline-6.2 signal handler
755 behavior in callback mode: handlers are installed when
756 rl_callback_handler_install is called and removed removed when a complete
757 line has been read.
758
759 -------------------------------------------------------------------------------
760 This is a terse description of the new features added to bash-4.3 since
761 the release of bash-4.2. As always, the manual page (doc/bash.1) is
762 the place to look for complete descriptions.
763
764 1. New Features in Bash
765
766 a. The `helptopic' completion action now maps to all the help topics, not just
767 the shell builtins.
768
769 b. The `help' builtin no longer does prefix substring matching first, so
770 `help read' does not match `readonly', but will do it if exact string
771 matching fails.
772
773 c. The shell can be compiled to not display a message about processes that
774 terminate due to SIGTERM.
775
776 d. Non-interactive shells now react to the setting of checkwinsize and set
777 LINES and COLUMNS after a foreground job exits.
778
779 e. There is a new shell option, `globasciiranges', which, when set to on,
780 forces globbing range comparisons to use character ordering as if they
781 were run in the C locale.
782
783 f. There is a new shell option, `direxpand', which makes filename completion
784 expand variables in directory names in the way bash-4.1 did.
785
786 g. In Posix mode, the `command' builtin does not change whether or not a
787 builtin it shadows is treated as an assignment builtin.
788
789 h. The `return' and `exit' builtins accept negative exit status arguments.
790
791 i. The word completion code checks whether or not a filename containing a
792 shell variable expands to a directory name and appends `/' to the word
793 as appropriate. The same code expands shell variables in command names
794 when performing command completion.
795
796 j. In Posix mode, it is now an error to attempt to define a shell function
797 with the same name as a Posix special builtin.
798
799 k. When compiled for strict Posix conformance, history expansion is disabled
800 by default.
801
802 l. The history expansion character (!) does not cause history expansion when
803 followed by the closing quote in a double-quoted string.
804
805 m. `complete' and its siblings compgen/compopt now takes a new `-o noquote'
806 option to inhibit quoting of the completions.
807
808 n. Setting HISTSIZE to a value less than zero causes the history list to be
809 unlimited (setting it 0 zero disables the history list).
810
811 o. Setting HISTFILESIZE to a value less than zero causes the history file size
812 to be unlimited (setting it to 0 causes the history file to be truncated
813 to zero size).
814
815 p. The `read' builtin now skips NUL bytes in the input.
816
817 q. There is a new `bind -X' option to print all key sequences bound to Unix
818 commands.
819
820 r. When in Posix mode, `read' is interruptible by a trapped signal. After
821 running the trap handler, read returns 128+signal and throws away any
822 partially-read input.
823
824 s. The command completion code skips whitespace and assignment statements
825 before looking for the command name word to be completed.
826
827 t. The build process has a new mechanism for constructing separate help files
828 that better reflects the current set of compilation options.
829
830 u. The -nt and -ot options to test now work with files with nanosecond
831 timestamp resolution.
832
833 v. The shell saves the command history in any shell for which history is
834 enabled and HISTFILE is set, not just interactive shells.
835
836 w. The shell has `nameref' variables and new -n(/+n) options to declare and
837 unset to use them, and a `test -R' option to test for them.
838
839 x. The shell now allows assigning, referencing, and unsetting elements of
840 indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which
841 count back from the last element of the array.
842
843 y. The {x}<word redirection feature now allows words like {array[ind]} and
844 can use variables with special meanings to the shell (e.g., BASH_XTRACEFD).
845
846 z. There is a new CHILD_MAX special shell variable; its value controls the
847 number of exited child statues the shell remembers.
848
849 aa. There is a new configuration option (--enable-direxpand-default) that
850 causes the `direxpand' shell option to be enabled by default.
851
852 bb. Bash does not do anything special to ensure that the file descriptor
853 assigned to X in {x}<foo remains open after the block containing it
854 completes.
855
856 cc. The `wait' builtin has a new `-n' option to wait for the next child to
857 change status.
858
859 dd. The `printf' %(...)T format specifier now uses the current time if no
860 argument is supplied.
861
862 ee. There is a new variable, BASH_COMPAT, that controls the current shell
863 compatibility level.
864
865 ff. The `popd' builtin now treats additional arguments as errors.
866
867 gg. The brace expansion code now treats a failed sequence expansion as a
868 simple string and will continue to expand brace terms in the remainder
869 of the word.
870
871 hh. Shells started to run process substitutions now run any trap set on EXIT.
872
873 ii. The fc builtin now interprets -0 as the current command line.
874
875 jj. Completing directory names containing shell variables now adds a trailing
876 slash if the expanded result is a directory.
877
878 kk. `cd' has a new `-@' option to browse a file's extended attributes on
879 systems that support O_XATTR.
880
881 ll. The test/[/[[ `-v variable' binary operator now understands array
882 references.
883
884 2. New Features in Readline
885
886 a. Readline is now more responsive to SIGHUP and other fatal signals when
887 reading input from the terminal or performing word completion but no
888 longer attempts to run any not-allowable functions from a signal handler
889 context.
890
891 b. There are new bindable commands to search the history for the string of
892 characters between the beginning of the line and the point
893 (history-substring-search-forward, history-substring-search-backward)
894
895 c. Readline allows quoted strings as the values of variables when setting
896 them with `set'. As a side effect, trailing spaces and tabs are ignored
897 when setting a string variable's value.
898
899 d. The history library creates a backup of the history file when writing it
900 and restores the backup on a write error.
901
902 e. New application-settable variable: rl_filename_stat_hook: a function called
903 with a filename before using it in a call to stat(2). Bash uses it to
904 expand shell variables so things like $HOME/Downloads have a slash
905 appended.
906
907 f. New bindable function `print-last-kbd-macro', prints the most-recently-
908 defined keyboard macro in a reusable format.
909
910 g. New user-settable variable `colored-stats', enables use of colored text
911 to denote file types when displaying possible completions (colored analog
912 of visible-stats).
913
914 h. New user-settable variable `keyseq-timout', acts as an inter-character
915 timeout when reading input or incremental search strings.
916
917 i. New application-callable function: rl_clear_history. Clears the history list
918 and frees all readline-associated private data.
919
920 j. New user-settable variable, show-mode-in-prompt, adds a characters to the
921 beginning of the prompt indicating the current editing mode.
922
923 k. New application-settable variable: rl_input_available_hook; function to be
924 called when readline detects there is data available on its input file
925 descriptor.
926
927 l. Readline calls an application-set event hook (rl_event_hook) after it gets
928 a signal while reading input (read returns -1/EINTR but readline does not
929 handle the signal immediately) to allow the application to handle or
930 otherwise note it.
931
932 m. If the user-settable variable `history-size' is set to a value less than
933 0, the history list size is unlimited.
934
935 n. New application-settable variable: rl_signal_event_hook; function that is
936 called when readline is reading terminal input and read(2) is interrupted
937 by a signal. Currently not called for SIGHUP or SIGTERM.
938
939 o. rl_change_environment: new application-settable variable that controls
940 whether or not Readline modifies the environment (currently readline
941 modifies only LINES and COLUMNS).
942
943 -------------------------------------------------------------------------------
944 This is a terse description of the new features added to bash-4.2 since
945 the release of bash-4.1. As always, the manual page (doc/bash.1) is
946 the place to look for complete descriptions.
947
948 1. New Features in Bash
949
950 a. `exec -a foo' now sets $0 to `foo' in an executable shell script without a
951 leading #!.
952
953 b. Subshells begun to execute command substitutions or run shell functions or
954 builtins in subshells do not reset trap strings until a new trap is
955 specified. This allows $(trap) to display the caller's traps and the
956 trap strings to persist until a new trap is set.
957
958 c. `trap -p' will now show signals ignored at shell startup, though their
959 disposition still cannot be modified.
960
961 d. $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences.
962
963 e. declare/typeset has a new `-g' option, which creates variables in the
964 global scope even when run in a shell function.
965
966 f. test/[/[[ have a new -v variable unary operator, which returns success if
967 `variable' has been set.
968
969 g. Posix parsing changes to allow `! time command' and multiple consecutive
970 instances of `!' (which toggle) and `time' (which have no cumulative
971 effect).
972
973 h. Posix change to allow `time' as a command by itself to print the elapsed
974 user, system, and real times for the shell and its children.
975
976 j. $((...)) is always parsed as an arithmetic expansion first, instead of as
977 a potential nested command substitution, as Posix requires.
978
979 k. A new FUNCNEST variable to allow the user to control the maximum shell
980 function nesting (recursive execution) level.
981
982 l. The mapfile builtin now supplies a third argument to the callback command:
983 the line about to be assigned to the supplied array index.
984
985 m. The printf builtin has a new %(fmt)T specifier, which allows time values
986 to use strftime-like formatting.
987
988 n. There is a new `compat41' shell option.
989
990 o. The cd builtin has a new Posix-mandated `-e' option.
991
992 p. Negative subscripts to indexed arrays, previously errors, now are treated
993 as offsets from the maximum assigned index + 1.
994
995 q. Negative length specifications in the ${var:offset:length} expansion,
996 previously errors, are now treated as offsets from the end of the variable.
997
998 r. Parsing change to allow `time -p --'.
999
1000 s. Posix-mode parsing change to not recognize `time' as a keyword if the
1001 following token begins with a `-'. This means no more Posix-mode
1002 `time -p'. Posix interpretation 267.
1003
1004 t. There is a new `lastpipe' shell option that runs the last command of a
1005 pipeline in the current shell context. The lastpipe option has no
1006 effect if job control is enabled.
1007
1008 u. History expansion no longer expands the `$!' variable expansion.
1009
1010 v. Posix mode shells no longer exit if a variable assignment error occurs
1011 with an assignment preceding a command that is not a special builtin.
1012
1013 w. Non-interactive mode shells exit if -u is enabled and an attempt is made
1014 to use an unset variable with the % or # expansions, the `//', `^', or
1015 `,' expansions, or the parameter length expansion.
1016
1017 x. Posix-mode shells use the argument passed to `.' as-is if a $PATH search
1018 fails, effectively searching the current directory. Posix-2008 change.
1019
1020 2. New Features in Readline
1021
1022 a. The history library does not try to write the history filename in the
1023 current directory if $HOME is unset. This closes a potential security
1024 problem if the application does not specify a history filename.
1025
1026 b. New bindable variable `completion-display-width' to set the number of
1027 columns used when displaying completions.
1028
1029 c. New bindable variable `completion-case-map' to cause case-insensitive
1030 completion to treat `-' and `_' as identical.
1031
1032 d. There are new bindable vi-mode command names to avoid readline's case-
1033 insensitive matching not allowing them to be bound separately.
1034
1035 e. New bindable variable `menu-complete-display-prefix' causes the menu
1036 completion code to display the common prefix of the possible completions
1037 before cycling through the list, instead of after.
1038
1039 -------------------------------------------------------------------------------
1040 This is a terse description of the new features added to bash-4.1 since
1041 the release of bash-4.0. As always, the manual page (doc/bash.1) is
1042 the place to look for complete descriptions.
1043
1044 1. New Features in Bash
1045
1046 a. Here-documents within $(...) command substitutions may once more be
1047 delimited by the closing right paren, instead of requiring a newline.
1048
1049 b. Bash's file status checks (executable, readable, etc.) now take file
1050 system ACLs into account on file systems that support them.
1051
1052 c. Bash now passes environment variables with names that are not valid
1053 shell variable names through into the environment passed to child
1054 processes.
1055
1056 d. The `execute-unix-command' readline function now attempts to clear and
1057 reuse the current line rather than move to a new one after the command
1058 executes.
1059
1060 e. `printf -v' can now assign values to array indices.
1061
1062 f. New `complete -E' and `compopt -E' options that work on the "empty"
1063 completion: completion attempted on an empty command line.
1064
1065 g. New complete/compgen/compopt -D option to define a `default' completion:
1066 a completion to be invoked on command for which no completion has been
1067 defined. If this function returns 124, programmable completion is
1068 attempted again, allowing a user to dynamically build a set of completions
1069 as completion is attempted by having the default completion function
1070 install individual completion functions each time it is invoked.
1071
1072 h. When displaying associative arrays, subscripts are now quoted.
1073
1074 i. Changes to dabbrev-expand to make it more `emacs-like': no space appended
1075 after matches, completions are not sorted, and most recent history entries
1076 are presented first.
1077
1078 j. The [[ and (( commands are now subject to the setting of `set -e' and the
1079 ERR trap.
1080
1081 k. The source/. builtin now removes NUL bytes from the file before attempting
1082 to parse commands.
1083
1084 l. There is a new configuration option (in config-top.h) that forces bash to
1085 forward all history entries to syslog.
1086
1087 m. A new variable $BASHOPTS to export shell options settable using `shopt' to
1088 child processes.
1089
1090 n. There is a new configure option that forces the extglob option to be
1091 enabled by default.
1092
1093 o. New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace
1094 output to that file descriptor.
1095
1096 p. If the optional left-hand-side of a redirection is of the form {var}, the
1097 shell assigns the file descriptor used to $var or uses $var as the file
1098 descriptor to move or close, depending on the redirection operator.
1099
1100 q. The < and > operators to the [[ conditional command now do string
1101 comparison according to the current locale if the compatibility level
1102 is greater than 40.
1103
1104 r. Programmable completion now uses the completion for `b' instead of `a'
1105 when completion is attempted on a line like: a $(b c.
1106
1107 s. Force extglob on temporarily when parsing the pattern argument to
1108 the == and != operators to the [[ command, for compatibility.
1109
1110 t. Changed the behavior of interrupting the wait builtin when a SIGCHLD is
1111 received and a trap on SIGCHLD is set to be Posix-mode only.
1112
1113 u. The read builtin has a new `-N nchars' option, which reads exactly NCHARS
1114 characters, ignoring delimiters like newline.
1115
1116 v. The mapfile/readarray builtin no longer stores the commands it invokes via
1117 callbacks in the history list.
1118
1119 w. There is a new `compat40' shopt option.
1120
1121 2. New Features in Readline
1122
1123 a. New bindable function: menu-complete-backward.
1124
1125 b. In the vi insertion keymap, C-n is now bound to menu-complete by default,
1126 and C-p to menu-complete-backward.
1127
1128 c. When in vi command mode, repeatedly hitting ESC now does nothing, even
1129 when ESC introduces a bound key sequence. This is closer to how
1130 historical vi behaves.
1131
1132 d. New bindable function: skip-csi-sequence. Can be used as a default to
1133 consume key sequences generated by keys like Home and End without having
1134 to bind all keys.
1135
1136 e. New application-settable function: rl_filename_rewrite_hook. Can be used
1137 to rewrite or modify filenames read from the file system before they are
1138 compared to the word to be completed.
1139
1140 f. New bindable variable: skip-completed-text, active when completing in the
1141 middle of a word. If enabled, it means that characters in the completion
1142 that match characters in the remainder of the word are "skipped" rather
1143 than inserted into the line.
1144
1145 g. The pre-readline-6.0 version of menu completion is available as
1146 "old-menu-complete" for users who do not like the readline-6.0 version.
1147
1148 h. New bindable variable: echo-control-characters. If enabled, and the
1149 tty ECHOCTL bit is set, controls the echoing of characters corresponding
1150 to keyboard-generated signals.
1151
1152 i. New bindable variable: enable-meta-key. Controls whether or not readline
1153 sends the smm/rmm sequences if the terminal indicates it has a meta key
1154 that enables eight-bit characters.
1155
1156 -------------------------------------------------------------------------------
1157 This is a terse description of the new features added to bash-4.0 since
1158 the release of bash-3.2. As always, the manual page (doc/bash.1) is
1159 the place to look for complete descriptions.
1160
1161 1. New Features in Bash
1162
1163 a. When using substring expansion on the positional parameters, a starting
1164 index of 0 now causes $0 to be prefixed to the list.
1165
1166 b. The `help' builtin now prints its columns with entries sorted vertically
1167 rather than horizontally.
1168
1169 c. There is a new variable, $BASHPID, which always returns the process id of
1170 the current shell.
1171
1172 d. There is a new `autocd' option that, when enabled, causes bash to attempt
1173 to `cd' to a directory name that is supplied as the first word of a
1174 simple command.
1175
1176 e. There is a new `checkjobs' option that causes the shell to check for and
1177 report any running or stopped jobs at exit.
1178
1179 f. The programmable completion code exports a new COMP_TYPE variable, set to
1180 a character describing the type of completion being attempted.
1181
1182 g. The programmable completion code exports a new COMP_KEY variable, set to
1183 the character that caused the completion to be invoked (e.g., TAB).
1184
1185 h. If creation of a child process fails due to insufficient resources, bash
1186 will try again several times before reporting failure.
1187
1188 i. The programmable completion code now uses the same set of characters as
1189 readline when breaking the command line into a list of words.
1190
1191 j. The block multiplier for the ulimit -c and -f options is now 512 when in
1192 Posix mode, as Posix specifies.
1193
1194 k. Changed the behavior of the read builtin to save any partial input received
1195 in the specified variable when the read builtin times out. This also
1196 results in variables specified as arguments to read to be set to the empty
1197 string when there is no input available. When the read builtin times out,
1198 it returns an exit status greater than 128.
1199
1200 l. The shell now has the notion of a `compatibility level', controlled by
1201 new variables settable by `shopt'. Setting this variable currently
1202 restores the bash-3.1 behavior when processing quoted strings on the rhs
1203 of the `=~' operator to the `[[' command.
1204
1205 m. The `ulimit' builtin now has new -b (socket buffer size) and -T (number
1206 of threads) options.
1207
1208 n. The -p option to `declare' now displays all variable values and attributes
1209 (or function values and attributes if used with -f).
1210
1211 o. There is a new `compopt' builtin that allows completion functions to modify
1212 completion options for existing completions or the completion currently
1213 being executed.
1214
1215 p. The `read' builtin has a new -i option which inserts text into the reply
1216 buffer when using readline.
1217
1218 q. A new `-E' option to the complete builtin allows control of the default
1219 behavior for completion on an empty line.
1220
1221 r. There is now limited support for completing command name words containing
1222 globbing characters.
1223
1224 s. Changed format of internal help documentation for all builtins to roughly
1225 follow man page format.
1226
1227 t. The `help' builtin now has a new -d option, to display a short description,
1228 and a -m option, to print help information in a man page-like format.
1229
1230 u. There is a new `mapfile' builtin to populate an array with lines from a
1231 given file. The name `readarray' is a synonym.
1232
1233 v. If a command is not found, the shell attempts to execute a shell function
1234 named `command_not_found_handle', supplying the command words as the
1235 function arguments.
1236
1237 w. There is a new shell option: `globstar'. When enabled, the globbing code
1238 treats `**' specially -- it matches all directories (and files within
1239 them, when appropriate) recursively.
1240
1241 x. There is a new shell option: `dirspell'. When enabled, the filename
1242 completion code performs spelling correction on directory names during
1243 completion.
1244
1245 y. The `-t' option to the `read' builtin now supports fractional timeout
1246 values.
1247
1248 z. Brace expansion now allows zero-padding of expanded numeric values and
1249 will add the proper number of zeroes to make sure all values contain the
1250 same number of digits.
1251
1252 aa. There is a new bash-specific bindable readline function: `dabbrev-expand'.
1253 It uses menu completion on a set of words taken from the history list.
1254
1255 bb. The command assigned to a key sequence with `bind -x' now sets two new
1256 variables in the environment of the executed command: READLINE_LINE_BUFFER
1257 and READLINE_POINT. The command can change the current readline line
1258 and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT,
1259 respectively.
1260
1261 cc. There is a new &>> redirection operator, which appends the standard output
1262 and standard error to the named file.
1263
1264 dd. The parser now understands `|&' as a synonym for `2>&1 |', which redirects
1265 the standard error for a command through a pipe.
1266
1267 ee. The new `;&' case statement action list terminator causes execution to
1268 continue with the action associated with the next pattern in the
1269 statement rather than terminating the command.
1270
1271 ff. The new `;;&' case statement action list terminator causes the shell to
1272 test the next set of patterns after completing execution of the current
1273 action, rather than terminating the command.
1274
1275 gg. The shell understands a new variable: PROMPT_DIRTRIM. When set to an
1276 integer value greater than zero, prompt expansion of \w and \W will
1277 retain only that number of trailing pathname components and replace
1278 the intervening characters with `...'.
1279
1280 hh. There are new case-modifying word expansions: uppercase (^[^]) and
1281 lowercase (,[,]). They can work on either the first character or
1282 array element, or globally. They accept an optional shell pattern
1283 that determines which characters to modify. There is an optionally-
1284 configured feature to include capitalization operators.
1285
1286 ii. The shell provides associative array variables, with the appropriate
1287 support to create, delete, assign values to, and expand them.
1288
1289 jj. The `declare' builtin now has new -l (convert value to lowercase upon
1290 assignment) and -u (convert value to uppercase upon assignment) options.
1291 There is an optionally-configurable -c option to capitalize a value at
1292 assignment.
1293
1294 kk. There is a new `coproc' reserved word that specifies a coprocess: an
1295 asynchronous command run with two pipes connected to the creating shell.
1296 Coprocs can be named. The input and output file descriptors and the
1297 PID of the coprocess are available to the calling shell in variables
1298 with coproc-specific names.
1299
1300 ll. A value of 0 for the -t option to `read' now returns success if there is
1301 input available to be read from the specified file descriptor.
1302
1303 mm. CDPATH and GLOBIGNORE are ignored when the shell is running in privileged
1304 mode.
1305
1306 nn. New bindable readline functions shell-forward-word and shell-backward-word,
1307 which move forward and backward words delimited by shell metacharacters
1308 and honor shell quoting.
1309
1310 oo. New bindable readline functions shell-backward-kill-word and shell-kill-word
1311 which kill words backward and forward, but use the same word boundaries
1312 as shell-forward-word and shell-backward-word.
1313
1314 2. New Features in Readline
1315
1316 a. A new variable, rl_sort_completion_matches; allows applications to inhibit
1317 match list sorting (but beware: some things don't work right if
1318 applications do this).
1319
1320 b. A new variable, rl_completion_invoking_key; allows applications to discover
1321 the key that invoked rl_complete or rl_menu_complete.
1322
1323 c. The functions rl_block_sigint and rl_release_sigint are now public and
1324 available to calling applications who want to protect critical sections
1325 (like redisplay).
1326
1327 d. The functions rl_save_state and rl_restore_state are now public and
1328 available to calling applications; documented rest of readline's state
1329 flag values.
1330
1331 e. A new user-settable variable, `history-size', allows setting the maximum
1332 number of entries in the history list.
1333
1334 f. There is a new implementation of menu completion, with several improvements
1335 over the old; the most notable improvement is a better `completions
1336 browsing' mode.
1337
1338 g. The menu completion code now uses the rl_menu_completion_entry_function
1339 variable, allowing applications to provide their own menu completion
1340 generators.
1341
1342 h. There is support for replacing a prefix of a pathname with a `...' when
1343 displaying possible completions. This is controllable by setting the
1344 `completion-prefix-display-length' variable. Matches with a common prefix
1345 longer than this value have the common prefix replaced with `...'.
1346
1347 i. There is a new `revert-all-at-newline' variable. If enabled, readline will
1348 undo all outstanding changes to all history lines when `accept-line' is
1349 executed.
1350
1351 j. If the kernel supports it, readline displays special characters
1352 corresponding to a keyboard-generated signal when the signal is received.
1353
1354 -------------------------------------------------------------------------------
1355 This is a terse description of the new features added to bash-3.2 since
1356 the release of bash-3.1. As always, the manual page (doc/bash.1) is
1357 the place to look for complete descriptions.
1358
1359 1. New Features in Bash
1360
1361 a. Changed the parameter pattern replacement functions to not anchor the
1362 pattern at the beginning of the string if doing global replacement - that
1363 combination doesn't make any sense.
1364
1365 b. When running in `word expansion only' mode (--wordexp option), inhibit
1366 process substitution.
1367
1368 c. Loadable builtins now work on MacOS X 10.[34].
1369
1370 d. Shells running in posix mode no longer set $HOME, as POSIX requires.
1371
1372 e. The code that checks for binary files being executed as shell scripts now
1373 checks only for NUL rather than any non-printing character.
1374
1375 f. Quoting the string argument to the [[ command's =~ operator now forces
1376 string matching, as with the other pattern-matching operators.
1377
1378 2. New Features in Readline
1379
1380 a. Calling applications can now set the keyboard timeout to 0, allowing
1381 poll-like behavior.
1382
1383 b. The value of SYS_INPUTRC (configurable at compilation time) is now used as
1384 the default last-ditch startup file.
1385
1386 c. The history file reading functions now allow windows-like \r\n line
1387 terminators.
1388
1389 -------------------------------------------------------------------------------
1390 This is a terse description of the new features added to bash-3.1 since
1391 the release of bash-3.0. As always, the manual page (doc/bash.1) is
1392 the place to look for complete descriptions.
1393
1394 1. New Features in Bash
1395
1396 a. Bash now understands LC_TIME as a special variable so that time display
1397 tracks the current locale.
1398
1399 b. BASH_ARGC, BASH_ARGV, BASH_SOURCE, and BASH_LINENO are no longer created
1400 as `invisible' variables and may not be unset.
1401
1402 c. In POSIX mode, if `xpg_echo' option is enabled, the `echo' builtin doesn't
1403 try to interpret any options at all, as POSIX requires.
1404
1405 d. The `bg' builtin now accepts multiple arguments, as POSIX seems to specify.
1406
1407 e. Fixed vi-mode word completion and glob expansion to perform tilde
1408 expansion.
1409
1410 f. The `**' mathematic exponentiation operator is now right-associative.
1411
1412 g. The `ulimit' builtin has new options: -i (max number of pending signals),
1413 -q (max size of POSIX message queues), and -x (max number of file locks).
1414
1415 h. A bare `%' once again expands to the current job when used as a job
1416 specifier.
1417
1418 i. The `+=' assignment operator (append to the value of a string or array) is
1419 now supported for assignment statements and arguments to builtin commands
1420 that accept assignment statements.
1421
1422 j. BASH_COMMAND now preserves its value when a DEBUG trap is executed.
1423
1424 k. The `gnu_errfmt' option is enabled automatically if the shell is running
1425 in an emacs terminal window.
1426
1427 l. New configuration option: --single-help-strings. Causes long help text
1428 to be written as a single string; intended to ease translation.
1429
1430 m. The COMP_WORDBREAKS variable now causes the list of word break characters
1431 to be emptied when the variable is unset.
1432
1433 n. An unquoted expansion of $* when $IFS is empty now causes the positional
1434 parameters to be concatenated if the expansion doesn't undergo word
1435 splitting.
1436
1437 o. Bash now inherits $_ from the environment if it appears there at startup.
1438
1439 p. New shell option: nocasematch. If non-zero, shell pattern matching ignores
1440 case when used by `case' and `[[' commands.
1441
1442 q. The `printf' builtin takes a new option: -v var. That causes the output
1443 to be placed into var instead of on stdout.
1444
1445 r. By default, the shell no longer reports processes dying from SIGPIPE.
1446
1447 s. Bash now sets the extern variable `environ' to the export environment it
1448 creates, so C library functions that call getenv() (and can't use the
1449 shell-provided replacement) get current values of environment variables.
1450
1451 t. A new configuration option, `--enable-strict-posix-default', which will
1452 build bash to be POSIX conforming by default.
1453
1454 u. If compiled for strict POSIX conformance, LINES and COLUMNS may now
1455 override the true terminal size.
1456
1457 2. New Features in Readline
1458
1459 a. The key sequence sent by the keypad `delete' key is now automatically
1460 bound to delete-char.
1461
1462 b. A negative argument to menu-complete now cycles backward through the
1463 completion list.
1464
1465 c. A new bindable readline variable: bind-tty-special-chars. If non-zero,
1466 readline will bind the terminal special characters to their readline
1467 equivalents when it's called (on by default).
1468
1469 d. New bindable command: vi-rubout. Saves deleted text for possible
1470 reinsertion, as with any vi-mode `text modification' command; `X' is bound
1471 to this in vi command mode.
1472
1473 e. A new external application-controllable variable that allows the LINES
1474 and COLUMNS environment variables to set the window size regardless of
1475 what the kernel returns: rl_prefer_env_winsize
1476
1477 -------------------------------------------------------------------------------
1478 This is a terse description of the new features added to bash-3.0 since
1479 the release of bash-2.05b. As always, the manual page (doc/bash.1) is
1480 the place to look for complete descriptions.
1481
1482 1. New Features in Bash
1483
1484 a. ANSI string expansion now implements the \x{hexdigits} escape.
1485
1486 b. There is a new loadable `strftime' builtin.
1487
1488 c. New variable, COMP_WORDBREAKS, which controls the readline completer's
1489 idea of word break characters.
1490
1491 d. The `type' builtin no longer reports on aliases unless alias expansion
1492 will actually be performed.
1493
1494 e. HISTCONTROL is now a colon-separated list of values, which permits
1495 more extensibility and backwards compatibility.
1496
1497 f. HISTCONTROL may now include the `erasedups' option, which causes all lines
1498 matching a line being added to be removed from the history list.
1499
1500 g. `configure' has a new `--enable-multibyte' argument that permits multibyte
1501 character support to be disabled even on systems that support it.
1502
1503 h. New variables to support the bash debugger: BASH_ARGC, BASH_ARGV,
1504 BASH_SOURCE, BASH_LINENO, BASH_SUBSHELL, BASH_EXECUTION_STRING,
1505 BASH_COMMAND
1506
1507 i. FUNCNAME has been changed to support the debugger: it's now an array
1508 variable.
1509
1510 j. for, case, select, arithmetic commands now keep line number information
1511 for the debugger.
1512
1513 k. There is a new `RETURN' trap executed when a function or sourced script
1514 returns (not inherited child processes; inherited by command substitution
1515 if function tracing is enabled and the debugger is active).
1516
1517 l. New invocation option: --debugger. Enables debugging and turns on new
1518 `extdebug' shell option.
1519
1520 m. New `functrace' and `errtrace' options to `set -o' cause DEBUG and ERR
1521 traps, respectively, to be inherited by shell functions. Equivalent to
1522 `set -T' and `set -E' respectively. The `functrace' option also controls
1523 whether or not the DEBUG trap is inherited by sourced scripts.
1524
1525 n. The DEBUG trap is run before binding the variable and running the action
1526 list in a `for' command, binding the selection variable and running the
1527 query in a `select' command, and before attempting a match in a `case'
1528 command.
1529
1530 o. New `--enable-debugger' option to `configure' to compile in the debugger
1531 support code.
1532
1533 p. `declare -F' now prints out extra line number and source file information
1534 if the `extdebug' option is set.
1535
1536 q. If `extdebug' is enabled, a non-zero return value from a DEBUG trap causes
1537 the next command to be skipped, and a return value of 2 while in a
1538 function or sourced script forces a `return'.
1539
1540 r. New `caller' builtin to provide a call stack for the bash debugger.
1541
1542 s. The DEBUG trap is run just before the first command in a function body is
1543 executed, for the debugger.
1544
1545 t. `for', `select', and `case' command heads are printed when `set -x' is
1546 enabled.
1547
1548 u. There is a new {x..y} brace expansion, which is shorthand for {x.x+1,
1549 x+2,...,y}. x and y can be integers or single characters; the sequence
1550 may ascend or descend; the increment is always 1.
1551
1552 v. New ksh93-like ${!array[@]} expansion, expands to all the keys (indices)
1553 of array.
1554
1555 w. New `force_fignore' shopt option; if enabled, suffixes specified by
1556 FIGNORE cause words to be ignored when performing word completion even
1557 if they're the only possibilities.
1558
1559 x. New `gnu_errfmt' shopt option; if enabled, error messages follow the `gnu
1560 style' (filename:lineno:message) format.
1561
1562 y. New `-o bashdefault' option to complete and compgen; if set, causes the
1563 whole set of bash completions to be performed if the compspec doesn't
1564 result in a match.
1565
1566 z. New `-o plusdirs' option to complete and compgen; if set, causes directory
1567 name completion to be performed and the results added to the rest of the
1568 possible completions.
1569
1570 aa. `kill' is available as a builtin even when the shell is built without
1571 job control.
1572
1573 bb. New HISTTIMEFORMAT variable; value is a format string to pass to
1574 strftime(3). If set and not null, the `history' builtin prints out
1575 timestamp information according to the specified format when displaying
1576 history entries. If set, bash tells the history library to write out
1577 timestamp information when the history file is written.
1578
1579 cc. The [[ ... ]] command has a new binary `=~' operator that performs
1580 extended regular expression (egrep-like) matching.
1581
1582 dd. `configure' has a new `--enable-cond-regexp' option (enabled by default)
1583 to enable the =~ operator and regexp matching in [[ ... ]].
1584
1585 ee. Subexpressions matched by the =~ operator are placed in the new
1586 BASH_REMATCH array variable.
1587
1588 ff. New `failglob' option that causes an expansion error when pathname
1589 expansion fails to produce a match.
1590
1591 gg. New `set -o pipefail' option that causes a pipeline to return a failure
1592 status if any of the processes in the pipeline fail, not just the last
1593 one.
1594
1595 hh. printf builtin understands two new escape sequences: \" and \?.
1596
1597 ii. `echo -e' understands two new escape sequences: \" and \?.
1598
1599 jj. The GNU `gettext' package and libintl have been integrated; the shell's
1600 messages can be translated into different languages.
1601
1602 kk. The `\W' prompt expansion now abbreviates $HOME as `~', like `\w'.
1603
1604 ll. The error message printed when bash cannot open a shell script supplied
1605 as argument 1 now includes the name of the shell, to better identify
1606 the error as coming from bash.
1607
1608 mm. The parameter pattern removal and substitution expansions are now much
1609 faster and more efficient when using multibyte characters.
1610
1611 nn. The `jobs', `kill', and `wait' builtins now accept job control notation
1612 even if job control is not enabled.
1613
1614 oo. The historical behavior of `trap' that allows a missing `action' argument
1615 to cause each specified signal's handling to be reset to its default is
1616 now only supported when `trap' is given a single non-option argument.
1617
1618 2. New Features in Readline
1619
1620 a. History expansion has a new `a' modifier equivalent to the `g' modifier
1621 for compatibility with the BSD csh.
1622
1623 b. History expansion has a new `G' modifier equivalent to the BSD csh `g'
1624 modifier, which performs a substitution once per word.
1625
1626 c. All non-incremental search operations may now undo the operation of
1627 replacing the current line with the history line.
1628
1629 d. The text inserted by an `a' command in vi mode can be reinserted with
1630 `.'.
1631
1632 e. New bindable variable, `show-all-if-unmodified'. If set, the readline
1633 completer will list possible completions immediately if there is more
1634 than one completion and partial completion cannot be performed.
1635
1636 f. There is a new application-callable `free_history_entry()' function.
1637
1638 g. History list entries now contain timestamp information; the history file
1639 functions know how to read and write timestamp information associated
1640 with each entry.
1641
1642 h. Four new key binding functions have been added:
1643
1644 rl_bind_key_if_unbound()
1645 rl_bind_key_if_unbound_in_map()
1646 rl_bind_keyseq_if_unbound()
1647 rl_bind_keyseq_if_unbound_in_map()
1648
1649 i. New application variable, rl_completion_quote_character, set to any
1650 quote character readline finds before it calls the application completion
1651 function.
1652
1653 j. New application variable, rl_completion_suppress_quote, settable by an
1654 application completion function. If set to non-zero, readline does not
1655 attempt to append a closing quote to a completed word.
1656
1657 k. New application variable, rl_completion_found_quote, set to a non-zero
1658 value if readline determines that the word to be completed is quoted.
1659 Set before readline calls any application completion function.
1660
1661 l. New function hook, rl_completion_word_break_hook, called when readline
1662 needs to break a line into words when completion is attempted. Allows
1663 the word break characters to vary based on position in the line.
1664
1665 m. New bindable command: unix-filename-rubout. Does the same thing as
1666 unix-word-rubout, but adds `/' to the set of word delimiters.
1667
1668 n. When listing completions, directories have a `/' appended if the
1669 `mark-directories' option has been enabled.
1670
1671 -------------------------------------------------------------------------------
1672 This is a terse description of the new features added to bash-2.05b since
1673 the release of bash-2.05a. As always, the manual page (doc/bash.1) is
1674 the place to look for complete descriptions.
1675
1676 1. New Features in Bash
1677
1678 a. If set, TMOUT is the default timeout for the `read' builtin.
1679
1680 b. `type' has two new options: `-f' suppresses shell function lookup, and
1681 `-P' forces a $PATH search.
1682
1683 c. New code to handle multibyte characters.
1684
1685 d. `select' was changed to be more ksh-compatible, in that the menu is
1686 reprinted each time through the loop only if REPLY is set to NULL.
1687 The previous behavior is available as a compile-time option.
1688
1689 e. `complete -d' and `complete -o dirnames' now force a slash to be
1690 appended to names which are symlinks to directories.
1691
1692 f. There is now a bindable edit-and-execute-command readline command,
1693 like the vi-mode `v' command, bound to C-xC-e in emacs mode.
1694
1695 g. Added support for ksh93-like [:word:] character class in pattern matching.
1696
1697 h. The $'...' quoting construct now expands \cX to Control-X.
1698
1699 i. A new \D{...} prompt expansion; passes the `...' to strftime and inserts
1700 the result into the expanded prompt.
1701
1702 j. The shell now performs arithmetic in the largest integer size the
1703 machine supports (intmax_t), instead of long.
1704
1705 k. If a numeric argument is supplied to one of the bash globbing completion
1706 functions, a `*' is appended to the word before expansion is attempted.
1707
1708 l. The bash globbing completion functions now allow completions to be listed
1709 with double tabs or if `show-all-if-ambiguous' is set.
1710
1711 m. New `-o nospace' option for `complete' and `compgen' builtins; suppresses
1712 readline's appending a space to the completed word.
1713
1714 n. New `here-string' redirection operator: <<< word.
1715
1716 o. When displaying variables, function attributes and definitions are shown
1717 separately, allowing them to be re-used as input (attempting to re-use
1718 the old output would result in syntax errors).
1719
1720 p. There is a new configuration option `--enable-mem-scramble', controls
1721 bash malloc behavior of writing garbage characters into memory at
1722 allocation and free time.
1723
1724 q. The `complete' and `compgen' builtins now have a new `-s/-A service'
1725 option to complete on names from /etc/services.
1726
1727 r. `read' has a new `-u fd' option to read from a specified file descriptor.
1728
1729 s. Fix the completion code so that expansion errors in a directory name
1730 don't cause a longjmp back to the command loop.
1731
1732 t. Fixed word completion inside command substitution to work a little more
1733 intuitively.
1734
1735 u. The `printf' %q format specifier now uses $'...' quoting to print the
1736 argument if it contains non-printing characters.
1737
1738 v. The `declare' and `typeset' builtins have a new `-t' option. When applied
1739 to functions, it causes the DEBUG trap to be inherited by the named
1740 function. Currently has no effect on variables.
1741
1742 w. The DEBUG trap is now run *before* simple commands, ((...)) commands,
1743 [[...]] conditional commands, and for ((...)) loops.
1744
1745 x. The expansion of $LINENO inside a shell function is only relative to the
1746 function start if the shell is interactive -- if the shell is running a
1747 script, $LINENO expands to the line number in the script. This is as
1748 POSIX-2001 requires.
1749
1750 y. The bash debugger in examples/bashdb has been modified to work with the
1751 new DEBUG trap semantics, the command set has been made more gdb-like,
1752 and the changes to $LINENO make debugging functions work better. Code
1753 from Gary Vaughan.
1754
1755 z. New [n]<&word- and [n]>&word- redirections from ksh93 -- move fds (dup
1756 and close).
1757
1758 aa. There is a new `-l' invocation option, equivalent to `--login'.
1759
1760 bb. The `hash' builtin has a new `-l' option to list contents in a reusable
1761 format, and a `-d' option to remove a name from the hash table.
1762
1763 cc. There is now support for placing the long help text into separate files
1764 installed into ${datadir}/bash. Not enabled by default; can be turned
1765 on with `--enable-separate-helpfiles' option to configure.
1766
1767 dd. All builtins that take operands accept a `--' pseudo-option, except
1768 `echo'.
1769
1770 ee. The `echo' builtin now accepts \0xxx (zero to three octal digits following
1771 the `0') in addition to \xxx (one to three octal digits) for SUSv3/XPG6/
1772 POSIX.1-2001 compliance.
1773
1774
1775 2. New Features in Readline
1776
1777 a. Support for key `subsequences': allows, e.g., ESC and ESC-a to both
1778 be bound to readline functions. Now the arrow keys may be used in vi
1779 insert mode.
1780
1781 b. When listing completions, and the number of lines displayed is more than
1782 the screen length, readline uses an internal pager to display the results.
1783 This is controlled by the `page-completions' variable (default on).
1784
1785 c. New code to handle editing and displaying multibyte characters.
1786
1787 d. The behavior introduced in bash-2.05a of deciding whether or not to
1788 append a slash to a completed name that is a symlink to a directory has
1789 been made optional, controlled by the `mark-symlinked-directories'
1790 variable (default is the 2.05a behavior).
1791
1792 e. The `insert-comment' command now acts as a toggle if given a numeric
1793 argument: if the first characters on the line don't specify a
1794 comment, insert one; if they do, delete the comment text
1795
1796 f. New application-settable completion variable:
1797 rl_completion_mark_symlink_dirs, allows an application's completion
1798 function to temporarily override the user's preference for appending
1799 slashes to names which are symlinks to directories.
1800
1801 g. New function available to application completion functions:
1802 rl_completion_mode, to tell how the completion function was invoked
1803 and decide which argument to supply to rl_complete_internal (to list
1804 completions, etc.).
1805
1806 h. Readline now has an overwrite mode, toggled by the `overwrite-mode'
1807 bindable command, which could be bound to `Insert'.
1808
1809 i. New application-settable completion variable:
1810 rl_completion_suppress_append, inhibits appending of
1811 rl_completion_append_character to completed words.
1812
1813 j. New key bindings when reading an incremental search string: ^W yanks
1814 the currently-matched word out of the current line into the search
1815 string; ^Y yanks the rest of the current line into the search string,
1816 DEL or ^H deletes characters from the search string.
1817
1818 -------------------------------------------------------------------------------
1819 This is a terse description of the new features added to bash-2.05a since
1820 the release of bash-2.05. As always, the manual page (doc/bash.1) is
1821 the place to look for complete descriptions.
1822
1823 1. New Features in Bash
1824
1825 a. Added support for DESTDIR installation root prefix, so you can do a
1826 `make install DESTDIR=bash-root' and do easier binary packaging.
1827
1828 b. Added support for builtin printf "'" flag character as per latest POSIX
1829 drafts.
1830
1831 c. Support for POSIX.2 printf(1) length specifiers `j', `t', and `z' (from
1832 ISO C99).
1833
1834 d. New autoconf macro, RL_LIB_READLINE_VERSION, for use by other applications
1835 (bash doesn't use very much of what it returns).
1836
1837 e. `set [-+]o nolog' is recognized as required by the latest POSIX drafts,
1838 but ignored.
1839
1840 f. New read-only `shopt' option: login_shell. Set to non-zero value if the
1841 shell is a login shell.
1842
1843 g. New `\A' prompt string escape sequence; expands to time in 24 HH:MM format.
1844
1845 h. New `-A group/-g' option to complete and compgen; does group name
1846 completion.
1847
1848 i. New `-t' option to `hash' to list hash values for each filename argument.
1849
1850 j. New [-+]O invocation option to set and unset `shopt' options at startup.
1851
1852 k. configure's `--with-installed-readline' option now takes an optional
1853 `=PATH' suffix to set the root of the tree where readline is installed
1854 to PATH.
1855
1856 l. The ksh-like `ERR' trap has been added. The `ERR' trap will be run
1857 whenever the shell would have exited if the -e option were enabled.
1858 It is not inherited by shell functions.
1859
1860 m. `readonly', `export', and `declare' now print variables which have been
1861 given attributes but not set by assigning a value as just a command and
1862 a variable name (like `export foo') when listing, as the latest POSIX
1863 drafts require.
1864
1865 n. `bashbug' now requires that the subject be changed from the default.
1866
1867 o. configure has a new `--enable-largefile' option, like other GNU utilities.
1868
1869 p. `for' loops now allow empty word lists after `in', like the latest POSIX
1870 drafts require.
1871
1872 q. The builtin `ulimit' now takes two new non-numeric arguments: `hard',
1873 meaning the current hard limit, and `soft', meaning the current soft
1874 limit, in addition to `unlimited'
1875
1876 r. `ulimit' now prints the option letter associated with a particular
1877 resource when printing more than one limit.
1878
1879 s. `ulimit' prints `hard' or `soft' when a value is not `unlimited' but is
1880 one of RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively.
1881
1882 t. The `printf' builtin now handles the %a and %A conversions if they're
1883 implemented by printf(3).
1884
1885 u. The `printf' builtin now handles the %F conversion (just about like %f).
1886
1887 v. The `printf' builtin now handles the %n conversion like printf(3). The
1888 corresponding argument is the name of a shell variable to which the
1889 value is assigned.
1890
1891 2. New Features in Readline
1892
1893 a. Added extern declaration for rl_get_termcap to readline.h, making it a
1894 public function (it was always there, just not in readline.h).
1895
1896 b. New #defines in readline.h: RL_READLINE_VERSION, currently 0x0402,
1897 RL_VERSION_MAJOR, currently 4, and RL_VERSION_MINOR, currently 2.
1898
1899 c. New readline variable: rl_readline_version, mirrors RL_READLINE_VERSION.
1900
1901 d. New bindable boolean readline variable: match-hidden-files. Controls
1902 completion of files beginning with a `.' (on Unix). Enabled by default.
1903
1904 e. The history expansion code now allows any character to terminate a
1905 `:first-' modifier, like csh.
1906
1907 f. New bindable variable `history-preserve-point'. If set, the history
1908 code attempts to place the user at the same location on each history
1909 line retrieved with previous-history or next-history.
1910
1911 -------------------------------------------------------------------------------
1912 This is a terse description of the new features added to bash-2.05 since
1913 the release of bash-2.04. As always, the manual page (doc/bash.1) is
1914 the place to look for complete descriptions.
1915
1916 1. New Features in Bash
1917
1918 a. Added a new `--init-file' invocation argument as a synonym for `--rcfile',
1919 per the new GNU coding standards.
1920
1921 b. The /dev/tcp and /dev/udp redirections now accept service names as well as
1922 port numbers.
1923
1924 c. `complete' and `compgen' now take a `-o value' option, which controls some
1925 of the aspects of that compspec. Valid values are:
1926
1927 default - perform bash default completion if programmable
1928 completion produces no matches
1929 dirnames - perform directory name completion if programmable
1930 completion produces no matches
1931 filenames - tell readline that the compspec produces filenames,
1932 so it can do things like append slashes to
1933 directory names and suppress trailing spaces
1934
1935 d. A new loadable builtin, realpath, which canonicalizes and expands symlinks
1936 in pathname arguments.
1937
1938 e. When `set' is called without options, it prints function definitions in a
1939 way that allows them to be reused as input. This affects `declare' and
1940 `declare -p' as well. This only happens when the shell is not in POSIX
1941 mode, since POSIX.2 forbids this behavior.
1942
1943 f. Bash-2.05 once again honors the current locale setting when processing
1944 ranges within pattern matching bracket expressions (e.g., [A-Z]).
1945
1946 2. New Features in Readline
1947
1948 a. The blink timeout for paren matching is now settable by applications,
1949 via the rl_set_paren_blink_timeout() function.
1950
1951 b. _rl_executing_macro has been renamed to rl_executing_macro, which means
1952 it's now part of the public interface.
1953
1954 c. Readline has a new variable, rl_readline_state, which is a bitmap that
1955 encapsulates the current state of the library; intended for use by
1956 callbacks and hook functions.
1957
1958 d. New application-callable function rl_set_prompt(const char *prompt):
1959 expands its prompt string argument and sets rl_prompt to the result.
1960
1961 e. New application-callable function rl_set_screen_size(int rows, int cols):
1962 public method for applications to set readline's idea of the screen
1963 dimensions.
1964
1965 f. New function, rl_get_screen_size (int *rows, int *columns), returns
1966 readline's idea of the screen dimensions.
1967
1968 g. The timeout in rl_gather_tyi (readline keyboard input polling function)
1969 is now settable via a function (rl_set_keyboard_input_timeout()).
1970
1971 h. Renamed the max_input_history variable to history_max_entries; the old
1972 variable is maintained for backwards compatibility.
1973
1974 i. The list of characters that separate words for the history tokenizer is
1975 now settable with a variable: history_word_delimiters. The default
1976 value is as before.
1977
1978 -------------------------------------------------------------------------------
1979 This is a terse description of the new features added to bash-2.04 since
1980 the release of bash-2.03. As always, the manual page (doc/bash.1) is
1981 the place to look for complete descriptions.
1982
1983 1. New Features in Bash
1984
1985 a. The history builtin has a `-d offset' option to delete the history entry
1986 at position `offset'.
1987
1988 b. The prompt expansion code has two new escape sequences: \j, the number of
1989 active jobs; and \l, the basename of the shell's tty device name.
1990
1991 c. The `bind' builtin has a new `-x' option to bind key sequences to shell
1992 commands.
1993
1994 d. There is a new shell option, no_empty_command_completion, which, when
1995 enabled, disables command completion when TAB is typed on an empty line.
1996
1997 e. The `help' builtin has a `-s' option to just print a builtin's usage
1998 synopsis.
1999
2000 f. There are several new arithmetic operators: id++, id-- (variable
2001 post-increment/decrement), ++id, --id (variable pre-increment/decrement),
2002 expr1 , expr2 (comma operator).
2003
2004 g. There is a new ksh-93 style arithmetic for command:
2005 for ((expr1 ; expr2; expr3 )); do list; done
2006
2007 h. The `read' builtin has a number of new options:
2008 -t timeout only wait timeout seconds for input
2009 -n nchars only read nchars from input instead of a full line
2010 -d delim read until delim rather than newline
2011 -s don't echo input chars as they are read
2012
2013 i. The redirection code now handles several filenames specially:
2014 /dev/fd/N, /dev/stdin, /dev/stdout, and /dev/stderr, whether or
2015 not they are present in the file system.
2016
2017 j. The redirection code now recognizes pathnames of the form
2018 /dev/tcp/host/port and /dev/udp/host/port, and tries to open a socket
2019 of the appropriate type to the specified port on the specified host.
2020
2021 k. The ksh-93 ${!prefix*} expansion, which expands to the names of all
2022 shell variables with prefix PREFIX, has been implemented.
2023
2024 l. There is a new dynamic variable, FUNCNAME, which expands to the name of
2025 a currently-executing function. Assignments to FUNCNAME have no effect.
2026
2027 m. The GROUPS variable is no longer readonly; assignments to it are silently
2028 discarded. This means it can be unset.
2029
2030 n. A new programmable completion facility, with two new builtin commands:
2031 complete and compgen.
2032
2033 o. configure has a new option, `--enable-progcomp', to compile in the
2034 programmable completion features (enabled by default).
2035
2036 p. `shopt' has a new option, `progcomp', to enable and disable programmable
2037 completion at runtime.
2038
2039 q. Unsetting HOSTFILE now clears the list of hostnames used for completion.
2040
2041 r. configure has a new option, `--enable-bash-malloc', replacing the old
2042 `--with-gnu-malloc' (which is still present for backwards compatibility).
2043
2044 s. There is a new manual page describing rbash, the restricted shell.
2045
2046 t. `bashbug' has new `--help' and `--version' options.
2047
2048 u. `shopt' has a new `xpg_echo' option, which controls the behavior of
2049 `echo' with respect to backslash-escaped characters at runtime.
2050
2051 v. If NON_INTERACTIVE_LOGIN_SHELLS is defined, all login shells read the
2052 startup files, even if they are not interactive.
2053
2054 w. The LC_NUMERIC variable is now treated specially, and used to set the
2055 LC_NUMERIC locale category for number formatting, e.g., when `printf'
2056 displays floating-point numbers.
2057
2058 2. New features in Readline
2059
2060 a. Parentheses matching is now always compiled into readline, and enabled
2061 or disabled when the value of the `blink-matching-paren' variable is
2062 changed.
2063
2064 b. MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename.
2065
2066 c. MS-DOS systems now use ~/_history as the default history file.
2067
2068 d. history-search-{forward,backward} now leave the point at the end of the
2069 line when the string to search for is empty, like
2070 {reverse,forward}-search-history.
2071
2072 e. history-search-{forward,backward} now leave the last history line found
2073 in the readline buffer if the second or subsequent search fails.
2074
2075 f. New function for use by applications: rl_on_new_line_with_prompt, used
2076 when an application displays the prompt itself before calling readline().
2077
2078 g. New variable for use by applications: rl_already_prompted. An application
2079 that displays the prompt itself before calling readline() must set this to
2080 a non-zero value.
2081
2082 h. A new variable, rl_gnu_readline_p, always 1. The intent is that an
2083 application can verify whether or not it is linked with the `real'
2084 readline library or some substitute.
2085
2086 -------------------------------------------------------------------------------
2087 This is a terse description of the new features added to bash-2.03 since
2088 the release of bash-2.02. As always, the manual page (doc/bash.1) is
2089 the place to look for complete descriptions.
2090
2091 1. New Features in Bash
2092
2093 a. New `shopt' option, `restricted_shell', indicating whether or not the
2094 shell was started in restricted mode, for use in startup files.
2095
2096 b. Filename generation is now performed on the words between ( and ) in
2097 array assignments (which it probably should have done all along).
2098
2099 c. OLDPWD is now auto-exported, as POSIX.2 seems to require.
2100
2101 d. ENV and BASH_ENV are read-only variables in a restricted shell.
2102
2103 e. A change was made to the startup file code so that any shell begun with
2104 the `--login' option, even non-interactive shells, will source the login
2105 shell startup files.
2106
2107 2. New Features in Readline
2108
2109 a. Many changes to the signal handling:
2110 o Readline now catches SIGQUIT and cleans up the tty before returning;
2111 o A new variable, rl_catch_signals, is available to application writers
2112 to indicate to readline whether or not it should install its own
2113 signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP,
2114 SIGTTIN, and SIGTTOU;
2115 o A new variable, rl_catch_sigwinch, is available to application
2116 writers to indicate to readline whether or not it should install its
2117 own signal handler for SIGWINCH, which will chain to the calling
2118 applications's SIGWINCH handler, if one is installed;
2119 o There is a new function, rl_free_line_state, for application signal
2120 handlers to call to free up the state associated with the current
2121 line after receiving a signal;
2122 o There is a new function, rl_cleanup_after_signal, to clean up the
2123 display and terminal state after receiving a signal;
2124 o There is a new function, rl_reset_after_signal, to reinitialize the
2125 terminal and display state after an application signal handler
2126 returns and readline continues
2127
2128 b. There is a new function, rl_resize_terminal, to reset readline's idea of
2129 the screen size after a SIGWINCH.
2130
2131 c. New public functions: rl_save_prompt and rl_restore_prompt. These were
2132 previously private functions with a `_' prefix.
2133
2134 d. New function hook: rl_pre_input_hook, called just before readline starts
2135 reading input, after initialization.
2136
2137 e. New function hook: rl_display_matches_hook, called when readline would
2138 display the list of completion matches. The new function
2139 rl_display_match_list is what readline uses internally, and is available
2140 for use by application functions called via this hook.
2141
2142 f. New bindable function, delete-char-or-list, like tcsh.
2143
2144 g. A new variable, rl_erase_empty_line, which, if set by an application using
2145 readline, will cause readline to erase, prompt and all, lines on which the
2146 only thing typed was a newline.
2147
2148 h. New bindable variable: `isearch-terminators'.
2149
2150 i. New bindable function: `forward-backward-delete-char' (unbound by default).
2151
2152 -------------------------------------------------------------------------------
2153 This is a terse description of the new features added to bash-2.02 since
2154 the release of bash-2.01.1. As always, the manual page (doc/bash.1) is
2155 the place to look for complete descriptions.
2156
2157 1. New Features in Bash
2158
2159 a. A new version of malloc, based on the older GNU malloc, that has many
2160 changes, is more page-based, is more conservative with memory usage,
2161 and does not `orphan' large blocks when they are freed.
2162
2163 b. A new version of gmalloc, based on the old GLIBC malloc, with many
2164 changes and range checking included by default.
2165
2166 c. A new implementation of fnmatch(3) that includes full POSIX.2 Basic
2167 Regular Expression matching, including character classes, collating
2168 symbols, equivalence classes, and support for case-insensitive pattern
2169 matching.
2170
2171 d. ksh-88 egrep-style extended pattern matching ([@+*?!](patlist)) has been
2172 implemented, controlled by a new `shopt' option, `extglob'.
2173
2174 e. There is a new ksh-like `[[' compound command, which implements
2175 extended `test' functionality.
2176
2177 f. There is a new `printf' builtin, implemented according to the POSIX.2
2178 specification.
2179
2180 g. There is a new feature for command substitution: $(< filename) now expands
2181 to the contents of `filename', with any trailing newlines removed
2182 (equivalent to $(cat filename)).
2183
2184 h. There are new tilde prefixes which expand to directories from the
2185 directory stack.
2186
2187 i. There is a new `**' arithmetic operator to do exponentiation.
2188
2189 j. There are new configuration options to control how bash is linked:
2190 `--enable-profiling', to allow bash to be profiled with gprof, and
2191 `--enable-static-link', to allow bash to be linked statically.
2192
2193 k. There is a new configuration option, `--enable-cond-command', which
2194 controls whether or not the `[[' command is included. It is on by
2195 default.
2196
2197 l. There is a new configuration option, `--enable-extended-glob', which
2198 controls whether or not the ksh extended globbing feature is included.
2199 It is enabled by default.
2200
2201 m. There is a new configuration #define in config.h.top that, when enabled,
2202 will cause all login shells to source /etc/profile and one of the user-
2203 specific login shell startup files, whether or not the shell is
2204 interactive.
2205
2206 n. There is a new invocation option, `--dump-po-strings', to dump
2207 a shell script's translatable strings ($"...") in GNU `po' format.
2208
2209 o. There is a new `shopt' option, `nocaseglob', to enable case-insensitive
2210 pattern matching when globbing filenames and using the `case' construct.
2211
2212 p. There is a new `shopt' option, `huponexit', which, when enabled, causes
2213 the shell to send SIGHUP to all jobs when an interactive login shell
2214 exits.
2215
2216 q. `bind' has a new `-u' option, which takes a readline function name as an
2217 argument and unbinds all key sequences bound to that function in a
2218 specified keymap.
2219
2220 r. `disown' now has `-a' and `-r' options, to limit operation to all jobs
2221 and running jobs, respectively.
2222
2223 s. The `shopt' `-p' option now causes output to be displayed in a reusable
2224 format.
2225
2226 t. `test' has a new `-N' option, which returns true if the filename argument
2227 has been modified since it was last accessed.
2228
2229 u. `umask' now has a `-p' option to print output in a reusable format.
2230
2231 v. A new escape sequence, `\xNNN', has been added to the `echo -e' and $'...'
2232 translation code. It expands to the character whose ascii code is NNN
2233 in hexadecimal.
2234
2235 w. The prompt string expansion code has a new `\r' escape sequence.
2236
2237 x. The shell may now be cross-compiled for the CYGWIN32 environment on
2238 a Unix machine.
2239
2240 2. New Features in Readline
2241
2242 a. There is now an option for `iterative' yank-last-arg handline, so a user
2243 can keep entering `M-.', yanking the last argument of successive history
2244 lines.
2245
2246 b. New variable, `print-completions-horizontally', which causes completion
2247 matches to be displayed across the screen (like `ls -x') rather than up
2248 and down the screen (like `ls').
2249
2250 c. New variable, `completion-ignore-case', which causes filename completion
2251 and matching to be performed case-insensitively.
2252
2253 d. There is a new bindable command, `magic-space', which causes history
2254 expansion to be performed on the current readline buffer and a space to
2255 be inserted into the result.
2256
2257 e. There is a new bindable command, `menu-complete', which enables tcsh-like
2258 menu completion (successive executions of menu-complete insert a single
2259 completion match, cycling through the list of possible completions).
2260
2261 f. There is a new bindable command, `paste-from-clipboard', for use on Win32
2262 systems, to insert the text from the Win32 clipboard into the editing
2263 buffer.
2264
2265 g. The key sequence translation code now understands printf-style backslash
2266 escape sequences, including \NNN octal escapes. These escape sequences
2267 may be used in key sequence definitions or macro values.
2268
2269 h. An `$include' inputrc file parser directive has been added.
2270
2271 -------------------------------------------------------------------------------
2272 This is a terse description of the new features added to bash-2.01 since
2273 the release of bash-2.0. As always, the manual page (doc/bash.1) is the
2274 place to look for complete descriptions.
2275
2276 1. New Features in Bash
2277
2278 a. There is a new builtin array variable: GROUPS, the set of groups to which
2279 the user belongs. This is used by the test suite.
2280
2281 2. New Features in Readline
2282
2283 a. If a key sequence bound to `universal-argument' is read while reading a
2284 numeric argument started with `universal-argument', it terminates the
2285 argument but is otherwise ignored. This provides a way to insert multiple
2286 instances of a digit string, and is how GNU emacs does it.
2287
2288 -------------------------------------------------------------------------------
2289 This is a terse description of the new features added to bash-2.0 since
2290 the release of bash-1.14.7. As always, the manual page (doc/bash.1) is
2291 the place to look for complete descriptions.
2292
2293 1. New Features in Bash
2294
2295 a. There is a new invocation option, -D, that dumps translatable strings
2296 in a script.
2297
2298 b. The `long' invocation options must now be prefixed with `--'.
2299
2300 c. New long invocation options: --dump-strings, --help, --verbose
2301
2302 d. The `nolineediting' invocation option was renamed to `noediting'.
2303
2304 e. The `nobraceexpansion' and `quiet' long invocation options were removed.
2305
2306 f. The `--help' and `--version' long options now work as the GNU coding
2307 standards specify.
2308
2309 g. If invoked as `sh', bash now enters posix mode after reading the
2310 startup files, and reads and executes commands from the file named
2311 by $ENV if interactive (as POSIX.2 specifies). A login shell invoked
2312 as `sh' reads $ENV after /etc/profile and ~/.profile.
2313
2314 h. There is a new reserved word, `time', for timing pipelines, builtin
2315 commands, and shell functions. It uses the value of the TIMEFORMAT
2316 variable as a format string describing how to print the timing
2317 statistics.
2318
2319 i. The $'...' quoting syntax expands ANSI-C escapes in ... and leaves the
2320 result single-quoted.
2321
2322 j. The $"..." quoting syntax performs locale-specific translation of ...
2323 and leaves the result double-quoted.
2324
2325 k. LINENO now works correctly in functions.
2326
2327 l. New variables: DIRSTACK, PIPESTATUS, BASH_VERSINFO, HOSTNAME, SHELLOPTS,
2328 MACHTYPE. The first three are array variables.
2329
2330 m. The BASH_VERSION and BASH_VERSINFO variables now include the shell's
2331 `release status' (alpha[N], beta[N], release).
2332
2333 n. Some variables have been removed: MAIL_WARNING, notify, history_control,
2334 command_oriented_history, glob_dot_filenames, allow_null_glob_expansion,
2335 nolinks, hostname_completion_file, noclobber, no_exit_on_failed_exec, and
2336 cdable_vars. Most of them are now implemented with the new `shopt'
2337 builtin; others were already implemented by `set'.
2338
2339 o. Bash now uses some new variables: LC_ALL, LC_MESSAGES, LC_CTYPE,
2340 LC_COLLATE, LANG, GLOBIGNORE, HISTIGNORE.
2341
2342 p. The shell now supports integer-indexed arrays of unlimited length,
2343 with a new compound assignment syntax and changes to the appropriate
2344 builtin commands (declare/typeset, read, readonly, etc.). The array
2345 index may be an arithmetic expression.
2346
2347 q. ${!var}: indirect variable expansion, equivalent to eval \${$var}.
2348
2349 r. ${parameter:offset[:length]}: variable substring extraction.
2350
2351 s. ${parameter/pattern[/[/]string]}: variable pattern substitution.
2352
2353 t. The $[...] arithmetic expansion syntax is no longer supported, in
2354 favor of $((...)).
2355
2356 u. Aliases can now be expanded in shell scripts with a shell option
2357 (shopt expand_aliases).
2358
2359 v. History and history expansion can now be used in scripts with
2360 set -o history and set -H.
2361
2362 w. All builtins now return an exit status of 2 for incorrect usage.
2363
2364 x. Interactive shells resend SIGHUP to all running or stopped children
2365 if (and only if) they exit due to a SIGHUP.
2366
2367 y. New prompting expansions: \a, \e, \H, \T, \@, \v, \V.
2368
2369 z. Variable expansion in prompt strings is now controllable via a shell
2370 option (shopt promptvars).
2371
2372 aa. Bash now defaults to using command-oriented history.
2373
2374 bb. The history file ($HISTFILE) is now truncated to $HISTFILESIZE after
2375 being written.
2376
2377 cc. The POSIX.2 conditional arithmetic evaluation syntax (expr ? expr : expr)
2378 has been implemented.
2379
2380 dd. Each builtin now accepts `--' to signify the end of the options, except
2381 as documented (echo, etc.).
2382
2383 ee. All builtins use -p to display values in a re-readable format where
2384 appropriate, except as documented (echo, type, etc.).
2385
2386 ff. The `alias' builtin has a new -p option.
2387
2388 gg. Changes to the `bind' builtin:
2389 o has new options: -psPSVr.
2390 o the `-d' option was renamed to `-p'
2391 o the `-v' option now dumps variables; the old `-v' is now `-P'
2392
2393 hh. The `bye' synonym for `exit' was removed.
2394
2395 ii. The -L and -P options to `cd' and `pwd' have been documented.
2396
2397 jj. The `cd' builtin now does spelling correction on the directory name
2398 by default. This is settable with a shell option (shopt cdspell).
2399
2400 kk. The `declare' builtin has new options: -a, -F, -p.
2401
2402 ll. The `dirs' builtin has new options: -c, -p, -v.
2403
2404 mm. The new `disown' builtin removes jobs from the shell's jobs table
2405 or inhibits the resending of SIGHUP when the shell receives a
2406 SIGHUP.
2407
2408 nn. The `echo' builtin has a new escape character: \e.
2409
2410 oo. The `enable' builtin can now load new builtins dynamically from shared
2411 objects on systems with the dlopen/dlsym interface. There are a number
2412 of examples in the examples/loadables directory. There are also
2413 new options: -d, -f, -s, -p.
2414
2415 pp. The `-all' option to `enable' was removed in favor of `-a'.
2416
2417 qq. The `exec' builtin has new options: -l, -c, -a.
2418
2419 rr. The `hash' builtin has a new option: -p.
2420
2421 ss. The `history' builtin has new options: -c, -p, -s.
2422
2423 tt. The `jobs' builtin has new options: -r, -s.
2424
2425 uu. The `kill' builtin has new options: -n signum, -l signame.
2426
2427 vv. The `pushd' and `popd' builtins have a new option: -n.
2428
2429 ww. The `read' builtin has new options: -p prompt, -e, -a.
2430
2431 xx. The `readonly' builtin has a new -a option, and the -n option was removed.
2432
2433 yy. Changes to the `set' builtin:
2434 o new options: -B, -o keyword, -o onecmd, -o history
2435 o options removed: -l, -d, -o nohash
2436 o options changed: +o, -h, -o hashall
2437 o now displays variables in a format that can be re-read as input
2438
2439 zz. The new `shopt' builtin controls shell optional behavior previously
2440 done by setting and unsetting certain shell variables.
2441
2442 aaa. The `test' builtin has new operators: -o option, s1 == s2, s1 < s2,
2443 and s1 > s2, where s1 and s2 are strings.
2444
2445 bbb. There is a new trap, DEBUG, executed after every simple command.
2446
2447 ccc. The `trap' builtin has a new -p option.
2448
2449 ddd. The `ulimit' builtin has a new -l option on 4.4BSD-based systems.
2450
2451 eee. The PS1, PS2, PATH, and IFS variables may now be unset.
2452
2453 fff. The restricted shell mode has been expanded and is now documented.
2454
2455 ggg. Security improvements:
2456 o functions are not imported from the environment if running setuid
2457 or with -p
2458 o no startup files are sourced if running setuid or with -p
2459
2460 hhh. The documentation has been overhauled: the texinfo manual was
2461 expanded, and HTML versions of the man page and texinfo manual
2462 are included.
2463
2464 iii. Changes to Posix mode:
2465 o Command lookup now finds special builtins before shell functions.
2466 o Failure of a special builtin causes a non-interactive shell to
2467 exit. Failures are defined in the POSIX.2 specification.
2468 o If the `cd' builtin finds a directory to change to using $CDPATH,
2469 the value assigned to PWD when `cd' completes does not contain
2470 any symbolic links.
2471 o A non-interactive shell exits if a variable assignment error
2472 occurs when no command name follows the assignment statements.
2473 o A non-interactive shell exits if the iteration variable in a
2474 `for' statement or the selection variable in a `select' statement
2475 is read-only or another variable assignment error occurs.
2476 o The `<>' redirection operator now opens a file for both stdin and
2477 stdout by default, not just when in posix mode.
2478 o Assignment statements preceding special builtins now persist in
2479 the shell's environment when the builtin completes.
2480
2481 Posix mode is now completely POSIX.2-compliant (modulo bugs). When
2482 invoked as sh, bash should be completely POSIX.2-compliant.
2483
2484 jjj. The default value of PS1 is now "\s-\v\$ ".
2485
2486 kkk. The ksh-like ((...)) arithmetic command syntax has been implemented.
2487 This is exactly equivalent to `let "..."'.
2488
2489 lll. Integer constants have been extended to base 64.
2490
2491 mmm. The `ulimit' builtin now sets both hard and soft limits and reports the
2492 soft limit by default.
2493
2494 2. New Features in Readline
2495
2496 a. New variables: enable-keypad, input-meta (new name for meta-flag),
2497 mark-directories, visible-stats (now documented), disable-completion,
2498 comment-begin.
2499
2500 b. New bindable commands: kill-region, copy-region-as-kill,
2501 copy-backward-word, copy-forward-word, set-mark, exchange-point-and-mark,
2502 character-search, character-search-backward, insert-comment,
2503 glob-expand-word, glob-list-expansions, dump-variables, dump-macros.
2504
2505 c. New emacs keybindings: delete-horizontal-space (M-\),
2506 insert-completions (M-*), possible-completions (M-=).
2507
2508 d. The history-search-backward and history-search-forward commands were
2509 modified to be the same as previous-line and next-line if point is at
2510 the start of the line.
2511
2512 e. More file types are available for the visible-stats mode.
2513
2514 3. Changes of interest in the Bash implementation
2515
2516 a. There is a new autoconf-based configuration mechanism.
2517
2518 b. More things have been moved from Posix mode to standard shell behavior.
2519
2520 c. The trace output (set -x) now inserts quotes where necessary so it can
2521 be reused as input.
2522
2523 d. There is a compile-time option for a system-wide interactive shell
2524 startup file (disabled by default).
2525
2526 e. The YACC grammar is smaller and tighter, and all 66 shift-reduce
2527 conflicts are gone. Several parsing bugs have been fixed.
2528
2529 f. Builtin option parsing has been regularized (using internal_getopt()),
2530 with the exception of `echo', `type', and `set'.
2531
2532 g. Builtins now return standard usage messages constructed from the
2533 `short doc' used by the help builtin.
2534
2535 h. Completion now quotes using backslashes by default, but honors
2536 user-supplied quotes.
2537
2538 i. The GNU libc malloc is available as a configure-time option.
2539
2540 j. There are more internationalization features; bash uses gettext if
2541 it is available. The $"..." translation syntax uses the current
2542 locale and gettext.
2543
2544 k. There is better reporting of job termination when the shell is not
2545 interactive.
2546
2547 l. The shell is somewhat more efficient: it uses a little less memory and
2548 makes fewer system calls.
2549
2550 4. Changes of interest in the Readline implementation
2551
2552 a. There is now support for readline `callback' functions.
2553
2554 b. There is now support for user-supplied input, redisplay, and terminal
2555 preparation functions.
2556
2557 c. Most of the shell-specific code in readline has been generalized or
2558 removed.
2559
2560 d. Most of the annoying redisplay bugs have been fixed, notably the problems
2561 with incremental search and excessive redrawing when special characters
2562 appear in the prompt string.
2563
2564 e. There are new library functions and variables available to application
2565 writers, most having to do with completion and quoting.
2566
2567 f. The NEWLINE character (^J) is now treated as a search terminator by the
2568 incremental search functions.
2569 -------------------------------------------------------------------------------
2570
2571 Copying and distribution of this file, with or without modification,
2572 are permitted in any medium without royalty provided the copyright
2573 notice and this notice are preserved. This file is offered as-is,
2574 without any warranty.