Bash-2.03 available for FTP

Skip to first unread message

Chet Ramey

Feb 19, 1999, 3:00:00 AM2/19/99
The first public release of bash-2.03 is now available with the URLs

and from the usual GNU mirror sites.

This tar file does not include the formatted documentation
(postscript, dvi, html, and nroffed versions of the manual pages);
that may be retrieved with the URLs

When unpacking the documentation, make sure to extract the tar file
in the bash-2.03 source directory.

Diffs from bash-2.02.1 are available with the URLs

Make sure to apply the diffs using `patch -p1' from within the
bash-2.02.1 source directory.

Please use `bashbug' to report bugs with this version. It is built
and installed at the same time as bash.


Please read the README file first.

Installation instructions are provided in the INSTALL file.

Fixes and New Features

This release fixes the relatively few bugs found in bash-2.02.1.
There are a couple of new features in bash, and a large number of
new things in readline.

The changes of most interest in bash-2.03 are:

o All shells given the --login option at startup read the
login shell startup files, even non-interactive shells
o There is a new configuration framework for shared objects,
so the loadable builtins may be built more easily. This
is shared by readline, so building shared versions of the
readline and history libraries (in the readline distribution)
is easier.

Changed have been made to the readline library being released at
the same time as bash-2.03, readline-4.0, so that bash can be
linked against an already-installed readline library rather than
the private version in lib/readline. Only readline-4.0 is able
to provide all of the symbols that bash-2.03 requires; earlier
versions of the readline library will not work correctly.

A complete list of changes between bash-2.02.1 and bash-2.03 is
available in the file CHANGES.

User-Visible Changes

The aforementioned change to the shell's startup behavior when
the `--login' option is supplied is the most important
user-visible difference between bash-2.02.1 and bash-2.03. There
is also a new `shopt' option, `restricted_shell', that allows
startup files to tell whether or not the shell was started in
restricted mode.

Some user-visible changes that have caused problems in the past
are listed in the file COMPAT.

A Peek at the Future

Things under consideration for bash-2.04 (or whatever the next version
is named) are

o Allowing the shell to open and manipulate TCP and UDP sockets,
via the redirection operators
o Associative arrays


Also available is a new release of the standalone readline library,
version 4.0, with its own configuration scripts and Makefiles.
It can be retrieved with the URLs

and from the usual GNU mirror sites.

Diffs from readline-2.2.1 are available with the URLs

Make sure to install the patches using `patch -p1 < patch-file' from
within the readline-2.2.1 source directory.

The formatted readline documentation is included in the readline
distribution tar file.

A separate announcement listing the changes in readline is being

As always, thanks for your help.


+========== CHANGES ==========+
This document details the changes between this version, bash-2.03-release,
and the previous version, bash-2.03-beta2.

1. Changes to Bash

a. A file descriptor leak in the `fc' builtin was fixed.

b. A bug was fixed in the `read' builtin that caused occasional spurious
failures when using `read -e'.

c. The version code needed to use the value of the cpp variable

d. A new test was added to exercise the command printing and copying code.

e. A bug was fixed that caused `time' to be recognized as a reserved word
if it was the first pattern in a `case' statement pattern list.

This document details the changes between this version, bash-2.03-beta2,
and the previous version, bash-2.03-beta1.

1. Changes to Bash

a. Slight additions to support/shobj-conf, mostly for the benefit of AIX 4.2.

b. config.{guess,sub} support added for the NEC SX4.

c. Changed some of the cross-compiling sections of the configure macros in
aclocal.m4 so that configure won't abort.

d. Slight changes to how the HTML versions of the bash and readline manuals
are generated.

e. Fixed conditional command printing to avoid interpreting printf `%'-escapes
in arguments to [[.

f. Don't include the bash malloc on all variants of the alpha processor.

g. Changes to configure to make --enable-profiling work on Solaris 2.x.

h. Fixed a bug that manifested itself when shell functions were called
between calls to `getopts'.

i. Fixed pattern substitution so that a bare `#'as a pattern causes the
replacement string to be prefixed to the search string, and a bare
`%' causes the replacement string to be appended to the search string.

j. Fixed a bug in the command execution code that caused child processes
to occasionally have the wrong value for $!.

2. Changes to Readline

