9c571313a83120044b6c4fe866da055776cbf075
[platform/upstream/bash.git] / CHANGES
1 This document details the changes between this version, bash-2.04-release,
2 and the previous version, bash-2.04-beta5.
3
4 1.  Changes to Bash
5
6 a.  Better compile-time and configure-time checks for the necessity of
7     inet_aton().
8
9 b.  A bug was fixed in the expansion of "${@:-}" when there are positional
10     parameters.
11
12 c.  A typo was fixed in the output of `complete'.
13
14 d.  The matches generated for a word by the `-W' argument to complete and
15     compgen are now matched against the word being completed, and only
16     matches are returned as the result.
17
18 e.  Some fixes were made for systems which do not restart read(2) when a
19     signal caught by bash is received.
20
21 f.  A bug was fixed which caused the umask to be set to 0 when an invalid
22     symbolic mode mask was parsed.
23
24 g.  Fixed a bug that could cause a core dump if a SIGCHLD was received while
25     performing an assignment statement using command substitution.
26
27 h.  Changed the word splitting function for programmable completion so cases
28     in which the cursor is between words are handled a bit better.
29
30 2.  Changes to Readline
31
32 a.  rl_funmap_names() is now documented.
33
34 3.  New Features in Bash
35
36 a.  The LC_NUMERIC variable is now treated specially, and used to set the
37     LC_NUMERIC locale category for number formatting, e.g., when `printf'
38     displays floating-point numbers.
39
40 ------------------------------------------------------------------------------
41 This document details the changes between this version, bash-2.04-beta5,
42 and the previous version, bash-2.04-beta4.
43
44 1.  Changes to Bash
45
46 a.  A couple of changes were made to the Makefiles for easier building on
47     non-Unix systems.
48
49 b.  Fixed a bug where the current prompt would be set to $PS2 at startup.
50
51 c.  The shell script that tests an already-installed version was changed to
52     remove the directory it created its test programs in at exit.
53
54 d.  Several changes were made to the code that tokenizes an input line for
55     the programmable completion code.  Shell metacharacters will now appear
56     as individual words in the word list passed to the completion functions.
57     Some of the example completion shell functions were changed to understand
58     redirection operators.
59
60 e.  A bug was fixed that, under obscure circumstances, could confuse the
61     parser when a shell function was run by the programmable completion code.
62
63 f.  A bug was fixed in the ulimit builtin for systems not using getrlimit().
64
65 g.  The execution code now propagates the correct exit status back to the rest
66     of the code if the return value of a subshell command was being inverted.
67     Some new test cases for inverting return values with the `!' reserved
68     word have been added.
69
70 h.  Negative exponents in the arithmetic evaluation of v**e now return an
71     evaluation error.
72
73 i.  A bug that caused bash to check the wrong process in a pipeline for
74     abnormal termination (and consequently resetting the terminal attributes)
75     was fixed.
76
77 j.  Fixed a bug that caused $PS2 to be displayed after PROMPT_COMMAND was
78     executed.
79
80 2.  Changes to Readline
81
82 1.  Fixed a bug in a C preprocessor define that caused the keypad control
83     functions to be compiled out for all platforms except DJGPP.
84
85 ------------------------------------------------------------------------------
86 This document details the changes between this version, bash-2.04-beta4,
87 and the previous version, bash-2.04-beta3.
88
89 1.  Changes to Bash
90
91 a.  A couple of changes were made to the redirection to attempt to avoid
92     race conditions and malicious file replacement.
93
94 2.  A change was made to the string evaluation code (used for command 
95     substitution, `eval', and the `.' builtin) to fix an obscure core
96     dump on alpha machines.
97
98 3.  A bug that caused $LINENO to be wrong when executing arithmetic for
99     commands was fixed.
100
101 4.  A couple of memory leaks in the programmable completion code were fixed.
102
103 5.  A bug that could cause a core dump by freeing memory twice during a call
104     to `eval' if `set -u' had been enabled and an undefined variable was
105     referenced was fixed.
106
107 ------------------------------------------------------------------------------
108 This document details the changes between this version, bash-2.04-beta3,
109 and the previous version, bash-2.04-beta2.
110
111 1.  Changes to Bash
112
113 a.  Bash should run the appropriate startup files when invoked by ssh2.
114
115 b.  Fixed a bug in the parsing of conditional commands that could cause a
116     core dump.
117
118 c.  Fixed a bug in parsing job specifications that occasionally caused
119     core dumps when an out-of-range job was referenced.
120
121 d.  Fixed the `type' and `command' builtins to do better reporting of
122     commands that are not found in $PATH or the hash table.
123
124 e.  Fixed a POSIX.2 compliance problem in the command builtin -- commands
125     are supposed to be reported as full pathnames.
126
127 f.  The `echo' builtin now returns failure if a write error occurs.
128
129 g.  Fixed a bug which caused the locale to not be reset correctly when
130     LC_ALL was unset.
131
132 h.  Changed description of `getopts' in man page and reference manual to make
133     it clear that option characters may be characters other than letters.
134
135 i.  If the shell exits while in a function, make sure that any trap on EXIT
136     doesn't think the function is still executing.
137
138 j.  Bashbug now tries harder to find a usable editor if $EDITOR is not set,
139     rather than simply defaulting to `emacs'.
140
141 k.  Changes to the scripts that guess and canonicalize the system type, from
142     the latest `automake' distribution via Debian.
143
144 l.  When using named pipes for process substitution, make sure the file
145     descriptors opened for reading are set to non-blocking mode.
146
147 m.  Fixed a bug that caused termination of pipelines that are killed by a
148     signal to not be reported in some cases.
149
150 n.  When not in literal-history mode, shell comment lines are not added to
151     the history list.
152
153 o.  When running in POSIX.2 mode, bash no longer performs word splitting on
154     the expanded value of the word supplied as the filename argument to
155     redirection operators.
156
157 p.  The prompt string decoding code now backslash-quotes only characters that
158     are special within double quotes when expanding the \w and \W escape
159     sequences.
160
161 q.  Fixed a bug in the prompt decoding code that could cause a non-interactive
162     shell to seg fault if `\u' was used in PS4 and the shell was in xtrace
163     mode.
164
165 r.  Fixed a bug that caused function definitions to be printed with any
166     redirections that should be attached to the entire function before the
167     closing brace.
168
169 s.  Changed the tilde expansion code for Cygwin systems to avoid creating
170     pathnames beginning with `//' if $HOME == `/'.
171
172 t.  Fixed a couple of autoconf tests to avoid creating files with fixed names
173     in /tmp.
174
175 u.  The `trap' and `kill' builtins now know the names of the POSIX.1b real-
176     time signals on systems which support them.
177
178 2.  Changes to Readline
179
180 a.  Fixed a problem with the single-quote quoting function that could cause
181     buffer overflows.
182
183 b.  Fixed a bug that caused incorrect `stat characters' to be printed if
184     the files being completed were in the root directory and visible-stats
185     was enabled.
186
187 3.  New Features in Bash
188
189 a.  There is a new `rbash.1' manual page, from the Debian release.
190
191 b.  The `--enable-usg-echo-default' option to `configure' has been renamed to
192     `--enable-xpg-echo-default'.  The old option is still there for backwards
193     compatibility.
194
195 ------------------------------------------------------------------------------
196 This document details the changes between this version, bash-2.04-beta2,
197 and the previous version, bash-2.04-beta1.
198
199 1.  Changes to Bash
200
201 a.  Fixed a bug that could cause pipes to be closed inappropriately in
202     some obscure cases.
203
204 b.  Fixed a bug that caused creation of the exported environment to clobber
205     the current command string if there were any exported shell functions.
206
207 c.  Some changes were made to reduce bash's memory usage.
208
209 d.  Fixed a problem with programmable completion and filenames to be
210     completed containing quote characters.
211
212 e.  Changed the code the removes named pipes created for the <(...) and >(...)
213     expansions to defer removal until after any current shell function has
214     finished executing.
215
216 f.  Fixed a bug in `select' which caused it to not handle the `continue'
217     builtin correctly.
218
219 g.  Autoconf tests added for cygwin32 and mingw32.
220
221 2.  New Features in Bash
222
223 a.  The `--with-bash-malloc' configure option replaces `--with-gnu-malloc'
224     (which is still there for backwards compatibility).
225
226 ------------------------------------------------------------------------------
227 This document details the changes between this version, bash-2.04-beta1,
228 and the previous version, bash-2.04-alpha1.
229
230 1.  Changes to Bash
231
232 a.  Fixed a bug in the programmable completion code that occurred when
233     trying to complete command lines containing a `;' or `@'.
234
235 b.  The file descriptor from which the shell is reading a script is now
236     moved to a file descriptor above the user-addressible range.
237
238 c.  Changes to `printf' so that it can handle integers beginning with 0
239     or 0x as octal and hex, respectively.
240
241 d.  Fixes to the programmable completion code so it handles nonsense like
242     `compgen -C xyz' gracefully.
243
244 e.  The shell no longer modifies the signal handler for SIGPROF, allowing
245     profiling again on certain systems.
246
247 f.  The shell checks for a new window size, if the user has requested it,
248     after a process exits due to a signal.
249
250 g.  Fixed a bug with variables with null values in a program's temporary
251     environment and the bash getenv() replacement.
252
253 h.  `declare' and the other builtins that take variable assignments as
254     arguments now honor `set -a' and mark modified variables for export.
255
256 i.  Some changes were made for --dump-po-strings mode when writing strings
257     with embedded newlines.
258
259 j.  The code that caches export strings from the initial environment now
260     duplicates the string rather than just pointing into the environment.
261
262 k.  The filename completion quoting code now uses single quotes by default
263     if the filename being completed contains newlines, since \<newline>
264     has a special meaning to the parser.
265
266 l.  Bash now uses typedefs bits32_t and u_bits32_t instead of int32_t and
267     u_int32_t, respectively to avoid conflicts on certain Unix versions.
268
269 m.  Configuration changes were made for: Rhapsody, Mac OS, FreeBSD-3.x.
270
271 n.  Fixed a problem with hostname-to-ip-address translation in the
272     /dev/(tcp|udp)/hostname/port redirection code.
273
274 o.  The texinfo manual has been reorganized slightly.
275
276 p.  Filename generation (globbing) range comparisons in bracket expressions
277     no longer use strcoll(3) even if it is available, since it has unwanted
278     effects in certain locales.
279
280 q.  Fixed a cosmetic problem in the source that caused the shell to not
281     compile if DPAREN_ARITHMETIC was not defined but ARITH_FOR_COMMAND was.
282
283 r.  Fixed a bug in the here-document code tripped when the file descriptor
284     opened to the file containing the text of the here document was the
285     same as a redirector specified by the user.
286
287 s.  Fixed a bug where the INVERT_RETURN flag was not being set for `pipeline'
288     in `time ! pipeline'.
289
290 t.  Fixed a bug with the `wait' builtin which manifested itself when an
291     interrupt was received while the shell was waiting for asynchronous
292     processes in a shell script.
293
294 u.  Fixed the DEBUG trap code so that it has the correct value of $?.
295
296 v.  Fixed a bug in the parameter pattern substitution code that could cause
297     the shell to attempt to free unallocated memory if the pattern started
298     with `/' and an expansion error occurs.
299
300 w.  Fixed a bug in the positional parameter substring code that could
301     cause the shell to loop freeing freed memory.
302
303 x.  Fixed a bug in the positional parameter pattern substitution code so
304     that it correctly handles null replacement strings with a pattern
305     string prefixed with `%' or `#'.
306
307 y.  The shell no longer attempts to import functions from the environment if
308     started with `-n'.
309
310 z.  Fixed a bug that caused `return' in a command substitution executed in
311     a shell function to return from the function in a subshell and continue
312     execution.
313
314 aa. `hash -p /pathname/with/slashes name' is no longer allowed when the shell
315     is restricted.
316
317 bb. The wait* job control functions now behave better if called when there
318     are no unwaited-for children.
319
320 cc. Command substitution no longer unconditionally disables job control in
321     the subshell started to run the command.
322
323 dd. A bug was fixed that occasionally caused traps to mess up the parser
324     state.
325
326 ee. `bashbug' now honors user headers in the mail message it sends.
327
328 ff. A bug was fixed that caused the `:p' history modifier to not print the
329     history expansion if the `histverify' option was set.
330
331 2.  Changes to Readline
332
333 a.  Fixed a bug in the redisplay code for lines with more than 256 line
334     breaks.
335
336 b.  A bug was fixed which caused invisible character markers to not be
337     stripped from the prompt string if the terminal was in no-echo mode.
338
339 c.  Readline no longer tries to get the variables it needs for redisplay
340     from the termcap entry if the calling application has specified its
341     own redisplay function.  Readline treats the terminal as `dumb' in
342     this case.
343
344 d.  Fixes to the SIGWINCH code so that a multiple-line prompt with escape
345     sequences is redrawn correctly.
346
347 3.  New Features in Bash
348
349 a.  `bashbug' now accepts `--help' and `--version' options.
350
351 b.  There is a new `xpg_echo' option to `shopt' that controls the behavior
352     of echo with respect to backslash-escaped characters at runtime.
353
354 ------------------------------------------------------------------------------
355 This document details the changes between this version, bash-2.04-alpha1,
356 and the previous version, bash-2.04-devel.
357
358 1.  Changes to Bash
359
360 a.  Fixed a bug that could cause core dumps when performing substring
361     expansion.
362
363 b.  Shared object configuration changes for:  Solaris, OSF/1
364
365 c.  The POSIX_GLOB_LIBRARY code that uses the POSIX.2 globbing facilities
366     for pathname expansion now understands GLOBIGNORE.
367
368 d.  The code that implements `eval' was changed to save the value of the
369     current prompt, so an eval in a shell function called by the programmable
370     completion code will not change the prompt to $PS2.
371
372 e.  Restored the undocumented NON_INTERACTIVE_LOGIN_SHELLS #define to
373     config-top.h.  If this is defined, all login shells will read the
374     startup files, not just interactive and non-interactive started with
375     the `--login' option.
376
377 f.  Fixed a bug that caused the expansion code to occasionally dump core if
378     IFS contained characters > 128.
379
380 g.  Fixed a problem with the grammar so that a newline is not required
381     after the `))' in the new-style arithmetic for statement; a semicolon
382     may be used as expected.
383
384 h.  Variable indirection may now reference the shell's special variables.
385
386 i.  The $'...' and $"..." constructs are now added to the history correctly
387     if they contain newlines and command-oriented history is enabled.
388
389 j.  It is now an error to try to assign a value to a function-local copy
390     of a readonly shell variable (declared with the `local' builtin).
391
392 2.  Changes to Readline
393
394 a.  The history file code now uses O_BINARY mode when reading and writing
395     the history file on cygwin32.
396
397 3.  New Features in Bash
398
399 a.  A new programmable completion facility, with two new builtin commands:
400     complete and compgen.
401
402 b.  configure has a new option, `--enable-progcomp', to compile in the
403     programmable completion features (enabled by default).
404
405 c.  `shopt' has a new option, `progcomp', to enable and disable programmable
406     completion at runtime.
407
408 d.  Unsetting HOSTFILE now clears the list of hostnames used for completion.
409
410 4.  New Features in Readline
411
412 a.  A new variable, rl_gnu_readline_p, always 1.  The intent is that an
413     application can verify whether or not it is linked with the `real'
414     readline library or some substitute.
415
416 ------------------------------------------------------------------------------
417 This document details the changes between this version, bash-2.04-devel,
418 and the previous version, bash-2.03-release.
419
420 1.  Changes to Bash
421
422 a.  System-specific configuration and source changes for:  Interix, Rhapsody
423
424 b.  Fixed a bug in execute_cmd.c that resulted in a compile-time error if
425     JOB_CONTROL was not defined.
426
427 c.  An obscure race condition in the trap code was fixed.
428
429 d.  The string resulting from $'...' is now requoted to avoid any further
430     expansion.
431
432 e.  The $'...' quoting syntax now allows backslash to escape a single quote,
433     for ksh-93 compatibility.
434
435 f.  The $"..." quoting syntax now escapes backslashes and double quotes in
436     the translated string when displaying them with the --dump-po-strings
437     option.
438
439 g.  `echo -e' no longer converts \' to '.
440
441 h.  Fixes were made to the extended globbing code to handle embedded (...)
442     patterns better.
443
444 i.  Some improvements were made to the code that unsets `nodelay' mode on
445     the file descriptor from which bash is reading input.
446
447 j.  Some changes were made to the replacement termcap library for better
448     operation on MS-DOS.
449
450 k.  Some changes were made to the tilde expansion code to handle backslash
451     as a pathname separator on MS-DOS.
452
453 l.  The source has been reorganized a little bit -- there is now an `include'
454     subdirectory, and lib/posixheaders has been removed.
455
456 m.  Improvements were made to the `read' builtin so that it makes many
457     fewer read(2) system calls.
458
459 n.  The expansion of $- will include `c' and `s' when those options are
460     supplied at shell invocation.
461
462 o.  Several improvments were made to the completion code:  variable completion
463     now works better when there are unterminated expansions, command
464     completion understands quotes better, and completion now works in certain
465     unclosed $(... constructs.
466
467 p.  The arithmetic expansion code was fixed to not need the value of a
468     variable being assigned a value (fixes the "ss=09; let ss=10" bug).
469
470 q.  Some changes were made to make exported environment creation faster.
471
472 r.  The html documentation will be installed into $(htmldir) if that variable
473     has a value when `make install' is run.
474
475 s.  Fixed a bug that would cause the bashrc file to be sourced inappropriately
476     when bash is started by sshd.
477
478 t.  The SSH_CLIENT environment variable is no longer auto-exported.
479
480 u.  A bug that caused redirections with (...) subshells to be performed in
481     the wrong order was fixed.
482
483 v.  A bug that occasionally caused inaapropriate expansion of assignment
484     statements in compound array assignments was fixed.
485
486 w.  The code that parses the words in a compound array assignment was
487     simplified considerably and should work better now.
488
489 x.  Fixes to the non-job-control code in nojobs.c to make it POSIX.2-compliant
490     when a user attempts to retrieve the status of a terminated background
491     process.
492
493 y.  Fixes to the `printf' builtin so that it doesn't try to expand all
494     backslash escape sequences in the format string before parsing it for
495     % format specifiers.
496
497 2.  Changes to Readline
498
499 a.  The history library tries to truncate the history file only if it is a
500     regular file.
501
502 b.  A bug that caused _rl_dispatch to address negative array indices on
503     systems with signed chars was fixed.
504
505 c.  rl-yank-nth-arg now leaves the history position the same as when it was
506     called.
507
508 d.  Changes to the completion code to handle MS-DOS drive-letter:pathname
509     filenames.
510
511 e.  Completion is now case-insensitive by default on MS-DOS.
512
513 f.  Fixes to the history file manipulation code for MS-DOS.
514
515 g.  Readline attempts to bind the arrow keys to appropriate defaults on MS-DOS.
516
517 h.  Some fixes were made to the redisplay code for better operation on MS-DOS.
518
519 i.  The quoted-insert code will now insert tty special chars like ^C.
520
521 j.  A bug was fixed that caused the display code to reference memory before
522     the start of the prompt string.
523
524 k.  More support for __EMX__ (OS/2).
525
526 l.  A bug was fixed in readline's signal handling that could cause infinite
527     recursion in signal handlers.
528
529 m.  A bug was fixed that caused the point to be less than zero when rl_forward
530     was given a very large numeric argument.
531
532 n.  The vi-mode code now gets characters via the application-settable value
533     of rl_getc_function rather than calling rl_getc directly.
534
535 3.  New Features in Bash
536
537 a.  The history builtin has a `-d offset' option to delete the history entry
538     at position `offset'.
539
540 b.  The prompt expansion code has two new escape sequences: \j, the number of
541     active jobs; and \l, the basename of the shell's tty device name.
542
543 c.  The `bind' builtin has a new `-x' option to bind key sequences to shell
544     commands.
545
546 d.  There is a new shell option, no_empty_command_completion, which, when
547     enabled, disables command completion when TAB is typed on an empty line.
548
549 e.  The `help' builtin has a `-s' option to just print a builtin's usage
550     synopsys.
551
552 f.  There are several new arithmetic operators:  id++, id-- (variable
553     post-increment/decrement), ++id, --id (variabl pre-increment/decrement),
554     expr1 , expr2 (comma operator).
555
556 g.  There is a new ksh-93 style arithmetic for command:
557         for ((expr1 ; expr2; expr3 )); do list; done
558
559 h.  The `read' builtin has a number of new options:
560         -t timeout      only wait timeout seconds for input
561         -n nchars       only read nchars from input instead of a full line
562         -d delim        read until delim rather than newline
563         -s              don't echo input chars as they are read
564
565 i.  The redirection code now handles several filenames specially:
566     /dev/fd/N, /dev/stdin, /dev/stdout, and /dev/stderr, whether or
567     not they are present in the file system.
568
569 j.  The redirection code now recognizes pathnames of the form
570     /dev/tcp/host/port and /dev/udp/host/port, and tries to open a socket
571     of the appropriate type to the specified port on the specified host.
572
573 k.  The ksh-93 ${!prefix*} expansion, which expands to the names of all
574     shell variables whose names start with prefix, has been implemented.
575
576 l.  There is a new dynamic variable, FUNCNAME, which expands to the name of
577     a currently-executing function.  Assignments to FUNCNAME have no effect.
578
579 m.  The GROUPS variable is no longer readonly; assignments to it are silently
580     discarded.  This means it can be unset.
581
582 4.  New Features in Readline
583
584 a.  Parentheses matching is now always compiled into readline, and enabled
585     or disabled when the value of the `blink-matching-paren' variable is
586     changed.
587
588 b.  MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename.
589
590 c.  MS-DOS systems now use ~/_history as the default history file.
591
592 d.  history-search-{forward,backward} now leave the point at the end of the
593     line when the string to search for is empty, like
594     {reverse,forward}-search-history.
595
596 e.  history-search-{forward,backward} now leave the last history line found
597     in the readline buffer if the second or subsequent search fails.
598
599 f.  New function for use by applications:  rl_on_new_line_with_prompt, used
600     when an application displays the prompt itself before calling readline().
601
602 g.  New variable for use by applications:  rl_already_prompted.  An application
603     that displays the prompt itself before calling readline() must set this to
604     a non-zero value.
605
606 ------------------------------------------------------------------------------
607 This document details the changes between this version, bash-2.03-release,
608 and the previous version, bash-2.03-beta2.
609
610 1.  Changes to Bash
611
612 a.  A file descriptor leak in the `fc' builtin was fixed.
613
614 b.  A bug was fixed in the `read' builtin that caused occasional spurious
615     failures when using `read -e'.
616
617 c.  The version code needed to use the value of the cpp variable
618     CONF_MACHTYPE rather than MACHTYPE.
619
620 d.  A new test was added to exercise the command printing and copying code.
621
622 e.  A bug was fixed that caused `time' to be recognized as a reserved word
623     if it was the first pattern in a `case' statement pattern list.
624
625 ------------------------------------------------------------------------------
626 This document details the changes between this version, bash-2.03-beta2,
627 and the previous version, bash-2.03-beta1.
628
629 1.  Changes to Bash
630
631 a.  Slight additions to support/shobj-conf, mostly for the benefit of AIX 4.2.
632
633 b.  config.{guess,sub} support added for the NEC SX4.
634
635 c.  Changed some of the cross-compiling sections of the configure macros in
636     aclocal.m4 so that configure won't abort.
637
638 d.  Slight changes to how the HTML versions of the bash and readline manuals
639     are generated.
640
641 e.  Fixed conditional command printing to avoid interpreting printf `%'-escapes
642     in arguments to [[.
643
644 f.  Don't include the bash malloc on all variants of the alpha processor.
645
646 g.  Changes to configure to make --enable-profiling work on Solaris 2.x.
647
648 h.  Fixed a bug that manifested itself when shell functions were called
649     between calls to `getopts'.
650
651 i.  Fixed pattern substitution so that a bare `#'as a pattern causes the
652     replacement string to be prefixed to the search string, and a bare
653     `%' causes the replacement string to be appended to the search string.
654
655 j.  Fixed a bug in the command execution code that caused child processes
656     to occasionally have the wrong value for $!.
657
658 2.  Changes to Readline
659
660 a.  Added code to the history library to catch history substitutions using
661     `&' without a previous history substitution or search having been
662     performed.
663
664 3.  New Features in Bash
665
666 4.  New Features in Readline
667
668 a.  New bindable variable: `isearch-terminators'.
669
670 b.  New bindable function: `forward-backward-delete-char' (unbound by default).
671
672 ------------------------------------------------------------------------------
673 This document details the changes between this version, bash-2.03-beta1,
674 and the previous version, bash-2.03-alpha.
675     
676 1.  Changes to Bash
677
678 a.  A change was made to the help text for `{...}' to make it clear that a
679     semicolon is required before the closing brace.
680
681 b.  A fix was made to the `test' builtin so that syntax errors cause test
682     to return an exit status > 1.
683
684 c.  Globbing is no longer performed on assignment statements that appear as
685     arguments to `assignment builtins' such as `export'.
686
687 d.  System-specific configuration changes were made for:  Rhapsody,
688     AIX 4.2/gcc, BSD/OS 4.0.
689
690 e.  New loadable builtins: ln, unlink.
691
692 f.  Some fixes were made to the globbing code to handle extended glob patterns
693     which immediately follow a `*'.
694
695 g.  A fix was made to the command printing code to ensure that redirections
696     following compound commands have a space separating them from the rest
697     of the command.
698
699 h.  The pathname canonicalization code was changed to produce fewer leading
700     `//' sequences, since those are interpreted as network file system
701     pathnames on some systems.
702
703 i.  A fix was made so that loops containing `eval' commands in commands passed
704     to `bash -c' would not exit prematurely.
705
706 j.  Some changes were made to the job reaping code when the shell is not
707     interactive, so the shell will retain exit statuses longer for examination
708     by `wait'.
709
710 k.  A fix was made so that `jobs | command' works again.
711
712 l.  The erroneous compound array assignment var=((...)) is now a syntax error.
713
714 m.  A change was made to the dynamic loading code in `enable' to support
715     Tenon's MachTen.
716
717 n.  A fix was made to the globbing code so that extended globbing patterns
718     will correctly match `.' in a bracket expression.
719
720 2.  Changes to Readline
721
722 a.  A fix was made to the completion code in which a typo caused the wrong
723     value to be passed to the function that computed the longest common
724     prefix of the list of matches.
725
726 b.  The completion code now checks the value of rl_filename_completion_desired,
727     which is set by application-supplied completion functions to indicate
728     that filename completion is being performed, to decide whether or not to
729     call an application-supplied `ignore completions' function.
730
731 3.  New Features in Bash
732
733 a.  A change was made to the startup file code so that any shell begun with
734     the `--login' option, even non-interactive shells, will source the login
735     shell startup files.
736
737 4.  New Features in Readline
738
739 a.  A new variable, rl_erase_empty_line, which, if set by an application using
740     readline, will cause readline to erase, prompt and all, lines on which the
741     only thing typed was a newline.
742
743 ------------------------------------------------------------------------------
744 This document details the changes between this version, bash-2.03-alpha,
745 and the previous version, bash-2.02.1-release.
746
747 1.  Changes to Bash
748
749 a.  System-specific configuration changes were made for: Irix 6.x, Unixware 7.
750
751 b.  The texi2dvi and texi2html scripts were updated to the latest versions
752     from the net.
753
754 c.  The configure tests that determine which native type is 32 bits were
755     changed to not require a compiled program.
756
757 d.  Fixed a bug in shell_execve that could cause memory to be freed twice
758     after a failed exec.
759
760 e.  The `printf' test uses `diff -a' if it's available to prevent confusion
761     due to the non-ascii output.
762
763 f.  Shared object configuration is now performed by a shell script,
764     support/shobj-conf, which generates values to be substituted into
765     makefiles by configure.
766
767 g.  Some changes were made to `ulimit' to avoid the use of RLIM_INVALID as a
768     return value.
769
770 h.  Changes were made to `ulimit' to work around HPUX 9.x's peculiar
771     handling of RLIMIT_FILESIZE.
772
773 i.  Some new loadable builtins were added: id, printenv, sync, whoami, push,
774     mkdir.  `pushd', `popd', and `dirs' can now be built as regular or
775     loadable builtins from the same source file.
776
777 j.  Changes were made to `printf' to handle NUL bytes in the expanded format
778     string.
779
780 k.  The various `make clean' Makefile targets now descend into lib/sh.
781
782 l.  The `type' builtin was changed to use the internal `getopt' so that things
783     like `type -ap' work as expected.
784
785 m.  There is a new configuration option, --with-installed-readline, to link
786     bash with a locally-installed version of readline.  Only readline version
787     4.0 and later releases can support this.  Shared and static libraries
788     are supported.  The installed include files are used.
789
790 n.  There is a new autoconf macro used to find which basic type is 64 bits.
791
792 o.  Dynamic linking and loadable builtins should now work on SCO 3.2v5*,
793     AIX 4.2 with gcc, Unixware 7, and many other systems using gcc, where
794     the `-shared' options works correctly.
795
796 p.  A bug was fixed in the bash filename completion code that caused memory to
797     be freed twice if a directory name containing an unset variable was
798     completed and the -u option was set.
799
800 q.  The prompt expansion code now quotes the `$' in the `\$' expansion so it
801     is not processed by subsequent parameter expansion.
802
803 r.  Fixed a parsing bug that caused a single or double quote after a `$$' to
804     trigger ANSI C expansion or locale translation.
805
806 s.  Fixed a bug in the globbing code that caused quoted filenames containing
807     no globbing characters to sometimes be incorrectly expanded.
808
809 t.  Changes to the default prompt strings if prompt string decoding is not
810     compiled into the shell.
811
812 u.  Added `do', `then', `else', `{', and `(' to the list of keywords that may
813     precede the `time' reserved word.
814
815 v.  The shell may now be cross-built for BeOS as well as cygwin32.
816
817 w.  The conditional command execution code now treats `=' the same as `=='
818     for deciding when to perform pattern matching.
819
820 x.  The `-e' option no longer causes the shell to exit if a command exits
821     with a non-zero status while running the startup files.
822
823 y.  The `printf' builtin no longer dumps core if a modifier is supplied in
824     the format string without a conversion character (e.g. `%h').
825
826 z.  Array assignments of the form a=(...) no longer show up in the history
827     list.
828
829 aa. The parser was fixed to obey the POSIX.2 rules for finding the closing
830     `}' in a ${...} expression.
831
832 bb. The history file is now opened with mode 0600 rather than 0666, so bash
833     no longer relies on the user's umask being set appropriately.
834
835 cc. Setting LANG no longer causes LC_ALL to be assigned a value; bash now
836     relies on proper behavior from the C library.
837
838 dd. Minor changes were made to allow quoted variable expansions using
839     ${...} to be completed correctly if there is no closing `"'.
840
841 ee. Changes were made to builtins/Makefile.in so that configuring the shell
842     with `--enable-profiling' works right and builtins/mkbuiltins is
843     generated.
844
845 2.  Changes to Readline
846
847 a.  The version number is now 4.0.
848
849 b.  There is no longer any #ifdef SHELL code in the source files.
850
851 c.  Some changes were made to the key binding code to fix memory leaks and
852     better support Win32 systems.
853
854 d.  Fixed a silly typo in the paren matching code -- it's microseconds, not
855     milliseconds.
856
857 e.  The readline library should be compilable by C++ compilers.
858
859 f.  The readline.h public header file now includes function prototypes for
860     all readline functions, and some changes were made to fix errors in the
861     source files uncovered by the use of prototypes.
862
863 g.  The maximum numeric argument is now clamped at 1000000.
864
865 h.  Fixes to rl_yank_last_arg to make it behave better.
866
867 i.  Fixed a bug in the display code that caused core dumps if the prompt
868     string length exceeded 1024 characters.
869
870 j.  The menu completion code was fixed to properly insert a single completion
871     if there is only one match.
872
873 k.  A bug was fixed that caused the display code to improperly display tabs
874     after newlines.
875
876 3.  New Features in Bash
877
878 a.  New `shopt' option, `restricted_shell', indicating whether or not the
879     shell was started in restricted mode, for use in startup files.
880
881 b.  Filename generation is now performed on the words between ( and ) in
882     array assignments (which it probably should have done all along).
883
884 c.  OLDPWD is now auto-exported, as POSIX.2 seems to require.
885
886 d.  ENV and BASH_ENV are read-only variables in a restricted shell.
887
888 4.  New Features in Readline
889
890 a.  Many changes to the signal handling:
891         o Readline now catches SIGQUIT and cleans up the tty before returning;
892         o A new variable, rl_catch_signals, is available to application writers 
893           to indicate to readline whether or not it should install its own
894           signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP,
895           SIGTTIN, and SIGTTOU;
896         o A new variable, rl_catch_sigwinch, is available to application
897           writers to indicate to readline whether or not it should install its
898           own signal handler for SIGWINCH, which will chain to the calling
899           applications's SIGWINCH handler, if one is installed;
900         o There is a new function, rl_free_line_state, for application signal
901           handlers to call to free up the state associated with the current
902           line after receiving a signal;
903         o There is a new function, rl_cleanup_after_signal, to clean up the
904           display and terminal state after receiving a signal;
905         o There is a new function, rl_reset_after_signal, to reinitialize the
906           terminal and display state after an application signal handler
907           returns and readline continues
908
909 b.  There is a new function, rl_resize_terminal, to reset readline's idea of
910     the screen size after a SIGWINCH.
911
912 c.  New public functions: rl_save_prompt and rl_restore_prompt.  These were
913     previously private functions with a `_' prefix.
914
915 d.  New function hook: rl_pre_input_hook, called just before readline starts
916     reading input, after initialization.
917
918 e.  New function hook: rl_display_matches_hook, called when readline would
919     display the list of completion matches.  The new function
920     rl_display_match_list is what readline uses internally, and is available
921     for use by application functions called via this hook.
922
923 f.  New bindable function, delete-char-or-list, like tcsh.
924
925 ------------------------------------------------------------------------------
926 This document details the changes between this version, bash-2.02.1-release,
927 and the previous version, bash-2.02-release.
928
929 1.  Changes to Bash
930
931 a.  A bug that caused the bash readline support to not compile unless aliases
932     and csh-style history were configured into the shell was fixed.
933
934 b.  Fixed a bug that could cause a core dump when here documents contained
935     more than 1000 characters.
936
937 c.  Fixed a bug that caused a CDPATH entry of "" to not be treated the same
938     as the current directory when in POSIX mode.
939
940 d.  Fixed an alignment problem with the memory returned by the bash malloc,
941     so returned memory is now 64-bit aligned.
942
943 e.  Fixed a bug that caused command substitutions executed within pipelines
944     to put the terminal in the wrong process group.
945
946 f.  Fixes to support/config.sub for: alphas, SCO Open Server and Open Desktop,
947     Unixware 2, and Unixware 7.
948
949 g.  Fixes to the pattern matching code to make it work correctly for eight-bit
950     characters.
951
952 h.  Fixed a problem that occasionally caused the shell to display the wrong
953     value for the new working directory when changing to a directory found
954     in $CDPATH when in physical mode.
955
956 i.  Fixed a bug that caused core dumps when using conditional commands in
957     shell functions.
958
959 j.  Fixed a bug that caused the printf builtin to loop forever if the format
960     string did not consume any of the arguments.
961
962 k.  Fixed a bug in the parameter expansion code that caused "$@" to be
963     incorrectly split if $IFS did not contain a space character.
964
965 l.  Fixed a bug that could cause a core dump when completing hostnames if
966     the number of matching hostnames was an exact multiple of 16.
967
968 m.  Fixed a bug that caused the shell to fork too early when a command
969     such as `%2 &' was given.
970
971 2.  Changes to Readline
972
973 a.  Fixed a problem with redisplay that showed up when the prompt string was
974     longer than the screen width and the prompt contained invisible characters.
975
976 ------------------------------------------------------------------------------
977 This document details the changes between this version, bash-2.02-release,
978 and the previous version, bash-2.02-beta2.
979
980 1.  Changes to Bash
981
982 a.  A bug was fixed that caused the terminal process group to be set
983     incorrectly when performing command substitution of builtins in a
984     pipeline.
985
986 ------------------------------------------------------------------------------
987 This document details the changes between this version, bash-2.02-beta2,
988 and the previous version, bash-2.02-beta1.
989
990 1.  Changes to Bash
991
992 a.  Attempting to `wait' for stopped jobs now generates a warning message.
993
994 b.  Pipelines which exit due to SIGPIPE in non-interactive shells are now
995     not reported if the shell is compiled -DDONT_REPORT_SIGPIPE.
996
997 c.  Some changes were made to builtins/psize.sh and support/bashbug.sh to
998     attempt to avoid some /tmp file races and surreptitious file
999     substitutions.
1000
1001 d.  Fixed a bug that caused the shell not to compile if configured with
1002     dparen arithmetic but without aliases.
1003
1004 e.  Fixed a bug that caused the input stream to be switched when assigning
1005     empty arrays with `bash -c'.
1006
1007 f.  A bug was fixed in the readline expansion glue code that caused bash to
1008     dump core when expanding lines with an unclosed single quote.
1009
1010 g.  A fix was made to the `cd' builtin so that using a non-empty directory
1011     from $CDPATH results in an absolute pathname of the new current working
1012     directory to be displayed after the current directory is changed.
1013
1014 h.  Fixed a bug in the variable assignment code that caused the shell to
1015     dump core when referencing an unset variable with `set -u' enabled in
1016     an assignment statement preceding a command.
1017
1018 i.  Fixed a bug in the exit trap code that caused reserved words to not be
1019     recognized under certain circumstances.
1020
1021 j.  Fixed a bug in the parameter pattern substitution code so that quote
1022     removal is performed.
1023
1024 k.  The shell should now configure correctly on Apple Rhapsody systems.
1025
1026 l.  The `kill' builtin now prints a usage message if it is not passed any
1027     arguments.
1028
1029 ------------------------------------------------------------------------------
1030 This document details the changes between this version, bash-2.02-beta1,
1031 and the previous version, bash-2.02-alpha1.
1032
1033 1.  Changes to Bash
1034
1035 a.  A few compilation bugs were fixed in the new extended globbing code.
1036
1037 b.  Executing arithmetic commands now sets the command name to `((' so
1038     error messages look right.
1039
1040 c.  Fixed some build problems with various configuration options.
1041
1042 d.  The `printf' builtin now aborts immediately if an illegal format
1043     character is encountered.
1044
1045 e.  The code that creates here-documents now behaves better if the file it's
1046     trying to create already exists for some reason.
1047
1048 f.  Fixed a problem with the extended globbing code that made patterns like
1049     `x+*' expand incorrectly.
1050
1051 g.  The prompt string expansion code no longer quotes tildes with backslashes.
1052
1053 h.  The bash getcwd() implementation in lib/sh/getcwd.c now behaves better in
1054     the presence of lstat(2) failures.
1055
1056 i.  Fixed a bug with strsub() that caused core dumps when executing `fc -s'.
1057
1058 j.  The mail checking code now ensures that it has a valid default mailpath.
1059
1060 k.  A bug was fixed that caused local variables to be unset inappropriately
1061     when sourcing a script from within another sourced script.
1062
1063 l.  A bug was fixed in the history saving code so that functions are saved
1064     in the history list correctly if `cmdhist' is enabled, but `lithist'
1065     is not.
1066
1067 m.  A bug was fixed that caused printf overflows when displaying error
1068     messages.
1069
1070 n.  It should be easier to build the loadble builtins in examples/loadables,
1071     though some manual editing of the generated Makefile is still required.
1072
1073 o.  The user's primary group is now always ${GROUPS[0]}.
1074
1075 p.  Some updates were made to support/config.guess from the GNU master copy.
1076
1077 q.  Some changes were made to the autoconf support for Solaris 2.6 large
1078     files.
1079
1080 r.  The `command' builtins now does the right thing when confstr(3) cannot
1081     find a value for _CS_PATH.
1082
1083 s.  Extended globbing expressions like `*.!(c)' are not history expanded if
1084     `extglob' is enabled.
1085
1086 t.  Using the `-P' option to `cd' will force the value that is assigned to
1087     PWD to not contain any symbolic links.
1088
1089 2.  Changes to Readline
1090
1091 a.  The code that prints completion listings now behaves better if one or
1092     more of the filenames contains non-printable characters.
1093
1094 b.  The time delay when showing matching parentheses is now 0.5 seconds.
1095
1096 ------------------------------------------------------------------------------
1097 This document details the changes between this version, bash-2.02-alpha1,
1098 and the previous version, bash-2.01.1-release.
1099
1100 1.  Changes to Bash
1101
1102 a.  OS-specific configuration changes for:  BSD/OS 3.x, Minix 2.x,
1103     Solaris 2.6, SINIX SVR4.
1104
1105 b.  Changes were made to the generated `info' files so that `install-info'
1106     works correctly.
1107
1108 c.  PWD is now auto-exported.
1109
1110 d.  A fix was made to the pipeline code to make sure that the shell forks
1111     to execute simple commands consisting solely of assignment statements.
1112
1113 e.  Changes to the test suite for systems with 14-character filenames.
1114
1115 f.  The default sizes of some internal hash tables have been made smaller
1116     to reduce the shell's memory footprint.
1117
1118 g.  The `((...))' arithmetic command is now executed directly instead of
1119     being translated into `let "..."'.
1120
1121 h.  Fixes were made to the expansion code so that "$*", "$@", "${array[@]}",
1122     and "${array[@]}" expand correctly when IFS does not contain a space
1123     character, is unset, or is set to NULL.
1124
1125 i.  The indirect expansion code (${!var}) was changed so that the only
1126     valid values of `var' are variable names, positional parameters, `#',
1127     `@', and `*'.
1128
1129 j.  An arithmetic expression error in a $((...)) expansion now causes a
1130     non-interactive shell running in posix mode to exit.
1131
1132 k.  Compound array assignment now splits the words within the parentheses
1133     on shell metacharacters like the parser would before expansing them
1134     and performing the assignment.  This is for compatibility with ksh-93.
1135
1136 l.  The internal shell backslash-quoting code (used in the output of `set'
1137     and completion) now quotes tildes if they appear at the start of the
1138     string or after a `=' or `:'.
1139
1140 m.  A couple of bugs with `shopt -o' were fixed.
1141
1142 n.  `bash +o' now displays the same output as `set +o' before starting an
1143     interactive shell.
1144
1145 o.  A bug that caused command substitution and the `eval' builtin to
1146     occasionally free memory twice when an error was encountered was fixed.
1147
1148 p.  The filename globbing code no longer requires read permission for a
1149     directory when the filename to be matched does not contain any globbing
1150     characters, as POSIX.2 specifies.
1151
1152 q.  A bug was fixed so that the job containing the last asynchronous
1153     process is not removed from the job table until a `wait' is executed
1154     for that process or another asynchronous process is started.  This
1155     satisfies a POSIX.2 requirement.
1156
1157 r.  A `select' bug was fixed so that a non-numeric user response is treated
1158     the same as a numeric response that is out of range.
1159
1160 s.  The shell no longer parses the value of SHELLOPTS from the environment
1161     if it is restricted, running setuid, or running in `privileged mode'.
1162
1163 t.  Fixes were made to enable large file support on systems such as
1164     Solaris 2.6, where the size of a file may be larger than can be held
1165     in an `int'.
1166
1167 u.  The filename hashing code was fixed to not add `./' to the beginning of
1168     filenames which already begin with `./'.
1169
1170 v.  The configure script was changed so that the GNU termcap library is not
1171     compiled in if `prefer-curses' has been specified.
1172
1173 w.  HISTCONTROL and HISTIGNORE are no longer applied to the second and
1174     subsequent lines of a multi-line command.
1175
1176 x.  A fix was made to `disown' so that it does a better job of catching
1177     out-of-range jobs.
1178
1179 y.  Non-interactive shells no longer report the status of processes terminated
1180     due to SIGINT, even if the standard output is a terminal.
1181
1182 z.  A bug that caused the output of `jobs' to have extra carriage returns
1183     was fixed.
1184
1185 aa. A bug that caused PIPESTATUS to not be set when builtins or shell
1186     functions were executed in the foreground was fixed.
1187
1188 bb. Bash now attempts to detect when it is being run by sshd, and treats
1189     that case identically to being run by rshd.
1190
1191 cc. A bug that caused `set -a' to export SHELLOPTS when one of the shell
1192     options was changed was fixed.
1193
1194 dd. The `kill' builtin now disallows empty or missing process id arguments
1195     instead of treating them as identical to `0', which means the current
1196     process.
1197
1198 ee. `var=value declare -x var' now behaves identically to
1199     `var=value export var'.  Similarly for `var=value declare -r var' and
1200     `var=value readonly var'.
1201
1202 ff. A few memory leaks were fixed.
1203
1204 gg. `alias' and `unalias' now print error messages when passed an argument
1205     that is not an alias for printing or deletion, even when the shell is
1206     not interactive, as POSIX.2 specifies.
1207
1208 hh. `alias' and `alias -p' now return a status of 0 when no aliases are
1209     defined, as POSIX.2 specifes.
1210
1211 ii. `cd -' now prints the pathname of the new working directory if the shell
1212     is interactive.
1213
1214 jj. A fix was made so that the code that binds $PWD now copes with getcwd()
1215     returning NULL.
1216
1217 kk. `unset' now checks whether or not a function name it's trying to unset
1218     is a valid shell identifier only when the shell is running in posix mode.
1219
1220 ll. A change was made to the code that generates filenames for here documents
1221     to make them less prone to name collisions.
1222
1223 mm. The parser was changed so that `time' is recognized as a reserved word
1224     only at the beginning of a pipeline.
1225
1226 nn. The pathname canonicalization code was changed so that `//' is converted
1227     into `/', but all other pathnames beginning with `//' are left alone, as
1228     POSIX.2 specifies.
1229
1230 oo. The `logout' builtin will no longer exit a non-interactive non-login
1231     shell.
1232
1233 2.  Changes to Readline
1234
1235 a.  Fixed a problem in the readline test program rltest.c that caused a core
1236     dump.
1237
1238 b.  The code that handles parser directives in inputrc files now displays
1239     more error messages.
1240
1241 c.  The history expansion code was fixed so that the appearance of the
1242     history comment character at the beginning of a word inhibits history
1243     expansion for that word and the rest of the input line.
1244
1245 3.  New Features in Bash
1246
1247 a.  A new version of malloc, based on the older GNU malloc, that has many
1248     changes, is more page-based, is more conservative with memory usage,
1249     and does not `orphan' large blocks when they are freed.
1250
1251 b.  A new version of gmalloc, based on the old GLIBC malloc, with many
1252     changes and range checking included by default.
1253
1254 c.  A new implementation of fnmatch(3) that includes full POSIX.2 Basic
1255     Regular Expression matching, including character classes, collating
1256     symbols, equivalence classes, and support for case-insensitive pattern
1257     matching.
1258
1259 d.  ksh-88 egrep-style extended pattern matching ([@+*?!](patlist)) has been
1260     implemented, controlled by a new `shopt' option, `extglob'.
1261
1262 e.  There is a new ksh-like `[[' compound command, which implements
1263     extended `test' functionality.
1264
1265 f.  There is a new `printf' builtin, implemented according to the POSIX.2
1266     specification.
1267
1268 g.  There is a new feature for command substitution: $(< filename) now expands
1269     to the contents of `filename', with any trailing newlines removed
1270     (equivalent to $(cat filename)).
1271
1272 h.  There are new tilde prefixes which expand to directories from the
1273     directory stack.
1274
1275 i.  There is a new `**' arithmetic operator to do exponentiation.
1276
1277 j.  There are new configuration options to control how bash is linked:
1278     `--enable-profiling', to allow bash to be profiled with gprof, and
1279     `--enable-static-link', to allow bash to be linked statically.
1280
1281 k.  There is a new configuration option, `--enable-cond-command', which
1282     controls whether or not the `[[' command is included.  It is on by
1283     default.
1284
1285 l.  There is a new configuration option, `--enable-extended-glob', which
1286     controls whether or not the ksh extended globbing feature is included.
1287     It is enabled by default.
1288
1289 m.  There is a new configuration #define in config.h.top that, when enabled,
1290     will cause all login shells to source /etc/profile and one of the user-
1291     specific login shell startup files, whether or not the shell is
1292     interactive.
1293
1294 n.  There is a new invocation option, `--dump-po-strings', to dump
1295     a shell script's translatable strings ($"...") in GNU `po' format.
1296
1297 o.  There is a new `shopt' option, `nocaseglob', to enable case-insensitive
1298     pattern matching when globbing filenames and using the `case' construct.
1299
1300 p.  There is a new `shopt' option, `huponexit', which, when enabled, causes
1301     the shell to send SIGHUP to all jobs when an interactive login shell
1302     exits.
1303
1304 q.  `bind' has a new `-u' option, which takes a readline function name as an
1305     argument and unbinds all key sequences bound to that function in a
1306     specified keymap.
1307
1308 r.  `disown' now has `-a' and `-r' options, to limit operation to all jobs
1309     and running jobs, respectively.
1310
1311 s.  The `shopt' `-p' option now causes output to be displayed in a reusable
1312     format.
1313
1314 t.  `test' has a new `-N' option, which returns true if the filename argument
1315     has been modified since it was last accessed.
1316
1317 u.  `umask' now has a `-p' option to print output in a reusable format.
1318
1319 v.  A new escape sequence, `\xNNN', has been added to the `echo -e' and $'...'
1320     translation code.  It expands to the character whose ascii code is NNN
1321     in hexadecimal.
1322
1323 w.  The prompt string expansion code has a new `\r' escape sequence.
1324
1325 x.  The shell may now be cross-compiled for the CYGWIN32 environment on
1326     a Unix machine.
1327
1328 4.  New Features in Readline
1329
1330 a.  There is now an option for `iterative' yank-last-arg handline, so a user
1331     can keep entering `M-.', yanking the last argument of successive history
1332     lines.
1333
1334 b.  New variable, `print-completions-horizontally', which causes completion
1335     matches to be displayed across the screen (like `ls -x') rather than up
1336     and down the screen (like `ls').
1337
1338 c.  New variable, `completion-ignore-case', which causes filename completion
1339     and matching to be performed case-insensitively.
1340
1341 d.  There is a new bindable command, `magic-space', which causes history
1342     expansion to be performed on the current readline buffer and a space to
1343     be inserted into the result.
1344
1345 e.  There is a new bindable command, `menu-complete', which enables tcsh-like
1346     menu completion (successive executions of menu-complete insert a single
1347     completion match, cycling through the list of possible completions).
1348
1349 f.  There is a new bindable command, `paste-from-clipboard', for use on Win32
1350     systems, to insert the text from the Win32 clipboard into the editing
1351     buffer.
1352
1353 g.  The key sequence translation code now understands printf-style backslash
1354     escape sequences, including \NNN octal escapes.  These escape sequences
1355     may be used in key sequence definitions or macro values.
1356
1357 h.  An `$include' inputrc file parser directive has been added.
1358
1359 ------------------------------------------------------------------------------
1360 This document details the changes between this version, bash-2.01.1-release,
1361 and the previous version, bash-2.01-release.
1362
1363 1.  Changes to Bash
1364
1365 a.  The select command was fixed to check the validity of the user's
1366     input more strenuously.
1367
1368 b.  A bug was fixed that prevented `time' from timing commands correctly
1369     when supplied as an argument to `bash -c'.
1370
1371 c.  A fix was made to the mail checking code to keep from adding the same
1372     mail file to the list of files to check multiple times when parsing
1373     $MAILPATH.
1374
1375 d.  Fixed an off-by-one error in the tilde expansion library.
1376
1377 e.  When using the compound array assignment syntax, the old value of
1378     the array is cleared before assigning the new value.
1379
1380 f.  Fixed a bug that could cause a core dump when a trap handler was reset
1381     to the default in the trap command associated with that signal.
1382
1383 g.  Fixed a bug in the locale code that occurred when assigning a value
1384     to LC_ALL.
1385
1386 h.  A change was made to the parser so that words of the form xxx=(...)
1387     are not considered compound assignment statements unless there are
1388     characters before the `='.
1389
1390 i.  A fix was made to the command tracing code to correctly quote each
1391     word of output.
1392
1393 j.  Some changes were made to the bash-specific autoconf tests to make them
1394     more portable.
1395
1396 k.  Completion of words with globbing characters now correctly quotes the
1397     result.
1398
1399 l.  The directory /var/spool/mail is now preferred to /usr/spool/mail when
1400     configure is deciding on the default mail directory.
1401
1402 m.  The brace completion code was fixed to not quote the `{' and `}'.
1403
1404 n.  Some fixes were made to make $RANDOM more random in subshells.
1405
1406 o.  System-specific changes were made to configure for: SVR4.2
1407
1408 p.  Changes were made so that completion of words containing globbing chars
1409     substitutes the result only if a single filename was matched.
1410
1411 q.  The window size is now recomputed after a job is stopped with SIGTSTP if
1412     the user has set `checkwinsize' with `shopt'.
1413
1414 r.  When doing substring expansion, out-of-range substring specifiers now
1415     cause nothing to be substituted rather than an expansion error.
1416
1417 s.  A fix was made so that you can no longer trap `SIGEXIT' or `SIGDEBUG' --
1418     only `EXIT' and `DEBUG' are accepted.
1419
1420 t.  The display of trapped signals now uses the signal number if signals
1421     for which bash does not know the name are trapped.
1422
1423 u.  A fix was made so that `bash -r' does not turn on restricted mode until
1424     after the startup files are executed.
1425
1426 v.  A bug was fixed that occasionally caused a core dump when a variable
1427     found in the temporary environment of export/declare/readonly had a
1428     null value.
1429
1430 w.  A bug that occasionally caused unallocated memory to be passed to free()
1431     when doing arithmetic substitution was fixed.
1432
1433 x.  A bug that caused a buffer overrun when expanding a prompt string
1434     containing `\w' and ${#PWD} exceeded PATH_MAX was fixed.
1435
1436 y.  A problem with the completion code that occasionally caused it to
1437     refer to a character before the beginning of the readline line buffer
1438     was fixed.
1439
1440 z.  A bug was fixed so that the `read' builtin restarts reads when
1441     interrupted by signals other than SIGINT.
1442
1443 aa. Fixed a bug that caused a command to be freed twice when there was
1444     an evaluation error in the `eval' command.
1445
1446 2.  Changes to Readline
1447
1448 a.  Added a missing `extern' to a declaration in readline.h that kept
1449     readline from compiling cleanly on some systems.
1450
1451 b.  The history file is now opened with mode 0600 when it is written for
1452     better security.
1453
1454 c.  Changes were made to the SIGWINCH handling code so that prompt redisplay
1455     is done better.
1456
1457 d.  ^G now interrupts incremental searches correctly.
1458
1459 e.  A bug that caused a core dump when the set of characters to be quoted
1460     when completing words was empty was fixed.
1461
1462 ------------------------------------------------------------------------------
1463 This document details the changes between this version, bash-2.01-release,
1464 and the previous version, bash-2.01-beta2.
1465
1466 1.  Changes to Bash
1467
1468 a.  The `distclean' target should remove the `printenv' executable if it
1469     has been created.
1470
1471 b.  The test suite was changed slightly to ensure that the error messages
1472     are printed in English.
1473
1474 c.  A bug that caused the shell to dump core when a filename containing a
1475     `/' was passed to `hash' was fixed.
1476
1477 d.  Pathname canonicalization now leaves a leading `//' intact, as POSIX.1
1478     requires.
1479
1480 e.  A memory leak when completing commands was fixed.
1481
1482 f.  A memory leak that occurred when checking the hash table for commands
1483     with relative paths was fixed.
1484
1485 ------------------------------------------------------------------------------
1486 This document details the changes between this version, bash-2.01-beta2,
1487 and the previous version, bash-2.01-beta1.
1488
1489 1.  Changes to Bash
1490
1491 a.  The `ulimit' builtin translates RLIM_INFINITY to the hard limit only if
1492     the current (soft) limit is less than or equal to the hard limit.
1493
1494 b.  Fixed a bug that caused the bash emulation of strcasecmp to produce
1495     incorrect results.
1496
1497 c.  A bug that caused memory to be freed twice when a trap handler resets
1498     the trap more than once was fixed.
1499
1500 d.  A bug that caused machines where sizeof (pointer) > sizeof (int) to
1501     fail (and possibly dump core) when trying to unwind-protect a null
1502     pointer was fixed.
1503
1504 e.  The startup files should not be run with job control enabled.  This fix
1505     allows SIGINT to once again interrupt startup file execution.
1506
1507 f.  Bash should not change the SIGPROF handler if it is set to something
1508     other than SIG_DFL.
1509
1510 g.  The completion code that provides bash-specific completions for readline
1511     now quotes characters that the readline code would treat as word break
1512     characters if they appear in a file name.
1513
1514 h.  The completion code now correctly quotes filenames containing a `!',
1515     even if the user attempted to use double quotes when attempting
1516     completion.
1517
1518 i.  A bug that caused the shell to dump core when `disown' was called without
1519     arguments and there was no current job was fixed.
1520
1521 j.  A construct like $((foo);bar) is now processed as a command substitution
1522     rather than as a bad arithmetic substitution.
1523
1524 k.  A couple of bugs that caused `fc' to not obey the `cmdhist' and `lithist'
1525     shell options when editing and re-executing a series of commands were
1526     fixed.
1527
1528 l.  A fix was made to the grammar -- the list of commands between `do' and
1529     `done' in the body of a `for' command should be treated the same as a
1530     while loop.
1531
1532 2.  Changes to Readline
1533
1534 a.  A couple of bugs that caused the history search functions to attempt to
1535     free a NULL pointer were fixed.
1536
1537 b.  If the C library provides setlocale(3), readline does not need to look
1538     at various environment variables to decide whether or not to go into
1539     eight-bit mode automatically -- just check whether the current locale
1540     is not `C' or `POSIX'.
1541
1542 c.  If the filename completion function finds that a directory was not closed
1543     by a previous (interrupted) completion, it closes the directory with
1544     closedir().
1545
1546 3.  New Features in Bash
1547
1548 a.  New bindable readline commands:  history-and-alias-expand-line and
1549     alias-expand-line.  The code was always in there, there was just no
1550     way to execute it.
1551
1552 ------------------------------------------------------------------------------
1553 This document details the changes between this version, bash-2.01-beta1,
1554 and the previous version, bash-2.01-alpha1.
1555
1556 1.  Changes to Bash
1557
1558 a.  Fixed a problem that could cause file descriptors used for process
1559     substitution to conflict with those used explicitly in redirections.
1560
1561 b.  Made it easier to regenerate configure if the user changes configure.in.
1562
1563 c.  ${GROUPS[0]} should always be the primary group, even on systems without
1564     multiple groups.
1565
1566 d.  Spelling correction is no longer enabled by default.
1567
1568 e.  Fixes to quoting problems in `bashbug'.
1569
1570 f.  OS-specific configuration changes were made for: Irix 6.
1571
1572 g.  OS-specific code changes were made for: QNX.
1573
1574 h.  A more meaningful message is now printed when the file in /tmp for a
1575     here document cannot be created.
1576
1577 i.  Many changes to the shell's variable initialization code to speed
1578     non-interactive startup.
1579
1580 j.  Changes to the non-job-control code so that it does not try to open
1581     /dev/tty.
1582
1583 k.  The output of `set' and `export' is once again sorted, as POSIX wants.
1584
1585 l.  Fixed a problem caused by a recursive call reparsing the value of
1586     $SHELLOPTS.
1587
1588 m.  The tilde code no longer calls getenv() when it's compiled as part of
1589     the shell, which should eliminate problems on systems that cannot
1590     redefine getenv(), like the NeXT OS.
1591
1592 n.  Fixed a problem that caused `bash -o' or `bash +o' to not list all
1593     the shell options.
1594
1595 o.  Fixed `ulimit' to convert RLIM_INFINITY to the appropriate hard limit
1596     only if the hard limit is greater than the current (soft) limit.
1597
1598 p.  Fixed a problem that arose when building bash in a different directory
1599     than the source and y.tab.[ch] were remade with something other than
1600     bison.  This came up most often on NetBSD.
1601
1602 q.  Fixed a problem with completion -- it thought that `pwd`/[TAB] indicated
1603     an unfinished command completion (`/), which generated errors.
1604
1605 r.  The bash special tilde expansions (~-, ~+) are now attempted before
1606     calling the standard tilde expansion code, which should eliminate the
1607     problems people have been seeing with this on Solaris 2.5.1.
1608
1609 s.  Added support for <stdarg.h> to places where it was missing.
1610
1611 t.  Changed the code that reads the output of a command substitution to not
1612     go through stdio.  This reduces the memory requirements and is faster.
1613
1614 u.  A number of changes to speed up export environment creation were made.
1615
1616 v.  A number of memory leaks were fixed as the result of running the test
1617     scripts through Purify.
1618
1619 w.  Fixed a bug that caused subshells forked to interpret executable
1620     scripts without a leading `#!' to not reinitialize the values of
1621     the shell options.
1622
1623 2.  Changes to Readline
1624
1625 a.  History library has less `#ifdef SHELL' code -- abstracted stuff out
1626     into application-specific function hooks.
1627
1628 b.  Readline no longer calls getenv() if it's compiled as part of the shell,
1629     which should eliminate problems on systems that cannot redefine getenv(),
1630     like the NeXT OS.
1631
1632 c.  Fixed translation of ESC when `untranslating' macro values.
1633
1634 d.  The region kill operation now fixes the mark if it ends up beyond the
1635     boundaries of the line after the region is deleted.
1636
1637 3.  New Features in Bash
1638
1639 a.  New argument for `configure':  `--with-curses'.  This can be used to
1640     override the selection of the termcap library on systems where it is
1641     deficient.
1642
1643 ------------------------------------------------------------------------------
1644 This document details the changes between this version, bash-2.01-alpha1,
1645 and the previous version, bash-2.0-release.
1646
1647 1.  Changes to Bash
1648
1649 a.  System-specific configuration changes for: FreeBSD, SunOS4, Irix,
1650     MachTen, QNX 4.2, Harris Night Hawk, SunOS5.
1651
1652 b.  System-specific code changes were made for: Linux, 4.4 BSD, QNX 4.2,
1653     HP-UX, AIX 4.2.
1654
1655 c.  A bug that caused the exec builtin to fail because the full pathname of
1656     the command could not be found was fixed.
1657
1658 d.  The code that performs output redirections is now more resistant to
1659     race conditions and possible security exploits.
1660
1661 e.  A bug that caused the shell to dump core when performing pattern
1662     substitutions on variable values was fixed.
1663
1664 f.  More hosts are now recognized by the auto-configuration mechanism
1665     (OpenBSD, QNX, others).
1666
1667 g.  Assignments to read-only variables that attempt to convert them to
1668     arrays are now errors.
1669
1670 h.  A bug that caused shell scripts using array assignments in POSIX mode
1671     to exit after the assignment was performed was fixed.
1672
1673 i.  The substring expansion code is now more careful about running off the
1674     ends of the expanded variable value.
1675
1676 j.  A bug that caused completion to fail if a backquoted command substitution
1677     appeared anywhere on the line was fixed.
1678
1679 k.  The `source' builtin no longer turns off history if it has been enabled
1680     in a non-interactive shell.
1681
1682 l.  A bug that caused the shell to crash when `disown' was given a pid
1683     instead of a job number was fixed.
1684
1685 m.  The `cd' spelling correction code will not try to change to `.' if no
1686     directory entries match a single-character argument.
1687
1688 n.  A bad variable name supplied to `declare', `export', or `readonly' no
1689     longer causes a non-interactive shell in POSIX mode to exit.
1690
1691 o.  Some fixes were made to the test suite to handle peculiarities of
1692     various Unix versions.
1693
1694 p.  The bash completion code now quotes characters that readline would
1695     treat as word breaks for completion but are not shell metacharacters.
1696
1697 q.  Bad options supplied at invocation now cause a usage message to be
1698     displayed.
1699
1700 r.  Fixes were made to the code that handles DEBUG traps so that the trap
1701     string is not freed inappropriately.
1702
1703 s.  Some changes were made to the bash debugger in examples/bashdb -- it
1704     should be closer to working now.
1705
1706 t.  A problem that caused the default filename used for mail checking to be
1707     wrong was fixed.
1708
1709 u.  A fix was made to the `echo' builtin so that NUL characters printed with
1710     `echo -e' do not cause the output to be truncated.
1711
1712 v.  A fix was made to the job control code so that the shell behaves better
1713     when monitor mode is enabled in a non-interactive shell.
1714
1715 w.  Bash no longer catches all of the terminating signals in a non-
1716     interactive shell until a trap is set on EXIT, which should result in
1717     quicker startup.
1718
1719 x.  A fix was made to the command timing code so that `time' can be used in
1720     a loop.
1721
1722 y.  A fix was made to the parser so that `((cmd); cmd2)' is now parsed as
1723     a nested subshell rather than strictly as an (erroneous) arithmetic
1724     command.
1725
1726 z.  A fix was made to the globbing code so that it correctly matches quoted
1727     filenames beginning with a `.'.
1728
1729 aa. A bug in `fc' that caused some multi-line commands to not be stored as
1730     one command in the history when they were re-executed after editing
1731     (with `fc -e') was fixed.
1732
1733 bb. The `ulimit' builtin now attempts to catch some classes of integer
1734     overflows.
1735
1736 cc. The command-oriented-history code no longer attempts to add `;'
1737     inappropriately when a newline appears while reading a $(...) command
1738     substitution.
1739
1740 dd. A bug that caused the shell to dump core when `help --' was executed
1741     was fixed.
1742
1743 ee. A bug that caused the shell to crash when an unset variable appeared
1744     in the body of a here document after `set -u' had been executed was
1745     fixed.
1746
1747 ff. Implicit input redirections from /dev/null for asynchronous commands
1748     are now handled better.
1749
1750 gg. A bug that caused the shell to fail to compile when configured with
1751     `--disable-readline' was fixed.
1752
1753 hh. The globbing code should now be interruptible.
1754
1755 ii. Bash now notices when the `kill' builtin is used to send SIGCONT to a
1756     stopped job and adjusts the data structures accordingly, as if `bg' had
1757     been executed instead.
1758
1759 jj. A bug that caused the shell to crash when mixing calls to `getopts'
1760     and `shift' on the same set of positional parameters was fixed.
1761
1762 kk. The command printing code now preserves the `-p' flag to `time'.
1763
1764 ll. The command printing code now handles here documents better when there
1765     are other redirections associated with the command.
1766
1767 mm. The special glibc environment variable (NNN_GNU_nonoption_argv_flags_)
1768     is no longer placed into the environment of executed commands -- users
1769     of glibc had too many problems with it.
1770
1771 nn. Reorganized the code that generates signames.h.  The signal_names list
1772     is now more complete but may be slightly different (SIGABRT is favored
1773     over SIGIOT, for example).  The preferred signal names are those
1774     listed in the POSIX.2 standard.
1775
1776 oo. `bashbug' now uses a filename shorter than 14 characters for its
1777     temporary file, and asks for confirmation before sending the bug
1778     report.
1779
1780 pp. A bug that caused TAB completion in vi editing mode to not be turned
1781     off when `set -o posix' was executed or back on when `set +o posix'
1782     was executed was fixed.
1783
1784 qq. A bug in the brace expansion code that caused brace expansions appearing
1785     in new-style $(...) command substitutions to be inappropriately expanded
1786     was fixed.
1787
1788 rr. A bug in the readline hook shell-expand-line that could cause memory to
1789     be inappropriately freed was fixed.
1790
1791 ss. A bug that caused some arithmetic expressions containing `&&' and `||'
1792     to be parsed with the wrong precedence has been fixed.
1793
1794 tt. References to unbound variables after `set -u' has been executed now
1795     cause the shell to exit immediately, as they should.
1796
1797 uu. A bug that caused the shell to exit inappropriately when `set -e' had
1798     been executed and a command's return status was being inverted with the
1799     `!' reserved word was fixed.
1800
1801 vv. A bug that could occasionally cause the shell to crash with a
1802     divide-by-zero error when timing a command was fixed.
1803
1804 ww. A bug that caused parameter pattern substitution to leave stray
1805     backslashes in the replacement string when the expression is in
1806     double quotes was fixed.
1807
1808 xx. The `break' and `continue' builtins now break out of all loops when an
1809     invalid count argument is supplied.
1810
1811 yy. Fixed a bug that caused PATH to be set to the empty string if
1812     `command -p' is executed with PATH unset.
1813
1814 zz. Fixed `kill -l signum' to print the signal name without the `SIG' prefix,
1815     as POSIX specifies.
1816
1817 aaa. Fixed a bug that caused the shell to crash while setting $SHELLOPTS
1818      if there were no shell options set.
1819
1820 bbb. Fixed `export -p' and `readonly -p' so that when the shell is in POSIX
1821      mode, their output is as POSIX.2 specifies.
1822
1823 ccc. Fixed a bug in `readonly' so that `readonly -a avar=(...)' actually
1824      creates an array variable.
1825
1826 ddd. Fixed a bug that prevented `time' from correctly timing background
1827      pipelines.
1828
1829 2.  Changes to Readline
1830
1831 a.  A bug that caused an extra newline to be printed when the cursor was on
1832     an otherwise empty line was fixed.
1833
1834 b.  An instance of memory being used after it was freed was corrected.
1835
1836 c.  The redisplay code now works when the prompt is longer than the screen
1837     width.
1838
1839 d.  `dump-macros' is now a bindable name, as it should have been all along.
1840
1841 e.  Non-printable characters are now expanded when displaying macros and
1842     their values.
1843
1844 f.  The `dump-variables' and `dump-macros' commands now output a leading
1845     newline if they're called as the result of a key sequence, rather
1846     than directly by an application.
1847
1848 3.  New Features in Bash
1849
1850 a.  There is a new builtin array variable: GROUPS, the set of groups to which
1851     the user belongs.  This is used by the test suite.
1852
1853 4.  New Features in Readline
1854
1855 a.  If a key sequence bound to `universal-argument' is read while reading a
1856     numeric argument started with `universal-argument', it terminates the
1857     argument but is otherwise ignored.  This provides a way to insert multiple
1858     instances of a digit string, and is how GNU emacs does it.
1859
1860 ------------------------------------------------------------------------------
1861 This document details the changes between this version, bash-2.0-release,
1862 and the previous version, bash-2.0-beta3.
1863
1864 1.  Changes to Bash
1865
1866 a.  Fix to the `getopts' builtin so that it does the right thing when a
1867     required option argument is not present.
1868
1869 b.  The completion code now updates the common prefix of matched names
1870     after FIGNORE processing is done, since any names that were removed
1871     may have changed the common prefix.
1872
1873 c.  Fixed a bug that made messages in MAILPATH entries not work correctly.
1874
1875 d.  Fixed a serious documentation error in the description of the new
1876     ${parameter:offset[:length]} expansion.
1877
1878 e.  Fixes to make parameter substring expansion ({$param:offset[:length]})
1879     work when within double quotes.
1880
1881 f.  Fixes to make ^A (CTLESC) survive an unquoted expansion of positional
1882     parameters.
1883
1884 g.  Corrected a misspelling of `unlimited' in the output of `ulimit'.
1885
1886 h.  Fixed a bug that caused executable scripts without a leading `#!' to
1887     occasionally pick up the wrong set of positional parameters.
1888
1889 i.  Linux systems now have a working `ulimit -v', using RLIMIT_AS.
1890
1891 j.  Updated config.guess so that many more machine types are recognized.
1892
1893 k.  Fixed a bug with backslash-quoted slashes in the ${param/pat[/sub]}
1894     expansion.
1895
1896 l.  If the shell is named `-su', and `-c command' is supplied, read and
1897     execute the login shell startup files even though the shell is not
1898     interactive.  This is to support the `-' option to `su'.
1899
1900 m.  Fixed a bug that caused core dumps when the DEBUG trap was ignored
1901     with `trap "" DEBUG' and a shell function was subsequently executed.
1902
1903 n.  Fixed a bug that caused core dumps in the read builtin when IFS was
1904     set to the null string and the input had leading whitespace.
1905
1906 2.  Changes to Readline
1907
1908 a.  Fixed a bug that caused a numeric argument of 1024 to be ignored when
1909     inserting text.
1910
1911 b.  Fixed the display code so that the numeric argument is displayed as it's
1912     being entered.
1913
1914 c.  Fixed the numeric argument reading code so that `M-- command' is
1915     equivalent to `M--1 command', as the prompt implies.
1916
1917 3.  New Features in Bash
1918
1919 a.  `ulimit' now sets both hard and soft limits and reports the soft limit
1920     by default (when neither -H nor -S is specified).  This is compatible
1921     with versions of sh and ksh that implement `ulimit'.
1922
1923 b.  Integer constants have been extended to base 64.
1924
1925 4.  New Features in Readline
1926
1927 a.  The `home' and `end' keys are now bound to beginning-of-line and
1928     end-of-line, respectively, if the corresponding termcap capabilities
1929     are present.
1930
1931 ------------------------------------------------------------------------------
1932 This document details the changes between this version, bash-2.0-beta3,
1933 and the previous version, bash-2.0-beta2.
1934
1935 1.  Changes to Bash
1936
1937 a.  System-specific changes for: AIX 4.2, SCO 3.2v[45], HP-UX.
1938
1939 b.  When in POSIX mode, variable assignments preceding a special builtin
1940     persist in the shell environment after the builtin completes.
1941
1942 c.  Changed all calls to getwd() to getcwd().  Improved check for systems
1943     where the libc getcwd() calls popen(), since that breaks on some
1944     systems when job control is being used.
1945
1946 d.  Fixed a bug that caused seg faults when executing scripts with the
1947     execute bit set but without a leading `#!'.
1948
1949 e.  The environment passed to executed commands is never sorted.
1950
1951 f.  A bug was fixed in the code that expands ${name[@]} to the number of
1952     elements in an array variable.
1953
1954 g.  A bug was fixed in the array compound assignment code ( A=( ... ) ).
1955
1956 h.  Window size changes now correctly propagate down to readline if
1957     the shopt `checkwinsize' option is enabled.
1958
1959 i.  A fix was made in the code that expands to the length of a variable
1960     value (${#var}).
1961
1962 j.  A fix was made to the command builtin so that it did not turn on the
1963     `no fork' flag inappropriately.
1964
1965 k.  A fix was made to make `set -n' work more reliably.
1966
1967 l.  A fix was made to the job control initialization code so that the
1968     terminal process group is set to the shell's process group if the
1969     shell changes its own process group.
1970
1971 2.  Changes to Readline
1972
1973 a.  System-specific changes for: SCO 3.2v[45].
1974
1975 b.  The behavior of the vi-mode `.' when redoing an `i' command was changed
1976     to insert the text previously inserted by the `i' command rather than
1977     simply entering insert mode.
1978
1979 3.  New features in Bash
1980
1981 a.  There is a new version of the autoload function package, in
1982     examples/functions/autoload.v2, that uses arrays and provides more
1983     functionality.
1984
1985 b.  Support for LC_COLLATE and locale-specific sorting of the results of
1986     pathname expansion if strcoll() is available.
1987
1988 4.  New Features in Readline
1989
1990 a.  Support for locale-specific sorting of completion possibilities if
1991     strcoll() is available.
1992
1993 ------------------------------------------------------------------------------
1994 This document details the changes between this version, bash-2.0-beta2,
1995 and the previous version, bash-2.0-beta1.
1996
1997 1.  Changes to Bash
1998
1999 a.  `pushd -' is once again equivalent to `pushd $OLDPWD'.
2000
2001 b.  OS-specific changes for: SCO 3.2v[45].
2002
2003 c.  A change was made to the fix for the recently-reported security hole
2004     when reading characters with octal value 255 to make it work better on
2005     systems with restartable system calls when not using readline.
2006
2007 d.  Some changes were made to the test suite so that it works if you
2008     configure bash with --enable-usg-echo-default.
2009
2010 e.  A fix was made to the parsing of conditional arithmetic expressions.
2011
2012 f.  Illegal arithmetic bases now cause an arithmetic evaluation error rather
2013     than being silently reset.
2014
2015 g.  Multiple arithmetic bases now cause an arithmetic evaluation error
2016     instead of being ignored.
2017
2018 h.  A fix was made to the evaluation of ${param?word} to conform to POSIX.2.
2019
2020 i.  A bug that sometimes caused array indices to be evaluated twice (which
2021     would cause errors when they contained assignment statements) was fixed.
2022
2023 j.  `ulimit' was rewritten to avoid problems with getrlimit(2) returning
2024     unsigned values and to simplify the code.
2025
2026 k.  A bug in the command-oriented-history code that caused it to sometimes
2027     put semicolons after right parens inappropriately was fixed.
2028
2029 l.  The values inserted into the prompt by the \w and \W escape sequences
2030     are now quoted to prevent further expansion.
2031
2032 m.  An interactive shell invoked as `sh' now reads and executes commands
2033     from the file named by $ENV when it starts up.  If it's a login shell,
2034     it does this after reading /etc/profile and ~/.profile.
2035
2036 n.  The file named by $ENV is never read by non-interactive shells.
2037
2038 2.  Changes to Readline
2039
2040 a.  A few changes were made to hide some macros and functions that should not
2041     be public.
2042
2043 b.  An off-by-one error that caused seg faults in the history expansion code
2044     was fixed.
2045
2046 3.  New Features in Bash
2047
2048 a.  The ksh-style ((...)) arithmetic command was implemented.  It is exactly
2049     identical to let "...".  This is controlled by a new option to configure,
2050     `--enable-dparen-arithmetic', which is on by default.
2051
2052 b.  There is a new #define available in config.h.top: SYS_BASH_LOGOUT.  If
2053     defined to a filename, bash reads and executes commands from that file
2054     when a login shell exits.  It's commented out by default.
2055
2056 c.  `ulimit' has a `-l' option that reports the maximum amount of data that
2057     may be locked into memory on 4.4BSD-based systems.
2058
2059 ------------------------------------------------------------------------------
2060 This document details the changes between this version, bash-2.0-beta1,
2061 and the previous version, bash-2.0-alpha4.
2062
2063 1.  Changes to Bash
2064
2065 a.  A bug that sometimes caused traps to be ignored on signals the
2066     shell treats specially was fixed.
2067
2068 b.  The internationalization code was changed to track the values of
2069     LC_* variables and call setlocale() as appropriate.  The TEXTDOMAIN
2070     and TEXTDOMAINDIR variables are also tracked; changes cause calls
2071     to textdomain() and bindtextdomain(), if available.
2072
2073 c.  A bug was fixed that sometimes caused double-quoted strings to be
2074     parsed incorrectly.
2075
2076 d.  Changes were made so that the siglist code compiles correctly on
2077     Solaris 2.5.
2078
2079 e.  Added `:' to the set of characters that cause word breaks for the
2080     completion code so that pathnames in assignments to $PATH can be
2081     completed.
2082
2083 f.  The `select' command was fixed to print $PS3 to stderr.
2084
2085 g.  Fixed an error in the manual page section describing the effect that
2086     setting and unsetting GLOBIGNORE has on the setting of the `dotglob'
2087     option.
2088
2089 h.  The time conversion code now uses CLK_TCK rather than CLOCKS_PER_SEC
2090     on systems without gettimeofday() and resources.
2091
2092 i.  The getopt static variables are now initialized each time a subshell
2093     is started, so subshells using `getopts' work right.
2094
2095 j.  A sign-extension bug that caused a possible security hole was fixed.
2096
2097 k.  The parser now reads characters between backquotes within a double-
2098     quoted string as a single word, so double quotes in the backquoted
2099     string don't terminate the enclosing double-quoted string.
2100
2101 l.  A bug that caused `^O' to work incorrectly when typed as the first
2102     thing to an interactive shell was fixed.
2103
2104 m.  A rarely-exercised off-by-one error in the code that quotes variable
2105     values was fixed.
2106
2107 n.  Some memory and file descriptor leaks encountered when running a
2108     shell script that is executable but does not have a leading `#!'
2109     were plugged.
2110
2111 2.  Changes to Readline
2112
2113 a.  A bug that sometimes caused incorrect results when trying to read
2114     typeahead on systems without FIONREAD was fixed.
2115
2116 3.  New Features in Bash
2117
2118 a.  The command timing code now uses the value of the TIMEFORMAT variable
2119     to format and display timing statistics.
2120
2121 b.  The `time' reserved word now accepts a `-p' option to force the
2122     POSIX.2 output format.
2123
2124 c.  There are a couple of new and updated scripts to convert csh startup
2125     files to bash format.
2126
2127 d.  There is a new builtin array variable: BASH_VERSINFO.  The various
2128     members hold the parts of the version information in BASH_VERSION,
2129     plus the value of MACHTYPE.
2130
2131 4.  New Features in Readline
2132
2133 a.  Setting LANG to `en_US.ISO8859-1' now causes readline to enter
2134     eight-bit mode.
2135
2136 ------------------------------------------------------------------------------
2137 This document details the changes between this version, bash-2.0-alpha4,
2138 and the previous version, bash-2.0-alpha3.
2139
2140 1.  Changes to Bash
2141
2142 a.  There is better detection of rsh connections on Solaris 2.
2143
2144 b.  Assignments to read-only variables preceding a command name are now
2145     variable assignment errors.  Variable assignment errors cause
2146     non-interactive shells running in posix mode to exit.
2147
2148 c.  The word tokenizer was rewritten to handle nested quotes and pairs
2149     ('', "", ``, ${...}, $(...), $[...], $'...', $"...", <(...), >(...))
2150     correctly.  Some of the parameter expansion code was updated as a
2151     consequence.
2152
2153 d.  A fix was made to `test' when given three arguments so that a binary
2154     operator is checked for first, before checking that the first argument
2155     is `!'.
2156
2157 e.  2''>/dev/null is no longer equivalent to 2>/dev/null.
2158
2159 f.  Parser error messages were regularized, and in most cases the name of
2160     the shell script being read by a non-interactive shell is not printed
2161     twice.
2162
2163 g.  A fix was made to the completion code so that it no longer removes the
2164     text the user typed in some cases.
2165
2166 h.  The special glibc `getopt' environment variable is no longer put into
2167     the environment on machines with small values of ARG_MAX.
2168
2169 i.  The expansion of ${...} now follows the POSIX.2 rules for finding the
2170     closing `}'.
2171
2172 j.  The shell no longer displays spurious status messages for background
2173     jobs in shell scripts that complete successfully when the script is
2174     run from a terminal.
2175
2176 k.  `shopt -o' now correctly updates $SHELLOPTS.
2177
2178 l.  A bug that caused the $PATH searching code to return a non-executable
2179     file even when an executable file with the same name appeared later in
2180     $PATH was fixed.
2181
2182 m.  The shell now does tilde expansions on unquoted `:~' in assignment
2183     statements when not in posix mode.
2184
2185 n.  Variable assignment errors when a command consists only of assignments
2186     now cause non-interactive shells to exit when in posix mode.
2187
2188 o.  If the variable in a `for' or `select' command is read-only, or not a
2189     legal shell identifier, a variable assignment error occurs.
2190
2191 p.  `test' now handles `-a' and `-o' as binary operators when three arguments
2192     are supplied, and correctly parses `( word )' as equivalent to `word'.
2193
2194 q.  `test' was fixed so that file names of the form /dev/fd/NN mean the same
2195     thing on all systems, even Linux.
2196
2197 r.  Fixed a bug in the globbing code that caused patterns with multiple
2198     consecutive `*'s to not be matched correctly.
2199
2200 s.  Fixed a bug that caused $PS2 to not be printed when an interactive shell
2201     not using readline is reading a here document.
2202
2203 t.  Fixed a bug that caused history expansion to be performed inappropriately
2204     when a single-quoted string spanned more than one line.
2205
2206 u.  `getopts' now checks that the variable name passed by the user as the
2207     second argument is a legal shell identifier and that the variable is
2208     not read-only.
2209
2210 v.  Fixed `getopts' to obey POSIX.2 rules for setting $OPTIND when it
2211     encounters an error.
2212
2213 w.  Fixed `set' to display variable values in a form that can be re-read.
2214
2215 x.  Fixed a bug in the code that keeps track of whether or not local variables
2216     have been declared at the current level of function nesting.
2217
2218 y.  Non-interactive shells in posix mode now exit if the name in a function
2219     declaration is not a legal identifier.
2220
2221 z.  The job control code now ignores stopped children when the shell is not
2222     interactive.
2223
2224 aa. The `cd' builtin no longer attempts spelling correction on the directory
2225     name if the shell is not interactive, regardless of the setting of the
2226     `cdspell' option.
2227
2228 bb. Some OS-specific changes were made for SCO 3.2v[45] and AIX 4.2.
2229
2230 cc. `time' now prints its output to stderr, as POSIX.2 specifies.
2231
2232 2.  Fixes to Readline
2233
2234 a.  After printing possible completions, all lines of a multi-line prompt
2235     are redisplayed.
2236
2237 b.  Some changes were made to the terminal handling code in rltty.c to
2238     work around AIX 4.2 bugs.
2239
2240 3.  New Features in Bash
2241
2242 a.  There is a new loadable builtin: sprintf, with calling syntax
2243                 sprintf var format [args]
2244     This provides an easy way to simulate ksh left- and right-justified
2245     variable values.
2246
2247 b.  The expansions of \h and \H in prompt strings were swapped.  \h now
2248     expands to the hostname up to the first `.', as in bash-1.14.
2249
2250 4.  New Features in Readline
2251
2252 a.  The bash-1.14 behavior when ^M is typed while doing an incremental
2253     search was restored.  ^J may now be used to terminate the search without
2254     accepting the line.
2255
2256 b.  There is a new bindable variable: disable-completion.  This inhibits
2257     word completion and causes the completion character to be inserted as
2258     if it had been bound to self-insert.
2259
2260 ------------------------------------------------------------------------------
2261 This document details the changes between this version, bash-2.0-alpha3,
2262 and the previous version, bash-2.0-alpha2.
2263
2264 There is now a file `COMPAT' included in the distribution that lists the
2265 user-visible incompatibilities between 1.14 and 2.0.
2266
2267 1. Changes to Bash
2268
2269 a. Some work was done so that word splitting of the rhs of assignment
2270    statements conforms more closely to historical practice.
2271
2272 b. A couple of errant memory frees were fixed.
2273
2274 c. A fix was made to the test builtin so it recognizes `<' and `>' as
2275    binary operators.
2276
2277 d. The GNU malloc in lib/malloc/malloc.c now scrambles memory as it's
2278    allocated and freed.  This is to catch callers that refer to freed
2279    memory or assume something about newly-allocated memory.
2280
2281 e. Fixed a problem with conversion to 12-hour time in the prompt
2282    expansion code.
2283
2284 f. Fixed a problem with configure's argument parsing order.  Now you can
2285    correctly turn on specific options after using --enable-minimal-config.
2286
2287 g. The configure script now automatically disables the use of GNU malloc
2288    on systems where it's appropriate (better than having people read the
2289    NOTES file and do it manually).
2290
2291 h. There are new prompt expansions (\v and \V) to insert version information
2292    into the prompt strings.
2293
2294 i. The default prompt string now includes the version number.
2295
2296 j. Most of the builtins that take no options were changed to use the
2297    internal getopt so they can produce proper error messages for -?
2298    and incorrect options.
2299
2300 k. Some system-specific changes were made for SVR4.2 and Solaris 2.5.
2301
2302 l. Bash now uses PATH_MAX instead of MAXPATHLEN and NAME_MAX instead of
2303    MAXNAMLEN.
2304
2305 m. A couple of problems caused by uninitialized variables were fixed.
2306
2307 n. There are a number of new loadable builtin examples: logname, basename,
2308    dirname, tty, pathchk, tee, head, and rmdir.  All of these conform to
2309    POSIX.2.
2310
2311 o. Bash now notices changes in TZ and calls tzset() if present, so
2312    changing TZ will alter the time printed by prompt expansions.
2313
2314 p. The source was reorganized a bit so I don't have to wait so long for
2315    some files to compile, and to facilitate the creation of a `shell
2316    library' at some future point.
2317
2318 q. Bash no longer turns off job control if called as `sh', since the
2319    POSIX.2 spec includes job control as a standard feature.
2320
2321 r. `bash -o posix' now works as intended.
2322
2323 s. Fixed a problem with the completion code: when completing a filename
2324    that contained globbing characters, if show-all-if-ambiguous was set,
2325    the completion code would remove the user's text.
2326
2327 t. Fixed ulimit so that (hopefully) the full range of limits is available
2328    on HPUX systems.
2329
2330 u. A new `shopt' option (`hostcomplete') enables and disables hostname
2331    completion.
2332
2333 v. The shell no longer attempts to save the history on an abort(),
2334    which is usually called by programming_error().
2335
2336 w. The `-s' option to `fc' was changed to echo the command to be executed
2337    to stderr instead of stdout.
2338
2339 x. If the editor invoked by `fc -e' exits with a non-zero status, no
2340    commands are executed.
2341
2342 y. Fixed a bug that made the shopt `histverify' option work incorrectly.
2343
2344 z. There is a new variable `MACHTYPE' whose value is the GNU-style
2345    `cpu-company-system' system description as set by configure.  (The
2346    values of MACHTYPE and HOSTTYPE should really be swapped.)
2347
2348 aa. The `ulimit' builtin now allows the maximum virtual memory size to be
2349     set via setrlimit(2) if RLIMIT_VMEM is defined.
2350
2351 bb. `bash -nc 'command'' no longer runs `command'.
2352
2353 2. Changes to Readline
2354
2355 a. Fixed a typo in the code that checked for FIONREAD in input.c.
2356
2357 b. Fixed a bug in the code that outputs keybindings, so things like C-\
2358    are quoted properly.
2359
2360 c. Fixed a bug in the inputrc file parsing code to handle the problems
2361    caused by inputrc files created from the output of `bind -p' in
2362    previous versions of bash.  The problem was due to the bug fixed
2363    in item b above.
2364
2365 d. Readline no longer turns off the terminal's meta key, and turns it on
2366    once the first time it's called.
2367
2368 ------------------------------------------------------------------------------
2369 This file documents the changes between this version, bash-2.0-alpha2,
2370 and the previous version, bash-2.0-alpha.
2371
2372 1. Changes to Bash
2373
2374 a. The shell no longer thinks directories are executable.
2375
2376 b. `disown' has a new option, `h', which inhibits the resending of SIGHUP
2377    but does not remove the job from the jobs table.
2378
2379 c. The varargs functions in error.c now use ANSI-C `stdarg' if available.
2380
2381 d. The build process now treats the `build version' in .build as local to
2382    the build directory, so different versions built from the same source
2383    tree have different `build versions'.
2384
2385 e. Some problems with the grammar have been fixed. (It used `list' in a few
2386    productions where `compound_list' was needed.  A `list' must be terminated
2387    with a newline or semicolon; a `compound_list' need not be.)
2388
2389 f. A fix was made to keep `wait' from hanging when waiting for all background
2390    jobs.
2391
2392 g. `bash --help' now writes its output to stdout, like the GNU Coding Standards
2393    specify, and includes the machine type (the value of MACHTYPE).
2394
2395 h. `bash --version' now prints more information and exits successfully, like
2396    the GNU Coding Standards specify.
2397
2398 i. The output of `time' and `times' now prints fractional seconds with three
2399    places after the decimal point.
2400
2401 j. A bug that caused process substitutions to screw up the pipeline printed
2402    by `jobs' was fixed.
2403
2404 k. Fixes were made to the code that implements $'...' and $"..." so they
2405    work as documented.
2406
2407 l. The process substitution code now opens named pipes for reading with
2408    O_NONBLOCK to avoid hanging.
2409
2410 m. Fixes were made to the trap code so the shell cleans up correctly if the
2411    trap command contains a `return' and we're executing a function or
2412    sourcing a script with `.'.
2413
2414 n. Fixes to doc/Makefile.in so that it doesn't try to remake all of the
2415    documentation (ps, dvi, etc.) on a `make install'.
2416
2417 o. Fixed an auto-increment error that caused bash -c args to sometimes dump
2418    core.
2419
2420 p. Fixed a bug that caused $HISTIGNORE to fail when the history line
2421    contained globbing characters.
2422
2423 2. Changes to Readline
2424
2425 a. There is a new string variable, rl_library_version, available for use by
2426    applications.  The current value is "2.1".
2427
2428 b. A bug encountered when expand-tilde was enabled and file completion was
2429    attempted on a word beginning with `~/' was fixed.
2430
2431 c. A slight change was made to the incremental search termination behavior.
2432    ESC still terminates the search, but if input is pending or arrives
2433    within 0.1 seconds (on systems with select(2)), it is used as a prefix
2434    character.  This is intented to allow users to terminate searches with
2435    the arrow keys and get the behavior they expect.