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