a. Added code to the history library to catch history substitutions using
`&' without a previous history substitution or search having been

3. New Features in Bash

4. New Features in Readline

a. New bindable variable: `isearch-terminators'.

b. New bindable function: `forward-backward-delete-char' (unbound by default).

This document details the changes between this version, bash-2.03-beta1,
and the previous version, bash-2.03-alpha.

1. Changes to Bash

a. A change was made to the help text for `{...}' to make it clear that a
semicolon is required before the closing brace.

b. A fix was made to the `test' builtin so that syntax errors cause test
to return an exit status > 1.

c. Globbing is no longer performed on assignment statements that appear as
arguments to `assignment builtins' such as `export'.

d. System-specific configuration changes were made for: Rhapsody,
AIX 4.2/gcc, BSD/OS 4.0.

e. New loadable builtins: ln, unlink.

f. Some fixes were made to the globbing code to handle extended glob patterns
which immediately follow a `*'.

g. A fix was made to the command printing code to ensure that redirections
following compound commands have a space separating them from the rest
of the command.

h. The pathname canonicalization code was changed to produce fewer leading
`//' sequences, since those are interpreted as network file system
pathnames on some systems.

i. A fix was made so that loops containing `eval' commands in commands passed
to `bash -c' would not exit prematurely.

j. Some changes were made to the job reaping code when the shell is not
interactive, so the shell will retain exit statuses longer for examination
by `wait'.

k. A fix was made so that `jobs | command' works again.

l. The erroneous compound array assignment var=((...)) is now a syntax error.

m. A change was made to the dynamic loading code in `enable' to support
Tenon's MachTen.

n. A fix was made to the globbing code so that extended globbing patterns
will correctly match `.' in a bracket expression.

2. Changes to Readline

a. A fix was made to the completion code in which a typo caused the wrong
value to be passed to the function that computed the longest common
prefix of the list of matches.

b. The completion code now checks the value of rl_filename_completion_desired,
which is set by application-supplied completion functions to indicate
that filename completion is being performed, to decide whether or not to
call an application-supplied `ignore completions' function.

3. New Features in Bash

a. A change was made to the startup file code so that any shell begun with
the `--login' option, even non-interactive shells, will source the login
shell startup files.

4. New Features in Readline

a. A new variable, rl_erase_empty_line, which, if set by an application using
readline, will cause readline to erase, prompt and all, lines on which the
only thing typed was a newline.

This document details the changes between this version, bash-2.03-alpha,
and the previous version, bash-2.02.1-release.

1. Changes to Bash

a. System-specific configuration changes were made for: Irix 6.x, Unixware 7.

b. The texi2dvi and texi2html scripts were updated to the latest versions
from the net.

c. The configure tests that determine which native type is 32 bits were
changed to not require a compiled program.

d. Fixed a bug in shell_execve that could cause memory to be freed twice
after a failed exec.

e. The `printf' test uses `diff -a' if it's available to prevent confusion
due to the non-ascii output.

f. Shared object configuration is now performed by a shell script,
support/shobj-conf, which generates values to be substituted into
makefiles by configure.

g. Some changes were made to `ulimit' to avoid the use of RLIM_INVALID as a
return value.

h. Changes were made to `ulimit' to work around HPUX 9.x's peculiar
handling of RLIMIT_FILESIZE.

i. Some new loadable builtins were added: id, printenv, sync, whoami, push,
mkdir. `pushd', `popd', and `dirs' can now be built as regular or
loadable builtins from the same source file.

j. Changes were made to `printf' to handle NUL bytes in the expanded format

k. The various `make clean' Makefile targets now descend into lib/sh.

l. The `type' builtin was changed to use the internal `getopt' so that things
like `type -ap' work as expected.

m. There is a new configuration option, --with-installed-readline, to link
bash with a locally-installed version of readline. Only readline version
4.0 and later releases can support this. Shared and static libraries
are supported. The installed include files are used.

n. There is a new autoconf macro used to find which basic type is 64 bits.

o. Dynamic linking and loadable builtins should now work on SCO 3.2v5*,
AIX 4.2 with gcc, Unixware 7, and many other systems using gcc, where
the `-shared' options works correctly.

p. A bug was fixed in the bash filename completion code that caused memory to
be freed twice if a directory name containing an unset variable was
completed and the -u option was set.

q. The prompt expansion code now quotes the `$' in the `\$' expansion so it
is not processed by subsequent parameter expansion.

