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