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