1 This file details the changes between the previous release of bash (1.13.5)
2 and this release (1.14.0).
4 1. New Features in Bash
6 a. The source has been reorganized: nearly all extern function
7 declarations have been moved to header files, function prototypes
8 have been added to most header files, function declarations have
9 been moved to file scope, dead code has been removed, the
10 bash history code has been isolated in bashhist.[ch], and several
11 new header files have been created
13 b. `set -o posix' puts bash into Posix.2 mode
15 c. If $POSIX_PEDANTIC exists in the initial environment or is assigned
16 a value, bash enters Posix.2 mode
18 d. Bash sets $OSTYPE to a string describing the UNIX version
20 e. The features.info file was completely rewritten and now reflects
21 the current state of things
23 f. A manual page for readline is in documentation/readline.{3,ps}
25 g. The test builtin emulates /dev/fd/x for systems without /dev/fd
27 h. `dirs' has -n and +n options to access members of the directory stack
29 i. Prompt string expansion handles invisible characters in the prompt;
30 \[ and \] are used (and required) to start and end sequences of
33 j. NO_PROMPT_VARS has been removed
35 k. New machine descriptions have been added: IBM AIX/ESA, NEC EWS, NetBSD,
36 FreeBSD, QNX 4.2, concurrent, MIPS SVR4.2, Lynx 2.1
38 l. RESTRICTED_SHELL is no longer defined by default in config.h
40 m. The version string in $BASH_VERSION has changed to dist.patch(build)
42 n. $history_control has been renamed to $HISTCONTROL and now takes the
43 value `ignoreboth' ($history_control is still accepted for backwards
46 o. There is a new program `bashbug' for reporting bugs. Eventually I will
47 probably switch to gnats.
49 p. auto_resume can take the values `exact' and `substring'
51 q. `set -P' (`set -o physical') enables the same physical view of the
52 file system that `nolinks' enables (`nolinks' will remain for one
55 r. There is a `mkmachtype' program to generate a GNU-style machine type
56 string (e.g., `sparc-sun-sunos4.1.2') suitable for assigning to
59 s. The variable $HISTCMD returns the current history number
61 t. Variables in directory names are now expanded while doing completion
63 u. The test suite has been expanded and is runnable as a regression test
66 v. `bye' is no longer a builtin synonym for `exit'
68 w. The ksh `select' control construct has been implemented
70 x. The `ignoreeof' attribute can be inherited if $IGNOREEOF is exported
72 y. The `USG-style' echo is now a configuration option. Define
73 DEFAULT_ECHO_TO_USG for default \-interpretation without the -e flag
75 z. There is a copy of an article I wrote about bash for the Linux
76 Journal in documentation/article.{ms,ps}
78 aa. The `pwd' builtin now obeys the setting of `set -o physical' (`nolinks')
80 bb. Process substitution is no longer performed when the shell is in
83 cc. Users may change the debugging and optimization flags to cc by specifying
86 2. New Features in Readline
88 a. Readline now understands sequences of invisible characters in the prompt
89 string, as long as they are escaped (e.g., by the bash \[ and \] escapes)
91 b. A `set keymap' variable assignment
93 c. A `bell-style' variable that can be set to `visible', `audio', or `none'
95 d. A `show-all-if-ambiguous' variable, which causes non-unique completion
96 to immediately list the possible completions
98 e. An `output-meta' variable to make readline directly output chars
99 with the eighth bit set
101 f. New bindable readline commands: kill-whole-line, tilde-expand,
102 vi-redo, vi-tilde-expand, emacs-editing-mode,
103 non-incremental-forward-search-history-again,
104 non-incremental-reverse-search-history-again
106 g. New history-search-forward and history-search-backward to search for
107 the characters between the start of the current line and point
109 h. Readline takes the name of the startup file from the INPUTRC variable
110 before defaulting to ~/.inputrc
112 i. isearch no longer finds identical lines multiple times in succession
114 j. M-C-H bound to backward-kill-word in emacs mode
116 k. M-~ bound to tilde-expand in emacs mode
118 l. History expansion is now fully csh-compatible: missing modifiers and
119 substitutions have been added, and bugs fixed
121 m. When asking whether or not to display the possible completions, readline
122 now accepts space as equivalent to `y' and rubout for `n'
124 n. Readline now attempts to find and bind the arrow keys into the vi mode
127 3. Bugs fixed in Bash
129 a. Portability fixes: `index' and `rindex' are gone completely, many
130 OS-specific defines have been replaced with feature-test macros,
131 the use of alloca has been reduced, and other platform-specific fixes
132 (e.g. cray) have been made
134 b. The man page has been fixed up and brought up to date
136 c. Speed improvements: here documents, variable expansion, history
137 expansion, command substitution
139 d. If history is stifled, the history list replaces the history file at
142 e. Asynchronous jobs re-run with fc -s now print the job number
144 f. Output redirections do not perform filename expansion in Posix.2 mode
145 when the shell is not interactive
147 g. operate_and_get_next now works on the most recent line even if the
150 h. $PROMPT_COMMAND execution no longer causes recursive invocations
153 i. An error message is printed if job control initialization fails
155 j. A command found in $PATH from the temporary environment is not hashed
157 k. Errors display the name of the script if the shell is not interactive
159 l. Fixed expression evaluation so blank expressions return 0
161 m. Fixed a bug that caused SIGINT and SIGQUIT not to be ignored in some
162 asynchronous children
164 n. Pipes used for /dev/fd process substitution are now closed on errors
166 o. Fixed /dev/null redirection so that ( list ) subshells inherit the
167 `stdin-has-been-redirected' flag as in sh
169 p. Process substitution now works only when unquoted
171 q. Fixed a bug where the async flag was added inappropriately in a command
174 r. Fixed off-by-one bug which caused negative history offsets in `fc' to
177 s. Shell now remembers mail dates at startup on all systems
179 t. Posix systems without job control no longer create so many zombies
181 u. $ENV is now sourced by shells forked to execute scripts without a
184 v. Non-root users can now use the `unlimited' argument to ulimit and have
185 the resource value set to the hard limit
187 w. Made bash more sh-compatible by assigning the first argument after
190 x. Fixed mail checking bug to note that *new* mail has arrived
192 y. Fixed off-by-one error in mailcheck.c:free_mail_files()
194 z. Fixed a bug where command strings passed to `bash -c' would be truncated
195 after executing the first disk command in the string
197 aa. Fixed a bug which caused redirections passed to executable commands with
198 input or output pipes to be closed before the command was executed
200 bb. Fixed a bug which caused bash to search for files supplied on the command
201 line in the $PATH if the initial open failed, even if the names contained
204 cc. The initial argument parsing was fixed up so that other options can
205 be supplied with -c (that is, `sh -ec command' now works as make
206 intends), and so `bash -o' lists all the shell options at startup.
208 dd. Error messages are consistently prefixed with the name of the shell
209 or shell script when non-interactive.
211 ee. Fixed up a problem with the `read' builtin that occurred when more
212 variables than arguments were supplied.
214 ff. Unset the variables passed to `read' as arguments when EOF is
215 read from stdin (sh, Posix.2 compatibility).
217 gg. Fixes to the command printing code to make the output of `type'
218 available as legal shell input.
220 ii. Fixes so that command completion is attempted after all of the shell
221 command separator characters.
223 jj. Fixes to the shell completion code so that it handles quoted characters
224 and substrings better.
226 kk. Bash no longer looks through $PATH for a shell script passed as an
227 argument if the name contains slashes.
229 ll. Bash now checks that the `name' in a `name[=value]' argument to `declare'
230 (and thus `typeset', `export', and `readonly') is a legal shell variable
233 4. Bugs fixed in Readline
235 a. The ^W and ^U bindings in non-incremental search mode have been changed
236 to be closer to what Posix specifies
238 b. Tries to initialize the keypad to enable the arrow keys
240 c. Multiple words are now killed and yanked in the right order
242 d. rl_read_init_file now reads filenames in a more regular order: the last
243 one read, $INPUTRC, then ~/.inputrc
245 e. yank_nth_arg inserts a space in the right place in vi mode
247 f. Fixed a bug in the history library that tried to write to a file opened
250 g. Binding of `0' in vi command mode is now right
252 h. The VISIBLE_STATS completion listing code now follows symlinks
254 i. Memory allocated with alloca() is no longer passed to other functions
256 j. Error messages are now printed for unrecognized history modifiers
258 k. Fixed a problem with history library and `!#'; now it is more csh-like.
260 l. Fixed a csh incompatibility in the history library: now only an end of
261 line or `?' terminates a ?string history search string.
263 m. Fixed a problem with readline completion that sometimes caused possible
264 matches to be listed one per line when `show-all-if-ambiguous' was set.
266 n. Fixed a problem in the readline display code that caused divide-by-zero
269 o. Fixed an off-by-one error in the kill ring reallocation code.