From: Chet Ramey
Date: Fri, 8 May 2026 15:36:36 +0000 (-0400)
Subject: interim fix for generic list functions to avoid pointer aliasing issues; documentatio...
X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=669b32f676a102193f65dcf88b98ba40bb361996;p=thirdparty%2Fbash.git
interim fix for generic list functions to avoid pointer aliasing issues; documentation updates
---
diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog
index 4f571da0..db0e4d06 100644
--- a/CWRU/CWRU.chlog
+++ b/CWRU/CWRU.chlog
@@ -12855,3 +12855,25 @@ subst.c
old `quoted' is now (flags & W_QUOTED); changed all callers
appropriately
+ 5/7
+ ---
+list.c,externs.h
+ - list_reverse: change to use a void * scheme instead of GENERIC_LIST *
+ scheme as a temporary fix for strict pointer aliasing issues
+ Originally from Sam James
+
+general.h
+ - REVERSE_LIST: change to use new void * argument scheme for now
+
+list.c,externs.h
+ - wlist_append,wlist_length: new WORD_LIST * specific versions of
+ list_append and list_length, since all callers use WORD_LIST *
+ arguments
+
+subst.c,pcomplete.c,execute_cmd.c,
+builtins/common.c,builtins/printf.def,
+lib/sh/stringvec.c,lib/sh/stringlist.c
+ - wlist_append,wlist_length: change callers to use new functions instead
+ of list_append/list_length, since they're always called with
+ WORD_LIST * arguments
+
diff --git a/Makefile.in b/Makefile.in
index 43c0f5af..1ac0ba3b 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -202,7 +202,8 @@ GCC_LINT_FLAGS = -O -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wno-parentheses
-Wmissing-declarations -Winline \
-Wmissing-prototypes -Wredundant-decls \
-Wformat-security -pedantic \
- -Werror=incompatible-pointer-types
+ -fstrict-aliasing -Wstrict-aliasing \
+ -Werror=incompatible-pointer-types
GCC_LINT_CFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(GCC_LINT_FLAGS)
diff --git a/builtins/common.c b/builtins/common.c
index 15a3b156..a781a0fa 100644
--- a/builtins/common.c
+++ b/builtins/common.c
@@ -1,6 +1,6 @@
/* common.c - utility functions for all builtins */
-/* Copyright (C) 1987-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2026 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -384,7 +384,7 @@ remember_args (WORD_LIST *list, int destructive)
{
dispose_words (rest_of_args);
rest_of_args = copy_word_list (list);
- posparam_count += list_length ((GENERIC_LIST *)list);
+ posparam_count += wlist_length (list);
}
if (destructive)
diff --git a/builtins/printf.def b/builtins/printf.def
index b3622017..456a1beb 100644
--- a/builtins/printf.def
+++ b/builtins/printf.def
@@ -1,7 +1,7 @@
This file is printf.def, from which is created printf.c.
It implements the builtin "printf" in Bash.
-Copyright (C) 1997-2025 Free Software Foundation, Inc.
+Copyright (C) 1997-2026 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -273,7 +273,7 @@ init_numarg ()
size_t len;
WORD_LIST *l;
- len = list_length ((GENERIC_LIST *)orig_arglist);
+ len = wlist_length (orig_arglist);
narg_argv = (char **)xmalloc ((len + 2) * sizeof (char *)); /* +2 because we don't use 0 */
for (narg_argc = 1, l = orig_arglist; l; l = l->next)
diff --git a/doc/bash.0 b/doc/bash.0
index 93d684c1..6ebeca4f 100644
--- a/doc/bash.0
+++ b/doc/bash.0
@@ -152,80 +152,86 @@ IINNVVOOCCAATTIIOONN
includes ii if the shell is interactive, so a shell script or a startup
file can test this state.
- The following paragraphs describe how bbaasshh executes its startup files.
- If any of the files exist but cannot be read, bbaasshh reports an error.
- Tildes are expanded in filenames as described below under TTiillddee EExxppaann--
+ A _n_o_n_-_i_n_t_e_r_a_c_t_i_v_e _s_h_e_l_l is, not surprisingly, one that does not satisfy
+ the tests for interactivity given above. A non-interactive shell is
+ usually started to run commands from a script file supplied as an argu-
+ ment (a _s_h_e_l_l _s_c_r_i_p_t) or from a string supplied with the --cc option.
+
+ The following paragraphs describe how bbaasshh executes its startup files.
+ If any of the files exist but cannot be read, bbaasshh reports an error.
+ Tildes in filenames are expanded as described below under TTiillddee EExxppaann--
ssiioonn in the EEXXPPAANNSSIIOONN section.
- When bbaasshh is invoked as an interactive login shell, or as a non-inter-
- active shell with the ----llooggiinn option, it first reads and executes com-
- mands from the file _/_e_t_c_/_p_r_o_f_i_l_e, if that file exists. After reading
+ When bbaasshh is invoked as an interactive login shell, or as a non-inter-
+ active shell with the ----llooggiinn option, it first reads and executes com-
+ mands from the file _/_e_t_c_/_p_r_o_f_i_l_e, if that file exists. After reading
that file, it looks for _~_/_._b_a_s_h___p_r_o_f_i_l_e, _~_/_._b_a_s_h___l_o_g_i_n, and _~_/_._p_r_o_f_i_l_e,
- in that order, and reads and executes commands from the first one that
- exists and is readable. The ----nnoopprrooffiillee option may be used when the
+ in that order, and reads and executes commands from the first one that
+ exists and is readable. The ----nnoopprrooffiillee option may be used when the
shell is started to inhibit this behavior.
When an interactive login shell exits, or a non-interactive login shell
- executes the eexxiitt builtin command, bbaasshh reads and executes commands
+ executes the eexxiitt builtin command, bbaasshh reads and executes commands
from the file _~_/_._b_a_s_h___l_o_g_o_u_t, if it exists.
- When an interactive shell that is not a login shell is started, bbaasshh
- reads and executes commands from _~_/_._b_a_s_h_r_c, if that file exists. The
- ----nnoorrcc option inhibits this behavior. The ----rrccffiillee _f_i_l_e option causes
+ When an interactive shell that is not a login shell is started, bbaasshh
+ reads and executes commands from _~_/_._b_a_s_h_r_c, if that file exists. The
+ ----nnoorrcc option inhibits this behavior. The ----rrccffiillee _f_i_l_e option causes
bbaasshh to use _f_i_l_e instead of _~_/_._b_a_s_h_r_c.
- When bbaasshh is started non-interactively, to run a shell script, for ex-
- ample, it looks for the variable BBAASSHH__EENNVV in the environment, expands
- its value if it appears there, and uses the expanded value as the name
- of a file to read and execute. BBaasshh behaves as if the following com-
- mand were executed:
+ When bbaasshh is started non-interactively, it looks for the variable
+ BBAASSHH__EENNVV in the environment, expands its value if it appears there, and
+ uses the expanded value as the name of a file to read and execute.
+ BBaasshh behaves as if the following command were executed:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
but does not use the value of the PPAATTHH variable to search for the file-
name.
- If bbaasshh is invoked with the name sshh, it tries to mimic the startup be-
- havior of historical versions of sshh as closely as possible, while con-
- forming to the POSIX standard as well. When invoked as an interactive
- login shell, or a non-interactive shell with the ----llooggiinn option, it
- first attempts to read and execute commands from _/_e_t_c_/_p_r_o_f_i_l_e and
+ If bbaasshh is invoked with the name sshh, it tries to mimic the startup be-
+ havior of historical versions of sshh as closely as possible, while con-
+ forming to the POSIX standard as well. When invoked as an interactive
+ login shell, or a non-interactive shell with the ----llooggiinn option, it
+ first attempts to read and execute commands from _/_e_t_c_/_p_r_o_f_i_l_e and
_~_/_._p_r_o_f_i_l_e, in that order. The ----nnoopprrooffiillee option inhibits this behav-
ior. When invoked as an interactive shell with the name sshh, bbaasshh looks
- for the variable EENNVV, expands its value if it is defined, and uses the
- expanded value as the name of a file to read and execute. Since a
- shell invoked as sshh does not attempt to read and execute commands from
- any other startup files, the ----rrccffiillee option has no effect. A non-in-
- teractive shell invoked with the name sshh does not attempt to read any
+ for the variable EENNVV, expands its value if it is defined, and uses the
+ expanded value as the name of a file to read and execute. Since a
+ shell invoked as sshh does not attempt to read and execute commands from
+ any other startup files, the ----rrccffiillee option has no effect. A non-in-
+ teractive shell invoked with the name sshh does not attempt to read any
other startup files.
- When invoked as sshh, bbaasshh enters posix mode after reading the startup
+ When invoked as sshh, bbaasshh enters posix mode after reading the startup
files.
- When bbaasshh is started in posix mode, as with the ----ppoossiixx command line
+ When bbaasshh is started in posix mode, as with the ----ppoossiixx command line
option, it follows the POSIX standard for startup files. In this mode,
- interactive shells expand the EENNVV variable and read and execute com-
- mands from the file whose name is the expanded value. No other startup
- files are read.
+ interactive shells expand the EENNVV variable and read and execute com-
+ mands from the file whose name is the expanded value. A posix-mode
+ shell does not attempt to read any other startup files, even when in-
+ voked as a login shell.
BBaasshh attempts to determine when it is being run with its standard input
- connected to a network connection, as when executed by the historical
- and rarely-seen remote shell daemon, usually _r_s_h_d, or the secure shell
- daemon _s_s_h_d. If bbaasshh determines it is being run non-interactively in
- this fashion, it reads and executes commands from _~_/_._b_a_s_h_r_c, if that
- file exists and is readable. BBaasshh does not read this file if invoked
- as sshh. The ----nnoorrcc option inhibits this behavior, and the ----rrccffiillee op-
- tion makes bbaasshh use a different file instead of _~_/_._b_a_s_h_r_c, but neither
- _r_s_h_d nor _s_s_h_d generally invoke the shell with those options or allow
+ connected to a network connection, as when executed by the secure shell
+ daemon _s_s_h_d or the historical and rarely-seen remote shell daemon, usu-
+ ally _r_s_h_d. If bbaasshh determines it is being run non-interactively in
+ this fashion, it reads and executes commands from _~_/_._b_a_s_h_r_c, if that
+ file exists and is readable. BBaasshh does not read this file if invoked
+ as sshh. The ----nnoorrcc option inhibits this behavior, and the ----rrccffiillee op-
+ tion makes bbaasshh use a different file instead of _~_/_._b_a_s_h_r_c, but neither
+ _s_s_h_d nor _r_s_h_d generally invoke the shell with those options or allow
them to be specified.
If the shell is started with the effective user (group) id not equal to
the real user (group) id, and the --pp option is not supplied, no startup
files are read, shell functions are not inherited from the environment,
- the SSHHEELLLLOOPPTTSS, BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they ap-
- pear in the environment, are ignored, and the effective user id is set
- to the real user id. If the --pp option is supplied at invocation, the
- startup behavior is the same, but the effective user id is not reset.
+ the SSHHEELLLLOOPPTTSS, BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they ap-
+ pear in the environment, are ignored, and the effective user id is set
+ to the real user id. If the --pp option is supplied at invocation, the
+ startup behavior is the same, but bbaasshh does not reset the effective
+ user id.
DDEEFFIINNIITTIIOONNSS
The following definitions are used throughout the rest of this docu-
@@ -7622,4 +7628,4 @@ BBUUGGSS
Array variables may not (yet) be exported.
-GNU Bash 5.3 2026 March 3 _B_A_S_H(1)
+GNU Bash 5.3 2026 April 29 _B_A_S_H(1)
diff --git a/doc/bash.1 b/doc/bash.1
index 98f07427..6e470409 100644
--- a/doc/bash.1
+++ b/doc/bash.1
@@ -5,7 +5,7 @@
.\" Case Western Reserve University
.\" chet.ramey@case.edu
.\"
-.\" Last Change: Tue Mar 3 10:52:34 EST 2026
+.\" Last Change: Wed May 6 16:08:33 EDT 2026
.\"
.\" For bash_builtins, strip all but "SHELL BUILTIN COMMANDS" section
.\" For rbash, strip all but "RESTRICTED SHELL" section
@@ -22,7 +22,7 @@
.ds zX \" empty
.if \n(zZ=1 .ig zZ
.if \n(zY=1 .ig zY
-.TH BASH 1 "2026 March 3" "GNU Bash 5.3"
+.TH BASH 1 "2026 May 6" "GNU Bash 5.3"
.\"
.ie \n(.g \{\
.ds ' \(aq
@@ -376,13 +376,21 @@ includes
if the shell is interactive,
so a shell script or a startup file can test this state.
.PP
+A \fInon-interactive shell\fP is, not surprisingly, one that does not
+satisfy the tests for interactivity given above.
+A non-interactive shell is usually started to run commands from a script
+file supplied as an argument (a \fIshell script\fP)
+or from a string supplied with the
+.B \-c
+option.
+.PP
The following paragraphs describe how
.B bash
executes its startup files.
If any of the files exist but cannot be read,
.B bash
reports an error.
-Tildes are expanded in filenames as described below under
+Tildes in filenames are expanded as described below under
.B "Tilde Expansion"
in the
.SM
@@ -429,7 +437,7 @@ to use \fIfile\fP instead of
.PP
When
.B bash
-is started non-interactively, to run a shell script, for example, it
+is started non-interactively, it
looks for the variable
.SM
.B BASH_ENV
@@ -504,13 +512,14 @@ In this mode, interactive shells expand the
.B ENV
variable and read and execute commands from the file
whose name is the expanded value.
-No other startup files are read.
+A posix-mode shell does not attempt to read any other startup files,
+even when invoked as a login shell.
.PP
.B Bash
attempts to determine when it is being run with its standard input
connected to a network connection, as when executed by
-the historical and rarely-seen remote shell daemon, usually \fIrshd\fP,
-or the secure shell daemon \fIsshd\fP.
+the secure shell daemon \fIsshd\fP
+or the historical and rarely-seen remote shell daemon, usually \fIrshd\fP.
If
.B bash
determines it is being run non-interactively in this fashion,
@@ -526,7 +535,7 @@ option inhibits this behavior, and the
option makes \fBbash\fP use a different file instead of
.FN \*~/.bashrc ,
but neither
-\fIrshd\fP nor \fIsshd\fP generally invoke the shell with those options
+\fIsshd\fP nor \fIrshd\fP generally invoke the shell with those options
or allow them to be specified.
.PP
If the shell is started with the effective user (group) id not equal to the
@@ -544,7 +553,7 @@ and
variables, if they appear in the environment, are ignored,
and the effective user id is set to the real user id.
If the \fB\-p\fP option is supplied at invocation, the startup behavior is
-the same, but the effective user id is not reset.
+the same, but \fBbash\fP does not reset the effective user id.
.SH DEFINITIONS
The following definitions are used throughout the rest of this
document.
@@ -5038,7 +5047,7 @@ all lines of the here-document are subjected to
parameter expansion, command substitution, and arithmetic expansion,
the character sequence
.B \e
-is treated literally, and
+is treated as a line continuation, and
.B \e
must be used to quote the characters
.BR \e ,
diff --git a/doc/bash.html b/doc/bash.html
index b116b819..3924d2a0 100644
--- a/doc/bash.html
+++ b/doc/bash.html
@@ -1,5 +1,5 @@
-
+
@@ -458,11 +458,19 @@ determined by isatty(3)), or one started with the
i if the shell is interactive, so a shell script or a
startup file can test this state.
+A
+non-interactive shell is, not surprisingly, one that
+does not satisfy the tests for interactivity given above. A
+non-interactive shell is usually started to run commands
+from a script file supplied as an argument (a shell
+script) or from a string supplied with the
+−c option.
+
The following
paragraphs describe how bash executes its startup
files. If any of the files exist but cannot be read,
-bash reports an error. Tildes are expanded in
-filenames as described below under Tilde Expansion in
+bash reports an error. Tildes in filenames are
+expanded as described below under Tilde Expansion in
the EXPANSION section.
When bash
@@ -493,8 +501,7 @@ interactive shell that is not a login shell is started,
~/.bashrc.
When bash
-is started non-interactively, to run a shell script, for
-example, it looks for the variable
+is started non-interactively, it looks for the variable
BASH_ENV in the environment, expands
its value if it appears there, and uses the expanded value
as the name of a file to read and execute. Bash
@@ -539,14 +546,15 @@ is started in posix mode, as with the
the POSIX standard for startup files. In this
mode, interactive shells expand the
ENV variable and read and execute
-commands from the file whose name is the expanded value. No
-other startup files are read.
+commands from the file whose name is the expanded value. A
+posix-mode shell does not attempt to read any other startup
+files, even when invoked as a login shell.
Bash
attempts to determine when it is being run with its standard
input connected to a network connection, as when executed by
-the historical and rarely-seen remote shell daemon, usually
-rshd, or the secure shell daemon sshd. If
+the secure shell daemon sshd or the historical and
+rarely-seen remote shell daemon, usually rshd. If
bash determines it is being run non-interactively in
this fashion, it reads and executes commands from
~/.bashrc, if that file exists and is readable.
@@ -554,7 +562,7 @@ this fashion, it reads and executes commands from
The −−norc option inhibits this behavior,
and the −−rcfile option makes bash
use a different file instead of ~/.bashrc, but
-neither rshd nor sshd generally invoke the
+neither sshd nor rshd generally invoke the
shell with those options or allow them to be specified.
If the shell is
@@ -567,8 +575,8 @@ inherited from the environment, the
variables, if they appear in the environment, are ignored,
and the effective user id is set to the real user id. If the
−p option is supplied at invocation, the
-startup behavior is the same, but the effective user id is
-not reset.
+startup behavior is the same, but bash does not reset
+the effective user id.
DEFINITIONS
diff --git a/doc/bash.info b/doc/bash.info
index 474276a5..7d4a287e 100644
--- a/doc/bash.info
+++ b/doc/bash.info
@@ -1,9 +1,9 @@
This is bash.info, produced by makeinfo version 7.2 from bashref.texi.
This text is a brief description of the features that are present in the
-Bash shell (version 5.3, 16 March 2026).
+Bash shell (version 5.3, 29 April 2026).
- This is Edition 5.3, last updated 16 March 2026, of âThe GNU Bash
+ This is Edition 5.3, last updated 29 April 2026, of âThe GNU Bash
Reference Manualâ, for âBashâ, Version 5.3.
Copyright © 1988-2026 Free Software Foundation, Inc.
@@ -26,10 +26,10 @@ Bash Features
*************
This text is a brief description of the features that are present in the
-Bash shell (version 5.3, 16 March 2026). The Bash home page is
+Bash shell (version 5.3, 29 April 2026). The Bash home page is
.
- This is Edition 5.3, last updated 16 March 2026, of âThe GNU Bash
+ This is Edition 5.3, last updated 29 April 2026, of âThe GNU Bash
Reference Manualâ, for âBashâ, Version 5.3.
Bash contains features that appear in other popular shells, and some
@@ -3361,7 +3361,7 @@ File: bash.info, Node: Shell Scripts, Prev: Executing Commands, Up: Basic She
3.8 Shell Scripts
=================
-A shell script is a text file containing shell commands. When such a
+A âshell scriptâ is a text file containing shell commands. When such a
file is used as the first non-option argument when invoking Bash, and
neither the â-câ nor â-sâ option is supplied (*note Invoking Bash::),
Bash reads and executes commands from the file, then exits. This mode
@@ -6666,6 +6666,12 @@ standard input and standard error are both connected to terminals (as
determined by isatty(3)), or one started with the â-iâ option. *Note
Interactive Shells::, for more information.
+ A ânon-interactive shellâ is, not surprisingly, one that does not
+satisfy the tests for interactivity given above. A non-interactive
+shell is usually started to run commands from a script file supplied as
+an argument (*note Shell Scripts::) or from a string supplied with the
+â-câ option.
+
If arguments remain after option processing, and neither the â-câ nor
the â-sâ option has been supplied, the first argument is treated as the
name of a file containing shell commands (*note Shell Scripts::). When
@@ -6677,6 +6683,22 @@ If no commands are executed, the exit status is 0. Bash first attempts
to open the file in the current directory, and, if no file is found,
searches the directories in âPATHâ for the script.
+ For example, the following command starts an interactive shell:
+
+ bash
+
+whereas this command will read and execute commands from âfilenameâ:
+
+ bash filename
+
+This command will execute âecho helloâ:
+
+ bash -c 'echo hello'
+
+and this will execute the same command read from the standard input:
+
+ echo echo hello | bash
+
File: bash.info, Node: Bash Startup Files, Next: Interactive Shells, Prev: Invoking Bash, Up: Bash Features
@@ -6684,8 +6706,8 @@ File: bash.info, Node: Bash Startup Files, Next: Interactive Shells, Prev: In
======================
This section describes how Bash executes its startup files. If any of
-the files exist but cannot be read, Bash reports an error. Tildes are
-expanded in filenames as described above under Tilde Expansion (*note
+the files exist but cannot be read, Bash reports an error. Tildes in
+filenames are expanded as described above under Tilde Expansion (*note
Tilde Expansion::).
Interactive shells are described in *note Interactive Shells::.
@@ -6763,21 +6785,22 @@ Invoked in POSIX mode
When Bash is started in POSIX mode, as with the â--posixâ command line
option, it follows the POSIX standard for startup files. In this mode,
interactive shells expand the âENVâ variable and read and execute
-commands from the file whose name is the expanded value. No other
-startup files are read.
+commands from the file whose name is the expanded value. A posix-mode
+shell does not attempt to read any other startup files, even when
+invoked as a login shell.
Invoked by remote shell daemon
..............................
Bash attempts to determine when it is being run with its standard input
-connected to a network connection, as when executed by the historical
-and rarely-seen remote shell daemon, usually ârshdâ, or the secure shell
-daemon âsshdâ. If Bash determines it is being run non-interactively in
+connected to a network connection, as when executed by the secure shell
+daemon âsshdâ. or the historical and rarely-seen remote shell daemon,
+usually ârshdâ. If Bash determines it is being run non-interactively in
this fashion, it reads and executes commands from â~/.bashrcâ, if that
file exists and is readable. Bash does not read this file if invoked as
âshâ. The â--norcâ option inhibits this behavior, and the â--rcfileâ
option makes Bash use a different file instead of â~/.bashrcâ, but
-neither ârshdâ nor âsshdâ generally invoke the shell with those options
+neither âsshdâ nor ârshdâ generally invoke the shell with those options
or allow them to be specified.
Invoked with unequal effective and real UID/GIDs
@@ -6789,8 +6812,8 @@ files are read, shell functions are not inherited from the environment,
the âSHELLOPTSâ, âBASHOPTSâ, âCDPATHâ, and âGLOBIGNOREâ variables, if
they appear in the environment, are ignored, and the effective user id
is set to the real user id. If the â-pâ option is supplied at
-invocation, the startup behavior is the same, but the effective user id
-is not reset.
+invocation, the startup behavior is the same, but Bash does not reset
+the effective user id.
File: bash.info, Node: Interactive Shells, Next: Bash Conditional Expressions, Prev: Bash Startup Files, Up: Bash Features
@@ -13791,87 +13814,87 @@ Node: Environment140986
Node: Exit Status142889
Node: Signals144948
Node: Shell Scripts149896
-Node: Shell Builtin Commands153194
-Node: Bourne Shell Builtins155535
-Node: Bash Builtins182254
-Node: Modifying Shell Behavior219989
-Node: The Set Builtin220331
-Node: The Shopt Builtin232325
-Node: Special Builtins249378
-Node: Shell Variables250367
-Node: Bourne Shell Variables250801
-Node: Bash Variables253309
-Node: Bash Features292593
-Node: Invoking Bash293607
-Node: Bash Startup Files300191
-Node: Interactive Shells305433
-Node: What is an Interactive Shell?305841
-Node: Is this Shell Interactive?306503
-Node: Interactive Shell Behavior307327
-Node: Bash Conditional Expressions311088
-Node: Shell Arithmetic316505
-Node: Aliases319832
-Node: Arrays322966
-Node: The Directory Stack330668
-Node: Directory Stack Builtins331465
-Node: Controlling the Prompt335910
-Node: The Restricted Shell338794
-Node: Bash POSIX Mode341887
-Node: Shell Compatibility Mode361703
-Node: Job Control370710
-Node: Job Control Basics371167
-Node: Job Control Builtins377535
-Node: Job Control Variables384323
-Node: Command Line Editing385554
-Node: Introduction and Notation387257
-Node: Readline Interaction389609
-Node: Readline Bare Essentials390797
-Node: Readline Movement Commands392605
-Node: Readline Killing Commands393601
-Node: Readline Arguments395624
-Node: Searching396714
-Node: Readline Init File398957
-Node: Readline Init File Syntax400260
-Node: Conditional Init Constructs427211
-Node: Sample Init File431596
-Node: Bindable Readline Commands434716
-Node: Commands For Moving436254
-Node: Commands For History438718
-Node: Commands For Text444109
-Node: Commands For Killing448234
-Node: Numeric Arguments451022
-Node: Commands For Completion452174
-Node: Keyboard Macros457870
-Node: Miscellaneous Commands458571
-Node: Readline vi Mode466114
-Node: Programmable Completion467091
-Node: Programmable Completion Builtins476827
-Node: A Programmable Completion Example488564
-Node: Using History Interactively493909
-Node: Bash History Facilities494590
-Node: Bash History Builtins498325
-Node: History Interaction505920
-Node: Event Designators510870
-Node: Word Designators512448
-Node: Modifiers514840
-Node: Installing Bash516777
-Node: Basic Installation517893
-Node: Compilers and Options521769
-Node: Compiling For Multiple Architectures522519
-Node: Installation Names524272
-Node: Specifying the System Type526506
-Node: Sharing Defaults527252
-Node: Operation Controls527966
-Node: Optional Features528985
-Node: Reporting Bugs541708
-Node: Major Differences From The Bourne Shell543065
-Node: GNU Free Documentation License564492
-Node: Indexes589669
-Node: Builtin Index590120
-Node: Reserved Word Index597218
-Node: Variable Index599663
-Node: Function Index617076
-Node: Concept Index631209
+Node: Shell Builtin Commands153200
+Node: Bourne Shell Builtins155541
+Node: Bash Builtins182260
+Node: Modifying Shell Behavior219995
+Node: The Set Builtin220337
+Node: The Shopt Builtin232331
+Node: Special Builtins249384
+Node: Shell Variables250373
+Node: Bourne Shell Variables250807
+Node: Bash Variables253315
+Node: Bash Features292599
+Node: Invoking Bash293613
+Node: Bash Startup Files300843
+Node: Interactive Shells306165
+Node: What is an Interactive Shell?306573
+Node: Is this Shell Interactive?307235
+Node: Interactive Shell Behavior308059
+Node: Bash Conditional Expressions311820
+Node: Shell Arithmetic317237
+Node: Aliases320564
+Node: Arrays323698
+Node: The Directory Stack331400
+Node: Directory Stack Builtins332197
+Node: Controlling the Prompt336642
+Node: The Restricted Shell339526
+Node: Bash POSIX Mode342619
+Node: Shell Compatibility Mode362435
+Node: Job Control371442
+Node: Job Control Basics371899
+Node: Job Control Builtins378267
+Node: Job Control Variables385055
+Node: Command Line Editing386286
+Node: Introduction and Notation387989
+Node: Readline Interaction390341
+Node: Readline Bare Essentials391529
+Node: Readline Movement Commands393337
+Node: Readline Killing Commands394333
+Node: Readline Arguments396356
+Node: Searching397446
+Node: Readline Init File399689
+Node: Readline Init File Syntax400992
+Node: Conditional Init Constructs427943
+Node: Sample Init File432328
+Node: Bindable Readline Commands435448
+Node: Commands For Moving436986
+Node: Commands For History439450
+Node: Commands For Text444841
+Node: Commands For Killing448966
+Node: Numeric Arguments451754
+Node: Commands For Completion452906
+Node: Keyboard Macros458602
+Node: Miscellaneous Commands459303
+Node: Readline vi Mode466846
+Node: Programmable Completion467823
+Node: Programmable Completion Builtins477559
+Node: A Programmable Completion Example489296
+Node: Using History Interactively494641
+Node: Bash History Facilities495322
+Node: Bash History Builtins499057
+Node: History Interaction506652
+Node: Event Designators511602
+Node: Word Designators513180
+Node: Modifiers515572
+Node: Installing Bash517509
+Node: Basic Installation518625
+Node: Compilers and Options522501
+Node: Compiling For Multiple Architectures523251
+Node: Installation Names525004
+Node: Specifying the System Type527238
+Node: Sharing Defaults527984
+Node: Operation Controls528698
+Node: Optional Features529717
+Node: Reporting Bugs542440
+Node: Major Differences From The Bourne Shell543797
+Node: GNU Free Documentation License565224
+Node: Indexes590401
+Node: Builtin Index590852
+Node: Reserved Word Index597950
+Node: Variable Index600395
+Node: Function Index617808
+Node: Concept Index631941
End Tag Table
diff --git a/doc/bash.pdf b/doc/bash.pdf
index 84dc06e9..fef0744a 100644
Binary files a/doc/bash.pdf and b/doc/bash.pdf differ
diff --git a/doc/bashref.aux b/doc/bashref.aux
index 9e025c4b..c8c0229c 100644
--- a/doc/bashref.aux
+++ b/doc/bashref.aux
@@ -198,10 +198,10 @@
@xrdef{Interactive Shell Behavior-pg}{104}
@xrdef{Bash Conditional Expressions-title}{Bash Conditional Expressions}
@xrdef{Bash Conditional Expressions-snt}{Section@tie 6.4}
-@xrdef{Bash Conditional Expressions-pg}{105}
+@xrdef{Bash Conditional Expressions-pg}{106}
@xrdef{Shell Arithmetic-title}{Shell Arithmetic}
@xrdef{Shell Arithmetic-snt}{Section@tie 6.5}
-@xrdef{Shell Arithmetic-pg}{107}
+@xrdef{Shell Arithmetic-pg}{108}
@xrdef{Aliases-title}{Aliases}
@xrdef{Aliases-snt}{Section@tie 6.6}
@xrdef{Aliases-pg}{109}
@@ -230,161 +230,161 @@
@xrdef{Job Control-snt}{Chapter@tie 7}
@xrdef{Job Control Basics-title}{Job Control Basics}
@xrdef{Job Control Basics-snt}{Section@tie 7.1}
-@xrdef{Job Control-pg}{125}
-@xrdef{Job Control Basics-pg}{125}
+@xrdef{Job Control-pg}{126}
+@xrdef{Job Control Basics-pg}{126}
@xrdef{Job Control Builtins-title}{Job Control Builtins}
@xrdef{Job Control Builtins-snt}{Section@tie 7.2}
-@xrdef{Job Control Builtins-pg}{126}
+@xrdef{Job Control Builtins-pg}{127}
@xrdef{Job Control Variables-title}{Job Control Variables}
@xrdef{Job Control Variables-snt}{Section@tie 7.3}
-@xrdef{Job Control Variables-pg}{129}
+@xrdef{Job Control Variables-pg}{130}
@xrdef{Command Line Editing-title}{Command Line Editing}
@xrdef{Command Line Editing-snt}{Chapter@tie 8}
@xrdef{Introduction and Notation-title}{Introduction to Line Editing}
@xrdef{Introduction and Notation-snt}{Section@tie 8.1}
@xrdef{Readline Interaction-title}{Readline Interaction}
@xrdef{Readline Interaction-snt}{Section@tie 8.2}
-@xrdef{Command Line Editing-pg}{130}
-@xrdef{Introduction and Notation-pg}{130}
-@xrdef{Readline Interaction-pg}{130}
+@xrdef{Command Line Editing-pg}{131}
+@xrdef{Introduction and Notation-pg}{131}
+@xrdef{Readline Interaction-pg}{131}
@xrdef{Readline Bare Essentials-title}{Readline Bare Essentials}
@xrdef{Readline Bare Essentials-snt}{Section@tie 8.2.1}
@xrdef{Readline Movement Commands-title}{Readline Movement Commands}
@xrdef{Readline Movement Commands-snt}{Section@tie 8.2.2}
-@xrdef{Readline Bare Essentials-pg}{131}
-@xrdef{Readline Movement Commands-pg}{131}
+@xrdef{Readline Bare Essentials-pg}{132}
+@xrdef{Readline Movement Commands-pg}{132}
@xrdef{Readline Killing Commands-title}{Readline Killing Commands}
@xrdef{Readline Killing Commands-snt}{Section@tie 8.2.3}
@xrdef{Readline Arguments-title}{Readline Arguments}
@xrdef{Readline Arguments-snt}{Section@tie 8.2.4}
@xrdef{Searching-title}{Searching for Commands in the History}
@xrdef{Searching-snt}{Section@tie 8.2.5}
-@xrdef{Readline Killing Commands-pg}{132}
-@xrdef{Readline Arguments-pg}{132}
+@xrdef{Readline Killing Commands-pg}{133}
+@xrdef{Readline Arguments-pg}{133}
@xrdef{Readline Init File-title}{Readline Init File}
@xrdef{Readline Init File-snt}{Section@tie 8.3}
@xrdef{Readline Init File Syntax-title}{Readline Init File Syntax}
@xrdef{Readline Init File Syntax-snt}{Section@tie 8.3.1}
-@xrdef{Searching-pg}{133}
-@xrdef{Readline Init File-pg}{133}
-@xrdef{Readline Init File Syntax-pg}{133}
+@xrdef{Searching-pg}{134}
+@xrdef{Readline Init File-pg}{134}
+@xrdef{Readline Init File Syntax-pg}{134}
@xrdef{Conditional Init Constructs-title}{Conditional Init Constructs}
@xrdef{Conditional Init Constructs-snt}{Section@tie 8.3.2}
-@xrdef{Conditional Init Constructs-pg}{143}
+@xrdef{Conditional Init Constructs-pg}{144}
@xrdef{Sample Init File-title}{Sample Init File}
@xrdef{Sample Init File-snt}{Section@tie 8.3.3}
-@xrdef{Sample Init File-pg}{144}
+@xrdef{Sample Init File-pg}{145}
@xrdef{Bindable Readline Commands-title}{Bindable Readline Commands}
@xrdef{Bindable Readline Commands-snt}{Section@tie 8.4}
@xrdef{Commands For Moving-title}{Commands For Moving}
@xrdef{Commands For Moving-snt}{Section@tie 8.4.1}
-@xrdef{Bindable Readline Commands-pg}{147}
-@xrdef{Commands For Moving-pg}{147}
+@xrdef{Bindable Readline Commands-pg}{148}
+@xrdef{Commands For Moving-pg}{148}
@xrdef{Commands For History-title}{Commands For Manipulating The History}
@xrdef{Commands For History-snt}{Section@tie 8.4.2}
-@xrdef{Commands For History-pg}{148}
+@xrdef{Commands For History-pg}{149}
@xrdef{Commands For Text-title}{Commands For Changing Text}
@xrdef{Commands For Text-snt}{Section@tie 8.4.3}
-@xrdef{Commands For Text-pg}{150}
+@xrdef{Commands For Text-pg}{151}
@xrdef{Commands For Killing-title}{Killing And Yanking}
@xrdef{Commands For Killing-snt}{Section@tie 8.4.4}
-@xrdef{Commands For Killing-pg}{151}
+@xrdef{Commands For Killing-pg}{152}
@xrdef{Numeric Arguments-title}{Specifying Numeric Arguments}
@xrdef{Numeric Arguments-snt}{Section@tie 8.4.5}
@xrdef{Commands For Completion-title}{Letting Readline Type For You}
@xrdef{Commands For Completion-snt}{Section@tie 8.4.6}
-@xrdef{Numeric Arguments-pg}{153}
-@xrdef{Commands For Completion-pg}{153}
+@xrdef{Numeric Arguments-pg}{154}
+@xrdef{Commands For Completion-pg}{154}
@xrdef{Keyboard Macros-title}{Keyboard Macros}
@xrdef{Keyboard Macros-snt}{Section@tie 8.4.7}
@xrdef{Miscellaneous Commands-title}{Some Miscellaneous Commands}
@xrdef{Miscellaneous Commands-snt}{Section@tie 8.4.8}
-@xrdef{Keyboard Macros-pg}{155}
-@xrdef{Miscellaneous Commands-pg}{155}
+@xrdef{Keyboard Macros-pg}{156}
+@xrdef{Miscellaneous Commands-pg}{156}
@xrdef{Readline vi Mode-title}{Readline vi Mode}
@xrdef{Readline vi Mode-snt}{Section@tie 8.5}
@xrdef{Programmable Completion-title}{Programmable Completion}
@xrdef{Programmable Completion-snt}{Section@tie 8.6}
-@xrdef{Readline vi Mode-pg}{158}
-@xrdef{Programmable Completion-pg}{158}
+@xrdef{Readline vi Mode-pg}{159}
+@xrdef{Programmable Completion-pg}{159}
@xrdef{Programmable Completion Builtins-title}{Programmable Completion Builtins}
@xrdef{Programmable Completion Builtins-snt}{Section@tie 8.7}
-@xrdef{Programmable Completion Builtins-pg}{161}
+@xrdef{Programmable Completion Builtins-pg}{162}
@xrdef{A Programmable Completion Example-title}{A Programmable Completion Example}
@xrdef{A Programmable Completion Example-snt}{Section@tie 8.8}
-@xrdef{A Programmable Completion Example-pg}{165}
+@xrdef{A Programmable Completion Example-pg}{166}
@xrdef{Using History Interactively-title}{Using History Interactively}
@xrdef{Using History Interactively-snt}{Chapter@tie 9}
@xrdef{Bash History Facilities-title}{Bash History Facilities}
@xrdef{Bash History Facilities-snt}{Section@tie 9.1}
-@xrdef{Using History Interactively-pg}{168}
-@xrdef{Bash History Facilities-pg}{168}
+@xrdef{Using History Interactively-pg}{169}
+@xrdef{Bash History Facilities-pg}{169}
@xrdef{Bash History Builtins-title}{Bash History Builtins}
@xrdef{Bash History Builtins-snt}{Section@tie 9.2}
-@xrdef{Bash History Builtins-pg}{169}
+@xrdef{Bash History Builtins-pg}{170}
@xrdef{History Interaction-title}{History Expansion}
@xrdef{History Interaction-snt}{Section@tie 9.3}
-@xrdef{History Interaction-pg}{171}
+@xrdef{History Interaction-pg}{172}
@xrdef{Event Designators-title}{Event Designators}
@xrdef{Event Designators-snt}{Section@tie 9.3.1}
-@xrdef{Event Designators-pg}{172}
+@xrdef{Event Designators-pg}{173}
@xrdef{Word Designators-title}{Word Designators}
@xrdef{Word Designators-snt}{Section@tie 9.3.2}
-@xrdef{Word Designators-pg}{173}
+@xrdef{Word Designators-pg}{174}
@xrdef{Modifiers-title}{Modifiers}
@xrdef{Modifiers-snt}{Section@tie 9.3.3}
-@xrdef{Modifiers-pg}{174}
+@xrdef{Modifiers-pg}{175}
@xrdef{Installing Bash-title}{Installing Bash}
@xrdef{Installing Bash-snt}{Chapter@tie 10}
@xrdef{Basic Installation-title}{Basic Installation}
@xrdef{Basic Installation-snt}{Section@tie 10.1}
-@xrdef{Installing Bash-pg}{175}
-@xrdef{Basic Installation-pg}{175}
+@xrdef{Installing Bash-pg}{176}
+@xrdef{Basic Installation-pg}{176}
@xrdef{Compilers and Options-title}{Compilers and Options}
@xrdef{Compilers and Options-snt}{Section@tie 10.2}
@xrdef{Compiling For Multiple Architectures-title}{Compiling For Multiple Architectures}
@xrdef{Compiling For Multiple Architectures-snt}{Section@tie 10.3}
@xrdef{Installation Names-title}{Installation Names}
@xrdef{Installation Names-snt}{Section@tie 10.4}
-@xrdef{Compilers and Options-pg}{176}
-@xrdef{Compiling For Multiple Architectures-pg}{176}
+@xrdef{Compilers and Options-pg}{177}
+@xrdef{Compiling For Multiple Architectures-pg}{177}
@xrdef{Specifying the System Type-title}{Specifying the System Type}
@xrdef{Specifying the System Type-snt}{Section@tie 10.5}
@xrdef{Sharing Defaults-title}{Sharing Defaults}
@xrdef{Sharing Defaults-snt}{Section@tie 10.6}
@xrdef{Operation Controls-title}{Operation Controls}
@xrdef{Operation Controls-snt}{Section@tie 10.7}
-@xrdef{Installation Names-pg}{177}
-@xrdef{Specifying the System Type-pg}{177}
-@xrdef{Sharing Defaults-pg}{177}
+@xrdef{Installation Names-pg}{178}
+@xrdef{Specifying the System Type-pg}{178}
+@xrdef{Sharing Defaults-pg}{178}
@xrdef{Optional Features-title}{Optional Features}
@xrdef{Optional Features-snt}{Section@tie 10.8}
-@xrdef{Operation Controls-pg}{178}
-@xrdef{Optional Features-pg}{178}
+@xrdef{Operation Controls-pg}{179}
+@xrdef{Optional Features-pg}{179}
@xrdef{Reporting Bugs-title}{Reporting Bugs}
@xrdef{Reporting Bugs-snt}{Appendix@tie @char65{}}
-@xrdef{Reporting Bugs-pg}{184}
+@xrdef{Reporting Bugs-pg}{185}
@xrdef{Major Differences From The Bourne Shell-title}{Major Differences From The Bourne Shell}
@xrdef{Major Differences From The Bourne Shell-snt}{Appendix@tie @char66{}}
-@xrdef{Major Differences From The Bourne Shell-pg}{185}
+@xrdef{Major Differences From The Bourne Shell-pg}{186}
@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
@xrdef{GNU Free Documentation License-snt}{Appendix@tie @char67{}}
-@xrdef{GNU Free Documentation License-pg}{192}
+@xrdef{GNU Free Documentation License-pg}{193}
@xrdef{Indexes-title}{Indexes}
@xrdef{Indexes-snt}{Appendix@tie @char68{}}
@xrdef{Builtin Index-title}{Index of Shell Builtin Commands}
@xrdef{Builtin Index-snt}{Section@tie @char68.1}
-@xrdef{Indexes-pg}{200}
-@xrdef{Builtin Index-pg}{200}
+@xrdef{Indexes-pg}{201}
+@xrdef{Builtin Index-pg}{201}
@xrdef{Reserved Word Index-title}{Index of Shell Reserved Words}
@xrdef{Reserved Word Index-snt}{Section@tie @char68.2}
@xrdef{Variable Index-title}{Parameter and Variable Index}
@xrdef{Variable Index-snt}{Section@tie @char68.3}
-@xrdef{Reserved Word Index-pg}{201}
-@xrdef{Variable Index-pg}{202}
+@xrdef{Reserved Word Index-pg}{202}
+@xrdef{Variable Index-pg}{203}
@xrdef{Function Index-title}{Function Index}
@xrdef{Function Index-snt}{Section@tie @char68.4}
-@xrdef{Function Index-pg}{204}
+@xrdef{Function Index-pg}{205}
@xrdef{Concept Index-title}{Concept Index}
@xrdef{Concept Index-snt}{Section@tie @char68.5}
-@xrdef{Concept Index-pg}{206}
+@xrdef{Concept Index-pg}{207}
diff --git a/doc/bashref.bt b/doc/bashref.bt
index c7a7f16e..3eaf5dca 100644
--- a/doc/bashref.bt
+++ b/doc/bashref.bt
@@ -47,15 +47,15 @@
\entry{dirs}{112}{\code {dirs}}
\entry{popd}{113}{\code {popd}}
\entry{pushd}{113}{\code {pushd}}
-\entry{bg}{126}{\code {bg}}
-\entry{fg}{127}{\code {fg}}
-\entry{jobs}{127}{\code {jobs}}
-\entry{kill}{127}{\code {kill}}
-\entry{wait}{128}{\code {wait}}
-\entry{disown}{128}{\code {disown}}
-\entry{suspend}{128}{\code {suspend}}
-\entry{compgen}{161}{\code {compgen}}
-\entry{complete}{162}{\code {complete}}
-\entry{compopt}{165}{\code {compopt}}
-\entry{fc}{169}{\code {fc}}
-\entry{history}{170}{\code {history}}
+\entry{bg}{127}{\code {bg}}
+\entry{fg}{128}{\code {fg}}
+\entry{jobs}{128}{\code {jobs}}
+\entry{kill}{128}{\code {kill}}
+\entry{wait}{129}{\code {wait}}
+\entry{disown}{129}{\code {disown}}
+\entry{suspend}{129}{\code {suspend}}
+\entry{compgen}{162}{\code {compgen}}
+\entry{complete}{163}{\code {complete}}
+\entry{compopt}{166}{\code {compopt}}
+\entry{fc}{170}{\code {fc}}
+\entry{history}{171}{\code {history}}
diff --git a/doc/bashref.bts b/doc/bashref.bts
index 0296157d..eb3d1c37 100644
--- a/doc/bashref.bts
+++ b/doc/bashref.bts
@@ -7,7 +7,7 @@
\initial {A}
\entry{\code {alias}}{61}
\initial {B}
-\entry{\code {bg}}{126}
+\entry{\code {bg}}{127}
\entry{\code {bind}}{61}
\entry{\code {break}}{53}
\entry{\code {builtin}}{63}
@@ -15,14 +15,14 @@
\entry{\code {caller}}{63}
\entry{\code {cd}}{53}
\entry{\code {command}}{63}
-\entry{\code {compgen}}{161}
-\entry{\code {complete}}{162}
-\entry{\code {compopt}}{165}
+\entry{\code {compgen}}{162}
+\entry{\code {complete}}{163}
+\entry{\code {compopt}}{166}
\entry{\code {continue}}{54}
\initial {D}
\entry{\code {declare}}{64}
\entry{\code {dirs}}{112}
-\entry{\code {disown}}{128}
+\entry{\code {disown}}{129}
\initial {E}
\entry{\code {echo}}{65}
\entry{\code {enable}}{66}
@@ -32,18 +32,18 @@
\entry{\code {export}}{54}
\initial {F}
\entry{\code {false}}{55}
-\entry{\code {fc}}{169}
-\entry{\code {fg}}{127}
+\entry{\code {fc}}{170}
+\entry{\code {fg}}{128}
\initial {G}
\entry{\code {getopts}}{55}
\initial {H}
\entry{\code {hash}}{56}
\entry{\code {help}}{67}
-\entry{\code {history}}{170}
+\entry{\code {history}}{171}
\initial {J}
-\entry{\code {jobs}}{127}
+\entry{\code {jobs}}{128}
\initial {K}
-\entry{\code {kill}}{127}
+\entry{\code {kill}}{128}
\initial {L}
\entry{\code {let}}{67}
\entry{\code {local}}{67}
@@ -65,7 +65,7 @@
\entry{\code {shift}}{57}
\entry{\code {shopt}}{78}
\entry{\code {source}}{72}
-\entry{\code {suspend}}{128}
+\entry{\code {suspend}}{129}
\initial {T}
\entry{\code {test}}{57}
\entry{\code {times}}{59}
@@ -79,4 +79,4 @@
\entry{\code {unalias}}{74}
\entry{\code {unset}}{61}
\initial {W}
-\entry{\code {wait}}{128}
+\entry{\code {wait}}{129}
diff --git a/doc/bashref.cp b/doc/bashref.cp
index 431e3ba7..cea96b18 100644
--- a/doc/bashref.cp
+++ b/doc/bashref.cp
@@ -81,12 +81,12 @@
\entry{startup files}{102}{startup files}
\entry{interactive shell}{104}{interactive shell}
\entry{shell, interactive}{104}{shell, interactive}
-\entry{expressions, conditional}{105}{expressions, conditional}
-\entry{arithmetic, shell}{107}{arithmetic, shell}
-\entry{shell arithmetic}{107}{shell arithmetic}
-\entry{expressions, arithmetic}{107}{expressions, arithmetic}
-\entry{evaluation, arithmetic}{107}{evaluation, arithmetic}
-\entry{arithmetic evaluation}{107}{arithmetic evaluation}
+\entry{expressions, conditional}{106}{expressions, conditional}
+\entry{arithmetic, shell}{108}{arithmetic, shell}
+\entry{shell arithmetic}{108}{shell arithmetic}
+\entry{expressions, arithmetic}{108}{expressions, arithmetic}
+\entry{evaluation, arithmetic}{108}{evaluation, arithmetic}
+\entry{arithmetic evaluation}{108}{arithmetic evaluation}
\entry{arithmetic operators}{108}{arithmetic operators}
\entry{unary arithmetic operators}{108}{unary arithmetic operators}
\entry{binary arithmetic operators}{108}{binary arithmetic operators}
@@ -101,30 +101,30 @@
\entry{POSIX Mode}{117}{POSIX Mode}
\entry{Compatibility Level}{122}{Compatibility Level}
\entry{Compatibility Mode}{122}{Compatibility Mode}
-\entry{job control}{125}{job control}
-\entry{foreground}{125}{foreground}
-\entry{background}{125}{background}
-\entry{suspending jobs}{125}{suspending jobs}
-\entry{Readline, how to use}{129}{Readline, how to use}
-\entry{interaction, readline}{130}{interaction, readline}
-\entry{notation, readline}{131}{notation, readline}
-\entry{command editing}{131}{command editing}
-\entry{editing command lines}{131}{editing command lines}
-\entry{killing text}{132}{killing text}
-\entry{yanking text}{132}{yanking text}
-\entry{kill ring}{132}{kill ring}
-\entry{initialization file, readline}{133}{initialization file, readline}
-\entry{variables, readline}{134}{variables, readline}
-\entry{programmable completion}{158}{programmable completion}
-\entry{completion builtins}{161}{completion builtins}
-\entry{History, how to use}{167}{History, how to use}
-\entry{command history}{168}{command history}
-\entry{history list}{168}{history list}
-\entry{history builtins}{169}{history builtins}
-\entry{history expansion}{171}{history expansion}
-\entry{event designators}{172}{event designators}
-\entry{history events}{172}{history events}
-\entry{installation}{175}{installation}
-\entry{configuration}{175}{configuration}
-\entry{Bash installation}{175}{Bash installation}
-\entry{Bash configuration}{175}{Bash configuration}
+\entry{job control}{126}{job control}
+\entry{foreground}{126}{foreground}
+\entry{background}{126}{background}
+\entry{suspending jobs}{126}{suspending jobs}
+\entry{Readline, how to use}{130}{Readline, how to use}
+\entry{interaction, readline}{131}{interaction, readline}
+\entry{notation, readline}{132}{notation, readline}
+\entry{command editing}{132}{command editing}
+\entry{editing command lines}{132}{editing command lines}
+\entry{killing text}{133}{killing text}
+\entry{yanking text}{133}{yanking text}
+\entry{kill ring}{133}{kill ring}
+\entry{initialization file, readline}{134}{initialization file, readline}
+\entry{variables, readline}{135}{variables, readline}
+\entry{programmable completion}{159}{programmable completion}
+\entry{completion builtins}{162}{completion builtins}
+\entry{History, how to use}{168}{History, how to use}
+\entry{command history}{169}{command history}
+\entry{history list}{169}{history list}
+\entry{history builtins}{170}{history builtins}
+\entry{history expansion}{172}{history expansion}
+\entry{event designators}{173}{event designators}
+\entry{history events}{173}{history events}
+\entry{installation}{176}{installation}
+\entry{configuration}{176}{configuration}
+\entry{Bash installation}{176}{Bash installation}
+\entry{Bash configuration}{176}{Bash configuration}
diff --git a/doc/bashref.cps b/doc/bashref.cps
index ae331a6e..a2017be7 100644
--- a/doc/bashref.cps
+++ b/doc/bashref.cps
@@ -1,24 +1,24 @@
\initial {A}
\entry{alias expansion}{109}
-\entry{arithmetic evaluation}{107}
+\entry{arithmetic evaluation}{108}
\entry{arithmetic expansion}{37}
\entry{arithmetic operators}{108}
-\entry{arithmetic, shell}{107}
+\entry{arithmetic, shell}{108}
\entry{arrays}{110}
\initial {B}
-\entry{background}{125}
-\entry{Bash configuration}{175}
-\entry{Bash installation}{175}
+\entry{background}{126}
+\entry{Bash configuration}{176}
+\entry{Bash installation}{176}
\entry{binary arithmetic operators}{108}
\entry{bitwise arithmetic operators}{108}
\entry{Bourne shell}{5}
\entry{brace expansion}{25}
\entry{builtin}{3}
\initial {C}
-\entry{command editing}{131}
+\entry{command editing}{132}
\entry{command execution}{46}
\entry{command expansion}{45}
-\entry{command history}{168}
+\entry{command history}{169}
\entry{command search}{46}
\entry{command substitution}{36}
\entry{command timing}{10}
@@ -33,19 +33,19 @@
\entry{comments, shell}{9}
\entry{Compatibility Level}{122}
\entry{Compatibility Mode}{122}
-\entry{completion builtins}{161}
+\entry{completion builtins}{162}
\entry{conditional arithmetic operator}{108}
-\entry{configuration}{175}
+\entry{configuration}{176}
\entry{control operator}{3}
\entry{coprocess}{18}
\initial {D}
\entry{directory stack}{112}
\entry{dollar-single quote quoting}{6}
\initial {E}
-\entry{editing command lines}{131}
+\entry{editing command lines}{132}
\entry{environment}{48}
-\entry{evaluation, arithmetic}{107}
-\entry{event designators}{172}
+\entry{evaluation, arithmetic}{108}
+\entry{event designators}{173}
\entry{execution environment}{47}
\entry{exit status}{3, 48}
\entry{expansion}{25}
@@ -55,34 +55,34 @@
\entry{expansion, parameter}{27}
\entry{expansion, pathname}{39}
\entry{expansion, tilde}{26}
-\entry{expressions, arithmetic}{107}
-\entry{expressions, conditional}{105}
+\entry{expressions, arithmetic}{108}
+\entry{expressions, conditional}{106}
\initial {F}
\entry{field}{3}
\entry{filename}{3}
\entry{filename expansion}{39}
-\entry{foreground}{125}
+\entry{foreground}{126}
\entry{functions, shell}{19}
\initial {H}
-\entry{history builtins}{169}
-\entry{history events}{172}
-\entry{history expansion}{171}
-\entry{history list}{168}
-\entry{History, how to use}{167}
+\entry{history builtins}{170}
+\entry{history events}{173}
+\entry{history expansion}{172}
+\entry{history list}{169}
+\entry{History, how to use}{168}
\initial {I}
\entry{identifier}{3}
-\entry{initialization file, readline}{133}
-\entry{installation}{175}
-\entry{interaction, readline}{130}
+\entry{initialization file, readline}{134}
+\entry{installation}{176}
+\entry{interaction, readline}{131}
\entry{interactive shell}{102, 104}
\entry{internationalization}{7}
\entry{internationalized scripts}{8}
\initial {J}
\entry{job}{3}
-\entry{job control}{3, 125}
+\entry{job control}{3, 126}
\initial {K}
-\entry{kill ring}{132}
-\entry{killing text}{132}
+\entry{kill ring}{133}
+\entry{killing text}{133}
\initial {L}
\entry{localization}{7}
\entry{login shell}{102}
@@ -92,7 +92,7 @@
\initial {N}
\entry{name}{3}
\entry{native languages}{7}
-\entry{notation, readline}{131}
+\entry{notation, readline}{132}
\initial {O}
\entry{operator, shell}{3}
\initial {P}
@@ -109,20 +109,20 @@
\entry{process group}{3}
\entry{process group ID}{3}
\entry{process substitution}{38}
-\entry{programmable completion}{158}
+\entry{programmable completion}{159}
\entry{prompting}{114}
\initial {Q}
\entry{quoting}{6}
\entry{quoting, ANSI}{6}
\initial {R}
-\entry{Readline, how to use}{129}
+\entry{Readline, how to use}{130}
\entry{redirection}{41}
\entry{reserved word}{4}
\entry{reserved words}{9}
\entry{restricted shell}{115}
\entry{return status}{4}
\initial {S}
-\entry{shell arithmetic}{107}
+\entry{shell arithmetic}{108}
\entry{shell function}{19}
\entry{shell script}{50}
\entry{shell variable}{22}
@@ -132,7 +132,7 @@
\entry{special builtin}{4, 85}
\entry{startup files}{102}
\entry{string translations}{8}
-\entry{suspending jobs}{125}
+\entry{suspending jobs}{126}
\initial {T}
\entry{tilde expansion}{26}
\entry{token}{4}
@@ -141,9 +141,9 @@
\entry{unary arithmetic operators}{108}
\initial {V}
\entry{variable, shell}{22}
-\entry{variables, readline}{134}
+\entry{variables, readline}{135}
\initial {W}
\entry{word}{4}
\entry{word splitting}{38}
\initial {Y}
-\entry{yanking text}{132}
+\entry{yanking text}{133}
diff --git a/doc/bashref.fn b/doc/bashref.fn
index fd2e5855..24cfbfdb 100644
--- a/doc/bashref.fn
+++ b/doc/bashref.fn
@@ -1,117 +1,117 @@
-\entry{beginning-of-line (C-a)}{147}{\code {beginning-of-line (C-a)}}
-\entry{end-of-line (C-e)}{147}{\code {end-of-line (C-e)}}
-\entry{forward-char (C-f)}{147}{\code {forward-char (C-f)}}
-\entry{backward-char (C-b)}{147}{\code {backward-char (C-b)}}
-\entry{forward-word (M-f)}{147}{\code {forward-word (M-f)}}
-\entry{backward-word (M-b)}{147}{\code {backward-word (M-b)}}
-\entry{shell-forward-word (M-C-f)}{147}{\code {shell-forward-word (M-C-f)}}
-\entry{shell-backward-word (M-C-b)}{147}{\code {shell-backward-word (M-C-b)}}
-\entry{previous-screen-line ()}{148}{\code {previous-screen-line ()}}
-\entry{next-screen-line ()}{148}{\code {next-screen-line ()}}
-\entry{clear-display (M-C-l)}{148}{\code {clear-display (M-C-l)}}
-\entry{clear-screen (C-l)}{148}{\code {clear-screen (C-l)}}
-\entry{redraw-current-line ()}{148}{\code {redraw-current-line ()}}
-\entry{accept-line (Newline or Return)}{148}{\code {accept-line (Newline or Return)}}
-\entry{previous-history (C-p)}{148}{\code {previous-history (C-p)}}
-\entry{next-history (C-n)}{148}{\code {next-history (C-n)}}
-\entry{beginning-of-history (M-<)}{148}{\code {beginning-of-history (M-<)}}
-\entry{end-of-history (M->)}{148}{\code {end-of-history (M->)}}
-\entry{reverse-search-history (C-r)}{148}{\code {reverse-search-history (C-r)}}
-\entry{forward-search-history (C-s)}{149}{\code {forward-search-history (C-s)}}
-\entry{non-incremental-reverse-search-history (M-p)}{149}{\code {non-incremental-reverse-search-history (M-p)}}
-\entry{non-incremental-forward-search-history (M-n)}{149}{\code {non-incremental-forward-search-history (M-n)}}
-\entry{history-search-backward ()}{149}{\code {history-search-backward ()}}
-\entry{history-search-forward ()}{149}{\code {history-search-forward ()}}
-\entry{history-substring-search-backward ()}{149}{\code {history-substring-search-backward ()}}
-\entry{history-substring-search-forward ()}{149}{\code {history-substring-search-forward ()}}
-\entry{yank-nth-arg (M-C-y)}{149}{\code {yank-nth-arg (M-C-y)}}
-\entry{yank-last-arg (M-. or M-_)}{149}{\code {yank-last-arg (M-. or M-_)}}
-\entry{operate-and-get-next (C-o)}{150}{\code {operate-and-get-next (C-o)}}
-\entry{fetch-history ()}{150}{\code {fetch-history ()}}
-\entry{end-of-file (usually C-d)}{150}{\code {\i {end-of-file} (usually C-d)}}
-\entry{delete-char (C-d)}{150}{\code {delete-char (C-d)}}
-\entry{backward-delete-char (Rubout)}{150}{\code {backward-delete-char (Rubout)}}
-\entry{forward-backward-delete-char ()}{150}{\code {forward-backward-delete-char ()}}
-\entry{quoted-insert (C-q or C-v)}{150}{\code {quoted-insert (C-q or C-v)}}
-\entry{self-insert (a, b, A, 1, !, ...{})}{150}{\code {self-insert (a, b, A, 1, !, \dots {})}}
-\entry{bracketed-paste-begin ()}{150}{\code {bracketed-paste-begin ()}}
-\entry{transpose-chars (C-t)}{151}{\code {transpose-chars (C-t)}}
-\entry{transpose-words (M-t)}{151}{\code {transpose-words (M-t)}}
-\entry{shell-transpose-words (M-C-t)}{151}{\code {shell-transpose-words (M-C-t)}}
-\entry{upcase-word (M-u)}{151}{\code {upcase-word (M-u)}}
-\entry{downcase-word (M-l)}{151}{\code {downcase-word (M-l)}}
-\entry{capitalize-word (M-c)}{151}{\code {capitalize-word (M-c)}}
-\entry{overwrite-mode ()}{151}{\code {overwrite-mode ()}}
-\entry{kill-line (C-k)}{151}{\code {kill-line (C-k)}}
-\entry{backward-kill-line (C-x Rubout)}{152}{\code {backward-kill-line (C-x Rubout)}}
-\entry{unix-line-discard (C-u)}{152}{\code {unix-line-discard (C-u)}}
-\entry{kill-whole-line ()}{152}{\code {kill-whole-line ()}}
-\entry{kill-word (M-d)}{152}{\code {kill-word (M-d)}}
-\entry{backward-kill-word (M-DEL)}{152}{\code {backward-kill-word (M-\key {DEL})}}
-\entry{shell-kill-word (M-C-d)}{152}{\code {shell-kill-word (M-C-d)}}
-\entry{shell-backward-kill-word ()}{152}{\code {shell-backward-kill-word ()}}
-\entry{unix-word-rubout (C-w)}{152}{\code {unix-word-rubout (C-w)}}
-\entry{unix-filename-rubout ()}{152}{\code {unix-filename-rubout ()}}
-\entry{delete-horizontal-space ()}{152}{\code {delete-horizontal-space ()}}
-\entry{kill-region ()}{152}{\code {kill-region ()}}
-\entry{copy-region-as-kill ()}{152}{\code {copy-region-as-kill ()}}
-\entry{copy-backward-word ()}{152}{\code {copy-backward-word ()}}
-\entry{copy-forward-word ()}{152}{\code {copy-forward-word ()}}
-\entry{yank (C-y)}{152}{\code {yank (C-y)}}
-\entry{yank-pop (M-y)}{153}{\code {yank-pop (M-y)}}
-\entry{digit-argument (M-0, M-1, ...{} M--)}{153}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
-\entry{universal-argument ()}{153}{\code {universal-argument ()}}
-\entry{complete (TAB)}{153}{\code {complete (\key {TAB})}}
-\entry{possible-completions (M-?)}{153}{\code {possible-completions (M-?)}}
-\entry{insert-completions (M-*)}{153}{\code {insert-completions (M-*)}}
-\entry{menu-complete ()}{153}{\code {menu-complete ()}}
-\entry{menu-complete-backward ()}{154}{\code {menu-complete-backward ()}}
-\entry{export-completions ()}{154}{\code {export-completions ()}}
-\entry{delete-char-or-list ()}{154}{\code {delete-char-or-list ()}}
-\entry{complete-filename (M-/)}{154}{\code {complete-filename (M-/)}}
-\entry{possible-filename-completions (C-x /)}{154}{\code {possible-filename-completions (C-x /)}}
-\entry{complete-username (M-~)}{154}{\code {complete-username (M-~)}}
-\entry{possible-username-completions (C-x ~)}{154}{\code {possible-username-completions (C-x ~)}}
-\entry{complete-variable (M-$)}{154}{\code {complete-variable (M-$)}}
-\entry{possible-variable-completions (C-x $)}{154}{\code {possible-variable-completions (C-x $)}}
-\entry{complete-hostname (M-@)}{154}{\code {complete-hostname (M-@)}}
-\entry{possible-hostname-completions (C-x @)}{155}{\code {possible-hostname-completions (C-x @)}}
-\entry{complete-command (M-!)}{155}{\code {complete-command (M-!)}}
-\entry{possible-command-completions (C-x !)}{155}{\code {possible-command-completions (C-x !)}}
-\entry{dynamic-complete-history (M-TAB)}{155}{\code {dynamic-complete-history (M-\key {TAB})}}
-\entry{dabbrev-expand ()}{155}{\code {dabbrev-expand ()}}
-\entry{complete-into-braces (M-{\indexlbrace })}{155}{\code {complete-into-braces (M-{\tt \char 123})}}
-\entry{start-kbd-macro (C-x ()}{155}{\code {start-kbd-macro (C-x ()}}
-\entry{end-kbd-macro (C-x ))}{155}{\code {end-kbd-macro (C-x ))}}
-\entry{call-last-kbd-macro (C-x e)}{155}{\code {call-last-kbd-macro (C-x e)}}
-\entry{print-last-kbd-macro ()}{155}{\code {print-last-kbd-macro ()}}
-\entry{re-read-init-file (C-x C-r)}{155}{\code {re-read-init-file (C-x C-r)}}
-\entry{abort (C-g)}{155}{\code {abort (C-g)}}
-\entry{do-lowercase-version (M-A, M-B, M-x, ...{})}{156}{\code {do-lowercase-version (M-A, M-B, M-\var {x}, \dots {})}}
-\entry{prefix-meta (ESC)}{156}{\code {prefix-meta (\key {ESC})}}
-\entry{undo (C-_ or C-x C-u)}{156}{\code {undo (C-_ or C-x C-u)}}
-\entry{revert-line (M-r)}{156}{\code {revert-line (M-r)}}
-\entry{tilde-expand (M-&)}{156}{\code {tilde-expand (M-&)}}
-\entry{set-mark (C-@)}{156}{\code {set-mark (C-@)}}
-\entry{exchange-point-and-mark (C-x C-x)}{156}{\code {exchange-point-and-mark (C-x C-x)}}
-\entry{character-search (C-])}{156}{\code {character-search (C-])}}
-\entry{character-search-backward (M-C-])}{156}{\code {character-search-backward (M-C-])}}
-\entry{skip-csi-sequence ()}{156}{\code {skip-csi-sequence ()}}
-\entry{insert-comment (M-#)}{156}{\code {insert-comment (M-#)}}
-\entry{dump-functions ()}{157}{\code {dump-functions ()}}
-\entry{dump-variables ()}{157}{\code {dump-variables ()}}
-\entry{dump-macros ()}{157}{\code {dump-macros ()}}
-\entry{execute-named-command (M-x)}{157}{\code {execute-named-command (M-x)}}
-\entry{spell-correct-word (C-x s)}{157}{\code {spell-correct-word (C-x s)}}
-\entry{glob-complete-word (M-g)}{157}{\code {glob-complete-word (M-g)}}
-\entry{glob-expand-word (C-x *)}{157}{\code {glob-expand-word (C-x *)}}
-\entry{glob-list-expansions (C-x g)}{157}{\code {glob-list-expansions (C-x g)}}
-\entry{shell-expand-line (M-C-e)}{157}{\code {shell-expand-line (M-C-e)}}
-\entry{shell-expand-and-requote-line ()}{157}{\code {shell-expand-and-requote-line ()}}
-\entry{history-expand-line (M-^)}{158}{\code {history-expand-line (M-^)}}
-\entry{magic-space ()}{158}{\code {magic-space ()}}
-\entry{alias-expand-line ()}{158}{\code {alias-expand-line ()}}
-\entry{history-and-alias-expand-line ()}{158}{\code {history-and-alias-expand-line ()}}
-\entry{insert-last-argument (M-. or M-_)}{158}{\code {insert-last-argument (M-. or M-_)}}
-\entry{edit-and-execute-command (C-x C-e)}{158}{\code {edit-and-execute-command (C-x C-e)}}
-\entry{display-shell-version (C-x C-v)}{158}{\code {display-shell-version (C-x C-v)}}
+\entry{beginning-of-line (C-a)}{148}{\code {beginning-of-line (C-a)}}
+\entry{end-of-line (C-e)}{148}{\code {end-of-line (C-e)}}
+\entry{forward-char (C-f)}{148}{\code {forward-char (C-f)}}
+\entry{backward-char (C-b)}{148}{\code {backward-char (C-b)}}
+\entry{forward-word (M-f)}{148}{\code {forward-word (M-f)}}
+\entry{backward-word (M-b)}{148}{\code {backward-word (M-b)}}
+\entry{shell-forward-word (M-C-f)}{148}{\code {shell-forward-word (M-C-f)}}
+\entry{shell-backward-word (M-C-b)}{148}{\code {shell-backward-word (M-C-b)}}
+\entry{previous-screen-line ()}{149}{\code {previous-screen-line ()}}
+\entry{next-screen-line ()}{149}{\code {next-screen-line ()}}
+\entry{clear-display (M-C-l)}{149}{\code {clear-display (M-C-l)}}
+\entry{clear-screen (C-l)}{149}{\code {clear-screen (C-l)}}
+\entry{redraw-current-line ()}{149}{\code {redraw-current-line ()}}
+\entry{accept-line (Newline or Return)}{149}{\code {accept-line (Newline or Return)}}
+\entry{previous-history (C-p)}{149}{\code {previous-history (C-p)}}
+\entry{next-history (C-n)}{149}{\code {next-history (C-n)}}
+\entry{beginning-of-history (M-<)}{149}{\code {beginning-of-history (M-<)}}
+\entry{end-of-history (M->)}{149}{\code {end-of-history (M->)}}
+\entry{reverse-search-history (C-r)}{149}{\code {reverse-search-history (C-r)}}
+\entry{forward-search-history (C-s)}{150}{\code {forward-search-history (C-s)}}
+\entry{non-incremental-reverse-search-history (M-p)}{150}{\code {non-incremental-reverse-search-history (M-p)}}
+\entry{non-incremental-forward-search-history (M-n)}{150}{\code {non-incremental-forward-search-history (M-n)}}
+\entry{history-search-backward ()}{150}{\code {history-search-backward ()}}
+\entry{history-search-forward ()}{150}{\code {history-search-forward ()}}
+\entry{history-substring-search-backward ()}{150}{\code {history-substring-search-backward ()}}
+\entry{history-substring-search-forward ()}{150}{\code {history-substring-search-forward ()}}
+\entry{yank-nth-arg (M-C-y)}{150}{\code {yank-nth-arg (M-C-y)}}
+\entry{yank-last-arg (M-. or M-_)}{150}{\code {yank-last-arg (M-. or M-_)}}
+\entry{operate-and-get-next (C-o)}{151}{\code {operate-and-get-next (C-o)}}
+\entry{fetch-history ()}{151}{\code {fetch-history ()}}
+\entry{end-of-file (usually C-d)}{151}{\code {\i {end-of-file} (usually C-d)}}
+\entry{delete-char (C-d)}{151}{\code {delete-char (C-d)}}
+\entry{backward-delete-char (Rubout)}{151}{\code {backward-delete-char (Rubout)}}
+\entry{forward-backward-delete-char ()}{151}{\code {forward-backward-delete-char ()}}
+\entry{quoted-insert (C-q or C-v)}{151}{\code {quoted-insert (C-q or C-v)}}
+\entry{self-insert (a, b, A, 1, !, ...{})}{151}{\code {self-insert (a, b, A, 1, !, \dots {})}}
+\entry{bracketed-paste-begin ()}{151}{\code {bracketed-paste-begin ()}}
+\entry{transpose-chars (C-t)}{152}{\code {transpose-chars (C-t)}}
+\entry{transpose-words (M-t)}{152}{\code {transpose-words (M-t)}}
+\entry{shell-transpose-words (M-C-t)}{152}{\code {shell-transpose-words (M-C-t)}}
+\entry{upcase-word (M-u)}{152}{\code {upcase-word (M-u)}}
+\entry{downcase-word (M-l)}{152}{\code {downcase-word (M-l)}}
+\entry{capitalize-word (M-c)}{152}{\code {capitalize-word (M-c)}}
+\entry{overwrite-mode ()}{152}{\code {overwrite-mode ()}}
+\entry{kill-line (C-k)}{152}{\code {kill-line (C-k)}}
+\entry{backward-kill-line (C-x Rubout)}{153}{\code {backward-kill-line (C-x Rubout)}}
+\entry{unix-line-discard (C-u)}{153}{\code {unix-line-discard (C-u)}}
+\entry{kill-whole-line ()}{153}{\code {kill-whole-line ()}}
+\entry{kill-word (M-d)}{153}{\code {kill-word (M-d)}}
+\entry{backward-kill-word (M-DEL)}{153}{\code {backward-kill-word (M-\key {DEL})}}
+\entry{shell-kill-word (M-C-d)}{153}{\code {shell-kill-word (M-C-d)}}
+\entry{shell-backward-kill-word ()}{153}{\code {shell-backward-kill-word ()}}
+\entry{unix-word-rubout (C-w)}{153}{\code {unix-word-rubout (C-w)}}
+\entry{unix-filename-rubout ()}{153}{\code {unix-filename-rubout ()}}
+\entry{delete-horizontal-space ()}{153}{\code {delete-horizontal-space ()}}
+\entry{kill-region ()}{153}{\code {kill-region ()}}
+\entry{copy-region-as-kill ()}{153}{\code {copy-region-as-kill ()}}
+\entry{copy-backward-word ()}{153}{\code {copy-backward-word ()}}
+\entry{copy-forward-word ()}{153}{\code {copy-forward-word ()}}
+\entry{yank (C-y)}{153}{\code {yank (C-y)}}
+\entry{yank-pop (M-y)}{154}{\code {yank-pop (M-y)}}
+\entry{digit-argument (M-0, M-1, ...{} M--)}{154}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
+\entry{universal-argument ()}{154}{\code {universal-argument ()}}
+\entry{complete (TAB)}{154}{\code {complete (\key {TAB})}}
+\entry{possible-completions (M-?)}{154}{\code {possible-completions (M-?)}}
+\entry{insert-completions (M-*)}{154}{\code {insert-completions (M-*)}}
+\entry{menu-complete ()}{154}{\code {menu-complete ()}}
+\entry{menu-complete-backward ()}{155}{\code {menu-complete-backward ()}}
+\entry{export-completions ()}{155}{\code {export-completions ()}}
+\entry{delete-char-or-list ()}{155}{\code {delete-char-or-list ()}}
+\entry{complete-filename (M-/)}{155}{\code {complete-filename (M-/)}}
+\entry{possible-filename-completions (C-x /)}{155}{\code {possible-filename-completions (C-x /)}}
+\entry{complete-username (M-~)}{155}{\code {complete-username (M-~)}}
+\entry{possible-username-completions (C-x ~)}{155}{\code {possible-username-completions (C-x ~)}}
+\entry{complete-variable (M-$)}{155}{\code {complete-variable (M-$)}}
+\entry{possible-variable-completions (C-x $)}{155}{\code {possible-variable-completions (C-x $)}}
+\entry{complete-hostname (M-@)}{155}{\code {complete-hostname (M-@)}}
+\entry{possible-hostname-completions (C-x @)}{156}{\code {possible-hostname-completions (C-x @)}}
+\entry{complete-command (M-!)}{156}{\code {complete-command (M-!)}}
+\entry{possible-command-completions (C-x !)}{156}{\code {possible-command-completions (C-x !)}}
+\entry{dynamic-complete-history (M-TAB)}{156}{\code {dynamic-complete-history (M-\key {TAB})}}
+\entry{dabbrev-expand ()}{156}{\code {dabbrev-expand ()}}
+\entry{complete-into-braces (M-{\indexlbrace })}{156}{\code {complete-into-braces (M-{\tt \char 123})}}
+\entry{start-kbd-macro (C-x ()}{156}{\code {start-kbd-macro (C-x ()}}
+\entry{end-kbd-macro (C-x ))}{156}{\code {end-kbd-macro (C-x ))}}
+\entry{call-last-kbd-macro (C-x e)}{156}{\code {call-last-kbd-macro (C-x e)}}
+\entry{print-last-kbd-macro ()}{156}{\code {print-last-kbd-macro ()}}
+\entry{re-read-init-file (C-x C-r)}{156}{\code {re-read-init-file (C-x C-r)}}
+\entry{abort (C-g)}{156}{\code {abort (C-g)}}
+\entry{do-lowercase-version (M-A, M-B, M-x, ...{})}{157}{\code {do-lowercase-version (M-A, M-B, M-\var {x}, \dots {})}}
+\entry{prefix-meta (ESC)}{157}{\code {prefix-meta (\key {ESC})}}
+\entry{undo (C-_ or C-x C-u)}{157}{\code {undo (C-_ or C-x C-u)}}
+\entry{revert-line (M-r)}{157}{\code {revert-line (M-r)}}
+\entry{tilde-expand (M-&)}{157}{\code {tilde-expand (M-&)}}
+\entry{set-mark (C-@)}{157}{\code {set-mark (C-@)}}
+\entry{exchange-point-and-mark (C-x C-x)}{157}{\code {exchange-point-and-mark (C-x C-x)}}
+\entry{character-search (C-])}{157}{\code {character-search (C-])}}
+\entry{character-search-backward (M-C-])}{157}{\code {character-search-backward (M-C-])}}
+\entry{skip-csi-sequence ()}{157}{\code {skip-csi-sequence ()}}
+\entry{insert-comment (M-#)}{157}{\code {insert-comment (M-#)}}
+\entry{dump-functions ()}{158}{\code {dump-functions ()}}
+\entry{dump-variables ()}{158}{\code {dump-variables ()}}
+\entry{dump-macros ()}{158}{\code {dump-macros ()}}
+\entry{execute-named-command (M-x)}{158}{\code {execute-named-command (M-x)}}
+\entry{spell-correct-word (C-x s)}{158}{\code {spell-correct-word (C-x s)}}
+\entry{glob-complete-word (M-g)}{158}{\code {glob-complete-word (M-g)}}
+\entry{glob-expand-word (C-x *)}{158}{\code {glob-expand-word (C-x *)}}
+\entry{glob-list-expansions (C-x g)}{158}{\code {glob-list-expansions (C-x g)}}
+\entry{shell-expand-line (M-C-e)}{158}{\code {shell-expand-line (M-C-e)}}
+\entry{shell-expand-and-requote-line ()}{158}{\code {shell-expand-and-requote-line ()}}
+\entry{history-expand-line (M-^)}{159}{\code {history-expand-line (M-^)}}
+\entry{magic-space ()}{159}{\code {magic-space ()}}
+\entry{alias-expand-line ()}{159}{\code {alias-expand-line ()}}
+\entry{history-and-alias-expand-line ()}{159}{\code {history-and-alias-expand-line ()}}
+\entry{insert-last-argument (M-. or M-_)}{159}{\code {insert-last-argument (M-. or M-_)}}
+\entry{edit-and-execute-command (C-x C-e)}{159}{\code {edit-and-execute-command (C-x C-e)}}
+\entry{display-shell-version (C-x C-v)}{159}{\code {display-shell-version (C-x C-v)}}
diff --git a/doc/bashref.fns b/doc/bashref.fns
index ed1685ca..c00245c3 100644
--- a/doc/bashref.fns
+++ b/doc/bashref.fns
@@ -1,137 +1,137 @@
\initial {A}
-\entry{\code {abort (C-g)}}{155}
-\entry{\code {accept-line (Newline or Return)}}{148}
-\entry{\code {alias-expand-line ()}}{158}
+\entry{\code {abort (C-g)}}{156}
+\entry{\code {accept-line (Newline or Return)}}{149}
+\entry{\code {alias-expand-line ()}}{159}
\initial {B}
-\entry{\code {backward-char (C-b)}}{147}
-\entry{\code {backward-delete-char (Rubout)}}{150}
-\entry{\code {backward-kill-line (C-x Rubout)}}{152}
-\entry{\code {backward-kill-word (M-\key {DEL})}}{152}
-\entry{\code {backward-word (M-b)}}{147}
-\entry{\code {beginning-of-history (M-<)}}{148}
-\entry{\code {beginning-of-line (C-a)}}{147}
-\entry{\code {bracketed-paste-begin ()}}{150}
+\entry{\code {backward-char (C-b)}}{148}
+\entry{\code {backward-delete-char (Rubout)}}{151}
+\entry{\code {backward-kill-line (C-x Rubout)}}{153}
+\entry{\code {backward-kill-word (M-\key {DEL})}}{153}
+\entry{\code {backward-word (M-b)}}{148}
+\entry{\code {beginning-of-history (M-<)}}{149}
+\entry{\code {beginning-of-line (C-a)}}{148}
+\entry{\code {bracketed-paste-begin ()}}{151}
\initial {C}
-\entry{\code {call-last-kbd-macro (C-x e)}}{155}
-\entry{\code {capitalize-word (M-c)}}{151}
-\entry{\code {character-search (C-])}}{156}
-\entry{\code {character-search-backward (M-C-])}}{156}
-\entry{\code {clear-display (M-C-l)}}{148}
-\entry{\code {clear-screen (C-l)}}{148}
-\entry{\code {complete (\key {TAB})}}{153}
-\entry{\code {complete-command (M-!)}}{155}
-\entry{\code {complete-filename (M-/)}}{154}
-\entry{\code {complete-hostname (M-@)}}{154}
-\entry{\code {complete-into-braces (M-{\tt \char 123})}}{155}
-\entry{\code {complete-username (M-~)}}{154}
-\entry{\code {complete-variable (M-$)}}{154}
-\entry{\code {copy-backward-word ()}}{152}
-\entry{\code {copy-forward-word ()}}{152}
-\entry{\code {copy-region-as-kill ()}}{152}
+\entry{\code {call-last-kbd-macro (C-x e)}}{156}
+\entry{\code {capitalize-word (M-c)}}{152}
+\entry{\code {character-search (C-])}}{157}
+\entry{\code {character-search-backward (M-C-])}}{157}
+\entry{\code {clear-display (M-C-l)}}{149}
+\entry{\code {clear-screen (C-l)}}{149}
+\entry{\code {complete (\key {TAB})}}{154}
+\entry{\code {complete-command (M-!)}}{156}
+\entry{\code {complete-filename (M-/)}}{155}
+\entry{\code {complete-hostname (M-@)}}{155}
+\entry{\code {complete-into-braces (M-{\tt \char 123})}}{156}
+\entry{\code {complete-username (M-~)}}{155}
+\entry{\code {complete-variable (M-$)}}{155}
+\entry{\code {copy-backward-word ()}}{153}
+\entry{\code {copy-forward-word ()}}{153}
+\entry{\code {copy-region-as-kill ()}}{153}
\initial {D}
-\entry{\code {dabbrev-expand ()}}{155}
-\entry{\code {delete-char (C-d)}}{150}
-\entry{\code {delete-char-or-list ()}}{154}
-\entry{\code {delete-horizontal-space ()}}{152}
-\entry{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{153}
-\entry{\code {display-shell-version (C-x C-v)}}{158}
-\entry{\code {do-lowercase-version (M-A, M-B, M-\var {x}, \dots {})}}{156}
-\entry{\code {downcase-word (M-l)}}{151}
-\entry{\code {dump-functions ()}}{157}
-\entry{\code {dump-macros ()}}{157}
-\entry{\code {dump-variables ()}}{157}
-\entry{\code {dynamic-complete-history (M-\key {TAB})}}{155}
+\entry{\code {dabbrev-expand ()}}{156}
+\entry{\code {delete-char (C-d)}}{151}
+\entry{\code {delete-char-or-list ()}}{155}
+\entry{\code {delete-horizontal-space ()}}{153}
+\entry{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{154}
+\entry{\code {display-shell-version (C-x C-v)}}{159}
+\entry{\code {do-lowercase-version (M-A, M-B, M-\var {x}, \dots {})}}{157}
+\entry{\code {downcase-word (M-l)}}{152}
+\entry{\code {dump-functions ()}}{158}
+\entry{\code {dump-macros ()}}{158}
+\entry{\code {dump-variables ()}}{158}
+\entry{\code {dynamic-complete-history (M-\key {TAB})}}{156}
\initial {E}
-\entry{\code {edit-and-execute-command (C-x C-e)}}{158}
-\entry{\code {end-kbd-macro (C-x ))}}{155}
-\entry{\code {\i {end-of-file} (usually C-d)}}{150}
-\entry{\code {end-of-history (M->)}}{148}
-\entry{\code {end-of-line (C-e)}}{147}
-\entry{\code {exchange-point-and-mark (C-x C-x)}}{156}
-\entry{\code {execute-named-command (M-x)}}{157}
-\entry{\code {export-completions ()}}{154}
+\entry{\code {edit-and-execute-command (C-x C-e)}}{159}
+\entry{\code {end-kbd-macro (C-x ))}}{156}
+\entry{\code {\i {end-of-file} (usually C-d)}}{151}
+\entry{\code {end-of-history (M->)}}{149}
+\entry{\code {end-of-line (C-e)}}{148}
+\entry{\code {exchange-point-and-mark (C-x C-x)}}{157}
+\entry{\code {execute-named-command (M-x)}}{158}
+\entry{\code {export-completions ()}}{155}
\initial {F}
-\entry{\code {fetch-history ()}}{150}
-\entry{\code {forward-backward-delete-char ()}}{150}
-\entry{\code {forward-char (C-f)}}{147}
-\entry{\code {forward-search-history (C-s)}}{149}
-\entry{\code {forward-word (M-f)}}{147}
+\entry{\code {fetch-history ()}}{151}
+\entry{\code {forward-backward-delete-char ()}}{151}
+\entry{\code {forward-char (C-f)}}{148}
+\entry{\code {forward-search-history (C-s)}}{150}
+\entry{\code {forward-word (M-f)}}{148}
\initial {G}
-\entry{\code {glob-complete-word (M-g)}}{157}
-\entry{\code {glob-expand-word (C-x *)}}{157}
-\entry{\code {glob-list-expansions (C-x g)}}{157}
+\entry{\code {glob-complete-word (M-g)}}{158}
+\entry{\code {glob-expand-word (C-x *)}}{158}
+\entry{\code {glob-list-expansions (C-x g)}}{158}
\initial {H}
-\entry{\code {history-and-alias-expand-line ()}}{158}
-\entry{\code {history-expand-line (M-^)}}{158}
-\entry{\code {history-search-backward ()}}{149}
-\entry{\code {history-search-forward ()}}{149}
-\entry{\code {history-substring-search-backward ()}}{149}
-\entry{\code {history-substring-search-forward ()}}{149}
+\entry{\code {history-and-alias-expand-line ()}}{159}
+\entry{\code {history-expand-line (M-^)}}{159}
+\entry{\code {history-search-backward ()}}{150}
+\entry{\code {history-search-forward ()}}{150}
+\entry{\code {history-substring-search-backward ()}}{150}
+\entry{\code {history-substring-search-forward ()}}{150}
\initial {I}
-\entry{\code {insert-comment (M-#)}}{156}
-\entry{\code {insert-completions (M-*)}}{153}
-\entry{\code {insert-last-argument (M-. or M-_)}}{158}
+\entry{\code {insert-comment (M-#)}}{157}
+\entry{\code {insert-completions (M-*)}}{154}
+\entry{\code {insert-last-argument (M-. or M-_)}}{159}
\initial {K}
-\entry{\code {kill-line (C-k)}}{151}
-\entry{\code {kill-region ()}}{152}
-\entry{\code {kill-whole-line ()}}{152}
-\entry{\code {kill-word (M-d)}}{152}
+\entry{\code {kill-line (C-k)}}{152}
+\entry{\code {kill-region ()}}{153}
+\entry{\code {kill-whole-line ()}}{153}
+\entry{\code {kill-word (M-d)}}{153}
\initial {M}
-\entry{\code {magic-space ()}}{158}
-\entry{\code {menu-complete ()}}{153}
-\entry{\code {menu-complete-backward ()}}{154}
+\entry{\code {magic-space ()}}{159}
+\entry{\code {menu-complete ()}}{154}
+\entry{\code {menu-complete-backward ()}}{155}
\initial {N}
-\entry{\code {next-history (C-n)}}{148}
-\entry{\code {next-screen-line ()}}{148}
-\entry{\code {non-incremental-forward-search-history (M-n)}}{149}
-\entry{\code {non-incremental-reverse-search-history (M-p)}}{149}
+\entry{\code {next-history (C-n)}}{149}
+\entry{\code {next-screen-line ()}}{149}
+\entry{\code {non-incremental-forward-search-history (M-n)}}{150}
+\entry{\code {non-incremental-reverse-search-history (M-p)}}{150}
\initial {O}
-\entry{\code {operate-and-get-next (C-o)}}{150}
-\entry{\code {overwrite-mode ()}}{151}
+\entry{\code {operate-and-get-next (C-o)}}{151}
+\entry{\code {overwrite-mode ()}}{152}
\initial {P}
-\entry{\code {possible-command-completions (C-x !)}}{155}
-\entry{\code {possible-completions (M-?)}}{153}
-\entry{\code {possible-filename-completions (C-x /)}}{154}
-\entry{\code {possible-hostname-completions (C-x @)}}{155}
-\entry{\code {possible-username-completions (C-x ~)}}{154}
-\entry{\code {possible-variable-completions (C-x $)}}{154}
-\entry{\code {prefix-meta (\key {ESC})}}{156}
-\entry{\code {previous-history (C-p)}}{148}
-\entry{\code {previous-screen-line ()}}{148}
-\entry{\code {print-last-kbd-macro ()}}{155}
+\entry{\code {possible-command-completions (C-x !)}}{156}
+\entry{\code {possible-completions (M-?)}}{154}
+\entry{\code {possible-filename-completions (C-x /)}}{155}
+\entry{\code {possible-hostname-completions (C-x @)}}{156}
+\entry{\code {possible-username-completions (C-x ~)}}{155}
+\entry{\code {possible-variable-completions (C-x $)}}{155}
+\entry{\code {prefix-meta (\key {ESC})}}{157}
+\entry{\code {previous-history (C-p)}}{149}
+\entry{\code {previous-screen-line ()}}{149}
+\entry{\code {print-last-kbd-macro ()}}{156}
\initial {Q}
-\entry{\code {quoted-insert (C-q or C-v)}}{150}
+\entry{\code {quoted-insert (C-q or C-v)}}{151}
\initial {R}
-\entry{\code {re-read-init-file (C-x C-r)}}{155}
-\entry{\code {redraw-current-line ()}}{148}
-\entry{\code {reverse-search-history (C-r)}}{148}
-\entry{\code {revert-line (M-r)}}{156}
+\entry{\code {re-read-init-file (C-x C-r)}}{156}
+\entry{\code {redraw-current-line ()}}{149}
+\entry{\code {reverse-search-history (C-r)}}{149}
+\entry{\code {revert-line (M-r)}}{157}
\initial {S}
-\entry{\code {self-insert (a, b, A, 1, !, \dots {})}}{150}
-\entry{\code {set-mark (C-@)}}{156}
-\entry{\code {shell-backward-kill-word ()}}{152}
-\entry{\code {shell-backward-word (M-C-b)}}{147}
-\entry{\code {shell-expand-and-requote-line ()}}{157}
-\entry{\code {shell-expand-line (M-C-e)}}{157}
-\entry{\code {shell-forward-word (M-C-f)}}{147}
-\entry{\code {shell-kill-word (M-C-d)}}{152}
-\entry{\code {shell-transpose-words (M-C-t)}}{151}
-\entry{\code {skip-csi-sequence ()}}{156}
-\entry{\code {spell-correct-word (C-x s)}}{157}
-\entry{\code {start-kbd-macro (C-x ()}}{155}
+\entry{\code {self-insert (a, b, A, 1, !, \dots {})}}{151}
+\entry{\code {set-mark (C-@)}}{157}
+\entry{\code {shell-backward-kill-word ()}}{153}
+\entry{\code {shell-backward-word (M-C-b)}}{148}
+\entry{\code {shell-expand-and-requote-line ()}}{158}
+\entry{\code {shell-expand-line (M-C-e)}}{158}
+\entry{\code {shell-forward-word (M-C-f)}}{148}
+\entry{\code {shell-kill-word (M-C-d)}}{153}
+\entry{\code {shell-transpose-words (M-C-t)}}{152}
+\entry{\code {skip-csi-sequence ()}}{157}
+\entry{\code {spell-correct-word (C-x s)}}{158}
+\entry{\code {start-kbd-macro (C-x ()}}{156}
\initial {T}
-\entry{\code {tilde-expand (M-&)}}{156}
-\entry{\code {transpose-chars (C-t)}}{151}
-\entry{\code {transpose-words (M-t)}}{151}
+\entry{\code {tilde-expand (M-&)}}{157}
+\entry{\code {transpose-chars (C-t)}}{152}
+\entry{\code {transpose-words (M-t)}}{152}
\initial {U}
-\entry{\code {undo (C-_ or C-x C-u)}}{156}
-\entry{\code {universal-argument ()}}{153}
-\entry{\code {unix-filename-rubout ()}}{152}
-\entry{\code {unix-line-discard (C-u)}}{152}
-\entry{\code {unix-word-rubout (C-w)}}{152}
-\entry{\code {upcase-word (M-u)}}{151}
+\entry{\code {undo (C-_ or C-x C-u)}}{157}
+\entry{\code {universal-argument ()}}{154}
+\entry{\code {unix-filename-rubout ()}}{153}
+\entry{\code {unix-line-discard (C-u)}}{153}
+\entry{\code {unix-word-rubout (C-w)}}{153}
+\entry{\code {upcase-word (M-u)}}{152}
\initial {Y}
-\entry{\code {yank (C-y)}}{152}
-\entry{\code {yank-last-arg (M-. or M-_)}}{149}
-\entry{\code {yank-nth-arg (M-C-y)}}{149}
-\entry{\code {yank-pop (M-y)}}{153}
+\entry{\code {yank (C-y)}}{153}
+\entry{\code {yank-last-arg (M-. or M-_)}}{150}
+\entry{\code {yank-nth-arg (M-C-y)}}{150}
+\entry{\code {yank-pop (M-y)}}{154}
diff --git a/doc/bashref.html b/doc/bashref.html
index f7b603a4..08792f69 100644
--- a/doc/bashref.html
+++ b/doc/bashref.html
@@ -4,9 +4,9 @@