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