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