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