r. Fixed a parsing bug that caused a single or double quote after a `$$' to
trigger ANSI C expansion or locale translation.

s. Fixed a bug in the globbing code that caused quoted filenames containing
no globbing characters to sometimes be incorrectly expanded.

t. Changes to the default prompt strings if prompt string decoding is not
compiled into the shell.

u. Added `do', `then', `else', `{', and `(' to the list of keywords that may
precede the `time' reserved word.

v. The shell may now be cross-built for BeOS as well as cygwin32.

w. The conditional command execution code now treats `=' the same as `=='
for deciding when to perform pattern matching.

x. The `-e' option no longer causes the shell to exit if a command exits
with a non-zero status while running the startup files.

y. The `printf' builtin no longer dumps core if a modifier is supplied in
the format string without a conversion character (e.g. `%h').

z. Array assignments of the form a=(...) no longer show up in the history

aa. The parser was fixed to obey the POSIX.2 rules for finding the closing
`}' in a ${...} expression.

bb. The history file is now opened with mode 0600 rather than 0666, so bash
no longer relies on the user's umask being set appropriately.

cc. Setting LANG no longer causes LC_ALL to be assigned a value; bash now
relies on proper behavior from the C library.

dd. Minor changes were made to allow quoted variable expansions using
${...} to be completed correctly if there is no closing `"'.

ee. Changes were made to builtins/ so that configuring the shell
with `--enable-profiling' works right and builtins/mkbuiltins is

2. Changes to Readline

a. The version number is now 4.0.

b. There is no longer any #ifdef SHELL code in the source files.

c. Some changes were made to the key binding code to fix memory leaks and
better support Win32 systems.

d. Fixed a silly typo in the paren matching code -- it's microseconds, not

e. The readline library should be compilable by C++ compilers.

f. The readline.h public header file now includes function prototypes for
all readline functions, and some changes were made to fix errors in the
source files uncovered by the use of prototypes.

g. The maximum numeric argument is now clamped at 1000000.

h. Fixes to rl_yank_last_arg to make it behave better.

i. Fixed a bug in the display code that caused core dumps if the prompt
string length exceeded 1024 characters.

j. The menu completion code was fixed to properly insert a single completion
if there is only one match.

k. A bug was fixed that caused the display code to improperly display tabs
after newlines.

3. New Features in Bash

a. New `shopt' option, `restricted_shell', indicating whether or not the
shell was started in restricted mode, for use in startup files.

b. Filename generation is now performed on the words between ( and ) in
array assignments (which it probably should have done all along).

c. OLDPWD is now auto-exported, as POSIX.2 seems to require.

d. ENV and BASH_ENV are read-only variables in a restricted shell.

4. New Features in Readline

a. Many changes to the signal handling:
o Readline now catches SIGQUIT and cleans up the tty before returning;
o A new variable, rl_catch_signals, is available to application writers
to indicate to readline whether or not it should install its own
o A new variable, rl_catch_sigwinch, is available to application
writers to indicate to readline whether or not it should install its
own signal handler for SIGWINCH, which will chain to the calling
applications's SIGWINCH handler, if one is installed;
o There is a new function, rl_free_line_state, for application signal
handlers to call to free up the state associated with the current
line after receiving a signal;
o There is a new function, rl_cleanup_after_signal, to clean up the
display and terminal state after receiving a signal;
o There is a new function, rl_reset_after_signal, to reinitialize the
terminal and display state after an application signal handler
returns and readline continues

b. There is a new function, rl_resize_terminal, to reset readline's idea of
the screen size after a SIGWINCH.

c. New public functions: rl_save_prompt and rl_restore_prompt. These were
previously private functions with a `_' prefix.

d. New function hook: rl_pre_input_hook, called just before readline starts
reading input, after initialization.

e. New function hook: rl_display_matches_hook, called when readline would
display the list of completion matches. The new function
rl_display_match_list is what readline uses internally, and is available
for use by application functions called via this hook.

f. New bindable function, delete-char-or-list, like tcsh.

``The lyf so short, the craft so long to lerne.'' - Chaucer
( ``Discere est Dolere'' -- chet)

Chet Ramey, Case Western Reserve University Internet: ch...@po.CWRU.Edu

Reply all
Reply to author
0 new messages