This file details the changes between the previous release of bash (1.13.5)
and this release (1.14.0).

1. New Features in Bash

a.  The source has been reorganized:  nearly all extern function
    declarations have been moved to header files, function prototypes
    have been added to most header files, function declarations have
    been moved to file scope, dead code has been removed, the
    bash history code has been isolated in bashhist.[ch], and several
    new header files have been created

b.  `set -o posix' puts bash into Posix.2 mode

c.  If $POSIX_PEDANTIC exists in the initial environment or is assigned
    a value, bash enters Posix.2 mode

d.  Bash sets $OSTYPE to a string describing the UNIX version

e.  The features.info file was completely rewritten and now reflects
    the current state of things

f.  A manual page for readline is in documentation/readline.{3,ps}

g.  The test builtin emulates /dev/fd/x for systems without /dev/fd

h.  `dirs' has -n and +n options to access members of the directory stack

i.  Prompt string expansion handles invisible characters in the prompt;
    \[ and \] are used (and required) to start and end sequences of
    invisible chars

j.  NO_PROMPT_VARS has been removed

k.  New machine descriptions have been added:  IBM AIX/ESA, NEC EWS, NetBSD,
    FreeBSD, QNX 4.2, concurrent, MIPS SVR4.2, Lynx 2.1

l.  RESTRICTED_SHELL is no longer defined by default in config.h

m.  The version string in $BASH_VERSION has changed to dist.patch(build)

n.  $history_control has been renamed to $HISTCONTROL and now takes the
    value `ignoreboth' ($history_control is still accepted for backwards
    compatibility)

o.  There is a new program `bashbug' for reporting bugs.  Eventually I will
    probably switch to gnats.

p.  auto_resume can take the values `exact' and `substring'

q.  `set -P' (`set -o physical') enables the same physical view of the
    file system that `nolinks' enables (`nolinks' will remain for one
    more release)

r.  There is a `mkmachtype' program to generate a GNU-style machine type
    string (e.g., `sparc-sun-sunos4.1.2') suitable for assigning to
    $MACHTYPE

s.  The variable $HISTCMD returns the current history number

t.  Variables in directory names are now expanded while doing completion

u.  The test suite has been expanded and is runnable as a regression test
    with `make tests'

v.  `bye' is no longer a builtin synonym for `exit'

w.  The ksh `select' control construct has been implemented

x.  The `ignoreeof' attribute can be inherited if $IGNOREEOF is exported

