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