commit bash-20051123 snapshot
[platform/upstream/bash.git] / CHANGES~
1 This document details the changes between this version, bash-3.1-rc1,
2 and the previous version, bash-3.1-beta1.
3
4 1.  Changes to Bash
5
6 a.  Fixed a bug that could cause core dumps due of accessing the current
7     pipeline while in the middle of modifying it.
8
9 b.  Fixed a bug that caused pathnames with backslashes still quoting characters
10     to be passed to opendir().
11
12 c.  Command word completion now obeys the setting of completion-ignore-case.
13
14 d.  Fixed a problem with redirection that caused file descriptors greater than
15     2 to be inappropriately marked as close-on-exec.
16
17 e.  In Posix mode, after `wait' is called to wait for a particular process
18     explicitly, that process is removed from the list of processes known to
19     the shell, and subsequent attempts to wait for it return errors.
20
21 f.  Fixed a bug that caused extended pattern matching to incorrectly scan
22     backslash-escaped pattern characters.
23
24 g.  Fixed a synchronization problem that could cause core dumps when handling
25     a SIGWINCH.
26
27 h.  Fixed a bug that caused an unmatched backquote to be accepted without an
28     error when processing here documents.
29
30 i.  Fixed a small memory leak in the `cd' builtin.
31
32 j.  Fix for MacOS X so it gets the values for the HOSTTYPE, MACHTYPE, and
33     OSTYPE variables at build time, to support universal binaries.
34
35 2.  New Features in Bash
36
37 3.  Changes to Readline
38
39 a.  Fixed a bug that caused reversing the incremental search direction to
40     not work correctly.
41
42 b.  Fixed the vi-mode `U' command to only undo up to the first time insert mode
43     was entered, as Posix specifies.
44
45 4.  New Features in Readline
46
47 a.  New application-callable auxiliary function, rl_variable_value, returns
48     a string corresponding to a readline variable's value.
49
50 b.  When parsing inputrc files and variable binding commands, the parser
51     strips trailing whitespace from values assigned to boolean variables
52     before checking them.
53
54
55 ------------------------------------------------------------------------------
56 This document details the changes between this version, bash-3.1-beta1,
57 and the previous version, bash-3.1-alpha1.
58
59 1.  Changes to Bash
60
61 a.  Added some system-specific signal names.
62
63 b.  Fixed a typo in the ulimit builtin to make `x' the right option to
64     maniuplate the limit on file locks.
65
66 c.  Fixed a problem with using += to append to index 0 of an array variable
67     when not using subscript syntax.
68
69 d.  A few changes to configure.in to remove calls to obsolete or outdated
70     macros.
71
72 e.  Make sure changes to variables bash handles specially (e.g., LC_ALL) are
73     made when the variable is set in the temporary environment to a command.
74
75 f.  Make sure changes to variables bash handles specially (e.g., LC_ALL) are
76     made when the variable is modified using `printf -v'.
77
78 g.  The export environment is now remade on cygwin when HOME is changed, so
79     DLLs bash is linked against pick up the new value.  This fixes problems
80     with tilde expansion when linking against and already-installed readline.
81
82 h.  Small fix to the logic for performing tilde expansion in posix mode, so
83     expansion on the right-hand side of an assignment statement takes place.
84
85 i.  Fixed a bug that prevented redirections associated with a shell function
86     from being executed when in a subshell.
87
88 j.  Fixed `source' and `.' builtins to not require an executable file when
89     searching $PATH for a file to source.
90
91 k.  Fixed a bug that caused incorrect word splitting in a function when IFS
92     was declared local, then unset.
93
94 l.  Fixed a problem with the `kill' builtin that prevented sending signals
95     to a process group under certain circumstances when providing a pid < 0.
96
97 m.  When in POSIX mode, `pwd' now checks that the value it prints is the same
98     directory as `.', even when displaying $PWD.
99
100 n.  Fixed a problem with the `read' builtin when reading a script from standard
101     input and reading data from the same file.
102
103 o.  Fixed a problem with the `type' and `command' builtins that caused absolute
104     pathnames to be displayed incorrectly.
105
106 p.  Some changes to the `bg' builtin for POSIX conformance.
107
108 q.  The `fc' builtin now removes the `fc' command that caused it to invoke an
109     editor on specified history entries from the history entirely, rather than
110     simply ignoring it.
111
112 r.  When in POSIX mode, the `v' command in vi editing mode simply invokes vi
113     on the current command, rather than checking $FCEDIT and $EDITOR.
114
115 s.  Fixed a small memory leak in the pathname canonicalization code.
116
117 t.  Fixed a bug that caused the expanded value of a $'...' string to be
118     incorrectly re-quoted if it occurred within a double-quoted ${...}
119     parameter expansion.
120
121 u.  Restored default emacs-mode key binding of M-TAB to dynamic-complete-history.
122
123 v.  Fixed a bug that caused core dumps when interrupting loops running builtins
124     on some systems.
125
126 w.  Make sure that some of the functions bash provides replacements for are
127     not cpp defines.
128
129 x.  The code that scans embedded commands for the parser (`...` and $(...)) is
130     now more aware of embedded comments and their effect on quoted strings.
131
132 y.  Changed the `-n' option to the `history' builtin to not reset the number of
133     history lines read in the current session after reading the new lines from
134     the history file if the history is being appended when it is written to
135     the file, since the appending takes care of the problem that the adjustment
136     was intended to solve.
137
138 z.  Improved the error message displayed when a shell script fails to execute
139     because the environment and size of command line arguments are too large.
140
141 aa. A small fix to make sure that $HISTCMD is evaluated whenever the shell is
142     saving commands to the history list, not just when HISTSIZE is defined.
143
144 2.  Changes to Readline
145
146 a.  The `change-case' command now correctly changes the case of multibyte
147     characters.
148
149 b.  Changes to the shared library construction scripts to deal with Windows
150     DLL naming conventions for Cygwin.
151
152 c.  Fixed the redisplay code to avoid core dumps resulting from a poorly-timed
153     SIGWINCH.
154
155 d.  Fixed the non-incremental search code in vi mode to dispose of any current
156     undo list when copying a line from the history into the current editing
157     buffer.
158
159 e.  The variable assignment code now ignores whitespace at the end of lines.
160
161 f.  The `C-w' binding in incremental search now understands multibyte
162     characters.
163
164 3.  New Features in Bash
165
166 a.  A new configuration option, `--enable-strict-posix-default', which will
167     build bash to be POSIX conforming by default.
168
169 4.  New Features in Readline
170
171 a.  If the rl_completion_query_items is set to a value < 0, readline never
172     asks the user whether or not to view the possible completions.
173
174 ------------------------------------------------------------------------------
175 This document details the changes between this version, bash-3.1-alpha1,
176 and the previous version, bash-3.0-release.
177
178 1.  Changes to Bash
179
180 a.  Fixed a bug that caused bash to crash if referencing an unset local array.
181
182 b.  Fixed a problem that caused tilde expansion to not be performed before
183     attempting globbing word completion.
184
185 c.  Fixed an incompatibility so that a first argument to trap that's a valid
186     signal number will be trated as a signal rather than a command to execute.
187
188 d.  Fixed ${#word} expansion to correctly compute the length of a string
189     containing multibyte characters.
190
191 e.  Fixed a bug that caused bash to not pass the correct flags for signal
192     disposition to child processes.
193
194 f.  Fixed a bug that caused `fc -l' to list one too many history entries.
195
196 g.  Some fixes to `fc' for POSIX conformance.
197
198 h.  Some fixes to job status display for POSIX conformance.
199
200 i.  Fixed a bug that caused `command -v' to display output if a command was not
201     found -- it should be silent.
202
203 j.  In POSIX mode, `type' and `command -[vV]' do not report non-executable
204     files, even if the shell will attempt to execute them.
205
206 k.  Fixed a bug that caused the `==' operator to the [[ command to not attempt
207     extended pattern matching.
208
209 l.  Fixed the brace expansion code to handle characters whose value exceeds 128.
210
211 m.  Fixed `printf' to handle strings with a leading `\0' whose length is
212     non-zero.
213
214 n.  Fixed a couple of problems with brace expansion where `${' was handled
215     incorrectly.
216
217 o.  Fixed off-by-one error when calculating the upper bound of `offset' when
218     processing the ${array[@]:offset:length} expansion.
219
220 p.  System-specific configuration changes for: FreeBSD 5.x, Interix, MacOS X
221     10.4, Linux 2.4+ kernels, Linux 3.x kernels, Dragonfly BSD, QNX 6.x,
222     Cygwin
223
224 q.  Fixed a bug that caused the shell to ignore the status of the rightmost
225     command in a pipeline when the `pipefail' option was enabled.
226
227 r.  Fixed a completion bug that caused core dumps when expanding a directory
228     name.
229
230 s.  Fixed a bug that prevented `hash -d' from removing commands from the hash
231     table.
232
233 t.  Fixed word splitting to avoid really bad quadratic performance when
234     expanding long lists.
235
236 u.  Fixed a bug that caused negative offsets in substring expansion to use the
237     wrong values.
238
239 v.  Fixed a bug in printf that caused it to not return failure on write errors.
240
241 w.  Fixed a bug that caused commands in subshells to not be properly timed.
242
243 x.  The shell parser no longer attempts to parse a compound assignment specially
244     unless in a position where an assignment statement is acceptable or parsing
245     arguments to a builtin that accepts assignment statements.
246
247 y.  Fixed a problem that caused a `case' statement to be added to the history
248     incorrectly as a single command if the `case word' was on one line and the
249     `in' on another.
250
251 z.  Fixed a problem that caused internal shell quoting characters to be
252     incorrectly quoted with backslashes under some circumstances.
253
254 aa. The shell now performs correct word splitting when IFS contains multibyte
255     characters.
256
257 bb. The mail checking code now resets the cached file information if the size
258     drops to 0, even if the times don't change.
259
260 cc. A completed command name that is found in $PATH as well as the name of a
261     directory in the current directory no longer has a slash appended in certain
262     circumstances:  a single instance found in $PATH when `.' is not in $PATH,
263     and multiple instances found in $PATH, even when `.' is in $PATH.
264
265 dd. Incorporated tilde expansion into the word expansion code rather than as a
266     separately-called function, fixing some cases where it was performed
267     inappropriately (e.g., after the second `=' in an assignment statement or
268     in a double-quoted parameter expansion).
269
270 ee. Fixed several bugs encountered when parsing compound assignment statements,
271     so that compound assignments appearing as arguments to builtins are no
272     longer double-expanded.
273
274 ff. Fixed a bug in the command execution code that caused asynchronous commands
275     containing command substitutions to not put the terminal in the wrong
276     process group.
277
278 gg. Bash now handles the case where the WCONTINUED flag causes waitpid() to
279     return -1/EINVAL at runtime as well as configuration time.
280
281 hh. Fixed parser to generate an error when the pipeline `argument' to `!' or
282     `time' is NULL.
283
284 ii. The shell now takes a little more care when manipulating file descriptors
285     greater than 9 with the `exec' builtin.
286
287 jj. Fixed a bug that caused variable assignments preceding the `command' builtin
288     preceding a special builtin to be preserved after the command completed in
289     POSIX mode.
290
291 kk. Fixed a bug that allowed variables beginning with a digit to be created.
292
293 ll. Fixed a bug that caused a \<newline> to be removed when parsing a $'...'
294     construct.
295
296 mm. A shell whose name begins with `-' will now be a restricted shell if the
297     remainder of the name indicates it should be restricted.
298
299 nn. Fixed a bug that could cause a core dump if FUNCNAME were changed or unset
300     during a function's execution.
301
302 oo. Fixed a bug that caused executing a `return' in a function to not execute
303     a RETURN trap.  The RETURN trap is inherited by shell functions only if
304     function tracing is globally enabled or has been enabled for that function.
305
306 pp. Fixed cases where var[@] was not handled exactly like var, when var is a
307     scalar variable.
308
309 qq. Fixed a bug that caused the first character after a SIGINT to be discarded
310     under certain circumstances.
311
312 rr. Fixed exit status code so that a suspended job returns 128+signal as its
313     exit status (preventing commands after it in `&&' lists from being
314     executed).
315
316 ss. Fixed a bug that caused the shell parser state to be changed by executing
317     a shell function as a result of word completion.
318
319 tt. Fixed a long-standing bug that caused '\177' characters in variable
320     values to be discarded when expanded in double-quoted strings.
321
322 uu. Fixed a bug that caused $RANDOM to be re-seeded multiple times in a
323     subshell environment.
324
325 vv. Extensive changes to the job management code to avoid the pid-reuse and
326     pid-aliasing problems caused by retaining the exit status of too many jobs,
327     but still retain as many background job statuses as POSIX requires.
328
329 ww. Fixed a parser bug in processing \<newline> that caused things like
330
331                 ((echo 5) \
332                  (echo 6))
333
334     to not work correctly.
335
336 xx. `pwd -P' now sets $PWD to a directory name containing no symbolic links
337     when in posix mode, as POSIX requires.
338
339 yy. In posix mode, bash no longer sets $PWD to a name containing no symbolic
340     links if a directory is chosen from $CDPATH.
341
342 zz. The word splitting code now treats an IFS character that is not space,
343     tab, or newline and any adjacent IFS white space as a single delimiter, as
344     SUSv3/XPG6 require.
345
346 aaa. The `read' builtin now checks whether or not the number of fields read is
347      exactly the same as the number of variables instead of just assigning the
348      rest of the line (minus any trailing IFS white space) to the last
349      variable.  This is what POSIX/SUS/XPG all require.
350
351 bbb. Fixed a bug that caused `read' to always check whether or not fd 0 was a
352      pipe, even when reading from another file descriptor.
353
354 ccc. Fixed a bug that caused short-circuiting of execution even if the return
355      value was being inverted.
356
357 ddd. Fixed a bug that caused a core dump while decoding \W escapes in PS1 if
358      PWD was unset.
359
360 eee. Fixed a bug in `read' that counted internal quoting characters for the
361      purposes of `read -n'.
362
363 fff. Fixed a bug so that a function definition in a pipeline causes a child
364      process to be forked at the right time.
365
366 ggg. Bash will not attempt to link against a readline library that doesn't
367      have rl_gnu_readline_p == 1.
368
369 hhh. Fixed a bug that caused `read' to consume one too many characters when
370      reading a fixed number of characters and the Nth character is a backslash.
371
372 iii. Fixed a bug that caused `unset' on variables in the temporary environment
373      to leave them set when `unset' completed.
374
375 jjj. Fixed a bug that caused bash to close fd 2 if an `exec' failed and the
376      shell didn't exit.
377
378 kkk. The completion code is more careful to not turn `/' or `///' into `//',
379      for those systems on which `//' has special meaning.
380
381 lll. Fixed a bug that caused command substitution in asynchronous commands to
382      close the wrong file descriptors.
383
384 mmm. The shell no longer prints status messages about terminated background
385      processes unless job control is active.
386
387 nnn. Fixed a bug that prevented multiple consecutive invocations of `history -s'
388      from adding all the commands to the history list.
389
390 ooo. Added a couple of changes to make arithmetic expansion more consistent in
391      all its contexts (still not perfect).
392
393 ppp. Fixed a bug that caused the parser to occasionally not find the right
394      terminating "`" in an old-style command substitution.
395
396 qqq. Fixed a bug that caused core dumps when the shell was reading its non-
397      interactive input from fd 0 and fd 0 was duplicated and restored using a
398      combination of `exec' (to save) and redirection (to restore).
399
400 rrr. Fixed a problem that caused loops in sourced scripts to not be cleaned
401      up properly when a `return' is executed.
402
403 sss. Change internal command substitution completion function to append a slash
404      to directory names in the command.
405
406 2.  Changes to Readline
407
408 a.  Fixed a bug that caused multiliine prompts to be wrapped and displayed
409     incorrectly.
410
411 b.  Fixed a bug that caused ^P/^N in emacs mode to fail to display the current
412     line correctly.
413
414 c.  Fixed a problem in computing the number of invisible characters on the first
415     line of a prompt whose length exceeds the screen width.
416
417 d.  Fixed vi-mode searching so that failure preserves the current line rather
418     than the last line in the history list.
419
420 e.  Fixed the vi-mode `~' command (change-case) to have the correct behavior at
421     end-of-line when manipulating multibyte characters.
422
423 f.  Fixed the vi-mode `r' command (change-char) to have the correct behavior at
424     end-of-line when manipulating multibyte characters.
425
426 g.  Fixed multiple bugs in the redisplay of multibyte characters:  displaying
427     prompts longer than the screen width containing multibyte characters, 
428
429 h.  Fix the calculation of the number of physical characters in the prompt
430     string when it contains multibyte characters.
431
432 i.  A non-zero value for the `rl_complete_suppress_append' variable now causes
433     no `/' to be appended to a directory name.
434
435 j.  Fixed forward-word and backward-word to work when words contained
436     multibyte characters.
437
438 k.  Fixed a bug in finding the delimiter of a `?' substring when performing
439     history expansion in a locale that supports multibyte characters.
440
441 l.  Fixed a memory leak caused by not freeing the timestamp in a history entry.
442
443 m.  Fixed a bug that caused "\M-x" style key bindings to not obey the setting
444     of the `convert-meta' variable.
445
446 n.  Fixed saving and restoring primary prompt when prompting for incremental
447     and non-incremental searches; search prompts now display multibyte
448     characters correctly.
449
450 o.  Fixed a bug that caused keys originally bound to self-insert but shadowed
451     by a multi-character key sequence to not be inserted.
452
453 p.  Fixed code so rl_prep_term_function and rl_deprep_term_function aren't
454     dereferenced if NULL (matching the documentation).
455
456 q.  Extensive changes to readline to add enough state so that commands
457     requiring additional characters (searches, multi-key sequences, numeric
458     arguments, commands requiring an additional specifier character like
459     vi-mode change-char, etc.) work without synchronously waiting for
460     additional input.
461
462 r.  Lots of changes so readline builds and runs on MinGW.
463
464 s.  Readline no longer tries to modify the terminal settings when running in
465     callback mode.
466
467 t.  The Readline display code no longer sets the location of the last invisible
468     character in the prompt if the \[\] sequence is empty.
469
470 3.  New Features in Bash
471
472 a.  Bash now understands LC_TIME as a special variable so that time display
473     tracks the current locale.
474
475 b.  BASH_ARGC, BASH_ARGV, BASH_SOURCE, and BASH_LINENO are no longer created
476     as `invisible' variables and may not be unset.
477
478 c.  In POSIX mode, if `xpg_echo' option is enabled, the `echo' builtin doesn't
479     try to interpret any options at all, as POSIX requires.
480
481 d.  The `bg' builtin now accepts multiple arguments, as POSIX seems to specify.
482
483 e.  Fixed vi-mode word completion and glob expansion to perform tilde
484     expansion.
485
486 f.  The `**' mathematic exponentiation operator is now right-associative.
487
488 g.  The `ulimit' builtin has new options: -i (max number of pending signals),
489     -q (max size of POSIX message queues), and -x (max number of file locks).
490
491 h.  A bare `%' once again expands to the current job when used as a job
492     specifier.
493
494 i.  The `+=' assignment operator (append to the value of a string or array) is
495     now supported for assignment statements and arguments to builtin commands
496     that accept assignment statements.
497
498 j.  BASH_COMMAND now preserves its value when a DEBUG trap is executed.
499
500 k.  The `gnu_errfmt' option is enabled automatically if the shell is running
501     in an emacs terminal window.
502
503 l.  New configuration option:  --single-help-strings.  Causes long help text
504     to be written as a single string; intended to ease translation.
505
506 m.  The COMP_WORDBREAKS variable now causes the list of word break characters
507     to be emptied when the variable is unset.
508
509 n.  An unquoted expansion of $* when $IFS is empty now causes the positional
510     parameters to be concatenated if the expansion doesn't undergo word
511     splitting.
512
513 o.  Bash now inherits $_ from the environment if it appears there at startup.
514
515 p.  New shell option: nocasematch.  If non-zero, shell pattern matching ignores
516     case when used by `case' and `[[' commands.
517
518 q.  The `printf' builtin takes a new option: -v var.  That causes the output
519     to be placed into var instead of on stdout.
520
521 r.  By default, the shell no longer reports processes dying from SIGPIPE.
522
523 s.  Bash now sets the extern variable `environ' to the export environment it
524     creates, so C library functions that call getenv() (and can't use the
525     shell-provided replacement) get current values of environment variables.
526
527 4.  New Features in Readline
528
529 a.  The key sequence sent by the keypad `delete' key is now automatically
530     bound to delete-char.
531
532 b.  A negative argument to menu-complete now cycles backward through the
533     completion list.
534
535 c.  A new bindable readline variable:  bind-tty-special-chars.  If non-zero,
536     readline will bind the terminal special characters to their readline
537     equivalents when it's called (on by default).
538
539 d.  New bindable command: vi-rubout.  Saves deleted text for possible
540     reinsertion, as with any vi-mode `text modification' command; `X' is bound
541     to this in vi command mode.
542
543 ------------------------------------------------------------------------------
544 This document details the changes between this version, bash-3.0-release,
545 and the previous version, bash-3.0-rc1.
546
547 1.  Changes to Bash
548
549 a.  Fixed a boundary overrun that could cause segmentation faults when the
550     completion code hands an incomplete construct to the word expansion
551     functions.
552
553 b.  Changed posix mode behavior so that an error in a variable assignment
554     preceding a special builtin causes a non-interactive shell to exit.
555
556 c.  Change the directory expansion portion of the completion code to not
557     expand embedded command substitutions if the directory name appears in
558     the file system.
559
560 d.  Fixed a problem that caused `bash -r' to turn on restrictions before
561     reading the startup files.
562
563 e.  Fixed a problem with the default operation of the `umask' builtin.
564
565 2.  Changes to Readline
566
567 a.  Fixed a problem with readline saving the contents of the current line
568     before beginning a non-interactive search.
569
570 b.  Fixed a problem with EOF detection when using rl_event_hook.
571
572 c.  Fixed a problem with the vi mode `p' and `P' commands ignoring numeric
573     arguments.
574
575 ------------------------------------------------------------------------------
576 This document details the changes between this version, bash-3.0-rc1,
577 and the previous version, bash-3.0-beta1.
578
579 1.  Changes to Bash
580
581 a.  Fixed a bug that caused incorrect behavior when referecing element 0 of
582     an array using $array, element 0 was unset, and `set -u' was enabled.
583
584 b.  System-specific changes for: SCO Unix 3.2, Tandem.
585
586 c.  Fixed a bug that caused inappropriate word splitting when a variable was
587     expanded within a double-quoted string that also included $@.
588
589 d.  Fixed a bug that caused `pwd' to not display anything in physical mode
590     when the file system had changed underneath the shell.
591
592 e.  Fixed a bug in the pre- and post- increment and decrement parsing in the
593     expression evaluator that caused errors when the operands and corresponding
594     operators were separated by whitespace.
595
596 f.  Fixed a bug that caused `history -p' to add an entry to the history list,
597     counter to the documentation.  (Keeps the history expansions invoked by
598     emacs-mode command line editing from doing that as well.)
599
600 g.  Fixed a bug that could cause a core dump if `cd' is asked to print out a
601     pathname longer than PATH_MAX characters.
602
603 h.  Fixed a bug that caused jobs to be put into the wrong process group under
604     some circumstances after enabling job control with `set -m'.
605
606 i.  `unalias' now  returns failure if no alias name arguments are supplied.
607
608 j.  Documented the characters not allowed to appear in an alias name.
609
610 k.  $* is no longer expanded as if in double quotes when it appears in the
611     body of a here document, as the SUS seems to require.
612
613 l.  The `bashbug' script now uses a directory in $TMPDIR for exclusive
614     access rather than trying to guess how the underlying OS provides for
615     secure temporary file creation.
616
617 m.  Fixed a few problems with `cd' and `pwd' when asked to operate on pathnames
618     longer than PATH_MAX characters.
619
620 n.  Fixed a memory leak caused when creating multiple local array variables
621     with identical names.
622
623 o.  Fixed a problem with calls to getcwd() so that bash now operates better
624     when the full pathname to the current directory is longer than PATH_MAX
625     bytes.
626
627 p.  The `trap' builtin now reports an error if a single non-signal argument
628     is specified.
629
630 q.  Fixed a bug that caused `umask' to not work correctly when presented
631     with a mask of all 0s.
632
633 r.  When `getopts' reaches the end of options, OPTARG is unset, as POSIX
634     appears to specify.
635
636 s.  Interactive mode now depends on whether or not stdin and stderr are
637     connected to a tty; formerly it  was stdin and stdout.  POSIX requires
638     this.
639
640 t.  Fixed vi-mode completion to work more as POSIX specifies (e.g., doing the
641     right kind of filename generation).
642
643 2.  Changes to Readline
644
645 a.  Fixed a problem that could cause readline to refer to freed memory when
646     moving between history lines while doing searches.
647
648 b.  Improvements to the code that expands and displays prompt strings
649     containing multibyte characters.
650
651 c.  Fixed a problem with vi-mode not correctly remembering the numeric argument
652     to the last `c'hange command for later use with `.'.
653
654 d.  Fixed a bug in vi-mode that caused multi-digit count arguments to work
655     incorrectly.
656
657 e.  Fixed a problem in vi-mode that caused the last text modification command
658     to not be remembered across different command lines.
659
660 f.  Fixed problems with changing characters and changing case at the end of
661     the line.
662
663 3.  New Features in Bash
664
665 a.  The `jobs', `kill', and `wait' builtins now accept job control notation
666     even if job control is not enabled.
667
668 b.  The historical behavior of `trap' that allows a missing `action' argument
669     to cause each specified signal's handling to be reset to its default is
670     now only supported when `trap' is given a single non-option argument.
671
672 4.  New Features in Readline
673
674 a.  When listing completions, directories have a `/' appended if the
675     `mark-directories' option has been enabled.
676
677 ------------------------------------------------------------------------------
678 This document details the changes between this version, bash-3.0-beta1,
679 and the previous version, bash-3.0-alpha.
680
681 1.  Changes to Bash
682
683 a.  Fixes to build correctly when arrays are not compiled into the shell.
684
685 b.  Fixed command substitution to run any exit trap defined in the command
686     substitution before returning; the exit trap is not inherited from the
687     calling shell.
688
689 c.  Fixes to process group synchronization code so that every child process
690     attempts to set the terminal's process group; fixes some synchronization
691     problems on Linux kernels that schedule the child to always run before
692     the parent.
693
694 d.  Fixed processing of octal and hex constants in printf builtin for POSIX.2
695     compliance.
696
697 e.  Fixed a couple of core dumps in the pattern removal code.
698
699 f.  Fixes to the array subrange extraction code to deal better with sparse
700     arrays.
701
702 g.  Parser errors and other errors that result in the shell exiting now cause
703     the exit trap to be run.
704
705 h.  Change the command substitution completion functions to not append any
706     closing quote, because it would be inserted a closing "`" or ")".
707
708 i.  Fix history initialization so assignments to $histchars made in startup
709     files are honored.
710
711 j.  If an exit trap does not contain a call to `exit', the shell now uses
712     the exit status of the last command executed before the trap as the exit
713     status of the shell.
714
715 k.  The parser now prompts with $PS2 if it reads a newline while parsing a
716     compound array assignment statement.
717
718 l.  When performing a compound array assignment, the parser doesn't treat
719     words of the form [index]=value as assignments if they're the result of
720     expansions.
721
722 m.  Fixed a bug that caused `return' executed in a trap command to make the
723     shell think it was still running the trap.
724
725 n.  Fixed the value of errno set by the pathname canonicalization functions.
726
727 o.  Changed the grammar so that `time' alone on a line times a null command
728     rather than being a syntax error.
729
730 p.  The pattern substitution code no longer performs quote removal on the
731     pattern before trying to match it, as the pattern removal functions do.
732
733 q.  Fixed a bug that could cause core dumps when checking whether a quoted
734     command name was being completed.
735
736 r.  Fixes to the pattern removal and pattern replacement expansions to deal
737     with multibyte characters better (and faster).
738
739 s.  Fix to the substring expansion (${param:off[:len]}) to deal with (possibly
740     multibyte) characters instead of raw bytes.
741
742 t.  Fixed a bug that caused some key bindings set in an inputrc to be ignored
743     at shell startup.
744
745 u.  Fixed a bug that caused unsetting a local variable within a function to
746     not work correctly.
747
748 v.  Fixed a bug that caused invalid variables to be created when using
749     `read -a'.
750
751 w.  Fixed a bug that caused "$@" to expand incorrectly when used as the right
752     hand side of a parameter expansion such as ${word:="$@"} if the first
753     character of $IFS was not a space.
754
755 x.  Fixed a slight cosmetic problem when printing commands containing a
756     `>&word' redirection.
757
758 y.  Fixed a problem that could cause here documents to not be created correctly
759     if the system temporary directory did not allow writing.
760
761 2.  Changes to Readline
762
763 a.  Change to history expansion functions to treat `^' as equivalent to word
764     one, as the documention states.
765
766 b.  Some changes to the display code to improve display and redisplay of
767     multibyte characters.
768
769 c.  Changes to speed up the multibyte character redisplay code.
770
771 d.  Fixed a bug in the vi-mode `E' command that caused it to skip over the
772     last character of a word if invoked while point was on the word's
773     next-to-last character.
774
775 e.  Fixed a bug that could cause incorrect filename quoting when
776     case-insensitive completion was enabled and the word being completed
777     contained backslashes quoting word break characters.
778
779 f.  Fixed a bug in redisplay triggered when the prompt string contains
780     invisible characters.
781
782 g.  Fixed some display (and other) bugs encountered in multibyte locales
783     when a non-ascii character was the last character on a line.
784
785 h.  Fixed some display bugs caused by multibyte characters in prompt strings.
786
787 i.  Fixed a problem with history expansion caused by non-whitespace characters
788     used as history word delimiters.
789
790 3.  New Features in Bash
791
792 a.  printf builtin understands two new escape sequences:  \" and \?.
793
794 b.  `echo -e' understands two new escape sequences:  \" and \?.
795
796 c.  The GNU `gettext' package and libintl have been integrated; the shell's
797     messages can be translated into different languages.
798
799 d.  The `\W' prompt expansion now abbreviates $HOME as `~', like `\w'.
800
801 e.  The error message printed when bash cannot open a shell script supplied
802     as argument 1 now includes the name of the shell, to better identify
803     the error as coming from bash.
804
805 4.  New Features in Readline
806
807 a.  New application variable, rl_completion_quote_character, set to any
808     quote character readline finds before it calls the application completion
809     function.
810
811 b.  New application variable, rl_completion_suppress_quote, settable by an
812     application completion function.  If set to non-zero, readline does not
813     attempt to append a closing quote to a completed word.
814
815 c.  New application variable, rl_completion_found_quote, set to a non-zero
816     value if readline determines that the word to be completed is quoted.
817     Set before readline calls any application completion function.
818
819 d.  New function hook, rl_completion_word_break_hook, called when readline
820     needs to break a line into words when completion is attempted.  Allows
821     the word break characters to vary based on position in the line.
822
823 e.  New bindable command: unix-filename-rubout.  Does the same thing as
824     unix-word-rubout, but adds `/' to the set of word delimiters.
825
826 ------------------------------------------------------------------------------
827 This document details the changes between this version, bash-3.0-alpha,
828 and the previous version, bash-2.05b-release.
829
830 1.  Changes to Bash
831
832 a.  Fixes so that the shell will compile without some of the default options
833     defined.
834
835 b.  Fixed an error message that did not pass enough arguments to printf.
836
837 c.  Fixed a bug that caused input redirection to a builtin inside a script
838     being read from standard input to result in the rest of the already-
839     read and buffered script to be discarded.
840
841 d.  Fixed a bug that caused subshell initialization to close the file
842     descriptor from which the shell was reading a script under certain
843     circumstances.
844
845 e.  Fixed a bug that caused the shell to not advance a string pointer over
846     a null wide character when doing string operations.
847
848 f.  Fixed the internal logout code so that shells that time out waiting for
849     input (using $TMOUT) run ~/.bash_logout.
850
851 g.  Portability and configuration changes for: cygwin, HP/UX, GNU/FreeBSD.
852
853 h.  The parser no longer adds implicit double quotes to ((...)) arithmetic
854     commands.
855
856 i.  The ((...)) arithmetic command evaluation code was fixed to not dump core
857     when the expanded string is null.
858
859 j.  The ((...)) arithmetic command evaluation code was fixed to not perform
860     variable assignments while expanding the expression.
861
862 k.  Fixed a bug that caused word splitting to be performed incorrectly when
863     IFS is set, but null.
864
865 l.  Fixed a bug in brace expansion that caused a quoted `$' preceding an
866     open brace to inhibit brace expansion.
867
868 m.  Fixed a bug that caused a leading `-' in the shell's name to cause it to
869     not be recognized as a restricted shell.
870
871 n.  Fixed a bug in the arithmetic evaluation code that could cause longjmps
872     to an invalid location and result in a core dump.
873
874 o.  Fixed a bug in the calculation of how many history lines are new in a
875     single shell session when reading new history lines from a file with
876     `history -n'.
877
878 p.  Fixed a bug in pathname canonicalization that caused the shell to dump
879     core when presented with a pathname longer than PATH_MAX.
880
881 q.  Fixed the parser so that it doesn't try to compare a char variable to
882     EOF, which fails when chars are unsigned.
883
884 r.  Fixed a bug in the simple command execution code that caused occasional
885     core dumps.
886
887 s.  The shell does a better job of saving any partial parsing state during
888     operations which cause a command to be executed while a line is being
889     entered and parsed.
890
891 t.  The completion code now splits words more like the expansion code when
892     $IFS is used to split.
893
894 u.  The locale code does a better job of recomputing the various locale
895     variable values when LC_ALL is unset.
896
897 v.  The programmable completion code does a better job of dequoting expanded
898     word lists before comparing them against the word to be matched.
899
900 w.  The shell no longer seg faults if the expanded value of $PS4 is null
901     and `set -x' is enabled.
902
903 x.  Fixed a bug that caused core dumps when a here string expanded to NULL.
904
905 y.  The mail checking code now makes sure the mailbox is bigger before
906     reporting the existence of new mail.
907
908 z.  The parser does not try to expand $'...' and $"..." when the appear
909     within double quotes unless the `extquote' option has been enabled with
910     `shopt'.  For backwards compatibility, it is enabled by default.
911
912 aa. Fixed a bug that caused `for x; do ...' and `select x; do ... to use
913     $@ instead of "$@" for the implicit list of arguments.
914
915 bb. Fixed a bug that caused a subshell of a restricted shell (e.g., one
916     spawned to execute a pipeline) to not exit immediately if attempting
917     to use a command containing a slash.
918
919 cc. Fixed a problem with empty replacements for a pattern that doesn't match
920     when performing ${param/word/} expansion.
921
922 dd. Word expansions performed while expanding redirections no longer search
923     a command's temporary environment to expand variable values.
924
925 ee. Improvements to the alias expansion code when expanding subsequent words
926     because an aliase's value ends with a space.
927
928 ff. `cd -' now prints the current working directory after a successful chdir
929     even when the shell is not interactive, as the standard requires.
930
931 gg. The shell does a better job of ensuring a child process dies of SIGINT
932     before resending SIGINT to itself.
933
934 hh. The arithmetic expansion variable assignment code now does the right
935     thing when assigning to `special' variables like OPTIND.
936
937 ii. When history expansion verification is enabled, the bash readline helper
938     functions that do history expansion on the current line don't print
939     the results.
940
941 jj. Fixed bugs with multiple consecutive alias expansion when one of the
942     expansions ends with a space.
943
944 kk. Fixed a problem in the programmable completion code that could cause core
945     dumps when trying to initialize a set of possible completions from a
946     list of variables.
947
948 ll. The \[ and \] escape characters are now ignored when decoding the prompt
949     string if the shell is started with editing disabled.
950
951 mm. Fixed a bug that could leave extra characters in a string when doing
952     quoted null character removal.
953
954 nn. Command substitution and other subshell operations no longer reset the
955     line number (aids the bash debugger).
956
957 oo. Better line number management when executing simple commands, conditional
958     commands, for commands, and select commands.
959
960 pp. The globbing code now uses malloc, with its better failure properties,
961     rather than alloca().
962
963 qq. Fixed a bug that caused expansions like #{a[2]:=value} to create the
964     appropriate array element instead of a variable named `a[2]'.
965
966 rr. Fixed a bug in the handling of a `?(...)' pattern immediately following
967     a `*' when extglob is enabled.
968
969 ss. Fixed a bug that caused a `return' invoked in an exit trap when exit is
970     invoked in a function to misbehave.
971
972 tt. Fixed a bug that caused CTLESC and CTLNUL characters to not be escaped
973     by the internal shell string quoting functions.
974
975 uu. Fixed a bug that caused quoted null characters in an expanded word list
976     to be inappropriately assigned to an array variable when using `read -a'.
977
978 vv. Fixed a bug that caused redirections accompanying a null command to persist
979     in the current shell.
980
981 ww. Fixed a bug that caused the prompt to be printed when the shell was
982     expanding a multiline alias.
983
984 xx. Fixed a bug that resulted in core dumps when the completion for a command
985     changed the compspec.
986
987 yy. Fixed a bug that caused evaluation of programmable completions to print
988     notifications of completed jobs.
989
990 zz. Bash now disables line editing when $EMACS == `t' and $TERM == `dumb'
991     (which is what emacs shell windows do).
992
993 aaa. In posix mode, `kill -l' causes signal names to be displayed without
994      a leading `SIG'.
995
996 bbb. Clear error flag on standard output so it doesn't persist across multiple
997      builtin commands.
998
999 ccc. In posix mode, `alias' displays alias values without the leading `alias',
1000      so the output cannot be used as subsequent input.
1001
1002 ddd. In posix mode, the `trap' builtin doesn't check whether or not its
1003      first argument is a signal specification and revert the signal handling
1004      to its original disposition if it is.
1005
1006 eee. Fixed several bugs in the handling of "$*" and "${array[*]}" by the
1007      pattern substitution and removal expansions.
1008
1009 fff. Fixed several problems with the handling of ${array[@]}, ${array[*]},
1010      $@, and $* by the indirect variable expansion code.
1011
1012 ggg. Fixed a bug that did not allow `time' to be aliased.
1013
1014 hhh. Improved the mail checking code so it won't check (and possibly cause an
1015      NFS file system mount) until MAILPATH or MAIL is given a value -- there
1016      is no default if DEFAULT_MAIL_DIRECTORY is not defined at compile time.
1017      (It is computed by configure, but can be #undef'd in config-bot.h.)
1018
1019 iii. If the `chkwinsize' option is enabled, the shell checks for window size
1020      changes if a child process exits due to a signal.
1021
1022 jjj. Removed the attempts to avoid adding a slash at the end of a completed
1023      executable name if there was a directory with the same name in the
1024      current directory.
1025
1026 kkk. Fixed PATH lookup code so it treats the permission bits separately for
1027      owner, group, and other, rather than checking them all.
1028
1029 lll. Fixed the locale code to reset the parser's idea of the character class
1030      <blank>, which controls how it splits tokens, when the locale changes.
1031
1032 mmm. The shell now binds its special readline functions and key bindings only
1033      if the user's inputrc file has not already bound them.
1034
1035 nnn. The shell now reports on processes that dump core due to signals when
1036      invoked as `-c command'.
1037
1038 2.  Changes to Readline
1039
1040 a.  Fixes to avoid core dumps because of null pointer references in the
1041     multibyte character code.
1042
1043 b.  Fix to avoid infinite recursion caused by certain key combinations.
1044
1045 c.  Fixed a bug that caused the vi-mode `last command' to be set incorrectly.
1046
1047 d.  Readline no longer tries to read ahead more than one line of input, even
1048     when more is available.
1049
1050 e.  Fixed the code that adjusts the point to not mishandle null wide
1051     characters.
1052
1053 f.  Fixed a bug in the history expansion `g' modifier that caused it to skip
1054     every other match.
1055
1056 g.  Fixed a bug that caused the prompt to overwrite previous output when the
1057     output doesn't contain a newline and the locale supports multibyte
1058     characters.  This same change fixes the problem of readline redisplay
1059     slowing down dramatically as the line gets longer in multibyte locales.
1060
1061 h.  History traversal with arrow keys in vi insertion mode causes the cursor
1062     to be placed at the end of the new line, like in emacs mode.
1063
1064 i.  The locale initialization code does a better job of using the right
1065     precedence and defaulting when checking the appropriate environment
1066     variables.
1067
1068 j.  Fixed the history word tokenizer to handle <( and >( better when used as
1069     part of bash.
1070
1071 k.  The overwrite mode code received several bug fixes to improve undo.
1072
1073 l.  Many speedups to the multibyte character redisplay code.
1074
1075 m.  The callback character reading interface should not hang waiting to read
1076     keyboard input.
1077
1078 n.  Fixed a bug with redoing vi-mode `s' command.
1079
1080 o.  The code that initializes the terminal tracks changes made to the terminal
1081     special characters with stty(1) (or equivalent), so that these changes
1082     are reflected in the readline bindings.  New application-callable function
1083     to make it work:  rl_tty_unset_default_bindings().
1084
1085 p.  Fixed a bug that could cause garbage to be inserted in the buffer when
1086     changing character case in vi mode when using a multibyte locale.
1087
1088 q.  Fixed a bug in the redisplay code that caused problems on systems
1089     supporting multibyte characters when moving between history lines when the
1090     new line has more glyphs but fewer bytes.
1091
1092 r.  Undo and redo now work better after exiting vi insertion mode.
1093
1094 s.  Make sure system calls are restarted after a SIGWINCH is received using
1095     SA_RESTART.
1096
1097 t.  Improvements to the code that displays possible completions when using
1098     multibyte characters.
1099
1100 u.  Fixed a problem when parsing nested if statements in inputrc files.
1101
1102 v.  The completer now takes multibyte characters into account when looking for
1103     quoted substrings on which to perform completion.
1104
1105 w.  The history search functions now perform better bounds checking on the
1106     history list.
1107
1108 3.  New Features in Bash
1109
1110 a.  ANSI string expansion now implements the \x{hexdigits} escape.
1111
1112 b.  There is a new loadable `strftime' builtin.
1113
1114 c.  New variable, COMP_WORDBREAKS, which controls the readline completer's
1115     idea of word break characters.
1116
1117 d.  The `type' builtin no longer reports on aliases unless alias expansion
1118     will actually be performed.    
1119
1120 e.  HISTCONTROL is now a colon-separated list of values, which permits
1121     more extensibility and backwards compatibility.
1122
1123 f.  HISTCONTROL may now include the `erasedups' option, which causes all lines
1124     matching a line being added to be removed from the history list.
1125
1126 g.  `configure' has a new `--enable-multibyte' argument that permits multibyte
1127     character support to be disabled even on systems that support it.
1128
1129 h.  New variables to support the bash debugger:  BASH_ARGC, BASH_ARGV,
1130     BASH_SOURCE, BASH_LINENO, BASH_SUBSHELL, BASH_EXECUTION_STRING,
1131     BASH_COMMAND
1132
1133 i.  FUNCNAME has been changed to support the debugger: it's now an array
1134     variable.
1135
1136 j.  for, case, select, arithmetic commands now keep line number information
1137     for the debugger.
1138
1139 k.  There is a new `RETURN' trap executed when a function or sourced script
1140     returns (not inherited child processes; inherited by command substitution
1141     if function tracing is enabled and the debugger is active).
1142
1143 l.  New invocation option:  --debugger.  Enables debugging and turns on new
1144     `extdebug' shell option.
1145
1146 m.  New `functrace' and `errtrace' options to `set -o' cause DEBUG and ERR
1147     traps, respectively, to be inherited by shell functions.  Equivalent to
1148     `set -T' and `set -E' respectively.  The `functrace' option also controls
1149     whether or not the DEBUG trap is inherited by sourced scripts.
1150
1151 n.  The DEBUG trap is run before binding the variable and running the action
1152     list in a `for' command, binding the selection variable and running the
1153     query in a `select' command, and before attempting a match in a `case'
1154     command.
1155
1156 o.  New `--enable-debugger' option to `configure' to compile in the debugger
1157     support code.
1158
1159 p.  `declare -F' now prints out extra line number and source file information
1160     if the `extdebug' option is set.
1161
1162 q.  If `extdebug' is enabled, a non-zero return value from a DEBUG trap causes
1163     the next command to be skipped, and a return value of 2 while in a
1164     function or sourced script forces a `return'.
1165
1166 r.  New `caller' builtin to provide a call stack for the bash debugger.
1167
1168 s.  The DEBUG trap is run just before the first command in a function body is
1169     executed, for the debugger.
1170
1171 t.  `for', `select', and `case' command heads are printed when `set -x' is
1172     enabled.
1173
1174 u.  There is a new {x..y} brace expansion, which is shorthand for {x.x+1,
1175     x+2,...,y}.  x and y can be integers or single characters; the sequence
1176     may ascend or descend; the increment is always 1.
1177
1178 v.  New ksh93-like ${!array[@]} expansion, expands to all the keys (indices)
1179     of array.
1180
1181 w.  New `force_fignore' shopt option; if enabled, suffixes specified by
1182     FIGNORE cause words to be ignored when performing word completion even
1183     if they're the only possibilities.
1184
1185 x.  New `gnu_errfmt' shopt option; if enabled, error messages follow the `gnu
1186     style' (filename:lineno:message) format.
1187
1188 y.  New `-o bashdefault' option to complete and compgen; if set, causes the
1189     whole set of bash completions to be performed if the compspec doesn't
1190     result in a match.
1191
1192 z.  New `-o plusdirs' option to complete and compgen; if set, causes directory
1193     name completion to be performed and the results added to the rest of the
1194     possible completions.
1195
1196 aa. `kill' is available as a builtin even when the shell is built without
1197     job control.
1198
1199 bb. New HISTTIMEFORMAT variable; value is a format string to pass to
1200     strftime(3).  If set and not null, the `history' builtin prints out
1201     timestamp information according to the specified format when displaying
1202     history entries.  If set, bash tells the history library to write out
1203     timestamp information when the history file is written.
1204
1205 cc. The [[ ... ]] command has a new binary `=~' operator that performs
1206     extended regular expression (egrep-like) matching.
1207
1208 dd. `configure' has a new `--enable-cond-regexp' option (enabled by default)
1209     to enable the =~ operator and regexp matching in [[ ... ]].
1210
1211 ee. Subexpressions matched by the =~ operator are placed in the new
1212     BASH_REMATCH array variable.
1213
1214 ff. New `failglob' option that causes an expansion error when pathname
1215     expansion fails to produce a match.
1216
1217 gg. New `set -o pipefail' option that causes a pipeline to return a failure
1218     status if any of the processes in the pipeline fail, not just the last
1219     one.
1220
1221 4.  New Features in Readline
1222
1223 a.  History expansion has a new `a' modifier equivalent to the `g' modifier
1224     for compatibility with the BSD csh.
1225
1226 b.  History expansion has a new `G' modifier equivalent to the BSD csh `g'
1227     modifier, which performs a substitution once per word.
1228
1229 c.  All non-incremental search operations may now undo the operation of
1230     replacing the current line with the history line.
1231
1232 d.  The text inserted by an `a' command in vi mode can be reinserted with
1233     `.'.
1234
1235 e.  New bindable variable, `show-all-if-unmodified'.  If set, the readline
1236     completer will list possible completions immediately if there is more
1237     than one completion and partial completion cannot be performed.
1238
1239 f.  There is a new application-callable `free_history_entry()' function.
1240
1241 g.  History list entries now contain timestamp information; the history file
1242     functions know how to read and write timestamp information associated
1243     with each entry.
1244
1245 h.  Four new key binding functions have been added:
1246
1247         rl_bind_key_if_unbound()
1248         rl_bind_key_if_unbound_in_map()
1249         rl_bind_keyseq_if_unbound()
1250         rl_bind_keyseq_if_unbound_in_map()
1251
1252 ------------------------------------------------------------------------------
1253 This document details the changes between this version, bash-2.05b-release,
1254 and the previous version, bash-2.05b-beta2.
1255
1256 1.  Changes to Bash
1257
1258 a.  Fixed an off-by-one error in the function that translates job
1259     specifications.
1260
1261 b.  Note that we're running under Emacs and disable line editing if
1262     $EMACS == `t'.
1263
1264 ------------------------------------------------------------------------------
1265 This document details the changes between this version, bash-2.05b-beta2,
1266 and the previous version, bash-2.05b-beta1.
1267
1268 1.  Changes to Bash
1269
1270 a.  Fixed the /= and %= arithmetic operators to catch division by zero.
1271
1272 b.  Added putenv, setenv, unsetenv to getenv replacement for completeness.
1273
1274 c.  Fixed a bug that could cause the -O expand_aliases invocation option
1275     to not take effect.
1276
1277 d.  Fixed a problem with process substitution that resulted in incorrect
1278     behavior when the number of process substitutions in an individual
1279     command approached 64.
1280
1281 2.  Changes to Readline
1282
1283 a.  Fixed a problem with backward-char-search when on a system with support
1284     for multibyte characters when running in a locale without any multibyte
1285     characters.
1286
1287 ------------------------------------------------------------------------------
1288 This document details the changes between this version, bash-2.05b-beta1,
1289 and the previous version, bash-2.05b-alpha1.
1290
1291 1.  Changes to Bash
1292
1293 a.  Fixed a problem when parsing a POSIX.2 character class name while
1294     evaluating a bracket expression containing multibyte characters.
1295
1296 b.  Changed the help text for `bind' to make it clear that any command
1297     that may be placed in ~/.inputrc is a valid argument to `bind'.
1298
1299 c.  Added `help' builtin entries for `((', `[[', and arithmetic for.
1300
1301 d.  malloc updated again:
1302         o slightly better overflow and underflow detection by putting the
1303           chunk size at the beginning and end of the chunk and making
1304           sure they match in free/realloc
1305         o partial page allocated to make things page-aligned no longer
1306           completely wasted
1307         o block coalescing now enabled by default
1308         o splitting and coalescing enabled for 32-byte chunks, the most
1309           common size requested
1310         o fixed a problem that resulted in spurious underflow messages and
1311           aborts
1312         o bin sizes are precomputed and stored in an array rather than
1313           being computed at run time
1314         o malloc will return memory blocks back to the system if the block
1315           being freed is at the top of the heap and of sufficient size to
1316           make it worthwhile
1317         o malloc/free/realloc now inline memset instead of calling the
1318           libc function; uses Duff's device for good performance
1319
1320 e.  Check for getservent(); make the service name completion code dependent
1321     on its presence.
1322
1323 f.  Changed the readline callback that executes a command bound to a key
1324     sequence to not save the executed command on the history list and to
1325     save and restore the parsing state.
1326
1327 g.  Changes to lib/sh/snprintf.c:  fixed some bugs in the `g' and `G'
1328     floating point format display; implemented the "'" flag character
1329     that turns on thousands' grouping; fixed behavior on systems where
1330     MB_CUR_MAX does not evaluate to a constant.
1331
1332 h.  The `unset' builtin no longer returns a failure status when asked to
1333     unset a previously-unset variable or function.
1334
1335 i.  Changes to the build system to make it easier to cross-compile bash
1336     for different systems.
1337
1338 j.  Added `,' to  the characters that are backslash-escaped during filename
1339     completion, to avoid problems with complete-into-braces and RCS filenames
1340     containing commas.
1341
1342 k.  Some changes to the multibyte character support code to avoid many calls
1343     to strlen().
1344
1345 l.  Bash now correctly honors setting LANG to some value when LC_ALL does not
1346     already have a value.
1347
1348 m.  Fixed a bug that could cause SIGSEGV when processing nested traps with
1349     trap handlers.
1350
1351 n.  The `source/.' builtin now restores the positional parameters when it
1352     returns unless they were changed using the `set' builtin during the file's
1353     execution.
1354
1355 o.  Fixed a bug that caused a syntax error when a command was terminated by
1356     EOF.
1357
1358 2.  New Features in Bash
1359
1360 a.  There is now support for placing the long help text into separate files
1361     installed into ${datadir}/bash.  Not enabled by default; can be turned
1362     on with `--enable-separate-helpfiles' option to configure.
1363
1364 b.  All builtins that take operands accept a `--' pseudo-option, except
1365     `echo'.
1366
1367 c.  The `echo' builtin now accepts \0xxx (zero to three octal digits following
1368     the `0') in addition to \xxx (one to three octal digits) for SUSv3/XPG6/
1369     POSIX.1-2001 compliance.
1370
1371 3.  Changes to Readline
1372
1373 a.  Fixed a small problem in _rl_insert_char with multibyte characters.
1374
1375 b.  Fixes from IBM for line wrapping problems when using multibyte characters.
1376
1377 c.  Fixed a problem which caused the display to be messed up when the last
1378     line of a multi-line prompt (possibly containing invisible characters)
1379     was longer than the screen width.
1380
1381 d.  Fixed a problem with the vi-mode `r' command that ocurred on systems with
1382     support for multibyte characters when running in a locale without any
1383     multibyte characters.
1384
1385 ------------------------------------------------------------------------------
1386 This document details the changes between this version, bash-2.05b-alpha1,
1387 and the previous version, bash-2.05a-release.
1388
1389 1.  Changes to Bash
1390
1391 a.  Some changes to work around inlining differences between compilers.
1392
1393 b.  Added more prototypes for internal shell typedefs, to catch argument
1394     passing errors when using pointers to functions.
1395
1396 c.  The `cd' builtin now fails in posix mode when a valid directory cannot be
1397     constructed from a relative pathname argument and the $PWD using pathname
1398     canonicalization, and the -P option has not been supplied.  Previously,
1399     the shell would attempt to use what the user typed, leading to weird
1400     values for $PWD and discrepancies between the value of $PWD and the
1401     actual working directory.
1402
1403 d.  The `cd' builtin now resets $PWD when canonicalization fails but a chdir
1404     to the pathname passed as an argument succeeds (when not in posix mode).
1405
1406 e.  The `fc' builtin has been fixed, as POSIX requires, to use the closest
1407     history position in range when given an out-of-range argument.
1408
1409 f.  The history file loading code was changed to allow lines to be saved in
1410     the history list from the shell startup files.
1411
1412 g.  `history -s args' now works better in compound commands.
1413
1414 h.  The tilde expansion code was fixed to better recognize when it's being
1415     invoked in an assignment context, which enables expansion after `='
1416     and `:'.
1417
1418 i.  Fixed the command name completion code so a slash is no longer appended
1419     to a single match if there happens to be a directory with that name in
1420     $PWD.
1421
1422 j.  Fixed compound array assignment to no longer perform alias expansion, to
1423     allow reserved words as array members, and to not produce extra output
1424     when the `-v' option had been enabled.
1425
1426 k.  Fixed the programmable completion code to better handle newlines in lists
1427     of possible completions (e.g., `complete -W').
1428
1429 l.  Removed the reserved words from the `bash-builtins' manual page.
1430
1431 m.  Parser error reporting now attempts to do a better job of identifying the
1432     token in error rather than doing straight textual analysis.
1433
1434 n.  Fixes for Inf/NaN, locales, wide/multibyte characters and zero-length
1435     arguments in the library snprintf(3) replacement.
1436
1437 o.  `read -e' no longer does command name completion on the first word on
1438     the line being read.
1439
1440 p.  `select' now returns failure if the read of the user's selection fails.
1441
1442 q.  Fixed a bug that could cause a core dump when setting $PIPESTATUS.
1443
1444 r.  Fixes to not allocate so many job slots when the shell is running a loop
1445     with job control enabled in a subshell of an interactive shell.
1446
1447 s.  Fixed a bug in the trap code that caused traps to be inherited by
1448     command substitutions in some cases.
1449
1450 t.  Fixed a bug that could cause alias expansion to inappropriately expand
1451     the word following the alias.
1452
1453 u.  Fixed a bug in the `kill' builtin that mishandled negative pid arguments.
1454
1455 v.  The parser is less lenient when parsing assignment statements where the
1456     characters before the `=' don't comprise a valid identifier.
1457
1458 w.  The arithmetic expression evaluation code now honors the setting of the
1459     `-u' option when expanding variable names.
1460
1461 x.  Fixed the arithmetic evaluation code to allow array subscripts to be
1462     assigned (`let b[7]=42') and auto-incremented and auto-decremented
1463     (e.g., b[7]++).
1464
1465 y.  Reimplemented the existing prompt string date and time expansions using
1466     strftime(3), which changed the output of \@ in some locales.
1467
1468 z.  Fixed a bug that could cause a core dump when a special shell variable
1469     (like RANDOM) was converted to an array with a variable assignment.
1470
1471 aa. Fixed a bug that would reset the handler for a signal the user had
1472     trapped to a function that would exit the shell when setting the exit
1473     trap in a non-interactive shell.
1474
1475 bb. Changed the execve(2) wrapper code to check whether or not a failing
1476     command is a directory before looking at whether a `#!' interpreter
1477     failed for some reason.
1478
1479 cc. Fixed a bug in the command printing code so it no longer inserts a `;'
1480     after a newline, which produces a syntax error when reused as input.
1481
1482 dd. The code that expands $PS4 no longer inherits the `-x' flag.
1483
1484 ee. The bash-specific completion functions may now take advantage of the
1485     double-TAB and M-?  features of the standard readline completion
1486     functions.
1487
1488 ff. The mail checking code no longer prints a message if the checked file's
1489     size has not increased, even if the access time is less than the modification time.
1490
1491 gg. Rewrote the variable symbol table code: there is now a stack of
1492     contexts, each possibly including a separate symbol table; there can
1493     be more than one temporary environment supplied to nested invocations
1494     of `./source'; the temporary environments no longer require so much
1495     special-case code; shell functions now handle the temporary environment
1496     and local variables more consistently; function scope exit is faster now
1497     that the entire symbol table does not have to be traversed to dispose of
1498     local variables; it is now easier to push vars from the temporary
1499     environment to the shell's variable table in posix mode; some duplicated
1500     code has been removed.
1501
1502 hh. Regularized the error message printing code; builtin_error is now called
1503     more consistently, and common error message strings are handled by small
1504     functions.  This should make eventual message translation easier.
1505
1506 ii. Error messages now include the line number in a script when the shell
1507     is not interactive.
1508
1509 jj. Array subscript expansion now takes place even when the array variable is
1510     unset, so side effects will take place.
1511
1512 kk. Fixed a bug in the SICGHLD child-reaping code so that it won't find
1513     jobs already marked as terminated if the OS reuses pids quickly enough.
1514
1515 ll. Fixed a bug that could cause a signal to not interrupt the `wait'
1516     builtin while it was waiting for a background process to terminate.
1517
1518 mm. A couple of changes to make it easier for multiple shells to share history
1519     files using `history -n', `history -r', and `history -w'.
1520
1521 nn. The `getopts' builtin always increments OPTIND to point to the next
1522     option to be handled when an option is returned, whether it's valid
1523     or not, as POSIX 1003.x-2001 requires.
1524
1525 oo. Changed some parts of the expansion code to avoid allocating and
1526     immediately freeing memory without using the results for anything.
1527
1528 pp. The shell now keeps track of $IFS internally, updating its internal map
1529     each time the variable is assigned a new value (or at local scope exit).
1530     This saves thousands of hash lookups for IFS, which, while individually
1531     cheap, add up.
1532
1533 qq. Rewrote the hash table code:  searching and insertion are much faster now,
1534     and it uses a better string hashing function; augmented the function
1535     interface to simplify other parts of the code and remove duplicated code
1536
1537 rr. The shell now uses a simple, generic `object cache' for allocating and
1538     caching words and word lists, which were the major users of
1539     malloc/free.
1540
1541 ss. Fixed the assignment statement parsing code to allow whitespace and
1542     newlines in subscripts when performing array element assignment.
1543
1544 tt. The shell now issues many fewer calls to sigprocmask and other signal
1545     masking system calls.
1546
1547 uu. Fixed the `test' and conditional command file comparison operators to
1548     work right when one file has a non-positive timestamp and the other
1549     does not exist.
1550
1551 vv. Fixed some cases where the special characters '\001' and '\177' in the
1552     values of variables or positional parameters caused incorrect expansion
1553     results.
1554
1555 2.  Changes to Readline
1556
1557 a.  Fixed output of comment-begin character when listing variable values.
1558
1559 b.  Added some default key bindings for common escape sequences produced by
1560     HOME and END keys.
1561
1562 c.  Fixed the mark handling code to be more emacs-compatible.
1563
1564 d.  A bug was fixed in the code that prints possible completions to keep it
1565     from printing empty strings in certain circumstances.
1566
1567 e.  Change the key sequence printing code to print ESC as M\- if ESC is a
1568     meta-prefix character -- it's easier for users to understand than \e.
1569
1570 f.  Fixed unstifle_history() to return values that match the documentation.
1571
1572 g.  Fixed the event loop (rl_event_hook) to handle the case where the input
1573     file descriptor is invalidated.
1574
1575 h.  Fixed the prompt display code to work better when the application has a
1576     custom redisplay function.
1577
1578 i.  Changes to make reading and writing the history file a little faster, and
1579     to cope with huge history files without calling abort(3) from xmalloc.
1580
1581 j.  The vi-mode `S' and `s' commands are now undone correctly.
1582
1583 3.  New Features in Bash
1584
1585 a.  If set, TMOUT is the default timeout for the `read' builtin.
1586
1587 b.  `type' has two new options:  `-f' suppresses shell function lookup, and
1588     `-P' forces a $PATH search.
1589
1590 c.  New code to handle multibyte characters.
1591
1592 d.  `select' was changed to be more ksh-compatible, in that the menu is
1593     reprinted each time through the loop only if REPLY is set to NULL.
1594     The previous behavior is available as a compile-time option.
1595
1596 e.  `complete -d' and `complete -o dirnames' now force a slash to be
1597     appended to names which are symlinks to directories.
1598
1599 f.  There is now a bindable edit-and-execute-command readline command,
1600     like the vi-mode `v' command, bound to C-xC-e in emacs mode.
1601
1602 g.  Added support for ksh93-like [:word:] character class in pattern matching.
1603
1604 h.  The  $'...' quoting construct now expands \cX to Control-X.
1605
1606 i.  A new \D{...} prompt expansion; passes the `...' to strftime and inserts
1607     the result into the expanded prompt.
1608
1609 j.  The shell now performs arithmetic in the largest integer size the
1610     machine supports (intmax_t), instead of long.
1611
1612 k.  If a numeric argument is supplied to one of the bash globbing completion
1613     functions, a `*' is appended to the word before expansion is attempted.
1614
1615 l.  The bash globbing completion functions now allow completions to be listed
1616     with double tabs or if `show-all-if-ambiguous' is set.
1617
1618 m.  New `-o nospace' option for `complete' and `compgen' builtins; suppresses
1619     readline's appending a space to the completed word.
1620
1621 n.  New `here-string' redirection operator:  <<< word.
1622
1623 o.  When displaying variables, function attributes and definitions are shown
1624     separately, allowing them to be re-used as input (attempting to re-use
1625     the old output would result in syntax errors).
1626
1627 p.  There is a new configuration option `--enable-mem-scramble', controls
1628     bash malloc behavior of writing garbage characters into memory at
1629     allocation and free time.
1630
1631 q.  The `complete' and `compgen' builtins now have a new `-s/-A service'
1632     option to complete on names from /etc/services.
1633
1634 r.  `read' has a new `-u fd' option to read from a specified file descriptor.
1635
1636 s.  Fix the completion code so that expansion errors in a directory name
1637     don't cause a longjmp back to the command loop.
1638
1639 t.  Fixed word completion inside command substitution to work a little more
1640     intuitively.
1641
1642 u.  The `printf' %q format specifier now uses $'...' quoting to print the
1643     argument if it contains non-printing characters.
1644
1645 v.  The `declare' and `typeset' builtins have a new `-t' option.  When applied
1646     to functions, it causes the DEBUG trap to be inherited by the named
1647     function.  Currently has no effect on variables.
1648
1649 w.  The DEBUG trap is now run *before* simple commands, ((...)) commands,
1650     [[...]] conditional commands, and for ((...)) loops.
1651
1652 x.  The expansion of $LINENO inside a shell function is only relative to the
1653     function start if the shell is interactive -- if the shell is running a
1654     script, $LINENO expands to the line number in the script.  This is as
1655     POSIX-2001 requires.
1656
1657 y.  The bash debugger in examples/bashdb has been modified to work with the
1658     new DEBUG trap semantics, the command set has been made more gdb-like,
1659     and the changes to $LINENO make debugging functions work better.  Code
1660     from Gary Vaughan.
1661
1662 z.  New [n]<&word- and [n]>&word- redirections from ksh93 -- move fds (dup
1663     and close).
1664
1665 aa. There is a new `-l' invocation option, equivalent to `--login'.
1666
1667 bb. The `hash' builtin has a new `-l' option to list contents in a reusable
1668     format, and a `-d' option to remove a name from the hash table.
1669
1670 4.  New Features in Readline
1671
1672 a.  Support for key `subsequences':  allows, e.g., ESC and ESC-a to both
1673     be bound to readline functions.  Now the arrow keys may be used in vi
1674     insert mode.
1675
1676 b.  When listing completions, and the number of lines displayed is more than
1677     the screen length, readline uses an internal pager to display the results.
1678     This is controlled by the `page-completions' variable (default on).
1679
1680 c.  New code to handle editing and displaying multibyte characters.
1681
1682 d.  The behavior introduced in bash-2.05a of deciding whether or not to
1683     append a slash to a completed name that is a symlink to a directory has
1684     been made optional, controlled by the `mark-symlinked-directories'
1685     variable (default is the 2.05a behavior).
1686
1687 e.  The `insert-comment' command now acts as a toggle if given a numeric
1688     argument:  if the first characters on the line don't specify a
1689     comment, insert one; if they do, delete the comment text
1690
1691 f.  New application-settable completion variable:
1692     rl_completion_mark_symlink_dirs, allows an application's completion
1693     function to temporarily override the user's preference for appending
1694     slashes to names which are symlinks to directories.
1695
1696 g.  New function available to application completion functions:
1697     rl_completion_mode, to tell how the completion function was invoked
1698     and decide which argument to supply to rl_complete_internal (to list
1699     completions, etc.).
1700
1701 h.  Readline now has an overwrite mode, toggled by the `overwrite-mode'
1702     bindable command, which could be bound to `Insert'.
1703
1704 i.  New application-settable completion variable:
1705     rl_completion_suppress_append, inhibits appending of
1706     rl_completion_append_character to completed words.
1707
1708 j.  New key bindings when reading an incremental search string:  ^W yanks
1709     the currently-matched word out of the current line into the search
1710     string; ^Y yanks the rest of the current line into the search string,
1711     DEL or ^H deletes characters from the search string.
1712
1713 ------------------------------------------------------------------------------
1714 This document details the changes between this version, bash-2.05a-release,
1715 and the previous version, bash-2.05a-rc1.
1716
1717 1.  Changes to Bash
1718
1719 a.  Fixed the `printf' builtin so that the variable name supplied as an
1720     argument to a %n conversion must be a valid shell identifier.
1721
1722 b.  Improved the random number generator slightly.
1723
1724 c.  Changes to configuration to not put -I/usr/include into $CFLAGS, since
1725     it messes up some includes.
1726
1727 d.  Corrected description of POSIXLY_CORRECT in man page and info manual.
1728
1729 e.  Fixed a couple of cases of incorrect function prototypes that sneaked
1730     through and caused compilation problems.
1731
1732 f.  A few changes to avoid potential core dumps in the programmable completion
1733     code.
1734
1735 g.  Fixed a configure problem that could cause a non-existent file to show
1736     up in LIBOBJS.
1737
1738 h.  Fixed a configure problem that could cause siglist.o to not be built when
1739     required.
1740
1741 i.  Changes to the strtoimax and strtoumax replacement functions to work
1742     around buggy compilers.
1743
1744 j.  Fixed a problem with the snprintf replacement function that could
1745     potentially cause a core dump.
1746
1747 2.  Changes to Readline
1748
1749 a.  Fixed a locale-specific problem in the vi-mode `goto mark' command.
1750
1751 b.  Fixed Makefile to not put -I/usr/include into CFLAGS, since it can cause
1752     include file problems.
1753
1754 ------------------------------------------------------------------------------
1755 This document details the changes between this version, bash-2.05a-rc1,
1756 and the previous version, bash-2.05a-beta1.
1757
1758 1.  Changes to Bash
1759
1760 a.  Fixed the snprintf replacement to correctly implement the `alternate form'
1761     of the %g and %G conversions.
1762
1763 b.  Fixed snprintf to correctly handle the optional precision with the %g and
1764     %G conversions.
1765
1766 c.  Fixed the arithmetic evaluation code to correct the values of `@' and `_'
1767     when translating base-64 constants (they were backwards).
1768
1769 d.  New library functions for formatting long and long long ints.
1770
1771 e.  Fixed a few places where negative array subscripts could have occurred,
1772     mostly as the result of systems using signed characters.
1773
1774 f.  Fixed a few places that assumed a pid_t was no wider than an int.
1775
1776 g.  Fixed the `maildir' mail checking code to work on systems where a
1777     `struct stat' doesn't include an `st_blocks' member.
1778
1779 h.  Fixed snprintf to make `unsigned long long' conversion formats (%llu)
1780     work better.
1781
1782 i.  Fixed snprintf to not print a sign when asked to do an unsigned conversion.
1783
1784 j.  Made configure changes to avoid compiling empty source files in lib/sh.
1785
1786 k.  New replacement functions (if necessary) for strtoull, strtoll, strtoimax,
1787     strtoumax.
1788
1789 l.  The `printf' builtin now handles the `ll' and `j' length modifiers
1790     directly, since they can affect the type and width of the argument
1791     passed to printf(3).
1792
1793 m.  Renamed a number of the bash-specific autoconf macros in aclocal.m4 to
1794     have more sytematic naming, with accompanying changes to configure.in.
1795
1796 n.  Fixed snprintf to handle long doubles and the %a/%A conversions by
1797     falling back to sprintf, as long as sprintf supports them.
1798
1799 o.  Fixed return value from vsnprintf/snprintf to be the number of characters
1800     that would have been printed, even if that number exceeds the buffer
1801     size passed as an argument.
1802
1803 p.  Bash no longer attempts to define its own versions of some ctype macros
1804     if they are implemented as functions in libc but not as macros in
1805     <ctype.h>.
1806
1807 q.  Changed the variable printing code (used by `set', `export', etc.) to
1808     not use the $'...' syntax when in posix mode, since that caused
1809     interoperability problems with other shells (most notably with autoconf).
1810     When not in posix mode, it uses $'...' if the string to be printed
1811     contains non-printing characters and regular single quotes otherwise.
1812
1813 r.  snprintf now recognizes the %F conversion.
1814
1815 s.  Fixed a bug that could cause the wrong status to be returned by a shell
1816     function when the shell is compiled without job control and a null
1817     command containing a command substutition was executed in the function.
1818
1819 t.  When in posix mode, the default value for MAILCHECK is 600.
1820
1821 u.  Bash only initializes FUNCNAME, GROUPS, and DIRSTACK as special variables
1822     if they're not in the initial environment.
1823
1824 v.  If SECONDS appears in the initial environment with a valid integer value,
1825     bash uses that as the starting value, as if an assignment had been
1826     performed.
1827
1828 w.  Bash no longer auto-exports HOME, PATH, SHELL, or TERM, even though it
1829     gives them default values if they don't appear in the initial environment.
1830
1831 x.  Bash no longer auto-exports HOSTNAME, HOSTTYPE, MACHTYPE, or OSTYPE,
1832     even if it assigns them default values.
1833
1834 y.  Bash no longer removes the export attribute from SSH_CLIENT or SSH2_CLIENT
1835     if they appear in the initial environment.
1836
1837 z.  Bash no longer attempts to discover if it's being run by sshd in order to
1838     run the startup files.  If the SSH_SOURCE_BASHRC is uncommented in
1839     config-top.h it will attempt to do so as previously, but that's commented
1840     out in the distributed version.
1841
1842 aa. Fixed a typo in the code that tests for LC_NUMERIC.
1843
1844 bb. The POSIXLY_CORRECT shell variable and its effects are now documented.
1845
1846 cc. Some changes to several of the support shell scripts included in the
1847     definitions to try to avoid race conditions and attacks.
1848
1849 dd. Several changes to avoid warnings from `gcc -Wall'.
1850
1851 ee. Fixed a problem with the `unset' builtin that could cause incorrect
1852     results if asked to unset a variable and an array subscript in the
1853     same command.
1854
1855 ff. A few changes to the shell's temporary file creation code to avoid
1856     potential file descriptor leaks and to prefer the system's idea of
1857     the temporary directory to use.
1858
1859 gg. Fixes to build with the C alloca in lib/malloc/alloca.c if the system
1860     requires it but the shell has been configured --without-bash-malloc.
1861
1862 hh. Updated the documentation to note that only interactive shells resend
1863     SIGHUP to all jobs before exiting.
1864
1865 ii. Fixes to only pass unquoted tilde words to tilde_expand, rather than
1866     rely on tilde_expand or getpwnam(3) to handle the quotes (MacOS 10.x
1867     will remove backslashes in any login name passed to getpwnam(3)).
1868
1869 jj. Small change from Paul Eggert to make LINENO right in commands run with
1870     `bash -c'.
1871
1872 2.  New Features in Bash
1873
1874 a.  The `printf' builtin now handles the %a and %A conversions if they're
1875     implemented by printf(3).
1876
1877 b.  The `printf' builtin now handles the %F conversion (just about like %f).
1878
1879 c.  The `printf' builtin now handles the %n conversion like printf(3).  The
1880     corresponding argument is the name of a shell variable to which the
1881     value is assigned.
1882
1883 3.  Changes to Readline
1884
1885 a.  Fixed a few places where negative array subscripts could have occurred.
1886
1887 b.  Fixed the vi-mode code to use a better method to determine the bounds of
1888     the array used to hold the marks.
1889
1890 c.  Fixed the defines in chardefs.h to work better when chars are signed.
1891
1892 d.  Fixed configure.in to use the new names for bash autoconf macros.
1893
1894 e.  Readline no longer attempts to define its own versions of some ctype
1895     macros if they are implemented as functions in libc but not as macros in
1896     <ctype.h>.
1897
1898 f.  Fixed a problem where rl_backward could possibly set point to before
1899     the beginning of the line.
1900
1901 ------------------------------------------------------------------------------
1902 This document details the changes between this version, bash-2.05a-beta1,
1903 and the previous version, bash-2.05a-alpha1.
1904
1905 1.  Changes to Bash
1906
1907 a.  Fixed a bug in the evalution of arithmetic `for' statements when the
1908     expanded expression is NULL.
1909
1910 b.  Fixed an unassigned variable problem in the redirection printing code.
1911
1912 c.  Added more prototypes to extern function declarations in the header
1913     files and to static function declarations in C source files.
1914
1915 d.  Make sure called functions have a prototype in scope, to get the arguments
1916     and return values right instead of casting.  Removed extern function
1917     declarations from C source files that were already included in header
1918     files.
1919
1920 e.  Changed some function arguments to use function typedefs in general.h so
1921     the prototypes can be checked.  The only use of Function and VFunction
1922     now is for unwind-protects.
1923
1924 f.  More const changes to function arguments and appropriate variables.
1925
1926 g.  Changed the mail checking support to handle `maildir'-style mail
1927     directories.
1928
1929 h.  Augmented the bash malloc to pass in the file and line number information
1930     for each malloc, realloc, and free.  This should result in better error
1931     messages.
1932
1933 i.  The `old' gnu malloc is no longer a configuration option.
1934
1935 j.  Augmented the bash malloc with optional tracing and registering allocated
1936     and freed memory.
1937
1938 k.  Prompt string decoding now saves and restores the value of $? when it
1939     expands the prompt string, so command substitutions don't change $?.
1940
1941 i.  Array indices are now `long', since shell arithmetic is performed as long,
1942     and the internal arrayind_t type is used consistently.
1943
1944 j.  Some more `unsigned char *' fixes from Paul Eggert.
1945
1946 k.  Fixed a bad call to builtin_error that could cause core dumps when making
1947     local variables.
1948
1949 l.  `return' may no longer be used to terminate a `select' command, for
1950     compatibility with ksh.
1951
1952 m.  Changed code that reads octal numbers to do a better job of detecting
1953     overflows.
1954
1955 n.  The time formatting code no longer uses absolute indices into a buffer,
1956     because the buffer size changes depending on the size of a `time_t'.
1957
1958 o.  `umask' now prints four digits when printing in octal mode, for
1959     compatibility with other shells.
1960
1961 p.  Lots of changes to the `printf' builtin from Paul Eggert:  it handles `L'
1962     formats and long doubles better, and internal functions have been
1963     simpified where appropriate.
1964
1965 q.  Some `time_t' fixes for machines were a time_t is bigger than a long.
1966
1967 r.  Replaced some bash-specific autoconf macros with standard equivalents.
1968
1969 s.  Improvmed the code that constructs temporary filenames to make the
1970     generated names a bit more random.
1971
1972 t.  Added code that checks for ascii before calling any of the is* ctype
1973     functions.
1974
1975 u.  Changed some places where a `char' was used as an array subscript to use
1976     `unsigned char', since a `char' can be negative if it's signed by default.
1977
1978 v.  Lots of changes to the `ulimit' builtin from Paul Eggert to add support
1979     for the new POSIX-200x RLIM_SAVED_CUR and RLIM_SAVED_MAX values and
1980     simplify the code.
1981
1982 w.  `ulimit' now prints the description of a resource in any error message
1983     relating to fetching or setting that resource's limits.
1984
1985 x.  The `snprintf' replacement now computes maximum values at compile
1986     time rather than using huge constants for things like long long.
1987
1988 y.  Interactive shells now ignore `set -n'.
1989
1990 z.  Changed the malloc bookkeeping information so that it's now 8 bytes
1991     instead of 12 on most 32-bit machines (saving 4 bytes per allocation),
1992     restoring 8-byte alignment.
1993
1994 aa. The malloc error reporting code now attempts to print the file and line
1995     number of the call that caused the error.
1996
1997 bb. Changed the redirection error reporting code to catch EBADF errors and
1998     report the file descriptor number rather than the file being redirected
1999     to or from (e.g., things like `exec 4242<x' where 4242 is an out-of-range
2000     file descriptor).
2001
2002 cc. `printf', `echo -e', and the $'...' code now process only two hex digits
2003     after a `\x' escape sequence for compatibility with other shells, and
2004     the documentation was changed to note that the octal and hex escape
2005     sequences result in an eight-bit value rather than strict ASCII.
2006
2007 2.  Changes to Readline
2008
2009 a.  The completion code now attempts to do a better job of preserving the
2010     case of the word the user typed if ignoring case in completions.
2011
2012 b.  Readline defaults to not echoing the input and lets the terminal
2013     initialization code enable echoing if there is a controlling terminal.
2014
2015 c.  The key binding code now processes only two hex digits after a `\x'
2016     escape sequence, and the documentation was changed to note that the
2017     octal and hex escape sequences result in an eight-bit value rather
2018     than strict ASCII.
2019
2020 3.  New Features in Bash
2021
2022 a.  The builtin `ulimit' now takes two new non-numeric arguments:  `hard',
2023     meaning the current hard limit, and `soft', meaning the current soft
2024     limit, in addition to `unlimited'
2025
2026 b.  `ulimit' now prints the option letter associated with a particular
2027     resource when printing more than one limit.
2028
2029 c.  `ulimit' prints `hard' or `soft' when a value is not `unlimited' but is
2030     one of RLIM_SAVED_MAX or RLIM_SAVED_CUR, respectively.
2031
2032 4.  New Features in Readline
2033
2034 a.  New bindable variable `history-preserve-point'.  If set, the history
2035     code attempts to place the user at the same location on each history
2036     line retrived with previous-history or next-history.
2037
2038 ------------------------------------------------------------------------------
2039 This document details the changes between this version, bash-2.05a-alpha1,
2040 and the previous version, bash-2.05-release.
2041
2042 1.  Changes to Bash
2043
2044 a.  Better checks in the redirection code for write errors.
2045
2046 b.  bashbug now uses $TMPDIR, defaulting to /tmp, and uses mktemp(1) more
2047     portably.
2048
2049 c.  System-specific configuration changes for:  Interix, OpenBSD, FreeBSD,
2050     MacOS X.
2051
2052 d.  Some more `const' cleanups through the code.
2053
2054 e.  Fixed a typo in the /dev/fd redirection code, better checks for valid
2055     numeric fds in /dev/fd.
2056
2057 f.  Fixed many parts of the shell to handle integer overflow more gracefully
2058     and to do more stringent checks for valid numbers.
2059
2060 g.  Fixed mksignames to include config.h.
2061
2062 h.  Fixed an uninitialized variable problem that could cause the shell to core
2063     dump when replacing characters in a string.
2064
2065 i.  New mechanism for updating the patch level when official patches are
2066     released (patchlevel.h).
2067
2068 j.  configure.in changed to no longer require external files _distribution and
2069     _patchlevel.
2070
2071 k.  Fixed non-interactive shell initialization problem when bash started as
2072     `bash -i filename'.
2073
2074 l.  Fixed printf builtin conversion error handling to be POSIX.2-conformant.
2075
2076 m.  autoconf-2.52 is now used to build configure; autoconf-2.50 or newer is
2077     required.  Some of the bash-specific macros were removed, since they are
2078     now standard.
2079
2080 n.  Startup files and files read with source or `.' are no longer required to
2081     be regular files.
2082
2083 o.  Fixed core dump in builtin printf when user-supplied precision or field
2084     width is 0.
2085
2086 p.  Fixed builtin printf to treat a negative field width as a positive field
2087     width with left-justification.
2088
2089 r.  New unwind-protect implementation from Paul Eggert.
2090
2091 s.  Fixed an inadvertently-unclosed comment in the bash completion code that
2092     caused programmable completions to not add trailing slashes or spaces to
2093     completions.
2094
2095 t.  Fixed the process substitution code to cope better when stdin is closed.
2096
2097 v.  Fixes, mostly from Paul Eggert, for a few possible buffer overflows in
2098     the shell.
2099
2100 w.  Fixes from Paul Eggert to avoid most of the type casts in the shell code,
2101     and use more appropriate types for a number of variables.
2102
2103 x.  Command substition no longer inherits the DEBUG trap.
2104
2105 y.  Some fixes to the process substition code on machines without /dev/fd so
2106     that named pipes are not removed inappropriately.
2107
2108 z.  The loadable `getconf' builtin is now much more complete, and will become
2109     part of the shell in the future.
2110
2111 aa. The select command no longer terminates on a `return', so it can be used
2112     to return from an enclosing function (as ksh does it).
2113
2114 bb. Fixed the extended pattern matching code to behave better when presented
2115     with incorrectly-formed patterns.
2116
2117 cc. Some changes were made with the intent of making cross-compilation easier.
2118
2119 dd. The network code (/dev/tcp and /dev/udp redirections) uses getaddrinfo(3)
2120     if it's available, which adds support for IPv6.
2121
2122 ee. Subshells of login shells no longer source ~/.bash_logout when they exit.
2123
2124 ff. Fixes so that subshells don't exit inappropriately if the -e option has
2125     been set.
2126
2127 gg. Restricted shells no longer allow functions to be exported.
2128
2129 hh. Changes to the pattern matching code so extended pattern matching works
2130     on systems with deficient shared library implementations, like MacOS X.
2131
2132 ii. Better error messages when a script with a leading `#!interp' fails
2133     to execute because of problems with `interp'.
2134
2135 jj. Fixed `compgen' to handle the `-o default' option better.
2136
2137 kk. Fixed the job control code to force an asynchronous process's standard
2138     input to /dev/null only if job control is not active.
2139
2140 ll. Fixed a possible infinite recursion problem when `fc ""=abc' (a null
2141     pattern) is used to re-execute a previous command.
2142
2143 mm. Fixed `declare [-a] var=value' to assign VALUE to element 0 if VAR is an
2144     array variable.  Similarly for `declare [-a] var[N]=value'.  This is like
2145     ksh93.
2146
2147 nn. Fixed a bug that caused `read -a aname' to work even if ANAME had been
2148     declared readonly.
2149
2150 oo. Fixed a possible integer overflow problem when constructing names for
2151     temporary files.
2152
2153 2.  New Features in Bash
2154
2155 a.  Added support for DESTDIR installation root prefix, so you can do a
2156     `make install DESTDIR=bash-root' and do easier binary packaging.
2157
2158 b.  Added support for builtin printf "'" flag character as per latest POSIX
2159     drafts.
2160
2161 c.  Support for POSIX.2 printf(1) length specifiers `j', `t', and `z' (from
2162     ISO C99).
2163
2164 d.  New autoconf macro, RL_LIB_READLINE_VERSION, for use by other applications
2165     (bash doesn't use very much of what it returns).
2166
2167 e.  `set [-+]o nolog' is recognized as required by the latest POSIX drafts,
2168     but ignored.
2169
2170 f.  New read-only `shopt' option:  login_shell.  Set to non-zero value if the
2171     shell is a login shell.
2172
2173 g.  New `\A' prompt string escape sequence; expands to time in 24 HH:MM format.
2174
2175 h.  New `-A group/-g' option to complete and compgen; does group name
2176     completion.
2177
2178 i.  New `-t' option to `hash' to list hash values for each filename argument.
2179
2180 j.  New [-+]O invocation option to set and unset `shopt' options at startup.
2181
2182 k.  configure's `--with-installed-readline' option now takes an optional
2183     `=PATH' suffix to set the root of the tree where readline is installed
2184     to PATH.
2185
2186 l.  The ksh-like `ERR' trap has been added.  The `ERR' trap will be run
2187     whenever the shell would have exited if the -e option were enabled.
2188     It is not inherited by shell functions.
2189
2190 m.  `readonly', `export', and `declare' now print variables which have been
2191     given attributes but not set by assigning a value as just a command and
2192     a variable name (like `export foo') when listing, as the latest POSIX
2193     drafts require.
2194
2195 n.  `bashbug' now requires that the subject be changed from the default.
2196
2197 o.  configure has a new `--enable-largefile' option, like other GNU utilities.
2198
2199 p.  `for' loops now allow empty word lists after `in', like the latest POSIX
2200     drafts require.
2201
2202 3.  Changes to Readline
2203
2204 a.  More `const' and type casting fixes.
2205
2206 b.  Changed rl_message() to use vsnprintf(3) (if available) to fix buffer
2207     overflow problems.
2208
2209 c.  The completion code no longer appends a `/' or ` ' to a match when
2210     completing a symbolic link that resolves to a directory name, unless
2211     the match does not add anything to the word being completed.  This
2212     means that a tab will complete the word up to the full name, but not
2213     add anything, and a subsequent tab will add a slash.
2214
2215 d.  Fixed a trivial typo that made the vi-mode `dT' command not work.
2216
2217 e.  Fixed the tty code so that ^S and ^Q can be inserted with rl_quoted_insert.
2218
2219 f.  Fixed the tty code so that ^V works more than once.
2220
2221 g.  Changed the use of __P((...)) for function prototypes to PARAMS((...))
2222     because the use of __P in typedefs conflicted g++ and glibc.
2223
2224 4.  New Features in Readline
2225
2226 a.  Added extern declaration for rl_get_termcap to readline.h, making it a
2227     public function (it was always there, just not in readline.h).
2228
2229 b.  New #defines in readline.h:  RL_READLINE_VERSION, currently 0x0402,
2230     RL_VERSION_MAJOR, currently 4, and RL_VERSION_MINOR, currently 2.
2231
2232 c.  New readline variable:  rl_readline_version, mirrors RL_READLINE_VERSION.
2233
2234 d.  New bindable boolean readline variable:  match-hidden-files.  Controls
2235     completion of files beginning with a `.' (on Unix).  Enabled by default.
2236
2237 e.  The history expansion code now allows any character to terminate a
2238     `:first-' modifier, like csh.
2239
2240 f.  The incremental search code remembers the last search string and uses
2241     it if ^R^R is typed without a search string.
2242
2243 ------------------------------------------------------------------------------
2244 This document details the changes between this version, bash-2.05-release,
2245 and the previous version, bash-2.05-beta2.
2246
2247 1.  Changes to Bash
2248
2249 a.  Make sure we note that the first line of a multi-line command was not
2250     saved in the history if the tests for HISTCONTROL succeed, but the
2251     HISTIGNORE check fails.
2252
2253 b.  Fixed a bug in the pattern matching code that caused `[' to be treated
2254     as a special character inside a `[...]' bracket expression.
2255
2256 c.  Fixed a bug in the pattern matching code that caused `]' to terminate
2257     a bracket expression even if it was the first character after the `['
2258     (or a leading `!' or `^').
2259
2260 d.  Made a small change to report a more user-friendly error message if
2261     execve(2) fails because of an error with the interpreter in a script
2262     with a leading `#! interpreter'.
2263
2264 e.  If the OS does not support an exec(2) magic number of `#!', make sure we
2265     have a non-null interpreter name before attempting to execute it.
2266
2267 f.  Fixed a bug that caused the shell process to end up in a different
2268     process group than the controlling terminal if a job-control shell was
2269     run with `exec' in the startup files.
2270
2271 g.  When started in POSIX mode, either by `bash --posix', `bash -o posix', or
2272     `sh', $SHELLOPTS includes `posix' and POSIXLY_CORRECT is set.
2273
2274 h.  Fixed a problem that caused the `\W' prompt string escape sequence to
2275     expand to nothing when $PWD was `//'.
2276
2277 i.  The `bashbug' shell script no longer uses $(...) command substitution.
2278
2279 j.  When `set' is invoked without options in POSIX mode, it no longer prints
2280     the names and definitions of shell functions.
2281
2282 2.  Changes to Readline
2283
2284 a.  rl_set_paren_blink_timeout() is now documented.
2285
2286 b.  Corrected history.3 man page: `$' is not in the default value of
2287     history_word_delimiters.
2288
2289 c.  If a hook function assigned to rl_event_hook sets rl_done to a non-zero
2290     value, rl_read_key() now immediately returns '\n' (which is assumed to
2291     be bound to accept-line).
2292
2293 3.  New Features in Bash
2294
2295 a.  The `>&word' redirection now works in POSIX mode as it does by default,
2296     since POSIX.2 leaves it unspecified.
2297
2298 ------------------------------------------------------------------------------
2299 This document details the changes between this version, bash-2.05-beta2,
2300 and the previous version, bash-2.05-beta1.
2301
2302 1.  Changes to Bash
2303
2304 a.  Fixed a bug in the arithmetic evaluation code so that a^=b is supported.
2305
2306 b.  Fixed startup so posixly_correct is retained across subshells begun to
2307     execute scripts without a leading `#!'.
2308
2309 c.  Fixed a bug that caused $(< file) to not work in a (...) subshell.
2310
2311 d.  Added config support for Linux running on the IBM S390.
2312
2313 e.  Fixed a bug that caused bash to get its input pointer out of sync when
2314     reading commands through a pipe and running a command with standard
2315     input redirected from a file.
2316
2317 f.  Made a change so that command completion now makes about half as many
2318     stat(2) calls when searching the $PATH.
2319
2320 g.  Fixed a bug that caused variable assignments preceding `return' to not
2321     be propagated to the shell environment in POSIX mode.
2322
2323 h.  Fixed a bug with ${parameter[:]?word} -- tilde expansion was not performed
2324     on `word'.
2325
2326 i.  In POSIX mode, `break' and `continue' do not complain and return success
2327     if called when the shell is not executing a loop.
2328
2329 j.  Fixed `bash -o posix' to work the same as `bash --posix'.
2330
2331 k.  Fixed a bug where variable assignments preceding `eval' or `source/.'
2332     would not show up in the environment exported to subshells run by the
2333     commands.
2334
2335 l.  In POSIX mode, shells started to execute command substitutions inherit
2336     the value of the `-e' option from their parent shell.
2337
2338 m.  In POSIX mode, aliases are expanded even in non-interactive shells.
2339
2340 n.  Changed some of the job control messages to display the text required by
2341     POSIX.2 when the shell is in POSIX mode.
2342
2343 o.  Fixed a bug in `test' that caused it to occasionally return incorrect
2344     results when non-numeric arguments were supplied to `-t'.
2345
2346 2.  Changes to Readline
2347
2348 a.  Some changes were made to avoid gcc warnings with -Wall.
2349
2350 b.  rl_get_keymap_by_name now finds keymaps case-insensitively, so
2351     `set keymap EMACS' works.
2352
2353 c.  The history file writing and truncation functions now return a useful
2354     status on error.
2355
2356 d.  Fixed a bug that could cause applications to dereference a NULL pointer
2357     if a NULL second argument was passed to history_expand().
2358
2359 3.  New Features in Bash
2360
2361 a.  doc/readline.3 has been moved to the readline distribution.
2362
2363 4.  New Features in Readline
2364
2365 a.  New function, rl_get_screen_size (int *rows, int *columns), returns
2366     readline's idea of the screen dimensions.
2367
2368 b.  The timeout in rl_gather_tyi (readline keyboard input polling function)
2369     is now settable via a function (rl_set_keyboard_input_timeout()).
2370
2371 c.  Renamed the max_input_history variable to history_max_entries; the old
2372     variable is maintained for backwards compatibility.
2373
2374 d.  The list of characters that separate words for the history tokenizer is
2375     now settable with a variable:  history_word_delimiters.  The default
2376     value is as before.
2377
2378 ------------------------------------------------------------------------------
2379 This document details the changes between this version, bash-2.05-beta1,
2380 and the previous version, bash-2.05-alpha1.
2381
2382 1.  Changes to Bash
2383
2384 a.  Changes to allow shared library and object building on the GNU Hurd.
2385
2386 b.  Fixes to the way exported functions are placed into the environment and
2387     cached.
2388
2389 c.  The globbing library once again respects locales when processing ranges
2390     in bracket expressions while doing pattern matching.
2391
2392 d.  System-specific configuration changes for:  Tru 64, Interix
2393
2394 e.  Bashbug now uses /usr/bin/editor as one of the editing alternatives, and
2395     will use mktemp(1) or tempfile(1), if present, for temporary file creation.
2396
2397 f.  Bash no longer performs a binary file check on a script argument that's
2398     really a tty (like /dev/fd/0 or /dev/stdin).
2399
2400 g.  Fixed a bug in the execution of shell scripts that caused the effects of
2401     $BASH_ENV to be undone in some cases.
2402
2403 h.  Fixed several bugs that made `bash [-i] /dev/stdin' not work correctly.
2404
2405 i.  Several changes to the job control code to avoid some signal state
2406     manipulation.
2407
2408 j.  The Bash malloc no longer blocks signals as often, which should make it
2409     faster.
2410
2411 k.  Fixed a parsing bug that did not allow backslash to escape a single quote
2412     inside a $'...' construct.
2413
2414 l.  Fixed a bug that caused things like ${var:=$'value'} to be parsed
2415     incorrectly.  This showed up in newer versions of autoconf.
2416
2417 m.  Fixed a bug in the bash-specific readline initialization that caused
2418     key bindings to bash-specific function names appearing in .inputrc to
2419     not be honored.
2420
2421 n.  Bash now sets the file descriptor it uses to save the file descriptor
2422     opened on a shell script to close on exec.
2423
2424 o.  Fixed a bug in the prompt string decoding that caused it to misbehave
2425     when presented an octal sequence of fewer than three characters.
2426
2427 p.  Fixed the `test' builtin to return an error if `[' is supplied a single
2428     argument that is not `]'.
2429
2430 q.  Fixed a bug that caused subshells started to run executable shell scripts
2431     without a leading `#!' to incorrectly inherit an argument list preceding
2432     a shell builtin (like such a script called from a script sourced with `.',
2433     where there were variable assignments preceding the `.' command)
2434
2435 r.  Fixed a bug that caused changes to variables supplied in an assignment
2436     statement preceding a shell builtin to not be honored (like a script
2437     run with `.').
2438
2439 s.  HOSTTYPE, OSTYPE, and MACHTYPE are set only if they do not have values
2440     when the shell is started.
2441
2442 t.  Fixed a bug that caused SIGINT to kill shell scripts after the script
2443     called `wait'.
2444
2445 u.  The `fc' builtin now tries to create its temporary files in the directory
2446     named by $TMPDIR.
2447
2448 v.  Bash no longer calls any Readline functions or uses any Readline variables
2449     not declared in readline.h.
2450
2451 w.  Fixed a bug that caused some substitutions involving $@ to not be split
2452     correctly, especially expansions of the form ${paramterOPword}.
2453
2454 x.  SSH2_CLIENT is now treated like SSH_CLIENT and not auto-exported if it
2455     appears in the initial environment.
2456
2457 y.  Fixed a couple of problems with shell scripts without a leading `#!'
2458     being executed out of shell functions that could cause core dumps if
2459     such a script attempted to execute `return'.
2460
2461 z.  Fixed a problem with the `-nt' and `-ot' binary operators for the
2462     `test/[' builtin and the `[[' conditional command that caused wrong
2463     return values if one of the file arguments did not exist.
2464
2465 aa. Fixed a bug that caused non-interactive shells which had previously
2466     executed `shopt -s expand_aliases' to fail to expand aliases in a
2467     command like `(command) &'.
2468  
2469 2.  Changes to Readline
2470
2471 a.  Changes to make most (but not yet all -- there is still crlf()) of the
2472     exported readline functions declared in readline.h have an rl_ prefix.
2473
2474 b.  More `const' changes in function arguments, mostly for completion
2475     functions.
2476
2477 c.  Fixed a bug in rl_forward that could cause the point to be set to before
2478     the beginning of the line in vi mode.
2479
2480 d.  Fixed a bug in the callback read-char interface to make it work when a
2481     readline function pushes some input onto the input stream with
2482     rl_execute_next (like the incremental search functions).
2483
2484 e.  Fixed a file descriptor leak in the history file manipulation code that
2485     was tripped when attempting to truncate a non-regular file (like
2486     /dev/null).
2487
2488 f.  Some existing variables are now documented and part of the public
2489     interface (declared in readline.h):  rl_explict_arg, rl_numeric_arg,
2490     rl_editing_mode, rl_last_func.
2491
2492 g.  Renamed rltty_set_default_bindings to rl_tty_set_default_bindings and
2493     crlf to rl_crlf, so there are no public functions declared in readline.h
2494     without an `rl_' prefix.  The old functions still exist for backwards
2495     compatibility.
2496
2497 3.  New Features in Bash
2498
2499 a.  A new loadable builtin, realpath, which canonicalizes and expands symlinks
2500     in pathname arguments.
2501
2502 b.  When `set' is called without options, it prints function defintions in a
2503     way that allows them to be reused as input.  This affects `declare' and
2504     `declare -p' as well.
2505
2506 4.  New Features in Readline
2507
2508 a.  New application-callable function rl_set_prompt(const char *prompt):
2509     expands its prompt string argument and sets rl_prompt to the result.
2510
2511 b.  New application-callable function rl_set_screen_size(int rows, int cols):
2512     public method for applications to set readline's idea of the screen
2513     dimensions.
2514
2515 c.  The history example program (examples/histexamp.c) is now built as one
2516     of the examples.
2517
2518 ------------------------------------------------------------------------------
2519 This document details the changes between this version, bash-2.05-alpha1,
2520 and the previous version, bash-2.04-release.
2521
2522 1.  Changes to Bash
2523
2524 a.  A fix was made to allow newlines in compond array assignments.
2525
2526 b.  configure now checks for real-time signals with unusable values.
2527
2528 c.  Interactive shells no longer exit if a substitution fails because of an
2529     unset variable within a sourced file.
2530
2531 d.  Fixed a problem with incorrect matching of extended glob patterns when
2532     doing pattern substitution.
2533
2534 e.  `{' is now quoted by the completion code when it appears in a filename.
2535
2536 f.  Fixed an error in pattern matching that caused the matcher to not
2537     correctly skip the rest of a bracket expression after a character
2538     matched.
2539
2540 g.  Fixed a bug in the IFS word splitting code to make a non-whitespace IFS
2541     character preceded by IFS whitespace part of the current delimiter rather
2542     than generating a separate field.
2543
2544 h.  The {!prefix@} expansion now generates separate words, analogous to $@,
2545     when double-quoted.
2546
2547 i.  Command substitution now ignores NUL bytes in the command output, and the
2548     parser ignores them on input.
2549
2550 j.  A fix was made to the job control code to prevent hanging processes when
2551     the shell thinks background processes are running but the kernel returns
2552     -1/ECHILD from waitpid().
2553
2554 k.  `pwd' now prints an error message if the write fails when displaying the
2555     current directory.
2556
2557 l.  When in POSIX mode, the shell prints trap dispostions without a leading
2558     `SIG' in the signal specification.
2559
2560 m.  Fixed a parser bug that caused the current command's line count to be
2561     messed up by a compound array assignment.
2562
2563 n.  Fixed a bug in the unwind-protect code that caused bad behavior on machines
2564     where ints and pointers are not the same size.
2565
2566 o.  System-specific configure changes for:  MacOS X.
2567
2568 p.  Changes for Cygwin to translate \r\n and \r to \n and to set file
2569     descriptors used for reading input to text mode in various places.
2570
2571 q.  Fixed a bug that caused `!' to occasionally not be honored when in
2572     a (...) subshell.
2573
2574 r.  Bash no longer assumes that getcwd() will return any useful error message
2575     in the buffer passed as an argument if the call fails.
2576
2577 s.  The `source', `.', and `fc' builtins no longer check whether a file is
2578     binary before reading commands from it.
2579
2580 t.  Subshells no longer turn off job control when they exit, since that
2581     sometimes resulted in the terminal being reset to the wrong process
2582     group.
2583
2584 u.  The history code no longer tries to save the second and subsequent lines
2585     of a multi-line command if the first line was not saved.
2586
2587 v.  The history saving code now does a better job of saving blank lines in a
2588     multi-line command.
2589
2590 w.  Removed a `feature' that made `ulimit' silently translate `unlimited' to
2591     the current hard limit, which obscured some kernel error returns.
2592
2593 x.  Fixed the grammar so that `}' is recognized as a reserved word after
2594     another reserved word, rather than requiring a `;' or newline.  This
2595     means that constructs like
2596
2597         { { echo a b c ; } }
2598
2599     work as expected.
2600
2601 y.  Conditional commands ([[...]]) now perform tilde expansion on their
2602     arguments.
2603
2604 z.  Noted in the documentation that `set -a' will cause functions to be
2605     exported if they are defined after `set -a' is executed.
2606
2607 aa. When an interactive login shell starts, if $PWD and $HOME refer to the
2608     same directory but are not the same string, $PWD is set to $HOME.
2609
2610 bb. Fixed `printf' to handle invalid floating point numbers better.
2611
2612 cc. Temporary files are now created with random filenames, to improve security.
2613
2614 dd. The readline initialization code now binds the custom bash functions and
2615     key bindings after the readline defaults are set up.
2616
2617 ee. Fixed the `source' builtin to no longer overwrite a shell function's
2618     argument list, even if the sourced file changes the positional parameters.
2619
2620 ff. A bug fix was made in the expansion of `$*' in contexts where it should
2621     not be split, like assignment statements.
2622
2623 gg. Fixed a bug in the parameter substring expansion to handle conditional
2624     arithmetic expressions ( exp ? val1 : val2 ) without cutting the expression
2625     off at the wrong `:'.
2626
2627 hh. The `<>' redirection is no longer subject to the current setting of
2628     `noclobber', as POSIX.2 specifies.
2629
2630 ii. Fixed a bug in the conditional command parsing code that caused expressions
2631     in parentheses to occasionally be parsed incorrectly.
2632
2633 jj. Fixed a bug in the ((...)) arithmetic command to allow do...done or
2634     {...} to follow the )) without an intervening list terminator.
2635
2636 kk. `printf' now treats `\E' the same as `\e' when performing backslash escape
2637     expansion for the `%b' format specifier.
2638
2639 ll. When in POSIX mode, the shell no longer searches the current directory for
2640     a file to be sourced with `.' or `source' if `.' is not in $PATH.
2641
2642 mm. Interactive comments are no longer turned off when POSIX mode is disabled.
2643
2644 nn. The UID, EUID, HOSTNAME variables are not set if they are in the shell's
2645     environment when it starts up.
2646
2647 oo. Fixed a bug in the `command' builtin so the effect of a command like
2648     `command exec 4<file' is as if the `command' had been omitted.
2649
2650 pp. ${foo[@]} and ${foo[*]} now work as in ksh93 if `foo' is not an array
2651     variable.
2652
2653 qq. ${#foo[X]}, where X is 0, @, or *, now work as in ksh93 if `foo' is not
2654     an array variable.
2655
2656 rr. The shell's idea of an absolute pathname now takes into account a
2657     possible drive specification on Cygwin and other Windows systems.
2658
2659 ss. Fixed a bug which caused incorrect parsing of some multi-character
2660     constructs if they were split across input lines with backslash-newline
2661     line continuation.
2662
2663 tt. Fixed a bug that caused restricted shell mode to be set inappropriately
2664     when trying to execute a shell script without a leading `#!'.
2665
2666 uu. Shell function definitions no longer require that the body be a group
2667     command ( {...} ), as POSIX.2 requires.
2668
2669 vv. The `cd' and `pwd' builtins now process symlinks in pathnames internally
2670     and should require many fewer calls to getcwd().
2671
2672 ww. Fixed a bug that caused a pipeline's process group to be set incorrectly
2673     if one of the pipeline elements contained a command substitution.
2674
2675 xx. Fixed a bug that caused core dumps when expanding the value of HISTIGNORE.
2676
2677 yy. The output of `set' is now quoted using $'...' so invisible characters are
2678     displayed as escape sequences.
2679
2680 zz. Fixed the help text for `unset', since PATH and IFS may both be unset.
2681
2682 aaa. The shell no longer puts directory names into the command hash table.
2683
2684 bbb. Fixed a bug in `read' that caused it to occasionally free memory twice if
2685      it was interrupted after reading a large amount of data.
2686
2687 ccc. Assignment statements that attempt to assign values to readonly variables
2688      now cause the command to return an error status.
2689
2690 ddd. Fixed a bug that could cause incorrect output if a $(<file) construct was
2691      interrupted.
2692
2693 eee. GROUPS and FUNCNAME now return an error status when assignment is
2694      attempted, but may be unset (in which case they lose their special
2695      properties).  In all respects except unsetting, they are readonly.
2696
2697 fff. The string-to-integer conversion code now ignores trailing whitespace in
2698      the string, even if strtol(3) does not.
2699
2700 ggg. The tcsh magic-space function now does a better job of inserting the
2701      space close to where the point was before the history expansion, rather
2702      than just appending it.
2703
2704 hhh. Fixed a bug which caused a file sourced from an interactive shell to
2705      fill up the jobs table if it ran lots of jobs.
2706
2707 iii. Fixed a bug in the parameter pattern substitution code to avoid infinite
2708      recursion on zero-length matches.
2709
2710 2.  Changes to Readline
2711
2712 a.  When setting the terminal attributes on systems using `struct termio',
2713     readline waits for output to drain before changing the attributes.
2714
2715 b.  A fix was made to the history word tokenization code to avoid attempts to
2716     dereference a null pointer.
2717
2718 c.  Readline now defaults rl_terminal_name to $TERM if the calling application
2719     has left it unset, and tries to initialize with the resultant value.
2720
2721 d.  Instead of calling (*rl_getc_function)() directly to get input in certain
2722     places, readline now calls rl_read_key() consistently.
2723
2724 e.  Fixed a bug in the completion code that allowed a backslash to quote a
2725     single quote inside a single-quoted string.
2726
2727 f.  rl_prompt is no longer assigned directly from the argument to readline(),
2728     but uses memory allocated by readline.  This allows constant strings to
2729     be passed to readline without problems arising when the prompt processing
2730     code wants to modify the string.
2731
2732 g.  Fixed a bug that caused non-interactive history searches to return the
2733     wrong line when performing multiple searches backward for the same string.
2734
2735 h.  Many variables, function arguments, and function return values are now
2736     declared `const' where appropriate, to improve behavior when linking with
2737     C++ code.
2738
2739 i.  The control character detection code now works better on systems where
2740     `char' is unsigned by default.
2741
2742 j.  The vi-mode numeric argument is now capped at 999999, just like emacs mode.
2743
2744 k.  The Function, CPFunction, CPPFunction, and VFunction typedefs have been
2745     replaced with a set of specific prototyped typedefs, though they are
2746     still in the readline header files for backwards compatibility.
2747
2748 m.  Nearly all of the (undocumented) internal global variables in the library
2749     now have an _rl_ prefix -- there were a number that did not, like
2750     screenheight, screenwidth, alphabetic, etc.
2751
2752 n.  The ding() convenience function has been renamed to rl_ding(), though the
2753     old function is still defined for backwards compatibility.
2754
2755 o.  The completion convenience functions filename_completion_function,
2756     username_completion_function, and completion_matches now have an rl_
2757     prefix, though the old names are still defined for backwards compatibility.
2758
2759 p.  The functions shared by readline and bash (linkage is satisfied from bash
2760     when compiling with bash, and internally otherwise) now have an sh_ prefix.
2761
2762 q.  Changed the shared library creation procedure on Linux and BSD/OS 4.x so
2763     that the `soname' contains only the major version number rather than the
2764     major and minor numbers.
2765
2766 r.  Fixed a redisplay bug that occurred when the prompt spanned more than one
2767     physical line and contained invisible characters.
2768
2769 3.  New Features in Bash
2770
2771 a.  Added a new `--init-file' invocation argument as a synonym for `--rcfile',
2772     per the new GNU coding standards.
2773
2774 b.  The /dev/tcp and /dev/udp redirections now accept service names as well as
2775     port numbers.
2776
2777 c.  `complete' and `compgen' now take a `-o value' option, which controls some
2778     of the aspects of that compspec.  Valid values are:
2779
2780         default - perform bash default completion if programmable
2781                   completion produces no matches
2782         dirnames - perform directory name completion if programmable
2783                    completion produces no matches
2784         filenames - tell readline that the compspec produces filenames,
2785                     so it can do things like append slashes to
2786                     directory names and suppress trailing spaces
2787
2788 4.  New Features in Readline
2789
2790 a.  The blink timeout for paren matching is now settable by applications.
2791
2792 b.  _rl_executing_macro has been renamed to rl_executing_macro, which means
2793     it's now part of the public interface.
2794
2795 c.  Readline has a new variable, rl_readline_state, which is a bitmap that
2796     encapsulates the current state of the library; intended for use by
2797     callbacks and hook functions.
2798
2799 ------------------------------------------------------------------------------
2800 This document details the changes between this version, bash-2.04-release,
2801 and the previous version, bash-2.04-beta5.
2802
2803 1.  Changes to Bash
2804
2805 a.  Better compile-time and configure-time checks for the necessity of
2806     inet_aton().
2807
2808 b.  A bug was fixed in the expansion of "${@:-}" when there are positional
2809     parameters.
2810
2811 c.  A typo was fixed in the output of `complete'.
2812
2813 d.  The matches generated for a word by the `-W' argument to complete and
2814     compgen are now matched against the word being completed, and only
2815     matches are returned as the result.
2816
2817 e.  Some fixes were made for systems which do not restart read(2) when a
2818     signal caught by bash is received.
2819
2820 f.  A bug was fixed which caused the umask to be set to 0 when an invalid
2821     symbolic mode mask was parsed.
2822
2823 g.  Fixed a bug that could cause a core dump if a SIGCHLD was received while
2824     performing an assignment statement using command substitution.
2825
2826 h.  Changed the word splitting function for programmable completion so cases
2827     in which the cursor is between words are handled a bit better.
2828
2829 2.  Changes to Readline
2830
2831 a.  rl_funmap_names() is now documented.
2832
2833 3.  New Features in Bash
2834
2835 a.  The LC_NUMERIC variable is now treated specially, and used to set the
2836     LC_NUMERIC locale category for number formatting, e.g., when `printf'
2837     displays floating-point numbers.
2838
2839 ------------------------------------------------------------------------------
2840 This document details the changes between this version, bash-2.04-beta5,
2841 and the previous version, bash-2.04-beta4.
2842
2843 1.  Changes to Bash
2844
2845 a.  A couple of changes were made to the Makefiles for easier building on
2846     non-Unix systems.
2847
2848 b.  Fixed a bug where the current prompt would be set to $PS2 at startup.
2849
2850 c.  The shell script that tests an already-installed version was changed to
2851     remove the directory it created its test programs in at exit.
2852
2853 d.  Several changes were made to the code that tokenizes an input line for
2854     the programmable completion code.  Shell metacharacters will now appear
2855     as individual words in the word list passed to the completion functions.
2856     Some of the example completion shell functions were changed to understand
2857     redirection operators.
2858
2859 e.  A bug was fixed that, under obscure circumstances, could confuse the
2860     parser when a shell function was run by the programmable completion code.
2861
2862 f.  A bug was fixed in the ulimit builtin for systems not using getrlimit().
2863
2864 g.  The execution code now propagates the correct exit status back to the rest
2865     of the code if the return value of a subshell command was being inverted.
2866     Some new test cases for inverting return values with the `!' reserved
2867     word have been added.
2868
2869 h.  Negative exponents in the arithmetic evaluation of v**e now return an
2870     evaluation error.
2871
2872 i.  A bug that caused bash to check the wrong process in a pipeline for
2873     abnormal termination (and consequently resetting the terminal attributes)
2874     was fixed.
2875
2876 j.  Fixed a bug that caused $PS2 to be displayed after PROMPT_COMMAND was
2877     executed.
2878
2879 2.  Changes to Readline
2880
2881 1.  Fixed a bug in a C preprocessor define that caused the keypad control
2882     functions to be compiled out for all platforms except DJGPP.
2883
2884 ------------------------------------------------------------------------------
2885 This document details the changes between this version, bash-2.04-beta4,
2886 and the previous version, bash-2.04-beta3.
2887
2888 1.  Changes to Bash
2889
2890 a.  A couple of changes were made to the redirection to attempt to avoid
2891     race conditions and malicious file replacement.
2892
2893 2.  A change was made to the string evaluation code (used for command 
2894     substitution, `eval', and the `.' builtin) to fix an obscure core
2895     dump on alpha machines.
2896
2897 3.  A bug that caused $LINENO to be wrong when executing arithmetic for
2898     commands was fixed.
2899
2900 4.  A couple of memory leaks in the programmable completion code were fixed.
2901
2902 5.  A bug that could cause a core dump by freeing memory twice during a call
2903     to `eval' if `set -u' had been enabled and an undefined variable was
2904     referenced was fixed.
2905
2906 ------------------------------------------------------------------------------
2907 This document details the changes between this version, bash-2.04-beta3,
2908 and the previous version, bash-2.04-beta2.
2909
2910 1.  Changes to Bash
2911
2912 a.  Bash should run the appropriate startup files when invoked by ssh2.
2913
2914 b.  Fixed a bug in the parsing of conditional commands that could cause a
2915     core dump.
2916
2917 c.  Fixed a bug in parsing job specifications that occasionally caused
2918     core dumps when an out-of-range job was referenced.
2919
2920 d.  Fixed the `type' and `command' builtins to do better reporting of
2921     commands that are not found in $PATH or the hash table.
2922
2923 e.  Fixed a POSIX.2 compliance problem in the command builtin -- commands
2924     are supposed to be reported as full pathnames.
2925
2926 f.  The `echo' builtin now returns failure if a write error occurs.
2927
2928 g.  Fixed a bug which caused the locale to not be reset correctly when
2929     LC_ALL was unset.
2930
2931 h.  Changed description of `getopts' in man page and reference manual to make
2932     it clear that option characters may be characters other than letters.
2933
2934 i.  If the shell exits while in a function, make sure that any trap on EXIT
2935     doesn't think the function is still executing.
2936
2937 j.  Bashbug now tries harder to find a usable editor if $EDITOR is not set,
2938     rather than simply defaulting to `emacs'.
2939
2940 k.  Changes to the scripts that guess and canonicalize the system type, from
2941     the latest `automake' distribution via Debian.
2942
2943 l.  When using named pipes for process substitution, make sure the file
2944     descriptors opened for reading are set to non-blocking mode.
2945
2946 m.  Fixed a bug that caused termination of pipelines that are killed by a
2947     signal to not be reported in some cases.
2948
2949 n.  When not in literal-history mode, shell comment lines are not added to
2950     the history list.
2951
2952 o.  When running in POSIX.2 mode, bash no longer performs word splitting on
2953     the expanded value of the word supplied as the filename argument to
2954     redirection operators.
2955
2956 p.  The prompt string decoding code now backslash-quotes only characters that
2957     are special within double quotes when expanding the \w and \W escape
2958     sequences.
2959
2960 q.  Fixed a bug in the prompt decoding code that could cause a non-interactive
2961     shell to seg fault if `\u' was used in PS4 and the shell was in xtrace
2962     mode.
2963
2964 r.  Fixed a bug that caused function definitions to be printed with any
2965     redirections that should be attached to the entire function before the
2966     closing brace.
2967
2968 s.  Changed the tilde expansion code for Cygwin systems to avoid creating
2969     pathnames beginning with `//' if $HOME == `/'.
2970
2971 t.  Fixed a couple of autoconf tests to avoid creating files with fixed names
2972     in /tmp.
2973
2974 u.  The `trap' and `kill' builtins now know the names of the POSIX.1b real-
2975     time signals on systems which support them.
2976
2977 2.  Changes to Readline
2978
2979 a.  Fixed a problem with the single-quote quoting function that could cause
2980     buffer overflows.
2981
2982 b.  Fixed a bug that caused incorrect `stat characters' to be printed if
2983     the files being completed were in the root directory and visible-stats
2984     was enabled.
2985
2986 3.  New Features in Bash
2987
2988 a.  There is a new `rbash.1' manual page, from the Debian release.
2989
2990 b.  The `--enable-usg-echo-default' option to `configure' has been renamed to
2991     `--enable-xpg-echo-default'.  The old option is still there for backwards
2992     compatibility.
2993
2994 ------------------------------------------------------------------------------
2995 This document details the changes between this version, bash-2.04-beta2,
2996 and the previous version, bash-2.04-beta1.
2997
2998 1.  Changes to Bash
2999
3000 a.  Fixed a bug that could cause pipes to be closed inappropriately in
3001     some obscure cases.
3002
3003 b.  Fixed a bug that caused creation of the exported environment to clobber
3004     the current command string if there were any exported shell functions.
3005
3006 c.  Some changes were made to reduce bash's memory usage.
3007
3008 d.  Fixed a problem with programmable completion and filenames to be
3009     completed containing quote characters.
3010
3011 e.  Changed the code the removes named pipes created for the <(...) and >(...)
3012     expansions to defer removal until after any current shell function has
3013     finished executing.
3014
3015 f.  Fixed a bug in `select' which caused it to not handle the `continue'
3016     builtin correctly.
3017
3018 g.  Autoconf tests added for cygwin32 and mingw32.
3019
3020 2.  New Features in Bash
3021
3022 a.  The `--with-bash-malloc' configure option replaces `--with-gnu-malloc'
3023     (which is still there for backwards compatibility).
3024
3025 ------------------------------------------------------------------------------
3026 This document details the changes between this version, bash-2.04-beta1,
3027 and the previous version, bash-2.04-alpha1.
3028
3029 1.  Changes to Bash
3030
3031 a.  Fixed a bug in the programmable completion code that occurred when
3032     trying to complete command lines containing a `;' or `@'.
3033
3034 b.  The file descriptor from which the shell is reading a script is now
3035     moved to a file descriptor above the user-addressible range.
3036
3037 c.  Changes to `printf' so that it can handle integers beginning with 0
3038     or 0x as octal and hex, respectively.
3039
3040 d.  Fixes to the programmable completion code so it handles nonsense like
3041     `compgen -C xyz' gracefully.
3042
3043 e.  The shell no longer modifies the signal handler for SIGPROF, allowing
3044     profiling again on certain systems.
3045
3046 f.  The shell checks for a new window size, if the user has requested it,
3047     after a process exits due to a signal.
3048
3049 g.  Fixed a bug with variables with null values in a program's temporary
3050     environment and the bash getenv() replacement.
3051
3052 h.  `declare' and the other builtins that take variable assignments as
3053     arguments now honor `set -a' and mark modified variables for export.
3054
3055 i.  Some changes were made for --dump-po-strings mode when writing strings
3056     with embedded newlines.
3057
3058 j.  The code that caches export strings from the initial environment now
3059     duplicates the string rather than just pointing into the environment.
3060
3061 k.  The filename completion quoting code now uses single quotes by default
3062     if the filename being completed contains newlines, since \<newline>
3063     has a special meaning to the parser.
3064
3065 l.  Bash now uses typedefs bits32_t and u_bits32_t instead of int32_t and
3066     u_int32_t, respectively to avoid conflicts on certain Unix versions.
3067
3068 m.  Configuration changes were made for: Rhapsody, Mac OS, FreeBSD-3.x.
3069
3070 n.  Fixed a problem with hostname-to-ip-address translation in the
3071     /dev/(tcp|udp)/hostname/port redirection code.
3072
3073 o.  The texinfo manual has been reorganized slightly.
3074
3075 p.  Filename generation (globbing) range comparisons in bracket expressions
3076     no longer use strcoll(3) even if it is available, since it has unwanted
3077     effects in certain locales.
3078
3079 q.  Fixed a cosmetic problem in the source that caused the shell to not
3080     compile if DPAREN_ARITHMETIC was not defined but ARITH_FOR_COMMAND was.
3081
3082 r.  Fixed a bug in the here-document code tripped when the file descriptor
3083     opened to the file containing the text of the here document was the
3084     same as a redirector specified by the user.
3085
3086 s.  Fixed a bug where the INVERT_RETURN flag was not being set for `pipeline'
3087     in `time ! pipeline'.
3088
3089 t.  Fixed a bug with the `wait' builtin which manifested itself when an
3090     interrupt was received while the shell was waiting for asynchronous
3091     processes in a shell script.
3092
3093 u.  Fixed the DEBUG trap code so that it has the correct value of $?.
3094
3095 v.  Fixed a bug in the parameter pattern substitution code that could cause
3096     the shell to attempt to free unallocated memory if the pattern started
3097     with `/' and an expansion error occurs.
3098
3099 w.  Fixed a bug in the positional parameter substring code that could
3100     cause the shell to loop freeing freed memory.
3101
3102 x.  Fixed a bug in the positional parameter pattern substitution code so
3103     that it correctly handles null replacement strings with a pattern
3104     string prefixed with `%' or `#'.
3105
3106 y.  The shell no longer attempts to import functions from the environment if
3107     started with `-n'.
3108
3109 z.  Fixed a bug that caused `return' in a command substitution executed in
3110     a shell function to return from the function in a subshell and continue
3111     execution.
3112
3113 aa. `hash -p /pathname/with/slashes name' is no longer allowed when the shell
3114     is restricted.
3115
3116 bb. The wait* job control functions now behave better if called when there
3117     are no unwaited-for children.
3118
3119 cc. Command substitution no longer unconditionally disables job control in
3120     the subshell started to run the command.
3121
3122 dd. A bug was fixed that occasionally caused traps to mess up the parser
3123     state.
3124
3125 ee. `bashbug' now honors user headers in the mail message it sends.
3126
3127 ff. A bug was fixed that caused the `:p' history modifier to not print the
3128     history expansion if the `histverify' option was set.
3129
3130 2.  Changes to Readline
3131
3132 a.  Fixed a bug in the redisplay code for lines with more than 256 line
3133     breaks.
3134
3135 b.  A bug was fixed which caused invisible character markers to not be
3136     stripped from the prompt string if the terminal was in no-echo mode.
3137
3138 c.  Readline no longer tries to get the variables it needs for redisplay
3139     from the termcap entry if the calling application has specified its
3140     own redisplay function.  Readline treats the terminal as `dumb' in
3141     this case.
3142
3143 d.  Fixes to the SIGWINCH code so that a multiple-line prompt with escape
3144     sequences is redrawn correctly.
3145
3146 3.  New Features in Bash
3147
3148 a.  `bashbug' now accepts `--help' and `--version' options.
3149
3150 b.  There is a new `xpg_echo' option to `shopt' that controls the behavior
3151     of echo with respect to backslash-escaped characters at runtime.
3152
3153 ------------------------------------------------------------------------------
3154 This document details the changes between this version, bash-2.04-alpha1,
3155 and the previous version, bash-2.04-devel.
3156
3157 1.  Changes to Bash
3158
3159 a.  Fixed a bug that could cause core dumps when performing substring
3160     expansion.
3161
3162 b.  Shared object configuration changes for:  Solaris, OSF/1
3163
3164 c.  The POSIX_GLOB_LIBRARY code that uses the POSIX.2 globbing facilities
3165     for pathname expansion now understands GLOBIGNORE.
3166
3167 d.  The code that implements `eval' was changed to save the value of the
3168     current prompt, so an eval in a shell function called by the programmable
3169     completion code will not change the prompt to $PS2.
3170
3171 e.  Restored the undocumented NON_INTERACTIVE_LOGIN_SHELLS #define to
3172     config-top.h.  If this is defined, all login shells will read the
3173     startup files, not just interactive and non-interactive started with
3174     the `--login' option.
3175
3176 f.  Fixed a bug that caused the expansion code to occasionally dump core if
3177     IFS contained characters > 128.
3178
3179 g.  Fixed a problem with the grammar so that a newline is not required
3180     after the `))' in the new-style arithmetic for statement; a semicolon
3181     may be used as expected.
3182
3183 h.  Variable indirection may now reference the shell's special variables.
3184
3185 i.  The $'...' and $"..." constructs are now added to the history correctly
3186     if they contain newlines and command-oriented history is enabled.
3187
3188 j.  It is now an error to try to assign a value to a function-local copy
3189     of a readonly shell variable (declared with the `local' builtin).
3190
3191 2.  Changes to Readline
3192
3193 a.  The history file code now uses O_BINARY mode when reading and writing
3194     the history file on cygwin32.
3195
3196 3.  New Features in Bash
3197
3198 a.  A new programmable completion facility, with two new builtin commands:
3199     complete and compgen.
3200
3201 b.  configure has a new option, `--enable-progcomp', to compile in the
3202     programmable completion features (enabled by default).
3203
3204 c.  `shopt' has a new option, `progcomp', to enable and disable programmable
3205     completion at runtime.
3206
3207 d.  Unsetting HOSTFILE now clears the list of hostnames used for completion.
3208
3209 4.  New Features in Readline
3210
3211 a.  A new variable, rl_gnu_readline_p, always 1.  The intent is that an
3212     application can verify whether or not it is linked with the `real'
3213     readline library or some substitute.
3214
3215 ------------------------------------------------------------------------------
3216 This document details the changes between this version, bash-2.04-devel,
3217 and the previous version, bash-2.03-release.
3218
3219 1.  Changes to Bash
3220
3221 a.  System-specific configuration and source changes for:  Interix, Rhapsody
3222
3223 b.  Fixed a bug in execute_cmd.c that resulted in a compile-time error if
3224     JOB_CONTROL was not defined.
3225
3226 c.  An obscure race condition in the trap code was fixed.
3227
3228 d.  The string resulting from $'...' is now requoted to avoid any further
3229     expansion.
3230
3231 e.  The $'...' quoting syntax now allows backslash to escape a single quote,
3232     for ksh-93 compatibility.
3233
3234 f.  The $"..." quoting syntax now escapes backslashes and double quotes in
3235     the translated string when displaying them with the --dump-po-strings
3236     option.
3237
3238 g.  `echo -e' no longer converts \' to '.
3239
3240 h.  Fixes were made to the extended globbing code to handle embedded (...)
3241     patterns better.
3242
3243 i.  Some improvements were made to the code that unsets `nodelay' mode on
3244     the file descriptor from which bash is reading input.
3245
3246 j.  Some changes were made to the replacement termcap library for better
3247     operation on MS-DOS.
3248
3249 k.  Some changes were made to the tilde expansion code to handle backslash
3250     as a pathname separator on MS-DOS.
3251
3252 l.  The source has been reorganized a little bit -- there is now an `include'
3253     subdirectory, and lib/posixheaders has been removed.
3254
3255 m.  Improvements were made to the `read' builtin so that it makes many
3256     fewer read(2) system calls.
3257
3258 n.  The expansion of $- will include `c' and `s' when those options are
3259     supplied at shell invocation.
3260
3261 o.  Several improvments were made to the completion code:  variable completion
3262     now works better when there are unterminated expansions, command
3263     completion understands quotes better, and completion now works in certain
3264     unclosed $(... constructs.
3265
3266 p.  The arithmetic expansion code was fixed to not need the value of a
3267     variable being assigned a value (fixes the "ss=09; let ss=10" bug).
3268
3269 q.  Some changes were made to make exported environment creation faster.
3270
3271 r.  The html documentation will be installed into $(htmldir) if that variable
3272     has a value when `make install' is run.
3273
3274 s.  Fixed a bug that would cause the bashrc file to be sourced inappropriately
3275     when bash is started by sshd.
3276
3277 t.  The SSH_CLIENT environment variable is no longer auto-exported.
3278
3279 u.  A bug that caused redirections with (...) subshells to be performed in
3280     the wrong order was fixed.
3281
3282 v.  A bug that occasionally caused inappropriate expansion of assignment
3283     statements in compound array assignments was fixed.
3284
3285 w.  The code that parses the words in a compound array assignment was
3286     simplified considerably and should work better now.
3287
3288 x.  Fixes to the non-job-control code in nojobs.c to make it POSIX.2-compliant
3289     when a user attempts to retrieve the status of a terminated background
3290     process.
3291
3292 y.  Fixes to the `printf' builtin so that it doesn't try to expand all
3293     backslash escape sequences in the format string before parsing it for
3294     % format specifiers.
3295
3296 2.  Changes to Readline
3297
3298 a.  The history library tries to truncate the history file only if it is a
3299     regular file.
3300
3301 b.  A bug that caused _rl_dispatch to address negative array indices on
3302     systems with signed chars was fixed.
3303
3304 c.  rl-yank-nth-arg now leaves the history position the same as when it was
3305     called.
3306
3307 d.  Changes to the completion code to handle MS-DOS drive-letter:pathname
3308     filenames.
3309
3310 e.  Completion is now case-insensitive by default on MS-DOS.
3311
3312 f.  Fixes to the history file manipulation code for MS-DOS.
3313
3314 g.  Readline attempts to bind the arrow keys to appropriate defaults on MS-DOS.
3315
3316 h.  Some fixes were made to the redisplay code for better operation on MS-DOS.
3317
3318 i.  The quoted-insert code will now insert tty special chars like ^C.
3319
3320 j.  A bug was fixed that caused the display code to reference memory before
3321     the start of the prompt string.
3322
3323 k.  More support for __EMX__ (OS/2).
3324
3325 l.  A bug was fixed in readline's signal handling that could cause infinite
3326     recursion in signal handlers.
3327
3328 m.  A bug was fixed that caused the point to be less than zero when rl_forward
3329     was given a very large numeric argument.
3330
3331 n.  The vi-mode code now gets characters via the application-settable value
3332     of rl_getc_function rather than calling rl_getc directly.
3333
3334 3.  New Features in Bash
3335
3336 a.  The history builtin has a `-d offset' option to delete the history entry
3337     at position `offset'.
3338
3339 b.  The prompt expansion code has two new escape sequences: \j, the number of
3340     active jobs; and \l, the basename of the shell's tty device name.
3341
3342 c.  The `bind' builtin has a new `-x' option to bind key sequences to shell
3343     commands.
3344
3345 d.  There is a new shell option, no_empty_command_completion, which, when
3346     enabled, disables command completion when TAB is typed on an empty line.
3347
3348 e.  The `help' builtin has a `-s' option to just print a builtin's usage
3349     synopsys.
3350
3351 f.  There are several new arithmetic operators:  id++, id-- (variable
3352     post-increment/decrement), ++id, --id (variabl pre-increment/decrement),
3353     expr1 , expr2 (comma operator).
3354
3355 g.  There is a new ksh-93 style arithmetic for command:
3356         for ((expr1 ; expr2; expr3 )); do list; done
3357
3358 h.  The `read' builtin has a number of new options:
3359         -t timeout      only wait timeout seconds for input
3360         -n nchars       only read nchars from input instead of a full line
3361         -d delim        read until delim rather than newline
3362         -s              don't echo input chars as they are read
3363
3364 i.  The redirection code now handles several filenames specially:
3365     /dev/fd/N, /dev/stdin, /dev/stdout, and /dev/stderr, whether or
3366     not they are present in the file system.
3367
3368 j.  The redirection code now recognizes pathnames of the form
3369     /dev/tcp/host/port and /dev/udp/host/port, and tries to open a socket
3370     of the appropriate type to the specified port on the specified host.
3371
3372 k.  The ksh-93 ${!prefix*} expansion, which expands to the names of all
3373     shell variables whose names start with prefix, has been implemented.
3374
3375 l.  There is a new dynamic variable, FUNCNAME, which expands to the name of
3376     a currently-executing function.  Assignments to FUNCNAME have no effect.
3377
3378 m.  The GROUPS variable is no longer readonly; assignments to it are silently
3379     discarded.  This means it can be unset.
3380
3381 4.  New Features in Readline
3382
3383 a.  Parentheses matching is now always compiled into readline, and enabled
3384     or disabled when the value of the `blink-matching-paren' variable is
3385     changed.
3386
3387 b.  MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename.
3388
3389 c.  MS-DOS systems now use ~/_history as the default history file.
3390
3391 d.  history-search-{forward,backward} now leave the point at the end of the
3392     line when the string to search for is empty, like
3393     {reverse,forward}-search-history.
3394
3395 e.  history-search-{forward,backward} now leave the last history line found
3396     in the readline buffer if the second or subsequent search fails.
3397
3398 f.  New function for use by applications:  rl_on_new_line_with_prompt, used
3399     when an application displays the prompt itself before calling readline().
3400
3401 g.  New variable for use by applications:  rl_already_prompted.  An application
3402     that displays the prompt itself before calling readline() must set this to
3403     a non-zero value.
3404
3405 ------------------------------------------------------------------------------
3406 This document details the changes between this version, bash-2.03-release,
3407 and the previous version, bash-2.03-beta2.
3408
3409 1.  Changes to Bash
3410
3411 a.  A file descriptor leak in the `fc' builtin was fixed.
3412
3413 b.  A bug was fixed in the `read' builtin that caused occasional spurious
3414     failures when using `read -e'.
3415
3416 c.  The version code needed to use the value of the cpp variable
3417     CONF_MACHTYPE rather than MACHTYPE.
3418
3419 d.  A new test was added to exercise the command printing and copying code.
3420
3421 e.  A bug was fixed that caused `time' to be recognized as a reserved word
3422     if it was the first pattern in a `case' statement pattern list.
3423
3424 ------------------------------------------------------------------------------
3425 This document details the changes between this version, bash-2.03-beta2,
3426 and the previous version, bash-2.03-beta1.
3427
3428 1.  Changes to Bash
3429
3430 a.  Slight additions to support/shobj-conf, mostly for the benefit of AIX 4.2.
3431
3432 b.  config.{guess,sub} support added for the NEC SX4.
3433
3434 c.  Changed some of the cross-compiling sections of the configure macros in
3435     aclocal.m4 so that configure won't abort.
3436
3437 d.  Slight changes to how the HTML versions of the bash and readline manuals
3438     are generated.
3439
3440 e.  Fixed conditional command printing to avoid interpreting printf `%'-escapes
3441     in arguments to [[.
3442
3443 f.  Don't include the bash malloc on all variants of the alpha processor.
3444
3445 g.  Changes to configure to make --enable-profiling work on Solaris 2.x.
3446
3447 h.  Fixed a bug that manifested itself when shell functions were called
3448     between calls to `getopts'.
3449
3450 i.  Fixed pattern substitution so that a bare `#'as a pattern causes the
3451     replacement string to be prefixed to the search string, and a bare
3452     `%' causes the replacement string to be appended to the search string.
3453
3454 j.  Fixed a bug in the command execution code that caused child processes
3455     to occasionally have the wrong value for $!.
3456
3457 2.  Changes to Readline
3458
3459 a.  Added code to the history library to catch history substitutions using
3460     `&' without a previous history substitution or search having been
3461     performed.
3462
3463 3.  New Features in Bash
3464
3465 4.  New Features in Readline
3466
3467 a.  New bindable variable: `isearch-terminators'.
3468
3469 b.  New bindable function: `forward-backward-delete-char' (unbound by default).
3470
3471 ------------------------------------------------------------------------------
3472 This document details the changes between this version, bash-2.03-beta1,
3473 and the previous version, bash-2.03-alpha.
3474     
3475 1.  Changes to Bash
3476
3477 a.  A change was made to the help text for `{...}' to make it clear that a
3478     semicolon is required before the closing brace.
3479
3480 b.  A fix was made to the `test' builtin so that syntax errors cause test
3481     to return an exit status > 1.
3482
3483 c.  Globbing is no longer performed on assignment statements that appear as
3484     arguments to `assignment builtins' such as `export'.
3485
3486 d.  System-specific configuration changes were made for:  Rhapsody,
3487     AIX 4.2/gcc, BSD/OS 4.0.
3488
3489 e.  New loadable builtins: ln, unlink.
3490
3491 f.  Some fixes were made to the globbing code to handle extended glob patterns
3492     which immediately follow a `*'.
3493
3494 g.  A fix was made to the command printing code to ensure that redirections
3495     following compound commands have a space separating them from the rest
3496     of the command.
3497
3498 h.  The pathname canonicalization code was changed to produce fewer leading
3499     `//' sequences, since those are interpreted as network file system
3500     pathnames on some systems.
3501
3502 i.  A fix was made so that loops containing `eval' commands in commands passed
3503     to `bash -c' would not exit prematurely.
3504
3505 j.  Some changes were made to the job reaping code when the shell is not
3506     interactive, so the shell will retain exit statuses longer for examination
3507     by `wait'.
3508
3509 k.  A fix was made so that `jobs | command' works again.
3510
3511 l.  The erroneous compound array assignment var=((...)) is now a syntax error.
3512
3513 m.  A change was made to the dynamic loading code in `enable' to support
3514     Tenon's MachTen.
3515
3516 n.  A fix was made to the globbing code so that extended globbing patterns
3517     will correctly match `.' in a bracket expression.
3518
3519 2.  Changes to Readline
3520
3521 a.  A fix was made to the completion code in which a typo caused the wrong
3522     value to be passed to the function that computed the longest common
3523     prefix of the list of matches.
3524
3525 b.  The completion code now checks the value of rl_filename_completion_desired,
3526     which is set by application-supplied completion functions to indicate
3527     that filename completion is being performed, to decide whether or not to
3528     call an application-supplied `ignore completions' function.
3529
3530 3.  New Features in Bash
3531
3532 a.  A change was made to the startup file code so that any shell begun with
3533     the `--login' option, even non-interactive shells, will source the login
3534     shell startup files.
3535
3536 4.  New Features in Readline
3537
3538 a.  A new variable, rl_erase_empty_line, which, if set by an application using
3539     readline, will cause readline to erase, prompt and all, lines on which the
3540     only thing typed was a newline.
3541
3542 ------------------------------------------------------------------------------
3543 This document details the changes between this version, bash-2.03-alpha,
3544 and the previous version, bash-2.02.1-release.
3545
3546 1.  Changes to Bash
3547
3548 a.  System-specific configuration changes were made for: Irix 6.x, Unixware 7.
3549
3550 b.  The texi2dvi and texi2html scripts were updated to the latest versions
3551     from the net.
3552
3553 c.  The configure tests that determine which native type is 32 bits were
3554     changed to not require a compiled program.
3555
3556 d.  Fixed a bug in shell_execve that could cause memory to be freed twice
3557     after a failed exec.
3558
3559 e.  The `printf' test uses `diff -a' if it's available to prevent confusion
3560     due to the non-ascii output.
3561
3562 f.  Shared object configuration is now performed by a shell script,
3563     support/shobj-conf, which generates values to be substituted into
3564     makefiles by configure.
3565
3566 g.  Some changes were made to `ulimit' to avoid the use of RLIM_INVALID as a
3567     return value.
3568
3569 h.  Changes were made to `ulimit' to work around HPUX 9.x's peculiar
3570     handling of RLIMIT_FILESIZE.
3571
3572 i.  Some new loadable builtins were added: id, printenv, sync, whoami, push,
3573     mkdir.  `pushd', `popd', and `dirs' can now be built as regular or
3574     loadable builtins from the same source file.
3575
3576 j.  Changes were made to `printf' to handle NUL bytes in the expanded format
3577     string.
3578
3579 k.  The various `make clean' Makefile targets now descend into lib/sh.
3580
3581 l.  The `type' builtin was changed to use the internal `getopt' so that things
3582     like `type -ap' work as expected.
3583
3584 m.  There is a new configuration option, --with-installed-readline, to link
3585     bash with a locally-installed version of readline.  Only readline version
3586     4.0 and later releases can support this.  Shared and static libraries
3587     are supported.  The installed include files are used.
3588
3589 n.  There is a new autoconf macro used to find which basic type is 64 bits.
3590
3591 o.  Dynamic linking and loadable builtins should now work on SCO 3.2v5*,
3592     AIX 4.2 with gcc, Unixware 7, and many other systems using gcc, where
3593     the `-shared' options works correctly.
3594
3595 p.  A bug was fixed in the bash filename completion code that caused memory to
3596     be freed twice if a directory name containing an unset variable was
3597     completed and the -u option was set.
3598
3599 q.  The prompt expansion code now quotes the `$' in the `\$' expansion so it
3600     is not processed by subsequent parameter expansion.
3601
3602 r.  Fixed a parsing bug that caused a single or double quote after a `$$' to
3603     trigger ANSI C expansion or locale translation.
3604
3605 s.  Fixed a bug in the globbing code that caused quoted filenames containing
3606     no globbing characters to sometimes be incorrectly expanded.
3607
3608 t.  Changes to the default prompt strings if prompt string decoding is not
3609     compiled into the shell.
3610
3611 u.  Added `do', `then', `else', `{', and `(' to the list of keywords that may
3612     precede the `time' reserved word.
3613
3614 v.  The shell may now be cross-built for BeOS as well as cygwin32.
3615
3616 w.  The conditional command execution code now treats `=' the same as `=='
3617     for deciding when to perform pattern matching.
3618
3619 x.  The `-e' option no longer causes the shell to exit if a command exits
3620     with a non-zero status while running the startup files.
3621
3622 y.  The `printf' builtin no longer dumps core if a modifier is supplied in
3623     the format string without a conversion character (e.g. `%h').
3624
3625 z.  Array assignments of the form a=(...) no longer show up in the history
3626     list.
3627
3628 aa. The parser was fixed to obey the POSIX.2 rules for finding the closing
3629     `}' in a ${...} expression.
3630
3631 bb. The history file is now opened with mode 0600 rather than 0666, so bash
3632     no longer relies on the user's umask being set appropriately.
3633
3634 cc. Setting LANG no longer causes LC_ALL to be assigned a value; bash now
3635     relies on proper behavior from the C library.
3636
3637 dd. Minor changes were made to allow quoted variable expansions using
3638     ${...} to be completed correctly if there is no closing `"'.
3639
3640 ee. Changes were made to builtins/Makefile.in so that configuring the shell
3641     with `--enable-profiling' works right and builtins/mkbuiltins is
3642     generated.
3643
3644 2.  Changes to Readline
3645
3646 a.  The version number is now 4.0.
3647
3648 b.  There is no longer any #ifdef SHELL code in the source files.
3649
3650 c.  Some changes were made to the key binding code to fix memory leaks and
3651     better support Win32 systems.
3652
3653 d.  Fixed a silly typo in the paren matching code -- it's microseconds, not
3654     milliseconds.
3655
3656 e.  The readline library should be compilable by C++ compilers.
3657
3658 f.  The readline.h public header file now includes function prototypes for
3659     all readline functions, and some changes were made to fix errors in the
3660     source files uncovered by the use of prototypes.
3661
3662 g.  The maximum numeric argument is now clamped at 1000000.
3663
3664 h.  Fixes to rl_yank_last_arg to make it behave better.
3665
3666 i.  Fixed a bug in the display code that caused core dumps if the prompt
3667     string length exceeded 1024 characters.
3668
3669 j.  The menu completion code was fixed to properly insert a single completion
3670     if there is only one match.
3671
3672 k.  A bug was fixed that caused the display code to improperly display tabs
3673     after newlines.
3674
3675 3.  New Features in Bash
3676
3677 a.  New `shopt' option, `restricted_shell', indicating whether or not the
3678     shell was started in restricted mode, for use in startup files.
3679
3680 b.  Filename generation is now performed on the words between ( and ) in
3681     array assignments (which it probably should have done all along).
3682
3683 c.  OLDPWD is now auto-exported, as POSIX.2 seems to require.
3684
3685 d.  ENV and BASH_ENV are read-only variables in a restricted shell.
3686
3687 4.  New Features in Readline
3688
3689 a.  Many changes to the signal handling:
3690         o Readline now catches SIGQUIT and cleans up the tty before returning;
3691         o A new variable, rl_catch_signals, is available to application writers 
3692           to indicate to readline whether or not it should install its own
3693           signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP,
3694           SIGTTIN, and SIGTTOU;
3695         o A new variable, rl_catch_sigwinch, is available to application
3696           writers to indicate to readline whether or not it should install its
3697           own signal handler for SIGWINCH, which will chain to the calling
3698           applications's SIGWINCH handler, if one is installed;
3699         o There is a new function, rl_free_line_state, for application signal
3700           handlers to call to free up the state associated with the current
3701           line after receiving a signal;
3702         o There is a new function, rl_cleanup_after_signal, to clean up the
3703           display and terminal state after receiving a signal;
3704         o There is a new function, rl_reset_after_signal, to reinitialize the
3705           terminal and display state after an application signal handler
3706           returns and readline continues
3707
3708 b.  There is a new function, rl_resize_terminal, to reset readline's idea of
3709     the screen size after a SIGWINCH.
3710
3711 c.  New public functions: rl_save_prompt and rl_restore_prompt.  These were
3712     previously private functions with a `_' prefix.
3713
3714 d.  New function hook: rl_pre_input_hook, called just before readline starts
3715     reading input, after initialization.
3716
3717 e.  New function hook: rl_display_matches_hook, called when readline would
3718     display the list of completion matches.  The new function
3719     rl_display_match_list is what readline uses internally, and is available
3720     for use by application functions called via this hook.
3721
3722 f.  New bindable function, delete-char-or-list, like tcsh.
3723
3724 ------------------------------------------------------------------------------
3725 This document details the changes between this version, bash-2.02.1-release,
3726 and the previous version, bash-2.02-release.
3727
3728 1.  Changes to Bash
3729
3730 a.  A bug that caused the bash readline support to not compile unless aliases
3731     and csh-style history were configured into the shell was fixed.
3732
3733 b.  Fixed a bug that could cause a core dump when here documents contained
3734     more than 1000 characters.
3735
3736 c.  Fixed a bug that caused a CDPATH entry of "" to not be treated the same
3737     as the current directory when in POSIX mode.
3738
3739 d.  Fixed an alignment problem with the memory returned by the bash malloc,
3740     so returned memory is now 64-bit aligned.
3741
3742 e.  Fixed a bug that caused command substitutions executed within pipelines
3743     to put the terminal in the wrong process group.
3744
3745 f.  Fixes to support/config.sub for: alphas, SCO Open Server and Open Desktop,
3746     Unixware 2, and Unixware 7.
3747
3748 g.  Fixes to the pattern matching code to make it work correctly for eight-bit
3749     characters.
3750
3751 h.  Fixed a problem that occasionally caused the shell to display the wrong
3752     value for the new working directory when changing to a directory found
3753     in $CDPATH when in physical mode.
3754
3755 i.  Fixed a bug that caused core dumps when using conditional commands in
3756     shell functions.
3757
3758 j.  Fixed a bug that caused the printf builtin to loop forever if the format
3759     string did not consume any of the arguments.
3760
3761 k.  Fixed a bug in the parameter expansion code that caused "$@" to be
3762     incorrectly split if $IFS did not contain a space character.
3763
3764 l.  Fixed a bug that could cause a core dump when completing hostnames if
3765     the number of matching hostnames was an exact multiple of 16.
3766
3767 m.  Fixed a bug that caused the shell to fork too early when a command
3768     such as `%2 &' was given.
3769
3770 2.  Changes to Readline
3771
3772 a.  Fixed a problem with redisplay that showed up when the prompt string was
3773     longer than the screen width and the prompt contained invisible characters.
3774
3775 ------------------------------------------------------------------------------
3776 This document details the changes between this version, bash-2.02-release,
3777 and the previous version, bash-2.02-beta2.
3778
3779 1.  Changes to Bash
3780
3781 a.  A bug was fixed that caused the terminal process group to be set
3782     incorrectly when performing command substitution of builtins in a
3783     pipeline.
3784
3785 ------------------------------------------------------------------------------
3786 This document details the changes between this version, bash-2.02-beta2,
3787 and the previous version, bash-2.02-beta1.
3788
3789 1.  Changes to Bash
3790
3791 a.  Attempting to `wait' for stopped jobs now generates a warning message.
3792
3793 b.  Pipelines which exit due to SIGPIPE in non-interactive shells are now
3794     not reported if the shell is compiled -DDONT_REPORT_SIGPIPE.
3795
3796 c.  Some changes were made to builtins/psize.sh and support/bashbug.sh to
3797     attempt to avoid some /tmp file races and surreptitious file
3798     substitutions.
3799
3800 d.  Fixed a bug that caused the shell not to compile if configured with
3801     dparen arithmetic but without aliases.
3802
3803 e.  Fixed a bug that caused the input stream to be switched when assigning
3804     empty arrays with `bash -c'.
3805
3806 f.  A bug was fixed in the readline expansion glue code that caused bash to
3807     dump core when expanding lines with an unclosed single quote.
3808
3809 g.  A fix was made to the `cd' builtin so that using a non-empty directory
3810     from $CDPATH results in an absolute pathname of the new current working
3811     directory to be displayed after the current directory is changed.
3812
3813 h.  Fixed a bug in the variable assignment code that caused the shell to
3814     dump core when referencing an unset variable with `set -u' enabled in
3815     an assignment statement preceding a command.
3816
3817 i.  Fixed a bug in the exit trap code that caused reserved words to not be
3818     recognized under certain circumstances.
3819
3820 j.  Fixed a bug in the parameter pattern substitution code so that quote
3821     removal is performed.
3822
3823 k.  The shell should now configure correctly on Apple Rhapsody systems.
3824
3825 l.  The `kill' builtin now prints a usage message if it is not passed any
3826     arguments.
3827
3828 ------------------------------------------------------------------------------
3829 This document details the changes between this version, bash-2.02-beta1,
3830 and the previous version, bash-2.02-alpha1.
3831
3832 1.  Changes to Bash
3833
3834 a.  A few compilation bugs were fixed in the new extended globbing code.
3835
3836 b.  Executing arithmetic commands now sets the command name to `((' so
3837     error messages look right.
3838
3839 c.  Fixed some build problems with various configuration options.
3840
3841 d.  The `printf' builtin now aborts immediately if an illegal format
3842     character is encountered.
3843
3844 e.  The code that creates here-documents now behaves better if the file it's
3845     trying to create already exists for some reason.
3846
3847 f.  Fixed a problem with the extended globbing code that made patterns like
3848     `x+*' expand incorrectly.
3849
3850 g.  The prompt string expansion code no longer quotes tildes with backslashes.
3851
3852 h.  The bash getcwd() implementation in lib/sh/getcwd.c now behaves better in
3853     the presence of lstat(2) failures.
3854
3855 i.  Fixed a bug with strsub() that caused core dumps when executing `fc -s'.
3856
3857 j.  The mail checking code now ensures that it has a valid default mailpath.
3858
3859 k.  A bug was fixed that caused local variables to be unset inappropriately
3860     when sourcing a script from within another sourced script.
3861
3862 l.  A bug was fixed in the history saving code so that functions are saved
3863     in the history list correctly if `cmdhist' is enabled, but `lithist'
3864     is not.
3865
3866 m.  A bug was fixed that caused printf overflows when displaying error
3867     messages.
3868
3869 n.  It should be easier to build the loadble builtins in examples/loadables,
3870     though some manual editing of the generated Makefile is still required.
3871
3872 o.  The user's primary group is now always ${GROUPS[0]}.
3873
3874 p.  Some updates were made to support/config.guess from the GNU master copy.
3875
3876 q.  Some changes were made to the autoconf support for Solaris 2.6 large
3877     files.
3878
3879 r.  The `command' builtins now does the right thing when confstr(3) cannot
3880     find a value for _CS_PATH.
3881
3882 s.  Extended globbing expressions like `*.!(c)' are not history expanded if
3883     `extglob' is enabled.
3884
3885 t.  Using the `-P' option to `cd' will force the value that is assigned to
3886     PWD to not contain any symbolic links.
3887
3888 2.  Changes to Readline
3889
3890 a.  The code that prints completion listings now behaves better if one or
3891     more of the filenames contains non-printable characters.
3892
3893 b.  The time delay when showing matching parentheses is now 0.5 seconds.
3894
3895 ------------------------------------------------------------------------------
3896 This document details the changes between this version, bash-2.02-alpha1,
3897 and the previous version, bash-2.01.1-release.
3898
3899 1.  Changes to Bash
3900
3901 a.  OS-specific configuration changes for:  BSD/OS 3.x, Minix 2.x,
3902     Solaris 2.6, SINIX SVR4.
3903
3904 b.  Changes were made to the generated `info' files so that `install-info'
3905     works correctly.
3906
3907 c.  PWD is now auto-exported.
3908
3909 d.  A fix was made to the pipeline code to make sure that the shell forks
3910     to execute simple commands consisting solely of assignment statements.
3911
3912 e.  Changes to the test suite for systems with 14-character filenames.
3913
3914 f.  The default sizes of some internal hash tables have been made smaller
3915     to reduce the shell's memory footprint.
3916
3917 g.  The `((...))' arithmetic command is now executed directly instead of
3918     being translated into `let "..."'.
3919
3920 h.  Fixes were made to the expansion code so that "$*", "$@", "${array[@]}",
3921     and "${array[@]}" expand correctly when IFS does not contain a space
3922     character, is unset, or is set to NULL.
3923
3924 i.  The indirect expansion code (${!var}) was changed so that the only
3925     valid values of `var' are variable names, positional parameters, `#',
3926     `@', and `*'.
3927
3928 j.  An arithmetic expression error in a $((...)) expansion now causes a
3929     non-interactive shell running in posix mode to exit.
3930
3931 k.  Compound array assignment now splits the words within the parentheses
3932     on shell metacharacters like the parser would before expansing them
3933     and performing the assignment.  This is for compatibility with ksh-93.
3934
3935 l.  The internal shell backslash-quoting code (used in the output of `set'
3936     and completion) now quotes tildes if they appear at the start of the
3937     string or after a `=' or `:'.
3938
3939 m.  A couple of bugs with `shopt -o' were fixed.
3940
3941 n.  `bash +o' now displays the same output as `set +o' before starting an
3942     interactive shell.
3943
3944 o.  A bug that caused command substitution and the `eval' builtin to
3945     occasionally free memory twice when an error was encountered was fixed.
3946
3947 p.  The filename globbing code no longer requires read permission for a
3948     directory when the filename to be matched does not contain any globbing
3949     characters, as POSIX.2 specifies.
3950
3951 q.  A bug was fixed so that the job containing the last asynchronous
3952     process is not removed from the job table until a `wait' is executed
3953     for that process or another asynchronous process is started.  This
3954     satisfies a POSIX.2 requirement.
3955
3956 r.  A `select' bug was fixed so that a non-numeric user response is treated
3957     the same as a numeric response that is out of range.
3958
3959 s.  The shell no longer parses the value of SHELLOPTS from the environment
3960     if it is restricted, running setuid, or running in `privileged mode'.
3961
3962 t.  Fixes were made to enable large file support on systems such as
3963     Solaris 2.6, where the size of a file may be larger than can be held
3964     in an `int'.
3965
3966 u.  The filename hashing code was fixed to not add `./' to the beginning of
3967     filenames which already begin with `./'.
3968
3969 v.  The configure script was changed so that the GNU termcap library is not
3970     compiled in if `prefer-curses' has been specified.
3971
3972 w.  HISTCONTROL and HISTIGNORE are no longer applied to the second and
3973     subsequent lines of a multi-line command.
3974
3975 x.  A fix was made to `disown' so that it does a better job of catching
3976     out-of-range jobs.
3977
3978 y.  Non-interactive shells no longer report the status of processes terminated
3979     due to SIGINT, even if the standard output is a terminal.
3980
3981 z.  A bug that caused the output of `jobs' to have extra carriage returns
3982     was fixed.
3983
3984 aa. A bug that caused PIPESTATUS to not be set when builtins or shell
3985     functions were executed in the foreground was fixed.
3986
3987 bb. Bash now attempts to detect when it is being run by sshd, and treats
3988     that case identically to being run by rshd.
3989
3990 cc. A bug that caused `set -a' to export SHELLOPTS when one of the shell
3991     options was changed was fixed.
3992
3993 dd. The `kill' builtin now disallows empty or missing process id arguments
3994     instead of treating them as identical to `0', which means the current
3995     process.
3996
3997 ee. `var=value declare -x var' now behaves identically to
3998     `var=value export var'.  Similarly for `var=value declare -r var' and
3999     `var=value readonly var'.
4000
4001 ff. A few memory leaks were fixed.
4002
4003 gg. `alias' and `unalias' now print error messages when passed an argument
4004     that is not an alias for printing or deletion, even when the shell is
4005     not interactive, as POSIX.2 specifies.
4006
4007 hh. `alias' and `alias -p' now return a status of 0 when no aliases are
4008     defined, as POSIX.2 specifes.
4009
4010 ii. `cd -' now prints the pathname of the new working directory if the shell
4011     is interactive.
4012
4013 jj. A fix was made so that the code that binds $PWD now copes with getcwd()
4014     returning NULL.
4015
4016 kk. `unset' now checks whether or not a function name it's trying to unset
4017     is a valid shell identifier only when the shell is running in posix mode.
4018
4019 ll. A change was made to the code that generates filenames for here documents
4020     to make them less prone to name collisions.
4021
4022 mm. The parser was changed so that `time' is recognized as a reserved word
4023     only at the beginning of a pipeline.
4024
4025 nn. The pathname canonicalization code was changed so that `//' is converted
4026     into `/', but all other pathnames beginning with `//' are left alone, as
4027     POSIX.2 specifies.
4028
4029 oo. The `logout' builtin will no longer exit a non-interactive non-login
4030     shell.
4031
4032 2.  Changes to Readline
4033
4034 a.  Fixed a problem in the readline test program rltest.c that caused a core
4035     dump.
4036
4037 b.  The code that handles parser directives in inputrc files now displays
4038     more error messages.
4039
4040 c.  The history expansion code was fixed so that the appearance of the
4041     history comment character at the beginning of a word inhibits history
4042     expansion for that word and the rest of the input line.
4043
4044 3.  New Features in Bash
4045
4046 a.  A new version of malloc, based on the older GNU malloc, that has many
4047     changes, is more page-based, is more conservative with memory usage,
4048     and does not `orphan' large blocks when they are freed.
4049
4050 b.  A new version of gmalloc, based on the old GLIBC malloc, with many
4051     changes and range checking included by default.
4052
4053 c.  A new implementation of fnmatch(3) that includes full POSIX.2 Basic
4054     Regular Expression matching, including character classes, collating
4055     symbols, equivalence classes, and support for case-insensitive pattern
4056     matching.
4057
4058 d.  ksh-88 egrep-style extended pattern matching ([@+*?!](patlist)) has been
4059     implemented, controlled by a new `shopt' option, `extglob'.
4060
4061 e.  There is a new ksh-like `[[' compound command, which implements
4062     extended `test' functionality.
4063
4064 f.  There is a new `printf' builtin, implemented according to the POSIX.2
4065     specification.
4066
4067 g.  There is a new feature for command substitution: $(< filename) now expands
4068     to the contents of `filename', with any trailing newlines removed
4069     (equivalent to $(cat filename)).
4070
4071 h.  There are new tilde prefixes which expand to directories from the
4072     directory stack.
4073
4074 i.  There is a new `**' arithmetic operator to do exponentiation.
4075
4076 j.  There are new configuration options to control how bash is linked:
4077     `--enable-profiling', to allow bash to be profiled with gprof, and
4078     `--enable-static-link', to allow bash to be linked statically.
4079
4080 k.  There is a new configuration option, `--enable-cond-command', which
4081     controls whether or not the `[[' command is included.  It is on by
4082     default.
4083
4084 l.  There is a new configuration option, `--enable-extended-glob', which
4085     controls whether or not the ksh extended globbing feature is included.
4086     It is enabled by default.
4087
4088 m.  There is a new configuration #define in config.h.top that, when enabled,
4089     will cause all login shells to source /etc/profile and one of the user-
4090     specific login shell startup files, whether or not the shell is
4091     interactive.
4092
4093 n.  There is a new invocation option, `--dump-po-strings', to dump
4094     a shell script's translatable strings ($"...") in GNU `po' format.
4095
4096 o.  There is a new `shopt' option, `nocaseglob', to enable case-insensitive
4097     pattern matching when globbing filenames and using the `case' construct.
4098
4099 p.  There is a new `shopt' option, `huponexit', which, when enabled, causes
4100     the shell to send SIGHUP to all jobs when an interactive login shell
4101     exits.
4102
4103 q.  `bind' has a new `-u' option, which takes a readline function name as an
4104     argument and unbinds all key sequences bound to that function in a
4105     specified keymap.
4106
4107 r.  `disown' now has `-a' and `-r' options, to limit operation to all jobs
4108     and running jobs, respectively.
4109
4110 s.  The `shopt' `-p' option now causes output to be displayed in a reusable
4111     format.
4112
4113 t.  `test' has a new `-N' option, which returns true if the filename argument
4114     has been modified since it was last accessed.
4115
4116 u.  `umask' now has a `-p' option to print output in a reusable format.
4117
4118 v.  A new escape sequence, `\xNNN', has been added to the `echo -e' and $'...'
4119     translation code.  It expands to the character whose ascii code is NNN
4120     in hexadecimal.
4121
4122 w.  The prompt string expansion code has a new `\r' escape sequence.
4123
4124 x.  The shell may now be cross-compiled for the CYGWIN32 environment on
4125     a Unix machine.
4126
4127 4.  New Features in Readline
4128
4129 a.  There is now an option for `iterative' yank-last-arg handline, so a user
4130     can keep entering `M-.', yanking the last argument of successive history
4131     lines.
4132
4133 b.  New variable, `print-completions-horizontally', which causes completion
4134     matches to be displayed across the screen (like `ls -x') rather than up
4135     and down the screen (like `ls').
4136
4137 c.  New variable, `completion-ignore-case', which causes filename completion
4138     and matching to be performed case-insensitively.
4139
4140 d.  There is a new bindable command, `magic-space', which causes history
4141     expansion to be performed on the current readline buffer and a space to
4142     be inserted into the result.
4143
4144 e.  There is a new bindable command, `menu-complete', which enables tcsh-like
4145     menu completion (successive executions of menu-complete insert a single
4146     completion match, cycling through the list of possible completions).
4147
4148 f.  There is a new bindable command, `paste-from-clipboard', for use on Win32
4149     systems, to insert the text from the Win32 clipboard into the editing
4150     buffer.
4151
4152 g.  The key sequence translation code now understands printf-style backslash
4153     escape sequences, including \NNN octal escapes.  These escape sequences
4154     may be used in key sequence definitions or macro values.
4155
4156 h.  An `$include' inputrc file parser directive has been added.
4157
4158 ------------------------------------------------------------------------------
4159 This document details the changes between this version, bash-2.01.1-release,
4160 and the previous version, bash-2.01-release.
4161
4162 1.  Changes to Bash
4163
4164 a.  The select command was fixed to check the validity of the user's
4165     input more strenuously.
4166
4167 b.  A bug was fixed that prevented `time' from timing commands correctly
4168     when supplied as an argument to `bash -c'.
4169
4170 c.  A fix was made to the mail checking code to keep from adding the same
4171     mail file to the list of files to check multiple times when parsing
4172     $MAILPATH.
4173
4174 d.  Fixed an off-by-one error in the tilde expansion library.
4175
4176 e.  When using the compound array assignment syntax, the old value of
4177     the array is cleared before assigning the new value.
4178
4179 f.  Fixed a bug that could cause a core dump when a trap handler was reset
4180     to the default in the trap command associated with that signal.
4181
4182 g.  Fixed a bug in the locale code that occurred when assigning a value
4183     to LC_ALL.
4184
4185 h.  A change was made to the parser so that words of the form xxx=(...)
4186     are not considered compound assignment statements unless there are
4187     characters before the `='.
4188
4189 i.  A fix was made to the command tracing code to correctly quote each
4190     word of output.
4191
4192 j.  Some changes were made to the bash-specific autoconf tests to make them
4193     more portable.
4194
4195 k.  Completion of words with globbing characters now correctly quotes the
4196     result.
4197
4198 l.  The directory /var/spool/mail is now preferred to /usr/spool/mail when
4199     configure is deciding on the default mail directory.
4200
4201 m.  The brace completion code was fixed to not quote the `{' and `}'.
4202
4203 n.  Some fixes were made to make $RANDOM more random in subshells.
4204
4205 o.  System-specific changes were made to configure for: SVR4.2
4206
4207 p.  Changes were made so that completion of words containing globbing chars
4208     substitutes the result only if a single filename was matched.
4209
4210 q.  The window size is now recomputed after a job is stopped with SIGTSTP if
4211     the user has set `checkwinsize' with `shopt'.
4212
4213 r.  When doing substring expansion, out-of-range substring specifiers now
4214     cause nothing to be substituted rather than an expansion error.
4215
4216 s.  A fix was made so that you can no longer trap `SIGEXIT' or `SIGDEBUG' --
4217     only `EXIT' and `DEBUG' are accepted.
4218
4219 t.  The display of trapped signals now uses the signal number if signals
4220     for which bash does not know the name are trapped.
4221
4222 u.  A fix was made so that `bash -r' does not turn on restricted mode until
4223     after the startup files are executed.
4224
4225 v.  A bug was fixed that occasionally caused a core dump when a variable
4226     found in the temporary environment of export/declare/readonly had a
4227     null value.
4228
4229 w.  A bug that occasionally caused unallocated memory to be passed to free()
4230     when doing arithmetic substitution was fixed.
4231
4232 x.  A bug that caused a buffer overrun when expanding a prompt string
4233     containing `\w' and ${#PWD} exceeded PATH_MAX was fixed.
4234
4235 y.  A problem with the completion code that occasionally caused it to
4236     refer to a character before the beginning of the readline line buffer
4237     was fixed.
4238
4239 z.  A bug was fixed so that the `read' builtin restarts reads when
4240     interrupted by signals other than SIGINT.
4241
4242 aa. Fixed a bug that caused a command to be freed twice when there was
4243     an evaluation error in the `eval' command.
4244
4245 2.  Changes to Readline
4246
4247 a.  Added a missing `extern' to a declaration in readline.h that kept
4248     readline from compiling cleanly on some systems.
4249
4250 b.  The history file is now opened with mode 0600 when it is written for
4251     better security.
4252
4253 c.  Changes were made to the SIGWINCH handling code so that prompt redisplay
4254     is done better.
4255
4256 d.  ^G now interrupts incremental searches correctly.
4257
4258 e.  A bug that caused a core dump when the set of characters to be quoted
4259     when completing words was empty was fixed.
4260
4261 ------------------------------------------------------------------------------
4262 This document details the changes between this version, bash-2.01-release,
4263 and the previous version, bash-2.01-beta2.
4264
4265 1.  Changes to Bash
4266
4267 a.  The `distclean' target should remove the `printenv' executable if it
4268     has been created.
4269
4270 b.  The test suite was changed slightly to ensure that the error messages
4271     are printed in English.
4272
4273 c.  A bug that caused the shell to dump core when a filename containing a
4274     `/' was passed to `hash' was fixed.
4275
4276 d.  Pathname canonicalization now leaves a leading `//' intact, as POSIX.1
4277     requires.
4278
4279 e.  A memory leak when completing commands was fixed.
4280
4281 f.  A memory leak that occurred when checking the hash table for commands
4282     with relative paths was fixed.
4283
4284 ------------------------------------------------------------------------------
4285 This document details the changes between this version, bash-2.01-beta2,
4286 and the previous version, bash-2.01-beta1.
4287
4288 1.  Changes to Bash
4289
4290 a.  The `ulimit' builtin translates RLIM_INFINITY to the hard limit only if
4291     the current (soft) limit is less than or equal to the hard limit.
4292
4293 b.  Fixed a bug that caused the bash emulation of strcasecmp to produce
4294     incorrect results.
4295
4296 c.  A bug that caused memory to be freed twice when a trap handler resets
4297     the trap more than once was fixed.
4298
4299 d.  A bug that caused machines where sizeof (pointer) > sizeof (int) to
4300     fail (and possibly dump core) when trying to unwind-protect a null
4301     pointer was fixed.
4302
4303 e.  The startup files should not be run with job control enabled.  This fix
4304     allows SIGINT to once again interrupt startup file execution.
4305
4306 f.  Bash should not change the SIGPROF handler if it is set to something
4307     other than SIG_DFL.
4308
4309 g.  The completion code that provides bash-specific completions for readline
4310     now quotes characters that the readline code would treat as word break
4311     characters if they appear in a file name.
4312
4313 h.  The completion code now correctly quotes filenames containing a `!',
4314     even if the user attempted to use double quotes when attempting
4315     completion.
4316
4317 i.  A bug that caused the shell to dump core when `disown' was called without
4318     arguments and there was no current job was fixed.
4319
4320 j.  A construct like $((foo);bar) is now processed as a command substitution
4321     rather than as a bad arithmetic substitution.
4322
4323 k.  A couple of bugs that caused `fc' to not obey the `cmdhist' and `lithist'
4324     shell options when editing and re-executing a series of commands were
4325     fixed.
4326
4327 l.  A fix was made to the grammar -- the list of commands between `do' and
4328     `done' in the body of a `for' command should be treated the same as a
4329     while loop.
4330
4331 2.  Changes to Readline
4332
4333 a.  A couple of bugs that caused the history search functions to attempt to
4334     free a NULL pointer were fixed.
4335
4336 b.  If the C library provides setlocale(3), readline does not need to look
4337     at various environment variables to decide whether or not to go into
4338     eight-bit mode automatically -- just check whether the current locale
4339     is not `C' or `POSIX'.
4340
4341 c.  If the filename completion function finds that a directory was not closed
4342     by a previous (interrupted) completion, it closes the directory with
4343     closedir().
4344
4345 3.  New Features in Bash
4346
4347 a.  New bindable readline commands:  history-and-alias-expand-line and
4348     alias-expand-line.  The code was always in there, there was just no
4349     way to execute it.
4350
4351 ------------------------------------------------------------------------------
4352 This document details the changes between this version, bash-2.01-beta1,
4353 and the previous version, bash-2.01-alpha1.
4354
4355 1.  Changes to Bash
4356
4357 a.  Fixed a problem that could cause file descriptors used for process
4358     substitution to conflict with those used explicitly in redirections.
4359
4360 b.  Made it easier to regenerate configure if the user changes configure.in.
4361
4362 c.  ${GROUPS[0]} should always be the primary group, even on systems without
4363     multiple groups.
4364
4365 d.  Spelling correction is no longer enabled by default.
4366
4367 e.  Fixes to quoting problems in `bashbug'.
4368
4369 f.  OS-specific configuration changes were made for: Irix 6.
4370
4371 g.  OS-specific code changes were made for: QNX.
4372
4373 h.  A more meaningful message is now printed when the file in /tmp for a
4374     here document cannot be created.
4375
4376 i.  Many changes to the shell's variable initialization code to speed
4377     non-interactive startup.
4378
4379 j.  Changes to the non-job-control code so that it does not try to open
4380     /dev/tty.
4381
4382 k.  The output of `set' and `export' is once again sorted, as POSIX wants.
4383
4384 l.  Fixed a problem caused by a recursive call reparsing the value of
4385     $SHELLOPTS.
4386
4387 m.  The tilde code no longer calls getenv() when it's compiled as part of
4388     the shell, which should eliminate problems on systems that cannot
4389     redefine getenv(), like the NeXT OS.
4390
4391 n.  Fixed a problem that caused `bash -o' or `bash +o' to not list all
4392     the shell options.
4393
4394 o.  Fixed `ulimit' to convert RLIM_INFINITY to the appropriate hard limit
4395     only if the hard limit is greater than the current (soft) limit.
4396
4397 p.  Fixed a problem that arose when building bash in a different directory
4398     than the source and y.tab.[ch] were remade with something other than
4399     bison.  This came up most often on NetBSD.
4400
4401 q.  Fixed a problem with completion -- it thought that `pwd`/[TAB] indicated
4402     an unfinished command completion (`/), which generated errors.
4403
4404 r.  The bash special tilde expansions (~-, ~+) are now attempted before
4405     calling the standard tilde expansion code, which should eliminate the
4406     problems people have been seeing with this on Solaris 2.5.1.
4407
4408 s.  Added support for <stdarg.h> to places where it was missing.
4409
4410 t.  Changed the code that reads the output of a command substitution to not
4411     go through stdio.  This reduces the memory requirements and is faster.
4412
4413 u.  A number of changes to speed up export environment creation were made.
4414
4415 v.  A number of memory leaks were fixed as the result of running the test
4416     scripts through Purify.
4417
4418 w.  Fixed a bug that caused subshells forked to interpret executable
4419     scripts without a leading `#!' to not reinitialize the values of
4420     the shell options.
4421
4422 2.  Changes to Readline
4423
4424 a.  History library has less `#ifdef SHELL' code -- abstracted stuff out
4425     into application-specific function hooks.
4426
4427 b.  Readline no longer calls getenv() if it's compiled as part of the shell,
4428     which should eliminate problems on systems that cannot redefine getenv(),
4429     like the NeXT OS.
4430
4431 c.  Fixed translation of ESC when `untranslating' macro values.
4432
4433 d.  The region kill operation now fixes the mark if it ends up beyond the
4434     boundaries of the line after the region is deleted.
4435
4436 3.  New Features in Bash
4437
4438 a.  New argument for `configure':  `--with-curses'.  This can be used to
4439     override the selection of the termcap library on systems where it is
4440     deficient.
4441
4442 ------------------------------------------------------------------------------
4443 This document details the changes between this version, bash-2.01-alpha1,
4444 and the previous version, bash-2.0-release.
4445
4446 1.  Changes to Bash
4447
4448 a.  System-specific configuration changes for: FreeBSD, SunOS4, Irix,
4449     MachTen, QNX 4.2, Harris Night Hawk, SunOS5.
4450
4451 b.  System-specific code changes were made for: Linux, 4.4 BSD, QNX 4.2,
4452     HP-UX, AIX 4.2.
4453
4454 c.  A bug that caused the exec builtin to fail because the full pathname of
4455     the command could not be found was fixed.
4456
4457 d.  The code that performs output redirections is now more resistant to
4458     race conditions and possible security exploits.
4459
4460 e.  A bug that caused the shell to dump core when performing pattern
4461     substitutions on variable values was fixed.
4462
4463 f.  More hosts are now recognized by the auto-configuration mechanism
4464     (OpenBSD, QNX, others).
4465
4466 g.  Assignments to read-only variables that attempt to convert them to
4467     arrays are now errors.
4468
4469 h.  A bug that caused shell scripts using array assignments in POSIX mode
4470     to exit after the assignment was performed was fixed.
4471
4472 i.  The substring expansion code is now more careful about running off the
4473     ends of the expanded variable value.
4474
4475 j.  A bug that caused completion to fail if a backquoted command substitution
4476     appeared anywhere on the line was fixed.
4477
4478 k.  The `source' builtin no longer turns off history if it has been enabled
4479     in a non-interactive shell.
4480
4481 l.  A bug that caused the shell to crash when `disown' was given a pid
4482     instead of a job number was fixed.
4483
4484 m.  The `cd' spelling correction code will not try to change to `.' if no
4485     directory entries match a single-character argument.
4486
4487 n.  A bad variable name supplied to `declare', `export', or `readonly' no
4488     longer causes a non-interactive shell in POSIX mode to exit.
4489
4490 o.  Some fixes were made to the test suite to handle peculiarities of
4491     various Unix versions.
4492
4493 p.  The bash completion code now quotes characters that readline would
4494     treat as word breaks for completion but are not shell metacharacters.
4495
4496 q.  Bad options supplied at invocation now cause a usage message to be
4497     displayed.
4498
4499 r.  Fixes were made to the code that handles DEBUG traps so that the trap
4500     string is not freed inappropriately.
4501
4502 s.  Some changes were made to the bash debugger in examples/bashdb -- it
4503     should be closer to working now.
4504
4505 t.  A problem that caused the default filename used for mail checking to be
4506     wrong was fixed.
4507
4508 u.  A fix was made to the `echo' builtin so that NUL characters printed with
4509     `echo -e' do not cause the output to be truncated.
4510
4511 v.  A fix was made to the job control code so that the shell behaves better
4512     when monitor mode is enabled in a non-interactive shell.
4513
4514 w.  Bash no longer catches all of the terminating signals in a non-
4515     interactive shell until a trap is set on EXIT, which should result in
4516     quicker startup.
4517
4518 x.  A fix was made to the command timing code so that `time' can be used in
4519     a loop.
4520
4521 y.  A fix was made to the parser so that `((cmd); cmd2)' is now parsed as
4522     a nested subshell rather than strictly as an (erroneous) arithmetic
4523     command.
4524
4525 z.  A fix was made to the globbing code so that it correctly matches quoted
4526     filenames beginning with a `.'.
4527
4528 aa. A bug in `fc' that caused some multi-line commands to not be stored as
4529     one command in the history when they were re-executed after editing
4530     (with `fc -e') was fixed.
4531
4532 bb. The `ulimit' builtin now attempts to catch some classes of integer
4533     overflows.
4534
4535 cc. The command-oriented-history code no longer attempts to add `;'
4536     inappropriately when a newline appears while reading a $(...) command
4537     substitution.
4538
4539 dd. A bug that caused the shell to dump core when `help --' was executed
4540     was fixed.
4541
4542 ee. A bug that caused the shell to crash when an unset variable appeared
4543     in the body of a here document after `set -u' had been executed was
4544     fixed.
4545
4546 ff. Implicit input redirections from /dev/null for asynchronous commands
4547     are now handled better.
4548
4549 gg. A bug that caused the shell to fail to compile when configured with
4550     `--disable-readline' was fixed.
4551
4552 hh. The globbing code should now be interruptible.
4553
4554 ii. Bash now notices when the `kill' builtin is used to send SIGCONT to a
4555     stopped job and adjusts the data structures accordingly, as if `bg' had
4556     been executed instead.
4557
4558 jj. A bug that caused the shell to crash when mixing calls to `getopts'
4559     and `shift' on the same set of positional parameters was fixed.
4560
4561 kk. The command printing code now preserves the `-p' flag to `time'.
4562
4563 ll. The command printing code now handles here documents better when there
4564     are other redirections associated with the command.
4565
4566 mm. The special glibc environment variable (NNN_GNU_nonoption_argv_flags_)
4567     is no longer placed into the environment of executed commands -- users
4568     of glibc had too many problems with it.
4569
4570 nn. Reorganized the code that generates signames.h.  The signal_names list
4571     is now more complete but may be slightly different (SIGABRT is favored
4572     over SIGIOT, for example).  The preferred signal names are those
4573     listed in the POSIX.2 standard.
4574
4575 oo. `bashbug' now uses a filename shorter than 14 characters for its
4576     temporary file, and asks for confirmation before sending the bug
4577     report.
4578
4579 pp. A bug that caused TAB completion in vi editing mode to not be turned
4580     off when `set -o posix' was executed or back on when `set +o posix'
4581     was executed was fixed.
4582
4583 qq. A bug in the brace expansion code that caused brace expansions appearing
4584     in new-style $(...) command substitutions to be inappropriately expanded
4585     was fixed.
4586
4587 rr. A bug in the readline hook shell-expand-line that could cause memory to
4588     be inappropriately freed was fixed.
4589
4590 ss. A bug that caused some arithmetic expressions containing `&&' and `||'
4591     to be parsed with the wrong precedence has been fixed.
4592
4593 tt. References to unbound variables after `set -u' has been executed now
4594     cause the shell to exit immediately, as they should.
4595
4596 uu. A bug that caused the shell to exit inappropriately when `set -e' had
4597     been executed and a command's return status was being inverted with the
4598     `!' reserved word was fixed.
4599
4600 vv. A bug that could occasionally cause the shell to crash with a
4601     divide-by-zero error when timing a command was fixed.
4602
4603 ww. A bug that caused parameter pattern substitution to leave stray
4604     backslashes in the replacement string when the expression is in
4605     double quotes was fixed.
4606
4607 xx. The `break' and `continue' builtins now break out of all loops when an
4608     invalid count argument is supplied.
4609
4610 yy. Fixed a bug that caused PATH to be set to the empty string if
4611     `command -p' is executed with PATH unset.
4612
4613 zz. Fixed `kill -l signum' to print the signal name without the `SIG' prefix,
4614     as POSIX specifies.
4615
4616 aaa. Fixed a bug that caused the shell to crash while setting $SHELLOPTS
4617      if there were no shell options set.
4618
4619 bbb. Fixed `export -p' and `readonly -p' so that when the shell is in POSIX
4620      mode, their output is as POSIX.2 specifies.
4621
4622 ccc. Fixed a bug in `readonly' so that `readonly -a avar=(...)' actually
4623      creates an array variable.
4624
4625 ddd. Fixed a bug that prevented `time' from correctly timing background
4626      pipelines.
4627
4628 2.  Changes to Readline
4629
4630 a.  A bug that caused an extra newline to be printed when the cursor was on
4631     an otherwise empty line was fixed.
4632
4633 b.  An instance of memory being used after it was freed was corrected.
4634
4635 c.  The redisplay code now works when the prompt is longer than the screen
4636     width.
4637
4638 d.  `dump-macros' is now a bindable name, as it should have been all along.
4639
4640 e.  Non-printable characters are now expanded when displaying macros and
4641     their values.
4642
4643 f.  The `dump-variables' and `dump-macros' commands now output a leading
4644     newline if they're called as the result of a key sequence, rather
4645     than directly by an application.
4646
4647 3.  New Features in Bash
4648
4649 a.  There is a new builtin array variable: GROUPS, the set of groups to which
4650     the user belongs.  This is used by the test suite.
4651
4652 4.  New Features in Readline
4653
4654 a.  If a key sequence bound to `universal-argument' is read while reading a
4655     numeric argument started with `universal-argument', it terminates the
4656     argument but is otherwise ignored.  This provides a way to insert multiple
4657     instances of a digit string, and is how GNU emacs does it.
4658
4659 ------------------------------------------------------------------------------
4660 This document details the changes between this version, bash-2.0-release,
4661 and the previous version, bash-2.0-beta3.
4662
4663 1.  Changes to Bash
4664
4665 a.  Fix to the `getopts' builtin so that it does the right thing when a
4666     required option argument is not present.
4667
4668 b.  The completion code now updates the common prefix of matched names
4669     after FIGNORE processing is done, since any names that were removed
4670     may have changed the common prefix.
4671
4672 c.  Fixed a bug that made messages in MAILPATH entries not work correctly.
4673
4674 d.  Fixed a serious documentation error in the description of the new
4675     ${parameter:offset[:length]} expansion.
4676
4677 e.  Fixes to make parameter substring expansion ({$param:offset[:length]})
4678     work when within double quotes.
4679
4680 f.  Fixes to make ^A (CTLESC) survive an unquoted expansion of positional
4681     parameters.
4682
4683 g.  Corrected a misspelling of `unlimited' in the output of `ulimit'.
4684
4685 h.  Fixed a bug that caused executable scripts without a leading `#!' to
4686     occasionally pick up the wrong set of positional parameters.
4687
4688 i.  Linux systems now have a working `ulimit -v', using RLIMIT_AS.
4689
4690 j.  Updated config.guess so that many more machine types are recognized.
4691
4692 k.  Fixed a bug with backslash-quoted slashes in the ${param/pat[/sub]}
4693     expansion.
4694
4695 l.  If the shell is named `-su', and `-c command' is supplied, read and
4696     execute the login shell startup files even though the shell is not
4697     interactive.  This is to support the `-' option to `su'.
4698
4699 m.  Fixed a bug that caused core dumps when the DEBUG trap was ignored
4700     with `trap "" DEBUG' and a shell function was subsequently executed.
4701
4702 n.  Fixed a bug that caused core dumps in the read builtin when IFS was
4703     set to the null string and the input had leading whitespace.
4704
4705 2.  Changes to Readline
4706
4707 a.  Fixed a bug that caused a numeric argument of 1024 to be ignored when
4708     inserting text.
4709
4710 b.  Fixed the display code so that the numeric argument is displayed as it's
4711     being entered.
4712
4713 c.  Fixed the numeric argument reading code so that `M-- command' is
4714     equivalent to `M--1 command', as the prompt implies.
4715
4716 3.  New Features in Bash
4717
4718 a.  `ulimit' now sets both hard and soft limits and reports the soft limit
4719     by default (when neither -H nor -S is specified).  This is compatible
4720     with versions of sh and ksh that implement `ulimit'.
4721
4722 b.  Integer constants have been extended to base 64.
4723
4724 4.  New Features in Readline
4725
4726 a.  The `home' and `end' keys are now bound to beginning-of-line and
4727     end-of-line, respectively, if the corresponding termcap capabilities
4728     are present.
4729
4730 ------------------------------------------------------------------------------
4731 This document details the changes between this version, bash-2.0-beta3,
4732 and the previous version, bash-2.0-beta2.
4733
4734 1.  Changes to Bash
4735
4736 a.  System-specific changes for: AIX 4.2, SCO 3.2v[45], HP-UX.
4737
4738 b.  When in POSIX mode, variable assignments preceding a special builtin
4739     persist in the shell environment after the builtin completes.
4740
4741 c.  Changed all calls to getwd() to getcwd().  Improved check for systems
4742     where the libc getcwd() calls popen(), since that breaks on some
4743     systems when job control is being used.
4744
4745 d.  Fixed a bug that caused seg faults when executing scripts with the
4746     execute bit set but without a leading `#!'.
4747
4748 e.  The environment passed to executed commands is never sorted.
4749
4750 f.  A bug was fixed in the code that expands ${name[@]} to the number of
4751     elements in an array variable.
4752
4753 g.  A bug was fixed in the array compound assignment code ( A=( ... ) ).
4754
4755 h.  Window size changes now correctly propagate down to readline if
4756     the shopt `checkwinsize' option is enabled.
4757
4758 i.  A fix was made in the code that expands to the length of a variable
4759     value (${#var}).
4760
4761 j.  A fix was made to the command builtin so that it did not turn on the
4762     `no fork' flag inappropriately.
4763
4764 k.  A fix was made to make `set -n' work more reliably.
4765
4766 l.  A fix was made to the job control initialization code so that the
4767     terminal process group is set to the shell's process group if the
4768     shell changes its own process group.
4769
4770 2.  Changes to Readline
4771
4772 a.  System-specific changes for: SCO 3.2v[45].
4773
4774 b.  The behavior of the vi-mode `.' when redoing an `i' command was changed
4775     to insert the text previously inserted by the `i' command rather than
4776     simply entering insert mode.
4777
4778 3.  New features in Bash
4779
4780 a.  There is a new version of the autoload function package, in
4781     examples/functions/autoload.v2, that uses arrays and provides more
4782     functionality.
4783
4784 b.  Support for LC_COLLATE and locale-specific sorting of the results of
4785     pathname expansion if strcoll() is available.
4786
4787 4.  New Features in Readline
4788
4789 a.  Support for locale-specific sorting of completion possibilities if
4790     strcoll() is available.
4791
4792 ------------------------------------------------------------------------------
4793 This document details the changes between this version, bash-2.0-beta2,
4794 and the previous version, bash-2.0-beta1.
4795
4796 1.  Changes to Bash
4797
4798 a.  `pushd -' is once again equivalent to `pushd $OLDPWD'.
4799
4800 b.  OS-specific changes for: SCO 3.2v[45].
4801
4802 c.  A change was made to the fix for the recently-reported security hole
4803     when reading characters with octal value 255 to make it work better on
4804     systems with restartable system calls when not using readline.
4805
4806 d.  Some changes were made to the test suite so that it works if you
4807     configure bash with --enable-usg-echo-default.
4808
4809 e.  A fix was made to the parsing of conditional arithmetic expressions.
4810
4811 f.  Illegal arithmetic bases now cause an arithmetic evaluation error rather
4812     than being silently reset.
4813
4814 g.  Multiple arithmetic bases now cause an arithmetic evaluation error
4815     instead of being ignored.
4816
4817 h.  A fix was made to the evaluation of ${param?word} to conform to POSIX.2.
4818
4819 i.  A bug that sometimes caused array indices to be evaluated twice (which
4820     would cause errors when they contained assignment statements) was fixed.
4821
4822 j.  `ulimit' was rewritten to avoid problems with getrlimit(2) returning
4823     unsigned values and to simplify the code.
4824
4825 k.  A bug in the command-oriented-history code that caused it to sometimes
4826     put semicolons after right parens inappropriately was fixed.
4827
4828 l.  The values inserted into the prompt by the \w and \W escape sequences
4829     are now quoted to prevent further expansion.
4830
4831 m.  An interactive shell invoked as `sh' now reads and executes commands
4832     from the file named by $ENV when it starts up.  If it's a login shell,
4833     it does this after reading /etc/profile and ~/.profile.
4834
4835 n.  The file named by $ENV is never read by non-interactive shells.
4836
4837 2.  Changes to Readline
4838
4839 a.  A few changes were made to hide some macros and functions that should not
4840     be public.
4841
4842 b.  An off-by-one error that caused seg faults in the history expansion code
4843     was fixed.
4844
4845 3.  New Features in Bash
4846
4847 a.  The ksh-style ((...)) arithmetic command was implemented.  It is exactly
4848     identical to let "...".  This is controlled by a new option to configure,
4849     `--enable-dparen-arithmetic', which is on by default.
4850
4851 b.  There is a new #define available in config.h.top: SYS_BASH_LOGOUT.  If
4852     defined to a filename, bash reads and executes commands from that file
4853     when a login shell exits.  It's commented out by default.
4854
4855 c.  `ulimit' has a `-l' option that reports the maximum amount of data that
4856     may be locked into memory on 4.4BSD-based systems.
4857
4858 ------------------------------------------------------------------------------
4859 This document details the changes between this version, bash-2.0-beta1,
4860 and the previous version, bash-2.0-alpha4.
4861
4862 1.  Changes to Bash
4863
4864 a.  A bug that sometimes caused traps to be ignored on signals the
4865     shell treats specially was fixed.
4866
4867 b.  The internationalization code was changed to track the values of
4868     LC_* variables and call setlocale() as appropriate.  The TEXTDOMAIN
4869     and TEXTDOMAINDIR variables are also tracked; changes cause calls
4870     to textdomain() and bindtextdomain(), if available.
4871
4872 c.  A bug was fixed that sometimes caused double-quoted strings to be
4873     parsed incorrectly.
4874
4875 d.  Changes were made so that the siglist code compiles correctly on
4876     Solaris 2.5.
4877
4878 e.  Added `:' to the set of characters that cause word breaks for the
4879     completion code so that pathnames in assignments to $PATH can be
4880     completed.
4881
4882 f.  The `select' command was fixed to print $PS3 to stderr.
4883
4884 g.  Fixed an error in the manual page section describing the effect that
4885     setting and unsetting GLOBIGNORE has on the setting of the `dotglob'
4886     option.
4887
4888 h.  The time conversion code now uses CLK_TCK rather than CLOCKS_PER_SEC
4889     on systems without gettimeofday() and resources.
4890
4891 i.  The getopt static variables are now initialized each time a subshell
4892     is started, so subshells using `getopts' work right.
4893
4894 j.  A sign-extension bug that caused a possible security hole was fixed.
4895
4896 k.  The parser now reads characters between backquotes within a double-
4897     quoted string as a single word, so double quotes in the backquoted
4898     string don't terminate the enclosing double-quoted string.
4899
4900 l.  A bug that caused `^O' to work incorrectly when typed as the first
4901     thing to an interactive shell was fixed.
4902
4903 m.  A rarely-exercised off-by-one error in the code that quotes variable
4904     values was fixed.
4905
4906 n.  Some memory and file descriptor leaks encountered when running a
4907     shell script that is executable but does not have a leading `#!'
4908     were plugged.
4909
4910 2.  Changes to Readline
4911
4912 a.  A bug that sometimes caused incorrect results when trying to read
4913     typeahead on systems without FIONREAD was fixed.
4914
4915 3.  New Features in Bash
4916
4917 a.  The command timing code now uses the value of the TIMEFORMAT variable
4918     to format and display timing statistics.
4919
4920 b.  The `time' reserved word now accepts a `-p' option to force the
4921     POSIX.2 output format.
4922
4923 c.  There are a couple of new and updated scripts to convert csh startup
4924     files to bash format.
4925
4926 d.  There is a new builtin array variable: BASH_VERSINFO.  The various
4927     members hold the parts of the version information in BASH_VERSION,
4928     plus the value of MACHTYPE.
4929
4930 4.  New Features in Readline
4931
4932 a.  Setting LANG to `en_US.ISO8859-1' now causes readline to enter
4933     eight-bit mode.
4934
4935 ------------------------------------------------------------------------------
4936 This document details the changes between this version, bash-2.0-alpha4,
4937 and the previous version, bash-2.0-alpha3.
4938
4939 1.  Changes to Bash
4940
4941 a.  There is better detection of rsh connections on Solaris 2.
4942
4943 b.  Assignments to read-only variables preceding a command name are now
4944     variable assignment errors.  Variable assignment errors cause
4945     non-interactive shells running in posix mode to exit.
4946
4947 c.  The word tokenizer was rewritten to handle nested quotes and pairs
4948     ('', "", ``, ${...}, $(...), $[...], $'...', $"...", <(...), >(...))
4949     correctly.  Some of the parameter expansion code was updated as a
4950     consequence.
4951
4952 d.  A fix was made to `test' when given three arguments so that a binary
4953     operator is checked for first, before checking that the first argument
4954     is `!'.
4955
4956 e.  2''>/dev/null is no longer equivalent to 2>/dev/null.
4957
4958 f.  Parser error messages were regularized, and in most cases the name of
4959     the shell script being read by a non-interactive shell is not printed
4960     twice.
4961
4962 g.  A fix was made to the completion code so that it no longer removes the
4963     text the user typed in some cases.
4964
4965 h.  The special glibc `getopt' environment variable is no longer put into
4966     the environment on machines with small values of ARG_MAX.
4967
4968 i.  The expansion of ${...} now follows the POSIX.2 rules for finding the
4969     closing `}'.
4970
4971 j.  The shell no longer displays spurious status messages for background
4972     jobs in shell scripts that complete successfully when the script is
4973     run from a terminal.
4974
4975 k.  `shopt -o' now correctly updates $SHELLOPTS.
4976
4977 l.  A bug that caused the $PATH searching code to return a non-executable
4978     file even when an executable file with the same name appeared later in
4979     $PATH was fixed.
4980
4981 m.  The shell now does tilde expansions on unquoted `:~' in assignment
4982     statements when not in posix mode.
4983
4984 n.  Variable assignment errors when a command consists only of assignments
4985     now cause non-interactive shells to exit when in posix mode.
4986
4987 o.  If the variable in a `for' or `select' command is read-only, or not a
4988     legal shell identifier, a variable assignment error occurs.
4989
4990 p.  `test' now handles `-a' and `-o' as binary operators when three arguments
4991     are supplied, and correctly parses `( word )' as equivalent to `word'.
4992
4993 q.  `test' was fixed so that file names of the form /dev/fd/NN mean the same
4994     thing on all systems, even Linux.
4995
4996 r.  Fixed a bug in the globbing code that caused patterns with multiple
4997     consecutive `*'s to not be matched correctly.
4998
4999 s.  Fixed a bug that caused $PS2 to not be printed when an interactive shell
5000     not using readline is reading a here document.
5001
5002 t.  Fixed a bug that caused history expansion to be performed inappropriately
5003     when a single-quoted string spanned more than one line.
5004
5005 u.  `getopts' now checks that the variable name passed by the user as the
5006     second argument is a legal shell identifier and that the variable is
5007     not read-only.
5008
5009 v.  Fixed `getopts' to obey POSIX.2 rules for setting $OPTIND when it
5010     encounters an error.
5011
5012 w.  Fixed `set' to display variable values in a form that can be re-read.
5013
5014 x.  Fixed a bug in the code that keeps track of whether or not local variables
5015     have been declared at the current level of function nesting.
5016
5017 y.  Non-interactive shells in posix mode now exit if the name in a function
5018     declaration is not a legal identifier.
5019
5020 z.  The job control code now ignores stopped children when the shell is not
5021     interactive.
5022
5023 aa. The `cd' builtin no longer attempts spelling correction on the directory
5024     name if the shell is not interactive, regardless of the setting of the
5025     `cdspell' option.
5026
5027 bb. Some OS-specific changes were made for SCO 3.2v[45] and AIX 4.2.
5028
5029 cc. `time' now prints its output to stderr, as POSIX.2 specifies.
5030
5031 2.  Fixes to Readline
5032
5033 a.  After printing possible completions, all lines of a multi-line prompt
5034     are redisplayed.
5035
5036 b.  Some changes were made to the terminal handling code in rltty.c to
5037     work around AIX 4.2 bugs.
5038
5039 3.  New Features in Bash
5040
5041 a.  There is a new loadable builtin: sprintf, with calling syntax
5042                 sprintf var format [args]
5043     This provides an easy way to simulate ksh left- and right-justified
5044     variable values.
5045
5046 b.  The expansions of \h and \H in prompt strings were swapped.  \h now
5047     expands to the hostname up to the first `.', as in bash-1.14.
5048
5049 4.  New Features in Readline
5050
5051 a.  The bash-1.14 behavior when ^M is typed while doing an incremental
5052     search was restored.  ^J may now be used to terminate the search without
5053     accepting the line.
5054
5055 b.  There is a new bindable variable: disable-completion.  This inhibits
5056     word completion and causes the completion character to be inserted as
5057     if it had been bound to self-insert.
5058
5059 ------------------------------------------------------------------------------
5060 This document details the changes between this version, bash-2.0-alpha3,
5061 and the previous version, bash-2.0-alpha2.
5062
5063 There is now a file `COMPAT' included in the distribution that lists the
5064 user-visible incompatibilities between 1.14 and 2.0.
5065
5066 1. Changes to Bash
5067
5068 a. Some work was done so that word splitting of the rhs of assignment
5069    statements conforms more closely to historical practice.
5070
5071 b. A couple of errant memory frees were fixed.
5072
5073 c. A fix was made to the test builtin so it recognizes `<' and `>' as
5074    binary operators.
5075
5076 d. The GNU malloc in lib/malloc/malloc.c now scrambles memory as it's
5077    allocated and freed.  This is to catch callers that refer to freed
5078    memory or assume something about newly-allocated memory.
5079
5080 e. Fixed a problem with conversion to 12-hour time in the prompt
5081    expansion code.
5082
5083 f. Fixed a problem with configure's argument parsing order.  Now you can
5084    correctly turn on specific options after using --enable-minimal-config.
5085
5086 g. The configure script now automatically disables the use of GNU malloc
5087    on systems where it's appropriate (better than having people read the
5088    NOTES file and do it manually).
5089
5090 h. There are new prompt expansions (\v and \V) to insert version information
5091    into the prompt strings.
5092
5093 i. The default prompt string now includes the version number.
5094
5095 j. Most of the builtins that take no options were changed to use the
5096    internal getopt so they can produce proper error messages for -?
5097    and incorrect options.
5098
5099 k. Some system-specific changes were made for SVR4.2 and Solaris 2.5.
5100
5101 l. Bash now uses PATH_MAX instead of MAXPATHLEN and NAME_MAX instead of
5102    MAXNAMLEN.
5103
5104 m. A couple of problems caused by uninitialized variables were fixed.
5105
5106 n. There are a number of new loadable builtin examples: logname, basename,
5107    dirname, tty, pathchk, tee, head, and rmdir.  All of these conform to
5108    POSIX.2.
5109
5110 o. Bash now notices changes in TZ and calls tzset() if present, so
5111    changing TZ will alter the time printed by prompt expansions.
5112
5113 p. The source was reorganized a bit so I don't have to wait so long for
5114    some files to compile, and to facilitate the creation of a `shell
5115    library' at some future point.
5116
5117 q. Bash no longer turns off job control if called as `sh', since the
5118    POSIX.2 spec includes job control as a standard feature.
5119
5120 r. `bash -o posix' now works as intended.
5121
5122 s. Fixed a problem with the completion code: when completing a filename
5123    that contained globbing characters, if show-all-if-ambiguous was set,
5124    the completion code would remove the user's text.
5125
5126 t. Fixed ulimit so that (hopefully) the full range of limits is available
5127    on HPUX systems.
5128
5129 u. A new `shopt' option (`hostcomplete') enables and disables hostname
5130    completion.
5131
5132 v. The shell no longer attempts to save the history on an abort(),
5133    which is usually called by programming_error().
5134
5135 w. The `-s' option to `fc' was changed to echo the command to be executed
5136    to stderr instead of stdout.
5137
5138 x. If the editor invoked by `fc -e' exits with a non-zero status, no
5139    commands are executed.
5140
5141 y. Fixed a bug that made the shopt `histverify' option work incorrectly.
5142
5143 z. There is a new variable `MACHTYPE' whose value is the GNU-style
5144    `cpu-company-system' system description as set by configure.  (The
5145    values of MACHTYPE and HOSTTYPE should really be swapped.)
5146
5147 aa. The `ulimit' builtin now allows the maximum virtual memory size to be
5148     set via setrlimit(2) if RLIMIT_VMEM is defined.
5149
5150 bb. `bash -nc 'command'' no longer runs `command'.
5151
5152 2. Changes to Readline
5153
5154 a. Fixed a typo in the code that checked for FIONREAD in input.c.
5155
5156 b. Fixed a bug in the code that outputs keybindings, so things like C-\
5157    are quoted properly.
5158
5159 c. Fixed a bug in the inputrc file parsing code to handle the problems
5160    caused by inputrc files created from the output of `bind -p' in
5161    previous versions of bash.  The problem was due to the bug fixed
5162    in item b above.
5163
5164 d. Readline no longer turns off the terminal's meta key, and turns it on
5165    once the first time it's called.
5166
5167 ------------------------------------------------------------------------------
5168 This file documents the changes between this version, bash-2.0-alpha2,
5169 and the previous version, bash-2.0-alpha.
5170
5171 1. Changes to Bash
5172
5173 a. The shell no longer thinks directories are executable.
5174
5175 b. `disown' has a new option, `h', which inhibits the resending of SIGHUP
5176    but does not remove the job from the jobs table.
5177
5178 c. The varargs functions in error.c now use ANSI-C `stdarg' if available.
5179
5180 d. The build process now treats the `build version' in .build as local to
5181    the build directory, so different versions built from the same source
5182    tree have different `build versions'.
5183
5184 e. Some problems with the grammar have been fixed. (It used `list' in a few
5185    productions where `compound_list' was needed.  A `list' must be terminated
5186    with a newline or semicolon; a `compound_list' need not be.)
5187
5188 f. A fix was made to keep `wait' from hanging when waiting for all background
5189    jobs.
5190
5191 g. `bash --help' now writes its output to stdout, like the GNU Coding Standards
5192    specify, and includes the machine type (the value of MACHTYPE).
5193
5194 h. `bash --version' now prints more information and exits successfully, like
5195    the GNU Coding Standards specify.
5196
5197 i. The output of `time' and `times' now prints fractional seconds with three
5198    places after the decimal point.
5199
5200 j. A bug that caused process substitutions to screw up the pipeline printed
5201    by `jobs' was fixed.
5202
5203 k. Fixes were made to the code that implements $'...' and $"..." so they
5204    work as documented.
5205
5206 l. The process substitution code now opens named pipes for reading with
5207    O_NONBLOCK to avoid hanging.
5208
5209 m. Fixes were made to the trap code so the shell cleans up correctly if the
5210    trap command contains a `return' and we're executing a function or
5211    sourcing a script with `.'.
5212
5213 n. Fixes to doc/Makefile.in so that it doesn't try to remake all of the
5214    documentation (ps, dvi, etc.) on a `make install'.
5215
5216 o. Fixed an auto-increment error that caused bash -c args to sometimes dump
5217    core.
5218
5219 p. Fixed a bug that caused $HISTIGNORE to fail when the history line
5220    contained globbing characters.
5221
5222 2. Changes to Readline
5223
5224 a. There is a new string variable, rl_library_version, available for use by
5225    applications.  The current value is "2.1".
5226
5227 b. A bug encountered when expand-tilde was enabled and file completion was
5228    attempted on a word beginning with `~/' was fixed.
5229
5230 c. A slight change was made to the incremental search termination behavior.
5231    ESC still terminates the search, but if input is pending or arrives
5232    within 0.1 seconds (on systems with select(2)), it is used as a prefix
5233    character.  This is intented to allow users to terminate searches with
5234    the arrow keys and get the behavior they expect.