2991 lines
115 KiB
Text
2991 lines
115 KiB
Text
This document details the changes between this version, bash-2.05-release,
|
|
and the previous version, bash-2.05-beta2.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. Make sure we note that the first line of a multi-line command was not
|
|
saved in the history if the tests for HISTCONTROL succeed, but the
|
|
HISTIGNORE check fails.
|
|
|
|
b. Fixed a bug in the pattern matching code that caused `[' to be treated
|
|
as a special character inside a `[...]' bracket expression.
|
|
|
|
c. Fixed a bug in the pattern matching code that caused `]' to terminate
|
|
a bracket expression even if it was the first character after the `['
|
|
(or a leading `!' or `^').
|
|
|
|
d. Made a small change to report a more user-friendly error message if
|
|
execve(2) fails because of an error with the interpreter in a script
|
|
with a leading `#! interpreter'.
|
|
|
|
e. If the OS does not support an exec(2) magic number of `#!', make sure we
|
|
have a non-null interpreter name before attempting to execute it.
|
|
|
|
f. Fixed a bug that caused the shell process to end up in a different
|
|
process group than the controlling terminal if a job-control shell was
|
|
run with `exec' in the startup files.
|
|
|
|
g. When started in POSIX mode, either by `bash --posix', `bash -o posix', or
|
|
`sh', $SHELLOPTS includes `posix' and POSIXLY_CORRECT is set.
|
|
|
|
h. Fixed a problem that caused the `\W' prompt string escape sequence to
|
|
expand to nothing when $PWD was `//'.
|
|
|
|
i. The `bashbug' shell script no longer uses $(...) command substitution.
|
|
|
|
j. When `set' is invoked without options in POSIX mode, it no longer prints
|
|
the names and definitions of shell functions.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. rl_set_paren_blink_timeout() is now documented.
|
|
|
|
b. Corrected history.3 man page: `$' is not in the default value of
|
|
history_word_delimiters.
|
|
|
|
c. If a hook function assigned to rl_event_hook sets rl_done to a non-zero
|
|
value, rl_read_key() now immediately returns '\n' (which is assumed to
|
|
be bound to accept-line).
|
|
|
|
3. New Features in Bash
|
|
|
|
a. The `>&word' redirection now works in POSIX mode as it does by default,
|
|
since POSIX.2 leaves it unspecified.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.05-beta2,
|
|
and the previous version, bash-2.05-beta1.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. Fixed a bug in the arithmetic evaluation code so that a^=b is supported.
|
|
|
|
b. Fixed startup so posixly_correct is retained across subshells begun to
|
|
execute scripts without a leading `#!'.
|
|
|
|
c. Fixed a bug that caused $(< file) to not work in a (...) subshell.
|
|
|
|
d. Added config support for Linux running on the IBM S390.
|
|
|
|
e. Fixed a bug that caused bash to get its input pointer out of sync when
|
|
reading commands through a pipe and running a command with standard
|
|
input redirected from a file.
|
|
|
|
f. Made a change so that command completion now makes about half as many
|
|
stat(2) calls when searching the $PATH.
|
|
|
|
g. Fixed a bug that caused variable assignments preceding `return' to not
|
|
be propagated to the shell environment in POSIX mode.
|
|
|
|
h. Fixed a bug with ${parameter[:]?word} -- tilde expansion was not performed
|
|
on `word'.
|
|
|
|
i. In POSIX mode, `break' and `continue' do not complain and return success
|
|
if called when the shell is not executing a loop.
|
|
|
|
j. Fixed `bash -o posix' to work the same as `bash --posix'.
|
|
|
|
k. Fixed a bug where variable assignments preceding `eval' or `source/.'
|
|
would not show up in the environment exported to subshells run by the
|
|
commands.
|
|
|
|
l. In POSIX mode, shells started to execute command substitutions inherit
|
|
the value of the `-e' option from their parent shell.
|
|
|
|
m. In POSIX mode, aliases are expanded even in non-interactive shells.
|
|
|
|
n. Changed some of the job control messages to display the text required by
|
|
POSIX.2 when the shell is in POSIX mode.
|
|
|
|
o. Fixed a bug in `test' that caused it to occasionally return incorrect
|
|
results when non-numeric arguments were supplied to `-t'.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. Some changes were made to avoid gcc warnings with -Wall.
|
|
|
|
b. rl_get_keymap_by_name now finds keymaps case-insensitively, so
|
|
`set keymap EMACS' works.
|
|
|
|
c. The history file writing and truncation functions now return a useful
|
|
status on error.
|
|
|
|
d. Fixed a bug that could cause applications to dereference a NULL pointer
|
|
if a NULL second argument was passed to history_expand().
|
|
|
|
3. New Features in Bash
|
|
|
|
a. doc/readline.3 has been moved to the readline distribution.
|
|
|
|
4. New Features in Readline
|
|
|
|
a. New function, rl_get_screen_size (int *rows, int *columns), returns
|
|
readline's idea of the screen dimensions.
|
|
|
|
b. The timeout in rl_gather_tyi (readline keyboard input polling function)
|
|
is now settable via a function (rl_set_keyboard_input_timeout()).
|
|
|
|
c. Renamed the max_input_history variable to history_max_entries; the old
|
|
variable is maintained for backwards compatibility.
|
|
|
|
d. The list of characters that separate words for the history tokenizer is
|
|
now settable with a variable: history_word_delimiters. The default
|
|
value is as before.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.05-beta1,
|
|
and the previous version, bash-2.05-alpha1.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. Changes to allow shared library and object building on the GNU Hurd.
|
|
|
|
b. Fixes to the way exported functions are placed into the environment and
|
|
cached.
|
|
|
|
c. The globbing library once again respects locales when processing ranges
|
|
in bracket expressions while doing pattern matching.
|
|
|
|
d. System-specific configuration changes for: Tru 64, Interix
|
|
|
|
e. Bashbug now uses /usr/bin/editor as one of the editing alternatives, and
|
|
will use mktemp(1) or tempfile(1), if present, for temporary file creation.
|
|
|
|
f. Bash no longer performs a binary file check on a script argument that's
|
|
really a tty (like /dev/fd/0 or /dev/stdin).
|
|
|
|
g. Fixed a bug in the execution of shell scripts that caused the effects of
|
|
$BASH_ENV to be undone in some cases.
|
|
|
|
h. Fixed several bugs that made `bash [-i] /dev/stdin' not work correctly.
|
|
|
|
i. Several changes to the job control code to avoid some signal state
|
|
manipulation.
|
|
|
|
j. The Bash malloc no longer blocks signals as often, which should make it
|
|
faster.
|
|
|
|
k. Fixed a parsing bug that did not allow backslash to escape a single quote
|
|
inside a $'...' construct.
|
|
|
|
l. Fixed a bug that caused things like ${var:=$'value'} to be parsed
|
|
incorrectly. This showed up in newer versions of autoconf.
|
|
|
|
m. Fixed a bug in the bash-specific readline initialization that caused
|
|
key bindings to bash-specific function names appearing in .inputrc to
|
|
not be honored.
|
|
|
|
n. Bash now sets the file descriptor it uses to save the file descriptor
|
|
opened on a shell script to close on exec.
|
|
|
|
o. Fixed a bug in the prompt string decoding that caused it to misbehave
|
|
when presented an octal sequence of fewer than three characters.
|
|
|
|
p. Fixed the `test' builtin to return an error if `[' is supplied a single
|
|
argument that is not `]'.
|
|
|
|
q. Fixed a bug that caused subshells started to run executable shell scripts
|
|
without a leading `#!' to incorrectly inherit an argument list preceding
|
|
a shell builtin (like such a script called from a script sourced with `.',
|
|
where there were variable assignments preceding the `.' command)
|
|
|
|
r. Fixed a bug that caused changes to variables supplied in an assignment
|
|
statement preceding a shell builtin to not be honored (like a script
|
|
run with `.').
|
|
|
|
s. HOSTTYPE, OSTYPE, and MACHTYPE are set only if they do not have values
|
|
when the shell is started.
|
|
|
|
t. Fixed a bug that caused SIGINT to kill shell scripts after the script
|
|
called `wait'.
|
|
|
|
u. The `fc' builtin now tries to create its temporary files in the directory
|
|
named by $TMPDIR.
|
|
|
|
v. Bash no longer calls any Readline functions or uses any Readline variables
|
|
not declared in readline.h.
|
|
|
|
w. Fixed a bug that caused some substitutions involving $@ to not be split
|
|
correctly, especially expansions of the form ${paramterOPword}.
|
|
|
|
x. SSH2_CLIENT is now treated like SSH_CLIENT and not auto-exported if it
|
|
appears in the initial environment.
|
|
|
|
y. Fixed a couple of problems with shell scripts without a leading `#!'
|
|
being executed out of shell functions that could cause core dumps if
|
|
such a script attempted to execute `return'.
|
|
|
|
z. Fixed a problem with the `-nt' and `-ot' binary operators for the
|
|
`test/[' builtin and the `[[' conditional command that caused wrong
|
|
return values if one of the file arguments did not exist.
|
|
|
|
aa. Fixed a bug that caused non-interactive shells which had previously
|
|
executed `shopt -s expand_aliases' to fail to expand aliases in a
|
|
command like `(command) &'.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. Changes to make most (but not yet all -- there is still crlf()) of the
|
|
exported readline functions declared in readline.h have an rl_ prefix.
|
|
|
|
b. More `const' changes in function arguments, mostly for completion
|
|
functions.
|
|
|
|
c. Fixed a bug in rl_forward that could cause the point to be set to before
|
|
the beginning of the line in vi mode.
|
|
|
|
d. Fixed a bug in the callback read-char interface to make it work when a
|
|
readline function pushes some input onto the input stream with
|
|
rl_execute_next (like the incremental search functions).
|
|
|
|
e. Fixed a file descriptor leak in the history file manipulation code that
|
|
was tripped when attempting to truncate a non-regular file (like
|
|
/dev/null).
|
|
|
|
f. Some existing variables are now documented and part of the public
|
|
interface (declared in readline.h): rl_explict_arg, rl_numeric_arg,
|
|
rl_editing_mode, rl_last_func.
|
|
|
|
g. Renamed rltty_set_default_bindings to rl_tty_set_default_bindings and
|
|
crlf to rl_crlf, so there are no public functions declared in readline.h
|
|
without an `rl_' prefix. The old functions still exist for backwards
|
|
compatibility.
|
|
|
|
3. New Features in Bash
|
|
|
|
a. A new loadable builtin, realpath, which canonicalizes and expands symlinks
|
|
in pathname arguments.
|
|
|
|
b. When `set' is called without options, it prints function defintions in a
|
|
way that allows them to be reused as input. This affects `declare' and
|
|
`declare -p' as well.
|
|
|
|
4. New Features in Readline
|
|
|
|
a. New application-callable function rl_set_prompt(const char *prompt):
|
|
expands its prompt string argument and sets rl_prompt to the result.
|
|
|
|
b. New application-callable function rl_set_screen_size(int rows, int cols):
|
|
public method for applications to set readline's idea of the screen
|
|
dimensions.
|
|
|
|
c. The history example program (examples/histexamp.c) is now built as one
|
|
of the examples.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.05-alpha1,
|
|
and the previous version, bash-2.04-release.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. A fix was made to allow newlines in compond array assignments.
|
|
|
|
b. configure now checks for real-time signals with unusable values.
|
|
|
|
c. Interactive shells no longer exit if a substitution fails because of an
|
|
unset variable within a sourced file.
|
|
|
|
d. Fixed a problem with incorrect matching of extended glob patterns when
|
|
doing pattern substitution.
|
|
|
|
e. `{' is now quoted by the completion code when it appears in a filename.
|
|
|
|
f. Fixed an error in pattern matching that caused the matcher to not
|
|
correctly skip the rest of a bracket expression after a character
|
|
matched.
|
|
|
|
g. Fixed a bug in the IFS word splitting code to make a non-whitespace IFS
|
|
character preceded by IFS whitespace part of the current delimiter rather
|
|
than generating a separate field.
|
|
|
|
h. The {!prefix@} expansion now generates separate words, analogous to $@,
|
|
when double-quoted.
|
|
|
|
i. Command substitution now ignores NUL bytes in the command output, and the
|
|
parser ignores them on input.
|
|
|
|
j. A fix was made to the job control code to prevent hanging processes when
|
|
the shell thinks background processes are running but the kernel returns
|
|
-1/ECHILD from waitpid().
|
|
|
|
k. `pwd' now prints an error message if the write fails when displaying the
|
|
current directory.
|
|
|
|
l. When in POSIX mode, the shell prints trap dispostions without a leading
|
|
`SIG' in the signal specification.
|
|
|
|
m. Fixed a parser bug that caused the current command's line count to be
|
|
messed up by a compound array assignment.
|
|
|
|
n. Fixed a bug in the unwind-protect code that caused bad behavior on machines
|
|
where ints and pointers are not the same size.
|
|
|
|
o. System-specific configure changes for: MacOS X.
|
|
|
|
p. Changes for Cygwin to translate \r\n and \r to \n and to set file
|
|
descriptors used for reading input to text mode in various places.
|
|
|
|
q. Fixed a bug that caused `!' to occasionally not be honored when in
|
|
a (...) subshell.
|
|
|
|
r. Bash no longer assumes that getcwd() will return any useful error message
|
|
in the buffer passed as an argument if the call fails.
|
|
|
|
s. The `source', `.', and `fc' builtins no longer check whether a file is
|
|
binary before reading commands from it.
|
|
|
|
t. Subshells no longer turn off job control when they exit, since that
|
|
sometimes resulted in the terminal being reset to the wrong process
|
|
group.
|
|
|
|
u. The history code no longer tries to save the second and subsequent lines
|
|
of a multi-line command if the first line was not saved.
|
|
|
|
v. The history saving code now does a better job of saving blank lines in a
|
|
multi-line command.
|
|
|
|
w. Removed a `feature' that made `ulimit' silently translate `unlimited' to
|
|
the current hard limit, which obscured some kernel error returns.
|
|
|
|
x. Fixed the grammar so that `}' is recognized as a reserved word after
|
|
another reserved word, rather than requiring a `;' or newline. This
|
|
means that constructs like
|
|
|
|
{ { echo a b c ; } }
|
|
|
|
work as expected.
|
|
|
|
y. Conditional commands ([[...]]) now perform tilde expansion on their
|
|
arguments.
|
|
|
|
z. Noted in the documentation that `set -a' will cause functions to be
|
|
exported if they are defined after `set -a' is executed.
|
|
|
|
aa. When an interactive login shell starts, if $PWD and $HOME refer to the
|
|
same directory but are not the same string, $PWD is set to $HOME.
|
|
|
|
bb. Fixed `printf' to handle invalid floating point numbers better.
|
|
|
|
cc. Temporary files are now created with random filenames, to improve security.
|
|
|
|
dd. The readline initialization code now binds the custom bash functions and
|
|
key bindings after the readline defaults are set up.
|
|
|
|
ee. Fixed the `source' builtin to no longer overwrite a shell function's
|
|
argument list, even if the sourced file changes the positional parameters.
|
|
|
|
ff. A bug fix was made in the expansion of `$*' in contexts where it should
|
|
not be split, like assignment statements.
|
|
|
|
gg. Fixed a bug in the parameter substring expansion to handle conditional
|
|
arithmetic expressions ( exp ? val1 : val2 ) without cutting the expression
|
|
off at the wrong `:'.
|
|
|
|
hh. The `<>' redirection is no longer subject to the current setting of
|
|
`noclobber', as POSIX.2 specifies.
|
|
|
|
ii. Fixed a bug in the conditional command parsing code that caused expressions
|
|
in parentheses to occasionally be parsed incorrectly.
|
|
|
|
jj. Fixed a bug in the ((...)) arithmetic command to allow do...done or
|
|
{...} to follow the )) without an intervening list terminator.
|
|
|
|
kk. `printf' now treats `\E' the same as `\e' when performing backslash escape
|
|
expansion for the `%b' format specifier.
|
|
|
|
ll. When in POSIX mode, the shell no longer searches the current directory for
|
|
a file to be sourced with `.' or `source' if `.' is not in $PATH.
|
|
|
|
mm. Interactive comments are no longer turned off when POSIX mode is disabled.
|
|
|
|
nn. The UID, EUID, HOSTNAME variables are not set if they are in the shell's
|
|
environment when it starts up.
|
|
|
|
oo. Fixed a bug in the `command' builtin so the effect of a command like
|
|
`command exec 4<file' is as if the `command' had been omitted.
|
|
|
|
pp. ${foo[@]} and ${foo[*]} now work as in ksh93 if `foo' is not an array
|
|
variable.
|
|
|
|
qq. ${#foo[X]}, where X is 0, @, or *, now work as in ksh93 if `foo' is not
|
|
an array variable.
|
|
|
|
rr. The shell's idea of an absolute pathname now takes into account a
|
|
possible drive specification on Cygwin and other Windows systems.
|
|
|
|
ss. Fixed a bug which caused incorrect parsing of some multi-character
|
|
constructs if they were split across input lines with backslash-newline
|
|
line continuation.
|
|
|
|
tt. Fixed a bug that caused restricted shell mode to be set inappropriately
|
|
when trying to execute a shell script without a leading `#!'.
|
|
|
|
uu. Shell function definitions no longer require that the body be a group
|
|
command ( {...} ), as POSIX.2 requires.
|
|
|
|
vv. The `cd' and `pwd' builtins now process symlinks in pathnames internally
|
|
and should require many fewer calls to getcwd().
|
|
|
|
ww. Fixed a bug that caused a pipeline's process group to be set incorrectly
|
|
if one of the pipeline elements contained a command substitution.
|
|
|
|
xx. Fixed a bug that caused core dumps when expanding the value of HISTIGNORE.
|
|
|
|
yy. The output of `set' is now quoted using $'...' so invisible characters are
|
|
displayed as escape sequences.
|
|
|
|
zz. Fixed the help text for `unset', since PATH and IFS may both be unset.
|
|
|
|
aaa. The shell no longer puts directory names into the command hash table.
|
|
|
|
bbb. Fixed a bug in `read' that caused it to occasionally free memory twice if
|
|
it was interrupted after reading a large amount of data.
|
|
|
|
ccc. Assignment statements that attempt to assign values to readonly variables
|
|
now cause the command to return an error status.
|
|
|
|
ddd. Fixed a bug that could cause incorrect output if a $(<file) construct was
|
|
interrupted.
|
|
|
|
eee. GROUPS and FUNCNAME now return an error status when assignment is
|
|
attempted, but may be unset (in which case they lose their special
|
|
properties). In all respects except unsetting, they are readonly.
|
|
|
|
fff. The string-to-integer conversion code now ignores trailing whitespace in
|
|
the string, even if strtol(3) does not.
|
|
|
|
ggg. The tcsh magic-space function now does a better job of inserting the
|
|
space close to where the point was before the history expansion, rather
|
|
than just appending it.
|
|
|
|
hhh. Fixed a bug which caused a file sourced from an interactive shell to
|
|
fill up the jobs table if it ran lots of jobs.
|
|
|
|
iii. Fixed a bug in the parameter pattern substitution code to avoid infinite
|
|
recursion on zero-length matches.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. When setting the terminal attributes on systems using `struct termio',
|
|
readline waits for output to drain before changing the attributes.
|
|
|
|
b. A fix was made to the history word tokenization code to avoid attempts to
|
|
dereference a null pointer.
|
|
|
|
c. Readline now defaults rl_terminal_name to $TERM if the calling application
|
|
has left it unset, and tries to initialize with the resultant value.
|
|
|
|
d. Instead of calling (*rl_getc_function)() directly to get input in certain
|
|
places, readline now calls rl_read_key() consistently.
|
|
|
|
e. Fixed a bug in the completion code that allowed a backslash to quote a
|
|
single quote inside a single-quoted string.
|
|
|
|
f. rl_prompt is no longer assigned directly from the argument to readline(),
|
|
but uses memory allocated by readline. This allows constant strings to
|
|
be passed to readline without problems arising when the prompt processing
|
|
code wants to modify the string.
|
|
|
|
g. Fixed a bug that caused non-interactive history searches to return the
|
|
wrong line when performing multiple searches backward for the same string.
|
|
|
|
h. Many variables, function arguments, and function return values are now
|
|
declared `const' where appropriate, to improve behavior when linking with
|
|
C++ code.
|
|
|
|
i. The control character detection code now works better on systems where
|
|
`char' is unsigned by default.
|
|
|
|
j. The vi-mode numeric argument is now capped at 999999, just like emacs mode.
|
|
|
|
k. The Function, CPFunction, CPPFunction, and VFunction typedefs have been
|
|
replaced with a set of specific prototyped typedefs, though they are
|
|
still in the readline header files for backwards compatibility.
|
|
|
|
m. Nearly all of the (undocumented) internal global variables in the library
|
|
now have an _rl_ prefix -- there were a number that did not, like
|
|
screenheight, screenwidth, alphabetic, etc.
|
|
|
|
n. The ding() convenience function has been renamed to rl_ding(), though the
|
|
old function is still defined for backwards compatibility.
|
|
|
|
o. The completion convenience functions filename_completion_function,
|
|
username_completion_function, and completion_matches now have an rl_
|
|
prefix, though the old names are still defined for backwards compatibility.
|
|
|
|
p. The functions shared by readline and bash (linkage is satisfied from bash
|
|
when compiling with bash, and internally otherwise) now have an sh_ prefix.
|
|
|
|
q. Changed the shared library creation procedure on Linux and BSD/OS 4.x so
|
|
that the `soname' contains only the major version number rather than the
|
|
major and minor numbers.
|
|
|
|
r. Fixed a redisplay bug that occurred when the prompt spanned more than one
|
|
physical line and contained invisible characters.
|
|
|
|
3. New Features in Bash
|
|
|
|
a. Added a new `--init-file' invocation argument as a synonym for `--rcfile',
|
|
per the new GNU coding standards.
|
|
|
|
b. The /dev/tcp and /dev/udp redirections now accept service names as well as
|
|
port numbers.
|
|
|
|
c. `complete' and `compgen' now take a `-o value' option, which controls some
|
|
of the aspects of that compspec. Valid values are:
|
|
|
|
default - perform bash default completion if programmable
|
|
completion produces no matches
|
|
dirnames - perform directory name completion if programmable
|
|
completion produces no matches
|
|
filenames - tell readline that the compspec produces filenames,
|
|
so it can do things like append slashes to
|
|
directory names and suppress trailing spaces
|
|
|
|
4. New Features in Readline
|
|
|
|
a. The blink timeout for paren matching is now settable by applications.
|
|
|
|
b. _rl_executing_macro has been renamed to rl_executing_macro, which means
|
|
it's now part of the public interface.
|
|
|
|
c. Readline has a new variable, rl_readline_state, which is a bitmap that
|
|
encapsulates the current state of the library; intended for use by
|
|
callbacks and hook functions.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.04-release,
|
|
and the previous version, bash-2.04-beta5.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. Better compile-time and configure-time checks for the necessity of
|
|
inet_aton().
|
|
|
|
b. A bug was fixed in the expansion of "${@:-}" when there are positional
|
|
parameters.
|
|
|
|
c. A typo was fixed in the output of `complete'.
|
|
|
|
d. The matches generated for a word by the `-W' argument to complete and
|
|
compgen are now matched against the word being completed, and only
|
|
matches are returned as the result.
|
|
|
|
e. Some fixes were made for systems which do not restart read(2) when a
|
|
signal caught by bash is received.
|
|
|
|
f. A bug was fixed which caused the umask to be set to 0 when an invalid
|
|
symbolic mode mask was parsed.
|
|
|
|
g. Fixed a bug that could cause a core dump if a SIGCHLD was received while
|
|
performing an assignment statement using command substitution.
|
|
|
|
h. Changed the word splitting function for programmable completion so cases
|
|
in which the cursor is between words are handled a bit better.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. rl_funmap_names() is now documented.
|
|
|
|
3. New Features in Bash
|
|
|
|
a. The LC_NUMERIC variable is now treated specially, and used to set the
|
|
LC_NUMERIC locale category for number formatting, e.g., when `printf'
|
|
displays floating-point numbers.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.04-beta5,
|
|
and the previous version, bash-2.04-beta4.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. A couple of changes were made to the Makefiles for easier building on
|
|
non-Unix systems.
|
|
|
|
b. Fixed a bug where the current prompt would be set to $PS2 at startup.
|
|
|
|
c. The shell script that tests an already-installed version was changed to
|
|
remove the directory it created its test programs in at exit.
|
|
|
|
d. Several changes were made to the code that tokenizes an input line for
|
|
the programmable completion code. Shell metacharacters will now appear
|
|
as individual words in the word list passed to the completion functions.
|
|
Some of the example completion shell functions were changed to understand
|
|
redirection operators.
|
|
|
|
e. A bug was fixed that, under obscure circumstances, could confuse the
|
|
parser when a shell function was run by the programmable completion code.
|
|
|
|
f. A bug was fixed in the ulimit builtin for systems not using getrlimit().
|
|
|
|
g. The execution code now propagates the correct exit status back to the rest
|
|
of the code if the return value of a subshell command was being inverted.
|
|
Some new test cases for inverting return values with the `!' reserved
|
|
word have been added.
|
|
|
|
h. Negative exponents in the arithmetic evaluation of v**e now return an
|
|
evaluation error.
|
|
|
|
i. A bug that caused bash to check the wrong process in a pipeline for
|
|
abnormal termination (and consequently resetting the terminal attributes)
|
|
was fixed.
|
|
|
|
j. Fixed a bug that caused $PS2 to be displayed after PROMPT_COMMAND was
|
|
executed.
|
|
|
|
2. Changes to Readline
|
|
|
|
1. Fixed a bug in a C preprocessor define that caused the keypad control
|
|
functions to be compiled out for all platforms except DJGPP.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.04-beta4,
|
|
and the previous version, bash-2.04-beta3.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. A couple of changes were made to the redirection to attempt to avoid
|
|
race conditions and malicious file replacement.
|
|
|
|
2. A change was made to the string evaluation code (used for command
|
|
substitution, `eval', and the `.' builtin) to fix an obscure core
|
|
dump on alpha machines.
|
|
|
|
3. A bug that caused $LINENO to be wrong when executing arithmetic for
|
|
commands was fixed.
|
|
|
|
4. A couple of memory leaks in the programmable completion code were fixed.
|
|
|
|
5. A bug that could cause a core dump by freeing memory twice during a call
|
|
to `eval' if `set -u' had been enabled and an undefined variable was
|
|
referenced was fixed.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.04-beta3,
|
|
and the previous version, bash-2.04-beta2.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. Bash should run the appropriate startup files when invoked by ssh2.
|
|
|
|
b. Fixed a bug in the parsing of conditional commands that could cause a
|
|
core dump.
|
|
|
|
c. Fixed a bug in parsing job specifications that occasionally caused
|
|
core dumps when an out-of-range job was referenced.
|
|
|
|
d. Fixed the `type' and `command' builtins to do better reporting of
|
|
commands that are not found in $PATH or the hash table.
|
|
|
|
e. Fixed a POSIX.2 compliance problem in the command builtin -- commands
|
|
are supposed to be reported as full pathnames.
|
|
|
|
f. The `echo' builtin now returns failure if a write error occurs.
|
|
|
|
g. Fixed a bug which caused the locale to not be reset correctly when
|
|
LC_ALL was unset.
|
|
|
|
h. Changed description of `getopts' in man page and reference manual to make
|
|
it clear that option characters may be characters other than letters.
|
|
|
|
i. If the shell exits while in a function, make sure that any trap on EXIT
|
|
doesn't think the function is still executing.
|
|
|
|
j. Bashbug now tries harder to find a usable editor if $EDITOR is not set,
|
|
rather than simply defaulting to `emacs'.
|
|
|
|
k. Changes to the scripts that guess and canonicalize the system type, from
|
|
the latest `automake' distribution via Debian.
|
|
|
|
l. When using named pipes for process substitution, make sure the file
|
|
descriptors opened for reading are set to non-blocking mode.
|
|
|
|
m. Fixed a bug that caused termination of pipelines that are killed by a
|
|
signal to not be reported in some cases.
|
|
|
|
n. When not in literal-history mode, shell comment lines are not added to
|
|
the history list.
|
|
|
|
o. When running in POSIX.2 mode, bash no longer performs word splitting on
|
|
the expanded value of the word supplied as the filename argument to
|
|
redirection operators.
|
|
|
|
p. The prompt string decoding code now backslash-quotes only characters that
|
|
are special within double quotes when expanding the \w and \W escape
|
|
sequences.
|
|
|
|
q. Fixed a bug in the prompt decoding code that could cause a non-interactive
|
|
shell to seg fault if `\u' was used in PS4 and the shell was in xtrace
|
|
mode.
|
|
|
|
r. Fixed a bug that caused function definitions to be printed with any
|
|
redirections that should be attached to the entire function before the
|
|
closing brace.
|
|
|
|
s. Changed the tilde expansion code for Cygwin systems to avoid creating
|
|
pathnames beginning with `//' if $HOME == `/'.
|
|
|
|
t. Fixed a couple of autoconf tests to avoid creating files with fixed names
|
|
in /tmp.
|
|
|
|
u. The `trap' and `kill' builtins now know the names of the POSIX.1b real-
|
|
time signals on systems which support them.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. Fixed a problem with the single-quote quoting function that could cause
|
|
buffer overflows.
|
|
|
|
b. Fixed a bug that caused incorrect `stat characters' to be printed if
|
|
the files being completed were in the root directory and visible-stats
|
|
was enabled.
|
|
|
|
3. New Features in Bash
|
|
|
|
a. There is a new `rbash.1' manual page, from the Debian release.
|
|
|
|
b. The `--enable-usg-echo-default' option to `configure' has been renamed to
|
|
`--enable-xpg-echo-default'. The old option is still there for backwards
|
|
compatibility.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.04-beta2,
|
|
and the previous version, bash-2.04-beta1.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. Fixed a bug that could cause pipes to be closed inappropriately in
|
|
some obscure cases.
|
|
|
|
b. Fixed a bug that caused creation of the exported environment to clobber
|
|
the current command string if there were any exported shell functions.
|
|
|
|
c. Some changes were made to reduce bash's memory usage.
|
|
|
|
d. Fixed a problem with programmable completion and filenames to be
|
|
completed containing quote characters.
|
|
|
|
e. Changed the code the removes named pipes created for the <(...) and >(...)
|
|
expansions to defer removal until after any current shell function has
|
|
finished executing.
|
|
|
|
f. Fixed a bug in `select' which caused it to not handle the `continue'
|
|
builtin correctly.
|
|
|
|
g. Autoconf tests added for cygwin32 and mingw32.
|
|
|
|
2. New Features in Bash
|
|
|
|
a. The `--with-bash-malloc' configure option replaces `--with-gnu-malloc'
|
|
(which is still there for backwards compatibility).
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.04-beta1,
|
|
and the previous version, bash-2.04-alpha1.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. Fixed a bug in the programmable completion code that occurred when
|
|
trying to complete command lines containing a `;' or `@'.
|
|
|
|
b. The file descriptor from which the shell is reading a script is now
|
|
moved to a file descriptor above the user-addressible range.
|
|
|
|
c. Changes to `printf' so that it can handle integers beginning with 0
|
|
or 0x as octal and hex, respectively.
|
|
|
|
d. Fixes to the programmable completion code so it handles nonsense like
|
|
`compgen -C xyz' gracefully.
|
|
|
|
e. The shell no longer modifies the signal handler for SIGPROF, allowing
|
|
profiling again on certain systems.
|
|
|
|
f. The shell checks for a new window size, if the user has requested it,
|
|
after a process exits due to a signal.
|
|
|
|
g. Fixed a bug with variables with null values in a program's temporary
|
|
environment and the bash getenv() replacement.
|
|
|
|
h. `declare' and the other builtins that take variable assignments as
|
|
arguments now honor `set -a' and mark modified variables for export.
|
|
|
|
i. Some changes were made for --dump-po-strings mode when writing strings
|
|
with embedded newlines.
|
|
|
|
j. The code that caches export strings from the initial environment now
|
|
duplicates the string rather than just pointing into the environment.
|
|
|
|
k. The filename completion quoting code now uses single quotes by default
|
|
if the filename being completed contains newlines, since \<newline>
|
|
has a special meaning to the parser.
|
|
|
|
l. Bash now uses typedefs bits32_t and u_bits32_t instead of int32_t and
|
|
u_int32_t, respectively to avoid conflicts on certain Unix versions.
|
|
|
|
m. Configuration changes were made for: Rhapsody, Mac OS, FreeBSD-3.x.
|
|
|
|
n. Fixed a problem with hostname-to-ip-address translation in the
|
|
/dev/(tcp|udp)/hostname/port redirection code.
|
|
|
|
o. The texinfo manual has been reorganized slightly.
|
|
|
|
p. Filename generation (globbing) range comparisons in bracket expressions
|
|
no longer use strcoll(3) even if it is available, since it has unwanted
|
|
effects in certain locales.
|
|
|
|
q. Fixed a cosmetic problem in the source that caused the shell to not
|
|
compile if DPAREN_ARITHMETIC was not defined but ARITH_FOR_COMMAND was.
|
|
|
|
r. Fixed a bug in the here-document code tripped when the file descriptor
|
|
opened to the file containing the text of the here document was the
|
|
same as a redirector specified by the user.
|
|
|
|
s. Fixed a bug where the INVERT_RETURN flag was not being set for `pipeline'
|
|
in `time ! pipeline'.
|
|
|
|
t. Fixed a bug with the `wait' builtin which manifested itself when an
|
|
interrupt was received while the shell was waiting for asynchronous
|
|
processes in a shell script.
|
|
|
|
u. Fixed the DEBUG trap code so that it has the correct value of $?.
|
|
|
|
v. Fixed a bug in the parameter pattern substitution code that could cause
|
|
the shell to attempt to free unallocated memory if the pattern started
|
|
with `/' and an expansion error occurs.
|
|
|
|
w. Fixed a bug in the positional parameter substring code that could
|
|
cause the shell to loop freeing freed memory.
|
|
|
|
x. Fixed a bug in the positional parameter pattern substitution code so
|
|
that it correctly handles null replacement strings with a pattern
|
|
string prefixed with `%' or `#'.
|
|
|
|
y. The shell no longer attempts to import functions from the environment if
|
|
started with `-n'.
|
|
|
|
z. Fixed a bug that caused `return' in a command substitution executed in
|
|
a shell function to return from the function in a subshell and continue
|
|
execution.
|
|
|
|
aa. `hash -p /pathname/with/slashes name' is no longer allowed when the shell
|
|
is restricted.
|
|
|
|
bb. The wait* job control functions now behave better if called when there
|
|
are no unwaited-for children.
|
|
|
|
cc. Command substitution no longer unconditionally disables job control in
|
|
the subshell started to run the command.
|
|
|
|
dd. A bug was fixed that occasionally caused traps to mess up the parser
|
|
state.
|
|
|
|
ee. `bashbug' now honors user headers in the mail message it sends.
|
|
|
|
ff. A bug was fixed that caused the `:p' history modifier to not print the
|
|
history expansion if the `histverify' option was set.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. Fixed a bug in the redisplay code for lines with more than 256 line
|
|
breaks.
|
|
|
|
b. A bug was fixed which caused invisible character markers to not be
|
|
stripped from the prompt string if the terminal was in no-echo mode.
|
|
|
|
c. Readline no longer tries to get the variables it needs for redisplay
|
|
from the termcap entry if the calling application has specified its
|
|
own redisplay function. Readline treats the terminal as `dumb' in
|
|
this case.
|
|
|
|
d. Fixes to the SIGWINCH code so that a multiple-line prompt with escape
|
|
sequences is redrawn correctly.
|
|
|
|
3. New Features in Bash
|
|
|
|
a. `bashbug' now accepts `--help' and `--version' options.
|
|
|
|
b. There is a new `xpg_echo' option to `shopt' that controls the behavior
|
|
of echo with respect to backslash-escaped characters at runtime.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.04-alpha1,
|
|
and the previous version, bash-2.04-devel.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. Fixed a bug that could cause core dumps when performing substring
|
|
expansion.
|
|
|
|
b. Shared object configuration changes for: Solaris, OSF/1
|
|
|
|
c. The POSIX_GLOB_LIBRARY code that uses the POSIX.2 globbing facilities
|
|
for pathname expansion now understands GLOBIGNORE.
|
|
|
|
d. The code that implements `eval' was changed to save the value of the
|
|
current prompt, so an eval in a shell function called by the programmable
|
|
completion code will not change the prompt to $PS2.
|
|
|
|
e. Restored the undocumented NON_INTERACTIVE_LOGIN_SHELLS #define to
|
|
config-top.h. If this is defined, all login shells will read the
|
|
startup files, not just interactive and non-interactive started with
|
|
the `--login' option.
|
|
|
|
f. Fixed a bug that caused the expansion code to occasionally dump core if
|
|
IFS contained characters > 128.
|
|
|
|
g. Fixed a problem with the grammar so that a newline is not required
|
|
after the `))' in the new-style arithmetic for statement; a semicolon
|
|
may be used as expected.
|
|
|
|
h. Variable indirection may now reference the shell's special variables.
|
|
|
|
i. The $'...' and $"..." constructs are now added to the history correctly
|
|
if they contain newlines and command-oriented history is enabled.
|
|
|
|
j. It is now an error to try to assign a value to a function-local copy
|
|
of a readonly shell variable (declared with the `local' builtin).
|
|
|
|
2. Changes to Readline
|
|
|
|
a. The history file code now uses O_BINARY mode when reading and writing
|
|
the history file on cygwin32.
|
|
|
|
3. New Features in Bash
|
|
|
|
a. A new programmable completion facility, with two new builtin commands:
|
|
complete and compgen.
|
|
|
|
b. configure has a new option, `--enable-progcomp', to compile in the
|
|
programmable completion features (enabled by default).
|
|
|
|
c. `shopt' has a new option, `progcomp', to enable and disable programmable
|
|
completion at runtime.
|
|
|
|
d. Unsetting HOSTFILE now clears the list of hostnames used for completion.
|
|
|
|
4. New Features in Readline
|
|
|
|
a. A new variable, rl_gnu_readline_p, always 1. The intent is that an
|
|
application can verify whether or not it is linked with the `real'
|
|
readline library or some substitute.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.04-devel,
|
|
and the previous version, bash-2.03-release.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. System-specific configuration and source changes for: Interix, Rhapsody
|
|
|
|
b. Fixed a bug in execute_cmd.c that resulted in a compile-time error if
|
|
JOB_CONTROL was not defined.
|
|
|
|
c. An obscure race condition in the trap code was fixed.
|
|
|
|
d. The string resulting from $'...' is now requoted to avoid any further
|
|
expansion.
|
|
|
|
e. The $'...' quoting syntax now allows backslash to escape a single quote,
|
|
for ksh-93 compatibility.
|
|
|
|
f. The $"..." quoting syntax now escapes backslashes and double quotes in
|
|
the translated string when displaying them with the --dump-po-strings
|
|
option.
|
|
|
|
g. `echo -e' no longer converts \' to '.
|
|
|
|
h. Fixes were made to the extended globbing code to handle embedded (...)
|
|
patterns better.
|
|
|
|
i. Some improvements were made to the code that unsets `nodelay' mode on
|
|
the file descriptor from which bash is reading input.
|
|
|
|
j. Some changes were made to the replacement termcap library for better
|
|
operation on MS-DOS.
|
|
|
|
k. Some changes were made to the tilde expansion code to handle backslash
|
|
as a pathname separator on MS-DOS.
|
|
|
|
l. The source has been reorganized a little bit -- there is now an `include'
|
|
subdirectory, and lib/posixheaders has been removed.
|
|
|
|
m. Improvements were made to the `read' builtin so that it makes many
|
|
fewer read(2) system calls.
|
|
|
|
n. The expansion of $- will include `c' and `s' when those options are
|
|
supplied at shell invocation.
|
|
|
|
o. Several improvments were made to the completion code: variable completion
|
|
now works better when there are unterminated expansions, command
|
|
completion understands quotes better, and completion now works in certain
|
|
unclosed $(... constructs.
|
|
|
|
p. The arithmetic expansion code was fixed to not need the value of a
|
|
variable being assigned a value (fixes the "ss=09; let ss=10" bug).
|
|
|
|
q. Some changes were made to make exported environment creation faster.
|
|
|
|
r. The html documentation will be installed into $(htmldir) if that variable
|
|
has a value when `make install' is run.
|
|
|
|
s. Fixed a bug that would cause the bashrc file to be sourced inappropriately
|
|
when bash is started by sshd.
|
|
|
|
t. The SSH_CLIENT environment variable is no longer auto-exported.
|
|
|
|
u. A bug that caused redirections with (...) subshells to be performed in
|
|
the wrong order was fixed.
|
|
|
|
v. A bug that occasionally caused inappropriate expansion of assignment
|
|
statements in compound array assignments was fixed.
|
|
|
|
w. The code that parses the words in a compound array assignment was
|
|
simplified considerably and should work better now.
|
|
|
|
x. Fixes to the non-job-control code in nojobs.c to make it POSIX.2-compliant
|
|
when a user attempts to retrieve the status of a terminated background
|
|
process.
|
|
|
|
y. Fixes to the `printf' builtin so that it doesn't try to expand all
|
|
backslash escape sequences in the format string before parsing it for
|
|
% format specifiers.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. The history library tries to truncate the history file only if it is a
|
|
regular file.
|
|
|
|
b. A bug that caused _rl_dispatch to address negative array indices on
|
|
systems with signed chars was fixed.
|
|
|
|
c. rl-yank-nth-arg now leaves the history position the same as when it was
|
|
called.
|
|
|
|
d. Changes to the completion code to handle MS-DOS drive-letter:pathname
|
|
filenames.
|
|
|
|
e. Completion is now case-insensitive by default on MS-DOS.
|
|
|
|
f. Fixes to the history file manipulation code for MS-DOS.
|
|
|
|
g. Readline attempts to bind the arrow keys to appropriate defaults on MS-DOS.
|
|
|
|
h. Some fixes were made to the redisplay code for better operation on MS-DOS.
|
|
|
|
i. The quoted-insert code will now insert tty special chars like ^C.
|
|
|
|
j. A bug was fixed that caused the display code to reference memory before
|
|
the start of the prompt string.
|
|
|
|
k. More support for __EMX__ (OS/2).
|
|
|
|
l. A bug was fixed in readline's signal handling that could cause infinite
|
|
recursion in signal handlers.
|
|
|
|
m. A bug was fixed that caused the point to be less than zero when rl_forward
|
|
was given a very large numeric argument.
|
|
|
|
n. The vi-mode code now gets characters via the application-settable value
|
|
of rl_getc_function rather than calling rl_getc directly.
|
|
|
|
3. New Features in Bash
|
|
|
|
a. The history builtin has a `-d offset' option to delete the history entry
|
|
at position `offset'.
|
|
|
|
b. The prompt expansion code has two new escape sequences: \j, the number of
|
|
active jobs; and \l, the basename of the shell's tty device name.
|
|
|
|
c. The `bind' builtin has a new `-x' option to bind key sequences to shell
|
|
commands.
|
|
|
|
d. There is a new shell option, no_empty_command_completion, which, when
|
|
enabled, disables command completion when TAB is typed on an empty line.
|
|
|
|
e. The `help' builtin has a `-s' option to just print a builtin's usage
|
|
synopsys.
|
|
|
|
f. There are several new arithmetic operators: id++, id-- (variable
|
|
post-increment/decrement), ++id, --id (variabl pre-increment/decrement),
|
|
expr1 , expr2 (comma operator).
|
|
|
|
g. There is a new ksh-93 style arithmetic for command:
|
|
for ((expr1 ; expr2; expr3 )); do list; done
|
|
|
|
h. The `read' builtin has a number of new options:
|
|
-t timeout only wait timeout seconds for input
|
|
-n nchars only read nchars from input instead of a full line
|
|
-d delim read until delim rather than newline
|
|
-s don't echo input chars as they are read
|
|
|
|
i. The redirection code now handles several filenames specially:
|
|
/dev/fd/N, /dev/stdin, /dev/stdout, and /dev/stderr, whether or
|
|
not they are present in the file system.
|
|
|
|
j. The redirection code now recognizes pathnames of the form
|
|
/dev/tcp/host/port and /dev/udp/host/port, and tries to open a socket
|
|
of the appropriate type to the specified port on the specified host.
|
|
|
|
k. The ksh-93 ${!prefix*} expansion, which expands to the names of all
|
|
shell variables whose names start with prefix, has been implemented.
|
|
|
|
l. There is a new dynamic variable, FUNCNAME, which expands to the name of
|
|
a currently-executing function. Assignments to FUNCNAME have no effect.
|
|
|
|
m. The GROUPS variable is no longer readonly; assignments to it are silently
|
|
discarded. This means it can be unset.
|
|
|
|
4. New Features in Readline
|
|
|
|
a. Parentheses matching is now always compiled into readline, and enabled
|
|
or disabled when the value of the `blink-matching-paren' variable is
|
|
changed.
|
|
|
|
b. MS-DOS systems now use ~/_inputrc as the last-ditch inputrc filename.
|
|
|
|
c. MS-DOS systems now use ~/_history as the default history file.
|
|
|
|
d. history-search-{forward,backward} now leave the point at the end of the
|
|
line when the string to search for is empty, like
|
|
{reverse,forward}-search-history.
|
|
|
|
e. history-search-{forward,backward} now leave the last history line found
|
|
in the readline buffer if the second or subsequent search fails.
|
|
|
|
f. New function for use by applications: rl_on_new_line_with_prompt, used
|
|
when an application displays the prompt itself before calling readline().
|
|
|
|
g. New variable for use by applications: rl_already_prompted. An application
|
|
that displays the prompt itself before calling readline() must set this to
|
|
a non-zero value.
|
|
|
|
------------------------------------------------------------------------------
|
|
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
|
|
CONF_MACHTYPE rather than MACHTYPE.
|
|
|
|
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
|
|
performed.
|
|
|
|
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
|
|
string.
|
|
|
|
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
|
|
list.
|
|
|
|
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/Makefile.in so that configuring the shell
|
|
with `--enable-profiling' works right and builtins/mkbuiltins is
|
|
generated.
|
|
|
|
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
|
|
milliseconds.
|
|
|
|
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
|
|
signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGALRM, SIGTSTP,
|
|
SIGTTIN, and SIGTTOU;
|
|
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.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.02.1-release,
|
|
and the previous version, bash-2.02-release.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. A bug that caused the bash readline support to not compile unless aliases
|
|
and csh-style history were configured into the shell was fixed.
|
|
|
|
b. Fixed a bug that could cause a core dump when here documents contained
|
|
more than 1000 characters.
|
|
|
|
c. Fixed a bug that caused a CDPATH entry of "" to not be treated the same
|
|
as the current directory when in POSIX mode.
|
|
|
|
d. Fixed an alignment problem with the memory returned by the bash malloc,
|
|
so returned memory is now 64-bit aligned.
|
|
|
|
e. Fixed a bug that caused command substitutions executed within pipelines
|
|
to put the terminal in the wrong process group.
|
|
|
|
f. Fixes to support/config.sub for: alphas, SCO Open Server and Open Desktop,
|
|
Unixware 2, and Unixware 7.
|
|
|
|
g. Fixes to the pattern matching code to make it work correctly for eight-bit
|
|
characters.
|
|
|
|
h. Fixed a problem that occasionally caused the shell to display the wrong
|
|
value for the new working directory when changing to a directory found
|
|
in $CDPATH when in physical mode.
|
|
|
|
i. Fixed a bug that caused core dumps when using conditional commands in
|
|
shell functions.
|
|
|
|
j. Fixed a bug that caused the printf builtin to loop forever if the format
|
|
string did not consume any of the arguments.
|
|
|
|
k. Fixed a bug in the parameter expansion code that caused "$@" to be
|
|
incorrectly split if $IFS did not contain a space character.
|
|
|
|
l. Fixed a bug that could cause a core dump when completing hostnames if
|
|
the number of matching hostnames was an exact multiple of 16.
|
|
|
|
m. Fixed a bug that caused the shell to fork too early when a command
|
|
such as `%2 &' was given.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. Fixed a problem with redisplay that showed up when the prompt string was
|
|
longer than the screen width and the prompt contained invisible characters.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.02-release,
|
|
and the previous version, bash-2.02-beta2.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. A bug was fixed that caused the terminal process group to be set
|
|
incorrectly when performing command substitution of builtins in a
|
|
pipeline.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.02-beta2,
|
|
and the previous version, bash-2.02-beta1.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. Attempting to `wait' for stopped jobs now generates a warning message.
|
|
|
|
b. Pipelines which exit due to SIGPIPE in non-interactive shells are now
|
|
not reported if the shell is compiled -DDONT_REPORT_SIGPIPE.
|
|
|
|
c. Some changes were made to builtins/psize.sh and support/bashbug.sh to
|
|
attempt to avoid some /tmp file races and surreptitious file
|
|
substitutions.
|
|
|
|
d. Fixed a bug that caused the shell not to compile if configured with
|
|
dparen arithmetic but without aliases.
|
|
|
|
e. Fixed a bug that caused the input stream to be switched when assigning
|
|
empty arrays with `bash -c'.
|
|
|
|
f. A bug was fixed in the readline expansion glue code that caused bash to
|
|
dump core when expanding lines with an unclosed single quote.
|
|
|
|
g. A fix was made to the `cd' builtin so that using a non-empty directory
|
|
from $CDPATH results in an absolute pathname of the new current working
|
|
directory to be displayed after the current directory is changed.
|
|
|
|
h. Fixed a bug in the variable assignment code that caused the shell to
|
|
dump core when referencing an unset variable with `set -u' enabled in
|
|
an assignment statement preceding a command.
|
|
|
|
i. Fixed a bug in the exit trap code that caused reserved words to not be
|
|
recognized under certain circumstances.
|
|
|
|
j. Fixed a bug in the parameter pattern substitution code so that quote
|
|
removal is performed.
|
|
|
|
k. The shell should now configure correctly on Apple Rhapsody systems.
|
|
|
|
l. The `kill' builtin now prints a usage message if it is not passed any
|
|
arguments.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.02-beta1,
|
|
and the previous version, bash-2.02-alpha1.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. A few compilation bugs were fixed in the new extended globbing code.
|
|
|
|
b. Executing arithmetic commands now sets the command name to `((' so
|
|
error messages look right.
|
|
|
|
c. Fixed some build problems with various configuration options.
|
|
|
|
d. The `printf' builtin now aborts immediately if an illegal format
|
|
character is encountered.
|
|
|
|
e. The code that creates here-documents now behaves better if the file it's
|
|
trying to create already exists for some reason.
|
|
|
|
f. Fixed a problem with the extended globbing code that made patterns like
|
|
`x+*' expand incorrectly.
|
|
|
|
g. The prompt string expansion code no longer quotes tildes with backslashes.
|
|
|
|
h. The bash getcwd() implementation in lib/sh/getcwd.c now behaves better in
|
|
the presence of lstat(2) failures.
|
|
|
|
i. Fixed a bug with strsub() that caused core dumps when executing `fc -s'.
|
|
|
|
j. The mail checking code now ensures that it has a valid default mailpath.
|
|
|
|
k. A bug was fixed that caused local variables to be unset inappropriately
|
|
when sourcing a script from within another sourced script.
|
|
|
|
l. A bug was fixed in the history saving code so that functions are saved
|
|
in the history list correctly if `cmdhist' is enabled, but `lithist'
|
|
is not.
|
|
|
|
m. A bug was fixed that caused printf overflows when displaying error
|
|
messages.
|
|
|
|
n. It should be easier to build the loadble builtins in examples/loadables,
|
|
though some manual editing of the generated Makefile is still required.
|
|
|
|
o. The user's primary group is now always ${GROUPS[0]}.
|
|
|
|
p. Some updates were made to support/config.guess from the GNU master copy.
|
|
|
|
q. Some changes were made to the autoconf support for Solaris 2.6 large
|
|
files.
|
|
|
|
r. The `command' builtins now does the right thing when confstr(3) cannot
|
|
find a value for _CS_PATH.
|
|
|
|
s. Extended globbing expressions like `*.!(c)' are not history expanded if
|
|
`extglob' is enabled.
|
|
|
|
t. Using the `-P' option to `cd' will force the value that is assigned to
|
|
PWD to not contain any symbolic links.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. The code that prints completion listings now behaves better if one or
|
|
more of the filenames contains non-printable characters.
|
|
|
|
b. The time delay when showing matching parentheses is now 0.5 seconds.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.02-alpha1,
|
|
and the previous version, bash-2.01.1-release.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. OS-specific configuration changes for: BSD/OS 3.x, Minix 2.x,
|
|
Solaris 2.6, SINIX SVR4.
|
|
|
|
b. Changes were made to the generated `info' files so that `install-info'
|
|
works correctly.
|
|
|
|
c. PWD is now auto-exported.
|
|
|
|
d. A fix was made to the pipeline code to make sure that the shell forks
|
|
to execute simple commands consisting solely of assignment statements.
|
|
|
|
e. Changes to the test suite for systems with 14-character filenames.
|
|
|
|
f. The default sizes of some internal hash tables have been made smaller
|
|
to reduce the shell's memory footprint.
|
|
|
|
g. The `((...))' arithmetic command is now executed directly instead of
|
|
being translated into `let "..."'.
|
|
|
|
h. Fixes were made to the expansion code so that "$*", "$@", "${array[@]}",
|
|
and "${array[@]}" expand correctly when IFS does not contain a space
|
|
character, is unset, or is set to NULL.
|
|
|
|
i. The indirect expansion code (${!var}) was changed so that the only
|
|
valid values of `var' are variable names, positional parameters, `#',
|
|
`@', and `*'.
|
|
|
|
j. An arithmetic expression error in a $((...)) expansion now causes a
|
|
non-interactive shell running in posix mode to exit.
|
|
|
|
k. Compound array assignment now splits the words within the parentheses
|
|
on shell metacharacters like the parser would before expansing them
|
|
and performing the assignment. This is for compatibility with ksh-93.
|
|
|
|
l. The internal shell backslash-quoting code (used in the output of `set'
|
|
and completion) now quotes tildes if they appear at the start of the
|
|
string or after a `=' or `:'.
|
|
|
|
m. A couple of bugs with `shopt -o' were fixed.
|
|
|
|
n. `bash +o' now displays the same output as `set +o' before starting an
|
|
interactive shell.
|
|
|
|
o. A bug that caused command substitution and the `eval' builtin to
|
|
occasionally free memory twice when an error was encountered was fixed.
|
|
|
|
p. The filename globbing code no longer requires read permission for a
|
|
directory when the filename to be matched does not contain any globbing
|
|
characters, as POSIX.2 specifies.
|
|
|
|
q. A bug was fixed so that the job containing the last asynchronous
|
|
process is not removed from the job table until a `wait' is executed
|
|
for that process or another asynchronous process is started. This
|
|
satisfies a POSIX.2 requirement.
|
|
|
|
r. A `select' bug was fixed so that a non-numeric user response is treated
|
|
the same as a numeric response that is out of range.
|
|
|
|
s. The shell no longer parses the value of SHELLOPTS from the environment
|
|
if it is restricted, running setuid, or running in `privileged mode'.
|
|
|
|
t. Fixes were made to enable large file support on systems such as
|
|
Solaris 2.6, where the size of a file may be larger than can be held
|
|
in an `int'.
|
|
|
|
u. The filename hashing code was fixed to not add `./' to the beginning of
|
|
filenames which already begin with `./'.
|
|
|
|
v. The configure script was changed so that the GNU termcap library is not
|
|
compiled in if `prefer-curses' has been specified.
|
|
|
|
w. HISTCONTROL and HISTIGNORE are no longer applied to the second and
|
|
subsequent lines of a multi-line command.
|
|
|
|
x. A fix was made to `disown' so that it does a better job of catching
|
|
out-of-range jobs.
|
|
|
|
y. Non-interactive shells no longer report the status of processes terminated
|
|
due to SIGINT, even if the standard output is a terminal.
|
|
|
|
z. A bug that caused the output of `jobs' to have extra carriage returns
|
|
was fixed.
|
|
|
|
aa. A bug that caused PIPESTATUS to not be set when builtins or shell
|
|
functions were executed in the foreground was fixed.
|
|
|
|
bb. Bash now attempts to detect when it is being run by sshd, and treats
|
|
that case identically to being run by rshd.
|
|
|
|
cc. A bug that caused `set -a' to export SHELLOPTS when one of the shell
|
|
options was changed was fixed.
|
|
|
|
dd. The `kill' builtin now disallows empty or missing process id arguments
|
|
instead of treating them as identical to `0', which means the current
|
|
process.
|
|
|
|
ee. `var=value declare -x var' now behaves identically to
|
|
`var=value export var'. Similarly for `var=value declare -r var' and
|
|
`var=value readonly var'.
|
|
|
|
ff. A few memory leaks were fixed.
|
|
|
|
gg. `alias' and `unalias' now print error messages when passed an argument
|
|
that is not an alias for printing or deletion, even when the shell is
|
|
not interactive, as POSIX.2 specifies.
|
|
|
|
hh. `alias' and `alias -p' now return a status of 0 when no aliases are
|
|
defined, as POSIX.2 specifes.
|
|
|
|
ii. `cd -' now prints the pathname of the new working directory if the shell
|
|
is interactive.
|
|
|
|
jj. A fix was made so that the code that binds $PWD now copes with getcwd()
|
|
returning NULL.
|
|
|
|
kk. `unset' now checks whether or not a function name it's trying to unset
|
|
is a valid shell identifier only when the shell is running in posix mode.
|
|
|
|
ll. A change was made to the code that generates filenames for here documents
|
|
to make them less prone to name collisions.
|
|
|
|
mm. The parser was changed so that `time' is recognized as a reserved word
|
|
only at the beginning of a pipeline.
|
|
|
|
nn. The pathname canonicalization code was changed so that `//' is converted
|
|
into `/', but all other pathnames beginning with `//' are left alone, as
|
|
POSIX.2 specifies.
|
|
|
|
oo. The `logout' builtin will no longer exit a non-interactive non-login
|
|
shell.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. Fixed a problem in the readline test program rltest.c that caused a core
|
|
dump.
|
|
|
|
b. The code that handles parser directives in inputrc files now displays
|
|
more error messages.
|
|
|
|
c. The history expansion code was fixed so that the appearance of the
|
|
history comment character at the beginning of a word inhibits history
|
|
expansion for that word and the rest of the input line.
|
|
|
|
3. New Features in Bash
|
|
|
|
a. A new version of malloc, based on the older GNU malloc, that has many
|
|
changes, is more page-based, is more conservative with memory usage,
|
|
and does not `orphan' large blocks when they are freed.
|
|
|
|
b. A new version of gmalloc, based on the old GLIBC malloc, with many
|
|
changes and range checking included by default.
|
|
|
|
c. A new implementation of fnmatch(3) that includes full POSIX.2 Basic
|
|
Regular Expression matching, including character classes, collating
|
|
symbols, equivalence classes, and support for case-insensitive pattern
|
|
matching.
|
|
|
|
d. ksh-88 egrep-style extended pattern matching ([@+*?!](patlist)) has been
|
|
implemented, controlled by a new `shopt' option, `extglob'.
|
|
|
|
e. There is a new ksh-like `[[' compound command, which implements
|
|
extended `test' functionality.
|
|
|
|
f. There is a new `printf' builtin, implemented according to the POSIX.2
|
|
specification.
|
|
|
|
g. There is a new feature for command substitution: $(< filename) now expands
|
|
to the contents of `filename', with any trailing newlines removed
|
|
(equivalent to $(cat filename)).
|
|
|
|
h. There are new tilde prefixes which expand to directories from the
|
|
directory stack.
|
|
|
|
i. There is a new `**' arithmetic operator to do exponentiation.
|
|
|
|
j. There are new configuration options to control how bash is linked:
|
|
`--enable-profiling', to allow bash to be profiled with gprof, and
|
|
`--enable-static-link', to allow bash to be linked statically.
|
|
|
|
k. There is a new configuration option, `--enable-cond-command', which
|
|
controls whether or not the `[[' command is included. It is on by
|
|
default.
|
|
|
|
l. There is a new configuration option, `--enable-extended-glob', which
|
|
controls whether or not the ksh extended globbing feature is included.
|
|
It is enabled by default.
|
|
|
|
m. There is a new configuration #define in config.h.top that, when enabled,
|
|
will cause all login shells to source /etc/profile and one of the user-
|
|
specific login shell startup files, whether or not the shell is
|
|
interactive.
|
|
|
|
n. There is a new invocation option, `--dump-po-strings', to dump
|
|
a shell script's translatable strings ($"...") in GNU `po' format.
|
|
|
|
o. There is a new `shopt' option, `nocaseglob', to enable case-insensitive
|
|
pattern matching when globbing filenames and using the `case' construct.
|
|
|
|
p. There is a new `shopt' option, `huponexit', which, when enabled, causes
|
|
the shell to send SIGHUP to all jobs when an interactive login shell
|
|
exits.
|
|
|
|
q. `bind' has a new `-u' option, which takes a readline function name as an
|
|
argument and unbinds all key sequences bound to that function in a
|
|
specified keymap.
|
|
|
|
r. `disown' now has `-a' and `-r' options, to limit operation to all jobs
|
|
and running jobs, respectively.
|
|
|
|
s. The `shopt' `-p' option now causes output to be displayed in a reusable
|
|
format.
|
|
|
|
t. `test' has a new `-N' option, which returns true if the filename argument
|
|
has been modified since it was last accessed.
|
|
|
|
u. `umask' now has a `-p' option to print output in a reusable format.
|
|
|
|
v. A new escape sequence, `\xNNN', has been added to the `echo -e' and $'...'
|
|
translation code. It expands to the character whose ascii code is NNN
|
|
in hexadecimal.
|
|
|
|
w. The prompt string expansion code has a new `\r' escape sequence.
|
|
|
|
x. The shell may now be cross-compiled for the CYGWIN32 environment on
|
|
a Unix machine.
|
|
|
|
4. New Features in Readline
|
|
|
|
a. There is now an option for `iterative' yank-last-arg handline, so a user
|
|
can keep entering `M-.', yanking the last argument of successive history
|
|
lines.
|
|
|
|
b. New variable, `print-completions-horizontally', which causes completion
|
|
matches to be displayed across the screen (like `ls -x') rather than up
|
|
and down the screen (like `ls').
|
|
|
|
c. New variable, `completion-ignore-case', which causes filename completion
|
|
and matching to be performed case-insensitively.
|
|
|
|
d. There is a new bindable command, `magic-space', which causes history
|
|
expansion to be performed on the current readline buffer and a space to
|
|
be inserted into the result.
|
|
|
|
e. There is a new bindable command, `menu-complete', which enables tcsh-like
|
|
menu completion (successive executions of menu-complete insert a single
|
|
completion match, cycling through the list of possible completions).
|
|
|
|
f. There is a new bindable command, `paste-from-clipboard', for use on Win32
|
|
systems, to insert the text from the Win32 clipboard into the editing
|
|
buffer.
|
|
|
|
g. The key sequence translation code now understands printf-style backslash
|
|
escape sequences, including \NNN octal escapes. These escape sequences
|
|
may be used in key sequence definitions or macro values.
|
|
|
|
h. An `$include' inputrc file parser directive has been added.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.01.1-release,
|
|
and the previous version, bash-2.01-release.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. The select command was fixed to check the validity of the user's
|
|
input more strenuously.
|
|
|
|
b. A bug was fixed that prevented `time' from timing commands correctly
|
|
when supplied as an argument to `bash -c'.
|
|
|
|
c. A fix was made to the mail checking code to keep from adding the same
|
|
mail file to the list of files to check multiple times when parsing
|
|
$MAILPATH.
|
|
|
|
d. Fixed an off-by-one error in the tilde expansion library.
|
|
|
|
e. When using the compound array assignment syntax, the old value of
|
|
the array is cleared before assigning the new value.
|
|
|
|
f. Fixed a bug that could cause a core dump when a trap handler was reset
|
|
to the default in the trap command associated with that signal.
|
|
|
|
g. Fixed a bug in the locale code that occurred when assigning a value
|
|
to LC_ALL.
|
|
|
|
h. A change was made to the parser so that words of the form xxx=(...)
|
|
are not considered compound assignment statements unless there are
|
|
characters before the `='.
|
|
|
|
i. A fix was made to the command tracing code to correctly quote each
|
|
word of output.
|
|
|
|
j. Some changes were made to the bash-specific autoconf tests to make them
|
|
more portable.
|
|
|
|
k. Completion of words with globbing characters now correctly quotes the
|
|
result.
|
|
|
|
l. The directory /var/spool/mail is now preferred to /usr/spool/mail when
|
|
configure is deciding on the default mail directory.
|
|
|
|
m. The brace completion code was fixed to not quote the `{' and `}'.
|
|
|
|
n. Some fixes were made to make $RANDOM more random in subshells.
|
|
|
|
o. System-specific changes were made to configure for: SVR4.2
|
|
|
|
p. Changes were made so that completion of words containing globbing chars
|
|
substitutes the result only if a single filename was matched.
|
|
|
|
q. The window size is now recomputed after a job is stopped with SIGTSTP if
|
|
the user has set `checkwinsize' with `shopt'.
|
|
|
|
r. When doing substring expansion, out-of-range substring specifiers now
|
|
cause nothing to be substituted rather than an expansion error.
|
|
|
|
s. A fix was made so that you can no longer trap `SIGEXIT' or `SIGDEBUG' --
|
|
only `EXIT' and `DEBUG' are accepted.
|
|
|
|
t. The display of trapped signals now uses the signal number if signals
|
|
for which bash does not know the name are trapped.
|
|
|
|
u. A fix was made so that `bash -r' does not turn on restricted mode until
|
|
after the startup files are executed.
|
|
|
|
v. A bug was fixed that occasionally caused a core dump when a variable
|
|
found in the temporary environment of export/declare/readonly had a
|
|
null value.
|
|
|
|
w. A bug that occasionally caused unallocated memory to be passed to free()
|
|
when doing arithmetic substitution was fixed.
|
|
|
|
x. A bug that caused a buffer overrun when expanding a prompt string
|
|
containing `\w' and ${#PWD} exceeded PATH_MAX was fixed.
|
|
|
|
y. A problem with the completion code that occasionally caused it to
|
|
refer to a character before the beginning of the readline line buffer
|
|
was fixed.
|
|
|
|
z. A bug was fixed so that the `read' builtin restarts reads when
|
|
interrupted by signals other than SIGINT.
|
|
|
|
aa. Fixed a bug that caused a command to be freed twice when there was
|
|
an evaluation error in the `eval' command.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. Added a missing `extern' to a declaration in readline.h that kept
|
|
readline from compiling cleanly on some systems.
|
|
|
|
b. The history file is now opened with mode 0600 when it is written for
|
|
better security.
|
|
|
|
c. Changes were made to the SIGWINCH handling code so that prompt redisplay
|
|
is done better.
|
|
|
|
d. ^G now interrupts incremental searches correctly.
|
|
|
|
e. A bug that caused a core dump when the set of characters to be quoted
|
|
when completing words was empty was fixed.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.01-release,
|
|
and the previous version, bash-2.01-beta2.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. The `distclean' target should remove the `printenv' executable if it
|
|
has been created.
|
|
|
|
b. The test suite was changed slightly to ensure that the error messages
|
|
are printed in English.
|
|
|
|
c. A bug that caused the shell to dump core when a filename containing a
|
|
`/' was passed to `hash' was fixed.
|
|
|
|
d. Pathname canonicalization now leaves a leading `//' intact, as POSIX.1
|
|
requires.
|
|
|
|
e. A memory leak when completing commands was fixed.
|
|
|
|
f. A memory leak that occurred when checking the hash table for commands
|
|
with relative paths was fixed.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.01-beta2,
|
|
and the previous version, bash-2.01-beta1.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. The `ulimit' builtin translates RLIM_INFINITY to the hard limit only if
|
|
the current (soft) limit is less than or equal to the hard limit.
|
|
|
|
b. Fixed a bug that caused the bash emulation of strcasecmp to produce
|
|
incorrect results.
|
|
|
|
c. A bug that caused memory to be freed twice when a trap handler resets
|
|
the trap more than once was fixed.
|
|
|
|
d. A bug that caused machines where sizeof (pointer) > sizeof (int) to
|
|
fail (and possibly dump core) when trying to unwind-protect a null
|
|
pointer was fixed.
|
|
|
|
e. The startup files should not be run with job control enabled. This fix
|
|
allows SIGINT to once again interrupt startup file execution.
|
|
|
|
f. Bash should not change the SIGPROF handler if it is set to something
|
|
other than SIG_DFL.
|
|
|
|
g. The completion code that provides bash-specific completions for readline
|
|
now quotes characters that the readline code would treat as word break
|
|
characters if they appear in a file name.
|
|
|
|
h. The completion code now correctly quotes filenames containing a `!',
|
|
even if the user attempted to use double quotes when attempting
|
|
completion.
|
|
|
|
i. A bug that caused the shell to dump core when `disown' was called without
|
|
arguments and there was no current job was fixed.
|
|
|
|
j. A construct like $((foo);bar) is now processed as a command substitution
|
|
rather than as a bad arithmetic substitution.
|
|
|
|
k. A couple of bugs that caused `fc' to not obey the `cmdhist' and `lithist'
|
|
shell options when editing and re-executing a series of commands were
|
|
fixed.
|
|
|
|
l. A fix was made to the grammar -- the list of commands between `do' and
|
|
`done' in the body of a `for' command should be treated the same as a
|
|
while loop.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. A couple of bugs that caused the history search functions to attempt to
|
|
free a NULL pointer were fixed.
|
|
|
|
b. If the C library provides setlocale(3), readline does not need to look
|
|
at various environment variables to decide whether or not to go into
|
|
eight-bit mode automatically -- just check whether the current locale
|
|
is not `C' or `POSIX'.
|
|
|
|
c. If the filename completion function finds that a directory was not closed
|
|
by a previous (interrupted) completion, it closes the directory with
|
|
closedir().
|
|
|
|
3. New Features in Bash
|
|
|
|
a. New bindable readline commands: history-and-alias-expand-line and
|
|
alias-expand-line. The code was always in there, there was just no
|
|
way to execute it.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.01-beta1,
|
|
and the previous version, bash-2.01-alpha1.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. Fixed a problem that could cause file descriptors used for process
|
|
substitution to conflict with those used explicitly in redirections.
|
|
|
|
b. Made it easier to regenerate configure if the user changes configure.in.
|
|
|
|
c. ${GROUPS[0]} should always be the primary group, even on systems without
|
|
multiple groups.
|
|
|
|
d. Spelling correction is no longer enabled by default.
|
|
|
|
e. Fixes to quoting problems in `bashbug'.
|
|
|
|
f. OS-specific configuration changes were made for: Irix 6.
|
|
|
|
g. OS-specific code changes were made for: QNX.
|
|
|
|
h. A more meaningful message is now printed when the file in /tmp for a
|
|
here document cannot be created.
|
|
|
|
i. Many changes to the shell's variable initialization code to speed
|
|
non-interactive startup.
|
|
|
|
j. Changes to the non-job-control code so that it does not try to open
|
|
/dev/tty.
|
|
|
|
k. The output of `set' and `export' is once again sorted, as POSIX wants.
|
|
|
|
l. Fixed a problem caused by a recursive call reparsing the value of
|
|
$SHELLOPTS.
|
|
|
|
m. The tilde code no longer calls getenv() when it's compiled as part of
|
|
the shell, which should eliminate problems on systems that cannot
|
|
redefine getenv(), like the NeXT OS.
|
|
|
|
n. Fixed a problem that caused `bash -o' or `bash +o' to not list all
|
|
the shell options.
|
|
|
|
o. Fixed `ulimit' to convert RLIM_INFINITY to the appropriate hard limit
|
|
only if the hard limit is greater than the current (soft) limit.
|
|
|
|
p. Fixed a problem that arose when building bash in a different directory
|
|
than the source and y.tab.[ch] were remade with something other than
|
|
bison. This came up most often on NetBSD.
|
|
|
|
q. Fixed a problem with completion -- it thought that `pwd`/[TAB] indicated
|
|
an unfinished command completion (`/), which generated errors.
|
|
|
|
r. The bash special tilde expansions (~-, ~+) are now attempted before
|
|
calling the standard tilde expansion code, which should eliminate the
|
|
problems people have been seeing with this on Solaris 2.5.1.
|
|
|
|
s. Added support for <stdarg.h> to places where it was missing.
|
|
|
|
t. Changed the code that reads the output of a command substitution to not
|
|
go through stdio. This reduces the memory requirements and is faster.
|
|
|
|
u. A number of changes to speed up export environment creation were made.
|
|
|
|
v. A number of memory leaks were fixed as the result of running the test
|
|
scripts through Purify.
|
|
|
|
w. Fixed a bug that caused subshells forked to interpret executable
|
|
scripts without a leading `#!' to not reinitialize the values of
|
|
the shell options.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. History library has less `#ifdef SHELL' code -- abstracted stuff out
|
|
into application-specific function hooks.
|
|
|
|
b. Readline no longer calls getenv() if it's compiled as part of the shell,
|
|
which should eliminate problems on systems that cannot redefine getenv(),
|
|
like the NeXT OS.
|
|
|
|
c. Fixed translation of ESC when `untranslating' macro values.
|
|
|
|
d. The region kill operation now fixes the mark if it ends up beyond the
|
|
boundaries of the line after the region is deleted.
|
|
|
|
3. New Features in Bash
|
|
|
|
a. New argument for `configure': `--with-curses'. This can be used to
|
|
override the selection of the termcap library on systems where it is
|
|
deficient.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.01-alpha1,
|
|
and the previous version, bash-2.0-release.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. System-specific configuration changes for: FreeBSD, SunOS4, Irix,
|
|
MachTen, QNX 4.2, Harris Night Hawk, SunOS5.
|
|
|
|
b. System-specific code changes were made for: Linux, 4.4 BSD, QNX 4.2,
|
|
HP-UX, AIX 4.2.
|
|
|
|
c. A bug that caused the exec builtin to fail because the full pathname of
|
|
the command could not be found was fixed.
|
|
|
|
d. The code that performs output redirections is now more resistant to
|
|
race conditions and possible security exploits.
|
|
|
|
e. A bug that caused the shell to dump core when performing pattern
|
|
substitutions on variable values was fixed.
|
|
|
|
f. More hosts are now recognized by the auto-configuration mechanism
|
|
(OpenBSD, QNX, others).
|
|
|
|
g. Assignments to read-only variables that attempt to convert them to
|
|
arrays are now errors.
|
|
|
|
h. A bug that caused shell scripts using array assignments in POSIX mode
|
|
to exit after the assignment was performed was fixed.
|
|
|
|
i. The substring expansion code is now more careful about running off the
|
|
ends of the expanded variable value.
|
|
|
|
j. A bug that caused completion to fail if a backquoted command substitution
|
|
appeared anywhere on the line was fixed.
|
|
|
|
k. The `source' builtin no longer turns off history if it has been enabled
|
|
in a non-interactive shell.
|
|
|
|
l. A bug that caused the shell to crash when `disown' was given a pid
|
|
instead of a job number was fixed.
|
|
|
|
m. The `cd' spelling correction code will not try to change to `.' if no
|
|
directory entries match a single-character argument.
|
|
|
|
n. A bad variable name supplied to `declare', `export', or `readonly' no
|
|
longer causes a non-interactive shell in POSIX mode to exit.
|
|
|
|
o. Some fixes were made to the test suite to handle peculiarities of
|
|
various Unix versions.
|
|
|
|
p. The bash completion code now quotes characters that readline would
|
|
treat as word breaks for completion but are not shell metacharacters.
|
|
|
|
q. Bad options supplied at invocation now cause a usage message to be
|
|
displayed.
|
|
|
|
r. Fixes were made to the code that handles DEBUG traps so that the trap
|
|
string is not freed inappropriately.
|
|
|
|
s. Some changes were made to the bash debugger in examples/bashdb -- it
|
|
should be closer to working now.
|
|
|
|
t. A problem that caused the default filename used for mail checking to be
|
|
wrong was fixed.
|
|
|
|
u. A fix was made to the `echo' builtin so that NUL characters printed with
|
|
`echo -e' do not cause the output to be truncated.
|
|
|
|
v. A fix was made to the job control code so that the shell behaves better
|
|
when monitor mode is enabled in a non-interactive shell.
|
|
|
|
w. Bash no longer catches all of the terminating signals in a non-
|
|
interactive shell until a trap is set on EXIT, which should result in
|
|
quicker startup.
|
|
|
|
x. A fix was made to the command timing code so that `time' can be used in
|
|
a loop.
|
|
|
|
y. A fix was made to the parser so that `((cmd); cmd2)' is now parsed as
|
|
a nested subshell rather than strictly as an (erroneous) arithmetic
|
|
command.
|
|
|
|
z. A fix was made to the globbing code so that it correctly matches quoted
|
|
filenames beginning with a `.'.
|
|
|
|
aa. A bug in `fc' that caused some multi-line commands to not be stored as
|
|
one command in the history when they were re-executed after editing
|
|
(with `fc -e') was fixed.
|
|
|
|
bb. The `ulimit' builtin now attempts to catch some classes of integer
|
|
overflows.
|
|
|
|
cc. The command-oriented-history code no longer attempts to add `;'
|
|
inappropriately when a newline appears while reading a $(...) command
|
|
substitution.
|
|
|
|
dd. A bug that caused the shell to dump core when `help --' was executed
|
|
was fixed.
|
|
|
|
ee. A bug that caused the shell to crash when an unset variable appeared
|
|
in the body of a here document after `set -u' had been executed was
|
|
fixed.
|
|
|
|
ff. Implicit input redirections from /dev/null for asynchronous commands
|
|
are now handled better.
|
|
|
|
gg. A bug that caused the shell to fail to compile when configured with
|
|
`--disable-readline' was fixed.
|
|
|
|
hh. The globbing code should now be interruptible.
|
|
|
|
ii. Bash now notices when the `kill' builtin is used to send SIGCONT to a
|
|
stopped job and adjusts the data structures accordingly, as if `bg' had
|
|
been executed instead.
|
|
|
|
jj. A bug that caused the shell to crash when mixing calls to `getopts'
|
|
and `shift' on the same set of positional parameters was fixed.
|
|
|
|
kk. The command printing code now preserves the `-p' flag to `time'.
|
|
|
|
ll. The command printing code now handles here documents better when there
|
|
are other redirections associated with the command.
|
|
|
|
mm. The special glibc environment variable (NNN_GNU_nonoption_argv_flags_)
|
|
is no longer placed into the environment of executed commands -- users
|
|
of glibc had too many problems with it.
|
|
|
|
nn. Reorganized the code that generates signames.h. The signal_names list
|
|
is now more complete but may be slightly different (SIGABRT is favored
|
|
over SIGIOT, for example). The preferred signal names are those
|
|
listed in the POSIX.2 standard.
|
|
|
|
oo. `bashbug' now uses a filename shorter than 14 characters for its
|
|
temporary file, and asks for confirmation before sending the bug
|
|
report.
|
|
|
|
pp. A bug that caused TAB completion in vi editing mode to not be turned
|
|
off when `set -o posix' was executed or back on when `set +o posix'
|
|
was executed was fixed.
|
|
|
|
qq. A bug in the brace expansion code that caused brace expansions appearing
|
|
in new-style $(...) command substitutions to be inappropriately expanded
|
|
was fixed.
|
|
|
|
rr. A bug in the readline hook shell-expand-line that could cause memory to
|
|
be inappropriately freed was fixed.
|
|
|
|
ss. A bug that caused some arithmetic expressions containing `&&' and `||'
|
|
to be parsed with the wrong precedence has been fixed.
|
|
|
|
tt. References to unbound variables after `set -u' has been executed now
|
|
cause the shell to exit immediately, as they should.
|
|
|
|
uu. A bug that caused the shell to exit inappropriately when `set -e' had
|
|
been executed and a command's return status was being inverted with the
|
|
`!' reserved word was fixed.
|
|
|
|
vv. A bug that could occasionally cause the shell to crash with a
|
|
divide-by-zero error when timing a command was fixed.
|
|
|
|
ww. A bug that caused parameter pattern substitution to leave stray
|
|
backslashes in the replacement string when the expression is in
|
|
double quotes was fixed.
|
|
|
|
xx. The `break' and `continue' builtins now break out of all loops when an
|
|
invalid count argument is supplied.
|
|
|
|
yy. Fixed a bug that caused PATH to be set to the empty string if
|
|
`command -p' is executed with PATH unset.
|
|
|
|
zz. Fixed `kill -l signum' to print the signal name without the `SIG' prefix,
|
|
as POSIX specifies.
|
|
|
|
aaa. Fixed a bug that caused the shell to crash while setting $SHELLOPTS
|
|
if there were no shell options set.
|
|
|
|
bbb. Fixed `export -p' and `readonly -p' so that when the shell is in POSIX
|
|
mode, their output is as POSIX.2 specifies.
|
|
|
|
ccc. Fixed a bug in `readonly' so that `readonly -a avar=(...)' actually
|
|
creates an array variable.
|
|
|
|
ddd. Fixed a bug that prevented `time' from correctly timing background
|
|
pipelines.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. A bug that caused an extra newline to be printed when the cursor was on
|
|
an otherwise empty line was fixed.
|
|
|
|
b. An instance of memory being used after it was freed was corrected.
|
|
|
|
c. The redisplay code now works when the prompt is longer than the screen
|
|
width.
|
|
|
|
d. `dump-macros' is now a bindable name, as it should have been all along.
|
|
|
|
e. Non-printable characters are now expanded when displaying macros and
|
|
their values.
|
|
|
|
f. The `dump-variables' and `dump-macros' commands now output a leading
|
|
newline if they're called as the result of a key sequence, rather
|
|
than directly by an application.
|
|
|
|
3. New Features in Bash
|
|
|
|
a. There is a new builtin array variable: GROUPS, the set of groups to which
|
|
the user belongs. This is used by the test suite.
|
|
|
|
4. New Features in Readline
|
|
|
|
a. If a key sequence bound to `universal-argument' is read while reading a
|
|
numeric argument started with `universal-argument', it terminates the
|
|
argument but is otherwise ignored. This provides a way to insert multiple
|
|
instances of a digit string, and is how GNU emacs does it.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.0-release,
|
|
and the previous version, bash-2.0-beta3.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. Fix to the `getopts' builtin so that it does the right thing when a
|
|
required option argument is not present.
|
|
|
|
b. The completion code now updates the common prefix of matched names
|
|
after FIGNORE processing is done, since any names that were removed
|
|
may have changed the common prefix.
|
|
|
|
c. Fixed a bug that made messages in MAILPATH entries not work correctly.
|
|
|
|
d. Fixed a serious documentation error in the description of the new
|
|
${parameter:offset[:length]} expansion.
|
|
|
|
e. Fixes to make parameter substring expansion ({$param:offset[:length]})
|
|
work when within double quotes.
|
|
|
|
f. Fixes to make ^A (CTLESC) survive an unquoted expansion of positional
|
|
parameters.
|
|
|
|
g. Corrected a misspelling of `unlimited' in the output of `ulimit'.
|
|
|
|
h. Fixed a bug that caused executable scripts without a leading `#!' to
|
|
occasionally pick up the wrong set of positional parameters.
|
|
|
|
i. Linux systems now have a working `ulimit -v', using RLIMIT_AS.
|
|
|
|
j. Updated config.guess so that many more machine types are recognized.
|
|
|
|
k. Fixed a bug with backslash-quoted slashes in the ${param/pat[/sub]}
|
|
expansion.
|
|
|
|
l. If the shell is named `-su', and `-c command' is supplied, read and
|
|
execute the login shell startup files even though the shell is not
|
|
interactive. This is to support the `-' option to `su'.
|
|
|
|
m. Fixed a bug that caused core dumps when the DEBUG trap was ignored
|
|
with `trap "" DEBUG' and a shell function was subsequently executed.
|
|
|
|
n. Fixed a bug that caused core dumps in the read builtin when IFS was
|
|
set to the null string and the input had leading whitespace.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. Fixed a bug that caused a numeric argument of 1024 to be ignored when
|
|
inserting text.
|
|
|
|
b. Fixed the display code so that the numeric argument is displayed as it's
|
|
being entered.
|
|
|
|
c. Fixed the numeric argument reading code so that `M-- command' is
|
|
equivalent to `M--1 command', as the prompt implies.
|
|
|
|
3. New Features in Bash
|
|
|
|
a. `ulimit' now sets both hard and soft limits and reports the soft limit
|
|
by default (when neither -H nor -S is specified). This is compatible
|
|
with versions of sh and ksh that implement `ulimit'.
|
|
|
|
b. Integer constants have been extended to base 64.
|
|
|
|
4. New Features in Readline
|
|
|
|
a. The `home' and `end' keys are now bound to beginning-of-line and
|
|
end-of-line, respectively, if the corresponding termcap capabilities
|
|
are present.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.0-beta3,
|
|
and the previous version, bash-2.0-beta2.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. System-specific changes for: AIX 4.2, SCO 3.2v[45], HP-UX.
|
|
|
|
b. When in POSIX mode, variable assignments preceding a special builtin
|
|
persist in the shell environment after the builtin completes.
|
|
|
|
c. Changed all calls to getwd() to getcwd(). Improved check for systems
|
|
where the libc getcwd() calls popen(), since that breaks on some
|
|
systems when job control is being used.
|
|
|
|
d. Fixed a bug that caused seg faults when executing scripts with the
|
|
execute bit set but without a leading `#!'.
|
|
|
|
e. The environment passed to executed commands is never sorted.
|
|
|
|
f. A bug was fixed in the code that expands ${name[@]} to the number of
|
|
elements in an array variable.
|
|
|
|
g. A bug was fixed in the array compound assignment code ( A=( ... ) ).
|
|
|
|
h. Window size changes now correctly propagate down to readline if
|
|
the shopt `checkwinsize' option is enabled.
|
|
|
|
i. A fix was made in the code that expands to the length of a variable
|
|
value (${#var}).
|
|
|
|
j. A fix was made to the command builtin so that it did not turn on the
|
|
`no fork' flag inappropriately.
|
|
|
|
k. A fix was made to make `set -n' work more reliably.
|
|
|
|
l. A fix was made to the job control initialization code so that the
|
|
terminal process group is set to the shell's process group if the
|
|
shell changes its own process group.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. System-specific changes for: SCO 3.2v[45].
|
|
|
|
b. The behavior of the vi-mode `.' when redoing an `i' command was changed
|
|
to insert the text previously inserted by the `i' command rather than
|
|
simply entering insert mode.
|
|
|
|
3. New features in Bash
|
|
|
|
a. There is a new version of the autoload function package, in
|
|
examples/functions/autoload.v2, that uses arrays and provides more
|
|
functionality.
|
|
|
|
b. Support for LC_COLLATE and locale-specific sorting of the results of
|
|
pathname expansion if strcoll() is available.
|
|
|
|
4. New Features in Readline
|
|
|
|
a. Support for locale-specific sorting of completion possibilities if
|
|
strcoll() is available.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.0-beta2,
|
|
and the previous version, bash-2.0-beta1.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. `pushd -' is once again equivalent to `pushd $OLDPWD'.
|
|
|
|
b. OS-specific changes for: SCO 3.2v[45].
|
|
|
|
c. A change was made to the fix for the recently-reported security hole
|
|
when reading characters with octal value 255 to make it work better on
|
|
systems with restartable system calls when not using readline.
|
|
|
|
d. Some changes were made to the test suite so that it works if you
|
|
configure bash with --enable-usg-echo-default.
|
|
|
|
e. A fix was made to the parsing of conditional arithmetic expressions.
|
|
|
|
f. Illegal arithmetic bases now cause an arithmetic evaluation error rather
|
|
than being silently reset.
|
|
|
|
g. Multiple arithmetic bases now cause an arithmetic evaluation error
|
|
instead of being ignored.
|
|
|
|
h. A fix was made to the evaluation of ${param?word} to conform to POSIX.2.
|
|
|
|
i. A bug that sometimes caused array indices to be evaluated twice (which
|
|
would cause errors when they contained assignment statements) was fixed.
|
|
|
|
j. `ulimit' was rewritten to avoid problems with getrlimit(2) returning
|
|
unsigned values and to simplify the code.
|
|
|
|
k. A bug in the command-oriented-history code that caused it to sometimes
|
|
put semicolons after right parens inappropriately was fixed.
|
|
|
|
l. The values inserted into the prompt by the \w and \W escape sequences
|
|
are now quoted to prevent further expansion.
|
|
|
|
m. An interactive shell invoked as `sh' now reads and executes commands
|
|
from the file named by $ENV when it starts up. If it's a login shell,
|
|
it does this after reading /etc/profile and ~/.profile.
|
|
|
|
n. The file named by $ENV is never read by non-interactive shells.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. A few changes were made to hide some macros and functions that should not
|
|
be public.
|
|
|
|
b. An off-by-one error that caused seg faults in the history expansion code
|
|
was fixed.
|
|
|
|
3. New Features in Bash
|
|
|
|
a. The ksh-style ((...)) arithmetic command was implemented. It is exactly
|
|
identical to let "...". This is controlled by a new option to configure,
|
|
`--enable-dparen-arithmetic', which is on by default.
|
|
|
|
b. There is a new #define available in config.h.top: SYS_BASH_LOGOUT. If
|
|
defined to a filename, bash reads and executes commands from that file
|
|
when a login shell exits. It's commented out by default.
|
|
|
|
c. `ulimit' has a `-l' option that reports the maximum amount of data that
|
|
may be locked into memory on 4.4BSD-based systems.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.0-beta1,
|
|
and the previous version, bash-2.0-alpha4.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. A bug that sometimes caused traps to be ignored on signals the
|
|
shell treats specially was fixed.
|
|
|
|
b. The internationalization code was changed to track the values of
|
|
LC_* variables and call setlocale() as appropriate. The TEXTDOMAIN
|
|
and TEXTDOMAINDIR variables are also tracked; changes cause calls
|
|
to textdomain() and bindtextdomain(), if available.
|
|
|
|
c. A bug was fixed that sometimes caused double-quoted strings to be
|
|
parsed incorrectly.
|
|
|
|
d. Changes were made so that the siglist code compiles correctly on
|
|
Solaris 2.5.
|
|
|
|
e. Added `:' to the set of characters that cause word breaks for the
|
|
completion code so that pathnames in assignments to $PATH can be
|
|
completed.
|
|
|
|
f. The `select' command was fixed to print $PS3 to stderr.
|
|
|
|
g. Fixed an error in the manual page section describing the effect that
|
|
setting and unsetting GLOBIGNORE has on the setting of the `dotglob'
|
|
option.
|
|
|
|
h. The time conversion code now uses CLK_TCK rather than CLOCKS_PER_SEC
|
|
on systems without gettimeofday() and resources.
|
|
|
|
i. The getopt static variables are now initialized each time a subshell
|
|
is started, so subshells using `getopts' work right.
|
|
|
|
j. A sign-extension bug that caused a possible security hole was fixed.
|
|
|
|
k. The parser now reads characters between backquotes within a double-
|
|
quoted string as a single word, so double quotes in the backquoted
|
|
string don't terminate the enclosing double-quoted string.
|
|
|
|
l. A bug that caused `^O' to work incorrectly when typed as the first
|
|
thing to an interactive shell was fixed.
|
|
|
|
m. A rarely-exercised off-by-one error in the code that quotes variable
|
|
values was fixed.
|
|
|
|
n. Some memory and file descriptor leaks encountered when running a
|
|
shell script that is executable but does not have a leading `#!'
|
|
were plugged.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. A bug that sometimes caused incorrect results when trying to read
|
|
typeahead on systems without FIONREAD was fixed.
|
|
|
|
3. New Features in Bash
|
|
|
|
a. The command timing code now uses the value of the TIMEFORMAT variable
|
|
to format and display timing statistics.
|
|
|
|
b. The `time' reserved word now accepts a `-p' option to force the
|
|
POSIX.2 output format.
|
|
|
|
c. There are a couple of new and updated scripts to convert csh startup
|
|
files to bash format.
|
|
|
|
d. There is a new builtin array variable: BASH_VERSINFO. The various
|
|
members hold the parts of the version information in BASH_VERSION,
|
|
plus the value of MACHTYPE.
|
|
|
|
4. New Features in Readline
|
|
|
|
a. Setting LANG to `en_US.ISO8859-1' now causes readline to enter
|
|
eight-bit mode.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.0-alpha4,
|
|
and the previous version, bash-2.0-alpha3.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. There is better detection of rsh connections on Solaris 2.
|
|
|
|
b. Assignments to read-only variables preceding a command name are now
|
|
variable assignment errors. Variable assignment errors cause
|
|
non-interactive shells running in posix mode to exit.
|
|
|
|
c. The word tokenizer was rewritten to handle nested quotes and pairs
|
|
('', "", ``, ${...}, $(...), $[...], $'...', $"...", <(...), >(...))
|
|
correctly. Some of the parameter expansion code was updated as a
|
|
consequence.
|
|
|
|
d. A fix was made to `test' when given three arguments so that a binary
|
|
operator is checked for first, before checking that the first argument
|
|
is `!'.
|
|
|
|
e. 2''>/dev/null is no longer equivalent to 2>/dev/null.
|
|
|
|
f. Parser error messages were regularized, and in most cases the name of
|
|
the shell script being read by a non-interactive shell is not printed
|
|
twice.
|
|
|
|
g. A fix was made to the completion code so that it no longer removes the
|
|
text the user typed in some cases.
|
|
|
|
h. The special glibc `getopt' environment variable is no longer put into
|
|
the environment on machines with small values of ARG_MAX.
|
|
|
|
i. The expansion of ${...} now follows the POSIX.2 rules for finding the
|
|
closing `}'.
|
|
|
|
j. The shell no longer displays spurious status messages for background
|
|
jobs in shell scripts that complete successfully when the script is
|
|
run from a terminal.
|
|
|
|
k. `shopt -o' now correctly updates $SHELLOPTS.
|
|
|
|
l. A bug that caused the $PATH searching code to return a non-executable
|
|
file even when an executable file with the same name appeared later in
|
|
$PATH was fixed.
|
|
|
|
m. The shell now does tilde expansions on unquoted `:~' in assignment
|
|
statements when not in posix mode.
|
|
|
|
n. Variable assignment errors when a command consists only of assignments
|
|
now cause non-interactive shells to exit when in posix mode.
|
|
|
|
o. If the variable in a `for' or `select' command is read-only, or not a
|
|
legal shell identifier, a variable assignment error occurs.
|
|
|
|
p. `test' now handles `-a' and `-o' as binary operators when three arguments
|
|
are supplied, and correctly parses `( word )' as equivalent to `word'.
|
|
|
|
q. `test' was fixed so that file names of the form /dev/fd/NN mean the same
|
|
thing on all systems, even Linux.
|
|
|
|
r. Fixed a bug in the globbing code that caused patterns with multiple
|
|
consecutive `*'s to not be matched correctly.
|
|
|
|
s. Fixed a bug that caused $PS2 to not be printed when an interactive shell
|
|
not using readline is reading a here document.
|
|
|
|
t. Fixed a bug that caused history expansion to be performed inappropriately
|
|
when a single-quoted string spanned more than one line.
|
|
|
|
u. `getopts' now checks that the variable name passed by the user as the
|
|
second argument is a legal shell identifier and that the variable is
|
|
not read-only.
|
|
|
|
v. Fixed `getopts' to obey POSIX.2 rules for setting $OPTIND when it
|
|
encounters an error.
|
|
|
|
w. Fixed `set' to display variable values in a form that can be re-read.
|
|
|
|
x. Fixed a bug in the code that keeps track of whether or not local variables
|
|
have been declared at the current level of function nesting.
|
|
|
|
y. Non-interactive shells in posix mode now exit if the name in a function
|
|
declaration is not a legal identifier.
|
|
|
|
z. The job control code now ignores stopped children when the shell is not
|
|
interactive.
|
|
|
|
aa. The `cd' builtin no longer attempts spelling correction on the directory
|
|
name if the shell is not interactive, regardless of the setting of the
|
|
`cdspell' option.
|
|
|
|
bb. Some OS-specific changes were made for SCO 3.2v[45] and AIX 4.2.
|
|
|
|
cc. `time' now prints its output to stderr, as POSIX.2 specifies.
|
|
|
|
2. Fixes to Readline
|
|
|
|
a. After printing possible completions, all lines of a multi-line prompt
|
|
are redisplayed.
|
|
|
|
b. Some changes were made to the terminal handling code in rltty.c to
|
|
work around AIX 4.2 bugs.
|
|
|
|
3. New Features in Bash
|
|
|
|
a. There is a new loadable builtin: sprintf, with calling syntax
|
|
sprintf var format [args]
|
|
This provides an easy way to simulate ksh left- and right-justified
|
|
variable values.
|
|
|
|
b. The expansions of \h and \H in prompt strings were swapped. \h now
|
|
expands to the hostname up to the first `.', as in bash-1.14.
|
|
|
|
4. New Features in Readline
|
|
|
|
a. The bash-1.14 behavior when ^M is typed while doing an incremental
|
|
search was restored. ^J may now be used to terminate the search without
|
|
accepting the line.
|
|
|
|
b. There is a new bindable variable: disable-completion. This inhibits
|
|
word completion and causes the completion character to be inserted as
|
|
if it had been bound to self-insert.
|
|
|
|
------------------------------------------------------------------------------
|
|
This document details the changes between this version, bash-2.0-alpha3,
|
|
and the previous version, bash-2.0-alpha2.
|
|
|
|
There is now a file `COMPAT' included in the distribution that lists the
|
|
user-visible incompatibilities between 1.14 and 2.0.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. Some work was done so that word splitting of the rhs of assignment
|
|
statements conforms more closely to historical practice.
|
|
|
|
b. A couple of errant memory frees were fixed.
|
|
|
|
c. A fix was made to the test builtin so it recognizes `<' and `>' as
|
|
binary operators.
|
|
|
|
d. The GNU malloc in lib/malloc/malloc.c now scrambles memory as it's
|
|
allocated and freed. This is to catch callers that refer to freed
|
|
memory or assume something about newly-allocated memory.
|
|
|
|
e. Fixed a problem with conversion to 12-hour time in the prompt
|
|
expansion code.
|
|
|
|
f. Fixed a problem with configure's argument parsing order. Now you can
|
|
correctly turn on specific options after using --enable-minimal-config.
|
|
|
|
g. The configure script now automatically disables the use of GNU malloc
|
|
on systems where it's appropriate (better than having people read the
|
|
NOTES file and do it manually).
|
|
|
|
h. There are new prompt expansions (\v and \V) to insert version information
|
|
into the prompt strings.
|
|
|
|
i. The default prompt string now includes the version number.
|
|
|
|
j. Most of the builtins that take no options were changed to use the
|
|
internal getopt so they can produce proper error messages for -?
|
|
and incorrect options.
|
|
|
|
k. Some system-specific changes were made for SVR4.2 and Solaris 2.5.
|
|
|
|
l. Bash now uses PATH_MAX instead of MAXPATHLEN and NAME_MAX instead of
|
|
MAXNAMLEN.
|
|
|
|
m. A couple of problems caused by uninitialized variables were fixed.
|
|
|
|
n. There are a number of new loadable builtin examples: logname, basename,
|
|
dirname, tty, pathchk, tee, head, and rmdir. All of these conform to
|
|
POSIX.2.
|
|
|
|
o. Bash now notices changes in TZ and calls tzset() if present, so
|
|
changing TZ will alter the time printed by prompt expansions.
|
|
|
|
p. The source was reorganized a bit so I don't have to wait so long for
|
|
some files to compile, and to facilitate the creation of a `shell
|
|
library' at some future point.
|
|
|
|
q. Bash no longer turns off job control if called as `sh', since the
|
|
POSIX.2 spec includes job control as a standard feature.
|
|
|
|
r. `bash -o posix' now works as intended.
|
|
|
|
s. Fixed a problem with the completion code: when completing a filename
|
|
that contained globbing characters, if show-all-if-ambiguous was set,
|
|
the completion code would remove the user's text.
|
|
|
|
t. Fixed ulimit so that (hopefully) the full range of limits is available
|
|
on HPUX systems.
|
|
|
|
u. A new `shopt' option (`hostcomplete') enables and disables hostname
|
|
completion.
|
|
|
|
v. The shell no longer attempts to save the history on an abort(),
|
|
which is usually called by programming_error().
|
|
|
|
w. The `-s' option to `fc' was changed to echo the command to be executed
|
|
to stderr instead of stdout.
|
|
|
|
x. If the editor invoked by `fc -e' exits with a non-zero status, no
|
|
commands are executed.
|
|
|
|
y. Fixed a bug that made the shopt `histverify' option work incorrectly.
|
|
|
|
z. There is a new variable `MACHTYPE' whose value is the GNU-style
|
|
`cpu-company-system' system description as set by configure. (The
|
|
values of MACHTYPE and HOSTTYPE should really be swapped.)
|
|
|
|
aa. The `ulimit' builtin now allows the maximum virtual memory size to be
|
|
set via setrlimit(2) if RLIMIT_VMEM is defined.
|
|
|
|
bb. `bash -nc 'command'' no longer runs `command'.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. Fixed a typo in the code that checked for FIONREAD in input.c.
|
|
|
|
b. Fixed a bug in the code that outputs keybindings, so things like C-\
|
|
are quoted properly.
|
|
|
|
c. Fixed a bug in the inputrc file parsing code to handle the problems
|
|
caused by inputrc files created from the output of `bind -p' in
|
|
previous versions of bash. The problem was due to the bug fixed
|
|
in item b above.
|
|
|
|
d. Readline no longer turns off the terminal's meta key, and turns it on
|
|
once the first time it's called.
|
|
|
|
------------------------------------------------------------------------------
|
|
This file documents the changes between this version, bash-2.0-alpha2,
|
|
and the previous version, bash-2.0-alpha.
|
|
|
|
1. Changes to Bash
|
|
|
|
a. The shell no longer thinks directories are executable.
|
|
|
|
b. `disown' has a new option, `h', which inhibits the resending of SIGHUP
|
|
but does not remove the job from the jobs table.
|
|
|
|
c. The varargs functions in error.c now use ANSI-C `stdarg' if available.
|
|
|
|
d. The build process now treats the `build version' in .build as local to
|
|
the build directory, so different versions built from the same source
|
|
tree have different `build versions'.
|
|
|
|
e. Some problems with the grammar have been fixed. (It used `list' in a few
|
|
productions where `compound_list' was needed. A `list' must be terminated
|
|
with a newline or semicolon; a `compound_list' need not be.)
|
|
|
|
f. A fix was made to keep `wait' from hanging when waiting for all background
|
|
jobs.
|
|
|
|
g. `bash --help' now writes its output to stdout, like the GNU Coding Standards
|
|
specify, and includes the machine type (the value of MACHTYPE).
|
|
|
|
h. `bash --version' now prints more information and exits successfully, like
|
|
the GNU Coding Standards specify.
|
|
|
|
i. The output of `time' and `times' now prints fractional seconds with three
|
|
places after the decimal point.
|
|
|
|
j. A bug that caused process substitutions to screw up the pipeline printed
|
|
by `jobs' was fixed.
|
|
|
|
k. Fixes were made to the code that implements $'...' and $"..." so they
|
|
work as documented.
|
|
|
|
l. The process substitution code now opens named pipes for reading with
|
|
O_NONBLOCK to avoid hanging.
|
|
|
|
m. Fixes were made to the trap code so the shell cleans up correctly if the
|
|
trap command contains a `return' and we're executing a function or
|
|
sourcing a script with `.'.
|
|
|
|
n. Fixes to doc/Makefile.in so that it doesn't try to remake all of the
|
|
documentation (ps, dvi, etc.) on a `make install'.
|
|
|
|
o. Fixed an auto-increment error that caused bash -c args to sometimes dump
|
|
core.
|
|
|
|
p. Fixed a bug that caused $HISTIGNORE to fail when the history line
|
|
contained globbing characters.
|
|
|
|
2. Changes to Readline
|
|
|
|
a. There is a new string variable, rl_library_version, available for use by
|
|
applications. The current value is "2.1".
|
|
|
|
b. A bug encountered when expand-tilde was enabled and file completion was
|
|
attempted on a word beginning with `~/' was fixed.
|
|
|
|
c. A slight change was made to the incremental search termination behavior.
|
|
ESC still terminates the search, but if input is pending or arrives
|
|
within 0.1 seconds (on systems with select(2)), it is used as a prefix
|
|
character. This is intented to allow users to terminate searches with
|
|
the arrow keys and get the behavior they expect.
|