bug-bash
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Bash-4.3-rc2 available for FTP


From: Chet Ramey
Subject: Bash-4.3-rc2 available for FTP
Date: Thu, 30 Jan 2014 10:48:34 -0500

The second release candidate of bash-4.3 is now available with the URL

ftp://ftp.cwru.edu/pub/bash/bash-4.3-rc2.tar.gz

This tar file does not include the formatted documentation (you
should be able to generate it yourself).

This release fixes many outstanding bugs in bash-4.2 and introduces several
new features.  The most significant bug fix is the reworking of signal
handling to avoid running signal and trap handlers in a signal handler
context.  This led to issues with glibc, which uses internal locks
extensively and handles longjmps from user code very poorly.

The most notable new features are the `globasciiranges' shell option, which
forces the pattern matching code to treat [a-z] as if in the C locale;
nameref variables and the changes to allow assigning, referencing, and
unsetting them; improvements to the `direxpand' option introduced in bash-4.2
patch 29; and allowing negative subscripts when assigning and referencing
indexed array elements.

There is one incompatible change between bash-4.2 and bash-4.3.  Bash now
performs quote removal on the replacement string in pattern substitution
(${param/pat/rep}), since the shell treats quotes as special.  If you
have to quote single quotes to get them to be treated literally, the shell
should perform quote removal on them.

`bashbug' may be used to report bugs with this version.  It will send
mail to address@hidden if the shell's `release status' is alpha or
beta.

As always, thanks for your help.

Chet

+========== CHANGES ==========+
This document details the changes between this version, bash-4.3-rc2, and the
previous version, bash-4.3-rc1.

1.  Changes to Bash

a. Fixed a bug that left variables set by printf -v marked as invisible.

b. Fixed an off-by-one error in a job control warning message.

c. Fixed a bug that caused the shell to crash after declaring a nameref variable
   without a value.

d. Fixed a bug that caused asynchronous commands to not set $? correctly.

e. Fixed a bug that caused out-of-order execution when executing aliases with
   embedded newlines containing `.' commands.

f. Fixed a bug that caused error messages generated by expansion errors in
   `for' commands to have the wrong line number.

g. Fixed a bug that caused the `wait' builtin to not be interruptible in an
   interactive shell with job control enabled.

h. Fixed a bug that caused SIGINT and SIGQUIT to not be trappable in
   asynchronous subshell commands.

i. Bash now requires that the value assigned to a nameref variable be a valid
   shell identifier (variable name or array reference).

j. Converting an existing variable to a nameref variable now turns off the
   -i/-l/-u/-c attributes.

k. Displaying a nameref variable with `declare -p' now displays the nameref
   variable and its value rather than following the nameref chain.

l. Fixed a problem with interrupt handling that caused a second and subsequent
   SIGINT to be ignored by interactive shells.

m. Fixed a bug that caused certain positional parameter and array expansions
   to mishandle (discard) null positional parameters and array elements.

n. The shell no longer blocks receipt of signals while running trap handlers
   for those signals, and allows most trap handlers to be run recursively
   (running trap handlers while a trap handler is executing).