y.  The `USG-style' echo is now a configuration option.  Define
    DEFAULT_ECHO_TO_USG for default \-interpretation without the -e flag

z.  There is a copy of an article I wrote about bash for the Linux
    Journal in documentation/article.{ms,ps}

aa. The `pwd' builtin now obeys the setting of `set -o physical' (`nolinks')

bb. Process substitution is no longer performed when the shell is in
    `posix mode'

cc. Users may change the debugging and optimization flags to cc by specifying
    CFLAGS to make

2. New Features in Readline

a.  Readline now understands sequences of invisible characters in the prompt
    string, as long as they are escaped (e.g., by the bash \[ and \] escapes)

b.  A `set keymap' variable assignment

c.  A `bell-style' variable that can be set to `visible', `audio', or `none'

d.  A `show-all-if-ambiguous' variable, which causes non-unique completion
    to immediately list the possible completions

e.  An `output-meta' variable to make readline directly output chars
    with the eighth bit set

f.  New bindable readline commands: kill-whole-line, tilde-expand,
    vi-redo, vi-tilde-expand, emacs-editing-mode,
    non-incremental-forward-search-history-again,
    non-incremental-reverse-search-history-again

g.  New history-search-forward and history-search-backward to search for
    the characters between the start of the current line and point

h.  Readline takes the name of the startup file from the INPUTRC variable
    before defaulting to ~/.inputrc

i.  isearch no longer finds identical lines multiple times in succession

j.  M-C-H bound to backward-kill-word in emacs mode

k.  M-~ bound to tilde-expand in emacs mode

l.  History expansion is now fully csh-compatible: missing modifiers and
    substitutions have been added, and bugs fixed

m.  When asking whether or not to display the possible completions, readline
    now accepts space as equivalent to `y' and rubout for `n'

n.  Readline now attempts to find and bind the arrow keys into the vi mode
    movement keymap

3.  Bugs fixed in Bash

a.  Portability fixes: `index' and `rindex' are gone completely, many
    OS-specific defines have been replaced with feature-test macros,
    the use of alloca has been reduced, and other platform-specific fixes
    (e.g. cray) have been made

b.  The man page has been fixed up and brought up to date

c.  Speed improvements: here documents, variable expansion, history
    expansion, command substitution

d.  If history is stifled, the history list replaces the history file at
    exit

e.  Asynchronous jobs re-run with fc -s now print the job number

f.  Output redirections do not perform filename expansion in Posix.2 mode
    when the shell is not interactive

g.  operate_and_get_next now works on the most recent line even if the
    history is unstifled

h.  $PROMPT_COMMAND execution no longer causes recursive invocations
    of yyparse()

i.  An error message is printed if job control initialization fails

j.  A command found in $PATH from the temporary environment is not hashed

k.  Errors display the name of the script if the shell is not interactive

l.  Fixed expression evaluation so blank expressions return 0

m.  Fixed a bug that caused SIGINT and SIGQUIT not to be ignored in some
    asynchronous children

n.  Pipes used for /dev/fd process substitution are now closed on errors

o.  Fixed /dev/null redirection so that ( list ) subshells inherit the
    `stdin-has-been-redirected' flag as in sh

p.  Process substitution now works only when unquoted

q.  Fixed a bug where the async flag was added inappropriately in a command
    like `a;b;c;d &'

r.  Fixed off-by-one bug which caused negative history offsets in `fc' to
    be wrong

s.  Shell now remembers mail dates at startup on all systems

t.  Posix systems without job control no longer create so many zombies

u.  $ENV is now sourced by shells forked to execute scripts without a
    leading `#!' line

v.  Non-root users can now use the `unlimited' argument to ulimit and have
    the resource value set to the hard limit

w.  Made bash more sh-compatible by assigning the first argument after
    `-c command' to $0

x.  Fixed mail checking bug to note that *new* mail has arrived

y.  Fixed off-by-one error in mailcheck.c:free_mail_files()

z.  Fixed a bug where command strings passed to `bash -c' would be truncated
    after executing the first disk command in the string

aa. Fixed a bug which caused redirections passed to executable commands with
    input or output pipes to be closed before the command was executed

bb. Fixed a bug which caused bash to search for files supplied on the command
    line in the $PATH if the initial open failed, even if the names contained
    a slash

cc. The initial argument parsing was fixed up so that other options can
    be supplied with -c (that is, `sh -ec command' now works as make
    intends), and so `bash -o' lists all the shell options at startup.

dd. Error messages are consistently prefixed with the name of the shell
    or shell script when non-interactive.

ee. Fixed up a problem with the `read' builtin that occurred when more
    variables than arguments were supplied.

ff. Unset the variables passed to `read' as arguments when EOF is
    read from stdin (sh, Posix.2 compatibility).

gg. Fixes to the command printing code to make the output of `type'
    available as legal shell input.

ii. Fixes so that command completion is attempted after all of the shell
    command separator characters.

jj. Fixes to the shell completion code so that it handles quoted characters
    and substrings better.

kk. Bash no longer looks through $PATH for a shell script passed as an
    argument if the name contains slashes.

ll. Bash now checks that the `name' in a `name[=value]' argument to `declare'
    (and thus `typeset', `export', and `readonly') is a legal shell variable
    name.

4.  Bugs fixed in Readline

a.  The ^W and ^U bindings in non-incremental search mode have been changed
    to be closer to what Posix specifies

b.  Tries to initialize the keypad to enable the arrow keys

c.  Multiple words are now killed and yanked in the right order

d.  rl_read_init_file now reads filenames in a more regular order:  the last
    one read, $INPUTRC, then ~/.inputrc

e.  yank_nth_arg inserts a space in the right place in vi mode

f.  Fixed a bug in the history library that tried to write to a file opened
    O_RDONLY

g.  Binding of `0' in vi command mode is now right

h.  The VISIBLE_STATS completion listing code now follows symlinks

i.  Memory allocated with alloca() is no longer passed to other functions

j.  Error messages are now printed for unrecognized history modifiers

k.  Fixed a problem with history library and `!#'; now it is more csh-like.

l.  Fixed a csh incompatibility in the history library: now only an end of
    line or `?' terminates a ?string history search string.

m.  Fixed a problem with readline completion that sometimes caused possible
    matches to be listed one per line when `show-all-if-ambiguous' was set.

n.  Fixed a problem in the readline display code that caused divide-by-zero
    errors.

o.  Fixed an off-by-one error in the kill ring reallocation code.
