source: trunk/third/bash/CHANGES @ 18290

Revision 18290, 154.5 KB checked in by zacheiss, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r18289, which included commits to RCS files with non-trunk default branches.
Line 
1This document details the changes between this version, bash-2.05b-release,
2and the previous version, bash-2.05b-beta2.
3
41.  Changes to Bash
5
6a.  Fixed an off-by-one error in the function that translates job
7    specifications.
8
9b.  Note that we're running under Emacs and disable line editing if
10    $EMACS == `t'.
11
12------------------------------------------------------------------------------
13This document details the changes between this version, bash-2.05b-beta2,
14and the previous version, bash-2.05b-beta1.
15
161.  Changes to Bash
17
18a.  Fixed the /= and %= arithmetic operators to catch division by zero.
19
20b.  Added putenv, setenv, unsetenv to getenv replacement for completeness.
21
22c.  Fixed a bug that could cause the -O expand_aliases invocation option
23    to not take effect.
24
25d.  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
292.  Changes to Readline
30
31a.  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------------------------------------------------------------------------------
36This document details the changes between this version, bash-2.05b-beta1,
37and the previous version, bash-2.05b-alpha1.
38
391.  Changes to Bash
40
41a.  Fixed a problem when parsing a POSIX.2 character class name while
42    evaluating a bracket expression containing multibyte characters.
43
44b.  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
47c.  Added `help' builtin entries for `((', `[[', and arithmetic for.
48
49d.  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
68e.  Check for getservent(); make the service name completion code dependent
69    on its presence.
70
71f.  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
75g.  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
80h.  The `unset' builtin no longer returns a failure status when asked to
81    unset a previously-unset variable or function.
82
83i.  Changes to the build system to make it easier to cross-compile bash
84    for different systems.
85
86j.  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
90k.  Some changes to the multibyte character support code to avoid many calls
91    to strlen().
92
93l.  Bash now correctly honors setting LANG to some value when LC_ALL does not
94    already have a value.
95
96m.  Fixed a bug that could cause SIGSEGV when processing nested traps with
97    trap handlers.
98
99n.  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
103o.  Fixed a bug that caused a syntax error when a command was terminated by
104    EOF.
105
1062.  New Features in Bash
107
108a.  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
112b.  All builtins that take operands accept a `--' pseudo-option, except
113    `echo'.
114
115c.  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
1193.  Changes to Readline
120
121a.  Fixed a small problem in _rl_insert_char with multibyte characters.
122
123b.  Fixes from IBM for line wrapping problems when using multibyte characters.
124
125c.  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
129d.  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------------------------------------------------------------------------------
134This document details the changes between this version, bash-2.05b-alpha1,
135and the previous version, bash-2.05a-release.
136
1371.  Changes to Bash
138
139a.  Some changes to work around inlining differences between compilers.
140
141b.  Added more prototypes for internal shell typedefs, to catch argument
142    passing errors when using pointers to functions.
143
144c.  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
151d.  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
154e.  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
157f.  The history file loading code was changed to allow lines to be saved in
158    the history list from the shell startup files.
159
160g.  `history -s args' now works bettern in compound commands.
161
162h.  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
166i.  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
170j.  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
174k.  Fixed the programmable completion code to better handle newlines in lists
175    of possible completions (e.g., `complete -W').
176
177l.  Removed the reserved words from the `bash-builtins' manual page.
178
179m.  Parser error reporting now attempts to do a better job of identifying the
180    token in error rather than doing straight textual analysis.
181
182n.  Fixes for Inf/NaN, locales, wide/multibyte characters and zero-length
183    arguments in the library snprintf(3) replacement.
184
185o.  `read -e' no longer does command name completion on the first word on
186    the line being read.
187
188p.  `select' now returns failure if the read of the user's selection fails.
189
190q.  Fixed a bug that could cause a core dump when setting $PIPESTATUS.
191
192r.  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
195s.  Fixed a bug in the trap code that caused traps to be inherited by
196    command substitutions in some cases.
197
198t.  Fixed a bug that could cause alias expansion to inappropriately expand
199    the word following the alias.
200
201u.  Fixed a bug in the `kill' builtin that mishandled negative pid arguments.
202
203v.  The parser is less lenient when parsing assignment statements where the
204    characters before the `=' don't comprise a valid identifier.
205
206w.  The arithmetic expression evaluation code now honors the setting of the
207    `-u' option when expanding variable names.
208
209x.  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
213y.  Reimplemented the existing prompt string date and time expansions using
214    strftime(3), which changed the output of \@ in some locales.
215
216z.  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
219aa. 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
223bb. 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
227cc. 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
230dd. The code that expands $PS4 no longer inherits the `-x' flag.
231
232ee. 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
236ff. 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
239gg. 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
250hh. 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
254ii. Error messages now include the line number in a script when the shell
255    is not interactive.
256
257jj. Array subscript expansion now takes place even when the array variable is
258    unset, so side effects will take place.
259
260kk. 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
263ll. 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
266mm. 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
269nn. 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
273oo. Changed some parts of the expansion code to avoid allocating and
274    immediately freeing memory without using the results for anything.
275
276pp. 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
281qq. 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
285rr. 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
289ss. Fixed the assignment statement parsing code to allow whitespace and
290    newlines in subscripts when performing array element assignment.
291
292tt. The shell now issues many fewer calls to sigprocmask and other signal
293    masking system calls.
294
295uu. 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
299vv. 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
3032.  Changes to Readline
304
305a.  Fixed output of comment-begin character when listing variable values.
306
307b.  Added some default key bindings for common escape sequences produced by
308    HOME and END keys.
309
310c.  Fixed the mark handling code to be more emacs-compatible.
311
312d.  A bug was fixed in the code that prints possible completions to keep it
313    from printing empty strings in certain circumstances.
314
315e.  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
318f.  Fixed unstifle_history() to return values that match the documentation.
319
320g.  Fixed the event loop (rl_event_hook) to handle the case where the input
321    file descriptor is invalidated.
322
323h.  Fixed the prompt display code to work better when the application has a
324    custom redisplay function.
325
326i.  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
329j.  The vi-mode `S' and `s' commands are now undone correctly.
330
3313.  New Features in Bash
332
333a.  If set, TMOUT is the default timeout for the `read' builtin.
334
335b.  `type' has two new options:  `-f' suppresses shell function lookup, and
336    `-P' forces a $PATH search.
337
338c.  New code to handle multibyte characters.
339
340d.  `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
344e.  `complete -d' and `complete -o dirnames' now force a slash to be
345    appended to names which are symlinks to directories.
346
347f.  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
350g.  Added support for ksh93-like [:word:] character class in pattern matching.
351
352h.  The  $'...' quoting construct now expands \cX to Control-X.
353
354i.  A new \D{...} prompt expansion; passes the `...' to strftime and inserts
355    the result into the expanded prompt.
356
357j.  The shell now performs arithmetic in the largest integer size the
358    machine supports (intmax_t), instead of long.
359
360k.  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
363l.  The bash globbing completion functions now allow completions to be listed
364    with double tabs or if `show-all-if-ambiguous' is set.
365
366m.  New `-o nospace' option for `complete' and `compgen' builtins; suppresses
367    readline's appending a space to the completed word.
368
369n.  New `here-string' redirection operator:  <<< word.
370
371o.  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
375p.  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
379q.  The `complete' and `compgen' builtins now have a new `-s/-A service'
380    option to complete on names from /etc/services.
381
382r.  `read' has a new `-u fd' option to read from a specified file descriptor.
383
384s.  Fix the completion code so that expansion errors in a directory name
385    don't cause a longjmp back to the command loop.
386
387t.  Fixed word completion inside command substitution to work a little more
388    intuitively.
389
390u.  The `printf' %q format specifier now uses $'...' quoting to print the
391    argument if it contains non-printing characters.
392
393v.  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
397w.  The DEBUG trap is now run *before* simple commands, ((...)) commands,
398    [[...]] conditional commands, and for ((...)) loops.
399
400x.  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
405y.  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
410z.  New [n]<&word- and [n]>&word- redirections from ksh93 -- move fds (dup
411    and close).
412
413aa. There is a new `-l' invocation option, equivalent to `--login'.
414
415bb. 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
4184.  New Features in Readline
419
420a.  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
424b.  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
428c.  New code to handle editing and displaying multibyte characters.
429
430d.  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
435e.  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
439f.  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
444g.  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
449h.  Readline now has an overwrite mode, toggled by the `overwrite-mode'
450    bindable command, which could be bound to `Insert'.
451
452i.  New application-settable completion variable:
453    rl_completion_suppress_append, inhibits appending of
454    rl_completion_append_character to completed words.
455
456j.  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------------------------------------------------------------------------------
462This document details the changes between this version, bash-2.05a-release,
463and the previous version, bash-2.05a-rc1.
464
4651.  Changes to Bash
466
467a.  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
470b.  Improved the random number generator slightly.
471
472c.  Changes to configuration to not put -I/usr/include into $CFLAGS, since
473    it messes up some includes.
474
475d.  Corrected description of POSIXLY_CORRECT in man page and info manual.
476
477e.  Fixed a couple of cases of incorrect function prototypes that sneaked
478    through and caused compilation problems.
479
480f.  A few changes to avoid potential core dumps in the programmable completion
481    code.
482
483g.  Fixed a configure problem that could cause a non-existent file to show
484    up in LIBOBJS.
485
486h.  Fixed a configure problem that could cause siglist.o to not be built when
487    required.
488
489i.  Changes to the strtoimax and strtoumax replacement functions to work
490    around buggy compilers.
491
492j.  Fixed a problem with the snprintf replacement function that could
493    potentially cause a core dump.
494
4952.  Changes to Readline
496
497a.  Fixed a locale-specific problem in the vi-mode `goto mark' command.
498
499b.  Fixed Makefile to not put -I/usr/include into CFLAGS, since it can cause
500    include file problems.
501
502------------------------------------------------------------------------------
503This document details the changes between this version, bash-2.05a-rc1,
504and the previous version, bash-2.05a-beta1.
505
5061.  Changes to Bash
507
508a.  Fixed the snprintf replacement to correctly implement the `alternate form'
509    of the %g and %G conversions.
510
511b.  Fixed snprintf to correctly handle the optional precision with the %g and
512    %G conversions.
513
514c.  Fixed the arithmetic evaluation code to correct the values of `@' and `_'
515    when translating base-64 constants (they were backwards).
516
517d.  New library functions for formatting long and long long ints.
518
519e.  Fixed a few places where negative array subscripts could have occurred,
520    mostly as the result of systems using signed characters.
521
522f.  Fixed a few places that assumed a pid_t was no wider than an int.
523
524g.  Fixed the `maildir' mail checking code to work on systems where a
525    `struct stat' doesn't include an `st_blocks' member.
526
527h.  Fixed snprintf to make `unsigned long long' conversion formats (%llu)
528    work better.
529
530i.  Fixed snprintf to not print a sign when asked to do an unsigned conversion.
531
532j.  Made configure changes to avoid compiling empty source files in lib/sh.
533
534k.  New replacement functions (if necessary) for strtoull, strtoll, strtoimax,
535    strtoumax.
536
537l.  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
541m.  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
544n.  Fixed snprintf to handle long doubles and the %a/%A conversions by
545    falling back to sprintf, as long as sprintf supports them.
546
547o.  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
551p.  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
555q.  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
561r.  snprintf now recognizes the %F conversion.
562
563s.  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
567t.  When in posix mode, the default value for MAILCHECK is 600.
568
569u.  Bash only initializes FUNCNAME, GROUPS, and DIRSTACK as special variables
570    if they're not in the initial environment.
571
572v.  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
576w.  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
579x.  Bash no longer auto-exports HOSTNAME, HOSTTYPE, MACHTYPE, or OSTYPE,
580    even if it assigns them default values.
581
582y.  Bash no longer removes the export attribute from SSH_CLIENT or SSH2_CLIENT
583    if they appear in the initial environment.
584
585z.  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
590aa. Fixed a typo in the code that tests for LC_NUMERIC.
591
592bb. The POSIXLY_CORRECT shell variable and its effects are now documented.
593
594cc. Some changes to several of the support shell scripts included in the
595    definitions to try to avoid race conditions and attacks.
596
597dd. Several changes to avoid warnings from `gcc -Wall'.
598
599ee. 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
603ff. 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
607gg. 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
610hh. Updated the documentation to note that only interactive shells resend
611    SIGHUP to all jobs before exiting.
612
613ii. 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
617jj. Small change from Paul Eggert to make LINENO right in commands run with
618    `bash -c'.
619
6202.  New Features in Bash
621
622a.  The `printf' builtin now handles the %a and %A conversions if they're
623    implemented by printf(3).
624
625b.  The `printf' builtin now handles the %F conversion (just about like %f).
626
627c.  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
6313.  Changes to Readline
632
633a.  Fixed a few places where negative array subscripts could have occurred.
634
635b.  Fixed the vi-mode code to use a better method to determine the bounds of
636    the array used to hold the marks.
637
638c.  Fixed the defines in chardefs.h to work better when chars are signed.
639
640d.  Fixed configure.in to use the new names for bash autoconf macros.
641
642e.  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
646f.  Fixed a problem where rl_backward could possibly set point to before
647    the beginning of the line.
648
649------------------------------------------------------------------------------
650This document details the changes between this version, bash-2.05a-beta1,
651and the previous version, bash-2.05a-alpha1.
652
6531.  Changes to Bash
654
655a.  Fixed a bug in the evalution of arithmetic `for' statements when the
656    expanded expression is NULL.
657
658b.  Fixed an unassigned variable problem in the redirection printing code.
659
660c.  Added more prototypes to extern function declarations in the header
661    files and to static function declarations in C source files.
662
663d.  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
668e.  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
672f.  More const changes to function arguments and appropriate variables.
673
674g.  Changed the mail checking support to handle `maildir'-style mail
675    directories.
676
677h.  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
681i.  The `old' gnu malloc is no longer a configuration option.
682
683j.  Augmented the bash malloc with optional tracing and registering allocated
684    and freed memory.
685
686k.  Prompt string decoding now saves and restores the value of $? when it
687    expands the prompt string, so command substitutions don't change $?.
688
689i.  Array indices are now `long', since shell arithmetic is performed as long,
690    and the internal arrayind_t type is used consistently.
691
692j.  Some more `unsigned char *' fixes from Paul Eggert.
693
694k.  Fixed a bad call to builtin_error that could cause core dumps when making
695    local variables.
696
697l.  `return' may no longer be used to terminate a `select' command, for
698    compatibility with ksh.
699
700m.  Changed code that reads octal numbers to do a better job of detecting
701    overflows.
702
703n.  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
706o.  `umask' now prints four digits when printing in octal mode, for
707    compatibility with other shells.
708
709p.  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
713q.  Some `time_t' fixes for machines were a time_t is bigger than a long.
714
715r.  Replaced some bash-specific autoconf macros with standard equivalents.
716
717s.  Improvmed the code that constructs temporary filenames to make the
718    generated names a bit more random.
719
720t.  Added code that checks for ascii before calling any of the is* ctype
721    functions.
722
723u.  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
726v.  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
730w.  `ulimit' now prints the description of a resource in any error message
731    relating to fetching or setting that resource's limits.
732
733x.  The `snprintf' replacement now computes maximum values at compile
734    time rather than using huge constants for things like long long.
735
736y.  Interactive shells now ignore `set -n'.
737
738z.  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
742aa. The malloc error reporting code now attempts to print the file and line
743    number of the call that caused the error.
744
745bb. 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
750cc. `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
7552.  Changes to Readline
756
757a.  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
760b.  Readline defaults to not echoing the input and lets the terminal
761    initialization code enable echoing if there is a controlling terminal.
762
763c.  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
7683.  New Features in Bash
769
770a.  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
774b.  `ulimit' now prints the option letter associated with a particular
775    resource when printing more than one limit.
776
777c.  `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
7804.  New Features in Readline
781
782a.  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------------------------------------------------------------------------------
787This document details the changes between this version, bash-2.05a-alpha1,
788and the previous version, bash-2.05-release.
789
7901.  Changes to Bash
791
792a.  Better checks in the redirection code for write errors.
793
794b.  bashbug now uses $TMPDIR, defaulting to /tmp, and uses mktemp(1) more
795    portably.
796
797c.  System-specific configuration changes for:  Interix, OpenBSD, FreeBSD,
798    MacOS X.
799
800d.  Some more `const' cleanups through the code.
801
802e.  Fixed a typo in the /dev/fd redirection code, better checks for valid
803    numeric fds in /dev/fd.
804
805f.  Fixed many parts of the shell to handle integer overflow more gracefully
806    and to do more stringent checks for valid numbers.
807
808g.  Fixed mksignames to include config.h.
809
810h.  Fixed an uninitialized variable problem that could cause the shell to core
811    dump when replacing characters in a string.
812
813i.  New mechanism for updating the patch level when official patches are
814    released (patchlevel.h).
815
816j.  configure.in changed to no longer require external files _distribution and
817    _patchlevel.
818
819k.  Fixed non-interactive shell initialization problem when bash started as
820    `bash -i filename'.
821
822l.  Fixed printf builtin conversion error handling to be POSIX.2-conformant.
823
824m.  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
828n.  Startup files and files read with source or `.' are no longer required to
829    be regular files.
830
831o.  Fixed core dump in builtin printf when user-supplied precision or field
832    width is 0.
833
834p.  Fixed builtin printf to treat a negative field width as a positive field
835    width with left-justification.
836
837r.  New unwind-protect implementation from Paul Eggert.
838
839s.  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
843t.  Fixed the process substitution code to cope better when stdin is closed.
844
845v.  Fixes, mostly from Paul Eggert, for a few possible buffer overflows in
846    the shell.
847
848w.  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
851x.  Command substition no longer inherits the DEBUG trap.
852
853y.  Some fixes to the process substition code on machines without /dev/fd so
854    that named pipes are not removed inappropriately.
855
856z.  The loadable `getconf' builtin is now much more complete, and will become
857    part of the shell in the future.
858
859aa. 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
862bb. Fixed the extended pattern matching code to behave better when presented
863    with incorrectly-formed patterns.
864
865cc. Some changes were made with the intent of making cross-compilation easier.
866
867dd. The network code (/dev/tcp and /dev/udp redirections) uses getaddrinfo(3)
868    if it's available, which adds support for IPv6.
869
870ee. Subshells of login shells no longer source ~/.bash_logout when they exit.
871
872ff. Fixes so that subshells don't exit inappropriately if the -e option has
873    been set.
874
875gg. Restricted shells no longer allow functions to be exported.
876
877hh. Changes to the pattern matching code so extended pattern matching works
878    on systems with deficient shared library implementations, like MacOS X.
879
880ii. Better error messages when a script with a leading `#!interp' fails
881    to execute because of problems with `interp'.
882
883jj. Fixed `compgen' to handle the `-o default' option better.
884
885kk. 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
888ll. Fixed a possible infinite recursion problem when `fc ""=abc' (a null
889    pattern) is used to re-execute a previous command.
890
891mm. 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
895nn. Fixed a bug that caused `read -a aname' to work even if ANAME had been
896    declared readonly.
897
898oo. Fixed a possible integer overflow problem when constructing names for
899    temporary files.
900
9012.  New Features in Bash
902
903a.  Added support for DESTDIR installation root prefix, so you can do a
904    `make install DESTDIR=bash-root' and do easier binary packaging.
905
906b.  Added support for builtin printf "'" flag character as per latest POSIX
907    drafts.
908
909c.  Support for POSIX.2 printf(1) length specifiers `j', `t', and `z' (from
910    ISO C99).
911
912d.  New autoconf macro, RL_LIB_READLINE_VERSION, for use by other applications
913    (bash doesn't use very much of what it returns).
914
915e.  `set [-+]o nolog' is recognized as required by the latest POSIX drafts,
916    but ignored.
917
918f.  New read-only `shopt' option:  login_shell.  Set to non-zero value if the
919    shell is a login shell.
920
921g.  New `\A' prompt string escape sequence; expands to time in 24 HH:MM format.
922
923h.  New `-A group/-g' option to complete and compgen; does group name
924    completion.
925
926i.  New `-t' option to `hash' to list hash values for each filename argument.
927
928j.  New [-+]O invocation option to set and unset `shopt' options at startup.
929
930k.  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
934l.  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
938m.  `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
943n.  `bashbug' now requires that the subject be changed from the default.
944
945o.  configure has a new `--enable-largefile' option, like other GNU utilities.
946
947p.  `for' loops now allow empty word lists after `in', like the latest POSIX
948    drafts require.
949
9503.  Changes to Readline
951
952a.  More `const' and type casting fixes.
953
954b.  Changed rl_message() to use vsnprintf(3) (if available) to fix buffer
955    overflow problems.
956
957c.  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
963d.  Fixed a trivial typo that made the vi-mode `dT' command not work.
964
965e.  Fixed the tty code so that ^S and ^Q can be inserted with rl_quoted_insert.
966
967f.  Fixed the tty code so that ^V works more than once.
968
969g.  Changed the use of __P((...)) for function prototypes to PARAMS((...))
970    because the use of __P in typedefs conflicted g++ and glibc.
971
9724.  New Features in Readline
973
974a.  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
977b.  New #defines in readline.h:  RL_READLINE_VERSION, currently 0x0402,
978    RL_VERSION_MAJOR, currently 4, and RL_VERSION_MINOR, currently 2.
979
980c.  New readline variable:  rl_readline_version, mirrors RL_READLINE_VERSION.
981
982d.  New bindable boolean readline variable:  match-hidden-files.  Controls
983    completion of files beginning with a `.' (on Unix).  Enabled by default.
984
985e.  The history expansion code now allows any character to terminate a
986    `:first-' modifier, like csh.
987
988f.  The incremental search code remembers the last search string and uses
989    it if ^R^R is typed without a search string.
990
991------------------------------------------------------------------------------
992This document details the changes between this version, bash-2.05-release,
993and the previous version, bash-2.05-beta2.
994
9951.  Changes to Bash
996
997a.  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
1001b.  Fixed a bug in the pattern matching code that caused `[' to be treated
1002    as a special character inside a `[...]' bracket expression.
1003
1004c.  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
1008d.  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
1012e.  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
1015f.  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
1019g.  When started in POSIX mode, either by `bash --posix', `bash -o posix', or
1020    `sh', $SHELLOPTS includes `posix' and POSIXLY_CORRECT is set.
1021
1022h.  Fixed a problem that caused the `\W' prompt string escape sequence to
1023    expand to nothing when $PWD was `//'.
1024
1025i.  The `bashbug' shell script no longer uses $(...) command substitution.
1026
1027j.  When `set' is invoked without options in POSIX mode, it no longer prints
1028    the names and definitions of shell functions.
1029
10302.  Changes to Readline
1031
1032a.  rl_set_paren_blink_timeout() is now documented.
1033
1034b.  Corrected history.3 man page: `$' is not in the default value of
1035    history_word_delimiters.
1036
1037c.  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
10413.  New Features in Bash
1042
1043a.  The `>&word' redirection now works in POSIX mode as it does by default,
1044    since POSIX.2 leaves it unspecified.
1045
1046------------------------------------------------------------------------------
1047This document details the changes between this version, bash-2.05-beta2,
1048and the previous version, bash-2.05-beta1.
1049
10501.  Changes to Bash
1051
1052a.  Fixed a bug in the arithmetic evaluation code so that a^=b is supported.
1053
1054b.  Fixed startup so posixly_correct is retained across subshells begun to
1055    execute scripts without a leading `#!'.
1056
1057c.  Fixed a bug that caused $(< file) to not work in a (...) subshell.
1058
1059d.  Added config support for Linux running on the IBM S390.
1060
1061e.  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
1065f.  Made a change so that command completion now makes about half as many
1066    stat(2) calls when searching the $PATH.
1067
1068g.  Fixed a bug that caused variable assignments preceding `return' to not
1069    be propagated to the shell environment in POSIX mode.
1070
1071h.  Fixed a bug with ${parameter[:]?word} -- tilde expansion was not performed
1072    on `word'.
1073
1074i.  In POSIX mode, `break' and `continue' do not complain and return success
1075    if called when the shell is not executing a loop.
1076
1077j.  Fixed `bash -o posix' to work the same as `bash --posix'.
1078
1079k.  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
1083l.  In POSIX mode, shells started to execute command substitutions inherit
1084    the value of the `-e' option from their parent shell.
1085
1086m.  In POSIX mode, aliases are expanded even in non-interactive shells.
1087
1088n.  Changed some of the job control messages to display the text required by
1089    POSIX.2 when the shell is in POSIX mode.
1090
1091o.  Fixed a bug in `test' that caused it to occasionally return incorrect
1092    results when non-numeric arguments were supplied to `-t'.
1093
10942.  Changes to Readline
1095
1096a.  Some changes were made to avoid gcc warnings with -Wall.
1097
1098b.  rl_get_keymap_by_name now finds keymaps case-insensitively, so
1099    `set keymap EMACS' works.
1100
1101c.  The history file writing and truncation functions now return a useful
1102    status on error.
1103
1104d.  Fixed a bug that could cause applications to dereference a NULL pointer
1105    if a NULL second argument was passed to history_expand().
1106
11073.  New Features in Bash
1108
1109a.  doc/readline.3 has been moved to the readline distribution.
1110
11114.  New Features in Readline
1112
1113a.  New function, rl_get_screen_size (int *rows, int *columns), returns
1114    readline's idea of the screen dimensions.
1115
1116b.  The timeout in rl_gather_tyi (readline keyboard input polling function)
1117    is now settable via a function (rl_set_keyboard_input_timeout()).
1118
1119c.  Renamed the max_input_history variable to history_max_entries; the old
1120    variable is maintained for backwards compatibility.
1121
1122d.  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------------------------------------------------------------------------------
1127This document details the changes between this version, bash-2.05-beta1,
1128and the previous version, bash-2.05-alpha1.
1129
11301.  Changes to Bash
1131
1132a.  Changes to allow shared library and object building on the GNU Hurd.
1133
1134b.  Fixes to the way exported functions are placed into the environment and
1135    cached.
1136
1137c.  The globbing library once again respects locales when processing ranges
1138    in bracket expressions while doing pattern matching.
1139
1140d.  System-specific configuration changes for:  Tru 64, Interix
1141
1142e.  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
1145f.  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
1148g.  Fixed a bug in the execution of shell scripts that caused the effects of
1149    $BASH_ENV to be undone in some cases.
1150
1151h.  Fixed several bugs that made `bash [-i] /dev/stdin' not work correctly.
1152
1153i.  Several changes to the job control code to avoid some signal state
1154    manipulation.
1155
1156j.  The Bash malloc no longer blocks signals as often, which should make it
1157    faster.
1158
1159k.  Fixed a parsing bug that did not allow backslash to escape a single quote
1160    inside a $'...' construct.
1161
1162l.  Fixed a bug that caused things like ${var:=$'value'} to be parsed
1163    incorrectly.  This showed up in newer versions of autoconf.
1164
1165m.  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
1169n.  Bash now sets the file descriptor it uses to save the file descriptor
1170    opened on a shell script to close on exec.
1171
1172o.  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
1175p.  Fixed the `test' builtin to return an error if `[' is supplied a single
1176    argument that is not `]'.
1177
1178q.  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
1183r.  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
1187s.  HOSTTYPE, OSTYPE, and MACHTYPE are set only if they do not have values
1188    when the shell is started.
1189
1190t.  Fixed a bug that caused SIGINT to kill shell scripts after the script
1191    called `wait'.
1192
1193u.  The `fc' builtin now tries to create its temporary files in the directory
1194    named by $TMPDIR.
1195
1196v.  Bash no longer calls any Readline functions or uses any Readline variables
1197    not declared in readline.h.
1198
1199w.  Fixed a bug that caused some substitutions involving $@ to not be split
1200    correctly, especially expansions of the form ${paramterOPword}.
1201
1202x.  SSH2_CLIENT is now treated like SSH_CLIENT and not auto-exported if it
1203    appears in the initial environment.
1204
1205y.  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
1209z.  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
1213aa. 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 
12172.  Changes to Readline
1218
1219a.  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
1222b.  More `const' changes in function arguments, mostly for completion
1223    functions.
1224
1225c.  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
1228d.  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
1232e.  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
1236f.  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
1240g.  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
12453.  New Features in Bash
1246
1247a.  A new loadable builtin, realpath, which canonicalizes and expands symlinks
1248    in pathname arguments.
1249
1250b.  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
12544.  New Features in Readline
1255
1256a.  New application-callable function rl_set_prompt(const char *prompt):
1257    expands its prompt string argument and sets rl_prompt to the result.
1258
1259b.  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
1263c.  The history example program (examples/histexamp.c) is now built as one
1264    of the examples.
1265
1266------------------------------------------------------------------------------
1267This document details the changes between this version, bash-2.05-alpha1,
1268and the previous version, bash-2.04-release.
1269
12701.  Changes to Bash
1271
1272a.  A fix was made to allow newlines in compond array assignments.
1273
1274b.  configure now checks for real-time signals with unusable values.
1275
1276c.  Interactive shells no longer exit if a substitution fails because of an
1277    unset variable within a sourced file.
1278
1279d.  Fixed a problem with incorrect matching of extended glob patterns when
1280    doing pattern substitution.
1281
1282e.  `{' is now quoted by the completion code when it appears in a filename.
1283
1284f.  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
1288g.  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
1292h.  The {!prefix@} expansion now generates separate words, analogous to $@,
1293    when double-quoted.
1294
1295i.  Command substitution now ignores NUL bytes in the command output, and the
1296    parser ignores them on input.
1297
1298j.  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
1302k.  `pwd' now prints an error message if the write fails when displaying the
1303    current directory.
1304
1305l.  When in POSIX mode, the shell prints trap dispostions without a leading
1306    `SIG' in the signal specification.
1307
1308m.  Fixed a parser bug that caused the current command's line count to be
1309    messed up by a compound array assignment.
1310
1311n.  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
1314o.  System-specific configure changes for:  MacOS X.
1315
1316p.  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
1319q.  Fixed a bug that caused `!' to occasionally not be honored when in
1320    a (...) subshell.
1321
1322r.  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
1325s.  The `source', `.', and `fc' builtins no longer check whether a file is
1326    binary before reading commands from it.
1327
1328t.  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
1332u.  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
1335v.  The history saving code now does a better job of saving blank lines in a
1336    multi-line command.
1337
1338w.  Removed a `feature' that made `ulimit' silently translate `unlimited' to
1339    the current hard limit, which obscured some kernel error returns.
1340
1341x.  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
1349y.  Conditional commands ([[...]]) now perform tilde expansion on their
1350    arguments.
1351
1352z.  Noted in the documentation that `set -a' will cause functions to be
1353    exported if they are defined after `set -a' is executed.
1354
1355aa. 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
1358bb. Fixed `printf' to handle invalid floating point numbers better.
1359
1360cc. Temporary files are now created with random filenames, to improve security.
1361
1362dd. The readline initialization code now binds the custom bash functions and
1363    key bindings after the readline defaults are set up.
1364
1365ee. 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
1368ff. A bug fix was made in the expansion of `$*' in contexts where it should
1369    not be split, like assignment statements.
1370
1371gg. 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
1375hh. The `<>' redirection is no longer subject to the current setting of
1376    `noclobber', as POSIX.2 specifies.
1377
1378ii. Fixed a bug in the conditional command parsing code that caused expressions
1379    in parentheses to occasionally be parsed incorrectly.
1380
1381jj. Fixed a bug in the ((...)) arithmetic command to allow do...done or
1382    {...} to follow the )) without an intervening list terminator.
1383
1384kk. `printf' now treats `\E' the same as `\e' when performing backslash escape
1385    expansion for the `%b' format specifier.
1386
1387ll. 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
1390mm. Interactive comments are no longer turned off when POSIX mode is disabled.
1391
1392nn. The UID, EUID, HOSTNAME variables are not set if they are in the shell's
1393    environment when it starts up.
1394
1395oo. 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
1398pp. ${foo[@]} and ${foo[*]} now work as in ksh93 if `foo' is not an array
1399    variable.
1400
1401qq. ${#foo[X]}, where X is 0, @, or *, now work as in ksh93 if `foo' is not
1402    an array variable.
1403
1404rr. The shell's idea of an absolute pathname now takes into account a
1405    possible drive specification on Cygwin and other Windows systems.
1406
1407ss. 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
1411tt. Fixed a bug that caused restricted shell mode to be set inappropriately
1412    when trying to execute a shell script without a leading `#!'.
1413
1414uu. Shell function definitions no longer require that the body be a group
1415    command ( {...} ), as POSIX.2 requires.
1416
1417vv. The `cd' and `pwd' builtins now process symlinks in pathnames internally
1418    and should require many fewer calls to getcwd().
1419
1420ww. 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
1423xx. Fixed a bug that caused core dumps when expanding the value of HISTIGNORE.
1424
1425yy. The output of `set' is now quoted using $'...' so invisible characters are
1426    displayed as escape sequences.
1427
1428zz. Fixed the help text for `unset', since PATH and IFS may both be unset.
1429
1430aaa. The shell no longer puts directory names into the command hash table.
1431
1432bbb. 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
1435ccc. Assignment statements that attempt to assign values to readonly variables
1436     now cause the command to return an error status.
1437
1438ddd. Fixed a bug that could cause incorrect output if a $(<file) construct was
1439     interrupted.
1440
1441eee. 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
1445fff. The string-to-integer conversion code now ignores trailing whitespace in
1446     the string, even if strtol(3) does not.
1447
1448ggg. 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
1452hhh. 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
1455iii. Fixed a bug in the parameter pattern substitution code to avoid infinite
1456     recursion on zero-length matches.
1457
14582.  Changes to Readline
1459
1460a.  When setting the terminal attributes on systems using `struct termio',
1461    readline waits for output to drain before changing the attributes.
1462
1463b.  A fix was made to the history word tokenization code to avoid attempts to
1464    dereference a null pointer.
1465
1466c.  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
1469d.  Instead of calling (*rl_getc_function)() directly to get input in certain
1470    places, readline now calls rl_read_key() consistently.
1471
1472e.  Fixed a bug in the completion code that allowed a backslash to quote a
1473    single quote inside a single-quoted string.
1474
1475f.  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
1480g.  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
1483h.  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
1487i.  The control character detection code now works better on systems where
1488    `char' is unsigned by default.
1489
1490j.  The vi-mode numeric argument is now capped at 999999, just like emacs mode.
1491
1492k.  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
1496m.  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
1500n.  The ding() convenience function has been renamed to rl_ding(), though the
1501    old function is still defined for backwards compatibility.
1502
1503o.  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
1507p.  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
1510q.  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
1514r.  Fixed a redisplay bug that occurred when the prompt spanned more than one
1515    physical line and contained invisible characters.
1516
15173.  New Features in Bash
1518
1519a.  Added a new `--init-file' invocation argument as a synonym for `--rcfile',
1520    per the new GNU coding standards.
1521
1522b.  The /dev/tcp and /dev/udp redirections now accept service names as well as
1523    port numbers.
1524
1525c.  `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
15364.  New Features in Readline
1537
1538a.  The blink timeout for paren matching is now settable by applications.
1539
1540b.  _rl_executing_macro has been renamed to rl_executing_macro, which means
1541    it's now part of the public interface.
1542
1543c.  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------------------------------------------------------------------------------
1548This document details the changes between this version, bash-2.04-release,
1549and the previous version, bash-2.04-beta5.
1550
15511.  Changes to Bash
1552
1553a.  Better compile-time and configure-time checks for the necessity of
1554    inet_aton().
1555
1556b.  A bug was fixed in the expansion of "${@:-}" when there are positional
1557    parameters.
1558
1559c.  A typo was fixed in the output of `complete'.
1560
1561d.  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
1565e.  Some fixes were made for systems which do not restart read(2) when a
1566    signal caught by bash is received.
1567
1568f.  A bug was fixed which caused the umask to be set to 0 when an invalid
1569    symbolic mode mask was parsed.
1570
1571g.  Fixed a bug that could cause a core dump if a SIGCHLD was received while
1572    performing an assignment statement using command substitution.
1573
1574h.  Changed the word splitting function for programmable completion so cases
1575    in which the cursor is between words are handled a bit better.
1576
15772.  Changes to Readline
1578
1579a.  rl_funmap_names() is now documented.
1580
15813.  New Features in Bash
1582
1583a.  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------------------------------------------------------------------------------
1588This document details the changes between this version, bash-2.04-beta5,
1589and the previous version, bash-2.04-beta4.
1590
15911.  Changes to Bash
1592
1593a.  A couple of changes were made to the Makefiles for easier building on
1594    non-Unix systems.
1595
1596b.  Fixed a bug where the current prompt would be set to $PS2 at startup.
1597
1598c.  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
1601d.  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
1607e.  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
1610f.  A bug was fixed in the ulimit builtin for systems not using getrlimit().
1611
1612g.  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
1617h.  Negative exponents in the arithmetic evaluation of v**e now return an
1618    evaluation error.
1619
1620i.  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
1624j.  Fixed a bug that caused $PS2 to be displayed after PROMPT_COMMAND was
1625    executed.
1626
16272.  Changes to Readline
1628
16291.  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------------------------------------------------------------------------------
1633This document details the changes between this version, bash-2.04-beta4,
1634and the previous version, bash-2.04-beta3.
1635
16361.  Changes to Bash
1637
1638a.  A couple of changes were made to the redirection to attempt to avoid
1639    race conditions and malicious file replacement.
1640
16412.  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
16453.  A bug that caused $LINENO to be wrong when executing arithmetic for
1646    commands was fixed.
1647
16484.  A couple of memory leaks in the programmable completion code were fixed.
1649
16505.  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------------------------------------------------------------------------------
1655This document details the changes between this version, bash-2.04-beta3,
1656and the previous version, bash-2.04-beta2.
1657
16581.  Changes to Bash
1659
1660a.  Bash should run the appropriate startup files when invoked by ssh2.
1661
1662b.  Fixed a bug in the parsing of conditional commands that could cause a
1663    core dump.
1664
1665c.  Fixed a bug in parsing job specifications that occasionally caused
1666    core dumps when an out-of-range job was referenced.
1667
1668d.  Fixed the `type' and `command' builtins to do better reporting of
1669    commands that are not found in $PATH or the hash table.
1670
1671e.  Fixed a POSIX.2 compliance problem in the command builtin -- commands
1672    are supposed to be reported as full pathnames.
1673
1674f.  The `echo' builtin now returns failure if a write error occurs.
1675
1676g.  Fixed a bug which caused the locale to not be reset correctly when
1677    LC_ALL was unset.
1678
1679h.  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
1682i.  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
1685j.  Bashbug now tries harder to find a usable editor if $EDITOR is not set,
1686    rather than simply defaulting to `emacs'.
1687
1688k.  Changes to the scripts that guess and canonicalize the system type, from
1689    the latest `automake' distribution via Debian.
1690
1691l.  When using named pipes for process substitution, make sure the file
1692    descriptors opened for reading are set to non-blocking mode.
1693
1694m.  Fixed a bug that caused termination of pipelines that are killed by a
1695    signal to not be reported in some cases.
1696
1697n.  When not in literal-history mode, shell comment lines are not added to
1698    the history list.
1699
1700o.  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
1704p.  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
1708q.  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
1712r.  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
1716s.  Changed the tilde expansion code for Cygwin systems to avoid creating
1717    pathnames beginning with `//' if $HOME == `/'.
1718
1719t.  Fixed a couple of autoconf tests to avoid creating files with fixed names
1720    in /tmp.
1721
1722u.  The `trap' and `kill' builtins now know the names of the POSIX.1b real-
1723    time signals on systems which support them.
1724
17252.  Changes to Readline
1726
1727a.  Fixed a problem with the single-quote quoting function that could cause
1728    buffer overflows.
1729
1730b.  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
17343.  New Features in Bash
1735
1736a.  There is a new `rbash.1' manual page, from the Debian release.
1737
1738b.  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------------------------------------------------------------------------------
1743This document details the changes between this version, bash-2.04-beta2,
1744and the previous version, bash-2.04-beta1.
1745
17461.  Changes to Bash
1747
1748a.  Fixed a bug that could cause pipes to be closed inappropriately in
1749    some obscure cases.
1750
1751b.  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
1754c.  Some changes were made to reduce bash's memory usage.
1755
1756d.  Fixed a problem with programmable completion and filenames to be
1757    completed containing quote characters.
1758
1759e.  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
1763f.  Fixed a bug in `select' which caused it to not handle the `continue'
1764    builtin correctly.
1765
1766g.  Autoconf tests added for cygwin32 and mingw32.
1767
17682.  New Features in Bash
1769
1770a.  The `--with-bash-malloc' configure option replaces `--with-gnu-malloc'
1771    (which is still there for backwards compatibility).
1772
1773------------------------------------------------------------------------------
1774This document details the changes between this version, bash-2.04-beta1,
1775and the previous version, bash-2.04-alpha1.
1776
17771.  Changes to Bash
1778
1779a.  Fixed a bug in the programmable completion code that occurred when
1780    trying to complete command lines containing a `;' or `@'.
1781
1782b.  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
1785c.  Changes to `printf' so that it can handle integers beginning with 0
1786    or 0x as octal and hex, respectively.
1787
1788d.  Fixes to the programmable completion code so it handles nonsense like
1789    `compgen -C xyz' gracefully.
1790
1791e.  The shell no longer modifies the signal handler for SIGPROF, allowing
1792    profiling again on certain systems.
1793
1794f.  The shell checks for a new window size, if the user has requested it,
1795    after a process exits due to a signal.
1796
1797g.  Fixed a bug with variables with null values in a program's temporary
1798    environment and the bash getenv() replacement.
1799
1800h.  `declare' and the other builtins that take variable assignments as
1801    arguments now honor `set -a' and mark modified variables for export.
1802
1803i.  Some changes were made for --dump-po-strings mode when writing strings
1804    with embedded newlines.
1805
1806j.  The code that caches export strings from the initial environment now
1807    duplicates the string rather than just pointing into the environment.
1808
1809k.  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
1813l.  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
1816m.  Configuration changes were made for: Rhapsody, Mac OS, FreeBSD-3.x.
1817
1818n.  Fixed a problem with hostname-to-ip-address translation in the
1819    /dev/(tcp|udp)/hostname/port redirection code.
1820
1821o.  The texinfo manual has been reorganized slightly.
1822
1823p.  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
1827q.  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
1830r.  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
1834s.  Fixed a bug where the INVERT_RETURN flag was not being set for `pipeline'
1835    in `time ! pipeline'.
1836
1837t.  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
1841u.  Fixed the DEBUG trap code so that it has the correct value of $?.
1842
1843v.  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
1847w.  Fixed a bug in the positional parameter substring code that could
1848    cause the shell to loop freeing freed memory.
1849
1850x.  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
1854y.  The shell no longer attempts to import functions from the environment if
1855    started with `-n'.
1856
1857z.  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
1861aa. `hash -p /pathname/with/slashes name' is no longer allowed when the shell
1862    is restricted.
1863
1864bb. The wait* job control functions now behave better if called when there
1865    are no unwaited-for children.
1866
1867cc. Command substitution no longer unconditionally disables job control in
1868    the subshell started to run the command.
1869
1870dd. A bug was fixed that occasionally caused traps to mess up the parser
1871    state.
1872
1873ee. `bashbug' now honors user headers in the mail message it sends.
1874
1875ff. A bug was fixed that caused the `:p' history modifier to not print the
1876    history expansion if the `histverify' option was set.
1877
18782.  Changes to Readline
1879
1880a.  Fixed a bug in the redisplay code for lines with more than 256 line
1881    breaks.
1882
1883b.  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
1886c.  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
1891d.  Fixes to the SIGWINCH code so that a multiple-line prompt with escape
1892    sequences is redrawn correctly.
1893
18943.  New Features in Bash
1895
1896a.  `bashbug' now accepts `--help' and `--version' options.
1897
1898b.  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------------------------------------------------------------------------------
1902This document details the changes between this version, bash-2.04-alpha1,
1903and the previous version, bash-2.04-devel.
1904
19051.  Changes to Bash
1906
1907a.  Fixed a bug that could cause core dumps when performing substring
1908    expansion.
1909
1910b.  Shared object configuration changes for:  Solaris, OSF/1
1911
1912c.  The POSIX_GLOB_LIBRARY code that uses the POSIX.2 globbing facilities
1913    for pathname expansion now understands GLOBIGNORE.
1914
1915d.  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
1919e.  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
1924f.  Fixed a bug that caused the expansion code to occasionally dump core if
1925    IFS contained characters > 128.
1926
1927g.  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
1931h.  Variable indirection may now reference the shell's special variables.
1932
1933i.  The $'...' and $"..." constructs are now added to the history correctly
1934    if they contain newlines and command-oriented history is enabled.
1935
1936j.  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
19392.  Changes to Readline
1940
1941a.  The history file code now uses O_BINARY mode when reading and writing
1942    the history file on cygwin32.
1943
19443.  New Features in Bash
1945
1946a.  A new programmable completion facility, with two new builtin commands:
1947    complete and compgen.
1948
1949b.  configure has a new option, `--enable-progcomp', to compile in the
1950    programmable completion features (enabled by default).
1951
1952c.  `shopt' has a new option, `progcomp', to enable and disable programmable
1953    completion at runtime.
1954
1955d.  Unsetting HOSTFILE now clears the list of hostnames used for completion.
1956
19574.  New Features in Readline
1958
1959a.  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------------------------------------------------------------------------------
1964This document details the changes between this version, bash-2.04-devel,
1965and the previous version, bash-2.03-release.
1966
19671.  Changes to Bash
1968
1969a.  System-specific configuration and source changes for:  Interix, Rhapsody
1970
1971b.  Fixed a bug in execute_cmd.c that resulted in a compile-time error if
1972    JOB_CONTROL was not defined.
1973
1974c.  An obscure race condition in the trap code was fixed.
1975
1976d.  The string resulting from $'...' is now requoted to avoid any further
1977    expansion.
1978
1979e.  The $'...' quoting syntax now allows backslash to escape a single quote,
1980    for ksh-93 compatibility.
1981
1982f.  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
1986g.  `echo -e' no longer converts \' to '.
1987
1988h.  Fixes were made to the extended globbing code to handle embedded (...)
1989    patterns better.
1990
1991i.  Some improvements were made to the code that unsets `nodelay' mode on
1992    the file descriptor from which bash is reading input.
1993
1994j.  Some changes were made to the replacement termcap library for better
1995    operation on MS-DOS.
1996
1997k.  Some changes were made to the tilde expansion code to handle backslash
1998    as a pathname separator on MS-DOS.
1999
2000l.  The source has been reorganized a little bit -- there is now an `include'
2001    subdirectory, and lib/posixheaders has been removed.
2002
2003m.  Improvements were made to the `read' builtin so that it makes many
2004    fewer read(2) system calls.
2005
2006n.  The expansion of $- will include `c' and `s' when those options are
2007    supplied at shell invocation.
2008
2009o.  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
2014p.  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
2017q.  Some changes were made to make exported environment creation faster.
2018
2019r.  The html documentation will be installed into $(htmldir) if that variable
2020    has a value when `make install' is run.
2021
2022s.  Fixed a bug that would cause the bashrc file to be sourced inappropriately
2023    when bash is started by sshd.
2024
2025t.  The SSH_CLIENT environment variable is no longer auto-exported.
2026
2027u.  A bug that caused redirections with (...) subshells to be performed in
2028    the wrong order was fixed.
2029
2030v.  A bug that occasionally caused inappropriate expansion of assignment
2031    statements in compound array assignments was fixed.
2032
2033w.  The code that parses the words in a compound array assignment was
2034    simplified considerably and should work better now.
2035
2036x.  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
2040y.  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
20442.  Changes to Readline
2045
2046a.  The history library tries to truncate the history file only if it is a
2047    regular file.
2048
2049b.  A bug that caused _rl_dispatch to address negative array indices on
2050    systems with signed chars was fixed.
2051
2052c.  rl-yank-nth-arg now leaves the history position the same as when it was
2053    called.
2054
2055d.  Changes to the completion code to handle MS-DOS drive-letter:pathname
2056    filenames.
2057
2058e.  Completion is now case-insensitive by default on MS-DOS.
2059
2060f.  Fixes to the history file manipulation code for MS-DOS.
2061
2062g.  Readline attempts to bind the arrow keys to appropriate defaults on MS-DOS.
2063
2064h.  Some fixes were made to the redisplay code for better operation on MS-DOS.
2065
2066i.  The quoted-insert code will now insert tty special chars like ^C.
2067
2068j.  A bug was fixed that caused the display code to reference memory before
2069    the start of the prompt string.
2070
2071k.  More support for __EMX__ (OS/2).
2072
2073l.  A bug was fixed in readline's signal handling that could cause infinite
2074    recursion in signal handlers.
2075
2076m.  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
2079n.  The vi-mode code now gets characters via the application-settable value
2080    of rl_getc_function rather than calling rl_getc directly.
2081
20823.  New Features in Bash
2083
2084a.  The history builtin has a `-d offset' option to delete the history entry
2085    at position `offset'.
2086
2087b.  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
2090c.  The `bind' builtin has a new `-x' option to bind key sequences to shell
2091    commands.
2092
2093d.  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
2096e.  The `help' builtin has a `-s' option to just print a builtin's usage
2097    synopsys.
2098
2099f.  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
2103g.  There is a new ksh-93 style arithmetic for command:
2104        for ((expr1 ; expr2; expr3 )); do list; done
2105
2106h.  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
2112i.  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
2116j.  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
2120k.  The ksh-93 ${!prefix*} expansion, which expands to the names of all
2121    shell variables whose names start with prefix, has been implemented.
2122
2123l.  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
2126m.  The GROUPS variable is no longer readonly; assignments to it are silently
2127    discarded.  This means it can be unset.
2128
21294.  New Features in Readline
2130
2131a.  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
2135b.  MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename.
2136
2137c.  MS-DOS systems now use ~/_history as the default history file.
2138
2139d.  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
2143e.  history-search-{forward,backward} now leave the last history line found
2144    in the readline buffer if the second or subsequent search fails.
2145
2146f.  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
2149g.  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------------------------------------------------------------------------------
2154This document details the changes between this version, bash-2.03-release,
2155and the previous version, bash-2.03-beta2.
2156
21571.  Changes to Bash
2158
2159a.  A file descriptor leak in the `fc' builtin was fixed.
2160
2161b.  A bug was fixed in the `read' builtin that caused occasional spurious
2162    failures when using `read -e'.
2163
2164c.  The version code needed to use the value of the cpp variable
2165    CONF_MACHTYPE rather than MACHTYPE.
2166
2167d.  A new test was added to exercise the command printing and copying code.
2168
2169e.  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------------------------------------------------------------------------------
2173This document details the changes between this version, bash-2.03-beta2,
2174and the previous version, bash-2.03-beta1.
2175
21761.  Changes to Bash
2177
2178a.  Slight additions to support/shobj-conf, mostly for the benefit of AIX 4.2.
2179
2180b.  config.{guess,sub} support added for the NEC SX4.
2181
2182c.  Changed some of the cross-compiling sections of the configure macros in
2183    aclocal.m4 so that configure won't abort.
2184
2185d.  Slight changes to how the HTML versions of the bash and readline manuals
2186    are generated.
2187
2188e.  Fixed conditional command printing to avoid interpreting printf `%'-escapes
2189    in arguments to [[.
2190
2191f.  Don't include the bash malloc on all variants of the alpha processor.
2192
2193g.  Changes to configure to make --enable-profiling work on Solaris 2.x.
2194
2195h.  Fixed a bug that manifested itself when shell functions were called
2196    between calls to `getopts'.
2197
2198i.  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
2202j.  Fixed a bug in the command execution code that caused child processes
2203    to occasionally have the wrong value for $!.
2204
22052.  Changes to Readline
2206
2207a.  Added code to the history library to catch history substitutions using
2208    `&' without a previous history substitution or search having been
2209    performed.
2210
22113.  New Features in Bash
2212
22134.  New Features in Readline
2214
2215a.  New bindable variable: `isearch-terminators'.
2216
2217b.  New bindable function: `forward-backward-delete-char' (unbound by default).
2218
2219------------------------------------------------------------------------------
2220This document details the changes between this version, bash-2.03-beta1,
2221and the previous version, bash-2.03-alpha.
2222   
22231.  Changes to Bash
2224
2225a.  A change was made to the help text for `{...}' to make it clear that a
2226    semicolon is required before the closing brace.
2227
2228b.  A fix was made to the `test' builtin so that syntax errors cause test
2229    to return an exit status > 1.
2230
2231c.  Globbing is no longer performed on assignment statements that appear as
2232    arguments to `assignment builtins' such as `export'.
2233
2234d.  System-specific configuration changes were made for:  Rhapsody,
2235    AIX 4.2/gcc, BSD/OS 4.0.
2236
2237e.  New loadable builtins: ln, unlink.
2238
2239f.  Some fixes were made to the globbing code to handle extended glob patterns
2240    which immediately follow a `*'.
2241
2242g.  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
2246h.  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
2250i.  A fix was made so that loops containing `eval' commands in commands passed
2251    to `bash -c' would not exit prematurely.
2252
2253j.  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
2257k.  A fix was made so that `jobs | command' works again.
2258
2259l.  The erroneous compound array assignment var=((...)) is now a syntax error.
2260
2261m.  A change was made to the dynamic loading code in `enable' to support
2262    Tenon's MachTen.
2263
2264n.  A fix was made to the globbing code so that extended globbing patterns
2265    will correctly match `.' in a bracket expression.
2266
22672.  Changes to Readline
2268
2269a.  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
2273b.  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
22783.  New Features in Bash
2279
2280a.  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
22844.  New Features in Readline
2285
2286a.  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------------------------------------------------------------------------------
2291This document details the changes between this version, bash-2.03-alpha,
2292and the previous version, bash-2.02.1-release.
2293
22941.  Changes to Bash
2295
2296a.  System-specific configuration changes were made for: Irix 6.x, Unixware 7.
2297
2298b.  The texi2dvi and texi2html scripts were updated to the latest versions
2299    from the net.
2300
2301c.  The configure tests that determine which native type is 32 bits were
2302    changed to not require a compiled program.
2303
2304d.  Fixed a bug in shell_execve that could cause memory to be freed twice
2305    after a failed exec.
2306
2307e.  The `printf' test uses `diff -a' if it's available to prevent confusion
2308    due to the non-ascii output.
2309
2310f.  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
2314g.  Some changes were made to `ulimit' to avoid the use of RLIM_INVALID as a
2315    return value.
2316
2317h.  Changes were made to `ulimit' to work around HPUX 9.x's peculiar
2318    handling of RLIMIT_FILESIZE.
2319
2320i.  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
2324j.  Changes were made to `printf' to handle NUL bytes in the expanded format
2325    string.
2326
2327k.  The various `make clean' Makefile targets now descend into lib/sh.
2328
2329l.  The `type' builtin was changed to use the internal `getopt' so that things
2330    like `type -ap' work as expected.
2331
2332m.  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
2337n.  There is a new autoconf macro used to find which basic type is 64 bits.
2338
2339o.  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
2343p.  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
2347q.  The prompt expansion code now quotes the `$' in the `\$' expansion so it
2348    is not processed by subsequent parameter expansion.
2349
2350r.  Fixed a parsing bug that caused a single or double quote after a `$$' to
2351    trigger ANSI C expansion or locale translation.
2352
2353s.  Fixed a bug in the globbing code that caused quoted filenames containing
2354    no globbing characters to sometimes be incorrectly expanded.
2355
2356t.  Changes to the default prompt strings if prompt string decoding is not
2357    compiled into the shell.
2358
2359u.  Added `do', `then', `else', `{', and `(' to the list of keywords that may
2360    precede the `time' reserved word.
2361
2362v.  The shell may now be cross-built for BeOS as well as cygwin32.
2363
2364w.  The conditional command execution code now treats `=' the same as `=='
2365    for deciding when to perform pattern matching.
2366
2367x.  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
2370y.  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
2373z.  Array assignments of the form a=(...) no longer show up in the history
2374    list.
2375
2376aa. The parser was fixed to obey the POSIX.2 rules for finding the closing
2377    `}' in a ${...} expression.
2378
2379bb. 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
2382cc. Setting LANG no longer causes LC_ALL to be assigned a value; bash now
2383    relies on proper behavior from the C library.
2384
2385dd. Minor changes were made to allow quoted variable expansions using
2386    ${...} to be completed correctly if there is no closing `"'.
2387
2388ee. 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
23922.  Changes to Readline
2393
2394a.  The version number is now 4.0.
2395
2396b.  There is no longer any #ifdef SHELL code in the source files.
2397
2398c.  Some changes were made to the key binding code to fix memory leaks and
2399    better support Win32 systems.
2400
2401d.  Fixed a silly typo in the paren matching code -- it's microseconds, not
2402    milliseconds.
2403
2404e.  The readline library should be compilable by C++ compilers.
2405
2406f.  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
2410g.  The maximum numeric argument is now clamped at 1000000.
2411
2412h.  Fixes to rl_yank_last_arg to make it behave better.
2413
2414i.  Fixed a bug in the display code that caused core dumps if the prompt
2415    string length exceeded 1024 characters.
2416
2417j.  The menu completion code was fixed to properly insert a single completion
2418    if there is only one match.
2419
2420k.  A bug was fixed that caused the display code to improperly display tabs
2421    after newlines.
2422
24233.  New Features in Bash
2424
2425a.  New `shopt' option, `restricted_shell', indicating whether or not the
2426    shell was started in restricted mode, for use in startup files.
2427
2428b.  Filename generation is now performed on the words between ( and ) in
2429    array assignments (which it probably should have done all along).
2430
2431c.  OLDPWD is now auto-exported, as POSIX.2 seems to require.
2432
2433d.  ENV and BASH_ENV are read-only variables in a restricted shell.
2434
24354.  New Features in Readline
2436
2437a.  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
2456b.  There is a new function, rl_resize_terminal, to reset readline's idea of
2457    the screen size after a SIGWINCH.
2458
2459c.  New public functions: rl_save_prompt and rl_restore_prompt.  These were
2460    previously private functions with a `_' prefix.
2461
2462d.  New function hook: rl_pre_input_hook, called just before readline starts
2463    reading input, after initialization.
2464
2465e.  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
2470f.  New bindable function, delete-char-or-list, like tcsh.
2471
2472------------------------------------------------------------------------------
2473This document details the changes between this version, bash-2.02.1-release,
2474and the previous version, bash-2.02-release.
2475
24761.  Changes to Bash
2477
2478a.  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
2481b.  Fixed a bug that could cause a core dump when here documents contained
2482    more than 1000 characters.
2483
2484c.  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
2487d.  Fixed an alignment problem with the memory returned by the bash malloc,
2488    so returned memory is now 64-bit aligned.
2489
2490e.  Fixed a bug that caused command substitutions executed within pipelines
2491    to put the terminal in the wrong process group.
2492
2493f.  Fixes to support/config.sub for: alphas, SCO Open Server and Open Desktop,
2494    Unixware 2, and Unixware 7.
2495
2496g.  Fixes to the pattern matching code to make it work correctly for eight-bit
2497    characters.
2498
2499h.  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
2503i.  Fixed a bug that caused core dumps when using conditional commands in
2504    shell functions.
2505
2506j.  Fixed a bug that caused the printf builtin to loop forever if the format
2507    string did not consume any of the arguments.
2508
2509k.  Fixed a bug in the parameter expansion code that caused "$@" to be
2510    incorrectly split if $IFS did not contain a space character.
2511
2512l.  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
2515m.  Fixed a bug that caused the shell to fork too early when a command
2516    such as `%2 &' was given.
2517
25182.  Changes to Readline
2519
2520a.  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------------------------------------------------------------------------------
2524This document details the changes between this version, bash-2.02-release,
2525and the previous version, bash-2.02-beta2.
2526
25271.  Changes to Bash
2528
2529a.  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------------------------------------------------------------------------------
2534This document details the changes between this version, bash-2.02-beta2,
2535and the previous version, bash-2.02-beta1.
2536
25371.  Changes to Bash
2538
2539a.  Attempting to `wait' for stopped jobs now generates a warning message.
2540
2541b.  Pipelines which exit due to SIGPIPE in non-interactive shells are now
2542    not reported if the shell is compiled -DDONT_REPORT_SIGPIPE.
2543
2544c.  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
2548d.  Fixed a bug that caused the shell not to compile if configured with
2549    dparen arithmetic but without aliases.
2550
2551e.  Fixed a bug that caused the input stream to be switched when assigning
2552    empty arrays with `bash -c'.
2553
2554f.  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
2557g.  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
2561h.  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
2565i.  Fixed a bug in the exit trap code that caused reserved words to not be
2566    recognized under certain circumstances.
2567
2568j.  Fixed a bug in the parameter pattern substitution code so that quote
2569    removal is performed.
2570
2571k.  The shell should now configure correctly on Apple Rhapsody systems.
2572
2573l.  The `kill' builtin now prints a usage message if it is not passed any
2574    arguments.
2575
2576------------------------------------------------------------------------------
2577This document details the changes between this version, bash-2.02-beta1,
2578and the previous version, bash-2.02-alpha1.
2579
25801.  Changes to Bash
2581
2582a.  A few compilation bugs were fixed in the new extended globbing code.
2583
2584b.  Executing arithmetic commands now sets the command name to `((' so
2585    error messages look right.
2586
2587c.  Fixed some build problems with various configuration options.
2588
2589d.  The `printf' builtin now aborts immediately if an illegal format
2590    character is encountered.
2591
2592e.  The code that creates here-documents now behaves better if the file it's
2593    trying to create already exists for some reason.
2594
2595f.  Fixed a problem with the extended globbing code that made patterns like
2596    `x+*' expand incorrectly.
2597
2598g.  The prompt string expansion code no longer quotes tildes with backslashes.
2599
2600h.  The bash getcwd() implementation in lib/sh/getcwd.c now behaves better in
2601    the presence of lstat(2) failures.
2602
2603i.  Fixed a bug with strsub() that caused core dumps when executing `fc -s'.
2604
2605j.  The mail checking code now ensures that it has a valid default mailpath.
2606
2607k.  A bug was fixed that caused local variables to be unset inappropriately
2608    when sourcing a script from within another sourced script.
2609
2610l.  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
2614m.  A bug was fixed that caused printf overflows when displaying error
2615    messages.
2616
2617n.  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
2620o.  The user's primary group is now always ${GROUPS[0]}.
2621
2622p.  Some updates were made to support/config.guess from the GNU master copy.
2623
2624q.  Some changes were made to the autoconf support for Solaris 2.6 large
2625    files.
2626
2627r.  The `command' builtins now does the right thing when confstr(3) cannot
2628    find a value for _CS_PATH.
2629
2630s.  Extended globbing expressions like `*.!(c)' are not history expanded if
2631    `extglob' is enabled.
2632
2633t.  Using the `-P' option to `cd' will force the value that is assigned to
2634    PWD to not contain any symbolic links.
2635
26362.  Changes to Readline
2637
2638a.  The code that prints completion listings now behaves better if one or
2639    more of the filenames contains non-printable characters.
2640
2641b.  The time delay when showing matching parentheses is now 0.5 seconds.
2642
2643------------------------------------------------------------------------------
2644This document details the changes between this version, bash-2.02-alpha1,
2645and the previous version, bash-2.01.1-release.
2646
26471.  Changes to Bash
2648
2649a.  OS-specific configuration changes for:  BSD/OS 3.x, Minix 2.x,
2650    Solaris 2.6, SINIX SVR4.
2651
2652b.  Changes were made to the generated `info' files so that `install-info'
2653    works correctly.
2654
2655c.  PWD is now auto-exported.
2656
2657d.  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
2660e.  Changes to the test suite for systems with 14-character filenames.
2661
2662f.  The default sizes of some internal hash tables have been made smaller
2663    to reduce the shell's memory footprint.
2664
2665g.  The `((...))' arithmetic command is now executed directly instead of
2666    being translated into `let "..."'.
2667
2668h.  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
2672i.  The indirect expansion code (${!var}) was changed so that the only
2673    valid values of `var' are variable names, positional parameters, `#',
2674    `@', and `*'.
2675
2676j.  An arithmetic expression error in a $((...)) expansion now causes a
2677    non-interactive shell running in posix mode to exit.
2678
2679k.  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
2683l.  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
2687m.  A couple of bugs with `shopt -o' were fixed.
2688
2689n.  `bash +o' now displays the same output as `set +o' before starting an
2690    interactive shell.
2691
2692o.  A bug that caused command substitution and the `eval' builtin to
2693    occasionally free memory twice when an error was encountered was fixed.
2694
2695p.  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
2699q.  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
2704r.  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
2707s.  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
2710t.  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
2714u.  The filename hashing code was fixed to not add `./' to the beginning of
2715    filenames which already begin with `./'.
2716
2717v.  The configure script was changed so that the GNU termcap library is not
2718    compiled in if `prefer-curses' has been specified.
2719
2720w.  HISTCONTROL and HISTIGNORE are no longer applied to the second and
2721    subsequent lines of a multi-line command.
2722
2723x.  A fix was made to `disown' so that it does a better job of catching
2724    out-of-range jobs.
2725
2726y.  Non-interactive shells no longer report the status of processes terminated
2727    due to SIGINT, even if the standard output is a terminal.
2728
2729z.  A bug that caused the output of `jobs' to have extra carriage returns
2730    was fixed.
2731
2732aa. A bug that caused PIPESTATUS to not be set when builtins or shell
2733    functions were executed in the foreground was fixed.
2734
2735bb. Bash now attempts to detect when it is being run by sshd, and treats
2736    that case identically to being run by rshd.
2737
2738cc. A bug that caused `set -a' to export SHELLOPTS when one of the shell
2739    options was changed was fixed.
2740
2741dd. 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
2745ee. `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
2749ff. A few memory leaks were fixed.
2750
2751gg. `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
2755hh. `alias' and `alias -p' now return a status of 0 when no aliases are
2756    defined, as POSIX.2 specifes.
2757
2758ii. `cd -' now prints the pathname of the new working directory if the shell
2759    is interactive.
2760
2761jj. A fix was made so that the code that binds $PWD now copes with getcwd()
2762    returning NULL.
2763
2764kk. `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
2767ll. A change was made to the code that generates filenames for here documents
2768    to make them less prone to name collisions.
2769
2770mm. The parser was changed so that `time' is recognized as a reserved word
2771    only at the beginning of a pipeline.
2772
2773nn. 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
2777oo. The `logout' builtin will no longer exit a non-interactive non-login
2778    shell.
2779
27802.  Changes to Readline
2781
2782a.  Fixed a problem in the readline test program rltest.c that caused a core
2783    dump.
2784
2785b.  The code that handles parser directives in inputrc files now displays
2786    more error messages.
2787
2788c.  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
27923.  New Features in Bash
2793
2794a.  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
2798b.  A new version of gmalloc, based on the old GLIBC malloc, with many
2799    changes and range checking included by default.
2800
2801c.  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
2806d.  ksh-88 egrep-style extended pattern matching ([@+*?!](patlist)) has been
2807    implemented, controlled by a new `shopt' option, `extglob'.
2808
2809e.  There is a new ksh-like `[[' compound command, which implements
2810    extended `test' functionality.
2811
2812f.  There is a new `printf' builtin, implemented according to the POSIX.2
2813    specification.
2814
2815g.  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
2819h.  There are new tilde prefixes which expand to directories from the
2820    directory stack.
2821
2822i.  There is a new `**' arithmetic operator to do exponentiation.
2823
2824j.  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
2828k.  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
2832l.  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
2836m.  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
2841n.  There is a new invocation option, `--dump-po-strings', to dump
2842    a shell script's translatable strings ($"...") in GNU `po' format.
2843
2844o.  There is a new `shopt' option, `nocaseglob', to enable case-insensitive
2845    pattern matching when globbing filenames and using the `case' construct.
2846
2847p.  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
2851q.  `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
2855r.  `disown' now has `-a' and `-r' options, to limit operation to all jobs
2856    and running jobs, respectively.
2857
2858s.  The `shopt' `-p' option now causes output to be displayed in a reusable
2859    format.
2860
2861t.  `test' has a new `-N' option, which returns true if the filename argument
2862    has been modified since it was last accessed.
2863
2864u.  `umask' now has a `-p' option to print output in a reusable format.
2865
2866v.  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
2870w.  The prompt string expansion code has a new `\r' escape sequence.
2871
2872x.  The shell may now be cross-compiled for the CYGWIN32 environment on
2873    a Unix machine.
2874
28754.  New Features in Readline
2876
2877a.  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
2881b.  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
2885c.  New variable, `completion-ignore-case', which causes filename completion
2886    and matching to be performed case-insensitively.
2887
2888d.  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
2892e.  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
2896f.  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
2900g.  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
2904h.  An `$include' inputrc file parser directive has been added.
2905
2906------------------------------------------------------------------------------
2907This document details the changes between this version, bash-2.01.1-release,
2908and the previous version, bash-2.01-release.
2909
29101.  Changes to Bash
2911
2912a.  The select command was fixed to check the validity of the user's
2913    input more strenuously.
2914
2915b.  A bug was fixed that prevented `time' from timing commands correctly
2916    when supplied as an argument to `bash -c'.
2917
2918c.  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
2922d.  Fixed an off-by-one error in the tilde expansion library.
2923
2924e.  When using the compound array assignment syntax, the old value of
2925    the array is cleared before assigning the new value.
2926
2927f.  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
2930g.  Fixed a bug in the locale code that occurred when assigning a value
2931    to LC_ALL.
2932
2933h.  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
2937i.  A fix was made to the command tracing code to correctly quote each
2938    word of output.
2939
2940j.  Some changes were made to the bash-specific autoconf tests to make them
2941    more portable.
2942
2943k.  Completion of words with globbing characters now correctly quotes the
2944    result.
2945
2946l.  The directory /var/spool/mail is now preferred to /usr/spool/mail when
2947    configure is deciding on the default mail directory.
2948
2949m.  The brace completion code was fixed to not quote the `{' and `}'.
2950
2951n.  Some fixes were made to make $RANDOM more random in subshells.
2952
2953o.  System-specific changes were made to configure for: SVR4.2
2954
2955p.  Changes were made so that completion of words containing globbing chars
2956    substitutes the result only if a single filename was matched.
2957
2958q.  The window size is now recomputed after a job is stopped with SIGTSTP if
2959    the user has set `checkwinsize' with `shopt'.
2960
2961r.  When doing substring expansion, out-of-range substring specifiers now
2962    cause nothing to be substituted rather than an expansion error.
2963
2964s.  A fix was made so that you can no longer trap `SIGEXIT' or `SIGDEBUG' --
2965    only `EXIT' and `DEBUG' are accepted.
2966
2967t.  The display of trapped signals now uses the signal number if signals
2968    for which bash does not know the name are trapped.
2969
2970u.  A fix was made so that `bash -r' does not turn on restricted mode until
2971    after the startup files are executed.
2972
2973v.  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
2977w.  A bug that occasionally caused unallocated memory to be passed to free()
2978    when doing arithmetic substitution was fixed.
2979
2980x.  A bug that caused a buffer overrun when expanding a prompt string
2981    containing `\w' and ${#PWD} exceeded PATH_MAX was fixed.
2982
2983y.  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
2987z.  A bug was fixed so that the `read' builtin restarts reads when
2988    interrupted by signals other than SIGINT.
2989
2990aa. Fixed a bug that caused a command to be freed twice when there was
2991    an evaluation error in the `eval' command.
2992
29932.  Changes to Readline
2994
2995a.  Added a missing `extern' to a declaration in readline.h that kept
2996    readline from compiling cleanly on some systems.
2997
2998b.  The history file is now opened with mode 0600 when it is written for
2999    better security.
3000
3001c.  Changes were made to the SIGWINCH handling code so that prompt redisplay
3002    is done better.
3003
3004d.  ^G now interrupts incremental searches correctly.
3005
3006e.  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------------------------------------------------------------------------------
3010This document details the changes between this version, bash-2.01-release,
3011and the previous version, bash-2.01-beta2.
3012
30131.  Changes to Bash
3014
3015a.  The `distclean' target should remove the `printenv' executable if it
3016    has been created.
3017
3018b.  The test suite was changed slightly to ensure that the error messages
3019    are printed in English.
3020
3021c.  A bug that caused the shell to dump core when a filename containing a
3022    `/' was passed to `hash' was fixed.
3023
3024d.  Pathname canonicalization now leaves a leading `//' intact, as POSIX.1
3025    requires.
3026
3027e.  A memory leak when completing commands was fixed.
3028
3029f.  A memory leak that occurred when checking the hash table for commands
3030    with relative paths was fixed.
3031
3032------------------------------------------------------------------------------
3033This document details the changes between this version, bash-2.01-beta2,
3034and the previous version, bash-2.01-beta1.
3035
30361.  Changes to Bash
3037
3038a.  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
3041b.  Fixed a bug that caused the bash emulation of strcasecmp to produce
3042    incorrect results.
3043
3044c.  A bug that caused memory to be freed twice when a trap handler resets
3045    the trap more than once was fixed.
3046
3047d.  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
3051e.  The startup files should not be run with job control enabled.  This fix
3052    allows SIGINT to once again interrupt startup file execution.
3053
3054f.  Bash should not change the SIGPROF handler if it is set to something
3055    other than SIG_DFL.
3056
3057g.  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
3061h.  The completion code now correctly quotes filenames containing a `!',
3062    even if the user attempted to use double quotes when attempting
3063    completion.
3064
3065i.  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
3068j.  A construct like $((foo);bar) is now processed as a command substitution
3069    rather than as a bad arithmetic substitution.
3070
3071k.  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
3075l.  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
30792.  Changes to Readline
3080
3081a.  A couple of bugs that caused the history search functions to attempt to
3082    free a NULL pointer were fixed.
3083
3084b.  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
3089c.  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
30933.  New Features in Bash
3094
3095a.  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------------------------------------------------------------------------------
3100This document details the changes between this version, bash-2.01-beta1,
3101and the previous version, bash-2.01-alpha1.
3102
31031.  Changes to Bash
3104
3105a.  Fixed a problem that could cause file descriptors used for process
3106    substitution to conflict with those used explicitly in redirections.
3107
3108b.  Made it easier to regenerate configure if the user changes configure.in.
3109
3110c.  ${GROUPS[0]} should always be the primary group, even on systems without
3111    multiple groups.
3112
3113d.  Spelling correction is no longer enabled by default.
3114
3115e.  Fixes to quoting problems in `bashbug'.
3116
3117f.  OS-specific configuration changes were made for: Irix 6.
3118
3119g.  OS-specific code changes were made for: QNX.
3120
3121h.  A more meaningful message is now printed when the file in /tmp for a
3122    here document cannot be created.
3123
3124i.  Many changes to the shell's variable initialization code to speed
3125    non-interactive startup.
3126
3127j.  Changes to the non-job-control code so that it does not try to open
3128    /dev/tty.
3129
3130k.  The output of `set' and `export' is once again sorted, as POSIX wants.
3131
3132l.  Fixed a problem caused by a recursive call reparsing the value of
3133    $SHELLOPTS.
3134
3135m.  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
3139n.  Fixed a problem that caused `bash -o' or `bash +o' to not list all
3140    the shell options.
3141
3142o.  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
3145p.  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
3149q.  Fixed a problem with completion -- it thought that `pwd`/[TAB] indicated
3150    an unfinished command completion (`/), which generated errors.
3151
3152r.  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
3156s.  Added support for <stdarg.h> to places where it was missing.
3157
3158t.  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
3161u.  A number of changes to speed up export environment creation were made.
3162
3163v.  A number of memory leaks were fixed as the result of running the test
3164    scripts through Purify.
3165
3166w.  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
31702.  Changes to Readline
3171
3172a.  History library has less `#ifdef SHELL' code -- abstracted stuff out
3173    into application-specific function hooks.
3174
3175b.  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
3179c.  Fixed translation of ESC when `untranslating' macro values.
3180
3181d.  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
31843.  New Features in Bash
3185
3186a.  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------------------------------------------------------------------------------
3191This document details the changes between this version, bash-2.01-alpha1,
3192and the previous version, bash-2.0-release.
3193
31941.  Changes to Bash
3195
3196a.  System-specific configuration changes for: FreeBSD, SunOS4, Irix,
3197    MachTen, QNX 4.2, Harris Night Hawk, SunOS5.
3198
3199b.  System-specific code changes were made for: Linux, 4.4 BSD, QNX 4.2,
3200    HP-UX, AIX 4.2.
3201
3202c.  A bug that caused the exec builtin to fail because the full pathname of
3203    the command could not be found was fixed.
3204
3205d.  The code that performs output redirections is now more resistant to
3206    race conditions and possible security exploits.
3207
3208e.  A bug that caused the shell to dump core when performing pattern
3209    substitutions on variable values was fixed.
3210
3211f.  More hosts are now recognized by the auto-configuration mechanism
3212    (OpenBSD, QNX, others).
3213
3214g.  Assignments to read-only variables that attempt to convert them to
3215    arrays are now errors.
3216
3217h.  A bug that caused shell scripts using array assignments in POSIX mode
3218    to exit after the assignment was performed was fixed.
3219
3220i.  The substring expansion code is now more careful about running off the
3221    ends of the expanded variable value.
3222
3223j.  A bug that caused completion to fail if a backquoted command substitution
3224    appeared anywhere on the line was fixed.
3225
3226k.  The `source' builtin no longer turns off history if it has been enabled
3227    in a non-interactive shell.
3228
3229l.  A bug that caused the shell to crash when `disown' was given a pid
3230    instead of a job number was fixed.
3231
3232m.  The `cd' spelling correction code will not try to change to `.' if no
3233    directory entries match a single-character argument.
3234
3235n.  A bad variable name supplied to `declare', `export', or `readonly' no
3236    longer causes a non-interactive shell in POSIX mode to exit.
3237
3238o.  Some fixes were made to the test suite to handle peculiarities of
3239    various Unix versions.
3240
3241p.  The bash completion code now quotes characters that readline would
3242    treat as word breaks for completion but are not shell metacharacters.
3243
3244q.  Bad options supplied at invocation now cause a usage message to be
3245    displayed.
3246
3247r.  Fixes were made to the code that handles DEBUG traps so that the trap
3248    string is not freed inappropriately.
3249
3250s.  Some changes were made to the bash debugger in examples/bashdb -- it
3251    should be closer to working now.
3252
3253t.  A problem that caused the default filename used for mail checking to be
3254    wrong was fixed.
3255
3256u.  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
3259v.  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
3262w.  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
3266x.  A fix was made to the command timing code so that `time' can be used in
3267    a loop.
3268
3269y.  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
3273z.  A fix was made to the globbing code so that it correctly matches quoted
3274    filenames beginning with a `.'.
3275
3276aa. 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
3280bb. The `ulimit' builtin now attempts to catch some classes of integer
3281    overflows.
3282
3283cc. The command-oriented-history code no longer attempts to add `;'
3284    inappropriately when a newline appears while reading a $(...) command
3285    substitution.
3286
3287dd. A bug that caused the shell to dump core when `help --' was executed
3288    was fixed.
3289
3290ee. 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
3294ff. Implicit input redirections from /dev/null for asynchronous commands
3295    are now handled better.
3296
3297gg. A bug that caused the shell to fail to compile when configured with
3298    `--disable-readline' was fixed.
3299
3300hh. The globbing code should now be interruptible.
3301
3302ii. 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
3306jj. 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
3309kk. The command printing code now preserves the `-p' flag to `time'.
3310
3311ll. The command printing code now handles here documents better when there
3312    are other redirections associated with the command.
3313
3314mm. 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
3318nn. 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
3323oo. `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
3327pp. 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
3331qq. 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
3335rr. A bug in the readline hook shell-expand-line that could cause memory to
3336    be inappropriately freed was fixed.
3337
3338ss. A bug that caused some arithmetic expressions containing `&&' and `||'
3339    to be parsed with the wrong precedence has been fixed.
3340
3341tt. References to unbound variables after `set -u' has been executed now
3342    cause the shell to exit immediately, as they should.
3343
3344uu. 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
3348vv. A bug that could occasionally cause the shell to crash with a
3349    divide-by-zero error when timing a command was fixed.
3350
3351ww. 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
3355xx. The `break' and `continue' builtins now break out of all loops when an
3356    invalid count argument is supplied.
3357
3358yy. Fixed a bug that caused PATH to be set to the empty string if
3359    `command -p' is executed with PATH unset.
3360
3361zz. Fixed `kill -l signum' to print the signal name without the `SIG' prefix,
3362    as POSIX specifies.
3363
3364aaa. Fixed a bug that caused the shell to crash while setting $SHELLOPTS
3365     if there were no shell options set.
3366
3367bbb. Fixed `export -p' and `readonly -p' so that when the shell is in POSIX
3368     mode, their output is as POSIX.2 specifies.
3369
3370ccc. Fixed a bug in `readonly' so that `readonly -a avar=(...)' actually
3371     creates an array variable.
3372
3373ddd. Fixed a bug that prevented `time' from correctly timing background
3374     pipelines.
3375
33762.  Changes to Readline
3377
3378a.  A bug that caused an extra newline to be printed when the cursor was on
3379    an otherwise empty line was fixed.
3380
3381b.  An instance of memory being used after it was freed was corrected.
3382
3383c.  The redisplay code now works when the prompt is longer than the screen
3384    width.
3385
3386d.  `dump-macros' is now a bindable name, as it should have been all along.
3387
3388e.  Non-printable characters are now expanded when displaying macros and
3389    their values.
3390
3391f.  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
33953.  New Features in Bash
3396
3397a.  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
34004.  New Features in Readline
3401
3402a.  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------------------------------------------------------------------------------
3408This document details the changes between this version, bash-2.0-release,
3409and the previous version, bash-2.0-beta3.
3410
34111.  Changes to Bash
3412
3413a.  Fix to the `getopts' builtin so that it does the right thing when a
3414    required option argument is not present.
3415
3416b.  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
3420c.  Fixed a bug that made messages in MAILPATH entries not work correctly.
3421
3422d.  Fixed a serious documentation error in the description of the new
3423    ${parameter:offset[:length]} expansion.
3424
3425e.  Fixes to make parameter substring expansion ({$param:offset[:length]})
3426    work when within double quotes.
3427
3428f.  Fixes to make ^A (CTLESC) survive an unquoted expansion of positional
3429    parameters.
3430
3431g.  Corrected a misspelling of `unlimited' in the output of `ulimit'.
3432
3433h.  Fixed a bug that caused executable scripts without a leading `#!' to
3434    occasionally pick up the wrong set of positional parameters.
3435
3436i.  Linux systems now have a working `ulimit -v', using RLIMIT_AS.
3437
3438j.  Updated config.guess so that many more machine types are recognized.
3439
3440k.  Fixed a bug with backslash-quoted slashes in the ${param/pat[/sub]}
3441    expansion.
3442
3443l.  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
3447m.  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
3450n.  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
34532.  Changes to Readline
3454
3455a.  Fixed a bug that caused a numeric argument of 1024 to be ignored when
3456    inserting text.
3457
3458b.  Fixed the display code so that the numeric argument is displayed as it's
3459    being entered.
3460
3461c.  Fixed the numeric argument reading code so that `M-- command' is
3462    equivalent to `M--1 command', as the prompt implies.
3463
34643.  New Features in Bash
3465
3466a.  `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
3470b.  Integer constants have been extended to base 64.
3471
34724.  New Features in Readline
3473
3474a.  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------------------------------------------------------------------------------
3479This document details the changes between this version, bash-2.0-beta3,
3480and the previous version, bash-2.0-beta2.
3481
34821.  Changes to Bash
3483
3484a.  System-specific changes for: AIX 4.2, SCO 3.2v[45], HP-UX.
3485
3486b.  When in POSIX mode, variable assignments preceding a special builtin
3487    persist in the shell environment after the builtin completes.
3488
3489c.  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
3493d.  Fixed a bug that caused seg faults when executing scripts with the
3494    execute bit set but without a leading `#!'.
3495
3496e.  The environment passed to executed commands is never sorted.
3497
3498f.  A bug was fixed in the code that expands ${name[@]} to the number of
3499    elements in an array variable.
3500
3501g.  A bug was fixed in the array compound assignment code ( A=( ... ) ).
3502
3503h.  Window size changes now correctly propagate down to readline if
3504    the shopt `checkwinsize' option is enabled.
3505
3506i.  A fix was made in the code that expands to the length of a variable
3507    value (${#var}).
3508
3509j.  A fix was made to the command builtin so that it did not turn on the
3510    `no fork' flag inappropriately.
3511
3512k.  A fix was made to make `set -n' work more reliably.
3513
3514l.  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
35182.  Changes to Readline
3519
3520a.  System-specific changes for: SCO 3.2v[45].
3521
3522b.  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
35263.  New features in Bash
3527
3528a.  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
3532b.  Support for LC_COLLATE and locale-specific sorting of the results of
3533    pathname expansion if strcoll() is available.
3534
35354.  New Features in Readline
3536
3537a.  Support for locale-specific sorting of completion possibilities if
3538    strcoll() is available.
3539
3540------------------------------------------------------------------------------
3541This document details the changes between this version, bash-2.0-beta2,
3542and the previous version, bash-2.0-beta1.
3543
35441.  Changes to Bash
3545
3546a.  `pushd -' is once again equivalent to `pushd $OLDPWD'.
3547
3548b.  OS-specific changes for: SCO 3.2v[45].
3549
3550c.  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
3554d.  Some changes were made to the test suite so that it works if you
3555    configure bash with --enable-usg-echo-default.
3556
3557e.  A fix was made to the parsing of conditional arithmetic expressions.
3558
3559f.  Illegal arithmetic bases now cause an arithmetic evaluation error rather
3560    than being silently reset.
3561
3562g.  Multiple arithmetic bases now cause an arithmetic evaluation error
3563    instead of being ignored.
3564
3565h.  A fix was made to the evaluation of ${param?word} to conform to POSIX.2.
3566
3567i.  A bug that sometimes caused array indices to be evaluated twice (which
3568    would cause errors when they contained assignment statements) was fixed.
3569
3570j.  `ulimit' was rewritten to avoid problems with getrlimit(2) returning
3571    unsigned values and to simplify the code.
3572
3573k.  A bug in the command-oriented-history code that caused it to sometimes
3574    put semicolons after right parens inappropriately was fixed.
3575
3576l.  The values inserted into the prompt by the \w and \W escape sequences
3577    are now quoted to prevent further expansion.
3578
3579m.  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
3583n.  The file named by $ENV is never read by non-interactive shells.
3584
35852.  Changes to Readline
3586
3587a.  A few changes were made to hide some macros and functions that should not
3588    be public.
3589
3590b.  An off-by-one error that caused seg faults in the history expansion code
3591    was fixed.
3592
35933.  New Features in Bash
3594
3595a.  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
3599b.  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
3603c.  `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------------------------------------------------------------------------------
3607This document details the changes between this version, bash-2.0-beta1,
3608and the previous version, bash-2.0-alpha4.
3609
36101.  Changes to Bash
3611
3612a.  A bug that sometimes caused traps to be ignored on signals the
3613    shell treats specially was fixed.
3614
3615b.  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
3620c.  A bug was fixed that sometimes caused double-quoted strings to be
3621    parsed incorrectly.
3622
3623d.  Changes were made so that the siglist code compiles correctly on
3624    Solaris 2.5.
3625
3626e.  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
3630f.  The `select' command was fixed to print $PS3 to stderr.
3631
3632g.  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
3636h.  The time conversion code now uses CLK_TCK rather than CLOCKS_PER_SEC
3637    on systems without gettimeofday() and resources.
3638
3639i.  The getopt static variables are now initialized each time a subshell
3640    is started, so subshells using `getopts' work right.
3641
3642j.  A sign-extension bug that caused a possible security hole was fixed.
3643
3644k.  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
3648l.  A bug that caused `^O' to work incorrectly when typed as the first
3649    thing to an interactive shell was fixed.
3650
3651m.  A rarely-exercised off-by-one error in the code that quotes variable
3652    values was fixed.
3653
3654n.  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
36582.  Changes to Readline
3659
3660a.  A bug that sometimes caused incorrect results when trying to read
3661    typeahead on systems without FIONREAD was fixed.
3662
36633.  New Features in Bash
3664
3665a.  The command timing code now uses the value of the TIMEFORMAT variable
3666    to format and display timing statistics.
3667
3668b.  The `time' reserved word now accepts a `-p' option to force the
3669    POSIX.2 output format.
3670
3671c.  There are a couple of new and updated scripts to convert csh startup
3672    files to bash format.
3673
3674d.  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
36784.  New Features in Readline
3679
3680a.  Setting LANG to `en_US.ISO8859-1' now causes readline to enter
3681    eight-bit mode.
3682
3683------------------------------------------------------------------------------
3684This document details the changes between this version, bash-2.0-alpha4,
3685and the previous version, bash-2.0-alpha3.
3686
36871.  Changes to Bash
3688
3689a.  There is better detection of rsh connections on Solaris 2.
3690
3691b.  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
3695c.  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
3700d.  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
3704e.  2''>/dev/null is no longer equivalent to 2>/dev/null.
3705
3706f.  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
3710g.  A fix was made to the completion code so that it no longer removes the
3711    text the user typed in some cases.
3712
3713h.  The special glibc `getopt' environment variable is no longer put into
3714    the environment on machines with small values of ARG_MAX.
3715
3716i.  The expansion of ${...} now follows the POSIX.2 rules for finding the
3717    closing `}'.
3718
3719j.  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
3723k.  `shopt -o' now correctly updates $SHELLOPTS.
3724
3725l.  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
3729m.  The shell now does tilde expansions on unquoted `:~' in assignment
3730    statements when not in posix mode.
3731
3732n.  Variable assignment errors when a command consists only of assignments
3733    now cause non-interactive shells to exit when in posix mode.
3734
3735o.  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
3738p.  `test' now handles `-a' and `-o' as binary operators when three arguments
3739    are supplied, and correctly parses `( word )' as equivalent to `word'.
3740
3741q.  `test' was fixed so that file names of the form /dev/fd/NN mean the same
3742    thing on all systems, even Linux.
3743
3744r.  Fixed a bug in the globbing code that caused patterns with multiple
3745    consecutive `*'s to not be matched correctly.
3746
3747s.  Fixed a bug that caused $PS2 to not be printed when an interactive shell
3748    not using readline is reading a here document.
3749
3750t.  Fixed a bug that caused history expansion to be performed inappropriately
3751    when a single-quoted string spanned more than one line.
3752
3753u.  `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
3757v.  Fixed `getopts' to obey POSIX.2 rules for setting $OPTIND when it
3758    encounters an error.
3759
3760w.  Fixed `set' to display variable values in a form that can be re-read.
3761
3762x.  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
3765y.  Non-interactive shells in posix mode now exit if the name in a function
3766    declaration is not a legal identifier.
3767
3768z.  The job control code now ignores stopped children when the shell is not
3769    interactive.
3770
3771aa. 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
3775bb. Some OS-specific changes were made for SCO 3.2v[45] and AIX 4.2.
3776
3777cc. `time' now prints its output to stderr, as POSIX.2 specifies.
3778
37792.  Fixes to Readline
3780
3781a.  After printing possible completions, all lines of a multi-line prompt
3782    are redisplayed.
3783
3784b.  Some changes were made to the terminal handling code in rltty.c to
3785    work around AIX 4.2 bugs.
3786
37873.  New Features in Bash
3788
3789a.  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
3794b.  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
37974.  New Features in Readline
3798
3799a.  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
3803b.  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------------------------------------------------------------------------------
3808This document details the changes between this version, bash-2.0-alpha3,
3809and the previous version, bash-2.0-alpha2.
3810
3811There is now a file `COMPAT' included in the distribution that lists the
3812user-visible incompatibilities between 1.14 and 2.0.
3813
38141. Changes to Bash
3815
3816a. Some work was done so that word splitting of the rhs of assignment
3817   statements conforms more closely to historical practice.
3818
3819b. A couple of errant memory frees were fixed.
3820
3821c. A fix was made to the test builtin so it recognizes `<' and `>' as
3822   binary operators.
3823
3824d. 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
3828e. Fixed a problem with conversion to 12-hour time in the prompt
3829   expansion code.
3830
3831f. Fixed a problem with configure's argument parsing order.  Now you can
3832   correctly turn on specific options after using --enable-minimal-config.
3833
3834g. 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
3838h. There are new prompt expansions (\v and \V) to insert version information
3839   into the prompt strings.
3840
3841i. The default prompt string now includes the version number.
3842
3843j. 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
3847k. Some system-specific changes were made for SVR4.2 and Solaris 2.5.
3848
3849l. Bash now uses PATH_MAX instead of MAXPATHLEN and NAME_MAX instead of
3850   MAXNAMLEN.
3851
3852m. A couple of problems caused by uninitialized variables were fixed.
3853
3854n. 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
3858o. Bash now notices changes in TZ and calls tzset() if present, so
3859   changing TZ will alter the time printed by prompt expansions.
3860
3861p. 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
3865q. 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
3868r. `bash -o posix' now works as intended.
3869
3870s. 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
3874t. Fixed ulimit so that (hopefully) the full range of limits is available
3875   on HPUX systems.
3876
3877u. A new `shopt' option (`hostcomplete') enables and disables hostname
3878   completion.
3879
3880v. The shell no longer attempts to save the history on an abort(),
3881   which is usually called by programming_error().
3882
3883w. The `-s' option to `fc' was changed to echo the command to be executed
3884   to stderr instead of stdout.
3885
3886x. If the editor invoked by `fc -e' exits with a non-zero status, no
3887   commands are executed.
3888
3889y. Fixed a bug that made the shopt `histverify' option work incorrectly.
3890
3891z. 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
3895aa. The `ulimit' builtin now allows the maximum virtual memory size to be
3896    set via setrlimit(2) if RLIMIT_VMEM is defined.
3897
3898bb. `bash -nc 'command'' no longer runs `command'.
3899
39002. Changes to Readline
3901
3902a. Fixed a typo in the code that checked for FIONREAD in input.c.
3903
3904b. Fixed a bug in the code that outputs keybindings, so things like C-\
3905   are quoted properly.
3906
3907c. 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
3912d. Readline no longer turns off the terminal's meta key, and turns it on
3913   once the first time it's called.
3914
3915------------------------------------------------------------------------------
3916This file documents the changes between this version, bash-2.0-alpha2,
3917and the previous version, bash-2.0-alpha.
3918
39191. Changes to Bash
3920
3921a. The shell no longer thinks directories are executable.
3922
3923b. `disown' has a new option, `h', which inhibits the resending of SIGHUP
3924   but does not remove the job from the jobs table.
3925
3926c. The varargs functions in error.c now use ANSI-C `stdarg' if available.
3927
3928d. 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
3932e. 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
3936f. A fix was made to keep `wait' from hanging when waiting for all background
3937   jobs.
3938
3939g. `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
3942h. `bash --version' now prints more information and exits successfully, like
3943   the GNU Coding Standards specify.
3944
3945i. The output of `time' and `times' now prints fractional seconds with three
3946   places after the decimal point.
3947
3948j. A bug that caused process substitutions to screw up the pipeline printed
3949   by `jobs' was fixed.
3950
3951k. Fixes were made to the code that implements $'...' and $"..." so they
3952   work as documented.
3953
3954l. The process substitution code now opens named pipes for reading with
3955   O_NONBLOCK to avoid hanging.
3956
3957m. 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
3961n. 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
3964o. Fixed an auto-increment error that caused bash -c args to sometimes dump
3965   core.
3966
3967p. Fixed a bug that caused $HISTIGNORE to fail when the history line
3968   contained globbing characters.
3969
39702. Changes to Readline
3971
3972a. There is a new string variable, rl_library_version, available for use by
3973   applications.  The current value is "2.1".
3974
3975b. A bug encountered when expand-tilde was enabled and file completion was
3976   attempted on a word beginning with `~/' was fixed.
3977
3978c. 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.
Note: See TracBrowser for help on using the repository browser.