o. The shell now handles backslashes in regular expression arguments to the
   [[ command's =~ operator slightly differently, resulting in more
   consistent behavior.

2.  Changes to Readline

a. Fixed a bug that could cause readline to crash and seg fault attempting to
   expand an empty history entry.

b. Fixed a bug that caused a bad entry in the $LS_COLORS variable to abort all
   color processing but leave color enabled.

c. Fixed a bug that caused display problems with multi-line prompts containing
   invisible characters on multiple lines.

d. Fixed a bug that caused effects made by undoing changes to a history line to
   be discarded.

3.  New Features in Bash

4.  New Features in Readline

a.  When creating shared libraries on Mac OS X, the pathname written into the
    library (install_name) no longer includes the minor version number.
------------------------------------------------------------------------------
This document details the changes between this version, bash-4.3-rc1, and the
previous version, bash-4.3-beta2.

1.  Changes to Bash

a. Fixed a bug in bash completion that caused a tilde to be expanded even if
   the `direxpand' option was not enabled.

b. Fixed a potential bug that could cause corrupted input in interactive shells
   running without line editing and with `ignoreeof' enabled.

c. Fixed a bug that could cause failures when opening pipes back to shells
   created to run process substitutions.

d. Fixed a bug that caused an assignment to TEXTDOMAIN to require TEXTDOMAINDIR
   to be set in order to actually change the current text domain.

e. Changed the way redirections are printed to avoid confusion when the target
   of an output redirection is a process substitution beginning with `>'.

2.  Changes to Readline

a. Shared library building is now supported on Mac OS X 10.9 (Darwin 13).

3.  New Features in Bash

a. `cd' has a new `-@' option to browse a file's extended attributes on
   systems that support O_XATTR.

4.  New Features in Readline

a. There are additional default key bindings for MinGW32

------------------------------------------------------------------------------
This document details the changes between this version, bash-4.3-beta2, and the
previous version, bash-4.3-beta.

1.  Changes to Bash

a.  Fixed a bug that caused assignment to an unset variable using a negative
    subscript to result in a segmentation fault.

b.  Fixed a bug that caused assignment to a string variable using a negative
    subscript to use the incorrect index.

c.  Fixed a bug that caused some strings to be interpreted as invalid
    extended globbing expressions when used with the help builtin.

d.  Fixed a bug that caused an attempt to trap a signal whose disposition
    cannot be changed to reference uninitialized memory.

e.  Command completion now skips assignment statements preceding a command
    name and completes the command.

f.  Fixed a bug that caused `compgen -f' in a non-interactive shell to dump
    core under certain circumstances.

g.  Fixed a bug that caused the `read -N' to misbehave when the input stream
    contains 0xff.

2.  Changes to Readline

a.  Changed message when an incremental search fails to include "failed" in
    the prompt and display the entire search string instead of just the last
    matching portion.

b.  Fixed a bug that caused an arrow key typed to an incremental search prompt
    to process the key sequence incorrectly.

c.  Additional key bindings for arrow keys on MinGW.

3.  New Features in Bash

a.  The help builtin now attempts substring matching (as it did through
    bash-4.2) if exact string matching fails.

b.  The fc builtin now interprets -0 as the current command line.

c.  Completing directory names containing shell variables now adds a trailing
    slash if the expanded result is a directory.

4.  New Features in Readline

a.  rl_change_environment: new application-settable variable that controls
    whether or not Readline modifies the environment (currently readline
    modifies only LINES and COLUMNS).

------------------------------------------------------------------------------
This document details the changes between this version, bash-4.3-beta, and the
previous version, bash-4.3-alpha.

1.  Changes to Bash

a.  Fixed a bug in the prompt directory name "trimming" code that caused
    memory corruption and garbled the results.

b.  Fixed a bug that caused single quotes that resulted from $'...' quoting
    in the replacement portion of a double-quoted ${word/pat/rep} expansion
    to be treated as quote characters.

c.  Fixed a bug that caused assignment statements preceding a command word to
    result in assignment statements following a declaration command to not be
    expanded like assignment statements.

d.  Fixed a bug with variable search order in the presence of local variables
    with the same name as variables in the temporary environment supplied to
    a shell function.

e.  Fixed a bug that caused constructs like 1<(2) to be interpreted as process
    substitutions even in an arithmetic context.

f.  Fixed several cases where `invisible' variables (variables with attributes
    but no values, which are technically unset) were treated incorrectly.

g.  Fixed a bug that caused group commands in pipelines that were not the
    last element to not run the EXIT trap.

h.  Fixed a bug that caused `unset -n' to not unset a nameref variable in
    certain cases.

i.  Fixed the nameref circular reference checking to be less strict and only
    disallow a nameref variable with the same value as its name at the global
    scope.

j.  Fixed a bug that caused trap handlers to be executed recursively,
    corrupting internal data structures.

k.  Fixed a bug that could result in bash not compiling if certain options were
    not enabled.

l.  Fixed a bug that caused the arithmetic expansion code to attempt variable
    assignments when operator precedence prohibited them.

m.  Word expansions like ${foo##bar} now understand indirect variable 
references.

n.  Fixed a bug that caused `declare -fp name' to not display a function 
    definition.

o.  Fixed a bug that caused asynchronous child processes to modify the stdin
    file pointer when bash was using it to read a script, which modified the
    parent's value as well.

2.  Changes to Readline

a.  Fixed a bug in vi mode that caused the arrow keys to set the saved last
    vi-mode command to the wrong value.

b.  Fixed a bug that caused double-quoted strings to be scanned incorrectly
    when being used as the value of a readline variable assignment.

c.  Fixed a bug with vi mode that prevented `.' from repeating a command
    entered on a previous line (command).

d.  Fixed a bug that could cause completion to core dump if it was interrupted
    by a signal.

e.  Readline now sends the meta-key enable string to the terminal if the
    terminal has been successfully initialized.

f.  Readline now calls the signal hook after resizing the terminal when it
    receives a SIGWINCH.

g.  Fixed a bug that could cause the history list code to perform an out-of-
    bounds array reference if the history list is empty.

3.  New Features in Bash

a.  Shells started to run process substitutions now run any trap set on EXIT.

b.  There is now a configure-time option to enable the globasciiranges option
    by default.

c.  The read builtin now checks its first variable argument for validity before
    trying to read any input.

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

1.  Changes to Bash

a.  Fixed several bugs concerning incomplete bracket expressions in filename
    generation (globbing) patterns.

b.  Fixed a bug with single quotes and WORD in ${param op WORD} when running
    in Posix mode.

c.  Fixed a bug that caused the pattern removal and pattern substitution word
    expansions and case statement word expansion to not match the empty string.

d.  Fixed a bug that caused the tzset() function to not work after changing
    the TZ enviroment variable.

e.  Fixed a bug that caused the RHS of an assignment statement to undergo
    word splitting when it contained an unquoted address@hidden

f.  Fixed bugs that caused the shell to not react to a SIGINT sent while
    waiting for a child process to exit.

g.  Bash doesn't try to run things in a signal handler context when it gets a
    signal (SIGINT/SIGHUP/etc) while reading input using readline but still
    be responsive to terminating signals.

h.  Fixed a bug that caused bash to go into an infinite loop if a filename
    to be matched contained an invalid multibyte character.

i.  Fixed a bug that caused PS4 to end up being truncated if it is longer
    than 128 bytes.

j.  Fixed a bug that caused brace expansion to not skip over double-quoted
    command substitution.

k.  System-specific updates for: DJGPP, HP/UX, Mac OS X

l.  Fixed a bug in displaying commands that caused redirections to be associated
    with the wrong part of the command.

m.  Fixed the coproc cleanup to unset the appropriate shell variables when a
    coproc terminates.

n.  Fixed a bug that caused `fc' to dump core due to incorrect calculation of
    the last history entry.

o.  Added workarounds for FreeBSD's implementation of faccessat/eaccess and
    `test -x'.

p.  Fixed a bug that caused the shell to not match patterns containing
    control-A.

q.  Fixed a bug that could result in doubled error messages when the `printf'
    builtin got a write error.

r.  Fixed a bug that caused the shell to not correctly expand words containing
    multiple consecutive quoted empty strings (""""""aa).

s.  Fixed a bug that caused the shell to not correctly parse multi-line
    process substitutions containing comments and quoted strings.

t.  Fixed a problem with the bash malloc's internal idea of the top of the
    memory heap that resulted in incorrect decisions to try to reduce the
    break and give memory back to the kernel.

u.  There are changes to the expansions peformed on compound array assignments,
    in an effort to make foo=( [ind1]=bar [ind2]=baz ) identical to
    foo[ind1]=bar foo[ind2]=baz.

v.  Bash now reports an error if `read -a name' is used when `name' is an
    existing associative array.

w.  Fixed a bug that allowed an attempted assignment to a readonly variable
    in an arithmetic expression to not return failure.

x.  Fixed several bugs that caused completion functions to be invoked even when
    the cursor was before the first word in the command.

y.  Fixed a bug that caused parsing a command substitution to overwrite the
    parsing state associated with the complete input line.

z.  Fixed several bugs with the built-in snprintf replacement and field widths
    and floating point.

aa. Fixed a bug that caused incorrect offset calculations and input buffer
    corruption when reading files longer than 2^31 bytes.

bb. Fixed several bugs where bash performed arithmetic evaluation in contexts
    where evaluation is suppressed.

cc. Fixed a bug that caused bash to close FIFOs used for process substitution
    too early when a shell function was executing, but protect against using
    all file descriptors when the shell functions are invoked inside loops.

dd. Added checks for printable (and non-printable) multibyte characters for
    use in error messages.

ee. Fixed a bug that caused ^O (operate-and-get-next) to not work correctly
    at the end of the history list.

ff. Fixed a bug that caused command-oriented history to incorrectly combine
    here documents into one line.

gg. Fixed a bug that caused importing SHELLOPTS from the environment into a
    Posix-mode shell to print an error message and refuse to parse it.

hh. Fixed a bug that caused the shell to delete an extra history entry when
    using `history -s'.

ii. Fixed a bug that caused floating-point exceptions and overflow errors
    for the / and % arithmetic operators when using INTMAX_MIN and -1.

jj. Fixed a bug that caused parsing errors when reading an arithmetic for
    loop inside a command substitution.

kk. Fixed a bug that caused a readonly function to be unset when unset was
    called without the -f or -v option.

ll. Fixed several bugs in the code that quotes characters special to regular
    expressions when used in a quoted string on the RHS of the =~ operator
    to the [[ command.

mm. Fixed a bug that caused redirections to fail because the file descriptor
    limit was set to a value less than 10.

nn. Fixed a bug that caused the `read' builtin to execute code in a signal
    handler context if read timed out.

oo. Fixed a bug that caused extended globbing patterns to not match files
    beginning with `.' correctly when a `.' was explicitly supplied in the
    pattern.

pp. Fixed a bug that caused key sequences longer than two characters to not
    work when used with `bind -x'.

qq. Fixed a bug that resulted in redefined functions having the wrong source
    file names in BASH_SOURCE.

rr. Fixed a bug that caused the read builtin to assign null strings to variables
    when using `read -N', which caused core dumps when referenced

ss. Fixed a bug that caused `bash -m script' to not enable job control while
    running the script.

tt. Fixed a bug that caused `printf -v var' to dump core when used with the
    %b format code.

uu. Fixed a bug that caused the shell to exit with the wrong status if -e was
    active and the shell exited on a substitution error.

vv. Fixed a bug that caused the shell to seg fault if an array variable with
    the same name as an existing associative array was implicitly created by
    an assignment (declare a[n]=b).

ww. Fixed a bug that caused a redirection to misbehave if the number specified
    for a file descriptor overflows an intmax_t.

xx. Fixed several bugs with the handling of valid and invalid unicode character
    values when used with the \u and \U escape sequences to printf and $'...'.

yy. Fixed a bug that caused tildes to not be escaped in expanded filenames,
    making them subject to later expansion.

zz. When using the pattern substitution word expansion, bash now runs the
    replacement string through quote removal, since it allows quotes in that
    string to act as escape characters.  This is not backwards compatible, so
    it can be disabled by setting the bash compatibility mode to 4.2.

aaa. Fixed the rest of the cases where the shell runs non-allowed code in a
     signal handler context.

bbb. Fixed a bug that caused spurious DEL characters (\177) to appear in
     double-quoted expansion where the RHS is evaluated to the empty string.

ccc. Fixed a bug that caused the use of the shell's internal random number
     generator for temporary file names to perturb the random number
     sequence.

ddd. Fixed several bugs that caused `declare -g' to not set the right global
     variables or to misbehave when declaring global indexed arrays.

eee. Fixed a logic bug that caused extended globbing in a multibyte locale to
     cause failures when using the pattern substititution word expansions.

fff. Fixed a bug that caused the `lastpipe' option to corrupt the file
     descriptor used to read the script.

ggg. Fixed a bug that causes the shell to delete DEL characters in the
     expanded value of variables used in the same quoted string as variables
     that expand to nothing.

hhh. Fixed a bug that caused the shell to assign the wrong value from an
     assignment like (( x=7 )) when `x' was an existing array variable.

iii. Fixed a bug that caused the shell to misbehave when generating sequences
     and the boundary values overflow an intmax_t.

jjj. Fixed a bug caused expansion errors if an expansion of "$@" appeared
     next to another expansion (e.g.. "address@hidden").

kkk. Fixed a potential buffer overflow bug when performing /dev/fd expansion.

lll. Fixed a bug that resulted in an extra semicolon being added to compound
     assignments when they were added to the history list.

mmm. Fixed a bug that caused mapfile to read one extra line from the input.

nnn. Fixed a bug that caused the mail checking code to use uninitialized
     values.

ooo. Fixed a bug that prevented history timestamps from being saved if the
     history comment character is unset.

ppp. Fixed a bug that caused the case-modifying expansions to not work with
     multibyte characters.

qqq. Fixed a bug that caused the edit-and-execute bindable readline command
     to see the wrong data if invoked in the middle of a multi-line quoted
     string.

rrr. Fixed a bug that resulted in the shell returning the wrong exit status
     for a background command on systems that recycle PIDs very quickly.

sss. Fixed a bug that caused asynchronous group commands to not run any EXIT
     trap defined in the body of the command.

ttt. Fixed a bug that caused `eval "... ; return"' to not clean up properly.

uuu. Fixed a bug that caused the shell to dump core if `read' reads an escaped
     IFS whitespace character.

vvv. Fixed a bug that caused BASH_COMMAND to be set to an incorrect value when
     executing a (...) subshell.

www. Fixed a couple of pointer aliasing bugs with the token string in arithmetic
     evaluation.

xxx. Fixed a bug with parsing multi-line command substitutions when reading
     the `do' keyword followed by whitespace.

yyy. Fixed a bug that caused the shell to seg fault if the time given to the
     printf %(...)T format overflowed the value accepted by localtime(3).

zzz. Fixed a problem with displaying help topics in two columns when the
     translated text contained multibyte characters.

aaaa. Fixed a bug with the extended globbing pattern matcher where a `*' was
      followed by a negated extended glob pattern.

bbbb. Fixed a race condition with short-lived coproc creation and reaping that
      caused the child process to be reaped before the various coproc shell
      variables were initialized.

cccc. Fixed a bug where turning off `errexit' in command substitution subshells
      was not reflected in $SHELLOPTS.

dddd. Partially fixed an inconsistency in how the shell treated shell
      functions run from an EXIT trap.

eeee. Fixed a bug in how the shell invalidated FIFOs used for process
      substitution when executing a pipeline (once rather than in every child).

ffff. Fixed a bug that occurred when expanding a special variable ($@, $*)
      within double quotes and the expansion resulted in an empty string.

gggg. Fixed bugs with executing a SIGCHLD trap handler to make sure that it's
      executed once per exited child.

hhhh. Fixed a bug that caused `declare' and `test' to find variables that
      had been given attributes but not assigned values.  Such variables are
      not set.

iiii. Fixed a bug that caused commands in process substitutions to not look in
      the local temporary environment when performing word expansions.

jjjj. Fixed several problems with globstar expansions (**/**) returning null
      filenames and multiple instances of the same pathname.

kkkk. Fixed an oversight that did not allow the exit status of `coproc' to
      be inverted using `!'.

llll. Fixed a bug that caused the -e option to be re-enabled using `set -e'
      even when executing in a context where -e is ignored.

mmmm. Fixed a (mostly theoretical) bug with input lines longer than SIZE_MAX.

nnnn. Fixed a bug that could result in double evaluation of command
      substitutions when they appear in failed redirections.

oooo. Fixed a bug that could cause seg faults during `mapfile' callbacks if
      the callback unsets the array variable mapfile is using.

pppp. Fixed several problems with variable assignments using ${var:=value}
      when the variable assignment is supposed to have side effects.

qqqq. Fixed a bug that caused a failure of an assignment statement preceding a
      builtin caused the next invocation of a special builtin to exit the shell.

rrrr. Fixed several problems with IFS when it appears in the temporary 
environment
      and is used in redirections.

ssss. Fixed a problem that caused IFS changes using ${IFS:=value} to modify
      how preceding expansions were split.

tttt. Fixed a problem that caused subshells to not run an EXIT trap they set.

uuuu. Fixed a problem that caused shells started in posix mode to attempt to
      import shell functions with invalid names from the environment.  We now
      print a warning.

vvvv. Worked around a kernel problem that caused SIGCHLD to interrupt open(2)
      on a FIFO used for process substitution, even if the SIGCHLD handler was
      installed with the SA_RESTART flag.

wwww. Fixed a problem that resulted in inconsistent expansion of $* and ${a[*]}.

xxxx. Fixed a problem that caused `read -t' to crash when interrupted by
      SIGINT.

yyyy. Fixed a problem that caused pattern removal to fail randomly because the
      pattern matcher read beyond the end of a string.

zzzz. Fixed a bug that caused core dumps when shell functions tried to create
      local shadow copies of special variables like GROUPS.

aaaaa. Fixed a bug that caused SIGTERM to be occasionally lost by children of
       interactive shells when it arrived before the child process reset the
       handler from SIG_DFL.

bbbbb. Fixed a bug that caused redirections like <&n- to leave file descriptor
       n closed if executed with a builtin command.

ccccc. Fixed a bug that caused incorrect completion quoting when completing a
       word containing a globbing character with `show-all-if-ambiguous' set.

ddddd. Fixed a bug that caused printf's %q format specifier not to quote a
       tilde even if it appeared in a location where it would be subject to
       tilde expansion.

2.  Changes to Readline

a.  Fixed a bug that did not allow the `dd', `cc', or `yy' vi editing mode
    commands to work on the entire line.

b.  Fixed a bug that caused redisplay problems with prompts longer than 128
    characters and history searches.

c.  Fixed a bug that caused readline to try and run code to modify its idea
    of the screen size in a signal handler context upon receiving a SIGWINCH.

d.  Fixed a bug that caused the `meta' key to be enabled beyond the duration
    of an individual call top readline().
    
e.  Added a workaround for a wcwidth bug in Mac OS X that caused readline's
    redisplay to mishandle zero-width combining characters.

f.  Fixed a bug that caused readline to `forget' part of a key sequence when
    a multiple-key sequence caused it to break out of an incremental search.

g.  Fixed bugs that caused readline to execute code in a signal handler
    context if interrupted while reading from the file system during completion.

h.  Fixed a bug that caused readline to `forget' part of a key sequence when
    reading an unbound multi-character key sequence.

i.  Fixed a bug that caused Readline's signal handlers to be installed beyond
    the bounds of a single call to readline().

j.  Fixed a bug that caused the `.' command to not redo the most recent `R'
    command in vi mode.

k.  Fixed a bug that caused ignoring case in completion matches to result in
    readline using the wrong match.

l.  Paren matching now works in vi insert mode.

m.  Fix menu-completion to make show-all-if-ambiguous and 
menu-complete-display-prefix
    work together.

n.  Fixed a bug that didn't allow the `cc', `dd', or `yy' commands to be redone
    in vi editing mode.

o.  Fixed a bug that caused the filename comparison code to not compare
    multibyte characters correctly when using case-sensitive or case-mapping
    comparisons.

p.  Fixed the input reading loop to call the input hook function only when there
    is no terminal input available.

q.  Fixed a bug that caused binding a macro to a multi-character key sequence
    where the sequence and macro value share a common prefix to not perform
    the macro replacement.

r.  Fixed several redisplay errors with multibyte characters and prompts
    containing invisible characters when using horizontal scrolling.

s.  Fixed a bug that caused redisplay errors when trying to overwrite
    existing characters using multibyte characters.

3.  New Features in Bash

a.  The `helptopic' completion action now maps to all the help topics, not just
    the shell builtins.

b.  The `help' builtin no longer does prefix substring matching, so `help read'
    does not match `readonly'.

c.  The shell can be compiled to not display a message about processes that
    terminate due to SIGTERM.

d.  Non-interactive shells now react to the setting of checkwinsize and set
    LINES and COLUMNS after a foreground job exits.

e.  There is a new shell option, `globasciiranges', which, when set to on,
    forces globbing range comparisons to use character ordering as if they
    were run in the C locale.

f.  There is a new shell option, `direxpand', which makes filename completion
    expand variables in directory names in the way bash-4.1 did.

g.  In Posix mode, the `command' builtin does not change whether or not a
    builtin it shadows is treated as an assignment builtin.

h.  The `return' and `exit' builtins accept negative exit status arguments.

i.  The word completion code checks whether or not a filename containing a
    shell variable expands to a directory name and appends `/' to the word
    as appropriate.  The same code expands shell variables in command names
    when performing command completion.

j.  In Posix mode, it is now an error to attempt to define a shell function
    with the same name as a Posix special builtin.

k.  When compiled for strict Posix conformance, history expansion is disabled
    by default.

l.  The history expansion character (!) does not cause history expansion when
    followed by the closing quote in a double-quoted string.

m.  `complete' and its siblings compgen/compopt now takes a new `-o noquote'
    option to inhibit quoting of the completions.

n.  Setting HISTSIZE to a value less than zero causes the history list to be
    unlimited (setting it 0 zero disables the history list).

o.  Setting HISTFILESIZE to a value less than zero causes the history file size
    to be unlimited (setting it to 0 causes the history file to be truncated
    to zero size).

p.  The `read' builtin now skips NUL bytes in the input.

q.  There is a new `bind -X' option to print all key sequences bound to Unix
    commands.

r.  When in Posix mode, `read' is interruptible by a trapped signal.  After
    running the trap handler, read returns 128+signal and throws away any
    partially-read input.

s.  The command completion code skips whitespace and assignment statements
    before looking for the command name word to be completed.

t.  The build process has a new mechanism for constructing separate help files
    that better reflects the current set of compilation options.

u.  The -nt and -ot options to test now work with files with nanosecond
    timestamp resolution.

v.  The shell saves the command history in any shell for which history is
    enabled and HISTFILE is set, not just interactive shells.

w.  The shell has `nameref' variables and new -n(/+n) options to declare and
    unset to use them, and a `test -R' option to test for them.

x.  The shell now allows assigning, referencing, and unsetting elements of
    indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which
    count back from the last element of the array.

y.  The {x}<word redirection feature now allows words like {array[ind]} and
    can use variables with special meanings to the shell (e.g., BASH_XTRACEFD).

z.  There is a new CHILD_MAX special shell variable; its value controls the
    number of exited child statues the shell remembers.

aa. There is a new configuration option (--enable-direxpand-default) that
    causes the `direxpand' shell option to be enabled by default.

bb. Bash does not do anything special to ensure that the file descriptor
    assigned to X in {x}<foo remains open after the block containing it
    completes.

cc. The `wait' builtin has a new `-n' option to wait for the next child to
    change status.

dd. The `printf' %(...)T format specifier now uses the current time if no
    argument is supplied.

ee. There is a new variable, BASH_COMPAT, that controls the current shell
    compatibility level.

ff. The `popd' builtin now treats additional arguments as errors.

gg. The brace expansion code now treats a failed sequence expansion as a
    simple string and will continue to expand brace terms in the remainder
    of the word.

4.  New Features in Readline

a.  Readline is now more responsive to SIGHUP and other fatal signals when
    reading input from the terminal or performing word completion but no
    longer attempts to run any not-allowable functions from a signal handler
    context.

b.  There are new bindable commands to search the history for the string of
    characters between the beginning of the line and the point
    (history-substring-search-forward, history-substring-search-backward)

c.  Readline allows quoted strings as the values of variables when setting
    them with `set'.  As a side effect, trailing spaces and tabs are ignored
    when setting a string variable's value.

d.  The history library creates a backup of the history file when writing it
    and restores the backup on a write error.

e.  New application-settable variable: rl_filename_stat_hook: a function called
    with a filename before using it in a call to stat(2).  Bash uses it to
    expand shell variables so things like $HOME/Downloads have a slash
    appended.

f.  New bindable function `print-last-kbd-macro', prints the most-recently-
    defined keyboard macro in a reusable format.

g.  New user-settable variable `colored-stats', enables use of colored text
    to denote file types when displaying possible completions (colored analog
    of visible-stats).

h.  New user-settable variable `keyseq-timout', acts as an inter-character
    timeout when reading input or incremental search strings.

i.  New application-callable function: rl_clear_history. Clears the history list
    and frees all readline-associated private data.

j.  New user-settable variable, show-mode-in-prompt, adds a characters to the
    beginning of the prompt indicating the current editing mode.

k.  New application-settable variable: rl_input_available_hook; function to be
    called when readline detects there is data available on its input file
    descriptor.

l.  Readline calls an application-set event hook (rl_signal_event_hook) after
    it gets a signal while reading input (read returns -1/EINTR but readline
    does not handle the signal immediately) to allow the application to handle
    or otherwise note it.  Not currently called for SIGHUP or SIGTERM.

m.  If the user-settable variable `history-size' is set to a value less than
    0, the history list size is unlimited.

-- 
``The lyf so short, the craft so long to lerne.'' - Chaucer
                 ``Ars longa, vita brevis'' - Hippocrates
Chet Ramey, ITS, CWRU    address@hidden    http://cnswww.cns.cwru.edu/~chet/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]