]> git.ipfire.org Git - thirdparty/bash.git/blame - NEWS
Bash-5.2 patch 26: fix typo when specifying readline's custom color prefix
[thirdparty/bash.git] / NEWS
CommitLineData
74091dd4
CR
1This is a terse description of the new features added to bash-5.2 since
2the release of bash-5.1. As always, the manual page (doc/bash.1) is
3the place to look for complete descriptions.
4
51. New Features in Bash
6
7a. The bash malloc returns memory that is aligned on 16-byte boundaries.
8
9b. There is a new internal timer framework used for read builtin timeouts.
10
11c. 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
18d. 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
22e. Here-document parsing now handles $'...' and $"..." quoting when reading the
23 here-document body.
24
25f. The `shell-expand-line' and `history-and-alias-expand-line' bindable readline
26 commands now understand $'...' and $"..." quoting.
27
28g. There is a new `spell-correct-word' bindable readline command to perform
29 spelling correction on the current word.
30
31h. 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
35i. There is a default value for $BASH_LOADABLES_PATH in config-top.h.
36
37j. Associative array assignment and certain instances of referencing (e.g.,
38 `test -v' now allow `@' and `*' to be used as keys.
39
40k. Bash attempts to expand indexed array subscripts only once when executing
41 shell constructs and word expansions.
42
43l. 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
48m. Additional builtins (printf/test/read/wait) do a better job of not
49 parsing array subscripts if array_expand_once is set.
50
51n. New READLINE_ARGUMENT variable set to numeric argument for readline commands
52 defined using `bind -x'.
53
54o. 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
58p. 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
61q. 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
65r. 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
69s. The new `noexpand_translations' option controls whether or not the translated
70 output of $"..." is single-quoted.
71
72t. There is a new parameter transformation operator: @k. This is like @K, but
73 expands the result to separate words after word splitting.
74
75u. 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
79v. 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
83w. Invalid parameter transformation operators are now invalid word expansions,
84 and so cause fatal errors in non-interactive shells.
85
86x. 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
91y. `command -p' no longer looks in the hash table for the specified command.
92
93z. The new `--enable-translatable-strings' option to `configure' allows $"..."
94 support to be compiled in or out.
95
96aa. The new `globskipdots' shell option forces pathname expansion never to
97 return `.' or `..' unless explicitly matched. It is enabled by default.
98
99bb. 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
103cc. There is a new bindable readline command name:
104 `vi-edit-and-execute-command'.
105
106dd. 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
110ee. The `globbing' completion code now takes the `globstar' option into account.
111
112ff. `suspend -f' now forces the shell to suspend even if job control is not
113 currently enabled.
114
115gg. Since there is no `declare -' equivalent of `local -', make sure to use
116 `local -' in the output of `local -p'.
117
1182. New Features in Readline
119
120a. There is now an HS_HISTORY_VERSION containing the version number of the
121 history library for applications to use.
122
123b. History expansion better understands multiple history expansions that may
124 contain strings that would ordinarily inhibit history expansion (e.g.,
125 `abc!$!$').
126
127c. 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
132d. Automatically bind termcap key sequences for page-up and page-down to
133 history-search-backward and history-search-forward, respectively.
134
135e. 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
139f. `vi-undo' is now a bindable command.
140
141g. 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
147h. rl_completer_word_break_characters is now `const char *' like
148 rl_basic_word_break_characters.
149
150i. 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
154j. 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
159k. 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
163l. 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
167m. 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-------------------------------------------------------------------------------
8868edaf
CR
172This is a terse description of the new features added to bash-5.1 since
173the release of bash-5.0. As always, the manual page (doc/bash.1) is
174the place to look for complete descriptions.
175
1761. New Features in Bash
177
178a. `bind -x' now supports different bindings for different editing modes and
179 keymaps.
180
181b. Bash attempts to optimize the number of times it forks when executing
182 commands in subshells and from `bash -c'.
183
184c. 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
188d. There are new loadable builtins: mktemp, accept, mkfifo, csv, cut/lcut
189
190e. 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
193f. 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
196g. `read -e' may now be used with arbitrary file descriptors (`read -u N').
197
198h. The `select' builtin now runs traps if its internal call to the read builtin
199 is interrupted by a signal.
200
201i. 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
206j. shell-transpose-words: a new bindable readline command that uses the same
207 definition of word as shell-forward-word, etc.
208
209k. The shell now adds default bindings for shell-forward-word,
210 shell-backward-word, shell-transpose-words, and shell-kill-word.
211
212l. Bash now allows ARGV0 appearing in the initial shell environment to set $0.
213
214m. 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
218n. The `test -N' operator uses nanosecond timestamp granularity if it's
219 available.
220
221o. 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
226p. BASH_REMATCH is no longer readonly.
227
228q. wait: has a new -p VARNAME option, which stores the PID returned by `wait -n'
229 or `wait' without arguments.
230
231r. 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
235s. Bash now allows SIGINT trap handlers to execute recursively.
236
237t. Bash now saves and restores state around setting and unsetting posix mode,
238 instead of having unsetting posix mode set a known state.
239
240u. Process substitution is now available in posix mode.
241
242v. READLINE_MARK: a new variable available while executing commands bound with
243 `bind -x', contains the value of the mark.
244
245w. Bash removes SIGCHLD from the set of blocked signals if it's blocked at shell
246 startup.
247
248x. `test -v N' can now test whether or not positional parameter N is set.
249
250y. `local' now honors the `-p' option to display all local variables at the
251 current context.
252
253z. The `@a' variable transformation now prints attributes for unset array
254 variables.
255
256aa. 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
259bb. `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
262cc. When run from a -c command, `jobs' now reports the status of completed jobs.
263
264dd. New `U', `u', and `L' parameter transformations to convert to uppercase,
265 convert first character to uppercase, and convert to lowercase,
266 respectively.
267
268ee. 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
271ff. `ulimit' has a -R option to report and set the RLIMIT_RTTIME resource.
272
273gg. 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
279hh. New `K' parameter transformation to display associative arrays as key-
280 value pairs.
281
282ii. Writing history to syslog now handles messages longer than the syslog max
283 length by writing multiple messages with a sequence number.
284
285jj. SECONDS and RANDOM may now be assigned using arithmetic expressions, since
286 they are nominally integer variables. LINENO is not an integer variable.
287
288kk. Bash temporarily suppresses the verbose option when running the DEBUG trap
289 while running a command from the `fc' builtin.
290
291ll. `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
294mm. The associative array implementation can now dynamically increase the
295 size of the hash table based on insertion patterns.
296
297nn. HISTFILE is now readonly in a restricted shell.
298
299oo. The bash malloc now returns memory that is 16-byte aligned on 64-bit
300 systems.
301
302pp. If the hash builtin is listing hashed filenames portably, don't print
303 anything if the table is empty.
304
305qq. GLOBIGNORE now ignores `.' and `..' as a terminal pathname component.
306
307rr. Bash attempts to optimize away forks in the last command in a function body
308 under appropriate circumstances.
309
310ss. The globbing code now uses fnmatch(3) to check collation elements (if
311 available) even in cases without multibyte characters.
312
313tt. 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
316uu. The shell now attempts to unlink all FIFOs on exit, whether a consuming
317 process has finished with them or not.
318
319vv. There is a new contributed loadable builtin: asort.
320
3212. New Features in Readline
322
323a. 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
327b. Bracketed paste mode works in more places: incremental search strings, vi
328 overstrike mode, character search, and reading numeric arguments.
329
330c. Readline automatically switches to horizontal scrolling if the terminal has
331 only one line.
332
333d. Unbinding all key sequences bound to a particular readline function now
334 descends into keymaps for multi-key sequences.
335
336e. 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
339f. 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
344g. Readline sets the mark in several additional commands.
345
346h. Bracketed paste mode is enabled by default.
347
348i. 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
352j. The bindable operate-and-get-next command (and its default bindings) are
353 now part of readline instead of a bash-specific addition.
354
355k. The signal cleanup code now blocks SIGINT while processing after a SIGINT.
356
357-------------------------------------------------------------------------------
d233b485
CR
358This is a terse description of the new features added to bash-5.0 since
359the release of bash-4.4. As always, the manual page (doc/bash.1) is
360the place to look for complete descriptions.
361
3621. New Features in Bash
363
364a. The `wait' builtin can now wait for the last process substitution created.
365
366b. There is an EPOCHSECONDS variable, which expands to the time in seconds
367 since the Unix epoch.
368
369c. There is an EPOCHREALTIME variable, which expands to the time in seconds
370 since the Unix epoch with microsecond granularity.
371
372d. New loadable builtins: rm, stat, fdflags.
373
374e. BASH_ARGV0: a new variable that expands to $0 and sets $0 on assignment.
375
376f. 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
380g. `history -d' understands negative arguments: negative arguments offset from
381 the end of the history list.
382
383h. The `name' argument to the `coproc' reserved word now undergoes word
384 expansion, so unique coprocs can be created in loops.
385
386i. A nameref name resolution loop in a function now resolves to a variable by
387 that name in the global scope.
388
8868edaf 389j. The `wait' builtin now has a `-f' option, which signifies to wait until the
d233b485
CR
390 specified job or process terminates, instead of waiting until it changes
391 state.
392
393k. 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
397l. Process substitution does not inherit the `v' option, like command
398 substitution.
399
400m. 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
403n. 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
406o. 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
409p. `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
412q. A numeric argument to the line editing `operate-and-get-next' command
413 specifies which history entry to use.
414
415r. The positional parameters are now assigned before running the shell startup
416 files, so startup files can use $@.
417
418s. There is a compile-time option that forces the shell to disable the check
419 for an inherited OLDPWD being a directory.
420
421t. The `history' builtin can now delete ranges of history entries using
422 `-d start-end'.
423
424u. 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
427v. The command completion code now matches aliases and shell function names
428 case-insensitively if the readline completion-ignore-case variable is set.
429
430w. There is a new `assoc_expand_once' shell option that attempts to expand
431 associative array subscripts only once.
432
433x. 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
437y. The `umask' builtin now allows modes and masks greater than octal 777.
438
439z. The `times' builtin now honors the current locale when printing a decimal
440 point.
441
442aa. There is a new (disabled by default, undocumented) shell option to enable
443 and disable sending history to syslog at runtime.
444
445bb. 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
449cc. You can set the default value for $HISTSIZE at build time in config-top.h.
450
451dd. The `complete' builtin now accepts a -I option that applies the completion
452 to the initial word on the line.
453
454ee. 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
458ff. 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
463gg. 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
467hh. The `globasciiranges' option is now enabled by default; it can be set to
468 off by default at configuration time.
469
470ii. Associative and indexed arrays now allow subscripts consisting solely of
471 whitespace.
472
473jj. `checkwinsize' is now enabled by default.
474
475kk. The `localvar_unset' shopt option is now visible and documented.
476
477ll. The `progcomp_alias' shopt option is now visible and documented.
478
479mm. The signal name processing code now understands `SIGRTMIN+n' all the way
480 up to SIGRTMAX.
481
482nn. There is a new `seq' loadable builtin.
483
484oo. Trap execution now honors the (internal) max invocations of `eval', since
485 traps are supposed to be executed as if using `eval'.
486
487pp. The $_ variable doesn't change when the shell executes a command that forks.
488
489qq. The `kill' builtin now supports -sSIGNAME and -nSIGNUM, even though
490 conforming applications aren't supposed to use them.
491
492rr. POSIX mode now enables the `shift_verbose' option.
493
4942. New Features in Readline
495
496a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as
497 Posix specifies (uses fnmatch(3) if available).
498
499b. 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
503c. There are default key bindings for control-arrow-key key combinations.
504
505d. A negative argument (-N) to `quoted-insert' means to insert the next N
506 characters using quoted-insert.
507
508e. 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
512f. 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
515g. 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
521h. 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
525i. 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
529j. Readline now allows application-defined keymap names; there is a new public
530 function, rl_set_keymap_name(), to do that.
531
532k. The "Insert" keypad key, if available, now puts readline into overwrite
533 mode.
534
535-------------------------------------------------------------------------------
a0c0a00f
CR
536This is a terse description of the new features added to bash-4.4 since
537the release of bash-4.3. As always, the manual page (doc/bash.1) is
538the place to look for complete descriptions.
539
5401. New Features in Bash
541
542a. 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
546b. Command and process substitutions now turn off the `-v' option when
547 executing, as other shells seem to do.
548
549c. The default value for the `checkhash' shell option may now be set at
550 compile time with a #define.
551
552d. 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
556e. The maximum number of nested recursive calls to `eval' is now settable in
557 config-top.h; the default is no limit.
558
559f. 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
563g. The maximum number of nested recursive calls to `source' is now settable
564 in config-top.h; the default is no limit.
565
566h. All builtin commands recognize the `--help' option and print a usage
567 summary.
568
569i. Bash does not allow function names containing `/' and `=' to be exported.
570
571j. The `ulimit' builtin has new -k (kqueues) and -P (pseudoterminals) options.
572
573k. The shell now allows `time ; othercommand' to time null commands.
574
575l. 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
579m. `printf -v var ""' will now set `var' to the empty string, as if `var=""'
580 had been executed.
581
582n. GLOBIGNORE, the pattern substitution word expansion, and programmable
583 completion match filtering now honor the value of the `nocasematch' option.
584
585o. There is a new ${parameter@spec} family of operators to transform the
586 value of `parameter'.
587
588p. 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
594q. 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
598r. Executing the rhs of && and || will no longer cause the shell to fork if
599 it's not necessary.
600
601s. 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
605t. `complete' and `compgen' have a new `-o nosort' option, which forces
606 readline to not sort the completion matches.
607
608u. Bash now allows waiting for the most recent process substitution, since it
609 appears as $!.
610
611v. The `unset' builtin now unsets a scalar variable if it is subscripted with
612 a `0', analogous to the ${var[0]} expansion.
613
614w. `set -i' is no longer valid, as in other shells.
615
616x. 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
620y. 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
623z. 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
627aa. New variable: EXECIGNORE; a colon-separate list of patterns that will
628 cause matching filenames to be ignored when searching for commands.
629
630bb. 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
634cc. `make install' now installs the example loadable builtins and a set of
635 bash headers to use when developing new loadable builtins.
636
637dd. `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
641ee. 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
645ff. The `complete_fullquote' option to `shopt' changes filename completion to
646 quote all shell metacharacters in filenames and directory names.
647
648gg. The `kill' builtin now has a `-L' option, equivalent to `-l', for
649 compatibility with Linux standalone versions of kill.
650
651hh. BASH_COMPAT and FUNCNEST can be inherited and set from the shell's initial
652 environment.
653
654ii. 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
658jj. New prompt string: PS0. Expanded and displayed by interactive shells after
659 reading a complete command but before executing it.
660
661kk. 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
665ll. Posix-mode shells now allow double quotes to quote the history expansion
666 character.
667
668mm. OLDPWD can be inherited from the environment if it names a directory.
669
670nn. Shells running as root no longer inherit PS4 from the environment, closing
671 a security hole involving PS4 expansion performing command substitution.
672
673oo. 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
677pp. Value conversions (arithmetic expansions, case modification, etc.) now
678 happen when assigning elements of an array using compound assignment.
679
680qq. There is a new option settable in config-top.h that makes multiple
681 directory arguments to `cd' a fatal error.
682
683rr. Bash now uses mktemp() when creating internal temporary files; it produces
684 a warning at build time on many Linux systems.
685
6862. New Features in Readline
687
8868edaf 688a. The history truncation code now uses the same error recovery mechanism as
a0c0a00f
CR
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
692b. There is a new bindable variable, `enable-bracketed-paste', which enables
693 support for a terminal's bracketed paste mode.
694
695c. 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
700d. Prompt expansion adds the mode string to the last line of a multi-line
701 prompt (one with embedded newlines).
702
703e. 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
707f. There is a new bindable command `vi-yank-pop', a vi-mode version of emacs-
708 mode yank-pop.
709
710g. The redisplay code underwent several efficiency improvements for multibyte
711 locales.
712
713h. 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
716i. 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
720j. 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
723k. 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
728l. Readline now throws an error if it parses a key binding without a
729 terminating `:' or whitespace.
730
731m. 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
734n. rl_clear_visible_line: new application-callable function; clears all
735 screen lines occupied by the current visible readline line.
736
737o. rl_tty_set_echoing: application-callable function that controls whether
738 or not readline thinks it is echoing terminal output.
739
740p. Handle >| and strings of digits preceding and following redirection
741 specifications as single tokens when tokenizing the line for history
742 expansion.
743
744q. Fixed a bug with displaying completions when the prefix display length
745 is greater than the length of the completions to be displayed.
746
747r. 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
750s. New application-callable function: rl_pending_signal(): returns the signal
751 number of any signal readline has caught but not yet handled.
752
753t. 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-------------------------------------------------------------------------------
ac50fbac
CR
760This is a terse description of the new features added to bash-4.3 since
761the release of bash-4.2. As always, the manual page (doc/bash.1) is
762the place to look for complete descriptions.
763
7641. New Features in Bash
765
766a. The `helptopic' completion action now maps to all the help topics, not just
767 the shell builtins.
768
769b. 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
773c. The shell can be compiled to not display a message about processes that
774 terminate due to SIGTERM.
775
776d. Non-interactive shells now react to the setting of checkwinsize and set
777 LINES and COLUMNS after a foreground job exits.
778
779e. 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
783f. 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
786g. In Posix mode, the `command' builtin does not change whether or not a
787 builtin it shadows is treated as an assignment builtin.
788
789h. The `return' and `exit' builtins accept negative exit status arguments.
790
791i. 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
796j. 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
799k. When compiled for strict Posix conformance, history expansion is disabled
800 by default.
801
802l. The history expansion character (!) does not cause history expansion when
803 followed by the closing quote in a double-quoted string.
804
805m. `complete' and its siblings compgen/compopt now takes a new `-o noquote'
806 option to inhibit quoting of the completions.
807
808n. 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
811o. 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
815p. The `read' builtin now skips NUL bytes in the input.
816
817q. There is a new `bind -X' option to print all key sequences bound to Unix
818 commands.
819
820r. 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
824s. The command completion code skips whitespace and assignment statements
825 before looking for the command name word to be completed.
826
827t. The build process has a new mechanism for constructing separate help files
828 that better reflects the current set of compilation options.
829
830u. The -nt and -ot options to test now work with files with nanosecond
831 timestamp resolution.
832
833v. The shell saves the command history in any shell for which history is
834 enabled and HISTFILE is set, not just interactive shells.
835
836w. 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
839x. 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
843y. 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
846z. There is a new CHILD_MAX special shell variable; its value controls the
847 number of exited child statues the shell remembers.
848
849aa. There is a new configuration option (--enable-direxpand-default) that
850 causes the `direxpand' shell option to be enabled by default.
851
852bb. 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
856cc. The `wait' builtin has a new `-n' option to wait for the next child to
857 change status.
858
859dd. The `printf' %(...)T format specifier now uses the current time if no
860 argument is supplied.
861
862ee. There is a new variable, BASH_COMPAT, that controls the current shell
863 compatibility level.
864
865ff. The `popd' builtin now treats additional arguments as errors.
866
867gg. 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
871hh. Shells started to run process substitutions now run any trap set on EXIT.
872
873ii. The fc builtin now interprets -0 as the current command line.
874
875jj. Completing directory names containing shell variables now adds a trailing
876 slash if the expanded result is a directory.
877
878kk. `cd' has a new `-@' option to browse a file's extended attributes on
879 systems that support O_XATTR.
880
881ll. The test/[/[[ `-v variable' binary operator now understands array
882 references.
883
8842. New Features in Readline
885
886a. 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
891b. 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
895c. 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
899d. The history library creates a backup of the history file when writing it
900 and restores the backup on a write error.
901
902e. 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
907f. New bindable function `print-last-kbd-macro', prints the most-recently-
908 defined keyboard macro in a reusable format.
909
910g. 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
914h. New user-settable variable `keyseq-timout', acts as an inter-character
915 timeout when reading input or incremental search strings.
916
917i. New application-callable function: rl_clear_history. Clears the history list
918 and frees all readline-associated private data.
919
920j. New user-settable variable, show-mode-in-prompt, adds a characters to the
921 beginning of the prompt indicating the current editing mode.
922
923k. 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
927l. 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
932m. If the user-settable variable `history-size' is set to a value less than
933 0, the history list size is unlimited.
934
935n. 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
939o. 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-------------------------------------------------------------------------------
495aee44
CR
944This is a terse description of the new features added to bash-4.2 since
945the release of bash-4.1. As always, the manual page (doc/bash.1) is
946the place to look for complete descriptions.
947
9481. New Features in Bash
949
950a. `exec -a foo' now sets $0 to `foo' in an executable shell script without a
951 leading #!.
952
953b. 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
958c. `trap -p' will now show signals ignored at shell startup, though their
959 disposition still cannot be modified.
960
961d. $'...', echo, and printf understand \uXXXX and \UXXXXXXXX escape sequences.
962
963e. declare/typeset has a new `-g' option, which creates variables in the
964 global scope even when run in a shell function.
965
966f. test/[/[[ have a new -v variable unary operator, which returns success if
967 `variable' has been set.
968
969g. Posix parsing changes to allow `! time command' and multiple consecutive
970 instances of `!' (which toggle) and `time' (which have no cumulative
971 effect).
972
973h. 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
976j. $((...)) is always parsed as an arithmetic expansion first, instead of as
977 a potential nested command substitution, as Posix requires.
978
979k. A new FUNCNEST variable to allow the user to control the maximum shell
980 function nesting (recursive execution) level.
981
982l. 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
985m. The printf builtin has a new %(fmt)T specifier, which allows time values
986 to use strftime-like formatting.
987
988n. There is a new `compat41' shell option.
989
990o. The cd builtin has a new Posix-mandated `-e' option.
991
992p. Negative subscripts to indexed arrays, previously errors, now are treated
993 as offsets from the maximum assigned index + 1.
994
995q. Negative length specifications in the ${var:offset:length} expansion,
996 previously errors, are now treated as offsets from the end of the variable.
997
998r. Parsing change to allow `time -p --'.
999
1000s. 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
1004t. 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
1008u. History expansion no longer expands the `$!' variable expansion.
1009
1010v. 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
1013w. 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
1017x. 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
10202. New Features in Readline
1021
1022a. 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
1026b. New bindable variable `completion-display-width' to set the number of
1027 columns used when displaying completions.
1028
1029c. New bindable variable `completion-case-map' to cause case-insensitive
1030 completion to treat `-' and `_' as identical.
1031
1032d. There are new bindable vi-mode command names to avoid readline's case-
1033 insensitive matching not allowing them to be bound separately.
1034
1035e. 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-------------------------------------------------------------------------------
0001803f
CR
1040This is a terse description of the new features added to bash-4.1 since
1041the release of bash-4.0. As always, the manual page (doc/bash.1) is
1042the place to look for complete descriptions.
1043
10441. New Features in Bash
1045
1046a. Here-documents within $(...) command substitutions may once more be
1047 delimited by the closing right paren, instead of requiring a newline.
1048
1049b. Bash's file status checks (executable, readable, etc.) now take file
1050 system ACLs into account on file systems that support them.
1051
1052c. 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
1056d. 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
1060e. `printf -v' can now assign values to array indices.
1061
1062f. New `complete -E' and `compopt -E' options that work on the "empty"
1063 completion: completion attempted on an empty command line.
1064
1065g. 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
1072h. When displaying associative arrays, subscripts are now quoted.
1073
1074i. 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
1078j. The [[ and (( commands are now subject to the setting of `set -e' and the
1079 ERR trap.
1080
1081k. The source/. builtin now removes NUL bytes from the file before attempting
1082 to parse commands.
1083
1084l. There is a new configuration option (in config-top.h) that forces bash to
1085 forward all history entries to syslog.
1086
1087m. A new variable $BASHOPTS to export shell options settable using `shopt' to
1088 child processes.
1089
74091dd4 1090n. There is a new configure option that forces the extglob option to be
0001803f
CR
1091 enabled by default.
1092
1093o. New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace
1094 output to that file descriptor.
1095
1096p. 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
1100q. 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
1104r. Programmable completion now uses the completion for `b' instead of `a'
1105 when completion is attempted on a line like: a $(b c.
1106
1107s. Force extglob on temporarily when parsing the pattern argument to
1108 the == and != operators to the [[ command, for compatibility.
1109
1110t. 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
1113u. The read builtin has a new `-N nchars' option, which reads exactly NCHARS
1114 characters, ignoring delimiters like newline.
1115
1116v. The mapfile/readarray builtin no longer stores the commands it invokes via
1117 callbacks in the history list.
1118
1119w. There is a new `compat40' shopt option.
1120
11212. New Features in Readline
1122
1123a. New bindable function: menu-complete-backward.
1124
1125b. In the vi insertion keymap, C-n is now bound to menu-complete by default,
1126 and C-p to menu-complete-backward.
1127
1128c. 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
1132d. 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
1136e. New application-settable function: rl_filename_rewrite_hook. Can be used
74091dd4 1137 to rewrite or modify filenames read from the file system before they are
0001803f
CR
1138 compared to the word to be completed.
1139
1140f. 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
1145g. 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
1148h. 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
1152i. 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-------------------------------------------------------------------------------
3185942a
JA
1157This is a terse description of the new features added to bash-4.0 since
1158the release of bash-3.2. As always, the manual page (doc/bash.1) is
1159the place to look for complete descriptions.
1160
11611. New Features in Bash
1162
1163a. When using substring expansion on the positional parameters, a starting
1164 index of 0 now causes $0 to be prefixed to the list.
1165
1166b. The `help' builtin now prints its columns with entries sorted vertically
1167 rather than horizontally.
1168
1169c. There is a new variable, $BASHPID, which always returns the process id of
1170 the current shell.
1171
1172d. 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
1176e. There is a new `checkjobs' option that causes the shell to check for and
1177 report any running or stopped jobs at exit.
1178
1179f. The programmable completion code exports a new COMP_TYPE variable, set to
1180 a character describing the type of completion being attempted.
1181
1182g. 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
1185h. If creation of a child process fails due to insufficient resources, bash
1186 will try again several times before reporting failure.
1187
1188i. 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
1191j. The block multiplier for the ulimit -c and -f options is now 512 when in
1192 Posix mode, as Posix specifies.
1193
1194k. 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
1200l. 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
1205m. The `ulimit' builtin now has new -b (socket buffer size) and -T (number
1206 of threads) options.
1207
1208n. The -p option to `declare' now displays all variable values and attributes
1209 (or function values and attributes if used with -f).
1210
1211o. 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
1215p. The `read' builtin has a new -i option which inserts text into the reply
1216 buffer when using readline.
1217
1218q. A new `-E' option to the complete builtin allows control of the default
1219 behavior for completion on an empty line.
1220
1221r. There is now limited support for completing command name words containing
1222 globbing characters.
1223
1224s. Changed format of internal help documentation for all builtins to roughly
1225 follow man page format.
1226
1227t. 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
1230u. There is a new `mapfile' builtin to populate an array with lines from a
17345e5a 1231 given file. The name `readarray' is a synonym.
3185942a
JA
1232
1233v. 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
1237w. 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
1241x. There is a new shell option: `dirspell'. When enabled, the filename
1242 completion code performs spelling correction on directory names during
1243 completion.
1244
1245y. The `-t' option to the `read' builtin now supports fractional timeout
1246 values.
1247
1248z. 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
1252aa. 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
1255bb. 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
17345e5a 1261cc. There is a new &>> redirection operator, which appends the standard output
3185942a
JA
1262 and standard error to the named file.
1263
1264dd. The parser now understands `|&' as a synonym for `2>&1 |', which redirects
1265 the standard error for a command through a pipe.
1266
1267ee. 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
1271ff. 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
1275gg. 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
1280hh. 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
1286ii. The shell provides associative array variables, with the appropriate
1287 support to create, delete, assign values to, and expand them.
1288
1289jj. 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
1294kk. 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
1300ll. 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
1303mm. CDPATH and GLOBIGNORE are ignored when the shell is running in privileged
1304 mode.
1305
1306nn. 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
1310oo. 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
13142. New Features in Readline
1315
1316a. 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
1320b. A new variable, rl_completion_invoking_key; allows applications to discover
1321 the key that invoked rl_complete or rl_menu_complete.
1322
1323c. 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
1327d. 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
1331e. A new user-settable variable, `history-size', allows setting the maximum
1332 number of entries in the history list.
1333
1334f. 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
1338g. 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
1342h. 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
1347i. 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
1351j. If the kernel supports it, readline displays special characters
1352 corresponding to a keyboard-generated signal when the signal is received.
1353
1354-------------------------------------------------------------------------------
0628567a
JA
1355This is a terse description of the new features added to bash-3.2 since
1356the release of bash-3.1. As always, the manual page (doc/bash.1) is
1357the place to look for complete descriptions.
1358
13591. New Features in Bash
1360
1361a. 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
1365b. When running in `word expansion only' mode (--wordexp option), inhibit
1366 process substitution.
1367
1368c. Loadable builtins now work on MacOS X 10.[34].
1369
1370d. Shells running in posix mode no longer set $HOME, as POSIX requires.
1371
1372e. 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
1375f. Quoting the string argument to the [[ command's =~ operator now forces
1376 string matching, as with the other pattern-matching operators.
1377
13782. New Features in Readline
1379
1380a. Calling applications can now set the keyboard timeout to 0, allowing
1381 poll-like behavior.
1382
1383b. The value of SYS_INPUTRC (configurable at compilation time) is now used as
1384 the default last-ditch startup file.
1385
1386c. The history file reading functions now allow windows-like \r\n line
1387 terminators.
1388
1389-------------------------------------------------------------------------------
95732b49
JA
1390This is a terse description of the new features added to bash-3.1 since
1391the release of bash-3.0. As always, the manual page (doc/bash.1) is
1392the place to look for complete descriptions.
1393
13941. New Features in Bash
1395
1396a. Bash now understands LC_TIME as a special variable so that time display
1397 tracks the current locale.
1398
1399b. BASH_ARGC, BASH_ARGV, BASH_SOURCE, and BASH_LINENO are no longer created
1400 as `invisible' variables and may not be unset.
1401
1402c. 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
1405d. The `bg' builtin now accepts multiple arguments, as POSIX seems to specify.
1406
1407e. Fixed vi-mode word completion and glob expansion to perform tilde
1408 expansion.
1409
1410f. The `**' mathematic exponentiation operator is now right-associative.
1411
1412g. 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
1415h. A bare `%' once again expands to the current job when used as a job
1416 specifier.
1417
1418i. 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
1422j. BASH_COMMAND now preserves its value when a DEBUG trap is executed.
1423
1424k. The `gnu_errfmt' option is enabled automatically if the shell is running
1425 in an emacs terminal window.
1426
1427l. New configuration option: --single-help-strings. Causes long help text
1428 to be written as a single string; intended to ease translation.
1429
1430m. The COMP_WORDBREAKS variable now causes the list of word break characters
1431 to be emptied when the variable is unset.
1432
1433n. 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
1437o. Bash now inherits $_ from the environment if it appears there at startup.
1438
1439p. New shell option: nocasematch. If non-zero, shell pattern matching ignores
1440 case when used by `case' and `[[' commands.
1441
1442q. The `printf' builtin takes a new option: -v var. That causes the output
1443 to be placed into var instead of on stdout.
1444
1445r. By default, the shell no longer reports processes dying from SIGPIPE.
1446
1447s. 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
1451t. A new configuration option, `--enable-strict-posix-default', which will
1452 build bash to be POSIX conforming by default.
1453
1454u. If compiled for strict POSIX conformance, LINES and COLUMNS may now
1455 override the true terminal size.
1456
14572. New Features in Readline
1458
1459a. The key sequence sent by the keypad `delete' key is now automatically
1460 bound to delete-char.
1461
1462b. A negative argument to menu-complete now cycles backward through the
1463 completion list.
1464
1465c. 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
1469d. 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
1473e. 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-------------------------------------------------------------------------------
b80f6443
JA
1478This is a terse description of the new features added to bash-3.0 since
1479the release of bash-2.05b. As always, the manual page (doc/bash.1) is
1480the place to look for complete descriptions.
1481
14821. New Features in Bash
1483
1484a. ANSI string expansion now implements the \x{hexdigits} escape.
1485
1486b. There is a new loadable `strftime' builtin.
1487
1488c. New variable, COMP_WORDBREAKS, which controls the readline completer's
1489 idea of word break characters.
1490
1491d. The `type' builtin no longer reports on aliases unless alias expansion
1492 will actually be performed.
1493
1494e. HISTCONTROL is now a colon-separated list of values, which permits
1495 more extensibility and backwards compatibility.
1496
1497f. 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
1500g. `configure' has a new `--enable-multibyte' argument that permits multibyte
1501 character support to be disabled even on systems that support it.
1502
1503h. 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
1507i. FUNCNAME has been changed to support the debugger: it's now an array
1508 variable.
1509
1510j. for, case, select, arithmetic commands now keep line number information
1511 for the debugger.
1512
1513k. 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
1517l. New invocation option: --debugger. Enables debugging and turns on new
1518 `extdebug' shell option.
1519
1520m. 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
1525n. 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
1530o. New `--enable-debugger' option to `configure' to compile in the debugger
1531 support code.
1532
1533p. `declare -F' now prints out extra line number and source file information
1534 if the `extdebug' option is set.
1535
1536q. 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
1540r. New `caller' builtin to provide a call stack for the bash debugger.
1541
1542s. The DEBUG trap is run just before the first command in a function body is
1543 executed, for the debugger.
1544
1545t. `for', `select', and `case' command heads are printed when `set -x' is
1546 enabled.
1547
1548u. 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
1552v. New ksh93-like ${!array[@]} expansion, expands to all the keys (indices)
1553 of array.
1554
1555w. 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
1559x. New `gnu_errfmt' shopt option; if enabled, error messages follow the `gnu
1560 style' (filename:lineno:message) format.
1561
1562y. 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
1566z. 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
1570aa. `kill' is available as a builtin even when the shell is built without
1571 job control.
1572
1573bb. 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
1579cc. The [[ ... ]] command has a new binary `=~' operator that performs
1580 extended regular expression (egrep-like) matching.
1581
1582dd. `configure' has a new `--enable-cond-regexp' option (enabled by default)
1583 to enable the =~ operator and regexp matching in [[ ... ]].
1584
1585ee. Subexpressions matched by the =~ operator are placed in the new
1586 BASH_REMATCH array variable.
1587
1588ff. New `failglob' option that causes an expansion error when pathname
1589 expansion fails to produce a match.
1590
1591gg. 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
1595hh. printf builtin understands two new escape sequences: \" and \?.
1596
1597ii. `echo -e' understands two new escape sequences: \" and \?.
1598
1599jj. The GNU `gettext' package and libintl have been integrated; the shell's
1600 messages can be translated into different languages.
1601
1602kk. The `\W' prompt expansion now abbreviates $HOME as `~', like `\w'.
1603
1604ll. 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
1608mm. The parameter pattern removal and substitution expansions are now much
1609 faster and more efficient when using multibyte characters.
1610
1611nn. The `jobs', `kill', and `wait' builtins now accept job control notation
1612 even if job control is not enabled.
1613
1614oo. 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
16182. New Features in Readline
1619
1620a. History expansion has a new `a' modifier equivalent to the `g' modifier
1621 for compatibility with the BSD csh.
1622
1623b. History expansion has a new `G' modifier equivalent to the BSD csh `g'
1624 modifier, which performs a substitution once per word.
1625
1626c. All non-incremental search operations may now undo the operation of
1627 replacing the current line with the history line.
1628
1629d. The text inserted by an `a' command in vi mode can be reinserted with
1630 `.'.
1631
1632e. 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
1636f. There is a new application-callable `free_history_entry()' function.
1637
1638g. 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
1642h. 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
1649i. New application variable, rl_completion_quote_character, set to any
1650 quote character readline finds before it calls the application completion
1651 function.
1652
1653j. 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
1657k. 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
1661l. 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
1665m. New bindable command: unix-filename-rubout. Does the same thing as
1666 unix-word-rubout, but adds `/' to the set of word delimiters.
1667
1668n. When listing completions, directories have a `/' appended if the
1669 `mark-directories' option has been enabled.
1670
1671-------------------------------------------------------------------------------
7117c2d2
JA
1672This is a terse description of the new features added to bash-2.05b since
1673the release of bash-2.05a. As always, the manual page (doc/bash.1) is
1674the place to look for complete descriptions.
1675
16761. New Features in Bash
1677
1678a. If set, TMOUT is the default timeout for the `read' builtin.
1679
1680b. `type' has two new options: `-f' suppresses shell function lookup, and
1681 `-P' forces a $PATH search.
1682
1683c. New code to handle multibyte characters.
1684
1685d. `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
1689e. `complete -d' and `complete -o dirnames' now force a slash to be
1690 appended to names which are symlinks to directories.
1691
1692f. 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
1695g. Added support for ksh93-like [:word:] character class in pattern matching.
1696
1697h. The $'...' quoting construct now expands \cX to Control-X.
1698
1699i. A new \D{...} prompt expansion; passes the `...' to strftime and inserts
1700 the result into the expanded prompt.
1701
1702j. The shell now performs arithmetic in the largest integer size the
1703 machine supports (intmax_t), instead of long.
1704
1705k. 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
1708l. The bash globbing completion functions now allow completions to be listed
1709 with double tabs or if `show-all-if-ambiguous' is set.
1710
1711m. New `-o nospace' option for `complete' and `compgen' builtins; suppresses
1712 readline's appending a space to the completed word.
1713
1714n. New `here-string' redirection operator: <<< word.
1715
1716o. 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
1720p. 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
1724q. The `complete' and `compgen' builtins now have a new `-s/-A service'
1725 option to complete on names from /etc/services.
1726
1727r. `read' has a new `-u fd' option to read from a specified file descriptor.
1728
1729s. Fix the completion code so that expansion errors in a directory name
1730 don't cause a longjmp back to the command loop.
1731
1732t. Fixed word completion inside command substitution to work a little more
1733 intuitively.
1734
1735u. The `printf' %q format specifier now uses $'...' quoting to print the
1736 argument if it contains non-printing characters.
1737
1738v. 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
1742w. The DEBUG trap is now run *before* simple commands, ((...)) commands,
1743 [[...]] conditional commands, and for ((...)) loops.
1744
1745x. 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
1750y. 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
1755z. New [n]<&word- and [n]>&word- redirections from ksh93 -- move fds (dup
1756 and close).
1757
1758aa. There is a new `-l' invocation option, equivalent to `--login'.
1759
1760bb. 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
1763cc. 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
1767dd. All builtins that take operands accept a `--' pseudo-option, except
1768 `echo'.
1769
1770ee. 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
17752. New Features in Readline
1776
1777a. 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
1781b. 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
1785c. New code to handle editing and displaying multibyte characters.
1786
1787d. 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
1792e. 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
1796f. 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
1801g. 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
1806h. Readline now has an overwrite mode, toggled by the `overwrite-mode'
1807 bindable command, which could be bound to `Insert'.
1808
1809i. New application-settable completion variable:
1810 rl_completion_suppress_append, inhibits appending of
1811 rl_completion_append_character to completed words.
1812
1813j. 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-------------------------------------------------------------------------------
f73dda09
JA
1819This is a terse description of the new features added to bash-2.05a since
1820the release of bash-2.05. As always, the manual page (doc/bash.1) is
1821the place to look for complete descriptions.
1822
18231. New Features in Bash
1824
1825a. Added support for DESTDIR installation root prefix, so you can do a
1826 `make install DESTDIR=bash-root' and do easier binary packaging.
1827
1828b. Added support for builtin printf "'" flag character as per latest POSIX
1829 drafts.
1830
1831c. Support for POSIX.2 printf(1) length specifiers `j', `t', and `z' (from
1832 ISO C99).
1833
1834d. New autoconf macro, RL_LIB_READLINE_VERSION, for use by other applications
1835 (bash doesn't use very much of what it returns).
1836
1837e. `set [-+]o nolog' is recognized as required by the latest POSIX drafts,
1838 but ignored.
1839
1840f. New read-only `shopt' option: login_shell. Set to non-zero value if the
1841 shell is a login shell.
1842
1843g. New `\A' prompt string escape sequence; expands to time in 24 HH:MM format.
1844
1845h. New `-A group/-g' option to complete and compgen; does group name
1846 completion.
1847
1848i. New `-t' option to `hash' to list hash values for each filename argument.
1849
1850j. New [-+]O invocation option to set and unset `shopt' options at startup.
1851
1852k. 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
1856l. 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
1860m. `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
1865n. `bashbug' now requires that the subject be changed from the default.
1866
1867o. configure has a new `--enable-largefile' option, like other GNU utilities.
1868
1869p. `for' loops now allow empty word lists after `in', like the latest POSIX
1870 drafts require.
1871
1872q. 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
1876r. `ulimit' now prints the option letter associated with a particular
1877 resource when printing more than one limit.
1878
1879s. `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
1882t. The `printf' builtin now handles the %a and %A conversions if they're
1883 implemented by printf(3).
1884
1885u. The `printf' builtin now handles the %F conversion (just about like %f).
1886
1887v. 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
18912. New Features in Readline
1892
1893a. 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
1896b. New #defines in readline.h: RL_READLINE_VERSION, currently 0x0402,
1897 RL_VERSION_MAJOR, currently 4, and RL_VERSION_MINOR, currently 2.
1898
1899c. New readline variable: rl_readline_version, mirrors RL_READLINE_VERSION.
1900
1901d. New bindable boolean readline variable: match-hidden-files. Controls
1902 completion of files beginning with a `.' (on Unix). Enabled by default.
1903
1904e. The history expansion code now allows any character to terminate a
1905 `:first-' modifier, like csh.
1906
1907f. New bindable variable `history-preserve-point'. If set, the history
1908 code attempts to place the user at the same location on each history
8868edaf 1909 line retrieved with previous-history or next-history.
f73dda09
JA
1910
1911-------------------------------------------------------------------------------
28ef6c31
JA
1912This is a terse description of the new features added to bash-2.05 since
1913the release of bash-2.04. As always, the manual page (doc/bash.1) is
1914the place to look for complete descriptions.
1915
19161. New Features in Bash
1917
1918a. Added a new `--init-file' invocation argument as a synonym for `--rcfile',
1919 per the new GNU coding standards.
1920
1921b. The /dev/tcp and /dev/udp redirections now accept service names as well as
1922 port numbers.
1923
1924c. `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
1935d. A new loadable builtin, realpath, which canonicalizes and expands symlinks
1936 in pathname arguments.
1937
8868edaf 1938e. When `set' is called without options, it prints function definitions in a
28ef6c31
JA
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
1943f. Bash-2.05 once again honors the current locale setting when processing
1944 ranges within pattern matching bracket expressions (e.g., [A-Z]).
1945
19462. New Features in Readline
1947
1948a. The blink timeout for paren matching is now settable by applications,
1949 via the rl_set_paren_blink_timeout() function.
1950
1951b. _rl_executing_macro has been renamed to rl_executing_macro, which means
1952 it's now part of the public interface.
1953
1954c. 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
1958d. New application-callable function rl_set_prompt(const char *prompt):
1959 expands its prompt string argument and sets rl_prompt to the result.
1960
1961e. 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
1965f. New function, rl_get_screen_size (int *rows, int *columns), returns
1966 readline's idea of the screen dimensions.
1967
1968g. The timeout in rl_gather_tyi (readline keyboard input polling function)
1969 is now settable via a function (rl_set_keyboard_input_timeout()).
1970
1971h. Renamed the max_input_history variable to history_max_entries; the old
1972 variable is maintained for backwards compatibility.
1973
1974i. 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-------------------------------------------------------------------------------
bb70624e
JA
1979This is a terse description of the new features added to bash-2.04 since
1980the release of bash-2.03. As always, the manual page (doc/bash.1) is
1981the place to look for complete descriptions.
1982
19831. New Features in Bash
1984
1985a. The history builtin has a `-d offset' option to delete the history entry
1986 at position `offset'.
1987
1988b. 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
1991c. The `bind' builtin has a new `-x' option to bind key sequences to shell
1992 commands.
1993
1994d. 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
1997e. The `help' builtin has a `-s' option to just print a builtin's usage
1998 synopsis.
1999
2000f. There are several new arithmetic operators: id++, id-- (variable
f73dda09 2001 post-increment/decrement), ++id, --id (variable pre-increment/decrement),
bb70624e
JA
2002 expr1 , expr2 (comma operator).
2003
2004g. There is a new ksh-93 style arithmetic for command:
2005 for ((expr1 ; expr2; expr3 )); do list; done
2006
2007h. 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
2013i. 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
2017j. 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
2021k. The ksh-93 ${!prefix*} expansion, which expands to the names of all
2022 shell variables with prefix PREFIX, has been implemented.
2023
2024l. 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
2027m. The GROUPS variable is no longer readonly; assignments to it are silently
2028 discarded. This means it can be unset.
2029
2030n. A new programmable completion facility, with two new builtin commands:
2031 complete and compgen.
2032
2033o. configure has a new option, `--enable-progcomp', to compile in the
2034 programmable completion features (enabled by default).
2035
2036p. `shopt' has a new option, `progcomp', to enable and disable programmable
2037 completion at runtime.
2038
2039q. Unsetting HOSTFILE now clears the list of hostnames used for completion.
2040
2041r. configure has a new option, `--enable-bash-malloc', replacing the old
2042 `--with-gnu-malloc' (which is still present for backwards compatibility).
2043
2044s. There is a new manual page describing rbash, the restricted shell.
2045
2046t. `bashbug' has new `--help' and `--version' options.
2047
2048u. `shopt' has a new `xpg_echo' option, which controls the behavior of
2049 `echo' with respect to backslash-escaped characters at runtime.
2050
2051v. If NON_INTERACTIVE_LOGIN_SHELLS is defined, all login shells read the
2052 startup files, even if they are not interactive.
2053
2054w. 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
20582. New features in Readline
2059
2060a. 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
2064b. MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename.
2065
2066c. MS-DOS systems now use ~/_history as the default history file.
2067
2068d. 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
2072e. history-search-{forward,backward} now leave the last history line found
2073 in the readline buffer if the second or subsequent search fails.
2074
2075f. 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
2078g. 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
2082h. 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-------------------------------------------------------------------------------
b72432fd
JA
2087This is a terse description of the new features added to bash-2.03 since
2088the release of bash-2.02. As always, the manual page (doc/bash.1) is
2089the place to look for complete descriptions.
2090
20911. New Features in Bash
2092
2093a. New `shopt' option, `restricted_shell', indicating whether or not the
2094 shell was started in restricted mode, for use in startup files.
2095
2096b. Filename generation is now performed on the words between ( and ) in
2097 array assignments (which it probably should have done all along).
2098
2099c. OLDPWD is now auto-exported, as POSIX.2 seems to require.
2100
2101d. ENV and BASH_ENV are read-only variables in a restricted shell.
2102
2103e. 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
21072. New Features in Readline
2108
2109a. 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
2128b. There is a new function, rl_resize_terminal, to reset readline's idea of
2129 the screen size after a SIGWINCH.
2130
2131c. New public functions: rl_save_prompt and rl_restore_prompt. These were
2132 previously private functions with a `_' prefix.
2133
2134d. New function hook: rl_pre_input_hook, called just before readline starts
2135 reading input, after initialization.
2136
2137e. 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
2142f. New bindable function, delete-char-or-list, like tcsh.
2143
2144g. 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
2148h. New bindable variable: `isearch-terminators'.
2149
2150i. New bindable function: `forward-backward-delete-char' (unbound by default).
2151
2152-------------------------------------------------------------------------------
cce855bc
JA
2153This is a terse description of the new features added to bash-2.02 since
2154the release of bash-2.01.1. As always, the manual page (doc/bash.1) is
2155the place to look for complete descriptions.
2156
21571. New Features in Bash
2158
2159a. 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
2163b. A new version of gmalloc, based on the old GLIBC malloc, with many
2164 changes and range checking included by default.
2165
2166c. 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
2171d. ksh-88 egrep-style extended pattern matching ([@+*?!](patlist)) has been
2172 implemented, controlled by a new `shopt' option, `extglob'.
2173
2174e. There is a new ksh-like `[[' compound command, which implements
2175 extended `test' functionality.
2176
2177f. There is a new `printf' builtin, implemented according to the POSIX.2
2178 specification.
2179
2180g. 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
2184h. There are new tilde prefixes which expand to directories from the
2185 directory stack.
2186
2187i. There is a new `**' arithmetic operator to do exponentiation.
2188
2189j. 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
2193k. 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
2197l. 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
2201m. 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
2206n. There is a new invocation option, `--dump-po-strings', to dump
2207 a shell script's translatable strings ($"...") in GNU `po' format.
2208
2209o. There is a new `shopt' option, `nocaseglob', to enable case-insensitive
2210 pattern matching when globbing filenames and using the `case' construct.
2211
2212p. 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
2216q. `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
2220r. `disown' now has `-a' and `-r' options, to limit operation to all jobs
2221 and running jobs, respectively.
2222
2223s. The `shopt' `-p' option now causes output to be displayed in a reusable
2224 format.
2225
2226t. `test' has a new `-N' option, which returns true if the filename argument
2227 has been modified since it was last accessed.
2228
2229u. `umask' now has a `-p' option to print output in a reusable format.
2230
2231v. 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
2235w. The prompt string expansion code has a new `\r' escape sequence.
2236
2237x. The shell may now be cross-compiled for the CYGWIN32 environment on
2238 a Unix machine.
2239
22402. New Features in Readline
2241
2242a. 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
2246b. 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
2250c. New variable, `completion-ignore-case', which causes filename completion
2251 and matching to be performed case-insensitively.
2252
2253d. 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
2257e. 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
2261f. 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
2265g. 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
2269h. An `$include' inputrc file parser directive has been added.
2270
2271-------------------------------------------------------------------------------
d166f048
JA
2272This is a terse description of the new features added to bash-2.01 since
2273the release of bash-2.0. As always, the manual page (doc/bash.1) is the
2274place to look for complete descriptions.
2275
22761. New Features in Bash
2277
2278a. 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
22812. New Features in Readline
2282
2283a. 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-------------------------------------------------------------------------------
ccc6cda3
JA
2289This is a terse description of the new features added to bash-2.0 since
2290the release of bash-1.14.7. As always, the manual page (doc/bash.1) is
2291the place to look for complete descriptions.
726f6388 2292
ccc6cda3 22931. New Features in Bash
726f6388 2294
ccc6cda3
JA
2295a. There is a new invocation option, -D, that dumps translatable strings
2296 in a script.
726f6388 2297
ccc6cda3
JA
2298b. The `long' invocation options must now be prefixed with `--'.
2299
2300c. New long invocation options: --dump-strings, --help, --verbose
2301
2302d. The `nolineediting' invocation option was renamed to `noediting'.
2303
2304e. The `nobraceexpansion' and `quiet' long invocation options were removed.
2305
2306f. The `--help' and `--version' long options now work as the GNU coding
2307 standards specify.
2308
2309g. 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
2314h. 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
2319i. The $'...' quoting syntax expands ANSI-C escapes in ... and leaves the
2320 result single-quoted.
2321
2322j. The $"..." quoting syntax performs locale-specific translation of ...
2323 and leaves the result double-quoted.
2324
2325k. LINENO now works correctly in functions.
2326
2327l. New variables: DIRSTACK, PIPESTATUS, BASH_VERSINFO, HOSTNAME, SHELLOPTS,
2328 MACHTYPE. The first three are array variables.
2329
2330m. The BASH_VERSION and BASH_VERSINFO variables now include the shell's
2331 `release status' (alpha[N], beta[N], release).
2332
2333n. 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
2339o. Bash now uses some new variables: LC_ALL, LC_MESSAGES, LC_CTYPE,
2340 LC_COLLATE, LANG, GLOBIGNORE, HISTIGNORE.
2341
2342p. 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
2347q. ${!var}: indirect variable expansion, equivalent to eval \${$var}.
2348
8868edaf 2349r. ${parameter:offset[:length]}: variable substring extraction.
ccc6cda3
JA
2350
2351s. ${parameter/pattern[/[/]string]}: variable pattern substitution.
2352
2353t. The $[...] arithmetic expansion syntax is no longer supported, in
2354 favor of $((...)).
2355
2356u. Aliases can now be expanded in shell scripts with a shell option
2357 (shopt expand_aliases).
2358
2359v. History and history expansion can now be used in scripts with
2360 set -o history and set -H.
2361
2362w. All builtins now return an exit status of 2 for incorrect usage.
2363
2364x. Interactive shells resend SIGHUP to all running or stopped children
2365 if (and only if) they exit due to a SIGHUP.
2366
2367y. New prompting expansions: \a, \e, \H, \T, \@, \v, \V.
2368
2369z. Variable expansion in prompt strings is now controllable via a shell
2370 option (shopt promptvars).
2371
2372aa. Bash now defaults to using command-oriented history.
2373
2374bb. The history file ($HISTFILE) is now truncated to $HISTFILESIZE after
2375 being written.
2376
2377cc. The POSIX.2 conditional arithmetic evaluation syntax (expr ? expr : expr)
2378 has been implemented.
2379
2380dd. Each builtin now accepts `--' to signify the end of the options, except
2381 as documented (echo, etc.).
2382
2383ee. All builtins use -p to display values in a re-readable format where
2384 appropriate, except as documented (echo, type, etc.).
2385
2386ff. The `alias' builtin has a new -p option.
2387
2388gg. 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
2393hh. The `bye' synonym for `exit' was removed.
2394
2395ii. The -L and -P options to `cd' and `pwd' have been documented.
2396
2397jj. The `cd' builtin now does spelling correction on the directory name
2398 by default. This is settable with a shell option (shopt cdspell).
2399
2400kk. The `declare' builtin has new options: -a, -F, -p.
2401
2402ll. The `dirs' builtin has new options: -c, -p, -v.
2403
2404mm. 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
2408nn. The `echo' builtin has a new escape character: \e.
2409
2410oo. 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
2415pp. The `-all' option to `enable' was removed in favor of `-a'.
2416
2417qq. The `exec' builtin has new options: -l, -c, -a.
2418
2419rr. The `hash' builtin has a new option: -p.
2420
2421ss. The `history' builtin has new options: -c, -p, -s.
2422
2423tt. The `jobs' builtin has new options: -r, -s.
2424
2425uu. The `kill' builtin has new options: -n signum, -l signame.
2426
2427vv. The `pushd' and `popd' builtins have a new option: -n.
2428
2429ww. The `read' builtin has new options: -p prompt, -e, -a.
2430
2431xx. The `readonly' builtin has a new -a option, and the -n option was removed.
2432
2433yy. 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
2439zz. The new `shopt' builtin controls shell optional behavior previously
2440 done by setting and unsetting certain shell variables.
2441
2442aaa. The `test' builtin has new operators: -o option, s1 == s2, s1 < s2,
2443 and s1 > s2, where s1 and s2 are strings.
2444
2445bbb. There is a new trap, DEBUG, executed after every simple command.
2446
2447ccc. The `trap' builtin has a new -p option.
2448
2449ddd. The `ulimit' builtin has a new -l option on 4.4BSD-based systems.
2450
2451eee. The PS1, PS2, PATH, and IFS variables may now be unset.
2452
2453fff. The restricted shell mode has been expanded and is now documented.
2454
2455ggg. 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
2460hhh. 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
2464iii. 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.
8868edaf 2473 o A non-interactive shell exits if the iteration variable in a
ccc6cda3
JA
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
2484jjj. The default value of PS1 is now "\s-\v\$ ".
2485
2486kkk. The ksh-like ((...)) arithmetic command syntax has been implemented.
2487 This is exactly equivalent to `let "..."'.
2488
2489lll. Integer constants have been extended to base 64.
2490
2491mmm. The `ulimit' builtin now sets both hard and soft limits and reports the
2492 soft limit by default.
2493
24942. New Features in Readline
2495
2496a. New variables: enable-keypad, input-meta (new name for meta-flag),
2497 mark-directories, visible-stats (now documented), disable-completion,
2498 comment-begin.
2499
2500b. 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
2505c. New emacs keybindings: delete-horizontal-space (M-\),
2506 insert-completions (M-*), possible-completions (M-=).
2507
2508d. 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
2512e. More file types are available for the visible-stats mode.
2513
25143. Changes of interest in the Bash implementation
2515
2516a. There is a new autoconf-based configuration mechanism.
2517
2518b. More things have been moved from Posix mode to standard shell behavior.
2519
2520c. The trace output (set -x) now inserts quotes where necessary so it can
2521 be reused as input.
2522
2523d. There is a compile-time option for a system-wide interactive shell
2524 startup file (disabled by default).
2525
2526e. The YACC grammar is smaller and tighter, and all 66 shift-reduce
2527 conflicts are gone. Several parsing bugs have been fixed.
2528
2529f. Builtin option parsing has been regularized (using internal_getopt()),
2530 with the exception of `echo', `type', and `set'.
2531
2532g. Builtins now return standard usage messages constructed from the
2533 `short doc' used by the help builtin.
2534
2535h. Completion now quotes using backslashes by default, but honors
2536 user-supplied quotes.
2537
2538i. The GNU libc malloc is available as a configure-time option.
2539
2540j. There are more internationalization features; bash uses gettext if
2541 it is available. The $"..." translation syntax uses the current
2542 locale and gettext.
2543
2544k. There is better reporting of job termination when the shell is not
2545 interactive.
2546
2547l. The shell is somewhat more efficient: it uses a little less memory and
2548 makes fewer system calls.
2549
25504. Changes of interest in the Readline implementation
2551
2552a. There is now support for readline `callback' functions.
2553
2554b. There is now support for user-supplied input, redisplay, and terminal
2555 preparation functions.
2556
2557c. Most of the shell-specific code in readline has been generalized or
2558 removed.
2559
2560d. 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
2564e. There are new library functions and variables available to application
2565 writers, most having to do with completion and quoting.
2566
2567f. The NEWLINE character (^J) is now treated as a search terminator by the
2568 incremental search functions.
0001803f
CR
2569-------------------------------------------------------------------------------
2570
2571Copying and distribution of this file, with or without modification,
2572are permitted in any medium without royalty provided the copyright
2573notice and this notice are preserved. This file is offered as-is,
2574without any warranty.