]> git.ipfire.org Git - thirdparty/bash.git/blame - NEWS
commit bash-20091203 snapshot
[thirdparty/bash.git] / NEWS
CommitLineData
b06e584e
CR
1This is a terse description of the new features added to bash-4.1 since
2the release of bash-4.0. As always, the manual page (doc/bash.1) is
3the place to look for complete descriptions.
4
51. New Features in Bash
6
7a. Here-documents within $(...) command substitutions may once more be
8 delimited by the closing right paren, instead of requiring a newline.
9
10b. Bash's file status checks (executable, readable, etc.) now take file
11 system ACLs into account on file systems that support them.
12
13c. Bash now passes environment variables with names that are not valid
14 shell variable names through into the environment passed to child
15 processes.
16
17d. The `execute-unix-command' readline function now attempts to clear and
18 reuse the current line rather than move to a new one after the command
19 executes.
20
21e. `printf -v' can now assign values to array indices.
22
23f. New `complete -E' and `compopt -E' options that work on the "empty"
24 completion: completion attempted on an empty command line.
25
26g. New complete/compgen/compopt -D option to define a `default' completion:
27 a completion to be invoked on command for which no completion has been
28 defined. If this function returns 124, programmable completion is
29 attempted again, allowing a user to dynamically build a set of completions
30 as completion is attempted by having the default completion function
31 install individual completion functions each time it is invoked.
32
33h. When displaying associative arrays, subscripts are now quoted.
34
35i. Changes to dabbrev-expand to make it more `emacs-like': no space appended
36 after matches, completions are not sorted, and most recent history entries
37 are presented first.
38
39j. The [[ and (( commands are now subject to the setting of `set -e' and the
40 ERR trap.
41
42k. The source/. builtin now removes NUL bytes from the file before attempting
43 to parse commands.
44
45l. There is a new configuration option (in config-top.h) that forces bash to
46 forward all history entries to syslog.
47
48m. A new variable $BASHOPTS to export shell options settable using `shopt' to
49 child processes.
50
51n. There is a new confgure option that forces the extglob option to be
52 enabled by default.
53
54o. New variable $BASH_XTRACEFD; when set to an integer bash will write xtrace
55 output to that file descriptor.
56
57p. If the optional left-hand-side of a redirection is of the form {var}, the
58 shell assigns the file descriptor used to $var or uses $var as the file
59 descriptor to move or close, depending on the redirection operator.
60
61q. The < and > operators to the [[ conditional command now do string
62 comparison according to the current locale.
63
64r. Programmable completion now uses the completion for `b' instead of `a'
65 when completion is attempted on a line like: a $(b c.
66
67s. Force extglob on temporarily when parsing the pattern argument to
68 the == and != operators to the [[ command, for compatibility.
69
70t. Changed the behavior of interrupting the wait builtin when a SIGCHLD is
71 received and a trap on SIGCHLD is set to be Posix-mode only.
72
73u. The read builtin has a new `-N nchars' option, which reads exactly NCHARS
74 characters, ignoring delimiters like newline.
75
2695f55d
CR
76v. The mapfile/readarray builtin no longer stores the commands it invokes via
77 callbacks in the history list.
78
79w. There is a new `compat40' shopt option.
80
81x. The < and > operators to [[ do string comparisons using the current locale
82 only if the compatibility level is greater than 40 (set to 41 by default).
83
b06e584e
CR
842. New Features in Readline
85
86a. New bindable function: menu-complete-backward.
87
88b. In the vi insertion keymap, C-n is now bound to menu-complete by default,
89 and C-p to menu-complete-backward.
90
91c. When in vi command mode, repeatedly hitting ESC now does nothing, even
92 when ESC introduces a bound key sequence. This is closer to how
93 historical vi behaves.
94
95d. New bindable function: skip-csi-sequence. Can be used as a default to
96 consume key sequences generated by keys like Home and End without having
97 to bind all keys.
98
99e. New application-settable function: rl_filename_rewrite_hook. Can be used
100 to rewite or modify filenames read from the file system before they are
101 compared to the word to be completed.
102
103f. New bindable variable: skip-completed-text, active when completing in the
104 middle of a word. If enabled, it means that characters in the completion
105 that match characters in the remainder of the word are "skipped" rather
106 than inserted into the line.
107
108g. The pre-readline-6.0 version of menu completion is available as
109 "old-menu-complete" for users who do not like the readline-6.0 version.
110
111h. New bindable variable: echo-control-characters. If enabled, and the
112 tty ECHOCTL bit is set, controls the echoing of characters corresponding
113 to keyboard-generated signals.
114
115i. New bindable variable: enable-meta-key. Controls whether or not readline
116 sends the smm/rmm sequences if the terminal indicates it has a meta key
117 that enables eight-bit characters.
118
119-------------------------------------------------------------------------------
bea29b7b
CR
120This is a terse description of the new features added to bash-4.0 since
121the release of bash-3.2. As always, the manual page (doc/bash.1) is
122the place to look for complete descriptions.
123
1241. New Features in Bash
125
126a. When using substring expansion on the positional parameters, a starting
127 index of 0 now causes $0 to be prefixed to the list.
128
129b. The `help' builtin now prints its columns with entries sorted vertically
130 rather than horizontally.
131
132c. There is a new variable, $BASHPID, which always returns the process id of
133 the current shell.
134
135d. There is a new `autocd' option that, when enabled, causes bash to attempt
136 to `cd' to a directory name that is supplied as the first word of a
137 simple command.
138
139e. There is a new `checkjobs' option that causes the shell to check for and
140 report any running or stopped jobs at exit.
141
142f. The programmable completion code exports a new COMP_TYPE variable, set to
143 a character describing the type of completion being attempted.
144
145g. The programmable completion code exports a new COMP_KEY variable, set to
146 the character that caused the completion to be invoked (e.g., TAB).
147
148h. If creation of a child process fails due to insufficient resources, bash
149 will try again several times before reporting failure.
150
151i. The programmable completion code now uses the same set of characters as
152 readline when breaking the command line into a list of words.
153
154j. The block multiplier for the ulimit -c and -f options is now 512 when in
155 Posix mode, as Posix specifies.
156
157k. Changed the behavior of the read builtin to save any partial input received
158 in the specified variable when the read builtin times out. This also
159 results in variables specified as arguments to read to be set to the empty
160 string when there is no input available. When the read builtin times out,
161 it returns an exit status greater than 128.
162
163l. The shell now has the notion of a `compatibility level', controlled by
164 new variables settable by `shopt'. Setting this variable currently
165 restores the bash-3.1 behavior when processing quoted strings on the rhs
166 of the `=~' operator to the `[[' command.
167
168m. The `ulimit' builtin now has new -b (socket buffer size) and -T (number
169 of threads) options.
170
171n. The -p option to `declare' now displays all variable values and attributes
172 (or function values and attributes if used with -f).
173
174o. There is a new `compopt' builtin that allows completion functions to modify
175 completion options for existing completions or the completion currently
176 being executed.
177
178p. The `read' builtin has a new -i option which inserts text into the reply
179 buffer when using readline.
180
181q. A new `-E' option to the complete builtin allows control of the default
182 behavior for completion on an empty line.
183
184r. There is now limited support for completing command name words containing
185 globbing characters.
186
187s. Changed format of internal help documentation for all builtins to roughly
188 follow man page format.
189
190t. The `help' builtin now has a new -d option, to display a short description,
191 and a -m option, to print help information in a man page-like format.
192
193u. There is a new `mapfile' builtin to populate an array with lines from a
a05a1337 194 given file. The name `readarray' is a synonym.
bea29b7b
CR
195
196v. If a command is not found, the shell attempts to execute a shell function
197 named `command_not_found_handle', supplying the command words as the
198 function arguments.
199
200w. There is a new shell option: `globstar'. When enabled, the globbing code
201 treats `**' specially -- it matches all directories (and files within
202 them, when appropriate) recursively.
203
204x. There is a new shell option: `dirspell'. When enabled, the filename
205 completion code performs spelling correction on directory names during
206 completion.
207
208y. The `-t' option to the `read' builtin now supports fractional timeout
209 values.
210
211z. Brace expansion now allows zero-padding of expanded numeric values and
212 will add the proper number of zeroes to make sure all values contain the
213 same number of digits.
214
215aa. There is a new bash-specific bindable readline function: `dabbrev-expand'.
216 It uses menu completion on a set of words taken from the history list.
217
218bb. The command assigned to a key sequence with `bind -x' now sets two new
219 variables in the environment of the executed command: READLINE_LINE_BUFFER
220 and READLINE_POINT. The command can change the current readline line
221 and cursor position by modifying READLINE_LINE_BUFFER and READLINE_POINT,
222 respectively.
223
a05a1337 224cc. There is a new &>> redirection operator, which appends the standard output
bea29b7b
CR
225 and standard error to the named file.
226
227dd. The parser now understands `|&' as a synonym for `2>&1 |', which redirects
228 the standard error for a command through a pipe.
229
230ee. The new `;&' case statement action list terminator causes execution to
231 continue with the action associated with the next pattern in the
232 statement rather than terminating the command.
233
234ff. The new `;;&' case statement action list terminator causes the shell to
235 test the next set of patterns after completing execution of the current
236 action, rather than terminating the command.
237
238gg. The shell understands a new variable: PROMPT_DIRTRIM. When set to an
239 integer value greater than zero, prompt expansion of \w and \W will
240 retain only that number of trailing pathname components and replace
241 the intervening characters with `...'.
242
243hh. There are new case-modifying word expansions: uppercase (^[^]) and
244 lowercase (,[,]). They can work on either the first character or
245 array element, or globally. They accept an optional shell pattern
246 that determines which characters to modify. There is an optionally-
247 configured feature to include capitalization operators.
248
249ii. The shell provides associative array variables, with the appropriate
250 support to create, delete, assign values to, and expand them.
251
252jj. The `declare' builtin now has new -l (convert value to lowercase upon
253 assignment) and -u (convert value to uppercase upon assignment) options.
254 There is an optionally-configurable -c option to capitalize a value at
255 assignment.
256
257kk. There is a new `coproc' reserved word that specifies a coprocess: an
258 asynchronous command run with two pipes connected to the creating shell.
259 Coprocs can be named. The input and output file descriptors and the
260 PID of the coprocess are available to the calling shell in variables
261 with coproc-specific names.
262
1fa6db60
CR
263ll. A value of 0 for the -t option to `read' now returns success if there is
264 input available to be read from the specified file descriptor.
265
266mm. CDPATH and GLOBIGNORE are ignored when the shell is running in privileged
267 mode.
268
269nn. New bindable readline functions shell-forward-word and shell-backward-word,
270 which move forward and backward words delimited by shell metacharacters
271 and honor shell quoting.
272
273oo. New bindable readline functions shell-backward-kill-word and shell-kill-word
274 which kill words backward and forward, but use the same word boundaries
275 as shell-forward-word and shell-backward-word.
276
bea29b7b
CR
2772. New Features in Readline
278
279a. A new variable, rl_sort_completion_matches; allows applications to inhibit
280 match list sorting (but beware: some things don't work right if
281 applications do this).
282
283b. A new variable, rl_completion_invoking_key; allows applications to discover
284 the key that invoked rl_complete or rl_menu_complete.
285
286c. The functions rl_block_sigint and rl_release_sigint are now public and
287 available to calling applications who want to protect critical sections
288 (like redisplay).
289
290d. The functions rl_save_state and rl_restore_state are now public and
291 available to calling applications; documented rest of readline's state
292 flag values.
293
294e. A new user-settable variable, `history-size', allows setting the maximum
295 number of entries in the history list.
296
297f. There is a new implementation of menu completion, with several improvements
298 over the old; the most notable improvement is a better `completions
299 browsing' mode.
300
301g. The menu completion code now uses the rl_menu_completion_entry_function
302 variable, allowing applications to provide their own menu completion
303 generators.
304
305h. There is support for replacing a prefix of a pathname with a `...' when
306 displaying possible completions. This is controllable by setting the
307 `completion-prefix-display-length' variable. Matches with a common prefix
308 longer than this value have the common prefix replaced with `...'.
309
310i. There is a new `revert-all-at-newline' variable. If enabled, readline will
311 undo all outstanding changes to all history lines when `accept-line' is
312 executed.
313
1fa6db60
CR
314j. If the kernel supports it, readline displays special characters
315 corresponding to a keyboard-generated signal when the signal is received.
316
bea29b7b 317-------------------------------------------------------------------------------
d3ad40de
CR
318This is a terse description of the new features added to bash-3.2 since
319the release of bash-3.1. As always, the manual page (doc/bash.1) is
320the place to look for complete descriptions.
321
3221. New Features in Bash
323
324a. Changed the parameter pattern replacement functions to not anchor the
325 pattern at the beginning of the string if doing global replacement - that
326 combination doesn't make any sense.
327
328b. When running in `word expansion only' mode (--wordexp option), inhibit
329 process substitution.
330
331c. Loadable builtins now work on MacOS X 10.[34].
332
333d. Shells running in posix mode no longer set $HOME, as POSIX requires.
334
335e. The code that checks for binary files being executed as shell scripts now
336 checks only for NUL rather than any non-printing character.
337
338f. Quoting the string argument to the [[ command's =~ operator now forces
339 string matching, as with the other pattern-matching operators.
340
3412. New Features in Readline
342
343a. Calling applications can now set the keyboard timeout to 0, allowing
344 poll-like behavior.
345
346b. The value of SYS_INPUTRC (configurable at compilation time) is now used as
347 the default last-ditch startup file.
348
349c. The history file reading functions now allow windows-like \r\n line
350 terminators.
351
352-------------------------------------------------------------------------------
1569c106
CR
353This is a terse description of the new features added to bash-3.1 since
354the release of bash-3.0. As always, the manual page (doc/bash.1) is
355the place to look for complete descriptions.
356
3571. New Features in Bash
358
359a. Bash now understands LC_TIME as a special variable so that time display
360 tracks the current locale.
361
362b. BASH_ARGC, BASH_ARGV, BASH_SOURCE, and BASH_LINENO are no longer created
363 as `invisible' variables and may not be unset.
364
365c. In POSIX mode, if `xpg_echo' option is enabled, the `echo' builtin doesn't
366 try to interpret any options at all, as POSIX requires.
367
368d. The `bg' builtin now accepts multiple arguments, as POSIX seems to specify.
369
370e. Fixed vi-mode word completion and glob expansion to perform tilde
371 expansion.
372
373f. The `**' mathematic exponentiation operator is now right-associative.
374
375g. The `ulimit' builtin has new options: -i (max number of pending signals),
376 -q (max size of POSIX message queues), and -x (max number of file locks).
377
378h. A bare `%' once again expands to the current job when used as a job
379 specifier.
380
381i. The `+=' assignment operator (append to the value of a string or array) is
382 now supported for assignment statements and arguments to builtin commands
383 that accept assignment statements.
384
385j. BASH_COMMAND now preserves its value when a DEBUG trap is executed.
386
387k. The `gnu_errfmt' option is enabled automatically if the shell is running
388 in an emacs terminal window.
389
390l. New configuration option: --single-help-strings. Causes long help text
391 to be written as a single string; intended to ease translation.
392
393m. The COMP_WORDBREAKS variable now causes the list of word break characters
394 to be emptied when the variable is unset.
395
396n. An unquoted expansion of $* when $IFS is empty now causes the positional
397 parameters to be concatenated if the expansion doesn't undergo word
398 splitting.
399
400o. Bash now inherits $_ from the environment if it appears there at startup.
401
402p. New shell option: nocasematch. If non-zero, shell pattern matching ignores
403 case when used by `case' and `[[' commands.
404
405q. The `printf' builtin takes a new option: -v var. That causes the output
406 to be placed into var instead of on stdout.
407
408r. By default, the shell no longer reports processes dying from SIGPIPE.
409
410s. Bash now sets the extern variable `environ' to the export environment it
411 creates, so C library functions that call getenv() (and can't use the
412 shell-provided replacement) get current values of environment variables.
413
a2e7f358
CR
414t. A new configuration option, `--enable-strict-posix-default', which will
415 build bash to be POSIX conforming by default.
416
28089d04
CR
417u. If compiled for strict POSIX conformance, LINES and COLUMNS may now
418 override the true terminal size.
419
1569c106
CR
4202. New Features in Readline
421
422a. The key sequence sent by the keypad `delete' key is now automatically
423 bound to delete-char.
424
425b. A negative argument to menu-complete now cycles backward through the
426 completion list.
427
428c. A new bindable readline variable: bind-tty-special-chars. If non-zero,
429 readline will bind the terminal special characters to their readline
430 equivalents when it's called (on by default).
431
432d. New bindable command: vi-rubout. Saves deleted text for possible
433 reinsertion, as with any vi-mode `text modification' command; `X' is bound
434 to this in vi command mode.
435
28089d04
CR
436e. A new external application-controllable variable that allows the LINES
437 and COLUMNS environment variables to set the window size regardless of
438 what the kernel returns: rl_prefer_env_winsize
439
1569c106 440-------------------------------------------------------------------------------
d3a24ed2
CR
441This is a terse description of the new features added to bash-3.0 since
442the release of bash-2.05b. As always, the manual page (doc/bash.1) is
443the place to look for complete descriptions.
444
4451. New Features in Bash
446
447a. ANSI string expansion now implements the \x{hexdigits} escape.
448
449b. There is a new loadable `strftime' builtin.
450
451c. New variable, COMP_WORDBREAKS, which controls the readline completer's
452 idea of word break characters.
453
454d. The `type' builtin no longer reports on aliases unless alias expansion
455 will actually be performed.
456
457e. HISTCONTROL is now a colon-separated list of values, which permits
458 more extensibility and backwards compatibility.
459
460f. HISTCONTROL may now include the `erasedups' option, which causes all lines
461 matching a line being added to be removed from the history list.
462
463g. `configure' has a new `--enable-multibyte' argument that permits multibyte
464 character support to be disabled even on systems that support it.
465
466h. New variables to support the bash debugger: BASH_ARGC, BASH_ARGV,
467 BASH_SOURCE, BASH_LINENO, BASH_SUBSHELL, BASH_EXECUTION_STRING,
468 BASH_COMMAND
469
470i. FUNCNAME has been changed to support the debugger: it's now an array
471 variable.
472
473j. for, case, select, arithmetic commands now keep line number information
474 for the debugger.
475
476k. There is a new `RETURN' trap executed when a function or sourced script
477 returns (not inherited child processes; inherited by command substitution
478 if function tracing is enabled and the debugger is active).
479
480l. New invocation option: --debugger. Enables debugging and turns on new
481 `extdebug' shell option.
482
483m. New `functrace' and `errtrace' options to `set -o' cause DEBUG and ERR
484 traps, respectively, to be inherited by shell functions. Equivalent to
485 `set -T' and `set -E' respectively. The `functrace' option also controls
486 whether or not the DEBUG trap is inherited by sourced scripts.
487
488n. The DEBUG trap is run before binding the variable and running the action
489 list in a `for' command, binding the selection variable and running the
490 query in a `select' command, and before attempting a match in a `case'
491 command.
492
493o. New `--enable-debugger' option to `configure' to compile in the debugger
494 support code.
495
496p. `declare -F' now prints out extra line number and source file information
497 if the `extdebug' option is set.
498
499q. If `extdebug' is enabled, a non-zero return value from a DEBUG trap causes
500 the next command to be skipped, and a return value of 2 while in a
501 function or sourced script forces a `return'.
502
503r. New `caller' builtin to provide a call stack for the bash debugger.
504
505s. The DEBUG trap is run just before the first command in a function body is
506 executed, for the debugger.
507
508t. `for', `select', and `case' command heads are printed when `set -x' is
509 enabled.
510
511u. There is a new {x..y} brace expansion, which is shorthand for {x.x+1,
512 x+2,...,y}. x and y can be integers or single characters; the sequence
513 may ascend or descend; the increment is always 1.
514
515v. New ksh93-like ${!array[@]} expansion, expands to all the keys (indices)
516 of array.
517
518w. New `force_fignore' shopt option; if enabled, suffixes specified by
519 FIGNORE cause words to be ignored when performing word completion even
520 if they're the only possibilities.
521
522x. New `gnu_errfmt' shopt option; if enabled, error messages follow the `gnu
523 style' (filename:lineno:message) format.
524
525y. New `-o bashdefault' option to complete and compgen; if set, causes the
526 whole set of bash completions to be performed if the compspec doesn't
527 result in a match.
528
529z. New `-o plusdirs' option to complete and compgen; if set, causes directory
530 name completion to be performed and the results added to the rest of the
531 possible completions.
532
533aa. `kill' is available as a builtin even when the shell is built without
534 job control.
535
536bb. New HISTTIMEFORMAT variable; value is a format string to pass to
537 strftime(3). If set and not null, the `history' builtin prints out
538 timestamp information according to the specified format when displaying
539 history entries. If set, bash tells the history library to write out
540 timestamp information when the history file is written.
541
542cc. The [[ ... ]] command has a new binary `=~' operator that performs
543 extended regular expression (egrep-like) matching.
544
545dd. `configure' has a new `--enable-cond-regexp' option (enabled by default)
546 to enable the =~ operator and regexp matching in [[ ... ]].
547
548ee. Subexpressions matched by the =~ operator are placed in the new
549 BASH_REMATCH array variable.
550
551ff. New `failglob' option that causes an expansion error when pathname
552 expansion fails to produce a match.
553
554gg. New `set -o pipefail' option that causes a pipeline to return a failure
555 status if any of the processes in the pipeline fail, not just the last
556 one.
557
113d85a4 558hh. printf builtin understands two new escape sequences: \" and \?.
545f34cf 559
113d85a4 560ii. `echo -e' understands two new escape sequences: \" and \?.
545f34cf 561
113d85a4
CR
562jj. The GNU `gettext' package and libintl have been integrated; the shell's
563 messages can be translated into different languages.
564
565kk. The `\W' prompt expansion now abbreviates $HOME as `~', like `\w'.
566
567ll. The error message printed when bash cannot open a shell script supplied
568 as argument 1 now includes the name of the shell, to better identify
569 the error as coming from bash.
545f34cf 570
56299fa5 571mm. The parameter pattern removal and substitution expansions are now much
5565fb1a
CR
572 faster and more efficient when using multibyte characters.
573
56299fa5 574nn. The `jobs', `kill', and `wait' builtins now accept job control notation
f085a21f
CR
575 even if job control is not enabled.
576
56299fa5 577oo. The historical behavior of `trap' that allows a missing `action' argument
61deeb13
CR
578 to cause each specified signal's handling to be reset to its default is
579 now only supported when `trap' is given a single non-option argument.
580
d3a24ed2
CR
5812. New Features in Readline
582
583a. History expansion has a new `a' modifier equivalent to the `g' modifier
584 for compatibility with the BSD csh.
585
586b. History expansion has a new `G' modifier equivalent to the BSD csh `g'
587 modifier, which performs a substitution once per word.
588
589c. All non-incremental search operations may now undo the operation of
590 replacing the current line with the history line.
591
592d. The text inserted by an `a' command in vi mode can be reinserted with
593 `.'.
594
595e. New bindable variable, `show-all-if-unmodified'. If set, the readline
596 completer will list possible completions immediately if there is more
597 than one completion and partial completion cannot be performed.
598
599f. There is a new application-callable `free_history_entry()' function.
600
601g. History list entries now contain timestamp information; the history file
602 functions know how to read and write timestamp information associated
603 with each entry.
604
605h. Four new key binding functions have been added:
606
607 rl_bind_key_if_unbound()
608 rl_bind_key_if_unbound_in_map()
609 rl_bind_keyseq_if_unbound()
610 rl_bind_keyseq_if_unbound_in_map()
611
545f34cf
CR
612i. New application variable, rl_completion_quote_character, set to any
613 quote character readline finds before it calls the application completion
614 function.
615
616j. New application variable, rl_completion_suppress_quote, settable by an
617 application completion function. If set to non-zero, readline does not
618 attempt to append a closing quote to a completed word.
619
620k. New application variable, rl_completion_found_quote, set to a non-zero
621 value if readline determines that the word to be completed is quoted.
622 Set before readline calls any application completion function.
623
113d85a4
CR
624l. New function hook, rl_completion_word_break_hook, called when readline
625 needs to break a line into words when completion is attempted. Allows
626 the word break characters to vary based on position in the line.
627
628m. New bindable command: unix-filename-rubout. Does the same thing as
629 unix-word-rubout, but adds `/' to the set of word delimiters.
630
56299fa5
CR
631n. When listing completions, directories have a `/' appended if the
632 `mark-directories' option has been enabled.
633
d3a24ed2 634-------------------------------------------------------------------------------
7117c2d2
JA
635This is a terse description of the new features added to bash-2.05b since
636the release of bash-2.05a. As always, the manual page (doc/bash.1) is
637the place to look for complete descriptions.
638
6391. New Features in Bash
640
641a. If set, TMOUT is the default timeout for the `read' builtin.
642
643b. `type' has two new options: `-f' suppresses shell function lookup, and
644 `-P' forces a $PATH search.
645
646c. New code to handle multibyte characters.
647
648d. `select' was changed to be more ksh-compatible, in that the menu is
649 reprinted each time through the loop only if REPLY is set to NULL.
650 The previous behavior is available as a compile-time option.
651
652e. `complete -d' and `complete -o dirnames' now force a slash to be
653 appended to names which are symlinks to directories.
654
655f. There is now a bindable edit-and-execute-command readline command,
656 like the vi-mode `v' command, bound to C-xC-e in emacs mode.
657
658g. Added support for ksh93-like [:word:] character class in pattern matching.
659
660h. The $'...' quoting construct now expands \cX to Control-X.
661
662i. A new \D{...} prompt expansion; passes the `...' to strftime and inserts
663 the result into the expanded prompt.
664
665j. The shell now performs arithmetic in the largest integer size the
666 machine supports (intmax_t), instead of long.
667
668k. If a numeric argument is supplied to one of the bash globbing completion
669 functions, a `*' is appended to the word before expansion is attempted.
670
671l. The bash globbing completion functions now allow completions to be listed
672 with double tabs or if `show-all-if-ambiguous' is set.
673
674m. New `-o nospace' option for `complete' and `compgen' builtins; suppresses
675 readline's appending a space to the completed word.
676
677n. New `here-string' redirection operator: <<< word.
678
679o. When displaying variables, function attributes and definitions are shown
680 separately, allowing them to be re-used as input (attempting to re-use
681 the old output would result in syntax errors).
682
683p. There is a new configuration option `--enable-mem-scramble', controls
684 bash malloc behavior of writing garbage characters into memory at
685 allocation and free time.
686
687q. The `complete' and `compgen' builtins now have a new `-s/-A service'
688 option to complete on names from /etc/services.
689
690r. `read' has a new `-u fd' option to read from a specified file descriptor.
691
692s. Fix the completion code so that expansion errors in a directory name
693 don't cause a longjmp back to the command loop.
694
695t. Fixed word completion inside command substitution to work a little more
696 intuitively.
697
698u. The `printf' %q format specifier now uses $'...' quoting to print the
699 argument if it contains non-printing characters.
700
701v. The `declare' and `typeset' builtins have a new `-t' option. When applied
702 to functions, it causes the DEBUG trap to be inherited by the named
703 function. Currently has no effect on variables.
704
705w. The DEBUG trap is now run *before* simple commands, ((...)) commands,
706 [[...]] conditional commands, and for ((...)) loops.
707
708x. The expansion of $LINENO inside a shell function is only relative to the
709 function start if the shell is interactive -- if the shell is running a
710 script, $LINENO expands to the line number in the script. This is as
711 POSIX-2001 requires.
712
713y. The bash debugger in examples/bashdb has been modified to work with the
714 new DEBUG trap semantics, the command set has been made more gdb-like,
715 and the changes to $LINENO make debugging functions work better. Code
716 from Gary Vaughan.
717
718z. New [n]<&word- and [n]>&word- redirections from ksh93 -- move fds (dup
719 and close).
720
721aa. There is a new `-l' invocation option, equivalent to `--login'.
722
723bb. The `hash' builtin has a new `-l' option to list contents in a reusable
724 format, and a `-d' option to remove a name from the hash table.
725
726cc. There is now support for placing the long help text into separate files
727 installed into ${datadir}/bash. Not enabled by default; can be turned
728 on with `--enable-separate-helpfiles' option to configure.
729
730dd. All builtins that take operands accept a `--' pseudo-option, except
731 `echo'.
732
733ee. The `echo' builtin now accepts \0xxx (zero to three octal digits following
734 the `0') in addition to \xxx (one to three octal digits) for SUSv3/XPG6/
735 POSIX.1-2001 compliance.
736
737
7382. New Features in Readline
739
740a. Support for key `subsequences': allows, e.g., ESC and ESC-a to both
741 be bound to readline functions. Now the arrow keys may be used in vi
742 insert mode.
743
744b. When listing completions, and the number of lines displayed is more than
745 the screen length, readline uses an internal pager to display the results.
746 This is controlled by the `page-completions' variable (default on).
747
748c. New code to handle editing and displaying multibyte characters.
749
750d. The behavior introduced in bash-2.05a of deciding whether or not to
751 append a slash to a completed name that is a symlink to a directory has
752 been made optional, controlled by the `mark-symlinked-directories'
753 variable (default is the 2.05a behavior).
754
755e. The `insert-comment' command now acts as a toggle if given a numeric
756 argument: if the first characters on the line don't specify a
757 comment, insert one; if they do, delete the comment text
758
759f. New application-settable completion variable:
760 rl_completion_mark_symlink_dirs, allows an application's completion
761 function to temporarily override the user's preference for appending
762 slashes to names which are symlinks to directories.
763
764g. New function available to application completion functions:
765 rl_completion_mode, to tell how the completion function was invoked
766 and decide which argument to supply to rl_complete_internal (to list
767 completions, etc.).
768
769h. Readline now has an overwrite mode, toggled by the `overwrite-mode'
770 bindable command, which could be bound to `Insert'.
771
772i. New application-settable completion variable:
773 rl_completion_suppress_append, inhibits appending of
774 rl_completion_append_character to completed words.
775
776j. New key bindings when reading an incremental search string: ^W yanks
777 the currently-matched word out of the current line into the search
778 string; ^Y yanks the rest of the current line into the search string,
779 DEL or ^H deletes characters from the search string.
780
781-------------------------------------------------------------------------------
f73dda09
JA
782This is a terse description of the new features added to bash-2.05a since
783the release of bash-2.05. As always, the manual page (doc/bash.1) is
784the place to look for complete descriptions.
785
7861. New Features in Bash
787
788a. Added support for DESTDIR installation root prefix, so you can do a
789 `make install DESTDIR=bash-root' and do easier binary packaging.
790
791b. Added support for builtin printf "'" flag character as per latest POSIX
792 drafts.
793
794c. Support for POSIX.2 printf(1) length specifiers `j', `t', and `z' (from
795 ISO C99).
796
797d. New autoconf macro, RL_LIB_READLINE_VERSION, for use by other applications
798 (bash doesn't use very much of what it returns).
799
800e. `set [-+]o nolog' is recognized as required by the latest POSIX drafts,
801 but ignored.
802
803f. New read-only `shopt' option: login_shell. Set to non-zero value if the
804 shell is a login shell.
805
806g. New `\A' prompt string escape sequence; expands to time in 24 HH:MM format.
807
808h. New `-A group/-g' option to complete and compgen; does group name
809 completion.
810
811i. New `-t' option to `hash' to list hash values for each filename argument.
812
813j. New [-+]O invocation option to set and unset `shopt' options at startup.
814
815k. configure's `--with-installed-readline' option now takes an optional
816 `=PATH' suffix to set the root of the tree where readline is installed
817 to PATH.
818
819l. The ksh-like `ERR' trap has been added. The `ERR' trap will be run
820 whenever the shell would have exited if the -e option were enabled.
821 It is not inherited by shell functions.
822
823m. `readonly', `export', and `declare' now print variables which have been
824 given attributes but not set by assigning a value as just a command and
825 a variable name (like `export foo') when listing, as the latest POSIX
826 drafts require.
827
828n. `bashbug' now requires that the subject be changed from the default.
829
830o. configure has a new `--enable-largefile' option, like other GNU utilities.
831
832p. `for' loops now allow empty word lists after `in', like the latest POSIX
833 drafts require.
834
835q. The builtin `ulimit' now takes two new non-numeric arguments: `hard',
836 meaning the current hard limit, and `soft', meaning the current soft
837 limit, in addition to `unlimited'
838
839r. `ulimit' now prints the option letter associated with a particular
840 resource when printing more than one limit.
841
842s. `ulimit' prints `hard' or `soft' when a value is not `unlimited' but is
843 one of RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively.
844
845t. The `printf' builtin now handles the %a and %A conversions if they're
846 implemented by printf(3).
847
848u. The `printf' builtin now handles the %F conversion (just about like %f).
849
850v. The `printf' builtin now handles the %n conversion like printf(3). The
851 corresponding argument is the name of a shell variable to which the
852 value is assigned.
853
8542. New Features in Readline
855
856a. Added extern declaration for rl_get_termcap to readline.h, making it a
857 public function (it was always there, just not in readline.h).
858
859b. New #defines in readline.h: RL_READLINE_VERSION, currently 0x0402,
860 RL_VERSION_MAJOR, currently 4, and RL_VERSION_MINOR, currently 2.
861
862c. New readline variable: rl_readline_version, mirrors RL_READLINE_VERSION.
863
864d. New bindable boolean readline variable: match-hidden-files. Controls
865 completion of files beginning with a `.' (on Unix). Enabled by default.
866
867e. The history expansion code now allows any character to terminate a
868 `:first-' modifier, like csh.
869
870f. New bindable variable `history-preserve-point'. If set, the history
871 code attempts to place the user at the same location on each history
872 line retrived with previous-history or next-history.
873
874-------------------------------------------------------------------------------
28ef6c31
JA
875This is a terse description of the new features added to bash-2.05 since
876the release of bash-2.04. As always, the manual page (doc/bash.1) is
877the place to look for complete descriptions.
878
8791. New Features in Bash
880
881a. Added a new `--init-file' invocation argument as a synonym for `--rcfile',
882 per the new GNU coding standards.
883
884b. The /dev/tcp and /dev/udp redirections now accept service names as well as
885 port numbers.
886
887c. `complete' and `compgen' now take a `-o value' option, which controls some
888 of the aspects of that compspec. Valid values are:
889
890 default - perform bash default completion if programmable
891 completion produces no matches
892 dirnames - perform directory name completion if programmable
893 completion produces no matches
894 filenames - tell readline that the compspec produces filenames,
895 so it can do things like append slashes to
896 directory names and suppress trailing spaces
897
898d. A new loadable builtin, realpath, which canonicalizes and expands symlinks
899 in pathname arguments.
900
901e. When `set' is called without options, it prints function defintions in a
902 way that allows them to be reused as input. This affects `declare' and
903 `declare -p' as well. This only happens when the shell is not in POSIX
904 mode, since POSIX.2 forbids this behavior.
905
906f. Bash-2.05 once again honors the current locale setting when processing
907 ranges within pattern matching bracket expressions (e.g., [A-Z]).
908
9092. New Features in Readline
910
911a. The blink timeout for paren matching is now settable by applications,
912 via the rl_set_paren_blink_timeout() function.
913
914b. _rl_executing_macro has been renamed to rl_executing_macro, which means
915 it's now part of the public interface.
916
917c. Readline has a new variable, rl_readline_state, which is a bitmap that
918 encapsulates the current state of the library; intended for use by
919 callbacks and hook functions.
920
921d. New application-callable function rl_set_prompt(const char *prompt):
922 expands its prompt string argument and sets rl_prompt to the result.
923
924e. New application-callable function rl_set_screen_size(int rows, int cols):
925 public method for applications to set readline's idea of the screen
926 dimensions.
927
928f. New function, rl_get_screen_size (int *rows, int *columns), returns
929 readline's idea of the screen dimensions.
930
931g. The timeout in rl_gather_tyi (readline keyboard input polling function)
932 is now settable via a function (rl_set_keyboard_input_timeout()).
933
934h. Renamed the max_input_history variable to history_max_entries; the old
935 variable is maintained for backwards compatibility.
936
937i. The list of characters that separate words for the history tokenizer is
938 now settable with a variable: history_word_delimiters. The default
939 value is as before.
940
941-------------------------------------------------------------------------------
bb70624e
JA
942This is a terse description of the new features added to bash-2.04 since
943the release of bash-2.03. As always, the manual page (doc/bash.1) is
944the place to look for complete descriptions.
945
9461. New Features in Bash
947
948a. The history builtin has a `-d offset' option to delete the history entry
949 at position `offset'.
950
951b. The prompt expansion code has two new escape sequences: \j, the number of
952 active jobs; and \l, the basename of the shell's tty device name.
953
954c. The `bind' builtin has a new `-x' option to bind key sequences to shell
955 commands.
956
957d. There is a new shell option, no_empty_command_completion, which, when
958 enabled, disables command completion when TAB is typed on an empty line.
959
960e. The `help' builtin has a `-s' option to just print a builtin's usage
961 synopsis.
962
963f. There are several new arithmetic operators: id++, id-- (variable
f73dda09 964 post-increment/decrement), ++id, --id (variable pre-increment/decrement),
bb70624e
JA
965 expr1 , expr2 (comma operator).
966
967g. There is a new ksh-93 style arithmetic for command:
968 for ((expr1 ; expr2; expr3 )); do list; done
969
970h. The `read' builtin has a number of new options:
971 -t timeout only wait timeout seconds for input
972 -n nchars only read nchars from input instead of a full line
973 -d delim read until delim rather than newline
974 -s don't echo input chars as they are read
975
976i. The redirection code now handles several filenames specially:
977 /dev/fd/N, /dev/stdin, /dev/stdout, and /dev/stderr, whether or
978 not they are present in the file system.
979
980j. The redirection code now recognizes pathnames of the form
981 /dev/tcp/host/port and /dev/udp/host/port, and tries to open a socket
982 of the appropriate type to the specified port on the specified host.
983
984k. The ksh-93 ${!prefix*} expansion, which expands to the names of all
985 shell variables with prefix PREFIX, has been implemented.
986
987l. There is a new dynamic variable, FUNCNAME, which expands to the name of
988 a currently-executing function. Assignments to FUNCNAME have no effect.
989
990m. The GROUPS variable is no longer readonly; assignments to it are silently
991 discarded. This means it can be unset.
992
993n. A new programmable completion facility, with two new builtin commands:
994 complete and compgen.
995
996o. configure has a new option, `--enable-progcomp', to compile in the
997 programmable completion features (enabled by default).
998
999p. `shopt' has a new option, `progcomp', to enable and disable programmable
1000 completion at runtime.
1001
1002q. Unsetting HOSTFILE now clears the list of hostnames used for completion.
1003
1004r. configure has a new option, `--enable-bash-malloc', replacing the old
1005 `--with-gnu-malloc' (which is still present for backwards compatibility).
1006
1007s. There is a new manual page describing rbash, the restricted shell.
1008
1009t. `bashbug' has new `--help' and `--version' options.
1010
1011u. `shopt' has a new `xpg_echo' option, which controls the behavior of
1012 `echo' with respect to backslash-escaped characters at runtime.
1013
1014v. If NON_INTERACTIVE_LOGIN_SHELLS is defined, all login shells read the
1015 startup files, even if they are not interactive.
1016
1017w. The LC_NUMERIC variable is now treated specially, and used to set the
1018 LC_NUMERIC locale category for number formatting, e.g., when `printf'
1019 displays floating-point numbers.
1020
10212. New features in Readline
1022
1023a. Parentheses matching is now always compiled into readline, and enabled
1024 or disabled when the value of the `blink-matching-paren' variable is
1025 changed.
1026
1027b. MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename.
1028
1029c. MS-DOS systems now use ~/_history as the default history file.
1030
1031d. history-search-{forward,backward} now leave the point at the end of the
1032 line when the string to search for is empty, like
1033 {reverse,forward}-search-history.
1034
1035e. history-search-{forward,backward} now leave the last history line found
1036 in the readline buffer if the second or subsequent search fails.
1037
1038f. New function for use by applications: rl_on_new_line_with_prompt, used
1039 when an application displays the prompt itself before calling readline().
1040
1041g. New variable for use by applications: rl_already_prompted. An application
1042 that displays the prompt itself before calling readline() must set this to
1043 a non-zero value.
1044
1045h. A new variable, rl_gnu_readline_p, always 1. The intent is that an
1046 application can verify whether or not it is linked with the `real'
1047 readline library or some substitute.
1048
1049-------------------------------------------------------------------------------
b72432fd
JA
1050This is a terse description of the new features added to bash-2.03 since
1051the release of bash-2.02. As always, the manual page (doc/bash.1) is
1052the place to look for complete descriptions.
1053
10541. New Features in Bash
1055
1056a. New `shopt' option, `restricted_shell', indicating whether or not the
1057 shell was started in restricted mode, for use in startup files.
1058
1059b. Filename generation is now performed on the words between ( and ) in
1060 array assignments (which it probably should have done all along).
1061
1062c. OLDPWD is now auto-exported, as POSIX.2 seems to require.
1063
1064d. ENV and BASH_ENV are read-only variables in a restricted shell.
1065
1066e. A change was made to the startup file code so that any shell begun with
1067 the `--login' option, even non-interactive shells, will source the login
1068 shell startup files.
1069
10702. New Features in Readline
1071
1072a. Many changes to the signal handling:
1073 o Readline now catches SIGQUIT and cleans up the tty before returning;
1074 o A new variable, rl_catch_signals, is available to application writers
1075 to indicate to readline whether or not it should install its own
1076 signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP,
1077 SIGTTIN, and SIGTTOU;
1078 o A new variable, rl_catch_sigwinch, is available to application
1079 writers to indicate to readline whether or not it should install its
1080 own signal handler for SIGWINCH, which will chain to the calling
1081 applications's SIGWINCH handler, if one is installed;
1082 o There is a new function, rl_free_line_state, for application signal
1083 handlers to call to free up the state associated with the current
1084 line after receiving a signal;
1085 o There is a new function, rl_cleanup_after_signal, to clean up the
1086 display and terminal state after receiving a signal;
1087 o There is a new function, rl_reset_after_signal, to reinitialize the
1088 terminal and display state after an application signal handler
1089 returns and readline continues
1090
1091b. There is a new function, rl_resize_terminal, to reset readline's idea of
1092 the screen size after a SIGWINCH.
1093
1094c. New public functions: rl_save_prompt and rl_restore_prompt. These were
1095 previously private functions with a `_' prefix.
1096
1097d. New function hook: rl_pre_input_hook, called just before readline starts
1098 reading input, after initialization.
1099
1100e. New function hook: rl_display_matches_hook, called when readline would
1101 display the list of completion matches. The new function
1102 rl_display_match_list is what readline uses internally, and is available
1103 for use by application functions called via this hook.
1104
1105f. New bindable function, delete-char-or-list, like tcsh.
1106
1107g. A new variable, rl_erase_empty_line, which, if set by an application using
1108 readline, will cause readline to erase, prompt and all, lines on which the
1109 only thing typed was a newline.
1110
1111h. New bindable variable: `isearch-terminators'.
1112
1113i. New bindable function: `forward-backward-delete-char' (unbound by default).
1114
1115-------------------------------------------------------------------------------
cce855bc
JA
1116This is a terse description of the new features added to bash-2.02 since
1117the release of bash-2.01.1. As always, the manual page (doc/bash.1) is
1118the place to look for complete descriptions.
1119
11201. New Features in Bash
1121
1122a. A new version of malloc, based on the older GNU malloc, that has many
1123 changes, is more page-based, is more conservative with memory usage,
1124 and does not `orphan' large blocks when they are freed.
1125
1126b. A new version of gmalloc, based on the old GLIBC malloc, with many
1127 changes and range checking included by default.
1128
1129c. A new implementation of fnmatch(3) that includes full POSIX.2 Basic
1130 Regular Expression matching, including character classes, collating
1131 symbols, equivalence classes, and support for case-insensitive pattern
1132 matching.
1133
1134d. ksh-88 egrep-style extended pattern matching ([@+*?!](patlist)) has been
1135 implemented, controlled by a new `shopt' option, `extglob'.
1136
1137e. There is a new ksh-like `[[' compound command, which implements
1138 extended `test' functionality.
1139
1140f. There is a new `printf' builtin, implemented according to the POSIX.2
1141 specification.
1142
1143g. There is a new feature for command substitution: $(< filename) now expands
1144 to the contents of `filename', with any trailing newlines removed
1145 (equivalent to $(cat filename)).
1146
1147h. There are new tilde prefixes which expand to directories from the
1148 directory stack.
1149
1150i. There is a new `**' arithmetic operator to do exponentiation.
1151
1152j. There are new configuration options to control how bash is linked:
1153 `--enable-profiling', to allow bash to be profiled with gprof, and
1154 `--enable-static-link', to allow bash to be linked statically.
1155
1156k. There is a new configuration option, `--enable-cond-command', which
1157 controls whether or not the `[[' command is included. It is on by
1158 default.
1159
1160l. There is a new configuration option, `--enable-extended-glob', which
1161 controls whether or not the ksh extended globbing feature is included.
1162 It is enabled by default.
1163
1164m. There is a new configuration #define in config.h.top that, when enabled,
1165 will cause all login shells to source /etc/profile and one of the user-
1166 specific login shell startup files, whether or not the shell is
1167 interactive.
1168
1169n. There is a new invocation option, `--dump-po-strings', to dump
1170 a shell script's translatable strings ($"...") in GNU `po' format.
1171
1172o. There is a new `shopt' option, `nocaseglob', to enable case-insensitive
1173 pattern matching when globbing filenames and using the `case' construct.
1174
1175p. There is a new `shopt' option, `huponexit', which, when enabled, causes
1176 the shell to send SIGHUP to all jobs when an interactive login shell
1177 exits.
1178
1179q. `bind' has a new `-u' option, which takes a readline function name as an
1180 argument and unbinds all key sequences bound to that function in a
1181 specified keymap.
1182
1183r. `disown' now has `-a' and `-r' options, to limit operation to all jobs
1184 and running jobs, respectively.
1185
1186s. The `shopt' `-p' option now causes output to be displayed in a reusable
1187 format.
1188
1189t. `test' has a new `-N' option, which returns true if the filename argument
1190 has been modified since it was last accessed.
1191
1192u. `umask' now has a `-p' option to print output in a reusable format.
1193
1194v. A new escape sequence, `\xNNN', has been added to the `echo -e' and $'...'
1195 translation code. It expands to the character whose ascii code is NNN
1196 in hexadecimal.
1197
1198w. The prompt string expansion code has a new `\r' escape sequence.
1199
1200x. The shell may now be cross-compiled for the CYGWIN32 environment on
1201 a Unix machine.
1202
12032. New Features in Readline
1204
1205a. There is now an option for `iterative' yank-last-arg handline, so a user
1206 can keep entering `M-.', yanking the last argument of successive history
1207 lines.
1208
1209b. New variable, `print-completions-horizontally', which causes completion
1210 matches to be displayed across the screen (like `ls -x') rather than up
1211 and down the screen (like `ls').
1212
1213c. New variable, `completion-ignore-case', which causes filename completion
1214 and matching to be performed case-insensitively.
1215
1216d. There is a new bindable command, `magic-space', which causes history
1217 expansion to be performed on the current readline buffer and a space to
1218 be inserted into the result.
1219
1220e. There is a new bindable command, `menu-complete', which enables tcsh-like
1221 menu completion (successive executions of menu-complete insert a single
1222 completion match, cycling through the list of possible completions).
1223
1224f. There is a new bindable command, `paste-from-clipboard', for use on Win32
1225 systems, to insert the text from the Win32 clipboard into the editing
1226 buffer.
1227
1228g. The key sequence translation code now understands printf-style backslash
1229 escape sequences, including \NNN octal escapes. These escape sequences
1230 may be used in key sequence definitions or macro values.
1231
1232h. An `$include' inputrc file parser directive has been added.
1233
1234-------------------------------------------------------------------------------
d166f048
JA
1235This is a terse description of the new features added to bash-2.01 since
1236the release of bash-2.0. As always, the manual page (doc/bash.1) is the
1237place to look for complete descriptions.
1238
12391. New Features in Bash
1240
1241a. There is a new builtin array variable: GROUPS, the set of groups to which
1242 the user belongs. This is used by the test suite.
1243
12442. New Features in Readline
1245
1246a. If a key sequence bound to `universal-argument' is read while reading a
1247 numeric argument started with `universal-argument', it terminates the
1248 argument but is otherwise ignored. This provides a way to insert multiple
1249 instances of a digit string, and is how GNU emacs does it.
1250
1251-------------------------------------------------------------------------------
ccc6cda3
JA
1252This is a terse description of the new features added to bash-2.0 since
1253the release of bash-1.14.7. As always, the manual page (doc/bash.1) is
1254the place to look for complete descriptions.
726f6388 1255
ccc6cda3 12561. New Features in Bash
726f6388 1257
ccc6cda3
JA
1258a. There is a new invocation option, -D, that dumps translatable strings
1259 in a script.
726f6388 1260
ccc6cda3
JA
1261b. The `long' invocation options must now be prefixed with `--'.
1262
1263c. New long invocation options: --dump-strings, --help, --verbose
1264
1265d. The `nolineediting' invocation option was renamed to `noediting'.
1266
1267e. The `nobraceexpansion' and `quiet' long invocation options were removed.
1268
1269f. The `--help' and `--version' long options now work as the GNU coding
1270 standards specify.
1271
1272g. If invoked as `sh', bash now enters posix mode after reading the
1273 startup files, and reads and executes commands from the file named
1274 by $ENV if interactive (as POSIX.2 specifies). A login shell invoked
1275 as `sh' reads $ENV after /etc/profile and ~/.profile.
1276
1277h. There is a new reserved word, `time', for timing pipelines, builtin
1278 commands, and shell functions. It uses the value of the TIMEFORMAT
1279 variable as a format string describing how to print the timing
1280 statistics.
1281
1282i. The $'...' quoting syntax expands ANSI-C escapes in ... and leaves the
1283 result single-quoted.
1284
1285j. The $"..." quoting syntax performs locale-specific translation of ...
1286 and leaves the result double-quoted.
1287
1288k. LINENO now works correctly in functions.
1289
1290l. New variables: DIRSTACK, PIPESTATUS, BASH_VERSINFO, HOSTNAME, SHELLOPTS,
1291 MACHTYPE. The first three are array variables.
1292
1293m. The BASH_VERSION and BASH_VERSINFO variables now include the shell's
1294 `release status' (alpha[N], beta[N], release).
1295
1296n. Some variables have been removed: MAIL_WARNING, notify, history_control,
1297 command_oriented_history, glob_dot_filenames, allow_null_glob_expansion,
1298 nolinks, hostname_completion_file, noclobber, no_exit_on_failed_exec, and
1299 cdable_vars. Most of them are now implemented with the new `shopt'
1300 builtin; others were already implemented by `set'.
1301
1302o. Bash now uses some new variables: LC_ALL, LC_MESSAGES, LC_CTYPE,
1303 LC_COLLATE, LANG, GLOBIGNORE, HISTIGNORE.
1304
1305p. The shell now supports integer-indexed arrays of unlimited length,
1306 with a new compound assignment syntax and changes to the appropriate
1307 builtin commands (declare/typeset, read, readonly, etc.). The array
1308 index may be an arithmetic expression.
1309
1310q. ${!var}: indirect variable expansion, equivalent to eval \${$var}.
1311
1312r. ${paramter:offset[:length]}: variable substring extraction.
1313
1314s. ${parameter/pattern[/[/]string]}: variable pattern substitution.
1315
1316t. The $[...] arithmetic expansion syntax is no longer supported, in
1317 favor of $((...)).
1318
1319u. Aliases can now be expanded in shell scripts with a shell option
1320 (shopt expand_aliases).
1321
1322v. History and history expansion can now be used in scripts with
1323 set -o history and set -H.
1324
1325w. All builtins now return an exit status of 2 for incorrect usage.
1326
1327x. Interactive shells resend SIGHUP to all running or stopped children
1328 if (and only if) they exit due to a SIGHUP.
1329
1330y. New prompting expansions: \a, \e, \H, \T, \@, \v, \V.
1331
1332z. Variable expansion in prompt strings is now controllable via a shell
1333 option (shopt promptvars).
1334
1335aa. Bash now defaults to using command-oriented history.
1336
1337bb. The history file ($HISTFILE) is now truncated to $HISTFILESIZE after
1338 being written.
1339
1340cc. The POSIX.2 conditional arithmetic evaluation syntax (expr ? expr : expr)
1341 has been implemented.
1342
1343dd. Each builtin now accepts `--' to signify the end of the options, except
1344 as documented (echo, etc.).
1345
1346ee. All builtins use -p to display values in a re-readable format where
1347 appropriate, except as documented (echo, type, etc.).
1348
1349ff. The `alias' builtin has a new -p option.
1350
1351gg. Changes to the `bind' builtin:
1352 o has new options: -psPSVr.
1353 o the `-d' option was renamed to `-p'
1354 o the `-v' option now dumps variables; the old `-v' is now `-P'
1355
1356hh. The `bye' synonym for `exit' was removed.
1357
1358ii. The -L and -P options to `cd' and `pwd' have been documented.
1359
1360jj. The `cd' builtin now does spelling correction on the directory name
1361 by default. This is settable with a shell option (shopt cdspell).
1362
1363kk. The `declare' builtin has new options: -a, -F, -p.
1364
1365ll. The `dirs' builtin has new options: -c, -p, -v.
1366
1367mm. The new `disown' builtin removes jobs from the shell's jobs table
1368 or inhibits the resending of SIGHUP when the shell receives a
1369 SIGHUP.
1370
1371nn. The `echo' builtin has a new escape character: \e.
1372
1373oo. The `enable' builtin can now load new builtins dynamically from shared
1374 objects on systems with the dlopen/dlsym interface. There are a number
1375 of examples in the examples/loadables directory. There are also
1376 new options: -d, -f, -s, -p.
1377
1378pp. The `-all' option to `enable' was removed in favor of `-a'.
1379
1380qq. The `exec' builtin has new options: -l, -c, -a.
1381
1382rr. The `hash' builtin has a new option: -p.
1383
1384ss. The `history' builtin has new options: -c, -p, -s.
1385
1386tt. The `jobs' builtin has new options: -r, -s.
1387
1388uu. The `kill' builtin has new options: -n signum, -l signame.
1389
1390vv. The `pushd' and `popd' builtins have a new option: -n.
1391
1392ww. The `read' builtin has new options: -p prompt, -e, -a.
1393
1394xx. The `readonly' builtin has a new -a option, and the -n option was removed.
1395
1396yy. Changes to the `set' builtin:
1397 o new options: -B, -o keyword, -o onecmd, -o history
1398 o options removed: -l, -d, -o nohash
1399 o options changed: +o, -h, -o hashall
1400 o now displays variables in a format that can be re-read as input
1401
1402zz. The new `shopt' builtin controls shell optional behavior previously
1403 done by setting and unsetting certain shell variables.
1404
1405aaa. The `test' builtin has new operators: -o option, s1 == s2, s1 < s2,
1406 and s1 > s2, where s1 and s2 are strings.
1407
1408bbb. There is a new trap, DEBUG, executed after every simple command.
1409
1410ccc. The `trap' builtin has a new -p option.
1411
1412ddd. The `ulimit' builtin has a new -l option on 4.4BSD-based systems.
1413
1414eee. The PS1, PS2, PATH, and IFS variables may now be unset.
1415
1416fff. The restricted shell mode has been expanded and is now documented.
1417
1418ggg. Security improvements:
1419 o functions are not imported from the environment if running setuid
1420 or with -p
1421 o no startup files are sourced if running setuid or with -p
1422
1423hhh. The documentation has been overhauled: the texinfo manual was
1424 expanded, and HTML versions of the man page and texinfo manual
1425 are included.
1426
1427iii. Changes to Posix mode:
1428 o Command lookup now finds special builtins before shell functions.
1429 o Failure of a special builtin causes a non-interactive shell to
1430 exit. Failures are defined in the POSIX.2 specification.
1431 o If the `cd' builtin finds a directory to change to using $CDPATH,
1432 the value assigned to PWD when `cd' completes does not contain
1433 any symbolic links.
1434 o A non-interactive shell exits if a variable assignment error
1435 occurs when no command name follows the assignment statements.
1436 o A non-interactive shell exits if the interation variable in a
1437 `for' statement or the selection variable in a `select' statement
1438 is read-only or another variable assignment error occurs.
1439 o The `<>' redirection operator now opens a file for both stdin and
1440 stdout by default, not just when in posix mode.
1441 o Assignment statements preceding special builtins now persist in
1442 the shell's environment when the builtin completes.
1443
1444 Posix mode is now completely POSIX.2-compliant (modulo bugs). When
1445 invoked as sh, bash should be completely POSIX.2-compliant.
1446
1447jjj. The default value of PS1 is now "\s-\v\$ ".
1448
1449kkk. The ksh-like ((...)) arithmetic command syntax has been implemented.
1450 This is exactly equivalent to `let "..."'.
1451
1452lll. Integer constants have been extended to base 64.
1453
1454mmm. The `ulimit' builtin now sets both hard and soft limits and reports the
1455 soft limit by default.
1456
14572. New Features in Readline
1458
1459a. New variables: enable-keypad, input-meta (new name for meta-flag),
1460 mark-directories, visible-stats (now documented), disable-completion,
1461 comment-begin.
1462
1463b. New bindable commands: kill-region, copy-region-as-kill,
1464 copy-backward-word, copy-forward-word, set-mark, exchange-point-and-mark,
1465 character-search, character-search-backward, insert-comment,
1466 glob-expand-word, glob-list-expansions, dump-variables, dump-macros.
1467
1468c. New emacs keybindings: delete-horizontal-space (M-\),
1469 insert-completions (M-*), possible-completions (M-=).
1470
1471d. The history-search-backward and history-search-forward commands were
1472 modified to be the same as previous-line and next-line if point is at
1473 the start of the line.
1474
1475e. More file types are available for the visible-stats mode.
1476
14773. Changes of interest in the Bash implementation
1478
1479a. There is a new autoconf-based configuration mechanism.
1480
1481b. More things have been moved from Posix mode to standard shell behavior.
1482
1483c. The trace output (set -x) now inserts quotes where necessary so it can
1484 be reused as input.
1485
1486d. There is a compile-time option for a system-wide interactive shell
1487 startup file (disabled by default).
1488
1489e. The YACC grammar is smaller and tighter, and all 66 shift-reduce
1490 conflicts are gone. Several parsing bugs have been fixed.
1491
1492f. Builtin option parsing has been regularized (using internal_getopt()),
1493 with the exception of `echo', `type', and `set'.
1494
1495g. Builtins now return standard usage messages constructed from the
1496 `short doc' used by the help builtin.
1497
1498h. Completion now quotes using backslashes by default, but honors
1499 user-supplied quotes.
1500
1501i. The GNU libc malloc is available as a configure-time option.
1502
1503j. There are more internationalization features; bash uses gettext if
1504 it is available. The $"..." translation syntax uses the current
1505 locale and gettext.
1506
1507k. There is better reporting of job termination when the shell is not
1508 interactive.
1509
1510l. The shell is somewhat more efficient: it uses a little less memory and
1511 makes fewer system calls.
1512
15134. Changes of interest in the Readline implementation
1514
1515a. There is now support for readline `callback' functions.
1516
1517b. There is now support for user-supplied input, redisplay, and terminal
1518 preparation functions.
1519
1520c. Most of the shell-specific code in readline has been generalized or
1521 removed.
1522
1523d. Most of the annoying redisplay bugs have been fixed, notably the problems
1524 with incremental search and excessive redrawing when special characters
1525 appear in the prompt string.
1526
1527e. There are new library functions and variables available to application
1528 writers, most having to do with completion and quoting.
1529
1530f. The NEWLINE character (^J) is now treated as a search terminator by the
1531 incremental search functions.