mirror of https://github.com/n-hys/bash.git
974 lines
36 KiB
Plaintext
974 lines
36 KiB
Plaintext
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 (errnoeous) 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.
|