| 
									
										
										
										
											2000-03-17 21:46:59 +00:00
										 |  |  | This document details the changes between this version, bash-2.04-release, | 
					
						
							|  |  |  | and the previous version, bash-2.04-beta5. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Better compile-time and configure-time checks for the necessity of | 
					
						
							|  |  |  |     inet_aton(). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  A bug was fixed in the expansion of "${@:-}" when there are positional | 
					
						
							|  |  |  |     parameters. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  A typo was fixed in the output of `complete'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  The matches generated for a word by the `-W' argument to complete and | 
					
						
							|  |  |  |     compgen are now matched against the word being completed, and only | 
					
						
							|  |  |  |     matches are returned as the result. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  Some fixes were made for systems which do not restart read(2) when a | 
					
						
							|  |  |  |     signal caught by bash is received. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  A bug was fixed which caused the umask to be set to 0 when an invalid | 
					
						
							|  |  |  |     symbolic mode mask was parsed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  Fixed a bug that could cause a core dump if a SIGCHLD was received while | 
					
						
							|  |  |  |     performing an assignment statement using command substitution. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  Changed the word splitting function for programmable completion so cases | 
					
						
							|  |  |  |     in which the cursor is between words are handled a bit better. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  rl_funmap_names() is now documented. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  The LC_NUMERIC variable is now treated specially, and used to set the | 
					
						
							|  |  |  |     LC_NUMERIC locale category for number formatting, e.g., when `printf' | 
					
						
							|  |  |  |     displays floating-point numbers. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.04-beta5, | 
					
						
							|  |  |  | and the previous version, bash-2.04-beta4. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A couple of changes were made to the Makefiles for easier building on | 
					
						
							|  |  |  |     non-Unix systems. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Fixed a bug where the current prompt would be set to $PS2 at startup. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  The shell script that tests an already-installed version was changed to | 
					
						
							|  |  |  |     remove the directory it created its test programs in at exit. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Several changes were made to the code that tokenizes an input line for | 
					
						
							|  |  |  |     the programmable completion code.  Shell metacharacters will now appear | 
					
						
							|  |  |  |     as individual words in the word list passed to the completion functions. | 
					
						
							|  |  |  |     Some of the example completion shell functions were changed to understand | 
					
						
							|  |  |  |     redirection operators. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  A bug was fixed that, under obscure circumstances, could confuse the | 
					
						
							|  |  |  |     parser when a shell function was run by the programmable completion code. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  A bug was fixed in the ulimit builtin for systems not using getrlimit(). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  The execution code now propagates the correct exit status back to the rest | 
					
						
							|  |  |  |     of the code if the return value of a subshell command was being inverted. | 
					
						
							|  |  |  |     Some new test cases for inverting return values with the `!' reserved | 
					
						
							|  |  |  |     word have been added. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  Negative exponents in the arithmetic evaluation of v**e now return an | 
					
						
							|  |  |  |     evaluation error. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  A bug that caused bash to check the wrong process in a pipeline for | 
					
						
							|  |  |  |     abnormal termination (and consequently resetting the terminal attributes) | 
					
						
							|  |  |  |     was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  Fixed a bug that caused $PS2 to be displayed after PROMPT_COMMAND was | 
					
						
							|  |  |  |     executed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Fixed a bug in a C preprocessor define that caused the keypad control | 
					
						
							|  |  |  |     functions to be compiled out for all platforms except DJGPP. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.04-beta4, | 
					
						
							|  |  |  | and the previous version, bash-2.04-beta3. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A couple of changes were made to the redirection to attempt to avoid | 
					
						
							|  |  |  |     race conditions and malicious file replacement. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  A change was made to the string evaluation code (used for command  | 
					
						
							|  |  |  |     substitution, `eval', and the `.' builtin) to fix an obscure core | 
					
						
							|  |  |  |     dump on alpha machines. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  A bug that caused $LINENO to be wrong when executing arithmetic for | 
					
						
							|  |  |  |     commands was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 4.  A couple of memory leaks in the programmable completion code were fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 5.  A bug that could cause a core dump by freeing memory twice during a call | 
					
						
							|  |  |  |     to `eval' if `set -u' had been enabled and an undefined variable was | 
					
						
							|  |  |  |     referenced was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.04-beta3, | 
					
						
							|  |  |  | and the previous version, bash-2.04-beta2. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Bash should run the appropriate startup files when invoked by ssh2. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Fixed a bug in the parsing of conditional commands that could cause a | 
					
						
							|  |  |  |     core dump. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  Fixed a bug in parsing job specifications that occasionally caused | 
					
						
							|  |  |  |     core dumps when an out-of-range job was referenced. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Fixed the `type' and `command' builtins to do better reporting of | 
					
						
							|  |  |  |     commands that are not found in $PATH or the hash table. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  Fixed a POSIX.2 compliance problem in the command builtin -- commands | 
					
						
							|  |  |  |     are supposed to be reported as full pathnames. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  The `echo' builtin now returns failure if a write error occurs. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  Fixed a bug which caused the locale to not be reset correctly when | 
					
						
							|  |  |  |     LC_ALL was unset. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  Changed description of `getopts' in man page and reference manual to make | 
					
						
							|  |  |  |     it clear that option characters may be characters other than letters. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  If the shell exits while in a function, make sure that any trap on EXIT | 
					
						
							|  |  |  |     doesn't think the function is still executing. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  Bashbug now tries harder to find a usable editor if $EDITOR is not set, | 
					
						
							|  |  |  |     rather than simply defaulting to `emacs'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  Changes to the scripts that guess and canonicalize the system type, from | 
					
						
							|  |  |  |     the latest `automake' distribution via Debian. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  When using named pipes for process substitution, make sure the file | 
					
						
							|  |  |  |     descriptors opened for reading are set to non-blocking mode. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  Fixed a bug that caused termination of pipelines that are killed by a | 
					
						
							|  |  |  |     signal to not be reported in some cases. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n.  When not in literal-history mode, shell comment lines are not added to | 
					
						
							|  |  |  |     the history list. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | o.  When running in POSIX.2 mode, bash no longer performs word splitting on | 
					
						
							|  |  |  |     the expanded value of the word supplied as the filename argument to | 
					
						
							|  |  |  |     redirection operators. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | p.  The prompt string decoding code now backslash-quotes only characters that | 
					
						
							|  |  |  |     are special within double quotes when expanding the \w and \W escape | 
					
						
							|  |  |  |     sequences. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | q.  Fixed a bug in the prompt decoding code that could cause a non-interactive | 
					
						
							|  |  |  |     shell to seg fault if `\u' was used in PS4 and the shell was in xtrace | 
					
						
							|  |  |  |     mode. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r.  Fixed a bug that caused function definitions to be printed with any | 
					
						
							|  |  |  |     redirections that should be attached to the entire function before the | 
					
						
							|  |  |  |     closing brace. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | s.  Changed the tilde expansion code for Cygwin systems to avoid creating | 
					
						
							|  |  |  |     pathnames beginning with `//' if $HOME == `/'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | t.  Fixed a couple of autoconf tests to avoid creating files with fixed names | 
					
						
							|  |  |  |     in /tmp. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | u.  The `trap' and `kill' builtins now know the names of the POSIX.1b real- | 
					
						
							|  |  |  |     time signals on systems which support them. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Fixed a problem with the single-quote quoting function that could cause | 
					
						
							|  |  |  |     buffer overflows. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Fixed a bug that caused incorrect `stat characters' to be printed if | 
					
						
							|  |  |  |     the files being completed were in the root directory and visible-stats | 
					
						
							|  |  |  |     was enabled. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  There is a new `rbash.1' manual page, from the Debian release. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  The `--enable-usg-echo-default' option to `configure' has been renamed to | 
					
						
							|  |  |  |     `--enable-xpg-echo-default'.  The old option is still there for backwards | 
					
						
							|  |  |  |     compatibility. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.04-beta2, | 
					
						
							|  |  |  | and the previous version, bash-2.04-beta1. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Fixed a bug that could cause pipes to be closed inappropriately in | 
					
						
							|  |  |  |     some obscure cases. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Fixed a bug that caused creation of the exported environment to clobber | 
					
						
							|  |  |  |     the current command string if there were any exported shell functions. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  Some changes were made to reduce bash's memory usage. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Fixed a problem with programmable completion and filenames to be | 
					
						
							|  |  |  |     completed containing quote characters. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  Changed the code the removes named pipes created for the <(...) and >(...) | 
					
						
							|  |  |  |     expansions to defer removal until after any current shell function has | 
					
						
							|  |  |  |     finished executing. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  Fixed a bug in `select' which caused it to not handle the `continue' | 
					
						
							|  |  |  |     builtin correctly. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  Autoconf tests added for cygwin32 and mingw32. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  The `--with-bash-malloc' configure option replaces `--with-gnu-malloc' | 
					
						
							|  |  |  |     (which is still there for backwards compatibility). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.04-beta1, | 
					
						
							|  |  |  | and the previous version, bash-2.04-alpha1. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Fixed a bug in the programmable completion code that occurred when | 
					
						
							|  |  |  |     trying to complete command lines containing a `;' or `@'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  The file descriptor from which the shell is reading a script is now | 
					
						
							|  |  |  |     moved to a file descriptor above the user-addressible range. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  Changes to `printf' so that it can handle integers beginning with 0 | 
					
						
							|  |  |  |     or 0x as octal and hex, respectively. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Fixes to the programmable completion code so it handles nonsense like | 
					
						
							|  |  |  |     `compgen -C xyz' gracefully. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  The shell no longer modifies the signal handler for SIGPROF, allowing | 
					
						
							|  |  |  |     profiling again on certain systems. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  The shell checks for a new window size, if the user has requested it, | 
					
						
							|  |  |  |     after a process exits due to a signal. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  Fixed a bug with variables with null values in a program's temporary | 
					
						
							|  |  |  |     environment and the bash getenv() replacement. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  `declare' and the other builtins that take variable assignments as | 
					
						
							|  |  |  |     arguments now honor `set -a' and mark modified variables for export. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  Some changes were made for --dump-po-strings mode when writing strings | 
					
						
							|  |  |  |     with embedded newlines. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  The code that caches export strings from the initial environment now | 
					
						
							|  |  |  |     duplicates the string rather than just pointing into the environment. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  The filename completion quoting code now uses single quotes by default | 
					
						
							|  |  |  |     if the filename being completed contains newlines, since \<newline> | 
					
						
							|  |  |  |     has a special meaning to the parser. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  Bash now uses typedefs bits32_t and u_bits32_t instead of int32_t and | 
					
						
							|  |  |  |     u_int32_t, respectively to avoid conflicts on certain Unix versions. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  Configuration changes were made for: Rhapsody, Mac OS, FreeBSD-3.x. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n.  Fixed a problem with hostname-to-ip-address translation in the | 
					
						
							|  |  |  |     /dev/(tcp|udp)/hostname/port redirection code. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | o.  The texinfo manual has been reorganized slightly. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | p.  Filename generation (globbing) range comparisons in bracket expressions | 
					
						
							|  |  |  |     no longer use strcoll(3) even if it is available, since it has unwanted | 
					
						
							|  |  |  |     effects in certain locales. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | q.  Fixed a cosmetic problem in the source that caused the shell to not | 
					
						
							|  |  |  |     compile if DPAREN_ARITHMETIC was not defined but ARITH_FOR_COMMAND was. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r.  Fixed a bug in the here-document code tripped when the file descriptor | 
					
						
							|  |  |  |     opened to the file containing the text of the here document was the | 
					
						
							|  |  |  |     same as a redirector specified by the user. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | s.  Fixed a bug where the INVERT_RETURN flag was not being set for `pipeline' | 
					
						
							|  |  |  |     in `time ! pipeline'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | t.  Fixed a bug with the `wait' builtin which manifested itself when an | 
					
						
							|  |  |  |     interrupt was received while the shell was waiting for asynchronous | 
					
						
							|  |  |  |     processes in a shell script. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | u.  Fixed the DEBUG trap code so that it has the correct value of $?. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | v.  Fixed a bug in the parameter pattern substitution code that could cause | 
					
						
							|  |  |  |     the shell to attempt to free unallocated memory if the pattern started | 
					
						
							|  |  |  |     with `/' and an expansion error occurs. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | w.  Fixed a bug in the positional parameter substring code that could | 
					
						
							|  |  |  |     cause the shell to loop freeing freed memory. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | x.  Fixed a bug in the positional parameter pattern substitution code so | 
					
						
							|  |  |  |     that it correctly handles null replacement strings with a pattern | 
					
						
							|  |  |  |     string prefixed with `%' or `#'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | y.  The shell no longer attempts to import functions from the environment if | 
					
						
							|  |  |  |     started with `-n'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | z.  Fixed a bug that caused `return' in a command substitution executed in | 
					
						
							|  |  |  |     a shell function to return from the function in a subshell and continue | 
					
						
							|  |  |  |     execution. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | aa. `hash -p /pathname/with/slashes name' is no longer allowed when the shell | 
					
						
							|  |  |  |     is restricted. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bb. The wait* job control functions now behave better if called when there | 
					
						
							|  |  |  |     are no unwaited-for children. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cc. Command substitution no longer unconditionally disables job control in | 
					
						
							|  |  |  |     the subshell started to run the command. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | dd. A bug was fixed that occasionally caused traps to mess up the parser | 
					
						
							|  |  |  |     state. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ee. `bashbug' now honors user headers in the mail message it sends. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ff. A bug was fixed that caused the `:p' history modifier to not print the | 
					
						
							|  |  |  |     history expansion if the `histverify' option was set. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Fixed a bug in the redisplay code for lines with more than 256 line | 
					
						
							|  |  |  |     breaks. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  A bug was fixed which caused invisible character markers to not be | 
					
						
							|  |  |  |     stripped from the prompt string if the terminal was in no-echo mode. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  Readline no longer tries to get the variables it needs for redisplay | 
					
						
							|  |  |  |     from the termcap entry if the calling application has specified its | 
					
						
							|  |  |  |     own redisplay function.  Readline treats the terminal as `dumb' in | 
					
						
							|  |  |  |     this case. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Fixes to the SIGWINCH code so that a multiple-line prompt with escape | 
					
						
							|  |  |  |     sequences is redrawn correctly. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  `bashbug' now accepts `--help' and `--version' options. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  There is a new `xpg_echo' option to `shopt' that controls the behavior | 
					
						
							|  |  |  |     of echo with respect to backslash-escaped characters at runtime. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.04-alpha1, | 
					
						
							|  |  |  | and the previous version, bash-2.04-devel. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Fixed a bug that could cause core dumps when performing substring | 
					
						
							|  |  |  |     expansion. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Shared object configuration changes for:  Solaris, OSF/1 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  The POSIX_GLOB_LIBRARY code that uses the POSIX.2 globbing facilities | 
					
						
							|  |  |  |     for pathname expansion now understands GLOBIGNORE. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  The code that implements `eval' was changed to save the value of the | 
					
						
							|  |  |  |     current prompt, so an eval in a shell function called by the programmable | 
					
						
							|  |  |  |     completion code will not change the prompt to $PS2. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  Restored the undocumented NON_INTERACTIVE_LOGIN_SHELLS #define to | 
					
						
							|  |  |  |     config-top.h.  If this is defined, all login shells will read the | 
					
						
							|  |  |  |     startup files, not just interactive and non-interactive started with | 
					
						
							|  |  |  |     the `--login' option. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  Fixed a bug that caused the expansion code to occasionally dump core if | 
					
						
							|  |  |  |     IFS contained characters > 128. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  Fixed a problem with the grammar so that a newline is not required | 
					
						
							|  |  |  |     after the `))' in the new-style arithmetic for statement; a semicolon | 
					
						
							|  |  |  |     may be used as expected. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  Variable indirection may now reference the shell's special variables. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  The $'...' and $"..." constructs are now added to the history correctly | 
					
						
							|  |  |  |     if they contain newlines and command-oriented history is enabled. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  It is now an error to try to assign a value to a function-local copy | 
					
						
							|  |  |  |     of a readonly shell variable (declared with the `local' builtin). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  The history file code now uses O_BINARY mode when reading and writing | 
					
						
							|  |  |  |     the history file on cygwin32. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A new programmable completion facility, with two new builtin commands: | 
					
						
							|  |  |  |     complete and compgen. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  configure has a new option, `--enable-progcomp', to compile in the | 
					
						
							|  |  |  |     programmable completion features (enabled by default). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  `shopt' has a new option, `progcomp', to enable and disable programmable | 
					
						
							|  |  |  |     completion at runtime. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Unsetting HOSTFILE now clears the list of hostnames used for completion. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 4.  New Features in Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A new variable, rl_gnu_readline_p, always 1.  The intent is that an | 
					
						
							|  |  |  |     application can verify whether or not it is linked with the `real' | 
					
						
							|  |  |  |     readline library or some substitute. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.04-devel, | 
					
						
							|  |  |  | and the previous version, bash-2.03-release. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  System-specific configuration and source changes for:  Interix, Rhapsody | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Fixed a bug in execute_cmd.c that resulted in a compile-time error if | 
					
						
							|  |  |  |     JOB_CONTROL was not defined. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  An obscure race condition in the trap code was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  The string resulting from $'...' is now requoted to avoid any further | 
					
						
							|  |  |  |     expansion. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  The $'...' quoting syntax now allows backslash to escape a single quote, | 
					
						
							|  |  |  |     for ksh-93 compatibility. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  The $"..." quoting syntax now escapes backslashes and double quotes in | 
					
						
							|  |  |  |     the translated string when displaying them with the --dump-po-strings | 
					
						
							|  |  |  |     option. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  `echo -e' no longer converts \' to '. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  Fixes were made to the extended globbing code to handle embedded (...) | 
					
						
							|  |  |  |     patterns better. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  Some improvements were made to the code that unsets `nodelay' mode on | 
					
						
							|  |  |  |     the file descriptor from which bash is reading input. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  Some changes were made to the replacement termcap library for better | 
					
						
							|  |  |  |     operation on MS-DOS. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  Some changes were made to the tilde expansion code to handle backslash | 
					
						
							|  |  |  |     as a pathname separator on MS-DOS. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  The source has been reorganized a little bit -- there is now an `include' | 
					
						
							|  |  |  |     subdirectory, and lib/posixheaders has been removed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  Improvements were made to the `read' builtin so that it makes many | 
					
						
							|  |  |  |     fewer read(2) system calls. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n.  The expansion of $- will include `c' and `s' when those options are | 
					
						
							|  |  |  |     supplied at shell invocation. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | o.  Several improvments were made to the completion code:  variable completion | 
					
						
							|  |  |  |     now works better when there are unterminated expansions, command | 
					
						
							|  |  |  |     completion understands quotes better, and completion now works in certain | 
					
						
							|  |  |  |     unclosed $(... constructs. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | p.  The arithmetic expansion code was fixed to not need the value of a | 
					
						
							|  |  |  |     variable being assigned a value (fixes the "ss=09; let ss=10" bug). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | q.  Some changes were made to make exported environment creation faster. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r.  The html documentation will be installed into $(htmldir) if that variable | 
					
						
							|  |  |  |     has a value when `make install' is run. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | s.  Fixed a bug that would cause the bashrc file to be sourced inappropriately | 
					
						
							|  |  |  |     when bash is started by sshd. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | t.  The SSH_CLIENT environment variable is no longer auto-exported. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | u.  A bug that caused redirections with (...) subshells to be performed in | 
					
						
							|  |  |  |     the wrong order was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | v.  A bug that occasionally caused inaapropriate expansion of assignment | 
					
						
							|  |  |  |     statements in compound array assignments was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | w.  The code that parses the words in a compound array assignment was | 
					
						
							|  |  |  |     simplified considerably and should work better now. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | x.  Fixes to the non-job-control code in nojobs.c to make it POSIX.2-compliant | 
					
						
							|  |  |  |     when a user attempts to retrieve the status of a terminated background | 
					
						
							|  |  |  |     process. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | y.  Fixes to the `printf' builtin so that it doesn't try to expand all | 
					
						
							|  |  |  |     backslash escape sequences in the format string before parsing it for | 
					
						
							|  |  |  |     % format specifiers. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  The history library tries to truncate the history file only if it is a | 
					
						
							|  |  |  |     regular file. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  A bug that caused _rl_dispatch to address negative array indices on | 
					
						
							|  |  |  |     systems with signed chars was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  rl-yank-nth-arg now leaves the history position the same as when it was | 
					
						
							|  |  |  |     called. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Changes to the completion code to handle MS-DOS drive-letter:pathname | 
					
						
							|  |  |  |     filenames. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  Completion is now case-insensitive by default on MS-DOS. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  Fixes to the history file manipulation code for MS-DOS. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  Readline attempts to bind the arrow keys to appropriate defaults on MS-DOS. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  Some fixes were made to the redisplay code for better operation on MS-DOS. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  The quoted-insert code will now insert tty special chars like ^C. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  A bug was fixed that caused the display code to reference memory before | 
					
						
							|  |  |  |     the start of the prompt string. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  More support for __EMX__ (OS/2). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  A bug was fixed in readline's signal handling that could cause infinite | 
					
						
							|  |  |  |     recursion in signal handlers. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  A bug was fixed that caused the point to be less than zero when rl_forward | 
					
						
							|  |  |  |     was given a very large numeric argument. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n.  The vi-mode code now gets characters via the application-settable value | 
					
						
							|  |  |  |     of rl_getc_function rather than calling rl_getc directly. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  The history builtin has a `-d offset' option to delete the history entry | 
					
						
							|  |  |  |     at position `offset'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  The prompt expansion code has two new escape sequences: \j, the number of | 
					
						
							|  |  |  |     active jobs; and \l, the basename of the shell's tty device name. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  The `bind' builtin has a new `-x' option to bind key sequences to shell | 
					
						
							|  |  |  |     commands. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  There is a new shell option, no_empty_command_completion, which, when | 
					
						
							|  |  |  |     enabled, disables command completion when TAB is typed on an empty line. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  The `help' builtin has a `-s' option to just print a builtin's usage | 
					
						
							|  |  |  |     synopsys. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  There are several new arithmetic operators:  id++, id-- (variable | 
					
						
							|  |  |  |     post-increment/decrement), ++id, --id (variabl pre-increment/decrement), | 
					
						
							|  |  |  |     expr1 , expr2 (comma operator). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  There is a new ksh-93 style arithmetic for command: | 
					
						
							|  |  |  | 	for ((expr1 ; expr2; expr3 )); do list; done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  The `read' builtin has a number of new options: | 
					
						
							|  |  |  | 	-t timeout	only wait timeout seconds for input | 
					
						
							|  |  |  | 	-n nchars	only read nchars from input instead of a full line | 
					
						
							|  |  |  | 	-d delim	read until delim rather than newline | 
					
						
							|  |  |  | 	-s		don't echo input chars as they are read | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  The redirection code now handles several filenames specially: | 
					
						
							|  |  |  |     /dev/fd/N, /dev/stdin, /dev/stdout, and /dev/stderr, whether or | 
					
						
							|  |  |  |     not they are present in the file system. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  The redirection code now recognizes pathnames of the form | 
					
						
							|  |  |  |     /dev/tcp/host/port and /dev/udp/host/port, and tries to open a socket | 
					
						
							|  |  |  |     of the appropriate type to the specified port on the specified host. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  The ksh-93 ${!prefix*} expansion, which expands to the names of all | 
					
						
							|  |  |  |     shell variables whose names start with prefix, has been implemented. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  There is a new dynamic variable, FUNCNAME, which expands to the name of | 
					
						
							|  |  |  |     a currently-executing function.  Assignments to FUNCNAME have no effect. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  The GROUPS variable is no longer readonly; assignments to it are silently | 
					
						
							|  |  |  |     discarded.  This means it can be unset. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 4.  New Features in Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Parentheses matching is now always compiled into readline, and enabled | 
					
						
							|  |  |  |     or disabled when the value of the `blink-matching-paren' variable is | 
					
						
							|  |  |  |     changed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  MS-DOS systems now use ~/_history as the default history file. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  history-search-{forward,backward} now leave the point at the end of the | 
					
						
							|  |  |  |     line when the string to search for is empty, like | 
					
						
							|  |  |  |     {reverse,forward}-search-history. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  history-search-{forward,backward} now leave the last history line found | 
					
						
							|  |  |  |     in the readline buffer if the second or subsequent search fails. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  New function for use by applications:  rl_on_new_line_with_prompt, used | 
					
						
							|  |  |  |     when an application displays the prompt itself before calling readline(). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  New variable for use by applications:  rl_already_prompted.  An application | 
					
						
							|  |  |  |     that displays the prompt itself before calling readline() must set this to | 
					
						
							|  |  |  |     a non-zero value. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							| 
									
										
										
										
											1999-02-19 17:11:39 +00:00
										 |  |  | This document details the changes between this version, bash-2.03-release, | 
					
						
							|  |  |  | and the previous version, bash-2.03-beta2. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A file descriptor leak in the `fc' builtin was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  A bug was fixed in the `read' builtin that caused occasional spurious | 
					
						
							|  |  |  |     failures when using `read -e'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  The version code needed to use the value of the cpp variable | 
					
						
							|  |  |  |     CONF_MACHTYPE rather than MACHTYPE. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  A new test was added to exercise the command printing and copying code. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  A bug was fixed that caused `time' to be recognized as a reserved word | 
					
						
							|  |  |  |     if it was the first pattern in a `case' statement pattern list. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.03-beta2, | 
					
						
							|  |  |  | and the previous version, bash-2.03-beta1. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Slight additions to support/shobj-conf, mostly for the benefit of AIX 4.2. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  config.{guess,sub} support added for the NEC SX4. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  Changed some of the cross-compiling sections of the configure macros in | 
					
						
							|  |  |  |     aclocal.m4 so that configure won't abort. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Slight changes to how the HTML versions of the bash and readline manuals | 
					
						
							|  |  |  |     are generated. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  Fixed conditional command printing to avoid interpreting printf `%'-escapes | 
					
						
							|  |  |  |     in arguments to [[. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  Don't include the bash malloc on all variants of the alpha processor. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  Changes to configure to make --enable-profiling work on Solaris 2.x. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  Fixed a bug that manifested itself when shell functions were called | 
					
						
							|  |  |  |     between calls to `getopts'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  Fixed pattern substitution so that a bare `#'as a pattern causes the | 
					
						
							|  |  |  |     replacement string to be prefixed to the search string, and a bare | 
					
						
							|  |  |  |     `%' causes the replacement string to be appended to the search string. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  Fixed a bug in the command execution code that caused child processes | 
					
						
							|  |  |  |     to occasionally have the wrong value for $!. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Added code to the history library to catch history substitutions using | 
					
						
							|  |  |  |     `&' without a previous history substitution or search having been | 
					
						
							|  |  |  |     performed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 4.  New Features in Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  New bindable variable: `isearch-terminators'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  New bindable function: `forward-backward-delete-char' (unbound by default). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.03-beta1, | 
					
						
							|  |  |  | and the previous version, bash-2.03-alpha. | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A change was made to the help text for `{...}' to make it clear that a | 
					
						
							|  |  |  |     semicolon is required before the closing brace. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  A fix was made to the `test' builtin so that syntax errors cause test | 
					
						
							|  |  |  |     to return an exit status > 1. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  Globbing is no longer performed on assignment statements that appear as | 
					
						
							|  |  |  |     arguments to `assignment builtins' such as `export'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  System-specific configuration changes were made for:  Rhapsody, | 
					
						
							|  |  |  |     AIX 4.2/gcc, BSD/OS 4.0. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  New loadable builtins: ln, unlink. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  Some fixes were made to the globbing code to handle extended glob patterns | 
					
						
							|  |  |  |     which immediately follow a `*'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  A fix was made to the command printing code to ensure that redirections | 
					
						
							|  |  |  |     following compound commands have a space separating them from the rest | 
					
						
							|  |  |  |     of the command. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  The pathname canonicalization code was changed to produce fewer leading | 
					
						
							|  |  |  |     `//' sequences, since those are interpreted as network file system | 
					
						
							|  |  |  |     pathnames on some systems. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  A fix was made so that loops containing `eval' commands in commands passed | 
					
						
							|  |  |  |     to `bash -c' would not exit prematurely. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  Some changes were made to the job reaping code when the shell is not | 
					
						
							|  |  |  |     interactive, so the shell will retain exit statuses longer for examination | 
					
						
							|  |  |  |     by `wait'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  A fix was made so that `jobs | command' works again. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  The erroneous compound array assignment var=((...)) is now a syntax error. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  A change was made to the dynamic loading code in `enable' to support | 
					
						
							|  |  |  |     Tenon's MachTen. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n.  A fix was made to the globbing code so that extended globbing patterns | 
					
						
							|  |  |  |     will correctly match `.' in a bracket expression. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A fix was made to the completion code in which a typo caused the wrong | 
					
						
							|  |  |  |     value to be passed to the function that computed the longest common | 
					
						
							|  |  |  |     prefix of the list of matches. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  The completion code now checks the value of rl_filename_completion_desired, | 
					
						
							|  |  |  |     which is set by application-supplied completion functions to indicate | 
					
						
							|  |  |  |     that filename completion is being performed, to decide whether or not to | 
					
						
							|  |  |  |     call an application-supplied `ignore completions' function. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A change was made to the startup file code so that any shell begun with | 
					
						
							|  |  |  |     the `--login' option, even non-interactive shells, will source the login | 
					
						
							|  |  |  |     shell startup files. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 4.  New Features in Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A new variable, rl_erase_empty_line, which, if set by an application using | 
					
						
							|  |  |  |     readline, will cause readline to erase, prompt and all, lines on which the | 
					
						
							|  |  |  |     only thing typed was a newline. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.03-alpha, | 
					
						
							|  |  |  | and the previous version, bash-2.02.1-release. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  System-specific configuration changes were made for: Irix 6.x, Unixware 7. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  The texi2dvi and texi2html scripts were updated to the latest versions | 
					
						
							|  |  |  |     from the net. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  The configure tests that determine which native type is 32 bits were | 
					
						
							|  |  |  |     changed to not require a compiled program. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Fixed a bug in shell_execve that could cause memory to be freed twice | 
					
						
							|  |  |  |     after a failed exec. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  The `printf' test uses `diff -a' if it's available to prevent confusion | 
					
						
							|  |  |  |     due to the non-ascii output. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  Shared object configuration is now performed by a shell script, | 
					
						
							|  |  |  |     support/shobj-conf, which generates values to be substituted into | 
					
						
							|  |  |  |     makefiles by configure. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  Some changes were made to `ulimit' to avoid the use of RLIM_INVALID as a | 
					
						
							|  |  |  |     return value. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  Changes were made to `ulimit' to work around HPUX 9.x's peculiar | 
					
						
							|  |  |  |     handling of RLIMIT_FILESIZE. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  Some new loadable builtins were added: id, printenv, sync, whoami, push, | 
					
						
							|  |  |  |     mkdir.  `pushd', `popd', and `dirs' can now be built as regular or | 
					
						
							|  |  |  |     loadable builtins from the same source file. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  Changes were made to `printf' to handle NUL bytes in the expanded format | 
					
						
							|  |  |  |     string. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  The various `make clean' Makefile targets now descend into lib/sh. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  The `type' builtin was changed to use the internal `getopt' so that things | 
					
						
							|  |  |  |     like `type -ap' work as expected. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  There is a new configuration option, --with-installed-readline, to link | 
					
						
							|  |  |  |     bash with a locally-installed version of readline.  Only readline version | 
					
						
							|  |  |  |     4.0 and later releases can support this.  Shared and static libraries | 
					
						
							|  |  |  |     are supported.  The installed include files are used. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n.  There is a new autoconf macro used to find which basic type is 64 bits. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | o.  Dynamic linking and loadable builtins should now work on SCO 3.2v5*, | 
					
						
							|  |  |  |     AIX 4.2 with gcc, Unixware 7, and many other systems using gcc, where | 
					
						
							|  |  |  |     the `-shared' options works correctly. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | p.  A bug was fixed in the bash filename completion code that caused memory to | 
					
						
							|  |  |  |     be freed twice if a directory name containing an unset variable was | 
					
						
							|  |  |  |     completed and the -u option was set. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | q.  The prompt expansion code now quotes the `$' in the `\$' expansion so it | 
					
						
							|  |  |  |     is not processed by subsequent parameter expansion. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r.  Fixed a parsing bug that caused a single or double quote after a `$$' to | 
					
						
							|  |  |  |     trigger ANSI C expansion or locale translation. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | s.  Fixed a bug in the globbing code that caused quoted filenames containing | 
					
						
							|  |  |  |     no globbing characters to sometimes be incorrectly expanded. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | t.  Changes to the default prompt strings if prompt string decoding is not | 
					
						
							|  |  |  |     compiled into the shell. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | u.  Added `do', `then', `else', `{', and `(' to the list of keywords that may | 
					
						
							|  |  |  |     precede the `time' reserved word. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | v.  The shell may now be cross-built for BeOS as well as cygwin32. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | w.  The conditional command execution code now treats `=' the same as `==' | 
					
						
							|  |  |  |     for deciding when to perform pattern matching. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | x.  The `-e' option no longer causes the shell to exit if a command exits | 
					
						
							|  |  |  |     with a non-zero status while running the startup files. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | y.  The `printf' builtin no longer dumps core if a modifier is supplied in | 
					
						
							|  |  |  |     the format string without a conversion character (e.g. `%h'). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | z.  Array assignments of the form a=(...) no longer show up in the history | 
					
						
							|  |  |  |     list. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | aa. The parser was fixed to obey the POSIX.2 rules for finding the closing | 
					
						
							|  |  |  |     `}' in a ${...} expression. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bb. The history file is now opened with mode 0600 rather than 0666, so bash | 
					
						
							|  |  |  |     no longer relies on the user's umask being set appropriately. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cc. Setting LANG no longer causes LC_ALL to be assigned a value; bash now | 
					
						
							|  |  |  |     relies on proper behavior from the C library. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | dd. Minor changes were made to allow quoted variable expansions using | 
					
						
							|  |  |  |     ${...} to be completed correctly if there is no closing `"'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ee. Changes were made to builtins/Makefile.in so that configuring the shell | 
					
						
							|  |  |  |     with `--enable-profiling' works right and builtins/mkbuiltins is | 
					
						
							|  |  |  |     generated. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  The version number is now 4.0. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  There is no longer any #ifdef SHELL code in the source files. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  Some changes were made to the key binding code to fix memory leaks and | 
					
						
							|  |  |  |     better support Win32 systems. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Fixed a silly typo in the paren matching code -- it's microseconds, not | 
					
						
							|  |  |  |     milliseconds. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  The readline library should be compilable by C++ compilers. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  The readline.h public header file now includes function prototypes for | 
					
						
							|  |  |  |     all readline functions, and some changes were made to fix errors in the | 
					
						
							|  |  |  |     source files uncovered by the use of prototypes. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  The maximum numeric argument is now clamped at 1000000. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  Fixes to rl_yank_last_arg to make it behave better. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  Fixed a bug in the display code that caused core dumps if the prompt | 
					
						
							|  |  |  |     string length exceeded 1024 characters. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  The menu completion code was fixed to properly insert a single completion | 
					
						
							|  |  |  |     if there is only one match. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  A bug was fixed that caused the display code to improperly display tabs | 
					
						
							|  |  |  |     after newlines. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  New `shopt' option, `restricted_shell', indicating whether or not the | 
					
						
							|  |  |  |     shell was started in restricted mode, for use in startup files. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Filename generation is now performed on the words between ( and ) in | 
					
						
							|  |  |  |     array assignments (which it probably should have done all along). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  OLDPWD is now auto-exported, as POSIX.2 seems to require. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  ENV and BASH_ENV are read-only variables in a restricted shell. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 4.  New Features in Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Many changes to the signal handling: | 
					
						
							|  |  |  | 	o Readline now catches SIGQUIT and cleans up the tty before returning; | 
					
						
							|  |  |  | 	o A new variable, rl_catch_signals, is available to application writers  | 
					
						
							|  |  |  | 	  to indicate to readline whether or not it should install its own | 
					
						
							|  |  |  | 	  signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP, | 
					
						
							|  |  |  | 	  SIGTTIN, and SIGTTOU; | 
					
						
							|  |  |  | 	o A new variable, rl_catch_sigwinch, is available to application | 
					
						
							|  |  |  | 	  writers to indicate to readline whether or not it should install its | 
					
						
							|  |  |  | 	  own signal handler for SIGWINCH, which will chain to the calling | 
					
						
							|  |  |  | 	  applications's SIGWINCH handler, if one is installed; | 
					
						
							|  |  |  | 	o There is a new function, rl_free_line_state, for application signal | 
					
						
							|  |  |  | 	  handlers to call to free up the state associated with the current | 
					
						
							|  |  |  | 	  line after receiving a signal; | 
					
						
							|  |  |  | 	o There is a new function, rl_cleanup_after_signal, to clean up the | 
					
						
							|  |  |  | 	  display and terminal state after receiving a signal; | 
					
						
							|  |  |  | 	o There is a new function, rl_reset_after_signal, to reinitialize the | 
					
						
							|  |  |  | 	  terminal and display state after an application signal handler | 
					
						
							|  |  |  | 	  returns and readline continues | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  There is a new function, rl_resize_terminal, to reset readline's idea of | 
					
						
							|  |  |  |     the screen size after a SIGWINCH. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  New public functions: rl_save_prompt and rl_restore_prompt.  These were | 
					
						
							|  |  |  |     previously private functions with a `_' prefix. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  New function hook: rl_pre_input_hook, called just before readline starts | 
					
						
							|  |  |  |     reading input, after initialization. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  New function hook: rl_display_matches_hook, called when readline would | 
					
						
							|  |  |  |     display the list of completion matches.  The new function | 
					
						
							|  |  |  |     rl_display_match_list is what readline uses internally, and is available | 
					
						
							|  |  |  |     for use by application functions called via this hook. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  New bindable function, delete-char-or-list, like tcsh. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							| 
									
										
										
										
											1998-07-23 14:37:54 +00:00
										 |  |  | This document details the changes between this version, bash-2.02.1-release, | 
					
						
							|  |  |  | and the previous version, bash-2.02-release. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A bug that caused the bash readline support to not compile unless aliases | 
					
						
							|  |  |  |     and csh-style history were configured into the shell was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Fixed a bug that could cause a core dump when here documents contained | 
					
						
							|  |  |  |     more than 1000 characters. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  Fixed a bug that caused a CDPATH entry of "" to not be treated the same | 
					
						
							|  |  |  |     as the current directory when in POSIX mode. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Fixed an alignment problem with the memory returned by the bash malloc, | 
					
						
							|  |  |  |     so returned memory is now 64-bit aligned. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  Fixed a bug that caused command substitutions executed within pipelines | 
					
						
							|  |  |  |     to put the terminal in the wrong process group. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  Fixes to support/config.sub for: alphas, SCO Open Server and Open Desktop, | 
					
						
							|  |  |  |     Unixware 2, and Unixware 7. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  Fixes to the pattern matching code to make it work correctly for eight-bit | 
					
						
							|  |  |  |     characters. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  Fixed a problem that occasionally caused the shell to display the wrong | 
					
						
							|  |  |  |     value for the new working directory when changing to a directory found | 
					
						
							|  |  |  |     in $CDPATH when in physical mode. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  Fixed a bug that caused core dumps when using conditional commands in | 
					
						
							|  |  |  |     shell functions. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  Fixed a bug that caused the printf builtin to loop forever if the format | 
					
						
							|  |  |  |     string did not consume any of the arguments. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  Fixed a bug in the parameter expansion code that caused "$@" to be | 
					
						
							|  |  |  |     incorrectly split if $IFS did not contain a space character. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  Fixed a bug that could cause a core dump when completing hostnames if | 
					
						
							|  |  |  |     the number of matching hostnames was an exact multiple of 16. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  Fixed a bug that caused the shell to fork too early when a command | 
					
						
							|  |  |  |     such as `%2 &' was given. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Fixed a problem with redisplay that showed up when the prompt string was | 
					
						
							|  |  |  |     longer than the screen width and the prompt contained invisible characters. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.02-release, | 
					
						
							|  |  |  | and the previous version, bash-2.02-beta2. | 
					
						
							| 
									
										
										
										
											1998-04-17 19:52:44 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A bug was fixed that caused the terminal process group to be set | 
					
						
							|  |  |  |     incorrectly when performing command substitution of builtins in a | 
					
						
							|  |  |  |     pipeline. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.02-beta2, | 
					
						
							|  |  |  | and the previous version, bash-2.02-beta1. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Attempting to `wait' for stopped jobs now generates a warning message. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Pipelines which exit due to SIGPIPE in non-interactive shells are now | 
					
						
							|  |  |  |     not reported if the shell is compiled -DDONT_REPORT_SIGPIPE. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  Some changes were made to builtins/psize.sh and support/bashbug.sh to | 
					
						
							|  |  |  |     attempt to avoid some /tmp file races and surreptitious file | 
					
						
							|  |  |  |     substitutions. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Fixed a bug that caused the shell not to compile if configured with | 
					
						
							|  |  |  |     dparen arithmetic but without aliases. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  Fixed a bug that caused the input stream to be switched when assigning | 
					
						
							|  |  |  |     empty arrays with `bash -c'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  A bug was fixed in the readline expansion glue code that caused bash to | 
					
						
							|  |  |  |     dump core when expanding lines with an unclosed single quote. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  A fix was made to the `cd' builtin so that using a non-empty directory | 
					
						
							|  |  |  |     from $CDPATH results in an absolute pathname of the new current working | 
					
						
							|  |  |  |     directory to be displayed after the current directory is changed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  Fixed a bug in the variable assignment code that caused the shell to | 
					
						
							|  |  |  |     dump core when referencing an unset variable with `set -u' enabled in | 
					
						
							|  |  |  |     an assignment statement preceding a command. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  Fixed a bug in the exit trap code that caused reserved words to not be | 
					
						
							|  |  |  |     recognized under certain circumstances. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  Fixed a bug in the parameter pattern substitution code so that quote | 
					
						
							|  |  |  |     removal is performed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  The shell should now configure correctly on Apple Rhapsody systems. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  The `kill' builtin now prints a usage message if it is not passed any | 
					
						
							|  |  |  |     arguments. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.02-beta1, | 
					
						
							|  |  |  | and the previous version, bash-2.02-alpha1. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A few compilation bugs were fixed in the new extended globbing code. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Executing arithmetic commands now sets the command name to `((' so | 
					
						
							|  |  |  |     error messages look right. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  Fixed some build problems with various configuration options. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  The `printf' builtin now aborts immediately if an illegal format | 
					
						
							|  |  |  |     character is encountered. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  The code that creates here-documents now behaves better if the file it's | 
					
						
							|  |  |  |     trying to create already exists for some reason. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  Fixed a problem with the extended globbing code that made patterns like | 
					
						
							|  |  |  |     `x+*' expand incorrectly. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  The prompt string expansion code no longer quotes tildes with backslashes. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  The bash getcwd() implementation in lib/sh/getcwd.c now behaves better in | 
					
						
							|  |  |  |     the presence of lstat(2) failures. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  Fixed a bug with strsub() that caused core dumps when executing `fc -s'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  The mail checking code now ensures that it has a valid default mailpath. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  A bug was fixed that caused local variables to be unset inappropriately | 
					
						
							|  |  |  |     when sourcing a script from within another sourced script. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  A bug was fixed in the history saving code so that functions are saved | 
					
						
							|  |  |  |     in the history list correctly if `cmdhist' is enabled, but `lithist' | 
					
						
							|  |  |  |     is not. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  A bug was fixed that caused printf overflows when displaying error | 
					
						
							|  |  |  |     messages. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n.  It should be easier to build the loadble builtins in examples/loadables, | 
					
						
							|  |  |  |     though some manual editing of the generated Makefile is still required. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | o.  The user's primary group is now always ${GROUPS[0]}. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | p.  Some updates were made to support/config.guess from the GNU master copy. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | q.  Some changes were made to the autoconf support for Solaris 2.6 large | 
					
						
							|  |  |  |     files. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r.  The `command' builtins now does the right thing when confstr(3) cannot | 
					
						
							|  |  |  |     find a value for _CS_PATH. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | s.  Extended globbing expressions like `*.!(c)' are not history expanded if | 
					
						
							|  |  |  |     `extglob' is enabled. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | t.  Using the `-P' option to `cd' will force the value that is assigned to | 
					
						
							|  |  |  |     PWD to not contain any symbolic links. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  The code that prints completion listings now behaves better if one or | 
					
						
							|  |  |  |     more of the filenames contains non-printable characters. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  The time delay when showing matching parentheses is now 0.5 seconds. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.02-alpha1, | 
					
						
							|  |  |  | and the previous version, bash-2.01.1-release. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  OS-specific configuration changes for:  BSD/OS 3.x, Minix 2.x, | 
					
						
							|  |  |  |     Solaris 2.6, SINIX SVR4. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Changes were made to the generated `info' files so that `install-info' | 
					
						
							|  |  |  |     works correctly. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  PWD is now auto-exported. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  A fix was made to the pipeline code to make sure that the shell forks | 
					
						
							|  |  |  |     to execute simple commands consisting solely of assignment statements. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  Changes to the test suite for systems with 14-character filenames. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  The default sizes of some internal hash tables have been made smaller | 
					
						
							|  |  |  |     to reduce the shell's memory footprint. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  The `((...))' arithmetic command is now executed directly instead of | 
					
						
							|  |  |  |     being translated into `let "..."'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  Fixes were made to the expansion code so that "$*", "$@", "${array[@]}", | 
					
						
							|  |  |  |     and "${array[@]}" expand correctly when IFS does not contain a space | 
					
						
							|  |  |  |     character, is unset, or is set to NULL. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  The indirect expansion code (${!var}) was changed so that the only | 
					
						
							|  |  |  |     valid values of `var' are variable names, positional parameters, `#', | 
					
						
							|  |  |  |     `@', and `*'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  An arithmetic expression error in a $((...)) expansion now causes a | 
					
						
							|  |  |  |     non-interactive shell running in posix mode to exit. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  Compound array assignment now splits the words within the parentheses | 
					
						
							|  |  |  |     on shell metacharacters like the parser would before expansing them | 
					
						
							|  |  |  |     and performing the assignment.  This is for compatibility with ksh-93. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  The internal shell backslash-quoting code (used in the output of `set' | 
					
						
							|  |  |  |     and completion) now quotes tildes if they appear at the start of the | 
					
						
							|  |  |  |     string or after a `=' or `:'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  A couple of bugs with `shopt -o' were fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n.  `bash +o' now displays the same output as `set +o' before starting an | 
					
						
							|  |  |  |     interactive shell. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | o.  A bug that caused command substitution and the `eval' builtin to | 
					
						
							|  |  |  |     occasionally free memory twice when an error was encountered was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | p.  The filename globbing code no longer requires read permission for a | 
					
						
							|  |  |  |     directory when the filename to be matched does not contain any globbing | 
					
						
							|  |  |  |     characters, as POSIX.2 specifies. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | q.  A bug was fixed so that the job containing the last asynchronous | 
					
						
							|  |  |  |     process is not removed from the job table until a `wait' is executed | 
					
						
							|  |  |  |     for that process or another asynchronous process is started.  This | 
					
						
							|  |  |  |     satisfies a POSIX.2 requirement. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r.  A `select' bug was fixed so that a non-numeric user response is treated | 
					
						
							|  |  |  |     the same as a numeric response that is out of range. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | s.  The shell no longer parses the value of SHELLOPTS from the environment | 
					
						
							|  |  |  |     if it is restricted, running setuid, or running in `privileged mode'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | t.  Fixes were made to enable large file support on systems such as | 
					
						
							|  |  |  |     Solaris 2.6, where the size of a file may be larger than can be held | 
					
						
							|  |  |  |     in an `int'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | u.  The filename hashing code was fixed to not add `./' to the beginning of | 
					
						
							|  |  |  |     filenames which already begin with `./'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | v.  The configure script was changed so that the GNU termcap library is not | 
					
						
							|  |  |  |     compiled in if `prefer-curses' has been specified. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | w.  HISTCONTROL and HISTIGNORE are no longer applied to the second and | 
					
						
							|  |  |  |     subsequent lines of a multi-line command. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | x.  A fix was made to `disown' so that it does a better job of catching | 
					
						
							|  |  |  |     out-of-range jobs. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | y.  Non-interactive shells no longer report the status of processes terminated | 
					
						
							|  |  |  |     due to SIGINT, even if the standard output is a terminal. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | z.  A bug that caused the output of `jobs' to have extra carriage returns | 
					
						
							|  |  |  |     was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | aa. A bug that caused PIPESTATUS to not be set when builtins or shell | 
					
						
							|  |  |  |     functions were executed in the foreground was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bb. Bash now attempts to detect when it is being run by sshd, and treats | 
					
						
							|  |  |  |     that case identically to being run by rshd. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cc. A bug that caused `set -a' to export SHELLOPTS when one of the shell | 
					
						
							|  |  |  |     options was changed was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | dd. The `kill' builtin now disallows empty or missing process id arguments | 
					
						
							|  |  |  |     instead of treating them as identical to `0', which means the current | 
					
						
							|  |  |  |     process. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ee. `var=value declare -x var' now behaves identically to | 
					
						
							|  |  |  |     `var=value export var'.  Similarly for `var=value declare -r var' and | 
					
						
							|  |  |  |     `var=value readonly var'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ff. A few memory leaks were fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | gg. `alias' and `unalias' now print error messages when passed an argument | 
					
						
							|  |  |  |     that is not an alias for printing or deletion, even when the shell is | 
					
						
							|  |  |  |     not interactive, as POSIX.2 specifies. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | hh. `alias' and `alias -p' now return a status of 0 when no aliases are | 
					
						
							|  |  |  |     defined, as POSIX.2 specifes. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ii. `cd -' now prints the pathname of the new working directory if the shell | 
					
						
							|  |  |  |     is interactive. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | jj. A fix was made so that the code that binds $PWD now copes with getcwd() | 
					
						
							|  |  |  |     returning NULL. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | kk. `unset' now checks whether or not a function name it's trying to unset | 
					
						
							|  |  |  |     is a valid shell identifier only when the shell is running in posix mode. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ll. A change was made to the code that generates filenames for here documents | 
					
						
							|  |  |  |     to make them less prone to name collisions. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | mm. The parser was changed so that `time' is recognized as a reserved word | 
					
						
							|  |  |  |     only at the beginning of a pipeline. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | nn. The pathname canonicalization code was changed so that `//' is converted | 
					
						
							|  |  |  |     into `/', but all other pathnames beginning with `//' are left alone, as | 
					
						
							|  |  |  |     POSIX.2 specifies. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | oo. The `logout' builtin will no longer exit a non-interactive non-login | 
					
						
							|  |  |  |     shell. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Fixed a problem in the readline test program rltest.c that caused a core | 
					
						
							|  |  |  |     dump. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  The code that handles parser directives in inputrc files now displays | 
					
						
							|  |  |  |     more error messages. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  The history expansion code was fixed so that the appearance of the | 
					
						
							|  |  |  |     history comment character at the beginning of a word inhibits history | 
					
						
							|  |  |  |     expansion for that word and the rest of the input line. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A new version of malloc, based on the older GNU malloc, that has many | 
					
						
							|  |  |  |     changes, is more page-based, is more conservative with memory usage, | 
					
						
							|  |  |  |     and does not `orphan' large blocks when they are freed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  A new version of gmalloc, based on the old GLIBC malloc, with many | 
					
						
							|  |  |  |     changes and range checking included by default. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  A new implementation of fnmatch(3) that includes full POSIX.2 Basic | 
					
						
							|  |  |  |     Regular Expression matching, including character classes, collating | 
					
						
							|  |  |  |     symbols, equivalence classes, and support for case-insensitive pattern | 
					
						
							|  |  |  |     matching. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  ksh-88 egrep-style extended pattern matching ([@+*?!](patlist)) has been | 
					
						
							|  |  |  |     implemented, controlled by a new `shopt' option, `extglob'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  There is a new ksh-like `[[' compound command, which implements | 
					
						
							|  |  |  |     extended `test' functionality. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  There is a new `printf' builtin, implemented according to the POSIX.2 | 
					
						
							|  |  |  |     specification. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  There is a new feature for command substitution: $(< filename) now expands | 
					
						
							|  |  |  |     to the contents of `filename', with any trailing newlines removed | 
					
						
							|  |  |  |     (equivalent to $(cat filename)). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  There are new tilde prefixes which expand to directories from the | 
					
						
							|  |  |  |     directory stack. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  There is a new `**' arithmetic operator to do exponentiation. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  There are new configuration options to control how bash is linked: | 
					
						
							|  |  |  |     `--enable-profiling', to allow bash to be profiled with gprof, and | 
					
						
							|  |  |  |     `--enable-static-link', to allow bash to be linked statically. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  There is a new configuration option, `--enable-cond-command', which | 
					
						
							|  |  |  |     controls whether or not the `[[' command is included.  It is on by | 
					
						
							|  |  |  |     default. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  There is a new configuration option, `--enable-extended-glob', which | 
					
						
							|  |  |  |     controls whether or not the ksh extended globbing feature is included. | 
					
						
							|  |  |  |     It is enabled by default. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  There is a new configuration #define in config.h.top that, when enabled, | 
					
						
							|  |  |  |     will cause all login shells to source /etc/profile and one of the user- | 
					
						
							|  |  |  |     specific login shell startup files, whether or not the shell is | 
					
						
							|  |  |  |     interactive. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n.  There is a new invocation option, `--dump-po-strings', to dump | 
					
						
							|  |  |  |     a shell script's translatable strings ($"...") in GNU `po' format. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | o.  There is a new `shopt' option, `nocaseglob', to enable case-insensitive | 
					
						
							|  |  |  |     pattern matching when globbing filenames and using the `case' construct. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | p.  There is a new `shopt' option, `huponexit', which, when enabled, causes | 
					
						
							|  |  |  |     the shell to send SIGHUP to all jobs when an interactive login shell | 
					
						
							|  |  |  |     exits. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | q.  `bind' has a new `-u' option, which takes a readline function name as an | 
					
						
							|  |  |  |     argument and unbinds all key sequences bound to that function in a | 
					
						
							|  |  |  |     specified keymap. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r.  `disown' now has `-a' and `-r' options, to limit operation to all jobs | 
					
						
							|  |  |  |     and running jobs, respectively. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | s.  The `shopt' `-p' option now causes output to be displayed in a reusable | 
					
						
							|  |  |  |     format. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | t.  `test' has a new `-N' option, which returns true if the filename argument | 
					
						
							|  |  |  |     has been modified since it was last accessed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | u.  `umask' now has a `-p' option to print output in a reusable format. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | v.  A new escape sequence, `\xNNN', has been added to the `echo -e' and $'...' | 
					
						
							|  |  |  |     translation code.  It expands to the character whose ascii code is NNN | 
					
						
							|  |  |  |     in hexadecimal. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | w.  The prompt string expansion code has a new `\r' escape sequence. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | x.  The shell may now be cross-compiled for the CYGWIN32 environment on | 
					
						
							|  |  |  |     a Unix machine. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 4.  New Features in Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  There is now an option for `iterative' yank-last-arg handline, so a user | 
					
						
							|  |  |  |     can keep entering `M-.', yanking the last argument of successive history | 
					
						
							|  |  |  |     lines. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  New variable, `print-completions-horizontally', which causes completion | 
					
						
							|  |  |  |     matches to be displayed across the screen (like `ls -x') rather than up | 
					
						
							|  |  |  |     and down the screen (like `ls'). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  New variable, `completion-ignore-case', which causes filename completion | 
					
						
							|  |  |  |     and matching to be performed case-insensitively. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  There is a new bindable command, `magic-space', which causes history | 
					
						
							|  |  |  |     expansion to be performed on the current readline buffer and a space to | 
					
						
							|  |  |  |     be inserted into the result. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  There is a new bindable command, `menu-complete', which enables tcsh-like | 
					
						
							|  |  |  |     menu completion (successive executions of menu-complete insert a single | 
					
						
							|  |  |  |     completion match, cycling through the list of possible completions). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  There is a new bindable command, `paste-from-clipboard', for use on Win32 | 
					
						
							|  |  |  |     systems, to insert the text from the Win32 clipboard into the editing | 
					
						
							|  |  |  |     buffer. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  The key sequence translation code now understands printf-style backslash | 
					
						
							|  |  |  |     escape sequences, including \NNN octal escapes.  These escape sequences | 
					
						
							|  |  |  |     may be used in key sequence definitions or macro values. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  An `$include' inputrc file parser directive has been added. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							| 
									
										
										
										
											1997-09-22 20:22:27 +00:00
										 |  |  | This document details the changes between this version, bash-2.01.1-release, | 
					
						
							|  |  |  | and the previous version, bash-2.01-release. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  The select command was fixed to check the validity of the user's | 
					
						
							|  |  |  |     input more strenuously. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  A bug was fixed that prevented `time' from timing commands correctly | 
					
						
							|  |  |  |     when supplied as an argument to `bash -c'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  A fix was made to the mail checking code to keep from adding the same | 
					
						
							|  |  |  |     mail file to the list of files to check multiple times when parsing | 
					
						
							|  |  |  |     $MAILPATH. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Fixed an off-by-one error in the tilde expansion library. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  When using the compound array assignment syntax, the old value of | 
					
						
							|  |  |  |     the array is cleared before assigning the new value. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  Fixed a bug that could cause a core dump when a trap handler was reset | 
					
						
							|  |  |  |     to the default in the trap command associated with that signal. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  Fixed a bug in the locale code that occurred when assigning a value | 
					
						
							|  |  |  |     to LC_ALL. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  A change was made to the parser so that words of the form xxx=(...) | 
					
						
							|  |  |  |     are not considered compound assignment statements unless there are | 
					
						
							|  |  |  |     characters before the `='. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  A fix was made to the command tracing code to correctly quote each | 
					
						
							|  |  |  |     word of output. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  Some changes were made to the bash-specific autoconf tests to make them | 
					
						
							|  |  |  |     more portable. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  Completion of words with globbing characters now correctly quotes the | 
					
						
							|  |  |  |     result. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  The directory /var/spool/mail is now preferred to /usr/spool/mail when | 
					
						
							|  |  |  |     configure is deciding on the default mail directory. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  The brace completion code was fixed to not quote the `{' and `}'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n.  Some fixes were made to make $RANDOM more random in subshells. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | o.  System-specific changes were made to configure for: SVR4.2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | p.  Changes were made so that completion of words containing globbing chars | 
					
						
							|  |  |  |     substitutes the result only if a single filename was matched. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | q.  The window size is now recomputed after a job is stopped with SIGTSTP if | 
					
						
							|  |  |  |     the user has set `checkwinsize' with `shopt'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r.  When doing substring expansion, out-of-range substring specifiers now | 
					
						
							|  |  |  |     cause nothing to be substituted rather than an expansion error. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | s.  A fix was made so that you can no longer trap `SIGEXIT' or `SIGDEBUG' -- | 
					
						
							|  |  |  |     only `EXIT' and `DEBUG' are accepted. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | t.  The display of trapped signals now uses the signal number if signals | 
					
						
							|  |  |  |     for which bash does not know the name are trapped. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | u.  A fix was made so that `bash -r' does not turn on restricted mode until | 
					
						
							|  |  |  |     after the startup files are executed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | v.  A bug was fixed that occasionally caused a core dump when a variable | 
					
						
							|  |  |  |     found in the temporary environment of export/declare/readonly had a | 
					
						
							|  |  |  |     null value. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | w.  A bug that occasionally caused unallocated memory to be passed to free() | 
					
						
							|  |  |  |     when doing arithmetic substitution was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | x.  A bug that caused a buffer overrun when expanding a prompt string | 
					
						
							|  |  |  |     containing `\w' and ${#PWD} exceeded PATH_MAX was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | y.  A problem with the completion code that occasionally caused it to | 
					
						
							|  |  |  |     refer to a character before the beginning of the readline line buffer | 
					
						
							|  |  |  |     was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | z.  A bug was fixed so that the `read' builtin restarts reads when | 
					
						
							|  |  |  |     interrupted by signals other than SIGINT. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | aa. Fixed a bug that caused a command to be freed twice when there was | 
					
						
							|  |  |  |     an evaluation error in the `eval' command. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Added a missing `extern' to a declaration in readline.h that kept | 
					
						
							|  |  |  |     readline from compiling cleanly on some systems. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  The history file is now opened with mode 0600 when it is written for | 
					
						
							|  |  |  |     better security. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  Changes were made to the SIGWINCH handling code so that prompt redisplay | 
					
						
							|  |  |  |     is done better. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  ^G now interrupts incremental searches correctly. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  A bug that caused a core dump when the set of characters to be quoted | 
					
						
							|  |  |  |     when completing words was empty was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							| 
									
										
										
										
											1997-06-05 14:59:13 +00:00
										 |  |  | This document details the changes between this version, bash-2.01-release, | 
					
						
							|  |  |  | and the previous version, bash-2.01-beta2. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  The `distclean' target should remove the `printenv' executable if it | 
					
						
							|  |  |  |     has been created. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  The test suite was changed slightly to ensure that the error messages | 
					
						
							|  |  |  |     are printed in English. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  A bug that caused the shell to dump core when a filename containing a | 
					
						
							|  |  |  |     `/' was passed to `hash' was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Pathname canonicalization now leaves a leading `//' intact, as POSIX.1 | 
					
						
							|  |  |  |     requires. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  A memory leak when completing commands was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  A memory leak that occurred when checking the hash table for commands | 
					
						
							|  |  |  |     with relative paths was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.01-beta2, | 
					
						
							|  |  |  | and the previous version, bash-2.01-beta1. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  The `ulimit' builtin translates RLIM_INFINITY to the hard limit only if | 
					
						
							|  |  |  |     the current (soft) limit is less than or equal to the hard limit. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Fixed a bug that caused the bash emulation of strcasecmp to produce | 
					
						
							|  |  |  |     incorrect results. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  A bug that caused memory to be freed twice when a trap handler resets | 
					
						
							|  |  |  |     the trap more than once was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  A bug that caused machines where sizeof (pointer) > sizeof (int) to | 
					
						
							|  |  |  |     fail (and possibly dump core) when trying to unwind-protect a null | 
					
						
							|  |  |  |     pointer was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  The startup files should not be run with job control enabled.  This fix | 
					
						
							|  |  |  |     allows SIGINT to once again interrupt startup file execution. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  Bash should not change the SIGPROF handler if it is set to something | 
					
						
							|  |  |  |     other than SIG_DFL. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  The completion code that provides bash-specific completions for readline | 
					
						
							|  |  |  |     now quotes characters that the readline code would treat as word break | 
					
						
							|  |  |  |     characters if they appear in a file name. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  The completion code now correctly quotes filenames containing a `!', | 
					
						
							|  |  |  |     even if the user attempted to use double quotes when attempting | 
					
						
							|  |  |  |     completion. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  A bug that caused the shell to dump core when `disown' was called without | 
					
						
							|  |  |  |     arguments and there was no current job was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  A construct like $((foo);bar) is now processed as a command substitution | 
					
						
							|  |  |  |     rather than as a bad arithmetic substitution. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  A couple of bugs that caused `fc' to not obey the `cmdhist' and `lithist' | 
					
						
							|  |  |  |     shell options when editing and re-executing a series of commands were | 
					
						
							|  |  |  |     fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  A fix was made to the grammar -- the list of commands between `do' and | 
					
						
							|  |  |  |     `done' in the body of a `for' command should be treated the same as a | 
					
						
							|  |  |  |     while loop. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A couple of bugs that caused the history search functions to attempt to | 
					
						
							|  |  |  |     free a NULL pointer were fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  If the C library provides setlocale(3), readline does not need to look | 
					
						
							|  |  |  |     at various environment variables to decide whether or not to go into | 
					
						
							|  |  |  |     eight-bit mode automatically -- just check whether the current locale | 
					
						
							|  |  |  |     is not `C' or `POSIX'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  If the filename completion function finds that a directory was not closed | 
					
						
							|  |  |  |     by a previous (interrupted) completion, it closes the directory with | 
					
						
							|  |  |  |     closedir(). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  New bindable readline commands:  history-and-alias-expand-line and | 
					
						
							|  |  |  |     alias-expand-line.  The code was always in there, there was just no | 
					
						
							|  |  |  |     way to execute it. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.01-beta1, | 
					
						
							|  |  |  | and the previous version, bash-2.01-alpha1. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Fixed a problem that could cause file descriptors used for process | 
					
						
							|  |  |  |     substitution to conflict with those used explicitly in redirections. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Made it easier to regenerate configure if the user changes configure.in. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  ${GROUPS[0]} should always be the primary group, even on systems without | 
					
						
							|  |  |  |     multiple groups. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Spelling correction is no longer enabled by default. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  Fixes to quoting problems in `bashbug'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  OS-specific configuration changes were made for: Irix 6. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  OS-specific code changes were made for: QNX. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  A more meaningful message is now printed when the file in /tmp for a | 
					
						
							|  |  |  |     here document cannot be created. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  Many changes to the shell's variable initialization code to speed | 
					
						
							|  |  |  |     non-interactive startup. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  Changes to the non-job-control code so that it does not try to open | 
					
						
							|  |  |  |     /dev/tty. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  The output of `set' and `export' is once again sorted, as POSIX wants. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  Fixed a problem caused by a recursive call reparsing the value of | 
					
						
							|  |  |  |     $SHELLOPTS. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  The tilde code no longer calls getenv() when it's compiled as part of | 
					
						
							|  |  |  |     the shell, which should eliminate problems on systems that cannot | 
					
						
							|  |  |  |     redefine getenv(), like the NeXT OS. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n.  Fixed a problem that caused `bash -o' or `bash +o' to not list all | 
					
						
							|  |  |  |     the shell options. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | o.  Fixed `ulimit' to convert RLIM_INFINITY to the appropriate hard limit | 
					
						
							|  |  |  |     only if the hard limit is greater than the current (soft) limit. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | p.  Fixed a problem that arose when building bash in a different directory | 
					
						
							|  |  |  |     than the source and y.tab.[ch] were remade with something other than | 
					
						
							|  |  |  |     bison.  This came up most often on NetBSD. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | q.  Fixed a problem with completion -- it thought that `pwd`/[TAB] indicated | 
					
						
							|  |  |  |     an unfinished command completion (`/), which generated errors. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r.  The bash special tilde expansions (~-, ~+) are now attempted before | 
					
						
							|  |  |  |     calling the standard tilde expansion code, which should eliminate the | 
					
						
							|  |  |  |     problems people have been seeing with this on Solaris 2.5.1. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | s.  Added support for <stdarg.h> to places where it was missing. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | t.  Changed the code that reads the output of a command substitution to not | 
					
						
							|  |  |  |     go through stdio.  This reduces the memory requirements and is faster. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | u.  A number of changes to speed up export environment creation were made. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | v.  A number of memory leaks were fixed as the result of running the test | 
					
						
							|  |  |  |     scripts through Purify. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | w.  Fixed a bug that caused subshells forked to interpret executable | 
					
						
							|  |  |  |     scripts without a leading `#!' to not reinitialize the values of | 
					
						
							|  |  |  |     the shell options. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  History library has less `#ifdef SHELL' code -- abstracted stuff out | 
					
						
							|  |  |  |     into application-specific function hooks. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Readline no longer calls getenv() if it's compiled as part of the shell, | 
					
						
							|  |  |  |     which should eliminate problems on systems that cannot redefine getenv(), | 
					
						
							|  |  |  |     like the NeXT OS. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  Fixed translation of ESC when `untranslating' macro values. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  The region kill operation now fixes the mark if it ends up beyond the | 
					
						
							|  |  |  |     boundaries of the line after the region is deleted. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  New argument for `configure':  `--with-curses'.  This can be used to | 
					
						
							|  |  |  |     override the selection of the termcap library on systems where it is | 
					
						
							|  |  |  |     deficient. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.01-alpha1, | 
					
						
							|  |  |  | and the previous version, bash-2.0-release. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  System-specific configuration changes for: FreeBSD, SunOS4, Irix, | 
					
						
							|  |  |  |     MachTen, QNX 4.2, Harris Night Hawk, SunOS5. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  System-specific code changes were made for: Linux, 4.4 BSD, QNX 4.2, | 
					
						
							|  |  |  |     HP-UX, AIX 4.2. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  A bug that caused the exec builtin to fail because the full pathname of | 
					
						
							|  |  |  |     the command could not be found was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  The code that performs output redirections is now more resistant to | 
					
						
							|  |  |  |     race conditions and possible security exploits. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  A bug that caused the shell to dump core when performing pattern | 
					
						
							|  |  |  |     substitutions on variable values was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  More hosts are now recognized by the auto-configuration mechanism | 
					
						
							|  |  |  |     (OpenBSD, QNX, others). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  Assignments to read-only variables that attempt to convert them to | 
					
						
							|  |  |  |     arrays are now errors. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  A bug that caused shell scripts using array assignments in POSIX mode | 
					
						
							|  |  |  |     to exit after the assignment was performed was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  The substring expansion code is now more careful about running off the | 
					
						
							|  |  |  |     ends of the expanded variable value. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  A bug that caused completion to fail if a backquoted command substitution | 
					
						
							|  |  |  |     appeared anywhere on the line was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  The `source' builtin no longer turns off history if it has been enabled | 
					
						
							|  |  |  |     in a non-interactive shell. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  A bug that caused the shell to crash when `disown' was given a pid | 
					
						
							|  |  |  |     instead of a job number was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  The `cd' spelling correction code will not try to change to `.' if no | 
					
						
							|  |  |  |     directory entries match a single-character argument. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n.  A bad variable name supplied to `declare', `export', or `readonly' no | 
					
						
							|  |  |  |     longer causes a non-interactive shell in POSIX mode to exit. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | o.  Some fixes were made to the test suite to handle peculiarities of | 
					
						
							|  |  |  |     various Unix versions. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | p.  The bash completion code now quotes characters that readline would | 
					
						
							|  |  |  |     treat as word breaks for completion but are not shell metacharacters. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | q.  Bad options supplied at invocation now cause a usage message to be | 
					
						
							|  |  |  |     displayed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r.  Fixes were made to the code that handles DEBUG traps so that the trap | 
					
						
							|  |  |  |     string is not freed inappropriately. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | s.  Some changes were made to the bash debugger in examples/bashdb -- it | 
					
						
							|  |  |  |     should be closer to working now. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | t.  A problem that caused the default filename used for mail checking to be | 
					
						
							|  |  |  |     wrong was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | u.  A fix was made to the `echo' builtin so that NUL characters printed with | 
					
						
							|  |  |  |     `echo -e' do not cause the output to be truncated. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | v.  A fix was made to the job control code so that the shell behaves better | 
					
						
							|  |  |  |     when monitor mode is enabled in a non-interactive shell. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | w.  Bash no longer catches all of the terminating signals in a non- | 
					
						
							|  |  |  |     interactive shell until a trap is set on EXIT, which should result in | 
					
						
							|  |  |  |     quicker startup. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | x.  A fix was made to the command timing code so that `time' can be used in | 
					
						
							|  |  |  |     a loop. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | y.  A fix was made to the parser so that `((cmd); cmd2)' is now parsed as | 
					
						
							| 
									
										
										
										
											1999-02-19 17:11:39 +00:00
										 |  |  |     a nested subshell rather than strictly as an (erroneous) arithmetic | 
					
						
							| 
									
										
										
										
											1997-06-05 14:59:13 +00:00
										 |  |  |     command. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | z.  A fix was made to the globbing code so that it correctly matches quoted | 
					
						
							|  |  |  |     filenames beginning with a `.'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | aa. A bug in `fc' that caused some multi-line commands to not be stored as | 
					
						
							|  |  |  |     one command in the history when they were re-executed after editing | 
					
						
							|  |  |  |     (with `fc -e') was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bb. The `ulimit' builtin now attempts to catch some classes of integer | 
					
						
							|  |  |  |     overflows. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cc. The command-oriented-history code no longer attempts to add `;' | 
					
						
							|  |  |  |     inappropriately when a newline appears while reading a $(...) command | 
					
						
							|  |  |  |     substitution. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | dd. A bug that caused the shell to dump core when `help --' was executed | 
					
						
							|  |  |  |     was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ee. A bug that caused the shell to crash when an unset variable appeared | 
					
						
							|  |  |  |     in the body of a here document after `set -u' had been executed was | 
					
						
							|  |  |  |     fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ff. Implicit input redirections from /dev/null for asynchronous commands | 
					
						
							|  |  |  |     are now handled better. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | gg. A bug that caused the shell to fail to compile when configured with | 
					
						
							|  |  |  |     `--disable-readline' was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | hh. The globbing code should now be interruptible. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ii. Bash now notices when the `kill' builtin is used to send SIGCONT to a | 
					
						
							|  |  |  |     stopped job and adjusts the data structures accordingly, as if `bg' had | 
					
						
							|  |  |  |     been executed instead. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | jj. A bug that caused the shell to crash when mixing calls to `getopts' | 
					
						
							|  |  |  |     and `shift' on the same set of positional parameters was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | kk. The command printing code now preserves the `-p' flag to `time'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ll. The command printing code now handles here documents better when there | 
					
						
							|  |  |  |     are other redirections associated with the command. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | mm. The special glibc environment variable (NNN_GNU_nonoption_argv_flags_) | 
					
						
							|  |  |  |     is no longer placed into the environment of executed commands -- users | 
					
						
							|  |  |  |     of glibc had too many problems with it. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | nn. Reorganized the code that generates signames.h.  The signal_names list | 
					
						
							|  |  |  |     is now more complete but may be slightly different (SIGABRT is favored | 
					
						
							|  |  |  |     over SIGIOT, for example).  The preferred signal names are those | 
					
						
							|  |  |  |     listed in the POSIX.2 standard. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | oo. `bashbug' now uses a filename shorter than 14 characters for its | 
					
						
							|  |  |  |     temporary file, and asks for confirmation before sending the bug | 
					
						
							|  |  |  |     report. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | pp. A bug that caused TAB completion in vi editing mode to not be turned | 
					
						
							|  |  |  |     off when `set -o posix' was executed or back on when `set +o posix' | 
					
						
							|  |  |  |     was executed was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | qq. A bug in the brace expansion code that caused brace expansions appearing | 
					
						
							|  |  |  |     in new-style $(...) command substitutions to be inappropriately expanded | 
					
						
							|  |  |  |     was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | rr. A bug in the readline hook shell-expand-line that could cause memory to | 
					
						
							|  |  |  |     be inappropriately freed was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ss. A bug that caused some arithmetic expressions containing `&&' and `||' | 
					
						
							|  |  |  |     to be parsed with the wrong precedence has been fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | tt. References to unbound variables after `set -u' has been executed now | 
					
						
							|  |  |  |     cause the shell to exit immediately, as they should. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | uu. A bug that caused the shell to exit inappropriately when `set -e' had | 
					
						
							|  |  |  |     been executed and a command's return status was being inverted with the | 
					
						
							|  |  |  |     `!' reserved word was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | vv. A bug that could occasionally cause the shell to crash with a | 
					
						
							|  |  |  |     divide-by-zero error when timing a command was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ww. A bug that caused parameter pattern substitution to leave stray | 
					
						
							|  |  |  |     backslashes in the replacement string when the expression is in | 
					
						
							|  |  |  |     double quotes was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | xx. The `break' and `continue' builtins now break out of all loops when an | 
					
						
							|  |  |  |     invalid count argument is supplied. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | yy. Fixed a bug that caused PATH to be set to the empty string if | 
					
						
							|  |  |  |     `command -p' is executed with PATH unset. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | zz. Fixed `kill -l signum' to print the signal name without the `SIG' prefix, | 
					
						
							|  |  |  |     as POSIX specifies. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | aaa. Fixed a bug that caused the shell to crash while setting $SHELLOPTS | 
					
						
							|  |  |  |      if there were no shell options set. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bbb. Fixed `export -p' and `readonly -p' so that when the shell is in POSIX | 
					
						
							|  |  |  |      mode, their output is as POSIX.2 specifies. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ccc. Fixed a bug in `readonly' so that `readonly -a avar=(...)' actually | 
					
						
							|  |  |  |      creates an array variable. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ddd. Fixed a bug that prevented `time' from correctly timing background | 
					
						
							|  |  |  |      pipelines. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A bug that caused an extra newline to be printed when the cursor was on | 
					
						
							|  |  |  |     an otherwise empty line was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  An instance of memory being used after it was freed was corrected. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  The redisplay code now works when the prompt is longer than the screen | 
					
						
							|  |  |  |     width. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  `dump-macros' is now a bindable name, as it should have been all along. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  Non-printable characters are now expanded when displaying macros and | 
					
						
							|  |  |  |     their values. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  The `dump-variables' and `dump-macros' commands now output a leading | 
					
						
							|  |  |  |     newline if they're called as the result of a key sequence, rather | 
					
						
							|  |  |  |     than directly by an application. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  There is a new builtin array variable: GROUPS, the set of groups to which | 
					
						
							|  |  |  |     the user belongs.  This is used by the test suite. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 4.  New Features in Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  If a key sequence bound to `universal-argument' is read while reading a | 
					
						
							|  |  |  |     numeric argument started with `universal-argument', it terminates the | 
					
						
							|  |  |  |     argument but is otherwise ignored.  This provides a way to insert multiple | 
					
						
							|  |  |  |     instances of a digit string, and is how GNU emacs does it. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							| 
									
										
										
										
											1996-12-23 17:02:34 +00:00
										 |  |  | This document details the changes between this version, bash-2.0-release, | 
					
						
							|  |  |  | and the previous version, bash-2.0-beta3. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Fix to the `getopts' builtin so that it does the right thing when a | 
					
						
							|  |  |  |     required option argument is not present. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  The completion code now updates the common prefix of matched names | 
					
						
							|  |  |  |     after FIGNORE processing is done, since any names that were removed | 
					
						
							|  |  |  |     may have changed the common prefix. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  Fixed a bug that made messages in MAILPATH entries not work correctly. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Fixed a serious documentation error in the description of the new | 
					
						
							|  |  |  |     ${parameter:offset[:length]} expansion. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  Fixes to make parameter substring expansion ({$param:offset[:length]}) | 
					
						
							|  |  |  |     work when within double quotes. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  Fixes to make ^A (CTLESC) survive an unquoted expansion of positional | 
					
						
							|  |  |  |     parameters. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  Corrected a misspelling of `unlimited' in the output of `ulimit'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  Fixed a bug that caused executable scripts without a leading `#!' to | 
					
						
							|  |  |  |     occasionally pick up the wrong set of positional parameters. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  Linux systems now have a working `ulimit -v', using RLIMIT_AS. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  Updated config.guess so that many more machine types are recognized. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  Fixed a bug with backslash-quoted slashes in the ${param/pat[/sub]} | 
					
						
							|  |  |  |     expansion. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  If the shell is named `-su', and `-c command' is supplied, read and | 
					
						
							|  |  |  |     execute the login shell startup files even though the shell is not | 
					
						
							|  |  |  |     interactive.  This is to support the `-' option to `su'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  Fixed a bug that caused core dumps when the DEBUG trap was ignored | 
					
						
							|  |  |  |     with `trap "" DEBUG' and a shell function was subsequently executed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n.  Fixed a bug that caused core dumps in the read builtin when IFS was | 
					
						
							|  |  |  |     set to the null string and the input had leading whitespace. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Fixed a bug that caused a numeric argument of 1024 to be ignored when | 
					
						
							|  |  |  |     inserting text. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Fixed the display code so that the numeric argument is displayed as it's | 
					
						
							|  |  |  |     being entered. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  Fixed the numeric argument reading code so that `M-- command' is | 
					
						
							|  |  |  |     equivalent to `M--1 command', as the prompt implies. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  `ulimit' now sets both hard and soft limits and reports the soft limit | 
					
						
							|  |  |  |     by default (when neither -H nor -S is specified).  This is compatible | 
					
						
							|  |  |  |     with versions of sh and ksh that implement `ulimit'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Integer constants have been extended to base 64. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 4.  New Features in Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  The `home' and `end' keys are now bound to beginning-of-line and | 
					
						
							|  |  |  |     end-of-line, respectively, if the corresponding termcap capabilities | 
					
						
							|  |  |  |     are present. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.0-beta3, | 
					
						
							|  |  |  | and the previous version, bash-2.0-beta2. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  System-specific changes for: AIX 4.2, SCO 3.2v[45], HP-UX. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  When in POSIX mode, variable assignments preceding a special builtin | 
					
						
							|  |  |  |     persist in the shell environment after the builtin completes. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  Changed all calls to getwd() to getcwd().  Improved check for systems | 
					
						
							|  |  |  |     where the libc getcwd() calls popen(), since that breaks on some | 
					
						
							|  |  |  |     systems when job control is being used. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Fixed a bug that caused seg faults when executing scripts with the | 
					
						
							|  |  |  |     execute bit set but without a leading `#!'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  The environment passed to executed commands is never sorted. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  A bug was fixed in the code that expands ${name[@]} to the number of | 
					
						
							|  |  |  |     elements in an array variable. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  A bug was fixed in the array compound assignment code ( A=( ... ) ). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  Window size changes now correctly propagate down to readline if | 
					
						
							|  |  |  |     the shopt `checkwinsize' option is enabled. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  A fix was made in the code that expands to the length of a variable | 
					
						
							|  |  |  |     value (${#var}). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  A fix was made to the command builtin so that it did not turn on the | 
					
						
							|  |  |  |     `no fork' flag inappropriately. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  A fix was made to make `set -n' work more reliably. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  A fix was made to the job control initialization code so that the | 
					
						
							|  |  |  |     terminal process group is set to the shell's process group if the | 
					
						
							|  |  |  |     shell changes its own process group. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  System-specific changes for: SCO 3.2v[45]. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  The behavior of the vi-mode `.' when redoing an `i' command was changed | 
					
						
							|  |  |  |     to insert the text previously inserted by the `i' command rather than | 
					
						
							|  |  |  |     simply entering insert mode. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  There is a new version of the autoload function package, in | 
					
						
							|  |  |  |     examples/functions/autoload.v2, that uses arrays and provides more | 
					
						
							|  |  |  |     functionality. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Support for LC_COLLATE and locale-specific sorting of the results of | 
					
						
							|  |  |  |     pathname expansion if strcoll() is available. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 4.  New Features in Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Support for locale-specific sorting of completion possibilities if | 
					
						
							|  |  |  |     strcoll() is available. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.0-beta2, | 
					
						
							|  |  |  | and the previous version, bash-2.0-beta1. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  `pushd -' is once again equivalent to `pushd $OLDPWD'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  OS-specific changes for: SCO 3.2v[45]. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  A change was made to the fix for the recently-reported security hole | 
					
						
							|  |  |  |     when reading characters with octal value 255 to make it work better on | 
					
						
							|  |  |  |     systems with restartable system calls when not using readline. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Some changes were made to the test suite so that it works if you | 
					
						
							|  |  |  |     configure bash with --enable-usg-echo-default. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  A fix was made to the parsing of conditional arithmetic expressions. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  Illegal arithmetic bases now cause an arithmetic evaluation error rather | 
					
						
							|  |  |  |     than being silently reset. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  Multiple arithmetic bases now cause an arithmetic evaluation error | 
					
						
							|  |  |  |     instead of being ignored. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  A fix was made to the evaluation of ${param?word} to conform to POSIX.2. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  A bug that sometimes caused array indices to be evaluated twice (which | 
					
						
							|  |  |  |     would cause errors when they contained assignment statements) was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  `ulimit' was rewritten to avoid problems with getrlimit(2) returning | 
					
						
							|  |  |  |     unsigned values and to simplify the code. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  A bug in the command-oriented-history code that caused it to sometimes | 
					
						
							|  |  |  |     put semicolons after right parens inappropriately was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  The values inserted into the prompt by the \w and \W escape sequences | 
					
						
							|  |  |  |     are now quoted to prevent further expansion. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  An interactive shell invoked as `sh' now reads and executes commands | 
					
						
							|  |  |  |     from the file named by $ENV when it starts up.  If it's a login shell, | 
					
						
							|  |  |  |     it does this after reading /etc/profile and ~/.profile. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n.  The file named by $ENV is never read by non-interactive shells. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A few changes were made to hide some macros and functions that should not | 
					
						
							|  |  |  |     be public. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  An off-by-one error that caused seg faults in the history expansion code | 
					
						
							|  |  |  |     was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  The ksh-style ((...)) arithmetic command was implemented.  It is exactly | 
					
						
							|  |  |  |     identical to let "...".  This is controlled by a new option to configure, | 
					
						
							|  |  |  |     `--enable-dparen-arithmetic', which is on by default. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  There is a new #define available in config.h.top: SYS_BASH_LOGOUT.  If | 
					
						
							|  |  |  |     defined to a filename, bash reads and executes commands from that file | 
					
						
							|  |  |  |     when a login shell exits.  It's commented out by default. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  `ulimit' has a `-l' option that reports the maximum amount of data that | 
					
						
							|  |  |  |     may be locked into memory on 4.4BSD-based systems. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.0-beta1, | 
					
						
							|  |  |  | and the previous version, bash-2.0-alpha4. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A bug that sometimes caused traps to be ignored on signals the | 
					
						
							|  |  |  |     shell treats specially was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  The internationalization code was changed to track the values of | 
					
						
							|  |  |  |     LC_* variables and call setlocale() as appropriate.  The TEXTDOMAIN | 
					
						
							|  |  |  |     and TEXTDOMAINDIR variables are also tracked; changes cause calls | 
					
						
							|  |  |  |     to textdomain() and bindtextdomain(), if available. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  A bug was fixed that sometimes caused double-quoted strings to be | 
					
						
							|  |  |  |     parsed incorrectly. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  Changes were made so that the siglist code compiles correctly on | 
					
						
							|  |  |  |     Solaris 2.5. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  Added `:' to the set of characters that cause word breaks for the | 
					
						
							|  |  |  |     completion code so that pathnames in assignments to $PATH can be | 
					
						
							|  |  |  |     completed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  The `select' command was fixed to print $PS3 to stderr. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  Fixed an error in the manual page section describing the effect that | 
					
						
							|  |  |  |     setting and unsetting GLOBIGNORE has on the setting of the `dotglob' | 
					
						
							|  |  |  |     option. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  The time conversion code now uses CLK_TCK rather than CLOCKS_PER_SEC | 
					
						
							|  |  |  |     on systems without gettimeofday() and resources. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  The getopt static variables are now initialized each time a subshell | 
					
						
							|  |  |  |     is started, so subshells using `getopts' work right. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  A sign-extension bug that caused a possible security hole was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  The parser now reads characters between backquotes within a double- | 
					
						
							|  |  |  |     quoted string as a single word, so double quotes in the backquoted | 
					
						
							|  |  |  |     string don't terminate the enclosing double-quoted string. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  A bug that caused `^O' to work incorrectly when typed as the first | 
					
						
							|  |  |  |     thing to an interactive shell was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  A rarely-exercised off-by-one error in the code that quotes variable | 
					
						
							|  |  |  |     values was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n.  Some memory and file descriptor leaks encountered when running a | 
					
						
							|  |  |  |     shell script that is executable but does not have a leading `#!' | 
					
						
							|  |  |  |     were plugged. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  A bug that sometimes caused incorrect results when trying to read | 
					
						
							|  |  |  |     typeahead on systems without FIONREAD was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  The command timing code now uses the value of the TIMEFORMAT variable | 
					
						
							|  |  |  |     to format and display timing statistics. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  The `time' reserved word now accepts a `-p' option to force the | 
					
						
							|  |  |  |     POSIX.2 output format. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  There are a couple of new and updated scripts to convert csh startup | 
					
						
							|  |  |  |     files to bash format. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  There is a new builtin array variable: BASH_VERSINFO.  The various | 
					
						
							|  |  |  |     members hold the parts of the version information in BASH_VERSION, | 
					
						
							|  |  |  |     plus the value of MACHTYPE. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 4.  New Features in Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  Setting LANG to `en_US.ISO8859-1' now causes readline to enter | 
					
						
							|  |  |  |     eight-bit mode. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.0-alpha4, | 
					
						
							|  |  |  | and the previous version, bash-2.0-alpha3. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1.  Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  There is better detection of rsh connections on Solaris 2. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Assignments to read-only variables preceding a command name are now | 
					
						
							|  |  |  |     variable assignment errors.  Variable assignment errors cause | 
					
						
							|  |  |  |     non-interactive shells running in posix mode to exit. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c.  The word tokenizer was rewritten to handle nested quotes and pairs | 
					
						
							|  |  |  |     ('', "", ``, ${...}, $(...), $[...], $'...', $"...", <(...), >(...)) | 
					
						
							|  |  |  |     correctly.  Some of the parameter expansion code was updated as a | 
					
						
							|  |  |  |     consequence. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d.  A fix was made to `test' when given three arguments so that a binary | 
					
						
							|  |  |  |     operator is checked for first, before checking that the first argument | 
					
						
							|  |  |  |     is `!'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e.  2''>/dev/null is no longer equivalent to 2>/dev/null. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f.  Parser error messages were regularized, and in most cases the name of | 
					
						
							|  |  |  |     the shell script being read by a non-interactive shell is not printed | 
					
						
							|  |  |  |     twice. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g.  A fix was made to the completion code so that it no longer removes the | 
					
						
							|  |  |  |     text the user typed in some cases. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h.  The special glibc `getopt' environment variable is no longer put into | 
					
						
							|  |  |  |     the environment on machines with small values of ARG_MAX. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i.  The expansion of ${...} now follows the POSIX.2 rules for finding the | 
					
						
							|  |  |  |     closing `}'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j.  The shell no longer displays spurious status messages for background | 
					
						
							|  |  |  |     jobs in shell scripts that complete successfully when the script is | 
					
						
							|  |  |  |     run from a terminal. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k.  `shopt -o' now correctly updates $SHELLOPTS. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l.  A bug that caused the $PATH searching code to return a non-executable | 
					
						
							|  |  |  |     file even when an executable file with the same name appeared later in | 
					
						
							|  |  |  |     $PATH was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m.  The shell now does tilde expansions on unquoted `:~' in assignment | 
					
						
							|  |  |  |     statements when not in posix mode. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n.  Variable assignment errors when a command consists only of assignments | 
					
						
							|  |  |  |     now cause non-interactive shells to exit when in posix mode. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | o.  If the variable in a `for' or `select' command is read-only, or not a | 
					
						
							|  |  |  |     legal shell identifier, a variable assignment error occurs. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | p.  `test' now handles `-a' and `-o' as binary operators when three arguments | 
					
						
							|  |  |  |     are supplied, and correctly parses `( word )' as equivalent to `word'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | q.  `test' was fixed so that file names of the form /dev/fd/NN mean the same | 
					
						
							|  |  |  |     thing on all systems, even Linux. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r.  Fixed a bug in the globbing code that caused patterns with multiple | 
					
						
							|  |  |  |     consecutive `*'s to not be matched correctly. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | s.  Fixed a bug that caused $PS2 to not be printed when an interactive shell | 
					
						
							|  |  |  |     not using readline is reading a here document. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | t.  Fixed a bug that caused history expansion to be performed inappropriately | 
					
						
							|  |  |  |     when a single-quoted string spanned more than one line. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | u.  `getopts' now checks that the variable name passed by the user as the | 
					
						
							|  |  |  |     second argument is a legal shell identifier and that the variable is | 
					
						
							|  |  |  |     not read-only. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | v.  Fixed `getopts' to obey POSIX.2 rules for setting $OPTIND when it | 
					
						
							|  |  |  |     encounters an error. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | w.  Fixed `set' to display variable values in a form that can be re-read. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | x.  Fixed a bug in the code that keeps track of whether or not local variables | 
					
						
							|  |  |  |     have been declared at the current level of function nesting. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | y.  Non-interactive shells in posix mode now exit if the name in a function | 
					
						
							|  |  |  |     declaration is not a legal identifier. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | z.  The job control code now ignores stopped children when the shell is not | 
					
						
							|  |  |  |     interactive. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | aa. The `cd' builtin no longer attempts spelling correction on the directory | 
					
						
							|  |  |  |     name if the shell is not interactive, regardless of the setting of the | 
					
						
							|  |  |  |     `cdspell' option. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bb. Some OS-specific changes were made for SCO 3.2v[45] and AIX 4.2. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | cc. `time' now prints its output to stderr, as POSIX.2 specifies. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2.  Fixes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  After printing possible completions, all lines of a multi-line prompt | 
					
						
							|  |  |  |     are redisplayed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  Some changes were made to the terminal handling code in rltty.c to | 
					
						
							|  |  |  |     work around AIX 4.2 bugs. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 3.  New Features in Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  There is a new loadable builtin: sprintf, with calling syntax | 
					
						
							|  |  |  | 		sprintf var format [args] | 
					
						
							|  |  |  |     This provides an easy way to simulate ksh left- and right-justified | 
					
						
							|  |  |  |     variable values. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  The expansions of \h and \H in prompt strings were swapped.  \h now | 
					
						
							|  |  |  |     expands to the hostname up to the first `.', as in bash-1.14. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 4.  New Features in Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a.  The bash-1.14 behavior when ^M is typed while doing an incremental | 
					
						
							|  |  |  |     search was restored.  ^J may now be used to terminate the search without | 
					
						
							|  |  |  |     accepting the line. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b.  There is a new bindable variable: disable-completion.  This inhibits | 
					
						
							|  |  |  |     word completion and causes the completion character to be inserted as | 
					
						
							|  |  |  |     if it had been bound to self-insert. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This document details the changes between this version, bash-2.0-alpha3, | 
					
						
							|  |  |  | and the previous version, bash-2.0-alpha2. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | There is now a file `COMPAT' included in the distribution that lists the | 
					
						
							|  |  |  | user-visible incompatibilities between 1.14 and 2.0. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1. Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a. Some work was done so that word splitting of the rhs of assignment | 
					
						
							|  |  |  |    statements conforms more closely to historical practice. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b. A couple of errant memory frees were fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c. A fix was made to the test builtin so it recognizes `<' and `>' as | 
					
						
							|  |  |  |    binary operators. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d. The GNU malloc in lib/malloc/malloc.c now scrambles memory as it's | 
					
						
							|  |  |  |    allocated and freed.  This is to catch callers that refer to freed | 
					
						
							|  |  |  |    memory or assume something about newly-allocated memory. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e. Fixed a problem with conversion to 12-hour time in the prompt | 
					
						
							|  |  |  |    expansion code. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f. Fixed a problem with configure's argument parsing order.  Now you can | 
					
						
							|  |  |  |    correctly turn on specific options after using --enable-minimal-config. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g. The configure script now automatically disables the use of GNU malloc | 
					
						
							|  |  |  |    on systems where it's appropriate (better than having people read the | 
					
						
							|  |  |  |    NOTES file and do it manually). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h. There are new prompt expansions (\v and \V) to insert version information | 
					
						
							|  |  |  |    into the prompt strings. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i. The default prompt string now includes the version number. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j. Most of the builtins that take no options were changed to use the | 
					
						
							|  |  |  |    internal getopt so they can produce proper error messages for -? | 
					
						
							|  |  |  |    and incorrect options. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k. Some system-specific changes were made for SVR4.2 and Solaris 2.5. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l. Bash now uses PATH_MAX instead of MAXPATHLEN and NAME_MAX instead of | 
					
						
							|  |  |  |    MAXNAMLEN. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m. A couple of problems caused by uninitialized variables were fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n. There are a number of new loadable builtin examples: logname, basename, | 
					
						
							|  |  |  |    dirname, tty, pathchk, tee, head, and rmdir.  All of these conform to | 
					
						
							|  |  |  |    POSIX.2. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | o. Bash now notices changes in TZ and calls tzset() if present, so | 
					
						
							|  |  |  |    changing TZ will alter the time printed by prompt expansions. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | p. The source was reorganized a bit so I don't have to wait so long for | 
					
						
							|  |  |  |    some files to compile, and to facilitate the creation of a `shell | 
					
						
							|  |  |  |    library' at some future point. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | q. Bash no longer turns off job control if called as `sh', since the | 
					
						
							|  |  |  |    POSIX.2 spec includes job control as a standard feature. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | r. `bash -o posix' now works as intended. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | s. Fixed a problem with the completion code: when completing a filename | 
					
						
							|  |  |  |    that contained globbing characters, if show-all-if-ambiguous was set, | 
					
						
							|  |  |  |    the completion code would remove the user's text. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | t. Fixed ulimit so that (hopefully) the full range of limits is available | 
					
						
							|  |  |  |    on HPUX systems. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | u. A new `shopt' option (`hostcomplete') enables and disables hostname | 
					
						
							|  |  |  |    completion. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | v. The shell no longer attempts to save the history on an abort(), | 
					
						
							|  |  |  |    which is usually called by programming_error(). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | w. The `-s' option to `fc' was changed to echo the command to be executed | 
					
						
							|  |  |  |    to stderr instead of stdout. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | x. If the editor invoked by `fc -e' exits with a non-zero status, no | 
					
						
							|  |  |  |    commands are executed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | y. Fixed a bug that made the shopt `histverify' option work incorrectly. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | z. There is a new variable `MACHTYPE' whose value is the GNU-style | 
					
						
							|  |  |  |    `cpu-company-system' system description as set by configure.  (The | 
					
						
							|  |  |  |    values of MACHTYPE and HOSTTYPE should really be swapped.) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | aa. The `ulimit' builtin now allows the maximum virtual memory size to be | 
					
						
							|  |  |  |     set via setrlimit(2) if RLIMIT_VMEM is defined. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | bb. `bash -nc 'command'' no longer runs `command'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2. Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a. Fixed a typo in the code that checked for FIONREAD in input.c. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b. Fixed a bug in the code that outputs keybindings, so things like C-\ | 
					
						
							|  |  |  |    are quoted properly. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c. Fixed a bug in the inputrc file parsing code to handle the problems | 
					
						
							|  |  |  |    caused by inputrc files created from the output of `bind -p' in | 
					
						
							|  |  |  |    previous versions of bash.  The problem was due to the bug fixed | 
					
						
							|  |  |  |    in item b above. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d. Readline no longer turns off the terminal's meta key, and turns it on | 
					
						
							|  |  |  |    once the first time it's called. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ------------------------------------------------------------------------------ | 
					
						
							|  |  |  | This file documents the changes between this version, bash-2.0-alpha2, | 
					
						
							|  |  |  | and the previous version, bash-2.0-alpha. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 1. Changes to Bash | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a. The shell no longer thinks directories are executable. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b. `disown' has a new option, `h', which inhibits the resending of SIGHUP | 
					
						
							|  |  |  |    but does not remove the job from the jobs table. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c. The varargs functions in error.c now use ANSI-C `stdarg' if available. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | d. The build process now treats the `build version' in .build as local to | 
					
						
							|  |  |  |    the build directory, so different versions built from the same source | 
					
						
							|  |  |  |    tree have different `build versions'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | e. Some problems with the grammar have been fixed. (It used `list' in a few | 
					
						
							|  |  |  |    productions where `compound_list' was needed.  A `list' must be terminated | 
					
						
							|  |  |  |    with a newline or semicolon; a `compound_list' need not be.) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | f. A fix was made to keep `wait' from hanging when waiting for all background | 
					
						
							|  |  |  |    jobs. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | g. `bash --help' now writes its output to stdout, like the GNU Coding Standards | 
					
						
							|  |  |  |    specify, and includes the machine type (the value of MACHTYPE). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | h. `bash --version' now prints more information and exits successfully, like | 
					
						
							|  |  |  |    the GNU Coding Standards specify. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | i. The output of `time' and `times' now prints fractional seconds with three | 
					
						
							|  |  |  |    places after the decimal point. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | j. A bug that caused process substitutions to screw up the pipeline printed | 
					
						
							|  |  |  |    by `jobs' was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | k. Fixes were made to the code that implements $'...' and $"..." so they | 
					
						
							|  |  |  |    work as documented. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | l. The process substitution code now opens named pipes for reading with | 
					
						
							|  |  |  |    O_NONBLOCK to avoid hanging. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | m. Fixes were made to the trap code so the shell cleans up correctly if the | 
					
						
							|  |  |  |    trap command contains a `return' and we're executing a function or | 
					
						
							|  |  |  |    sourcing a script with `.'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | n. Fixes to doc/Makefile.in so that it doesn't try to remake all of the | 
					
						
							|  |  |  |    documentation (ps, dvi, etc.) on a `make install'. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | o. Fixed an auto-increment error that caused bash -c args to sometimes dump | 
					
						
							|  |  |  |    core. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | p. Fixed a bug that caused $HISTIGNORE to fail when the history line | 
					
						
							|  |  |  |    contained globbing characters. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 2. Changes to Readline | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | a. There is a new string variable, rl_library_version, available for use by | 
					
						
							|  |  |  |    applications.  The current value is "2.1". | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | b. A bug encountered when expand-tilde was enabled and file completion was | 
					
						
							|  |  |  |    attempted on a word beginning with `~/' was fixed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | c. A slight change was made to the incremental search termination behavior. | 
					
						
							|  |  |  |    ESC still terminates the search, but if input is pending or arrives | 
					
						
							|  |  |  |    within 0.1 seconds (on systems with select(2)), it is used as a prefix | 
					
						
							|  |  |  |    character.  This is intented to allow users to terminate searches with | 
					
						
							|  |  |  |    the arrow keys and get the behavior they expect. |