]>
Commit | Line | Data |
---|---|---|
cce855bc JA |
1 | This document details the changes between this version, bash-2.02-beta2, |
2 | and the previous version, bash-2.02-beta1. | |
3 | ||
4 | 1. Changes to Bash | |
5 | ||
6 | a. A bug was fixed that caused the terminal process group to be set | |
7 | incorrectly when performing command substitution of builtins in a | |
8 | pipeline. | |
9 | ||
10 | ------------------------------------------------------------------------------ | |
11 | This document details the changes between this version, bash-2.02-beta2, | |
12 | and the previous version, bash-2.02-beta1. | |
13 | ||
14 | 1. Changes to Bash | |
15 | ||
16 | a. Attempting to `wait' for stopped jobs now generates a warning message. | |
17 | ||
18 | b. Pipelines which exit due to SIGPIPE in non-interactive shells are now | |
19 | not reported if the shell is compiled -DDONT_REPORT_SIGPIPE. | |
20 | ||
21 | c. Some changes were made to builtins/psize.sh and support/bashbug.sh to | |
22 | attempt to avoid some /tmp file races and surreptitious file | |
23 | substitutions. | |
24 | ||
25 | d. Fixed a bug that caused the shell not to compile if configured with | |
26 | dparen arithmetic but without aliases. | |
27 | ||
28 | e. Fixed a bug that caused the input stream to be switched when assigning | |
29 | empty arrays with `bash -c'. | |
30 | ||
31 | f. A bug was fixed in the readline expansion glue code that caused bash to | |
32 | dump core when expanding lines with an unclosed single quote. | |
33 | ||
34 | g. A fix was made to the `cd' builtin so that using a non-empty directory | |
35 | from $CDPATH results in an absolute pathname of the new current working | |
36 | directory to be displayed after the current directory is changed. | |
37 | ||
38 | h. Fixed a bug in the variable assignment code that caused the shell to | |
39 | dump core when referencing an unset variable with `set -u' enabled in | |
40 | an assignment statement preceding a command. | |
41 | ||
42 | i. Fixed a bug in the exit trap code that caused reserved words to not be | |
43 | recognized under certain circumstances. | |
44 | ||
45 | j. Fixed a bug in the parameter pattern substitution code so that quote | |
46 | removal is performed. | |
47 | ||
48 | k. The shell should now configure correctly on Apple Rhapsody systems. | |
49 | ||
50 | l. The `kill' builtin now prints a usage message if it is not passed any | |
51 | arguments. | |
52 | ||
53 | ------------------------------------------------------------------------------ | |
54 | This document details the changes between this version, bash-2.02-beta1, | |
55 | and the previous version, bash-2.02-alpha1. | |
56 | ||
57 | 1. Changes to Bash | |
58 | ||
59 | a. A few compilation bugs were fixed in the new extended globbing code. | |
60 | ||
61 | b. Executing arithmetic commands now sets the command name to `((' so | |
62 | error messages look right. | |
63 | ||
64 | c. Fixed some build problems with various configuration options. | |
65 | ||
66 | d. The `printf' builtin now aborts immediately if an illegal format | |
67 | character is encountered. | |
68 | ||
69 | e. The code that creates here-documents now behaves better if the file it's | |
70 | trying to create already exists for some reason. | |
71 | ||
72 | f. Fixed a problem with the extended globbing code that made patterns like | |
73 | `x+*' expand incorrectly. | |
74 | ||
75 | g. The prompt string expansion code no longer quotes tildes with backslashes. | |
76 | ||
77 | h. The bash getcwd() implementation in lib/sh/getcwd.c now behaves better in | |
78 | the presence of lstat(2) failures. | |
79 | ||
80 | i. Fixed a bug with strsub() that caused core dumps when executing `fc -s'. | |
81 | ||
82 | j. The mail checking code now ensures that it has a valid default mailpath. | |
83 | ||
84 | k. A bug was fixed that caused local variables to be unset inappropriately | |
85 | when sourcing a script from within another sourced script. | |
86 | ||
87 | l. A bug was fixed in the history saving code so that functions are saved | |
88 | in the history list correctly if `cmdhist' is enabled, but `lithist' | |
89 | is not. | |
90 | ||
91 | m. A bug was fixed that caused printf overflows when displaying error | |
92 | messages. | |
93 | ||
94 | n. It should be easier to build the loadble builtins in examples/loadables, | |
95 | though some manual editing of the generated Makefile is still required. | |
96 | ||
97 | o. The user's primary group is now always ${GROUPS[0]}. | |
98 | ||
99 | p. Some updates were made to support/config.guess from the GNU master copy. | |
100 | ||
101 | q. Some changes were made to the autoconf support for Solaris 2.6 large | |
102 | files. | |
103 | ||
104 | r. The `command' builtins now does the right thing when confstr(3) cannot | |
105 | find a value for _CS_PATH. | |
106 | ||
107 | s. Extended globbing expressions like `*.!(c)' are not history expanded if | |
108 | `extglob' is enabled. | |
109 | ||
110 | t. Using the `-P' option to `cd' will force the value that is assigned to | |
111 | PWD to not contain any symbolic links. | |
112 | ||
113 | 2. Changes to Readline | |
114 | ||
115 | a. The code that prints completion listings now behaves better if one or | |
116 | more of the filenames contains non-printable characters. | |
117 | ||
118 | b. The time delay when showing matching parentheses is now 0.5 seconds. | |
119 | ||
120 | ------------------------------------------------------------------------------ | |
121 | This document details the changes between this version, bash-2.02-alpha1, | |
122 | and the previous version, bash-2.01.1-release. | |
123 | ||
124 | 1. Changes to Bash | |
125 | ||
126 | a. OS-specific configuration changes for: BSD/OS 3.x, Minix 2.x, | |
127 | Solaris 2.6, SINIX SVR4. | |
128 | ||
129 | b. Changes were made to the generated `info' files so that `install-info' | |
130 | works correctly. | |
131 | ||
132 | c. PWD is now auto-exported. | |
133 | ||
134 | d. A fix was made to the pipeline code to make sure that the shell forks | |
135 | to execute simple commands consisting solely of assignment statements. | |
136 | ||
137 | e. Changes to the test suite for systems with 14-character filenames. | |
138 | ||
139 | f. The default sizes of some internal hash tables have been made smaller | |
140 | to reduce the shell's memory footprint. | |
141 | ||
142 | g. The `((...))' arithmetic command is now executed directly instead of | |
143 | being translated into `let "..."'. | |
144 | ||
145 | h. Fixes were made to the expansion code so that "$*", "$@", "${array[@]}", | |
146 | and "${array[@]}" expand correctly when IFS does not contain a space | |
147 | character, is unset, or is set to NULL. | |
148 | ||
149 | i. The indirect expansion code (${!var}) was changed so that the only | |
150 | valid values of `var' are variable names, positional parameters, `#', | |
151 | `@', and `*'. | |
152 | ||
153 | j. An arithmetic expression error in a $((...)) expansion now causes a | |
154 | non-interactive shell running in posix mode to exit. | |
155 | ||
156 | k. Compound array assignment now splits the words within the parentheses | |
157 | on shell metacharacters like the parser would before expansing them | |
158 | and performing the assignment. This is for compatibility with ksh-93. | |
159 | ||
160 | l. The internal shell backslash-quoting code (used in the output of `set' | |
161 | and completion) now quotes tildes if they appear at the start of the | |
162 | string or after a `=' or `:'. | |
163 | ||
164 | m. A couple of bugs with `shopt -o' were fixed. | |
165 | ||
166 | n. `bash +o' now displays the same output as `set +o' before starting an | |
167 | interactive shell. | |
168 | ||
169 | o. A bug that caused command substitution and the `eval' builtin to | |
170 | occasionally free memory twice when an error was encountered was fixed. | |
171 | ||
172 | p. The filename globbing code no longer requires read permission for a | |
173 | directory when the filename to be matched does not contain any globbing | |
174 | characters, as POSIX.2 specifies. | |
175 | ||
176 | q. A bug was fixed so that the job containing the last asynchronous | |
177 | process is not removed from the job table until a `wait' is executed | |
178 | for that process or another asynchronous process is started. This | |
179 | satisfies a POSIX.2 requirement. | |
180 | ||
181 | r. A `select' bug was fixed so that a non-numeric user response is treated | |
182 | the same as a numeric response that is out of range. | |
183 | ||
184 | s. The shell no longer parses the value of SHELLOPTS from the environment | |
185 | if it is restricted, running setuid, or running in `privileged mode'. | |
186 | ||
187 | t. Fixes were made to enable large file support on systems such as | |
188 | Solaris 2.6, where the size of a file may be larger than can be held | |
189 | in an `int'. | |
190 | ||
191 | u. The filename hashing code was fixed to not add `./' to the beginning of | |
192 | filenames which already begin with `./'. | |
193 | ||
194 | v. The configure script was changed so that the GNU termcap library is not | |
195 | compiled in if `prefer-curses' has been specified. | |
196 | ||
197 | w. HISTCONTROL and HISTIGNORE are no longer applied to the second and | |
198 | subsequent lines of a multi-line command. | |
199 | ||
200 | x. A fix was made to `disown' so that it does a better job of catching | |
201 | out-of-range jobs. | |
202 | ||
203 | y. Non-interactive shells no longer report the status of processes terminated | |
204 | due to SIGINT, even if the standard output is a terminal. | |
205 | ||
206 | z. A bug that caused the output of `jobs' to have extra carriage returns | |
207 | was fixed. | |
208 | ||
209 | aa. A bug that caused PIPESTATUS to not be set when builtins or shell | |
210 | functions were executed in the foreground was fixed. | |
211 | ||
212 | bb. Bash now attempts to detect when it is being run by sshd, and treats | |
213 | that case identically to being run by rshd. | |
214 | ||
215 | cc. A bug that caused `set -a' to export SHELLOPTS when one of the shell | |
216 | options was changed was fixed. | |
217 | ||
218 | dd. The `kill' builtin now disallows empty or missing process id arguments | |
219 | instead of treating them as identical to `0', which means the current | |
220 | process. | |
221 | ||
222 | ee. `var=value declare -x var' now behaves identically to | |
223 | `var=value export var'. Similarly for `var=value declare -r var' and | |
224 | `var=value readonly var'. | |
225 | ||
226 | ff. A few memory leaks were fixed. | |
227 | ||
228 | gg. `alias' and `unalias' now print error messages when passed an argument | |
229 | that is not an alias for printing or deletion, even when the shell is | |
230 | not interactive, as POSIX.2 specifies. | |
231 | ||
232 | hh. `alias' and `alias -p' now return a status of 0 when no aliases are | |
233 | defined, as POSIX.2 specifes. | |
234 | ||
235 | ii. `cd -' now prints the pathname of the new working directory if the shell | |
236 | is interactive. | |
237 | ||
238 | jj. A fix was made so that the code that binds $PWD now copes with getcwd() | |
239 | returning NULL. | |
240 | ||
241 | kk. `unset' now checks whether or not a function name it's trying to unset | |
242 | is a valid shell identifier only when the shell is running in posix mode. | |
243 | ||
244 | ll. A change was made to the code that generates filenames for here documents | |
245 | to make them less prone to name collisions. | |
246 | ||
247 | mm. The parser was changed so that `time' is recognized as a reserved word | |
248 | only at the beginning of a pipeline. | |
249 | ||
250 | nn. The pathname canonicalization code was changed so that `//' is converted | |
251 | into `/', but all other pathnames beginning with `//' are left alone, as | |
252 | POSIX.2 specifies. | |
253 | ||
254 | oo. The `logout' builtin will no longer exit a non-interactive non-login | |
255 | shell. | |
256 | ||
257 | 2. Changes to Readline | |
258 | ||
259 | a. Fixed a problem in the readline test program rltest.c that caused a core | |
260 | dump. | |
261 | ||
262 | b. The code that handles parser directives in inputrc files now displays | |
263 | more error messages. | |
264 | ||
265 | c. The history expansion code was fixed so that the appearance of the | |
266 | history comment character at the beginning of a word inhibits history | |
267 | expansion for that word and the rest of the input line. | |
268 | ||
269 | 3. New Features in Bash | |
270 | ||
271 | a. A new version of malloc, based on the older GNU malloc, that has many | |
272 | changes, is more page-based, is more conservative with memory usage, | |
273 | and does not `orphan' large blocks when they are freed. | |
274 | ||
275 | b. A new version of gmalloc, based on the old GLIBC malloc, with many | |
276 | changes and range checking included by default. | |
277 | ||
278 | c. A new implementation of fnmatch(3) that includes full POSIX.2 Basic | |
279 | Regular Expression matching, including character classes, collating | |
280 | symbols, equivalence classes, and support for case-insensitive pattern | |
281 | matching. | |
282 | ||
283 | d. ksh-88 egrep-style extended pattern matching ([@+*?!](patlist)) has been | |
284 | implemented, controlled by a new `shopt' option, `extglob'. | |
285 | ||
286 | e. There is a new ksh-like `[[' compound command, which implements | |
287 | extended `test' functionality. | |
288 | ||
289 | f. There is a new `printf' builtin, implemented according to the POSIX.2 | |
290 | specification. | |
291 | ||
292 | g. There is a new feature for command substitution: $(< filename) now expands | |
293 | to the contents of `filename', with any trailing newlines removed | |
294 | (equivalent to $(cat filename)). | |
295 | ||
296 | h. There are new tilde prefixes which expand to directories from the | |
297 | directory stack. | |
298 | ||
299 | i. There is a new `**' arithmetic operator to do exponentiation. | |
300 | ||
301 | j. There are new configuration options to control how bash is linked: | |
302 | `--enable-profiling', to allow bash to be profiled with gprof, and | |
303 | `--enable-static-link', to allow bash to be linked statically. | |
304 | ||
305 | k. There is a new configuration option, `--enable-cond-command', which | |
306 | controls whether or not the `[[' command is included. It is on by | |
307 | default. | |
308 | ||
309 | l. There is a new configuration option, `--enable-extended-glob', which | |
310 | controls whether or not the ksh extended globbing feature is included. | |
311 | It is enabled by default. | |
312 | ||
313 | m. There is a new configuration #define in config.h.top that, when enabled, | |
314 | will cause all login shells to source /etc/profile and one of the user- | |
315 | specific login shell startup files, whether or not the shell is | |
316 | interactive. | |
317 | ||
318 | n. There is a new invocation option, `--dump-po-strings', to dump | |
319 | a shell script's translatable strings ($"...") in GNU `po' format. | |
320 | ||
321 | o. There is a new `shopt' option, `nocaseglob', to enable case-insensitive | |
322 | pattern matching when globbing filenames and using the `case' construct. | |
323 | ||
324 | p. There is a new `shopt' option, `huponexit', which, when enabled, causes | |
325 | the shell to send SIGHUP to all jobs when an interactive login shell | |
326 | exits. | |
327 | ||
328 | q. `bind' has a new `-u' option, which takes a readline function name as an | |
329 | argument and unbinds all key sequences bound to that function in a | |
330 | specified keymap. | |
331 | ||
332 | r. `disown' now has `-a' and `-r' options, to limit operation to all jobs | |
333 | and running jobs, respectively. | |
334 | ||
335 | s. The `shopt' `-p' option now causes output to be displayed in a reusable | |
336 | format. | |
337 | ||
338 | t. `test' has a new `-N' option, which returns true if the filename argument | |
339 | has been modified since it was last accessed. | |
340 | ||
341 | u. `umask' now has a `-p' option to print output in a reusable format. | |
342 | ||
343 | v. A new escape sequence, `\xNNN', has been added to the `echo -e' and $'...' | |
344 | translation code. It expands to the character whose ascii code is NNN | |
345 | in hexadecimal. | |
346 | ||
347 | w. The prompt string expansion code has a new `\r' escape sequence. | |
348 | ||
349 | x. The shell may now be cross-compiled for the CYGWIN32 environment on | |
350 | a Unix machine. | |
351 | ||
352 | 4. New Features in Readline | |
353 | ||
354 | a. There is now an option for `iterative' yank-last-arg handline, so a user | |
355 | can keep entering `M-.', yanking the last argument of successive history | |
356 | lines. | |
357 | ||
358 | b. New variable, `print-completions-horizontally', which causes completion | |
359 | matches to be displayed across the screen (like `ls -x') rather than up | |
360 | and down the screen (like `ls'). | |
361 | ||
362 | c. New variable, `completion-ignore-case', which causes filename completion | |
363 | and matching to be performed case-insensitively. | |
364 | ||
365 | d. There is a new bindable command, `magic-space', which causes history | |
366 | expansion to be performed on the current readline buffer and a space to | |
367 | be inserted into the result. | |
368 | ||
369 | e. There is a new bindable command, `menu-complete', which enables tcsh-like | |
370 | menu completion (successive executions of menu-complete insert a single | |
371 | completion match, cycling through the list of possible completions). | |
372 | ||
373 | f. There is a new bindable command, `paste-from-clipboard', for use on Win32 | |
374 | systems, to insert the text from the Win32 clipboard into the editing | |
375 | buffer. | |
376 | ||
377 | g. The key sequence translation code now understands printf-style backslash | |
378 | escape sequences, including \NNN octal escapes. These escape sequences | |
379 | may be used in key sequence definitions or macro values. | |
380 | ||
381 | h. An `$include' inputrc file parser directive has been added. | |
382 | ||
383 | ------------------------------------------------------------------------------ | |
e8ce775d JA |
384 | This document details the changes between this version, bash-2.01.1-release, |
385 | and the previous version, bash-2.01-release. | |
386 | ||
387 | 1. Changes to Bash | |
388 | ||
389 | a. The select command was fixed to check the validity of the user's | |
390 | input more strenuously. | |
391 | ||
392 | b. A bug was fixed that prevented `time' from timing commands correctly | |
393 | when supplied as an argument to `bash -c'. | |
394 | ||
395 | c. A fix was made to the mail checking code to keep from adding the same | |
396 | mail file to the list of files to check multiple times when parsing | |
397 | $MAILPATH. | |
398 | ||
399 | d. Fixed an off-by-one error in the tilde expansion library. | |
400 | ||
401 | e. When using the compound array assignment syntax, the old value of | |
402 | the array is cleared before assigning the new value. | |
403 | ||
404 | f. Fixed a bug that could cause a core dump when a trap handler was reset | |
405 | to the default in the trap command associated with that signal. | |
406 | ||
407 | g. Fixed a bug in the locale code that occurred when assigning a value | |
408 | to LC_ALL. | |
409 | ||
410 | h. A change was made to the parser so that words of the form xxx=(...) | |
411 | are not considered compound assignment statements unless there are | |
412 | characters before the `='. | |
413 | ||
414 | i. A fix was made to the command tracing code to correctly quote each | |
415 | word of output. | |
416 | ||
417 | j. Some changes were made to the bash-specific autoconf tests to make them | |
418 | more portable. | |
419 | ||
420 | k. Completion of words with globbing characters now correctly quotes the | |
421 | result. | |
422 | ||
423 | l. The directory /var/spool/mail is now preferred to /usr/spool/mail when | |
424 | configure is deciding on the default mail directory. | |
425 | ||
426 | m. The brace completion code was fixed to not quote the `{' and `}'. | |
427 | ||
428 | n. Some fixes were made to make $RANDOM more random in subshells. | |
429 | ||
430 | o. System-specific changes were made to configure for: SVR4.2 | |
431 | ||
432 | p. Changes were made so that completion of words containing globbing chars | |
433 | substitutes the result only if a single filename was matched. | |
434 | ||
435 | q. The window size is now recomputed after a job is stopped with SIGTSTP if | |
436 | the user has set `checkwinsize' with `shopt'. | |
437 | ||
438 | r. When doing substring expansion, out-of-range substring specifiers now | |
439 | cause nothing to be substituted rather than an expansion error. | |
440 | ||
441 | s. A fix was made so that you can no longer trap `SIGEXIT' or `SIGDEBUG' -- | |
442 | only `EXIT' and `DEBUG' are accepted. | |
443 | ||
444 | t. The display of trapped signals now uses the signal number if signals | |
445 | for which bash does not know the name are trapped. | |
446 | ||
447 | u. A fix was made so that `bash -r' does not turn on restricted mode until | |
448 | after the startup files are executed. | |
449 | ||
450 | v. A bug was fixed that occasionally caused a core dump when a variable | |
451 | found in the temporary environment of export/declare/readonly had a | |
452 | null value. | |
453 | ||
454 | w. A bug that occasionally caused unallocated memory to be passed to free() | |
455 | when doing arithmetic substitution was fixed. | |
456 | ||
457 | x. A bug that caused a buffer overrun when expanding a prompt string | |
458 | containing `\w' and ${#PWD} exceeded PATH_MAX was fixed. | |
459 | ||
460 | y. A problem with the completion code that occasionally caused it to | |
461 | refer to a character before the beginning of the readline line buffer | |
462 | was fixed. | |
463 | ||
464 | z. A bug was fixed so that the `read' builtin restarts reads when | |
465 | interrupted by signals other than SIGINT. | |
466 | ||
467 | aa. Fixed a bug that caused a command to be freed twice when there was | |
468 | an evaluation error in the `eval' command. | |
469 | ||
470 | 2. Changes to Readline | |
471 | ||
472 | a. Added a missing `extern' to a declaration in readline.h that kept | |
473 | readline from compiling cleanly on some systems. | |
474 | ||
475 | b. The history file is now opened with mode 0600 when it is written for | |
476 | better security. | |
477 | ||
478 | c. Changes were made to the SIGWINCH handling code so that prompt redisplay | |
479 | is done better. | |
480 | ||
481 | d. ^G now interrupts incremental searches correctly. | |
482 | ||
483 | e. A bug that caused a core dump when the set of characters to be quoted | |
484 | when completing words was empty was fixed. | |
485 | ||
486 | ------------------------------------------------------------------------------ | |
d166f048 JA |
487 | This document details the changes between this version, bash-2.01-release, |
488 | and the previous version, bash-2.01-beta2. | |
489 | ||
490 | 1. Changes to Bash | |
491 | ||
492 | a. The `distclean' target should remove the `printenv' executable if it | |
493 | has been created. | |
494 | ||
495 | b. The test suite was changed slightly to ensure that the error messages | |
496 | are printed in English. | |
497 | ||
498 | c. A bug that caused the shell to dump core when a filename containing a | |
499 | `/' was passed to `hash' was fixed. | |
500 | ||
501 | d. Pathname canonicalization now leaves a leading `//' intact, as POSIX.1 | |
502 | requires. | |
503 | ||
504 | e. A memory leak when completing commands was fixed. | |
505 | ||
506 | f. A memory leak that occurred when checking the hash table for commands | |
507 | with relative paths was fixed. | |
508 | ||
509 | ------------------------------------------------------------------------------ | |
510 | This document details the changes between this version, bash-2.01-beta2, | |
511 | and the previous version, bash-2.01-beta1. | |
512 | ||
513 | 1. Changes to Bash | |
514 | ||
515 | a. The `ulimit' builtin translates RLIM_INFINITY to the hard limit only if | |
516 | the current (soft) limit is less than or equal to the hard limit. | |
517 | ||
518 | b. Fixed a bug that caused the bash emulation of strcasecmp to produce | |
519 | incorrect results. | |
520 | ||
521 | c. A bug that caused memory to be freed twice when a trap handler resets | |
522 | the trap more than once was fixed. | |
523 | ||
524 | d. A bug that caused machines where sizeof (pointer) > sizeof (int) to | |
525 | fail (and possibly dump core) when trying to unwind-protect a null | |
526 | pointer was fixed. | |
527 | ||
528 | e. The startup files should not be run with job control enabled. This fix | |
529 | allows SIGINT to once again interrupt startup file execution. | |
530 | ||
531 | f. Bash should not change the SIGPROF handler if it is set to something | |
532 | other than SIG_DFL. | |
533 | ||
534 | g. The completion code that provides bash-specific completions for readline | |
535 | now quotes characters that the readline code would treat as word break | |
536 | characters if they appear in a file name. | |
537 | ||
538 | h. The completion code now correctly quotes filenames containing a `!', | |
539 | even if the user attempted to use double quotes when attempting | |
540 | completion. | |
541 | ||
542 | i. A bug that caused the shell to dump core when `disown' was called without | |
543 | arguments and there was no current job was fixed. | |
544 | ||
545 | j. A construct like $((foo);bar) is now processed as a command substitution | |
546 | rather than as a bad arithmetic substitution. | |
547 | ||
548 | k. A couple of bugs that caused `fc' to not obey the `cmdhist' and `lithist' | |
549 | shell options when editing and re-executing a series of commands were | |
550 | fixed. | |
551 | ||
552 | l. A fix was made to the grammar -- the list of commands between `do' and | |
553 | `done' in the body of a `for' command should be treated the same as a | |
554 | while loop. | |
555 | ||
556 | 2. Changes to Readline | |
557 | ||
558 | a. A couple of bugs that caused the history search functions to attempt to | |
559 | free a NULL pointer were fixed. | |
560 | ||
561 | b. If the C library provides setlocale(3), readline does not need to look | |
562 | at various environment variables to decide whether or not to go into | |
563 | eight-bit mode automatically -- just check whether the current locale | |
564 | is not `C' or `POSIX'. | |
565 | ||
566 | c. If the filename completion function finds that a directory was not closed | |
567 | by a previous (interrupted) completion, it closes the directory with | |
568 | closedir(). | |
569 | ||
570 | 3. New Features in Bash | |
571 | ||
572 | a. New bindable readline commands: history-and-alias-expand-line and | |
573 | alias-expand-line. The code was always in there, there was just no | |
574 | way to execute it. | |
575 | ||
576 | ------------------------------------------------------------------------------ | |
577 | This document details the changes between this version, bash-2.01-beta1, | |
578 | and the previous version, bash-2.01-alpha1. | |
579 | ||
580 | 1. Changes to Bash | |
581 | ||
582 | a. Fixed a problem that could cause file descriptors used for process | |
583 | substitution to conflict with those used explicitly in redirections. | |
584 | ||
585 | b. Made it easier to regenerate configure if the user changes configure.in. | |
586 | ||
587 | c. ${GROUPS[0]} should always be the primary group, even on systems without | |
588 | multiple groups. | |
589 | ||
590 | d. Spelling correction is no longer enabled by default. | |
591 | ||
592 | e. Fixes to quoting problems in `bashbug'. | |
593 | ||
594 | f. OS-specific configuration changes were made for: Irix 6. | |
595 | ||
596 | g. OS-specific code changes were made for: QNX. | |
597 | ||
598 | h. A more meaningful message is now printed when the file in /tmp for a | |
599 | here document cannot be created. | |
600 | ||
601 | i. Many changes to the shell's variable initialization code to speed | |
602 | non-interactive startup. | |
603 | ||
604 | j. Changes to the non-job-control code so that it does not try to open | |
605 | /dev/tty. | |
606 | ||
607 | k. The output of `set' and `export' is once again sorted, as POSIX wants. | |
608 | ||
609 | l. Fixed a problem caused by a recursive call reparsing the value of | |
610 | $SHELLOPTS. | |
611 | ||
612 | m. The tilde code no longer calls getenv() when it's compiled as part of | |
613 | the shell, which should eliminate problems on systems that cannot | |
614 | redefine getenv(), like the NeXT OS. | |
615 | ||
616 | n. Fixed a problem that caused `bash -o' or `bash +o' to not list all | |
617 | the shell options. | |
618 | ||
619 | o. Fixed `ulimit' to convert RLIM_INFINITY to the appropriate hard limit | |
620 | only if the hard limit is greater than the current (soft) limit. | |
621 | ||
622 | p. Fixed a problem that arose when building bash in a different directory | |
623 | than the source and y.tab.[ch] were remade with something other than | |
624 | bison. This came up most often on NetBSD. | |
625 | ||
626 | q. Fixed a problem with completion -- it thought that `pwd`/[TAB] indicated | |
627 | an unfinished command completion (`/), which generated errors. | |
628 | ||
629 | r. The bash special tilde expansions (~-, ~+) are now attempted before | |
630 | calling the standard tilde expansion code, which should eliminate the | |
631 | problems people have been seeing with this on Solaris 2.5.1. | |
632 | ||
633 | s. Added support for <stdarg.h> to places where it was missing. | |
634 | ||
635 | t. Changed the code that reads the output of a command substitution to not | |
636 | go through stdio. This reduces the memory requirements and is faster. | |
637 | ||
638 | u. A number of changes to speed up export environment creation were made. | |
639 | ||
640 | v. A number of memory leaks were fixed as the result of running the test | |
641 | scripts through Purify. | |
642 | ||
643 | w. Fixed a bug that caused subshells forked to interpret executable | |
644 | scripts without a leading `#!' to not reinitialize the values of | |
645 | the shell options. | |
646 | ||
647 | 2. Changes to Readline | |
648 | ||
649 | a. History library has less `#ifdef SHELL' code -- abstracted stuff out | |
650 | into application-specific function hooks. | |
651 | ||
652 | b. Readline no longer calls getenv() if it's compiled as part of the shell, | |
653 | which should eliminate problems on systems that cannot redefine getenv(), | |
654 | like the NeXT OS. | |
655 | ||
656 | c. Fixed translation of ESC when `untranslating' macro values. | |
657 | ||
658 | d. The region kill operation now fixes the mark if it ends up beyond the | |
659 | boundaries of the line after the region is deleted. | |
660 | ||
661 | 3. New Features in Bash | |
662 | ||
663 | a. New argument for `configure': `--with-curses'. This can be used to | |
664 | override the selection of the termcap library on systems where it is | |
665 | deficient. | |
666 | ||
667 | ------------------------------------------------------------------------------ | |
668 | This document details the changes between this version, bash-2.01-alpha1, | |
669 | and the previous version, bash-2.0-release. | |
670 | ||
671 | 1. Changes to Bash | |
672 | ||
673 | a. System-specific configuration changes for: FreeBSD, SunOS4, Irix, | |
674 | MachTen, QNX 4.2, Harris Night Hawk, SunOS5. | |
675 | ||
676 | b. System-specific code changes were made for: Linux, 4.4 BSD, QNX 4.2, | |
677 | HP-UX, AIX 4.2. | |
678 | ||
679 | c. A bug that caused the exec builtin to fail because the full pathname of | |
680 | the command could not be found was fixed. | |
681 | ||
682 | d. The code that performs output redirections is now more resistant to | |
683 | race conditions and possible security exploits. | |
684 | ||
685 | e. A bug that caused the shell to dump core when performing pattern | |
686 | substitutions on variable values was fixed. | |
687 | ||
688 | f. More hosts are now recognized by the auto-configuration mechanism | |
689 | (OpenBSD, QNX, others). | |
690 | ||
691 | g. Assignments to read-only variables that attempt to convert them to | |
692 | arrays are now errors. | |
693 | ||
694 | h. A bug that caused shell scripts using array assignments in POSIX mode | |
695 | to exit after the assignment was performed was fixed. | |
696 | ||
697 | i. The substring expansion code is now more careful about running off the | |
698 | ends of the expanded variable value. | |
699 | ||
700 | j. A bug that caused completion to fail if a backquoted command substitution | |
701 | appeared anywhere on the line was fixed. | |
702 | ||
703 | k. The `source' builtin no longer turns off history if it has been enabled | |
704 | in a non-interactive shell. | |
705 | ||
706 | l. A bug that caused the shell to crash when `disown' was given a pid | |
707 | instead of a job number was fixed. | |
708 | ||
709 | m. The `cd' spelling correction code will not try to change to `.' if no | |
710 | directory entries match a single-character argument. | |
711 | ||
712 | n. A bad variable name supplied to `declare', `export', or `readonly' no | |
713 | longer causes a non-interactive shell in POSIX mode to exit. | |
714 | ||
715 | o. Some fixes were made to the test suite to handle peculiarities of | |
716 | various Unix versions. | |
717 | ||
718 | p. The bash completion code now quotes characters that readline would | |
719 | treat as word breaks for completion but are not shell metacharacters. | |
720 | ||
721 | q. Bad options supplied at invocation now cause a usage message to be | |
722 | displayed. | |
723 | ||
724 | r. Fixes were made to the code that handles DEBUG traps so that the trap | |
725 | string is not freed inappropriately. | |
726 | ||
727 | s. Some changes were made to the bash debugger in examples/bashdb -- it | |
728 | should be closer to working now. | |
729 | ||
730 | t. A problem that caused the default filename used for mail checking to be | |
731 | wrong was fixed. | |
732 | ||
733 | u. A fix was made to the `echo' builtin so that NUL characters printed with | |
734 | `echo -e' do not cause the output to be truncated. | |
735 | ||
736 | v. A fix was made to the job control code so that the shell behaves better | |
737 | when monitor mode is enabled in a non-interactive shell. | |
738 | ||
739 | w. Bash no longer catches all of the terminating signals in a non- | |
740 | interactive shell until a trap is set on EXIT, which should result in | |
741 | quicker startup. | |
742 | ||
743 | x. A fix was made to the command timing code so that `time' can be used in | |
744 | a loop. | |
745 | ||
746 | y. A fix was made to the parser so that `((cmd); cmd2)' is now parsed as | |
747 | a nested subshell rather than strictly as an (errnoeous) arithmetic | |
748 | command. | |
749 | ||
750 | z. A fix was made to the globbing code so that it correctly matches quoted | |
751 | filenames beginning with a `.'. | |
752 | ||
753 | aa. A bug in `fc' that caused some multi-line commands to not be stored as | |
754 | one command in the history when they were re-executed after editing | |
755 | (with `fc -e') was fixed. | |
756 | ||
757 | bb. The `ulimit' builtin now attempts to catch some classes of integer | |
758 | overflows. | |
759 | ||
760 | cc. The command-oriented-history code no longer attempts to add `;' | |
761 | inappropriately when a newline appears while reading a $(...) command | |
762 | substitution. | |
763 | ||
764 | dd. A bug that caused the shell to dump core when `help --' was executed | |
765 | was fixed. | |
766 | ||
767 | ee. A bug that caused the shell to crash when an unset variable appeared | |
768 | in the body of a here document after `set -u' had been executed was | |
769 | fixed. | |
770 | ||
771 | ff. Implicit input redirections from /dev/null for asynchronous commands | |
772 | are now handled better. | |
773 | ||
774 | gg. A bug that caused the shell to fail to compile when configured with | |
775 | `--disable-readline' was fixed. | |
776 | ||
777 | hh. The globbing code should now be interruptible. | |
778 | ||
779 | ii. Bash now notices when the `kill' builtin is used to send SIGCONT to a | |
780 | stopped job and adjusts the data structures accordingly, as if `bg' had | |
781 | been executed instead. | |
782 | ||
783 | jj. A bug that caused the shell to crash when mixing calls to `getopts' | |
784 | and `shift' on the same set of positional parameters was fixed. | |
785 | ||
786 | kk. The command printing code now preserves the `-p' flag to `time'. | |
787 | ||
788 | ll. The command printing code now handles here documents better when there | |
789 | are other redirections associated with the command. | |
790 | ||
791 | mm. The special glibc environment variable (NNN_GNU_nonoption_argv_flags_) | |
792 | is no longer placed into the environment of executed commands -- users | |
793 | of glibc had too many problems with it. | |
794 | ||
795 | nn. Reorganized the code that generates signames.h. The signal_names list | |
796 | is now more complete but may be slightly different (SIGABRT is favored | |
797 | over SIGIOT, for example). The preferred signal names are those | |
798 | listed in the POSIX.2 standard. | |
799 | ||
800 | oo. `bashbug' now uses a filename shorter than 14 characters for its | |
801 | temporary file, and asks for confirmation before sending the bug | |
802 | report. | |
803 | ||
804 | pp. A bug that caused TAB completion in vi editing mode to not be turned | |
805 | off when `set -o posix' was executed or back on when `set +o posix' | |
806 | was executed was fixed. | |
807 | ||
808 | qq. A bug in the brace expansion code that caused brace expansions appearing | |
809 | in new-style $(...) command substitutions to be inappropriately expanded | |
810 | was fixed. | |
811 | ||
812 | rr. A bug in the readline hook shell-expand-line that could cause memory to | |
813 | be inappropriately freed was fixed. | |
814 | ||
815 | ss. A bug that caused some arithmetic expressions containing `&&' and `||' | |
816 | to be parsed with the wrong precedence has been fixed. | |
817 | ||
818 | tt. References to unbound variables after `set -u' has been executed now | |
819 | cause the shell to exit immediately, as they should. | |
820 | ||
821 | uu. A bug that caused the shell to exit inappropriately when `set -e' had | |
822 | been executed and a command's return status was being inverted with the | |
823 | `!' reserved word was fixed. | |
824 | ||
825 | vv. A bug that could occasionally cause the shell to crash with a | |
826 | divide-by-zero error when timing a command was fixed. | |
827 | ||
828 | ww. A bug that caused parameter pattern substitution to leave stray | |
829 | backslashes in the replacement string when the expression is in | |
830 | double quotes was fixed. | |
831 | ||
832 | xx. The `break' and `continue' builtins now break out of all loops when an | |
833 | invalid count argument is supplied. | |
834 | ||
835 | yy. Fixed a bug that caused PATH to be set to the empty string if | |
836 | `command -p' is executed with PATH unset. | |
837 | ||
838 | zz. Fixed `kill -l signum' to print the signal name without the `SIG' prefix, | |
839 | as POSIX specifies. | |
840 | ||
841 | aaa. Fixed a bug that caused the shell to crash while setting $SHELLOPTS | |
842 | if there were no shell options set. | |
843 | ||
844 | bbb. Fixed `export -p' and `readonly -p' so that when the shell is in POSIX | |
845 | mode, their output is as POSIX.2 specifies. | |
846 | ||
847 | ccc. Fixed a bug in `readonly' so that `readonly -a avar=(...)' actually | |
848 | creates an array variable. | |
849 | ||
850 | ddd. Fixed a bug that prevented `time' from correctly timing background | |
851 | pipelines. | |
852 | ||
853 | 2. Changes to Readline | |
854 | ||
855 | a. A bug that caused an extra newline to be printed when the cursor was on | |
856 | an otherwise empty line was fixed. | |
857 | ||
858 | b. An instance of memory being used after it was freed was corrected. | |
859 | ||
860 | c. The redisplay code now works when the prompt is longer than the screen | |
861 | width. | |
862 | ||
863 | d. `dump-macros' is now a bindable name, as it should have been all along. | |
864 | ||
865 | e. Non-printable characters are now expanded when displaying macros and | |
866 | their values. | |
867 | ||
868 | f. The `dump-variables' and `dump-macros' commands now output a leading | |
869 | newline if they're called as the result of a key sequence, rather | |
870 | than directly by an application. | |
871 | ||
872 | 3. New Features in Bash | |
873 | ||
874 | a. There is a new builtin array variable: GROUPS, the set of groups to which | |
875 | the user belongs. This is used by the test suite. | |
876 | ||
877 | 4. New Features in Readline | |
878 | ||
879 | a. If a key sequence bound to `universal-argument' is read while reading a | |
880 | numeric argument started with `universal-argument', it terminates the | |
881 | argument but is otherwise ignored. This provides a way to insert multiple | |
882 | instances of a digit string, and is how GNU emacs does it. | |
883 | ||
884 | ------------------------------------------------------------------------------ | |
ccc6cda3 JA |
885 | This document details the changes between this version, bash-2.0-release, |
886 | and the previous version, bash-2.0-beta3. | |
887 | ||
888 | 1. Changes to Bash | |
889 | ||
890 | a. Fix to the `getopts' builtin so that it does the right thing when a | |
891 | required option argument is not present. | |
892 | ||
893 | b. The completion code now updates the common prefix of matched names | |
894 | after FIGNORE processing is done, since any names that were removed | |
895 | may have changed the common prefix. | |
896 | ||
897 | c. Fixed a bug that made messages in MAILPATH entries not work correctly. | |
898 | ||
899 | d. Fixed a serious documentation error in the description of the new | |
900 | ${parameter:offset[:length]} expansion. | |
901 | ||
902 | e. Fixes to make parameter substring expansion ({$param:offset[:length]}) | |
903 | work when within double quotes. | |
904 | ||
905 | f. Fixes to make ^A (CTLESC) survive an unquoted expansion of positional | |
906 | parameters. | |
907 | ||
908 | g. Corrected a misspelling of `unlimited' in the output of `ulimit'. | |
909 | ||
910 | h. Fixed a bug that caused executable scripts without a leading `#!' to | |
911 | occasionally pick up the wrong set of positional parameters. | |
912 | ||
913 | i. Linux systems now have a working `ulimit -v', using RLIMIT_AS. | |
914 | ||
915 | j. Updated config.guess so that many more machine types are recognized. | |
916 | ||
917 | k. Fixed a bug with backslash-quoted slashes in the ${param/pat[/sub]} | |
918 | expansion. | |
919 | ||
920 | l. If the shell is named `-su', and `-c command' is supplied, read and | |
921 | execute the login shell startup files even though the shell is not | |
922 | interactive. This is to support the `-' option to `su'. | |
923 | ||
924 | m. Fixed a bug that caused core dumps when the DEBUG trap was ignored | |
925 | with `trap "" DEBUG' and a shell function was subsequently executed. | |
926 | ||
927 | n. Fixed a bug that caused core dumps in the read builtin when IFS was | |
928 | set to the null string and the input had leading whitespace. | |
929 | ||
930 | 2. Changes to Readline | |
931 | ||
932 | a. Fixed a bug that caused a numeric argument of 1024 to be ignored when | |
933 | inserting text. | |
934 | ||
935 | b. Fixed the display code so that the numeric argument is displayed as it's | |
936 | being entered. | |
937 | ||
938 | c. Fixed the numeric argument reading code so that `M-- command' is | |
939 | equivalent to `M--1 command', as the prompt implies. | |
940 | ||
941 | 3. New Features in Bash | |
942 | ||
943 | a. `ulimit' now sets both hard and soft limits and reports the soft limit | |
944 | by default (when neither -H nor -S is specified). This is compatible | |
945 | with versions of sh and ksh that implement `ulimit'. | |
946 | ||
947 | b. Integer constants have been extended to base 64. | |
948 | ||
949 | 4. New Features in Readline | |
950 | ||
951 | a. The `home' and `end' keys are now bound to beginning-of-line and | |
952 | end-of-line, respectively, if the corresponding termcap capabilities | |
953 | are present. | |
954 | ||
955 | ------------------------------------------------------------------------------ | |
956 | This document details the changes between this version, bash-2.0-beta3, | |
957 | and the previous version, bash-2.0-beta2. | |
958 | ||
959 | 1. Changes to Bash | |
960 | ||
961 | a. System-specific changes for: AIX 4.2, SCO 3.2v[45], HP-UX. | |
962 | ||
963 | b. When in POSIX mode, variable assignments preceding a special builtin | |
964 | persist in the shell environment after the builtin completes. | |
965 | ||
966 | c. Changed all calls to getwd() to getcwd(). Improved check for systems | |
967 | where the libc getcwd() calls popen(), since that breaks on some | |
968 | systems when job control is being used. | |
969 | ||
970 | d. Fixed a bug that caused seg faults when executing scripts with the | |
971 | execute bit set but without a leading `#!'. | |
972 | ||
973 | e. The environment passed to executed commands is never sorted. | |
974 | ||
975 | f. A bug was fixed in the code that expands ${name[@]} to the number of | |
976 | elements in an array variable. | |
977 | ||
978 | g. A bug was fixed in the array compound assignment code ( A=( ... ) ). | |
979 | ||
980 | h. Window size changes now correctly propagate down to readline if | |
981 | the shopt `checkwinsize' option is enabled. | |
982 | ||
983 | i. A fix was made in the code that expands to the length of a variable | |
984 | value (${#var}). | |
985 | ||
986 | j. A fix was made to the command builtin so that it did not turn on the | |
987 | `no fork' flag inappropriately. | |
988 | ||
989 | k. A fix was made to make `set -n' work more reliably. | |
990 | ||
991 | l. A fix was made to the job control initialization code so that the | |
992 | terminal process group is set to the shell's process group if the | |
993 | shell changes its own process group. | |
994 | ||
995 | 2. Changes to Readline | |
996 | ||
997 | a. System-specific changes for: SCO 3.2v[45]. | |
998 | ||
999 | b. The behavior of the vi-mode `.' when redoing an `i' command was changed | |
1000 | to insert the text previously inserted by the `i' command rather than | |
1001 | simply entering insert mode. | |
1002 | ||
1003 | 3. New features in Bash | |
1004 | ||
1005 | a. There is a new version of the autoload function package, in | |
1006 | examples/functions/autoload.v2, that uses arrays and provides more | |
1007 | functionality. | |
1008 | ||
1009 | b. Support for LC_COLLATE and locale-specific sorting of the results of | |
1010 | pathname expansion if strcoll() is available. | |
1011 | ||
1012 | 4. New Features in Readline | |
1013 | ||
1014 | a. Support for locale-specific sorting of completion possibilities if | |
1015 | strcoll() is available. | |
1016 | ||
1017 | ------------------------------------------------------------------------------ | |
1018 | This document details the changes between this version, bash-2.0-beta2, | |
1019 | and the previous version, bash-2.0-beta1. | |
1020 | ||
1021 | 1. Changes to Bash | |
1022 | ||
1023 | a. `pushd -' is once again equivalent to `pushd $OLDPWD'. | |
1024 | ||
1025 | b. OS-specific changes for: SCO 3.2v[45]. | |
1026 | ||
1027 | c. A change was made to the fix for the recently-reported security hole | |
1028 | when reading characters with octal value 255 to make it work better on | |
1029 | systems with restartable system calls when not using readline. | |
1030 | ||
1031 | d. Some changes were made to the test suite so that it works if you | |
1032 | configure bash with --enable-usg-echo-default. | |
1033 | ||
1034 | e. A fix was made to the parsing of conditional arithmetic expressions. | |
1035 | ||
1036 | f. Illegal arithmetic bases now cause an arithmetic evaluation error rather | |
1037 | than being silently reset. | |
1038 | ||
1039 | g. Multiple arithmetic bases now cause an arithmetic evaluation error | |
1040 | instead of being ignored. | |
1041 | ||
1042 | h. A fix was made to the evaluation of ${param?word} to conform to POSIX.2. | |
1043 | ||
1044 | i. A bug that sometimes caused array indices to be evaluated twice (which | |
1045 | would cause errors when they contained assignment statements) was fixed. | |
1046 | ||
1047 | j. `ulimit' was rewritten to avoid problems with getrlimit(2) returning | |
1048 | unsigned values and to simplify the code. | |
1049 | ||
1050 | k. A bug in the command-oriented-history code that caused it to sometimes | |
1051 | put semicolons after right parens inappropriately was fixed. | |
1052 | ||
1053 | l. The values inserted into the prompt by the \w and \W escape sequences | |
1054 | are now quoted to prevent further expansion. | |
1055 | ||
1056 | m. An interactive shell invoked as `sh' now reads and executes commands | |
1057 | from the file named by $ENV when it starts up. If it's a login shell, | |
1058 | it does this after reading /etc/profile and ~/.profile. | |
1059 | ||
1060 | n. The file named by $ENV is never read by non-interactive shells. | |
1061 | ||
1062 | 2. Changes to Readline | |
1063 | ||
1064 | a. A few changes were made to hide some macros and functions that should not | |
1065 | be public. | |
1066 | ||
1067 | b. An off-by-one error that caused seg faults in the history expansion code | |
1068 | was fixed. | |
1069 | ||
1070 | 3. New Features in Bash | |
1071 | ||
1072 | a. The ksh-style ((...)) arithmetic command was implemented. It is exactly | |
1073 | identical to let "...". This is controlled by a new option to configure, | |
1074 | `--enable-dparen-arithmetic', which is on by default. | |
1075 | ||
1076 | b. There is a new #define available in config.h.top: SYS_BASH_LOGOUT. If | |
1077 | defined to a filename, bash reads and executes commands from that file | |
1078 | when a login shell exits. It's commented out by default. | |
1079 | ||
1080 | c. `ulimit' has a `-l' option that reports the maximum amount of data that | |
1081 | may be locked into memory on 4.4BSD-based systems. | |
1082 | ||
1083 | ------------------------------------------------------------------------------ | |
1084 | This document details the changes between this version, bash-2.0-beta1, | |
1085 | and the previous version, bash-2.0-alpha4. | |
1086 | ||
1087 | 1. Changes to Bash | |
1088 | ||
1089 | a. A bug that sometimes caused traps to be ignored on signals the | |
1090 | shell treats specially was fixed. | |
1091 | ||
1092 | b. The internationalization code was changed to track the values of | |
1093 | LC_* variables and call setlocale() as appropriate. The TEXTDOMAIN | |
1094 | and TEXTDOMAINDIR variables are also tracked; changes cause calls | |
1095 | to textdomain() and bindtextdomain(), if available. | |
1096 | ||
1097 | c. A bug was fixed that sometimes caused double-quoted strings to be | |
1098 | parsed incorrectly. | |
1099 | ||
1100 | d. Changes were made so that the siglist code compiles correctly on | |
1101 | Solaris 2.5. | |
1102 | ||
1103 | e. Added `:' to the set of characters that cause word breaks for the | |
1104 | completion code so that pathnames in assignments to $PATH can be | |
1105 | completed. | |
1106 | ||
1107 | f. The `select' command was fixed to print $PS3 to stderr. | |
1108 | ||
1109 | g. Fixed an error in the manual page section describing the effect that | |
1110 | setting and unsetting GLOBIGNORE has on the setting of the `dotglob' | |
1111 | option. | |
1112 | ||
1113 | h. The time conversion code now uses CLK_TCK rather than CLOCKS_PER_SEC | |
1114 | on systems without gettimeofday() and resources. | |
1115 | ||
1116 | i. The getopt static variables are now initialized each time a subshell | |
1117 | is started, so subshells using `getopts' work right. | |
1118 | ||
1119 | j. A sign-extension bug that caused a possible security hole was fixed. | |
1120 | ||
1121 | k. The parser now reads characters between backquotes within a double- | |
1122 | quoted string as a single word, so double quotes in the backquoted | |
1123 | string don't terminate the enclosing double-quoted string. | |
1124 | ||
1125 | l. A bug that caused `^O' to work incorrectly when typed as the first | |
1126 | thing to an interactive shell was fixed. | |
1127 | ||
1128 | m. A rarely-exercised off-by-one error in the code that quotes variable | |
1129 | values was fixed. | |
1130 | ||
1131 | n. Some memory and file descriptor leaks encountered when running a | |
1132 | shell script that is executable but does not have a leading `#!' | |
1133 | were plugged. | |
1134 | ||
1135 | 2. Changes to Readline | |
1136 | ||
1137 | a. A bug that sometimes caused incorrect results when trying to read | |
1138 | typeahead on systems without FIONREAD was fixed. | |
1139 | ||
1140 | 3. New Features in Bash | |
1141 | ||
1142 | a. The command timing code now uses the value of the TIMEFORMAT variable | |
1143 | to format and display timing statistics. | |
1144 | ||
1145 | b. The `time' reserved word now accepts a `-p' option to force the | |
1146 | POSIX.2 output format. | |
1147 | ||
1148 | c. There are a couple of new and updated scripts to convert csh startup | |
1149 | files to bash format. | |
1150 | ||
1151 | d. There is a new builtin array variable: BASH_VERSINFO. The various | |
1152 | members hold the parts of the version information in BASH_VERSION, | |
1153 | plus the value of MACHTYPE. | |
1154 | ||
1155 | 4. New Features in Readline | |
1156 | ||
1157 | a. Setting LANG to `en_US.ISO8859-1' now causes readline to enter | |
1158 | eight-bit mode. | |
1159 | ||
1160 | ------------------------------------------------------------------------------ | |
1161 | This document details the changes between this version, bash-2.0-alpha4, | |
1162 | and the previous version, bash-2.0-alpha3. | |
1163 | ||
1164 | 1. Changes to Bash | |
1165 | ||
1166 | a. There is better detection of rsh connections on Solaris 2. | |
1167 | ||
1168 | b. Assignments to read-only variables preceding a command name are now | |
1169 | variable assignment errors. Variable assignment errors cause | |
1170 | non-interactive shells running in posix mode to exit. | |
1171 | ||
1172 | c. The word tokenizer was rewritten to handle nested quotes and pairs | |
1173 | ('', "", ``, ${...}, $(...), $[...], $'...', $"...", <(...), >(...)) | |
1174 | correctly. Some of the parameter expansion code was updated as a | |
1175 | consequence. | |
1176 | ||
1177 | d. A fix was made to `test' when given three arguments so that a binary | |
1178 | operator is checked for first, before checking that the first argument | |
1179 | is `!'. | |
1180 | ||
1181 | e. 2''>/dev/null is no longer equivalent to 2>/dev/null. | |
1182 | ||
1183 | f. Parser error messages were regularized, and in most cases the name of | |
1184 | the shell script being read by a non-interactive shell is not printed | |
1185 | twice. | |
1186 | ||
1187 | g. A fix was made to the completion code so that it no longer removes the | |
1188 | text the user typed in some cases. | |
1189 | ||
1190 | h. The special glibc `getopt' environment variable is no longer put into | |
1191 | the environment on machines with small values of ARG_MAX. | |
1192 | ||
1193 | i. The expansion of ${...} now follows the POSIX.2 rules for finding the | |
1194 | closing `}'. | |
1195 | ||
1196 | j. The shell no longer displays spurious status messages for background | |
1197 | jobs in shell scripts that complete successfully when the script is | |
1198 | run from a terminal. | |
1199 | ||
1200 | k. `shopt -o' now correctly updates $SHELLOPTS. | |
1201 | ||
1202 | l. A bug that caused the $PATH searching code to return a non-executable | |
1203 | file even when an executable file with the same name appeared later in | |
1204 | $PATH was fixed. | |
1205 | ||
1206 | m. The shell now does tilde expansions on unquoted `:~' in assignment | |
1207 | statements when not in posix mode. | |
1208 | ||
1209 | n. Variable assignment errors when a command consists only of assignments | |
1210 | now cause non-interactive shells to exit when in posix mode. | |
1211 | ||
1212 | o. If the variable in a `for' or `select' command is read-only, or not a | |
1213 | legal shell identifier, a variable assignment error occurs. | |
1214 | ||
1215 | p. `test' now handles `-a' and `-o' as binary operators when three arguments | |
1216 | are supplied, and correctly parses `( word )' as equivalent to `word'. | |
1217 | ||
1218 | q. `test' was fixed so that file names of the form /dev/fd/NN mean the same | |
1219 | thing on all systems, even Linux. | |
1220 | ||
1221 | r. Fixed a bug in the globbing code that caused patterns with multiple | |
1222 | consecutive `*'s to not be matched correctly. | |
1223 | ||
1224 | s. Fixed a bug that caused $PS2 to not be printed when an interactive shell | |
1225 | not using readline is reading a here document. | |
1226 | ||
1227 | t. Fixed a bug that caused history expansion to be performed inappropriately | |
1228 | when a single-quoted string spanned more than one line. | |
1229 | ||
1230 | u. `getopts' now checks that the variable name passed by the user as the | |
1231 | second argument is a legal shell identifier and that the variable is | |
1232 | not read-only. | |
1233 | ||
1234 | v. Fixed `getopts' to obey POSIX.2 rules for setting $OPTIND when it | |
1235 | encounters an error. | |
1236 | ||
1237 | w. Fixed `set' to display variable values in a form that can be re-read. | |
1238 | ||
1239 | x. Fixed a bug in the code that keeps track of whether or not local variables | |
1240 | have been declared at the current level of function nesting. | |
1241 | ||
1242 | y. Non-interactive shells in posix mode now exit if the name in a function | |
1243 | declaration is not a legal identifier. | |
1244 | ||
1245 | z. The job control code now ignores stopped children when the shell is not | |
1246 | interactive. | |
1247 | ||
1248 | aa. The `cd' builtin no longer attempts spelling correction on the directory | |
1249 | name if the shell is not interactive, regardless of the setting of the | |
1250 | `cdspell' option. | |
1251 | ||
1252 | bb. Some OS-specific changes were made for SCO 3.2v[45] and AIX 4.2. | |
1253 | ||
1254 | cc. `time' now prints its output to stderr, as POSIX.2 specifies. | |
1255 | ||
1256 | 2. Fixes to Readline | |
1257 | ||
1258 | a. After printing possible completions, all lines of a multi-line prompt | |
1259 | are redisplayed. | |
1260 | ||
1261 | b. Some changes were made to the terminal handling code in rltty.c to | |
1262 | work around AIX 4.2 bugs. | |
1263 | ||
1264 | 3. New Features in Bash | |
1265 | ||
1266 | a. There is a new loadable builtin: sprintf, with calling syntax | |
1267 | sprintf var format [args] | |
1268 | This provides an easy way to simulate ksh left- and right-justified | |
1269 | variable values. | |
1270 | ||
1271 | b. The expansions of \h and \H in prompt strings were swapped. \h now | |
1272 | expands to the hostname up to the first `.', as in bash-1.14. | |
1273 | ||
1274 | 4. New Features in Readline | |
1275 | ||
1276 | a. The bash-1.14 behavior when ^M is typed while doing an incremental | |
1277 | search was restored. ^J may now be used to terminate the search without | |
1278 | accepting the line. | |
1279 | ||
1280 | b. There is a new bindable variable: disable-completion. This inhibits | |
1281 | word completion and causes the completion character to be inserted as | |
1282 | if it had been bound to self-insert. | |
1283 | ||
1284 | ------------------------------------------------------------------------------ | |
1285 | This document details the changes between this version, bash-2.0-alpha3, | |
1286 | and the previous version, bash-2.0-alpha2. | |
1287 | ||
1288 | There is now a file `COMPAT' included in the distribution that lists the | |
1289 | user-visible incompatibilities between 1.14 and 2.0. | |
1290 | ||
1291 | 1. Changes to Bash | |
1292 | ||
1293 | a. Some work was done so that word splitting of the rhs of assignment | |
1294 | statements conforms more closely to historical practice. | |
1295 | ||
1296 | b. A couple of errant memory frees were fixed. | |
1297 | ||
1298 | c. A fix was made to the test builtin so it recognizes `<' and `>' as | |
1299 | binary operators. | |
1300 | ||
1301 | d. The GNU malloc in lib/malloc/malloc.c now scrambles memory as it's | |
1302 | allocated and freed. This is to catch callers that refer to freed | |
1303 | memory or assume something about newly-allocated memory. | |
1304 | ||
1305 | e. Fixed a problem with conversion to 12-hour time in the prompt | |
1306 | expansion code. | |
1307 | ||
1308 | f. Fixed a problem with configure's argument parsing order. Now you can | |
1309 | correctly turn on specific options after using --enable-minimal-config. | |
1310 | ||
1311 | g. The configure script now automatically disables the use of GNU malloc | |
1312 | on systems where it's appropriate (better than having people read the | |
1313 | NOTES file and do it manually). | |
1314 | ||
1315 | h. There are new prompt expansions (\v and \V) to insert version information | |
1316 | into the prompt strings. | |
1317 | ||
1318 | i. The default prompt string now includes the version number. | |
1319 | ||
1320 | j. Most of the builtins that take no options were changed to use the | |
1321 | internal getopt so they can produce proper error messages for -? | |
1322 | and incorrect options. | |
1323 | ||
1324 | k. Some system-specific changes were made for SVR4.2 and Solaris 2.5. | |
1325 | ||
1326 | l. Bash now uses PATH_MAX instead of MAXPATHLEN and NAME_MAX instead of | |
1327 | MAXNAMLEN. | |
1328 | ||
1329 | m. A couple of problems caused by uninitialized variables were fixed. | |
1330 | ||
1331 | n. There are a number of new loadable builtin examples: logname, basename, | |
1332 | dirname, tty, pathchk, tee, head, and rmdir. All of these conform to | |
1333 | POSIX.2. | |
1334 | ||
1335 | o. Bash now notices changes in TZ and calls tzset() if present, so | |
1336 | changing TZ will alter the time printed by prompt expansions. | |
1337 | ||
1338 | p. The source was reorganized a bit so I don't have to wait so long for | |
1339 | some files to compile, and to facilitate the creation of a `shell | |
1340 | library' at some future point. | |
1341 | ||
1342 | q. Bash no longer turns off job control if called as `sh', since the | |
1343 | POSIX.2 spec includes job control as a standard feature. | |
1344 | ||
1345 | r. `bash -o posix' now works as intended. | |
1346 | ||
1347 | s. Fixed a problem with the completion code: when completing a filename | |
1348 | that contained globbing characters, if show-all-if-ambiguous was set, | |
1349 | the completion code would remove the user's text. | |
1350 | ||
1351 | t. Fixed ulimit so that (hopefully) the full range of limits is available | |
1352 | on HPUX systems. | |
1353 | ||
1354 | u. A new `shopt' option (`hostcomplete') enables and disables hostname | |
1355 | completion. | |
1356 | ||
1357 | v. The shell no longer attempts to save the history on an abort(), | |
1358 | which is usually called by programming_error(). | |
1359 | ||
1360 | w. The `-s' option to `fc' was changed to echo the command to be executed | |
1361 | to stderr instead of stdout. | |
1362 | ||
1363 | x. If the editor invoked by `fc -e' exits with a non-zero status, no | |
1364 | commands are executed. | |
1365 | ||
1366 | y. Fixed a bug that made the shopt `histverify' option work incorrectly. | |
1367 | ||
1368 | z. There is a new variable `MACHTYPE' whose value is the GNU-style | |
1369 | `cpu-company-system' system description as set by configure. (The | |
1370 | values of MACHTYPE and HOSTTYPE should really be swapped.) | |
1371 | ||
1372 | aa. The `ulimit' builtin now allows the maximum virtual memory size to be | |
1373 | set via setrlimit(2) if RLIMIT_VMEM is defined. | |
1374 | ||
1375 | bb. `bash -nc 'command'' no longer runs `command'. | |
1376 | ||
1377 | 2. Changes to Readline | |
1378 | ||
1379 | a. Fixed a typo in the code that checked for FIONREAD in input.c. | |
1380 | ||
1381 | b. Fixed a bug in the code that outputs keybindings, so things like C-\ | |
1382 | are quoted properly. | |
1383 | ||
1384 | c. Fixed a bug in the inputrc file parsing code to handle the problems | |
1385 | caused by inputrc files created from the output of `bind -p' in | |
1386 | previous versions of bash. The problem was due to the bug fixed | |
1387 | in item b above. | |
1388 | ||
1389 | d. Readline no longer turns off the terminal's meta key, and turns it on | |
1390 | once the first time it's called. | |
1391 | ||
1392 | ------------------------------------------------------------------------------ | |
1393 | This file documents the changes between this version, bash-2.0-alpha2, | |
1394 | and the previous version, bash-2.0-alpha. | |
1395 | ||
1396 | 1. Changes to Bash | |
1397 | ||
1398 | a. The shell no longer thinks directories are executable. | |
1399 | ||
1400 | b. `disown' has a new option, `h', which inhibits the resending of SIGHUP | |
1401 | but does not remove the job from the jobs table. | |
1402 | ||
1403 | c. The varargs functions in error.c now use ANSI-C `stdarg' if available. | |
1404 | ||
1405 | d. The build process now treats the `build version' in .build as local to | |
1406 | the build directory, so different versions built from the same source | |
1407 | tree have different `build versions'. | |
1408 | ||
1409 | e. Some problems with the grammar have been fixed. (It used `list' in a few | |
1410 | productions where `compound_list' was needed. A `list' must be terminated | |
1411 | with a newline or semicolon; a `compound_list' need not be.) | |
1412 | ||
1413 | f. A fix was made to keep `wait' from hanging when waiting for all background | |
1414 | jobs. | |
1415 | ||
1416 | g. `bash --help' now writes its output to stdout, like the GNU Coding Standards | |
1417 | specify, and includes the machine type (the value of MACHTYPE). | |
1418 | ||
1419 | h. `bash --version' now prints more information and exits successfully, like | |
1420 | the GNU Coding Standards specify. | |
1421 | ||
1422 | i. The output of `time' and `times' now prints fractional seconds with three | |
1423 | places after the decimal point. | |
1424 | ||
1425 | j. A bug that caused process substitutions to screw up the pipeline printed | |
1426 | by `jobs' was fixed. | |
1427 | ||
1428 | k. Fixes were made to the code that implements $'...' and $"..." so they | |
1429 | work as documented. | |
1430 | ||
1431 | l. The process substitution code now opens named pipes for reading with | |
1432 | O_NONBLOCK to avoid hanging. | |
1433 | ||
1434 | m. Fixes were made to the trap code so the shell cleans up correctly if the | |
1435 | trap command contains a `return' and we're executing a function or | |
1436 | sourcing a script with `.'. | |
1437 | ||
1438 | n. Fixes to doc/Makefile.in so that it doesn't try to remake all of the | |
1439 | documentation (ps, dvi, etc.) on a `make install'. | |
1440 | ||
1441 | o. Fixed an auto-increment error that caused bash -c args to sometimes dump | |
1442 | core. | |
1443 | ||
1444 | p. Fixed a bug that caused $HISTIGNORE to fail when the history line | |
1445 | contained globbing characters. | |
1446 | ||
1447 | 2. Changes to Readline | |
1448 | ||
1449 | a. There is a new string variable, rl_library_version, available for use by | |
1450 | applications. The current value is "2.1". | |
1451 | ||
1452 | b. A bug encountered when expand-tilde was enabled and file completion was | |
1453 | attempted on a word beginning with `~/' was fixed. | |
1454 | ||
1455 | c. A slight change was made to the incremental search termination behavior. | |
1456 | ESC still terminates the search, but if input is pending or arrives | |
1457 | within 0.1 seconds (on systems with select(2)), it is used as a prefix | |
1458 | character. This is intented to allow users to terminate searches with | |
1459 | the arrow keys and get the behavior they expect. |