]> git.ipfire.org Git - thirdparty/bash.git/commitdiff
taking the length of an unset variable subscripted with anything but @ or * is a...
authorChet Ramey <chet.ramey@case.edu>
Fri, 24 Jan 2025 16:21:16 +0000 (11:21 -0500)
committerChet Ramey <chet.ramey@case.edu>
Fri, 24 Jan 2025 16:21:16 +0000 (11:21 -0500)
19 files changed:
CWRU/CWRU.chlog
Makefile.in
builtins/shopt.def
doc/bash.0
doc/bash.1
doc/bash.info
doc/bashref.info
doc/bashref.texi
doc/builtins.0
eval.c
lib/readline/display.c
lib/readline/doc/hsuser.texi
parse.y
subst.c
tests/comsub2.right
tests/exec.right
tests/extglob.right
tests/shopt.right
tests/varenv.right

index dfcc99970eafb3da0c9695c4ea4e7df000d507b3..22738d7c9146d7dd373909cb271a64885ed76521 100644 (file)
@@ -10834,3 +10834,39 @@ examples/loadables/fltexpr.c
 builtins/printf.def
        - getarg(), advancearg(): cosmetic changes to make it easier to
          implement %N$ format specifiers in the future
+
+                                  1/18
+                                  ----
+subst.c
+       - array_length_reference: requesting the length of an element of an
+         unset variable using array syntax is a fatal error when `set -u'
+         is enabled and the subscript is not `@' or `*'.
+         Inspired by a report from Ian Kelling <iank@fsf.org>
+
+                                  1/20
+                                  ----
+parse.y
+       - decode_prompt_string: since Debian has made the spectaculary bad call
+         to allow arbitrary characters in usernames, protect the results of
+         the \u expansion in the same way as \[Ww] and \[Hh] (externally-
+         controlled data)
+         From https://savannah.gnu.org/patch/?10496
+
+                                  1/21
+                                  ----
+eval.c
+       - reader_loop: if we longjmp with ERREXIT, don't reset any local
+         function contexts in posix mode, since POSIX says to exit as if
+         executing the `exit builtin with no arguments'. Revision of change
+         from 7/2022.
+         From a report by Ivan Shapovalov <intelfx@intelfx.name> in 11/2024
+
+lib/readline/display.c
+       - rl_redisplay: after calling update_line, when putting the cursor
+         where it needs to be and reprinting part of the line with the
+         prompt that contains invisible characters, make sure we start to
+         output characters at the portion in the prompt buffer that begins
+         on the current line and only offset by the number of invisible
+         characters on the current line, and set _rl_last_c_pos accordingly
+         in both multibyte and singlebyte locales.
+         Fixes bug reported by Andreas Schwab <schwab@linux-m68k.org>
index 30237239fd6cbd467b17d1da6790f6728eb2026c..14af3298e58cdbb4654bfb23d40460984be6f912 100644 (file)
@@ -1182,6 +1182,7 @@ expr.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
 expr.o: make_cmd.h subst.h sig.h pathnames.h externs.h flags.h execute_cmd.h
 expr.o: ${BASHINCDIR}/chartypes.h
 expr.o: assoc.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/typemax.h
+expr.o: $(DEFSRC)/common.h $(DEFDIR)/builtext.h
 findcmd.o: config.h bashtypes.h ${BASHINCDIR}/filecntl.h ${BASHINCDIR}/posixstat.h bashansi.h
 findcmd.o: ${BASHINCDIR}/ansi_stdlib.h ${BASHINCDIR}/memalloc.h shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h command.h
 findcmd.o: ${BASHINCDIR}/stdc.h error.h general.h xmalloc.h variables.h arrayfunc.h conftypes.h quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h
index 4994ebc46a57c5ad60e663574e910d98bca5bd9b..fe429c01273737efabfff7a2ef74b51e6708ea55 100644 (file)
@@ -70,7 +70,7 @@ $END
 #define UNSETOPT       0
 #define SETOPT         1
 
-#define OPTFMT         "%-25s %s\n"
+#define OPTFMT         "%-20s\t%s\n"
 
 extern int allow_null_glob_expansion, fail_glob_expansion, glob_dot_filenames;
 extern int cdable_vars, mail_warning, source_uses_path;
index 9cb764df99c8ec2722d663a4f5c39433ae6121a4..052c346054e6e9e7b769ea9ff63fc04a5e276611 100644 (file)
@@ -892,110 +892,111 @@ P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS
               appearing  in  B\bBA\bAS\bSH\bHO\bOP\bPT\bTS\bS  are  those reported as _\bo_\bn by s\bsh\bho\bop\bpt\bt.  If
               this variable is in the environment when  b\bba\bas\bsh\bh  starts  up,  the
               shell enables each option in the list before reading any startup
-              files.  This variable is read-only.
+              files.   If  this variable is exported, child shells will enable
+              each option in the list.  This variable is read-only.
        B\bBA\bAS\bSH\bHP\bPI\bID\bD
-              Expands  to  the  process  ID of the current b\bba\bas\bsh\bh process.  This
-              differs from $\b$$\b$ under certain circumstances, such  as  subshells
-              that  do  not require b\bba\bas\bsh\bh to be re-initialized.  Assignments to
-              B\bBA\bAS\bSH\bHP\bPI\bID\bhave no effect.  If B\bBA\bAS\bSH\bHP\bPI\bID\bD is unset, it loses its  spe-
+              Expands to the process ID of the  current  b\bba\bas\bsh\bh  process.   This
+              differs  from  $\b$$\b$ under certain circumstances, such as subshells
+              that do not require b\bba\bas\bsh\bh to be re-initialized.   Assignments  to
+              B\bBA\bAS\bSH\bHP\bPI\bID\b have no effect.  If B\bBA\bAS\bSH\bHP\bPI\bID\bD is unset, it loses its spe-
               cial properties, even if it is subsequently reset.
        B\bBA\bAS\bSH\bH_\b_A\bAL\bLI\bIA\bAS\bSE\bES\bS
-              An  associative  array  variable whose members correspond to the
-              internal list of aliases as maintained  by  the  a\bal\bli\bia\bas\b builtin.
-              Elements  added to this array appear in the alias list; however,
-              unsetting array elements currently does not remove aliases  from
-              the  alias list.  If B\bBA\bAS\bSH\bH_\b_A\bAL\bLI\bIA\bAS\bSE\bES\bS is unset, it loses its special
+              An associative array variable whose members  correspond  to  the
+              internal  list  of  aliases  as maintained by the a\bal\bli\bia\bas\bs builtin.
+              Elements added to this array appear in the alias list;  however,
+              unsetting  array elements currently does not remove aliases from
+              the alias list.  If B\bBA\bAS\bSH\bH_\b_A\bAL\bLI\bIA\bAS\bSE\bES\bS is unset, it loses its  special
               properties, even if it is subsequently reset.
        B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGC\bC
-              An array variable whose values are the number of  parameters  in
+              An  array  variable whose values are the number of parameters in
               each frame of the current b\bba\bas\bsh\bh execution call stack.  The number
-              of  parameters  to  the  current  subroutine  (shell function or
-              script executed with .\b. or s\bso\bou\bur\brc\bce\be) is at the top  of  the  stack.
-              When  a  subroutine is executed, the number of parameters passed
+              of parameters to  the  current  subroutine  (shell  function  or
+              script  executed  with  .\b. or s\bso\bou\bur\brc\bce\be) is at the top of the stack.
+              When a subroutine is executed, the number of  parameters  passed
               is pushed onto B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGC\bC.  The shell sets B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGC\bC only when in
               extended debugging mode (see the description of the e\bex\bxt\btd\bde\beb\bbu\bug\bg op-
-              tion to the s\bsh\bho\bop\bpt\bt builtin below).  Setting  e\bex\bxt\btd\bde\beb\bbu\bug\bg  after  the
+              tion  to  the  s\bsh\bho\bop\bpt\bt builtin below).  Setting e\bex\bxt\btd\bde\beb\bbu\bug\bg after the
               shell has started to execute a script, or referencing this vari-
-              able  when  e\bex\bxt\btd\bde\beb\bbu\bug\bg is not set, may result in inconsistent val-
+              able when e\bex\bxt\btd\bde\beb\bbu\bug\bg is not set, may result in  inconsistent  val-
               ues.  Assignments to B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGC\bC have no effect, and it may not be
               unset.
        B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV
-              An array variable containing all of the parameters in  the  cur-
+              An  array  variable containing all of the parameters in the cur-
               rent b\bba\bas\bsh\bh execution call stack.  The final parameter of the last
-              subroutine  call is at the top of the stack; the first parameter
+              subroutine call is at the top of the stack; the first  parameter
               of the initial call is at the bottom.  When a subroutine is exe-
-              cuted, the shell pushes the supplied parameters onto  B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV.
-              The  shell  sets  B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV only when in extended debugging mode
+              cuted,  the shell pushes the supplied parameters onto B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV.
+              The shell sets B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV only when in  extended  debugging  mode
               (see the description of the e\bex\bxt\btd\bde\beb\bbu\bug\bg option to the s\bsh\bho\bop\bpt\bt builtin
               below).  Setting e\bex\bxt\btd\bde\beb\bbu\bug\bg after the shell has started to execute
               a script, or referencing this variable when e\bex\bxt\btd\bde\beb\bbu\bug\bg is not set,
-              may result in inconsistent  values.   Assignments  to  B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV
+              may  result  in  inconsistent  values.  Assignments to B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV
               have no effect, and it may not be unset.
        B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV0\b0
-              When  referenced, this variable expands to the name of the shell
+              When referenced, this variable expands to the name of the  shell
               or shell script (identical to $\b$0\b0; see the description of special
-              parameter 0 above).  Assigning a value to B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV0\b0 sets $\b$0\b to
-              the  same  value.   If B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV0\b0 is unset, it loses its special
+              parameter  0 above).  Assigning a value to B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV0\b0 sets $\b$0\b0 to
+              the same value.  If B\bBA\bAS\bSH\bH_\b_A\bAR\bRG\bGV\bV0\b0 is unset, it  loses  its  special
               properties, even if it is subsequently reset.
        B\bBA\bAS\bSH\bH_\b_C\bCM\bMD\bDS\bS
-              An associative array variable whose members  correspond  to  the
-              internal  hash  table  of  commands  as  maintained  by the h\bha\bas\bsh\bh
+              An  associative  array  variable whose members correspond to the
+              internal hash table  of  commands  as  maintained  by  the  h\bha\bas\bsh\bh
               builtin.  Adding elements to this array makes them appear in the
               hash table; however, unsetting array elements currently does not
-              remove command names from the hash table.  If B\bBA\bAS\bSH\bH_\b_C\bCM\bMD\bDS\bS  is  un-
+              remove  command  names from the hash table.  If B\bBA\bAS\bSH\bH_\b_C\bCM\bMD\bDS\bS is un-
               set, it loses its special properties, even if it is subsequently
               reset.
        B\bBA\bAS\bSH\bH_\b_C\bCO\bOM\bMM\bMA\bAN\bND\bD
-              Expands  to  the command currently being executed or about to be
-              executed, unless the shell is executing a command as the  result
+              Expands to the command currently being executed or about  to  be
+              executed,  unless the shell is executing a command as the result
               of a trap, in which case it is the command executing at the time
-              of  the  trap.   If  B\bBA\bAS\bSH\bH_\b_C\bCO\bOM\bMM\bMA\bAN\bND\bD is unset, it loses its special
+              of the trap.  If B\bBA\bAS\bSH\bH_\b_C\bCO\bOM\bMM\bMA\bAN\bND\bD is unset,  it  loses  its  special
               properties, even if it is subsequently reset.
        B\bBA\bAS\bSH\bH_\b_E\bEX\bXE\bEC\bCU\bUT\bTI\bIO\bON\bN_\b_S\bST\bTR\bRI\bIN\bNG\bG
               The command argument to the -\b-c\bc invocation option.
        B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\bO
-              An array variable whose members are the line numbers  in  source
-              files  where  each corresponding member of F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE was invoked.
+              An  array  variable whose members are the line numbers in source
+              files where each corresponding member of F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE  was  invoked.
               $\b${\b{B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\bO[\b[_\b$_\bi]\b]}\b}  is  the  line  number  in  the  source  file
               ($\b${\b{B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE[\b[_\b$_\bi_\b+_\b1]\b]}\b})  where  $\b${\b{F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE[\b[_\b$_\bi]\b]}\b}  was  called  (or
-              $\b${\b{B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\bO[\b[_\b$_\bi_\b-_\b1]\b]}\bif referenced within  another  shell  func-
-              tion).   Use  L\bLI\bIN\bNE\bEN\bNO\bO to obtain the current line number.  Assign-
+              $\b${\b{B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\bO[\b[_\b$_\bi_\b-_\b1]\b]}\b if  referenced  within another shell func-
+              tion).  Use L\bLI\bIN\bNE\bEN\bNO\bO to obtain the current line  number.   Assign-
               ments to B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\bO have no effect, and it may not be unset.
        B\bBA\bAS\bSH\bH_\b_L\bLO\bOA\bAD\bDA\bAB\bBL\bLE\bES\bS_\b_P\bPA\bAT\bTH\bH
-              A colon-separated list of directories in which the  e\ben\bna\bab\bbl\ble\b com-
+              A  colon-separated  list of directories in which the e\ben\bna\bab\bbl\ble\be com-
               mand looks for dynamically loadable builtins.
        B\bBA\bAS\bSH\bH_\b_M\bMO\bON\bNO\bOS\bSE\bEC\bCO\bON\bND\bDS\bS
-              Each  time  this variable is referenced, it expands to the value
-              returned by the system's monotonic clock, if one  is  available.
-              If  there is no monotonic clock, this is equivalent to E\bEP\bPO\bOC\bCH\bHS\bSE\bEC\bC-\b-
-              O\bON\bND\bDS\bS.  If B\bBA\bAS\bSH\bH_\b_M\bMO\bON\bNO\bOS\bSE\bEC\bCO\bON\bND\bDS\bS is unset, it loses its special  prop-
+              Each time this variable is referenced, it expands to  the  value
+              returned  by  the system's monotonic clock, if one is available.
+              If there is no monotonic clock, this is equivalent to  E\bEP\bPO\bOC\bCH\bHS\bSE\bEC\bC-\b-
+              O\bON\bND\bDS\bS.   If B\bBA\bAS\bSH\bH_\b_M\bMO\bON\bNO\bOS\bSE\bEC\bCO\bON\bND\bDS\bS is unset, it loses its special prop-
               erties, even if it is subsequently reset.
        B\bBA\bAS\bSH\bH_\b_R\bRE\bEM\bMA\bAT\bTC\bCH\bH
-              An  array  variable  whose members are assigned by the =\b=~\b~ binary
-              operator to the [\b[[\b[ conditional command.  The element with  index
-              0  is  the portion of the string matching the entire regular ex-
+              An array variable whose members are assigned by  the  =\b=~\b binary
+              operator  to the [\b[[\b[ conditional command.  The element with index
+              0 is the portion of the string matching the entire  regular  ex-
               pression.  The element with index _\bn is the portion of the string
               matching the _\bnth parenthesized subexpression.
        B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE
-              An array variable whose members are the source  filenames  where
-              the  corresponding  shell  function  names in the F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE array
+              An  array  variable whose members are the source filenames where
+              the corresponding shell function names  in  the  F\bFU\bUN\bNC\bCN\bNA\bAM\bME\b array
               variable are defined.  The shell function $\b${\b{F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE[\b[_\b$_\bi]\b]}\b} is de-
-              fined  in  the   file   $\b${\b{B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE[\b[_\b$_\bi]\b]}\b}   and   called   from
-              $\b${\b{B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE[\b[_\b$_\bi_\b+_\b1]\b]}\b}.   Assignments  to  B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE have no ef-
+              fined   in   the   file   $\b${\b{B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE[\b[_\b$_\bi]\b]}\b}   and  called  from
+              $\b${\b{B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE[\b[_\b$_\bi_\b+_\b1]\b]}\b}.  Assignments to B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE  have  no  ef-
               fect, and it may not be unset.
        B\bBA\bAS\bSH\bH_\b_S\bSU\bUB\bBS\bSH\bHE\bEL\bLL\bL
-              Incremented by one within each subshell or subshell  environment
-              when  the  shell begins executing in that environment.  The ini-
-              tial value is 0.  If B\bBA\bAS\bSH\bH_\b_S\bSU\bUB\bBS\bSH\bHE\bEL\bLL\bL is unset, it loses  its  spe-
+              Incremented  by one within each subshell or subshell environment
+              when the shell begins executing in that environment.   The  ini-
+              tial  value  is 0.  If B\bBA\bAS\bSH\bH_\b_S\bSU\bUB\bBS\bSH\bHE\bEL\bLL\bL is unset, it loses its spe-
               cial properties, even if it is subsequently reset.
        B\bBA\bAS\bSH\bH_\b_T\bTR\bRA\bAP\bPS\bSI\bIG\bG
-              Set  to the signal number corresponding to the trap action being
-              executed during its execution.  See the description of t\btr\bra\bap\b un-
-              der  S\bSH\bHE\bEL\bLL\bL  B\bBU\bUI\bIL\bLT\bTI\bIN\bN  C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below for information about signal
+              Set to the signal number corresponding to the trap action  being
+              executed  during its execution.  See the description of t\btr\bra\bap\bp un-
+              der S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below for  information  about  signal
               numbers and trap execution.
        B\bBA\bAS\bSH\bH_\b_V\bVE\bER\bRS\bSI\bIN\bNF\bFO\bO
               A readonly array variable whose members hold version information
-              for this instance of b\bba\bas\bsh\bh.  The values  assigned  to  the  array
+              for  this  instance  of  b\bba\bas\bsh\bh.  The values assigned to the array
               members are as follows:
               B\bBA\bAS\bSH\bH_\b_V\bVE\bER\bRS\bSI\bIN\bNF\bFO\bO[\b[0]\b]        The major version number (the _\br_\be_\bl_\be_\ba_\bs_\be).
               B\bBA\bAS\bSH\bH_\b_V\bVE\bER\bRS\bSI\bIN\bNF\bFO\bO[\b[1]\b]        The minor version number (the _\bv_\be_\br_\bs_\bi_\bo_\bn).
@@ -1004,149 +1005,149 @@ P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS
               B\bBA\bAS\bSH\bH_\b_V\bVE\bER\bRS\bSI\bIN\bNF\bFO\bO[\b[4]\b]        The release status (e.g., _\bb_\be_\bt_\ba).
               B\bBA\bAS\bSH\bH_\b_V\bVE\bER\bRS\bSI\bIN\bNF\bFO\bO[\b[5]\b]        The value of M\bMA\bAC\bCH\bHT\bTY\bYP\bPE\bE.
        B\bBA\bAS\bSH\bH_\b_V\bVE\bER\bRS\bSI\bIO\bON\bN
-              Expands  to  a string describing the version of this instance of
+              Expands to a string describing the version of this  instance  of
               b\bba\bas\bsh\bh (e.g., 5.2.37(3)-release).
        C\bCO\bOM\bMP\bP_\b_C\bCW\bWO\bOR\bRD\bD
-              An index into $\b${\b{C\bCO\bOM\bMP\bP_\b_W\bWO\bOR\bRD\bDS\bS}\b} of the word containing  the  current
+              An  index  into $\b${\b{C\bCO\bOM\bMP\bP_\b_W\bWO\bOR\bRD\bDS\bS}\b} of the word containing the current
               cursor position.  This variable is available only in shell func-
-              tions  invoked  by  the  programmable completion facilities (see
+              tions invoked by the  programmable  completion  facilities  (see
               P\bPr\bro\bog\bgr\bra\bam\bmm\bma\bab\bbl\ble\be C\bCo\bom\bmp\bpl\ble\bet\bti\bio\bon\bn below).
        C\bCO\bOM\bMP\bP_\b_K\bKE\bEY\bY
               The key (or final key of a key sequence) used to invoke the cur-
-              rent completion function.  This variable is  available  only  in
-              shell  functions and external commands invoked by the programma-
+              rent  completion  function.   This variable is available only in
+              shell functions and external commands invoked by the  programma-
               ble completion facilities (see P\bPr\bro\bog\bgr\bra\bam\bmm\bma\bab\bbl\ble\be C\bCo\bom\bmp\bpl\ble\bet\bti\bio\bon\bn below).
        C\bCO\bOM\bMP\bP_\b_L\bLI\bIN\bNE\bE
-              The current command line.  This variable is  available  only  in
-              shell  functions and external commands invoked by the programma-
+              The  current  command  line.  This variable is available only in
+              shell functions and external commands invoked by the  programma-
               ble completion facilities (see P\bPr\bro\bog\bgr\bra\bam\bmm\bma\bab\bbl\ble\be C\bCo\bom\bmp\bpl\ble\bet\bti\bio\bon\bn below).
        C\bCO\bOM\bMP\bP_\b_P\bPO\bOI\bIN\bNT\bT
-              The index of the current cursor position relative to the  begin-
-              ning  of the current command.  If the current cursor position is
+              The  index of the current cursor position relative to the begin-
+              ning of the current command.  If the current cursor position  is
               at the end of the current command, the value of this variable is
-              equal to $\b${\b{#\b#C\bCO\bOM\bMP\bP_\b_L\bLI\bIN\bNE\bE}\b}.  This  variable  is  available  only  in
-              shell  functions and external commands invoked by the programma-
+              equal  to  $\b${\b{#\b#C\bCO\bOM\bMP\bP_\b_L\bLI\bIN\bNE\bE}\b}.   This  variable  is available only in
+              shell functions and external commands invoked by the  programma-
               ble completion facilities (see P\bPr\bro\bog\bgr\bra\bam\bmm\bma\bab\bbl\ble\be C\bCo\bom\bmp\bpl\ble\bet\bti\bio\bon\bn below).
        C\bCO\bOM\bMP\bP_\b_T\bTY\bYP\bPE\bE
-              Set to an integer value corresponding to the type  of  attempted
-              completion  that caused a completion function to be called: _\bT_\bA_\bB,
-              for normal completion, _\b?, for listing completions after  succes-
-              sive  tabs,  _\b!, for listing alternatives on partial word comple-
-              tion, _\b@, to list completions if the word is not  unmodified,  or
-              _\b%,  for  menu  completion.   This  variable is available only in
-              shell functions and external commands invoked by the  programma-
+              Set  to  an integer value corresponding to the type of attempted
+              completion that caused a completion function to be called:  _\bT_\bA_\bB,
+              for  normal completion, _\b?, for listing completions after succes-
+              sive tabs, _\b!, for listing alternatives on partial  word  comple-
+              tion,  _\b@,  to list completions if the word is not unmodified, or
+              _\b%, for menu completion.  This  variable  is  available  only  in
+              shell  functions and external commands invoked by the programma-
               ble completion facilities (see P\bPr\bro\bog\bgr\bra\bam\bmm\bma\bab\bbl\ble\be C\bCo\bom\bmp\bpl\ble\bet\bti\bio\bon\bn below).
        C\bCO\bOM\bMP\bP_\b_W\bWO\bOR\bRD\bDB\bBR\bRE\bEA\bAK\bKS\bS
-              The  set  of characters that the r\bre\bea\bad\bdl\bli\bin\bne\be library treats as word
-              separators when performing word completion.  If  C\bCO\bOM\bMP\bP_\b_W\bWO\bOR\bRD\bDB\bBR\bRE\bEA\bAK\bKS\bS
-              is  unset, it loses its special properties, even if it is subse-
+              The set of characters that the r\bre\bea\bad\bdl\bli\bin\bne\be library treats  as  word
+              separators  when performing word completion.  If C\bCO\bOM\bMP\bP_\b_W\bWO\bOR\bRD\bDB\bBR\bRE\bEA\bAK\bKS\bS
+              is unset, it loses its special properties, even if it is  subse-
               quently reset.
        C\bCO\bOM\bMP\bP_\b_W\bWO\bOR\bRD\bDS\bS
-              An array variable (see A\bAr\brr\bra\bay\bys\bs below) consisting of the  individ-
-              ual  words  in the current command line.  The line is split into
-              words as r\bre\bea\bad\bdl\bli\bin\bne\be would split it, using C\bCO\bOM\bMP\bP_\b_W\bWO\bOR\bRD\bDB\bBR\bRE\bEA\bAK\bKS\bS  as  de-
-              scribed  above.   This variable is available only in shell func-
-              tions invoked by the  programmable  completion  facilities  (see
+              An  array variable (see A\bAr\brr\bra\bay\bys\bs below) consisting of the individ-
+              ual words in the current command line.  The line is  split  into
+              words  as  r\bre\bea\bad\bdl\bli\bin\bne\be would split it, using C\bCO\bOM\bMP\bP_\b_W\bWO\bOR\bRD\bDB\bBR\bRE\bEA\bAK\bKS\bS as de-
+              scribed above.  This variable is available only in  shell  func-
+              tions  invoked  by  the  programmable completion facilities (see
               P\bPr\bro\bog\bgr\bra\bam\bmm\bma\bab\bbl\ble\be C\bCo\bom\bmp\bpl\ble\bet\bti\bio\bon\bn below).
-       C\bCO\bOP\bPR\bRO\bOC\bC An  array  variable  (see A\bAr\brr\bra\bay\bys\bs below) created to hold the file
-              descriptors for output from and input to  an  unnamed  coprocess
+       C\bCO\bOP\bPR\bRO\bOC\bC An array variable (see A\bAr\brr\bra\bay\bys\bs below) created to  hold  the  file
+              descriptors  for  output  from and input to an unnamed coprocess
               (see C\bCo\bop\bpr\bro\boc\bce\bes\bss\bse\bes\bs above).
        D\bDI\bIR\bRS\bST\bTA\bAC\bCK\bK
               An array variable (see A\bAr\brr\bra\bay\bys\bs below) containing the current con-
-              tents  of  the directory stack.  Directories appear in the stack
-              in the order they are displayed by the d\bdi\bir\brs\bs builtin.   Assigning
+              tents of the directory stack.  Directories appear in  the  stack
+              in  the order they are displayed by the d\bdi\bir\brs\bs builtin.  Assigning
               to members of this array variable may be used to modify directo-
-              ries  already in the stack, but the p\bpu\bus\bsh\bhd\bd and p\bpo\bop\bpd\bd builtins must
-              be used to add and remove directories.  Assigning to this  vari-
-              able  does not change the current directory.  If D\bDI\bIR\bRS\bST\bTA\bAC\bCK\bK is un-
+              ries already in the stack, but the p\bpu\bus\bsh\bhd\bd and p\bpo\bop\bpd\bd builtins  must
+              be  used to add and remove directories.  Assigning to this vari-
+              able does not change the current directory.  If D\bDI\bIR\bRS\bST\bTA\bAC\bCK\bK is  un-
               set, it loses its special properties, even if it is subsequently
               reset.
        E\bEP\bPO\bOC\bCH\bHR\bRE\bEA\bAL\bLT\bTI\bIM\bME\bE
               Each time this parameter is referenced, it expands to the number
-              of seconds since the Unix Epoch (see  _\bt_\bi_\bm_\be(3))  as  a  floating-
+              of  seconds  since  the  Unix Epoch (see _\bt_\bi_\bm_\be(3)) as a floating-
               point  value  with  micro-second  granularity.   Assignments  to
-              E\bEP\bPO\bOC\bCH\bHR\bRE\bEA\bAL\bLT\bTI\bIM\bME\bare ignored.  If E\bEP\bPO\bOC\bCH\bHR\bRE\bEA\bAL\bLT\bTI\bIM\bME\bE is unset, it  loses
+              E\bEP\bPO\bOC\bCH\bHR\bRE\bEA\bAL\bLT\bTI\bIM\bME\b are ignored.  If E\bEP\bPO\bOC\bCH\bHR\bRE\bEA\bAL\bLT\bTI\bIM\bME\bE is unset, it loses
               its special properties, even if it is subsequently reset.
        E\bEP\bPO\bOC\bCH\bHS\bSE\bEC\bCO\bON\bND\bDS\bS
               Each time this parameter is referenced, it expands to the number
-              of  seconds  since the Unix Epoch (see _\bt_\bi_\bm_\be(3)).  Assignments to
-              E\bEP\bPO\bOC\bCH\bHS\bSE\bEC\bCO\bON\bND\bDS\bare ignored.  If E\bEP\bPO\bOC\bCH\bHS\bSE\bEC\bCO\bON\bND\bDS\bS is  unset,  it  loses
+              of seconds since the Unix Epoch (see _\bt_\bi_\bm_\be(3)).   Assignments  to
+              E\bEP\bPO\bOC\bCH\bHS\bSE\bEC\bCO\bON\bND\bDS\b are  ignored.   If E\bEP\bPO\bOC\bCH\bHS\bSE\bEC\bCO\bON\bND\bDS\bS is unset, it loses
               its special properties, even if it is subsequently reset.
-       E\bEU\bUI\bID\bD   Expands  to  the effective user ID of the current user, initial-
+       E\bEU\bUI\bID\bD   Expands to the effective user ID of the current  user,  initial-
               ized at shell startup.  This variable is readonly.
        F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE
-              An array variable containing the names of  all  shell  functions
+              An  array  variable  containing the names of all shell functions
               currently in the execution call stack.  The element with index 0
               is the name of any currently-executing shell function.  The bot-
-              tom-most  element  (the  one  with the highest index) is "main".
-              This variable exists only when a shell  function  is  executing.
-              Assignments  to  F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE have no effect.  If F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE is unset,
-              it loses its special properties, even if it is subsequently  re-
+              tom-most element (the one with the  highest  index)  is  "main".
+              This  variable  exists  only when a shell function is executing.
+              Assignments to F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE have no effect.  If F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE  is  unset,
+              it  loses its special properties, even if it is subsequently re-
               set.
 
-              This  variable  can  be  used  with B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\bO and B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE.
-              Each  element  of  F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE  has   corresponding   elements   in
+              This variable can be  used  with  B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\bO  and  B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE.
+              Each   element   of   F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE  has  corresponding  elements  in
               B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\bO and B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE to describe the call stack.  For in-
-              stance,    $\b${\b{F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE[\b[_\b$_\bi]\b]}\b}    was    called    from   the   file
-              $\b${\b{B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE[\b[_\b$_\bi_\b+_\b1]\b]}\bat  line  number  $\b${\b{B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\bO[\b[_\b$_\bi]\b]}\b}.   The
+              stance,   $\b${\b{F\bFU\bUN\bNC\bCN\bNA\bAM\bME\bE[\b[_\b$_\bi]\b]}\b}   was    called    from    the    file
+              $\b${\b{B\bBA\bAS\bSH\bH_\b_S\bSO\bOU\bUR\bRC\bCE\bE[\b[_\b$_\bi_\b+_\b1]\b]}\b at  line  number  $\b${\b{B\bBA\bAS\bSH\bH_\b_L\bLI\bIN\bNE\bEN\bNO\bO[\b[_\b$_\bi]\b]}\b}.  The
               c\bca\bal\bll\ble\ber\br builtin displays the current call stack using this infor-
               mation.
-       G\bGR\bRO\bOU\bUP\bPS\bS An  array  variable  containing  the list of groups of which the
+       G\bGR\bRO\bOU\bUP\bPS\bS An array variable containing the list of  groups  of  which  the
               current user is a member.  Assignments to G\bGR\bRO\bOU\bUP\bPS\bS have no effect.
-              If G\bGR\bRO\bOU\bUP\bPS\bS is unset, it loses its special properties, even if  it
+              If  G\bGR\bRO\bOU\bUP\bPS\bS is unset, it loses its special properties, even if it
               is subsequently reset.
        H\bHI\bIS\bST\bTC\bCM\bMD\bD
               The history number, or index in the history list, of the current
-              command.   Assignments to H\bHI\bIS\bST\bTC\bCM\bMD\bD have no effect.  If H\bHI\bIS\bST\bTC\bCM\bMD\bD is
-              unset, it loses its special properties, even  if  it  is  subse-
+              command.  Assignments to H\bHI\bIS\bST\bTC\bCM\bMD\bD have no effect.  If H\bHI\bIS\bST\bTC\bCM\bMD\b is
+              unset,  it  loses  its  special properties, even if it is subse-
               quently reset.
        H\bHO\bOS\bST\bTN\bNA\bAM\bME\bE
               Automatically set to the name of the current host.
        H\bHO\bOS\bST\bTT\bTY\bYP\bPE\bE
-              Automatically  set  to a string that uniquely describes the type
-              of machine on which b\bba\bas\bsh\bh is executing.  The default  is  system-
+              Automatically set to a string that uniquely describes  the  type
+              of  machine  on which b\bba\bas\bsh\bh is executing.  The default is system-
               dependent.
-       L\bLI\bIN\bNE\bEN\bNO\bO Each  time this parameter is referenced, the shell substitutes a
-              decimal number representing the current sequential  line  number
-              (starting  with  1)  within a script or function.  When not in a
-              script or function, the value substituted is not  guaranteed  to
+       L\bLI\bIN\bNE\bEN\bNO\bO Each time this parameter is referenced, the shell substitutes  a
+              decimal  number  representing the current sequential line number
+              (starting with 1) within a script or function.  When  not  in  a
+              script  or  function, the value substituted is not guaranteed to
               be meaningful.  If L\bLI\bIN\bNE\bEN\bNO\bO is unset, it loses its special proper-
               ties, even if it is subsequently reset.
        M\bMA\bAC\bCH\bHT\bTY\bYP\bPE\bE
-              Automatically  set  to  a string that fully describes the system
-              type on which b\bba\bas\bsh\bh is executing, in the  standard  GNU  _\bc_\bp_\bu_\b-_\bc_\bo_\bm_\b-
+              Automatically set to a string that fully  describes  the  system
+              type  on  which  b\bba\bas\bsh\bh is executing, in the standard GNU _\bc_\bp_\bu_\b-_\bc_\bo_\bm_\b-
               _\bp_\ba_\bn_\by_\b-_\bs_\by_\bs_\bt_\be_\bm format.  The default is system-dependent.
        M\bMA\bAP\bPF\bFI\bIL\bLE\bE
-              An  array  variable  (see A\bAr\brr\bra\bay\bys\bs below) created to hold the text
+              An array variable (see A\bAr\brr\bra\bay\bys\bs below) created to  hold  the  text
               read by the m\bma\bap\bpf\bfi\bil\ble\be builtin when no variable name is supplied.
        O\bOL\bLD\bDP\bPW\bWD\bD The previous working directory as set by the c\bcd\bd command.
-       O\bOP\bPT\bTA\bAR\bRG\bG The value of the last option argument processed by  the  g\bge\bet\bto\bop\bpt\bts\bs
+       O\bOP\bPT\bTA\bAR\bRG\bG The  value  of the last option argument processed by the g\bge\bet\bto\bop\bpt\bts\bs
               builtin command (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below).
-       O\bOP\bPT\bTI\bIN\bND\bD The  index  of  the next argument to be processed by the g\bge\bet\bto\bop\bpt\bts\bs
+       O\bOP\bPT\bTI\bIN\bND\bD The index of the next argument to be processed  by  the  g\bge\bet\bto\bop\bpt\bts\bs
               builtin command (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below).
-       O\bOS\bST\bTY\bYP\bPE\bE Automatically set to a string that describes the operating  sys-
-              tem  on  which  b\bba\bas\bsh\bh is executing.  The default is system-depen-
+       O\bOS\bST\bTY\bYP\bPE\bE Automatically  set to a string that describes the operating sys-
+              tem on which b\bba\bas\bsh\bh is executing.  The  default  is  system-depen-
               dent.
        P\bPI\bIP\bPE\bES\bST\bTA\bAT\bTU\bUS\bS
-              An array variable (see A\bAr\brr\bra\bay\bys\bs below) containing a list  of  exit
-              status  values  from  the commands in the most-recently-executed
-              foreground pipeline, which may consist of only a simple  command
+              An  array  variable (see A\bAr\brr\bra\bay\bys\bs below) containing a list of exit
+              status values from the commands  in  the  most-recently-executed
+              foreground  pipeline, which may consist of only a simple command
               (see S\bSH\bHE\bEL\bLL\bL G\bGR\bRA\bAM\bMM\bMA\bAR\bR above).  B\bBa\bas\bsh\bh sets P\bPI\bIP\bPE\bES\bST\bTA\bAT\bTU\bUS\bS after executing
-              multi-element  pipelines,  timed  and  negated pipelines, simple
-              commands, subshells created with the ( operator, the [\b[[\b[  and  (\b((\b(
+              multi-element pipelines, timed  and  negated  pipelines,  simple
+              commands,  subshells  created with the ( operator, the [\b[[\b[ and (\b((\b(
               compound commands, and after error conditions that result in the
               shell aborting command execution.
-       P\bPP\bPI\bID\bD   The  process  ID  of the shell's parent.  This variable is read-
+       P\bPP\bPI\bID\bD   The process ID of the shell's parent.  This  variable  is  read-
               only.
        P\bPW\bWD\bD    The current working directory as set by the c\bcd\bd command.
-       R\bRA\bAN\bND\bDO\bOM\bM Each time this parameter is referenced, it expands to  a  random
-              integer  between  0 and 32767.  Assigning a value to R\bRA\bAN\bND\bDO\bOM\bM ini-
-              tializes (seeds) the sequence of random  numbers.   Seeding  the
-              random  number  generator  with the same constant value produces
-              the same sequence of values.  If R\bRA\bAN\bND\bDO\bOM\bM is unset, it  loses  its
+       R\bRA\bAN\bND\bDO\bOM\bM Each  time  this parameter is referenced, it expands to a random
+              integer between 0 and 32767.  Assigning a value to  R\bRA\bAN\bND\bDO\bOM\b ini-
+              tializes  (seeds)  the  sequence of random numbers.  Seeding the
+              random number generator with the same  constant  value  produces
+              the  same  sequence of values.  If R\bRA\bAN\bND\bDO\bOM\bM is unset, it loses its
               special properties, even if it is subsequently reset.
        R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE_\b_A\bAR\bRG\bGU\bUM\bME\bEN\bNT\bT
-              Any  numeric  argument  given to a r\bre\bea\bad\bdl\bli\bin\bne\be command that was de-
+              Any numeric argument given to a r\bre\bea\bad\bdl\bli\bin\bne\be command  that  was  de-
               fined using "bind -x" (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below) when it
               was invoked.
        R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE_\b_L\bLI\bIN\bNE\bE
@@ -1154,370 +1155,370 @@ P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS
               (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below).
        R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE_\b_M\bMA\bAR\bRK\bK
               The position of the mark (saved insertion point) in the r\bre\bea\bad\bdl\bli\bin\bne\be
-              line buffer, for use with "bind -x" (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\b C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
+              line  buffer, for use with "bind -x" (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               below).  The characters between the insertion point and the mark
               are often called the _\br_\be_\bg_\bi_\bo_\bn.
        R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE_\b_P\bPO\bOI\bIN\bNT\bT
               The position of the insertion point in the r\bre\bea\bad\bdl\bli\bin\bne\be line buffer,
               for use with "bind -x" (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below).
-       R\bRE\bEP\bPL\bLY\bY  Set  to  the line of input read by the r\bre\bea\bad\bd builtin command when
+       R\bRE\bEP\bPL\bLY\bY  Set to the line of input read by the r\bre\bea\bad\bd builtin  command  when
               no arguments are supplied.
        S\bSE\bEC\bCO\bON\bND\bDS\bS
               Each time this parameter is referenced, it expands to the number
-              of seconds since shell invocation.  If a value  is  assigned  to
-              S\bSE\bEC\bCO\bON\bND\bDS\bS,  the  value  returned upon subsequent references is the
-              number of seconds since the assignment plus the value  assigned.
-              The  number  of seconds at shell invocation and the current time
+              of  seconds  since  shell invocation.  If a value is assigned to
+              S\bSE\bEC\bCO\bON\bND\bDS\bS, the value returned upon subsequent  references  is  the
+              number  of seconds since the assignment plus the value assigned.
+              The number of seconds at shell invocation and the  current  time
               are always determined by querying the system clock at one-second
-              resolution.  If S\bSE\bEC\bCO\bON\bND\bDS\bS is unset, it loses its  special  proper-
+              resolution.   If  S\bSE\bEC\bCO\bON\bND\bDS\bS is unset, it loses its special proper-
               ties, even if it is subsequently reset.
        S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS
-              A  colon-separated  list of enabled shell options.  Each word in
-              the list is a valid argument  for  the  -\b-o\bo  option  to  the  s\bse\bet\bt
+              A colon-separated list of enabled shell options.  Each  word  in
+              the  list  is  a  valid  argument  for  the -\b-o\bo option to the s\bse\bet\bt
               builtin command (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below).  The options
-              appearing  in  S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS are those reported as _\bo_\bn by s\bse\bet\bt -\b-o\bo.  If
-              this variable is in the environment when  b\bba\bas\bsh\bh  starts  up,  the
+              appearing in S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS are those reported as _\bo_\bn by s\bse\bet\bt  -\b-o\bo.   If
+              this  variable  is  in  the environment when b\bba\bas\bsh\bh starts up, the
               shell enables each option in the list before reading any startup
-              files.   If  this variable is exported, child shells will enable
+              files.  If this variable is exported, child shells  will  enable
               each option in the list.  This variable is read-only.
        S\bSH\bHL\bLV\bVL\bL  Incremented by one each time an instance of b\bba\bas\bsh\bh is started.
        S\bSR\bRA\bAN\bND\bDO\bOM\bM
-              Each time it is referenced, this variable expands  to  a  32-bit
+              Each  time  it  is referenced, this variable expands to a 32-bit
               pseudo-random number.  The random number generator is not linear
-              on  systems  that support _\b/_\bd_\be_\bv_\b/_\bu_\br_\ba_\bn_\bd_\bo_\bm or _\ba_\br_\bc_\b4_\br_\ba_\bn_\bd_\bo_\bm(3), so each
+              on systems that support _\b/_\bd_\be_\bv_\b/_\bu_\br_\ba_\bn_\bd_\bo_\bm or _\ba_\br_\bc_\b4_\br_\ba_\bn_\bd_\bo_\bm(3),  so  each
               returned number has no relationship to the numbers preceding it.
-              The random number generator cannot be seeded, so assignments  to
+              The  random number generator cannot be seeded, so assignments to
               this variable have no effect.  If S\bSR\bRA\bAN\bND\bDO\bOM\bM is unset, it loses its
               special properties, even if it is subsequently reset.
        U\bUI\bID\bD    Expands to the user ID of the current user, initialized at shell
               startup.  This variable is readonly.
 
-       The  shell  uses the following variables. In some cases, b\bba\bas\bsh\bh assigns a
+       The shell uses the following variables. In some cases, b\bba\bas\bsh\bh  assigns  a
        default value to a variable; these cases are noted below.
 
        B\bBA\bAS\bSH\bH_\b_C\bCO\bOM\bMP\bPA\bAT\bT
-              The value is used to set the shell's compatibility  level.   See
-              S\bSH\bHE\bEL\bLL\b C\bCO\bOM\bMP\bPA\bAT\bTI\bIB\bBI\bIL\bLI\bIT\bTY\bY M\bMO\bOD\bDE\bE below for a description of the various
+              The  value  is used to set the shell's compatibility level.  See
+              S\bSH\bHE\bEL\bLL\bC\bCO\bOM\bMP\bPA\bAT\bTI\bIB\bBI\bIL\bLI\bIT\bTY\bY M\bMO\bOD\bDE\bE below for a description of the  various
               compatibility levels and their effects.  The value may be a dec-
-              imal number (e.g., 4.2) or an integer (e.g.,  42)  corresponding
-              to  the desired compatibility level.  If B\bBA\bAS\bSH\bH_\b_C\bCO\bOM\bMP\bPA\bAT\bT is unset or
-              set to the empty string, the compatibility level is set  to  the
-              default  for  the  current  version.  If B\bBA\bAS\bSH\bH_\b_C\bCO\bOM\bMP\bPA\bAT\bT is set to a
-              value that is not one of the  valid  compatibility  levels,  the
-              shell  prints  an error message and sets the compatibility level
-              to the default for the current version.  A subset of  the  valid
-              values  correspond  to  the compatibility levels described below
-              under S\bSH\bHE\bEL\bLL\bL C\bCO\bOM\bMP\bPA\bAT\bTI\bIB\bBI\bIL\bLI\bIT\bTY\bY M\bMO\bOD\bDE\bE.  For example,  4.2  and  42  are
-              valid  values  that  correspond to the c\bco\bom\bmp\bpa\bat\bt4\b42\b2 s\bsh\bho\bop\bpt\bt option and
-              set the compatibility level to 42.  The current version is  also
+              imal  number  (e.g., 4.2) or an integer (e.g., 42) corresponding
+              to the desired compatibility level.  If B\bBA\bAS\bSH\bH_\b_C\bCO\bOM\bMP\bPA\bAT\bT is unset  or
+              set  to  the empty string, the compatibility level is set to the
+              default for the current version.  If B\bBA\bAS\bSH\bH_\b_C\bCO\bOM\bMP\bPA\bAT\bT  is  set  to  a
+              value  that  is  not  one of the valid compatibility levels, the
+              shell prints an error message and sets the  compatibility  level
+              to  the  default for the current version.  A subset of the valid
+              values correspond to the compatibility  levels  described  below
+              under  S\bSH\bHE\bEL\bLL\bL  C\bCO\bOM\bMP\bPA\bAT\bTI\bIB\bBI\bIL\bLI\bIT\bTY\bY  M\bMO\bOD\bDE\bE.   For example, 4.2 and 42 are
+              valid values that correspond to the c\bco\bom\bmp\bpa\bat\bt4\b42\b2  s\bsh\bho\bop\bpt\bt  option  and
+              set  the compatibility level to 42.  The current version is also
               a valid value.
        B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\bV
-              If  this parameter is set when b\bba\bas\bsh\bh is executing a shell script,
-              its expanded value is interpreted as a filename containing  com-
-              mands  to initialize the shell before it reads and executes com-
-              mands from the script.  The value of B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\bV  is  subjected  to
+              If this parameter is set when b\bba\bas\bsh\bh is executing a shell  script,
+              its  expanded value is interpreted as a filename containing com-
+              mands to initialize the shell before it reads and executes  com-
+              mands  from  the  script.  The value of B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\bV is subjected to
               parameter expansion, command substitution, and arithmetic expan-
-              sion  before  being interpreted as a filename.  P\bPA\bAT\bTH\bH is not used
+              sion before being interpreted as a filename.  P\bPA\bAT\bTH\bH is  not  used
               to search for the resultant filename.
        B\bBA\bAS\bSH\bH_\b_X\bXT\bTR\bRA\bAC\bCE\bEF\bFD\bD
-              If set to an integer corresponding to a valid  file  descriptor,
-              b\bba\bas\bsh\b writes the trace output generated when "set -x" is enabled
-              to that file descriptor, instead of  the  standard  error.   The
-              file  descriptor  is  closed  when B\bBA\bAS\bSH\bH_\b_X\bXT\bTR\bRA\bAC\bCE\bEF\bFD\bD is unset or as-
+              If  set  to an integer corresponding to a valid file descriptor,
+              b\bba\bas\bsh\bwrites the trace output generated when "set -x" is  enabled
+              to  that  file  descriptor,  instead of the standard error.  The
+              file descriptor is closed when B\bBA\bAS\bSH\bH_\b_X\bXT\bTR\bRA\bAC\bCE\bEF\bFD\bD  is  unset  or  as-
               signed a new value.  Unsetting B\bBA\bAS\bSH\bH_\b_X\bXT\bTR\bRA\bAC\bCE\bEF\bFD\bD or assigning it the
-              empty string causes the trace output to be sent to the  standard
+              empty  string causes the trace output to be sent to the standard
               error.  Note that setting B\bBA\bAS\bSH\bH_\b_X\bXT\bTR\bRA\bAC\bCE\bEF\bFD\bD to 2 (the standard error
-              file  descriptor) and then unsetting it will result in the stan-
+              file descriptor) and then unsetting it will result in the  stan-
               dard error being closed.
-       C\bCD\bDP\bPA\bAT\bTH\bH The search path for the c\bcd\bd command.  This is  a  colon-separated
+       C\bCD\bDP\bPA\bAT\bTH\bH The  search  path for the c\bcd\bd command.  This is a colon-separated
               list of directories where the shell looks for directories speci-
-              fied  as  arguments  to  the  c\bcd\bd  command.   A  sample  value is
+              fied as  arguments  to  the  c\bcd\bd  command.   A  sample  value  is
               ".:~:/usr".
        C\bCH\bHI\bIL\bLD\bD_\b_M\bMA\bAX\bX
-              Set the number of exited child status values for  the  shell  to
-              remember.   B\bBa\bas\bsh\bh will not allow this value to be decreased below
-              a POSIX-mandated minimum, and there is  a  maximum  value  (cur-
-              rently  8192)  that  this  may not exceed.  The minimum value is
+              Set  the  number  of exited child status values for the shell to
+              remember.  B\bBa\bas\bsh\bh will not allow this value to be decreased  below
+              a  POSIX-mandated  minimum,  and  there is a maximum value (cur-
+              rently 8192) that this may not exceed.   The  minimum  value  is
               system-dependent.
        C\bCO\bOL\bLU\bUM\bMN\bNS\bS
-              Used by the s\bse\bel\ble\bec\bct\bt compound command to  determine  the  terminal
-              width  when  printing selection lists.  Automatically set if the
-              c\bch\bhe\bec\bck\bkw\bwi\bin\bns\bsi\biz\bze\boption is enabled or in an interactive  shell  upon
+              Used  by  the  s\bse\bel\ble\bec\bct\bt compound command to determine the terminal
+              width when printing selection lists.  Automatically set  if  the
+              c\bch\bhe\bec\bck\bkw\bwi\bin\bns\bsi\biz\bze\b option  is enabled or in an interactive shell upon
               receipt of a S\bSI\bIG\bGW\bWI\bIN\bNC\bCH\bH.
        C\bCO\bOM\bMP\bPR\bRE\bEP\bPL\bLY\bY
               An array variable from which b\bba\bas\bsh\bh reads the possible completions
-              generated  by  a shell function invoked by the programmable com-
-              pletion facility (see P\bPr\bro\bog\bgr\bra\bam\bmm\bma\bab\bbl\ble\be C\bCo\bom\bmp\bpl\ble\bet\bti\bio\bon\bn below).  Each  ar-
+              generated by a shell function invoked by the  programmable  com-
+              pletion  facility (see P\bPr\bro\bog\bgr\bra\bam\bmm\bma\bab\bbl\ble\be C\bCo\bom\bmp\bpl\ble\bet\bti\bio\bon\bn below).  Each ar-
               ray element contains one possible completion.
-       E\bEM\bMA\bAC\bCS\bS  If  b\bba\bas\bsh\bh  finds  this variable in the environment when the shell
-              starts with value "t", it assumes that the shell is  running  in
+       E\bEM\bMA\bAC\bCS\bS  If b\bba\bas\bsh\bh finds this variable in the environment  when  the  shell
+              starts  with  value "t", it assumes that the shell is running in
               an Emacs shell buffer and disables line editing.
-       E\bEN\bNV\bV    Expanded  and  executed  similarly  to  B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\bV (see I\bIN\bNV\bVO\bOC\bCA\bAT\bTI\bIO\bON\bN
+       E\bEN\bNV\bV    Expanded and executed  similarly  to  B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\bV  (see  I\bIN\bNV\bVO\bOC\bCA\bAT\bTI\bIO\bON\bN
               above) when an interactive shell is invoked in posix mode.
        E\bEX\bXE\bEC\bCI\bIG\bGN\bNO\bOR\bRE\bE
-              A colon-separated list of shell patterns (see P\bPa\bat\btt\bte\ber\brn\b M\bMa\bat\btc\bch\bhi\bin\bng\bg)
-              defining  the  set  of filenames to be ignored by command search
-              using P\bPA\bAT\bTH\bH.  Files whose full pathnames match one of these  pat-
-              terns  are  not  considered executable files for the purposes of
+              A  colon-separated list of shell patterns (see P\bPa\bat\btt\bte\ber\brn\bn M\bMa\bat\btc\bch\bhi\bin\bng\bg)
+              defining the set of filenames to be ignored  by  command  search
+              using  P\bPA\bAT\bTH\bH.  Files whose full pathnames match one of these pat-
+              terns are not considered executable files for  the  purposes  of
               completion and command execution via P\bPA\bAT\bTH\bH lookup.  This does not
               affect the behavior of the [\b[, t\bte\bes\bst\bt, and [\b[[\b[ commands.  Full path-
-              names in the command hash table are not subject  to  E\bEX\bXE\bEC\bCI\bIG\bGN\bNO\bOR\bRE\bE.
-              Use  this  variable to ignore shared library files that have the
-              executable bit set, but are not executable files.   The  pattern
+              names  in  the command hash table are not subject to E\bEX\bXE\bEC\bCI\bIG\bGN\bNO\bOR\bRE\bE.
+              Use this variable to ignore shared library files that  have  the
+              executable  bit  set, but are not executable files.  The pattern
               matching honors the setting of the e\bex\bxt\btg\bgl\blo\bob\bb shell option.
        F\bFC\bCE\bED\bDI\bIT\bT The default editor for the f\bfc\bc builtin command.
        F\bFI\bIG\bGN\bNO\bOR\bRE\bE
-              A  colon-separated  list  of  suffixes to ignore when performing
+              A colon-separated list of suffixes  to  ignore  when  performing
               filename completion (see R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE below).  A filename whose suf-
-              fix matches one of the entries in F\bFI\bIG\bGN\bNO\bOR\bRE\bE is excluded  from  the
+              fix  matches  one of the entries in F\bFI\bIG\bGN\bNO\bOR\bRE\bE is excluded from the
               list of matched filenames.  A sample value is ".o:~".
        F\bFU\bUN\bNC\bCN\bNE\bES\bST\bT
-              If  set  to  a  numeric  value greater than 0, defines a maximum
-              function nesting level.  Function invocations that  exceed  this
+              If set to a numeric value greater  than  0,  defines  a  maximum
+              function  nesting  level.  Function invocations that exceed this
               nesting level cause the current command to abort.
        G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE
-              A  colon-separated  list  of  patterns  defining the set of file
-              names to be ignored by  pathname  expansion.   If  a  file  name
-              matched  by a pathname expansion pattern also matches one of the
-              patterns in G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE, it is removed from the list of  matches.
+              A colon-separated list of patterns  defining  the  set  of  file
+              names  to  be  ignored  by  pathname  expansion.  If a file name
+              matched by a pathname expansion pattern also matches one of  the
+              patterns  in G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE, it is removed from the list of matches.
               The pattern matching honors the setting of the e\bex\bxt\btg\bgl\blo\bob\bb shell op-
               tion.
        G\bGL\bLO\bOB\bBS\bSO\bOR\bRT\bT
-              Controls  how the results of pathname expansion are sorted.  The
-              value of this variable specifies the sort criteria and sort  or-
-              der  for the results of pathname expansion.  If this variable is
-              unset or set to the null string,  pathname  expansion  uses  the
-              historical  behavior  of  sorting  by name, in ascending lexico-
+              Controls how the results of pathname expansion are sorted.   The
+              value  of this variable specifies the sort criteria and sort or-
+              der for the results of pathname expansion.  If this variable  is
+              unset  or  set  to  the null string, pathname expansion uses the
+              historical behavior of sorting by  name,  in  ascending  lexico-
               graphic order as determined by the L\bLC\bC_\b_C\bCO\bOL\bLL\bLA\bAT\bTE\bE shell variable.
 
-              If set, a valid value begins with an optional _\b+,  which  is  ig-
+              If  set,  a  valid value begins with an optional _\b+, which is ig-
               nored, or _\b-, which reverses the sort order from ascending to de-
-              scending,  followed  by a sort specifier.  The valid sort speci-
-              fiers are _\bn_\ba_\bm_\be, _\bn_\bu_\bm_\be_\br_\bi_\bc, _\bs_\bi_\bz_\be, _\bm_\bt_\bi_\bm_\be, _\ba_\bt_\bi_\bm_\be, _\bc_\bt_\bi_\bm_\be, and  _\bb_\bl_\bo_\bc_\bk_\bs,
+              scending, followed by a sort specifier.  The valid  sort  speci-
+              fiers  are _\bn_\ba_\bm_\be, _\bn_\bu_\bm_\be_\br_\bi_\bc, _\bs_\bi_\bz_\be, _\bm_\bt_\bi_\bm_\be, _\ba_\bt_\bi_\bm_\be, _\bc_\bt_\bi_\bm_\be, and _\bb_\bl_\bo_\bc_\bk_\bs,
               which sort the files on name, names in numeric rather than lexi-
-              cographic  order, file size, modification time, access time, in-
-              ode change time, and number of blocks, respectively.  If any  of
-              the  non-name  keys compare as equal (e.g., if two files are the
+              cographic order, file size, modification time, access time,  in-
+              ode  change time, and number of blocks, respectively.  If any of
+              the non-name keys compare as equal (e.g., if two files  are  the
               same size), sorting uses the name as a secondary sort key.
 
-              For example, a value of _\b-_\bm_\bt_\bi_\bm_\be sorts the results  in  descending
+              For  example,  a value of _\b-_\bm_\bt_\bi_\bm_\be sorts the results in descending
               order by modification time (newest first).
 
-              The  _\bn_\bu_\bm_\be_\br_\bi_\bc  specifier treats names consisting solely of digits
-              as numbers and sorts them using  their  numeric  value  (so  "2"
+              The _\bn_\bu_\bm_\be_\br_\bi_\bc specifier treats names consisting solely  of  digits
+              as  numbers  and  sorts  them  using their numeric value (so "2"
               sorts before "10", for example).  When using _\bn_\bu_\bm_\be_\br_\bi_\bc, names con-
-              taining  non-digits  sort  after all the all-digit names and are
+              taining non-digits sort after all the all-digit  names  and  are
               sorted by name using the traditional behavior.
 
               A sort specifier of _\bn_\bo_\bs_\bo_\br_\bt disables sorting completely; b\bba\bas\bsh\bh re-
-              turns the results in the order they are read from the file  sys-
+              turns  the results in the order they are read from the file sys-
               tem, ignoring any leading _\b-.
 
-              If  the  sort  specifier  is  missing, it defaults to _\bn_\ba_\bm_\be, so a
-              value of _\b+ is equivalent to the null string, and a  value  of  _\b-
-              sorts  by  name in descending order.  Any invalid value restores
+              If the sort specifier is missing, it  defaults  to  _\bn_\ba_\bm_\be,  so  a
+              value  of  _\b+  is equivalent to the null string, and a value of _\b-
+              sorts by name in descending order.  Any invalid  value  restores
               the historical sorting behavior.
        H\bHI\bIS\bST\bTC\bCO\bON\bNT\bTR\bRO\bOL\bL
-              A colon-separated list of values controlling  how  commands  are
-              saved  on  the  history  list.   If  the list of values includes
-              _\bi_\bg_\bn_\bo_\br_\be_\bs_\bp_\ba_\bc_\be, lines which begin with a s\bsp\bpa\bac\bce\be  character  are  not
-              saved  in  the history list.  A value of _\bi_\bg_\bn_\bo_\br_\be_\bd_\bu_\bp_\bs causes lines
+              A  colon-separated  list  of values controlling how commands are
+              saved on the history list.   If  the  list  of  values  includes
+              _\bi_\bg_\bn_\bo_\br_\be_\bs_\bp_\ba_\bc_\be,  lines  which  begin with a s\bsp\bpa\bac\bce\be character are not
+              saved in the history list.  A value of _\bi_\bg_\bn_\bo_\br_\be_\bd_\bu_\bp_\bs  causes  lines
               matching the previous history entry not to be saved.  A value of
               _\bi_\bg_\bn_\bo_\br_\be_\bb_\bo_\bt_\bh is shorthand for _\bi_\bg_\bn_\bo_\br_\be_\bs_\bp_\ba_\bc_\be and _\bi_\bg_\bn_\bo_\br_\be_\bd_\bu_\bp_\bs.  A value
               of _\be_\br_\ba_\bs_\be_\bd_\bu_\bp_\bs causes all previous lines matching the current line
-              to be removed from the history list before that line  is  saved.
-              Any  value  not in the above list is ignored.  If H\bHI\bIS\bST\bTC\bCO\bON\bNT\bTR\bRO\bOL\bL is
-              unset, or does not include a valid value, b\bba\bas\bsh\bh saves  all  lines
-              read  by  the  shell  parser on the history list, subject to the
+              to  be  removed from the history list before that line is saved.
+              Any value not in the above list is ignored.  If  H\bHI\bIS\bST\bTC\bCO\bON\bNT\bTR\bRO\bOL\b is
+              unset,  or  does not include a valid value, b\bba\bas\bsh\bh saves all lines
+              read by the shell parser on the history  list,  subject  to  the
               value of H\bHI\bIS\bST\bTI\bIG\bGN\bNO\bOR\bRE\bE.  If the first line of a multi-line compound
-              command was saved, the  second  and  subsequent  lines  are  not
-              tested,  and are added to the history regardless of the value of
-              H\bHI\bIS\bST\bTC\bCO\bON\bNT\bTR\bRO\bOL\bL.  If the first line was not saved,  the  second  and
+              command  was  saved,  the  second  and  subsequent lines are not
+              tested, and are added to the history regardless of the value  of
+              H\bHI\bIS\bST\bTC\bCO\bON\bNT\bTR\bRO\bOL\bL.   If  the  first line was not saved, the second and
               subsequent lines of the command are not saved either.
        H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE
               The name of the file in which command history is saved (see H\bHI\bIS\bS-\b-
-              T\bTO\bOR\bRY\b below).   B\bBa\bas\bsh\bh assigns a default value of _\b~_\b/_\b._\bb_\ba_\bs_\bh_\b__\bh_\bi_\bs_\bt_\bo_\br_\by.
-              If H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE is unset or null, the shell does not save  the  com-
+              T\bTO\bOR\bRY\bbelow).  B\bBa\bas\bsh\bh assigns a default value  of  _\b~_\b/_\b._\bb_\ba_\bs_\bh_\b__\bh_\bi_\bs_\bt_\bo_\br_\by.
+              If  H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bE  is unset or null, the shell does not save the com-
               mand history when it exits.
        H\bHI\bIS\bST\bTF\bFI\bIL\bLE\bES\bSI\bIZ\bZE\bE
               The maximum number of lines contained in the history file.  When
-              this  variable  is  assigned  a value, the history file is trun-
-              cated, if necessary, to contain no  more  than  that  number  of
-              lines  by removing the oldest entries.  The history file is also
+              this variable is assigned a value, the  history  file  is  trun-
+              cated,  if  necessary,  to  contain  no more than that number of
+              lines by removing the oldest entries.  The history file is  also
               truncated to this size after writing it when a shell exits or by
-              the h\bhi\bis\bst\bto\bor\bry\by builtin.  If the value is 0,  the  history  file  is
-              truncated  to  zero size.  Non-numeric values and numeric values
-              less than zero inhibit truncation.  The shell sets  the  default
+              the  h\bhi\bis\bst\bto\bor\bry\by  builtin.   If  the value is 0, the history file is
+              truncated to zero size.  Non-numeric values and  numeric  values
+              less  than  zero inhibit truncation.  The shell sets the default
               value to the value of H\bHI\bIS\bST\bTS\bSI\bIZ\bZE\bE after reading any startup files.
        H\bHI\bIS\bST\bTI\bIG\bGN\bNO\bOR\bRE\bE
-              A  colon-separated list of patterns used to decide which command
-              lines should be saved on the history list.  If  a  command  line
-              matches  one  of  the patterns in the value of H\bHI\bIS\bST\bTI\bIG\bGN\bNO\bOR\bRE\bE, it is
-              not saved on the history list.  Each pattern is anchored at  the
-              beginning  of  the  line  and must match the complete line (b\bba\bas\bsh\bh
-              does not  implicitly append a  "*\b*").   Each  pattern  is  tested
-              against  the  line after the checks specified by H\bHI\bIS\bST\bTC\bCO\bON\bNT\bTR\bRO\bOL\bL are
+              A colon-separated list of patterns used to decide which  command
+              lines  should  be  saved on the history list.  If a command line
+              matches one of the patterns in the value of  H\bHI\bIS\bST\bTI\bIG\bGN\bNO\bOR\bRE\bE,  it  is
+              not  saved on the history list.  Each pattern is anchored at the
+              beginning of the line and must match  the  complete  line  (b\bba\bas\bsh\bh
+              does  not   implicitly  append  a  "*\b*").  Each pattern is tested
+              against the line after the checks specified by  H\bHI\bIS\bST\bTC\bCO\bON\bNT\bTR\bRO\bOL\b are
               applied.  In addition to the normal shell pattern matching char-
-              acters, "&\b&" matches the previous history line.  A backslash  es-
-              capes  the  "&\b&";  the  backslash  is removed before attempting a
-              match.  If the first line of a multi-line compound  command  was
-              saved,  the  second and subsequent lines are not tested, and are
-              added to the history regardless of the value of H\bHI\bIS\bST\bTI\bIG\bGN\bNO\bOR\bRE\bE.   If
+              acters,  "&\b&" matches the previous history line.  A backslash es-
+              capes the "&\b&"; the backslash  is  removed  before  attempting  a
+              match.   If  the first line of a multi-line compound command was
+              saved, the second and subsequent lines are not tested,  and  are
+              added  to the history regardless of the value of H\bHI\bIS\bST\bTI\bIG\bGN\bNO\bOR\bRE\bE.  If
               the first line was not saved, the second and subsequent lines of
-              the  command  are not saved either.  The pattern matching honors
+              the command are not saved either.  The pattern  matching  honors
               the setting of the e\bex\bxt\btg\bgl\blo\bob\bb shell option.
               H\bHI\bIS\bST\bTI\bIG\bGN\bNO\bOR\bRE\bE subsumes some of the function of H\bHI\bIS\bST\bTC\bCO\bON\bNT\bTR\bRO\bOL\bL.  A pat-
-              tern of "&" is identical to "ignoredups", and a  pattern  of  "[
-              ]*"  is  identical  to  "ignorespace".  Combining these two pat-
-              terns, separating them with a colon, provides the  functionality
+              tern  of  "&"  is identical to "ignoredups", and a pattern of "[
+              ]*" is identical to "ignorespace".   Combining  these  two  pat-
+              terns,  separating them with a colon, provides the functionality
               of "ignoreboth".
        H\bHI\bIS\bST\bTS\bSI\bIZ\bZE\bE
-              The  number  of commands to remember in the command history (see
-              H\bHI\bIS\bST\bTO\bOR\bRY\bbelow).  If the value is 0, commands are  not  saved  in
+              The number of commands to remember in the command  history  (see
+              H\bHI\bIS\bST\bTO\bOR\bRY\b below).   If  the value is 0, commands are not saved in
               the history list.  Numeric values less than zero result in every
-              command  being  saved  on  the history list (there is no limit).
-              The shell sets the  default  value  to  500  after  reading  any
+              command being saved on the history list  (there  is  no  limit).
+              The  shell  sets  the  default  value  to  500 after reading any
               startup files.
        H\bHI\bIS\bST\bTT\bTI\bIM\bME\bEF\bFO\bOR\bRM\bMA\bAT\bT
-              If  this  variable  is  set and not null, its value is used as a
+              If this variable is set and not null, its value  is  used  as  a
               format string for _\bs_\bt_\br_\bf_\bt_\bi_\bm_\be(3) to print the time stamp associated
-              with each history entry displayed by the  h\bhi\bis\bst\bto\bor\bry\by  builtin.   If
-              this  variable  is set, the shell writes time stamps to the his-
-              tory file so they may be preserved across shell sessions.   This
-              uses  the  history  comment  character to distinguish timestamps
+              with  each  history  entry displayed by the h\bhi\bis\bst\bto\bor\bry\by builtin.  If
+              this variable is set, the shell writes time stamps to  the  his-
+              tory  file so they may be preserved across shell sessions.  This
+              uses the history comment  character  to  distinguish  timestamps
               from other history lines.
        H\bHO\bOM\bME\bE   The home directory of the current user; the default argument for
               the c\bcd\bd builtin command.  The value of this variable is also used
               when performing tilde expansion.
        H\bHO\bOS\bST\bTF\bFI\bIL\bLE\bE
-              Contains the name of a file in the  same  format  as  _\b/_\be_\bt_\bc_\b/_\bh_\bo_\bs_\bt_\bs
+              Contains  the  name  of  a file in the same format as _\b/_\be_\bt_\bc_\b/_\bh_\bo_\bs_\bt_\bs
               that should be read when the shell needs to complete a hostname.
-              The  list  of possible hostname completions may be changed while
-              the shell is running; the next time hostname completion  is  at-
-              tempted  after  the  value is changed, b\bba\bas\bsh\bh adds the contents of
-              the new file to the existing list.  If H\bHO\bOS\bST\bTF\bFI\bIL\bLE\bE is set, but  has
-              no  value,  or  does  not name a readable file, b\bba\bas\bsh\bh attempts to
-              read _\b/_\be_\bt_\bc_\b/_\bh_\bo_\bs_\bt_\bs to obtain the list of possible hostname  comple-
+              The list of possible hostname completions may be  changed  while
+              the  shell  is running; the next time hostname completion is at-
+              tempted after the value is changed, b\bba\bas\bsh\bh adds  the  contents  of
+              the  new file to the existing list.  If H\bHO\bOS\bST\bTF\bFI\bIL\bLE\bE is set, but has
+              no value, or does not name a readable  file,  b\bba\bas\bsh\bh  attempts  to
+              read  _\b/_\be_\bt_\bc_\b/_\bh_\bo_\bs_\bt_\bs to obtain the list of possible hostname comple-
               tions.  When H\bHO\bOS\bST\bTF\bFI\bIL\bLE\bE is unset, b\bba\bas\bsh\bh clears the hostname list.
        I\bIF\bFS\bS    The _\bI_\bn_\bt_\be_\br_\bn_\ba_\bl _\bF_\bi_\be_\bl_\bd _\bS_\be_\bp_\ba_\br_\ba_\bt_\bo_\br that is used for word splitting af-
-              ter  expansion  and  to  split  lines  into  words with the r\bre\bea\bad\bd
+              ter expansion and to  split  lines  into  words  with  the  r\bre\bea\bad\bd
               builtin command.  Word splitting is described below under E\bEX\bXP\bPA\bAN\bN-\b-
               S\bSI\bIO\bON\bN.  The default value is "<space><tab><newline>".
        I\bIG\bGN\bNO\bOR\bRE\bEE\bEO\bOF\bF
               Controls the action of an interactive shell on receipt of an E\bEO\bOF\bF
               character as the sole input.  If set, the value is the number of
-              consecutive E\bEO\bOF\bF characters which must  be  typed  as  the  first
-              characters  on an input line before b\bba\bas\bsh\bh exits.  If the variable
-              is set but does not have a numeric value, or the value is  null,
-              the  default value is 10.  If it is unset, E\bEO\bOF\bF signifies the end
+              consecutive  E\bEO\bOF\bF  characters  which  must  be typed as the first
+              characters on an input line before b\bba\bas\bsh\bh exits.  If the  variable
+              is  set but does not have a numeric value, or the value is null,
+              the default value is 10.  If it is unset, E\bEO\bOF\bF signifies the  end
               of input to the shell.
        I\bIN\bNP\bPU\bUT\bTR\bRC\bC
-              The filename for the r\bre\bea\bad\bdl\bli\bin\bne\be startup file, overriding  the  de-
+              The  filename  for the r\bre\bea\bad\bdl\bli\bin\bne\be startup file, overriding the de-
               fault of _\b~_\b/_\b._\bi_\bn_\bp_\bu_\bt_\br_\bc (see R\bRE\bEA\bAD\bDL\bLI\bIN\bNE\bE below).
        I\bIN\bNS\bSI\bID\bDE\bE_\b_E\bEM\bMA\bAC\bCS\bS
-              If  this  variable  appears  in  the  environment when the shell
-              starts, b\bba\bas\bsh\bh assumes that it is running inside  an  Emacs  shell
-              buffer  and  may disable line editing, depending on the value of
+              If this variable appears  in  the  environment  when  the  shell
+              starts,  b\bba\bas\bsh\bh  assumes  that it is running inside an Emacs shell
+              buffer and may disable line editing, depending on the  value  of
               T\bTE\bER\bRM\bM.
-       L\bLA\bAN\bNG\bG   Used to determine the  locale  category  for  any  category  not
+       L\bLA\bAN\bNG\bG   Used  to  determine  the  locale  category  for any category not
               specifically selected with a variable starting with L\bLC\bC_\b_.
-       L\bLC\bC_\b_A\bAL\bLL\bL This  variable  overrides  the  value  of L\bLA\bAN\bNG\bG and any other L\bLC\bC_\b_
+       L\bLC\bC_\b_A\bAL\bLL\bL This variable overrides the value of  L\bLA\bAN\bNG\bG  and  any  other  L\bLC\bC_\b_
               variable specifying a locale category.
        L\bLC\bC_\b_C\bCO\bOL\bLL\bLA\bAT\bTE\bE
-              This variable determines the collation order used  when  sorting
-              the  results  of pathname expansion, and determines the behavior
-              of range expressions, equivalence  classes,  and  collating  se-
+              This  variable  determines the collation order used when sorting
+              the results of pathname expansion, and determines  the  behavior
+              of  range  expressions,  equivalence  classes, and collating se-
               quences within pathname expansion and pattern matching.
        L\bLC\bC_\b_C\bCT\bTY\bYP\bPE\bE
-              This  variable  determines  the interpretation of characters and
-              the behavior of character classes within pathname expansion  and
+              This variable determines the interpretation  of  characters  and
+              the  behavior of character classes within pathname expansion and
               pattern matching.
        L\bLC\bC_\b_M\bME\bES\bSS\bSA\bAG\bGE\bES\bS
-              This  variable  determines  the locale used to translate double-
+              This variable determines the locale used  to  translate  double-
               quoted strings preceded by a $\b$.
        L\bLC\bC_\b_N\bNU\bUM\bME\bER\bRI\bIC\bC
-              This variable determines the locale  category  used  for  number
+              This  variable  determines  the  locale category used for number
               formatting.
        L\bLC\bC_\b_T\bTI\bIM\bME\bE
-              This  variable  determines the locale category used for data and
+              This variable determines the locale category used for  data  and
               time formatting.
-       L\bLI\bIN\bNE\bES\bS  Used by the s\bse\bel\ble\bec\bct\bt compound  command  to  determine  the  column
-              length  for  printing selection lists.  Automatically set if the
-              c\bch\bhe\bec\bck\bkw\bwi\bin\bns\bsi\biz\bze\boption is enabled or in an interactive  shell  upon
+       L\bLI\bIN\bNE\bES\bS  Used  by  the  s\bse\bel\ble\bec\bct\bt  compound  command to determine the column
+              length for printing selection lists.  Automatically set  if  the
+              c\bch\bhe\bec\bck\bkw\bwi\bin\bns\bsi\biz\bze\b option  is enabled or in an interactive shell upon
               receipt of a S\bSI\bIG\bGW\bWI\bIN\bNC\bCH\bH.
        M\bMA\bAI\bIL\bL   If the value is set to a file or directory name and the M\bMA\bAI\bIL\bLP\bPA\bAT\bTH\bH
-              variable  is  not  set,  b\bba\bas\bsh\bh informs the user of the arrival of
+              variable is not set, b\bba\bas\bsh\bh informs the user  of  the  arrival  of
               mail in the specified file or Maildir-format directory.
        M\bMA\bAI\bIL\bLC\bCH\bHE\bEC\bCK\bK
-              Specifies how often (in seconds) b\bba\bas\bsh\bh checks for mail.  The  de-
-              fault  is  60  seconds.   When it is time to check for mail, the
-              shell does so before displaying the  primary  prompt.   If  this
-              variable  is  unset,  or  set  to  a  value that is not a number
+              Specifies  how often (in seconds) b\bba\bas\bsh\bh checks for mail.  The de-
+              fault is 60 seconds.  When it is time to  check  for  mail,  the
+              shell  does  so  before  displaying the primary prompt.  If this
+              variable is unset, or set to  a  value  that  is  not  a  number
               greater than or equal to zero, the shell disables mail checking.
        M\bMA\bAI\bIL\bLP\bPA\bAT\bTH\bH
               A colon-separated list of filenames to be checked for mail.  The
               message to be printed when mail arrives in a particular file may
-              be specified by separating the filename from the message with  a
-              "?".   When  used  in the text of the message, $\b$_\b_ expands to the
+              be  specified by separating the filename from the message with a
+              "?".  When used in the text of the message, $\b$_\b_  expands  to  the
               name of the current mailfile.  For example:
               M\bMA\bAI\bIL\bLP\bPA\bAT\bTH\bH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"'
-              B\bBa\bas\bsh\bcan be configured to supply a default value for this  vari-
-              able  (there  is  no  value by default), but the location of the
+              B\bBa\bas\bsh\b can be configured to supply a default value for this vari-
+              able (there is no value by default), but  the  location  of  the
               user  mail  files  that  it  uses  is  system  dependent  (e.g.,
               /var/mail/$\b$U\bUS\bSE\bER\bR).
        O\bOP\bPT\bTE\bER\bRR\bR If set to the value 1, b\bba\bas\bsh\bh displays error messages generated by
-              the  g\bge\bet\bto\bop\bpt\bts\bs builtin command (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below).
-              O\bOP\bPT\bTE\bER\bRR\bis initialized to 1 each time the shell is invoked  or  a
+              the g\bge\bet\bto\bop\bpt\bts\bs builtin command (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\b below).
+              O\bOP\bPT\bTE\bER\bRR\b is  initialized to 1 each time the shell is invoked or a
               shell script is executed.
-       P\bPA\bAT\bTH\bH   The  search  path for commands.  It is a colon-separated list of
-              directories in which the shell looks for commands  (see  C\bCO\bOM\bMM\bMA\bAN\bND\bD
-              E\bEX\bXE\bEC\bCU\bUT\bTI\bIO\bON\b below).   A  zero-length (null) directory name in the
+       P\bPA\bAT\bTH\bH   The search path for commands.  It is a colon-separated  list  of
+              directories  in  which the shell looks for commands (see C\bCO\bOM\bMM\bMA\bAN\bND\bD
+              E\bEX\bXE\bEC\bCU\bUT\bTI\bIO\bON\bbelow).  A zero-length (null) directory  name  in  the
               value of P\bPA\bAT\bTH\bH indicates the current directory.  A null directory
-              name may appear as two adjacent colons,  or  as  an  initial  or
-              trailing  colon.   The  default path is system-dependent, and is
+              name  may  appear  as  two  adjacent colons, or as an initial or
+              trailing colon.  The default path is  system-dependent,  and  is
               set by the administrator who installs b\bba\bas\bsh\bh.  A common value is
                    /usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
        P\bPO\bOS\bSI\bIX\bXL\bLY\bY_\b_C\bCO\bOR\bRR\bRE\bEC\bCT\bT
-              If this variable is in the environment  when  b\bba\bas\bsh\bh  starts,  the
-              shell  enters posix mode before reading the startup files, as if
-              the -\b--\b-p\bpo\bos\bsi\bix\bx invocation option had been supplied.  If it  is  set
-              while  the  shell is running, b\bba\bas\bsh\bh enables posix mode, as if the
+              If  this  variable  is  in the environment when b\bba\bas\bsh\bh starts, the
+              shell enters posix mode before reading the startup files, as  if
+              the  -\b--\b-p\bpo\bos\bsi\bix\bx  invocation option had been supplied.  If it is set
+              while the shell is running, b\bba\bas\bsh\bh enables posix mode, as  if  the
               command "set -o posix" had been executed.  When the shell enters
               posix mode, it sets this variable if it was not already set.
        P\bPR\bRO\bOM\bMP\bPT\bT_\b_C\bCO\bOM\bMM\bMA\bAN\bND\bD
-              If this variable is set, and is an array, the value of each  set
-              element  is  executed as a command prior to issuing each primary
-              prompt.  If this is set but not an array variable, its value  is
+              If  this variable is set, and is an array, the value of each set
+              element is executed as a command prior to issuing  each  primary
+              prompt.   If this is set but not an array variable, its value is
               used as a command to execute instead.
        P\bPR\bRO\bOM\bMP\bPT\bT_\b_D\bDI\bIR\bRT\bTR\bRI\bIM\bM
-              If  set  to a number greater than zero, the value is used as the
+              If set to a number greater than zero, the value is used  as  the
               number of trailing directory components to retain when expanding
-              the \\b\w\bw and \\b\W\bW  prompt  string  escapes  (see  P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\b below).
+              the  \\b\w\bw  and  \\b\W\bW  prompt  string  escapes (see P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\bG below).
               Characters removed are replaced with an ellipsis.
-       P\bPS\bS0\b0    The  value  of  this parameter is expanded (see P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\bG below)
-              and displayed by interactive shells after reading a command  and
+       P\bPS\bS0\b0    The value of this parameter is expanded  (see  P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\b below)
+              and  displayed by interactive shells after reading a command and
               before the command is executed.
-       P\bPS\bS1\b1    The  value  of  this parameter is expanded (see P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\bG below)
-              and used as the primary prompt string.   The  default  value  is
+       P\bPS\bS1\b1    The value of this parameter is expanded  (see  P\bPR\bRO\bOM\bMP\bPT\bTI\bIN\bNG\b below)
+              and  used  as  the  primary prompt string.  The default value is
               "\s-\v\$ ".
-       P\bPS\bS2\b2    The  value of this parameter is expanded as with P\bPS\bS1\b1 and used as
+       P\bPS\bS2\b2    The value of this parameter is expanded as with P\bPS\bS1\b1 and used  as
               the secondary prompt string.  The default is "> ".
        P\bPS\bS3\b3    The value of this parameter is used as the prompt for the s\bse\bel\ble\bec\bct\bt
               command (see S\bSH\bHE\bEL\bLL\bL G\bGR\bRA\bAM\bMM\bMA\bAR\bR above).
-       P\bPS\bS4\b4    The value of this parameter is expanded  as  with  P\bPS\bS1\b1  and  the
+       P\bPS\bS4\b4    The  value  of  this  parameter  is expanded as with P\bPS\bS1\b1 and the
               value is printed before each command b\bba\bas\bsh\bh displays during an ex-
               ecution trace.  The first character of the expanded value of P\bPS\bS4\b4
               is replicated multiple times, as necessary, to indicate multiple
               levels of indirection.  The default is "+ ".
-       S\bSH\bHE\bEL\bLL\bL  This  variable expands to the full pathname to the shell.  If it
-              is not set when the shell starts, b\bba\bas\bsh\bh assigns to  it  the  full
+       S\bSH\bHE\bEL\bLL\bL  This variable expands to the full pathname to the shell.  If  it
+              is  not  set  when the shell starts, b\bba\bas\bsh\bh assigns to it the full
               pathname of the current user's login shell.
        T\bTI\bIM\bME\bEF\bFO\bOR\bRM\bMA\bAT\bT
-              The  value of this parameter is used as a format string specify-
-              ing how the timing information for pipelines prefixed  with  the
-              t\bti\bim\bme\b reserved word should be displayed.  The %\b% character intro-
-              duces an escape sequence that is expanded to  a  time  value  or
-              other  information.  The escape sequences and their meanings are
+              The value of this parameter is used as a format string  specify-
+              ing  how  the timing information for pipelines prefixed with the
+              t\bti\bim\bme\breserved word should be displayed.  The %\b% character  intro-
+              duces  an  escape  sequence  that is expanded to a time value or
+              other information.  The escape sequences and their meanings  are
               as follows; the brackets denote optional portions.
               %\b%%\b%        A literal %\b%.
               %\b%[\b[_\bp]\b][\b[l\bl]\b]R\bR  The elapsed time in seconds.
@@ -1525,79 +1526,79 @@ P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS
               %\b%[\b[_\bp]\b][\b[l\bl]\b]S\bS  The number of CPU seconds spent in system mode.
               %\b%P\bP        The CPU percentage, computed as (%U + %S) / %R.
 
-              The optional _\bp is a digit specifying the _\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn,  the  number
+              The  optional  _\bp is a digit specifying the _\bp_\br_\be_\bc_\bi_\bs_\bi_\bo_\bn, the number
               of fractional digits after a decimal point.  A value of 0 causes
-              no  decimal point or fraction to be output.  t\bti\bim\bme\be prints at most
-              six digits after the decimal point; values of _\bp greater  than  6
+              no decimal point or fraction to be output.  t\bti\bim\bme\be prints at  most
+              six  digits  after the decimal point; values of _\bp greater than 6
               are changed to 6.  If _\bp is not specified, t\bti\bim\bme\be prints three dig-
               its after the decimal point.
 
-              The  optional l\bl specifies a longer format, including minutes, of
-              the form _\bM_\bMm_\bS_\bS._\bF_\bFs.  The value of _\bp determines  whether  or  not
+              The optional l\bl specifies a longer format, including minutes,  of
+              the  form  _\bM_\bMm_\bS_\bS._\bF_\bFs.   The value of _\bp determines whether or not
               the fraction is included.
 
-              If  this  variable  is not set, b\bba\bas\bsh\bh acts as if it had the value
-              $\b$'\b'\\b\n\bnr\bre\bea\bal\bl\\b\t\bt%\b%3\b3l\blR\bR\\b\n\bnu\bus\bse\ber\br\\b\t\bt%\b%3\b3l\blU\bU\\b\n\bns\bsy\bys\bs\\b\t\bt%\b%3\b3l\blS\bS'\b'.  If the value  is  null,
-              b\bba\bas\bsh\b does  not display any timing information.  A trailing new-
+              If this variable is not set, b\bba\bas\bsh\bh acts as if it  had  the  value
+              $\b$'\b'\\b\n\bnr\bre\bea\bal\bl\\b\t\bt%\b%3\b3l\blR\bR\\b\n\bnu\bus\bse\ber\br\\b\t\bt%\b%3\b3l\blU\bU\\b\n\bns\bsy\bys\bs\\b\t\bt%\b%3\b3l\blS\bS'\b'.   If  the value is null,
+              b\bba\bas\bsh\bdoes not display any timing information.  A  trailing  new-
               line is added when the format string is displayed.
-       T\bTM\bMO\bOU\bUT\bT  If set to a value greater than zero, the r\bre\bea\bad\bd builtin  uses  the
-              value  as its default timeout.  The s\bse\bel\ble\bec\bct\bt command terminates if
-              input does not arrive after T\bTM\bMO\bOU\bUT\bT seconds when input  is  coming
-              from  a  terminal.  In an interactive shell, the value is inter-
-              preted as the number of seconds to wait for a line of input  af-
-              ter  issuing  the primary prompt.  B\bBa\bas\bsh\bh terminates after waiting
-              for that number of seconds if a complete line of input does  not
+       T\bTM\bMO\bOU\bUT\bT  If  set  to a value greater than zero, the r\bre\bea\bad\bd builtin uses the
+              value as its default timeout.  The s\bse\bel\ble\bec\bct\bt command terminates  if
+              input  does  not arrive after T\bTM\bMO\bOU\bUT\bT seconds when input is coming
+              from a terminal.  In an interactive shell, the value  is  inter-
+              preted  as the number of seconds to wait for a line of input af-
+              ter issuing the primary prompt.  B\bBa\bas\bsh\bh terminates  after  waiting
+              for  that number of seconds if a complete line of input does not
               arrive.
-       T\bTM\bMP\bPD\bDI\bIR\bR If  set, b\bba\bas\bsh\bh uses its value as the name of a directory in which
+       T\bTM\bMP\bPD\bDI\bIR\bR If set, b\bba\bas\bsh\bh uses its value as the name of a directory in  which
               b\bba\bas\bsh\bh creates temporary files for the shell's use.
        a\bau\but\bto\bo_\b_r\bre\bes\bsu\bum\bme\be
               This variable controls how the shell interacts with the user and
-              job control.  If this variable is set, simple commands  consist-
-              ing  of only a single word, without redirections, are treated as
-              candidates for resumption of an existing stopped job.  There  is
-              no  ambiguity  allowed;  if there is more than one job beginning
-              with or containing the word, this selects the most recently  ac-
-              cessed  job.  The _\bn_\ba_\bm_\be of a stopped job, in this context, is the
-              command line used to start it, as displayed by j\bjo\bob\bbs\bs.  If set  to
-              the  value  _\be_\bx_\ba_\bc_\bt, the word must match the name of a stopped job
-              exactly; if set to _\bs_\bu_\bb_\bs_\bt_\br_\bi_\bn_\bg, the word needs  to  match  a  sub-
-              string  of  the name of a stopped job.  The _\bs_\bu_\bb_\bs_\bt_\br_\bi_\bn_\bg value pro-
+              job  control.  If this variable is set, simple commands consist-
+              ing of only a single word, without redirections, are treated  as
+              candidates  for resumption of an existing stopped job.  There is
+              no ambiguity allowed; if there is more than  one  job  beginning
+              with  or containing the word, this selects the most recently ac-
+              cessed job.  The _\bn_\ba_\bm_\be of a stopped job, in this context, is  the
+              command  line used to start it, as displayed by j\bjo\bob\bbs\bs.  If set to
+              the value _\be_\bx_\ba_\bc_\bt, the word must match the name of a  stopped  job
+              exactly;  if  set  to  _\bs_\bu_\bb_\bs_\bt_\br_\bi_\bn_\bg, the word needs to match a sub-
+              string of the name of a stopped job.  The _\bs_\bu_\bb_\bs_\bt_\br_\bi_\bn_\bg  value  pro-
               vides functionality analogous to the %\b%?\b?  job identifier (see J\bJO\bOB\bB
-              C\bCO\bON\bNT\bTR\bRO\bOL\bbelow).  If set to any other value (e.g.,  _\bp_\br_\be_\bf_\bi_\bx),  the
-              word  must  be  a  prefix of a stopped job's name; this provides
+              C\bCO\bON\bNT\bTR\bRO\bOL\b below).   If set to any other value (e.g., _\bp_\br_\be_\bf_\bi_\bx), the
+              word must be a prefix of a stopped  job's  name;  this  provides
               functionality analogous to the %\b%_\bs_\bt_\br_\bi_\bn_\bg job identifier.
        h\bhi\bis\bst\btc\bch\bha\bar\brs\bs
-              The two or three characters  which  control  history  expansion,
-              quick  substitution, and tokenization (see H\bHI\bIS\bST\bTO\bOR\bRY\bY E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN be-
-              low).  The first character is the _\bh_\bi_\bs_\bt_\bo_\br_\by  _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\b character,
-              the  character  which  begins a history expansion, normally "!\b!".
-              The second character is the _\bq_\bu_\bi_\bc_\bk _\bs_\bu_\bb_\bs_\bt_\bi_\bt_\bu_\bt_\bi_\bo_\bn  character,  nor-
-              mally  "^\b^".  When it appears as the first character on the line,
+              The  two  or  three  characters which control history expansion,
+              quick substitution, and tokenization (see H\bHI\bIS\bST\bTO\bOR\bRY\bY E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\b be-
+              low).   The  first character is the _\bh_\bi_\bs_\bt_\bo_\br_\by _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn character,
+              the character which begins a history  expansion,  normally  "!\b!".
+              The  second  character is the _\bq_\bu_\bi_\bc_\bk _\bs_\bu_\bb_\bs_\bt_\bi_\bt_\bu_\bt_\bi_\bo_\bn character, nor-
+              mally "^\b^".  When it appears as the first character on the  line,
               history substitution repeats the previous command, replacing one
-              string with another.  The optional third character is  the  _\bh_\bi_\bs_\b-
-              _\bt_\bo_\br_\b _\bc_\bo_\bm_\bm_\be_\bn_\bt character,  normally "#\b#", which indicates that the
-              remainder of the line is a comment when it appears as the  first
-              character  of  a  word.   The history comment character disables
-              history substitution for the remaining words on  the  line.   It
+              string  with  another.  The optional third character is the _\bh_\bi_\bs_\b-
+              _\bt_\bo_\br_\b_\bc_\bo_\bm_\bm_\be_\bn_\bt character,  normally "#\b#", which indicates that  the
+              remainder  of the line is a comment when it appears as the first
+              character of a word.  The  history  comment  character  disables
+              history  substitution  for  the remaining words on the line.  It
               does not necessarily cause the shell parser to treat the rest of
               the line as a comment.
 
    A\bAr\brr\bra\bay\bys\bs
-       B\bBa\bas\bsh\b provides one-dimensional indexed and associative array variables.
-       Any variable may be used as an indexed array; the d\bde\bec\bcl\bla\bar\bre\be  builtin  ex-
-       plicitly  declares  an array.  There is no maximum limit on the size of
-       an array, nor any requirement that members be indexed or assigned  con-
-       tiguously.   Indexed arrays are referenced using arithmetic expressions
-       that must expand to an integer (see A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC  E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN  below)  and
-       are  zero-based;  associative  arrays  are  referenced  using arbitrary
-       strings.  Unless otherwise noted, indexed array indices  must  be  non-
+       B\bBa\bas\bsh\bprovides one-dimensional indexed and associative array  variables.
+       Any  variable  may be used as an indexed array; the d\bde\bec\bcl\bla\bar\bre\be builtin ex-
+       plicitly declares an array.  There is no maximum limit on the  size  of
+       an  array, nor any requirement that members be indexed or assigned con-
+       tiguously.  Indexed arrays are referenced using arithmetic  expressions
+       that  must  expand  to an integer (see A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN below) and
+       are zero-based;  associative  arrays  are  referenced  using  arbitrary
+       strings.   Unless  otherwise  noted, indexed array indices must be non-
        negative integers.
 
-       An  indexed  array is created automatically if any variable is assigned
+       An indexed array is created automatically if any variable  is  assigned
        to using the syntax
               _\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]=_\bv_\ba_\bl_\bu_\be .
        The _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt is treated as an arithmetic expression that must evaluate
-       to a number greater than or equal to zero.  To  explicitly  declare  an
+       to  a  number  greater than or equal to zero.  To explicitly declare an
        indexed array, use
               d\bde\bec\bcl\bla\bar\bre\be -\b-a\ba _\bn_\ba_\bm_\be
        (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below).
@@ -1612,103 +1613,103 @@ P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS
        r\bre\bea\bad\bdo\bon\bnl\bly\by builtins.  Each attribute applies to all members of an array.
 
        Arrays are assigned using compound assignments of the form _\bn_\ba_\bm_\be=(\b(value_\b1
-       ...  value_\bn)\b),  where  each _\bv_\ba_\bl_\bu_\be may be of the form [_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]=_\bs_\bt_\br_\bi_\bn_\bg.
-       Indexed array assignments do not require  anything  but  _\bs_\bt_\br_\bi_\bn_\bg.   Each
-       _\bv_\ba_\bl_\bu_\b in the list is expanded using the shell expansions described be-
+       ... value_\bn)\b), where each _\bv_\ba_\bl_\bu_\be may be of  the  form  [_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]=_\bs_\bt_\br_\bi_\bn_\bg.
+       Indexed  array  assignments  do  not require anything but _\bs_\bt_\br_\bi_\bn_\bg.  Each
+       _\bv_\ba_\bl_\bu_\bin the list is expanded using the shell expansions described  be-
        low under E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN, but _\bv_\ba_\bl_\bu_\bes that are valid variable assignments in-
-       cluding the brackets and subscript do not undergo brace  expansion  and
+       cluding  the  brackets and subscript do not undergo brace expansion and
        word splitting, as with individual variable assignments.
 
-       When  assigning  to  indexed  arrays, if the optional brackets and sub-
-       script are supplied, that index is assigned to; otherwise the index  of
-       the  element  assigned  is  the last index assigned to by the statement
+       When assigning to indexed arrays, if the  optional  brackets  and  sub-
+       script  are supplied, that index is assigned to; otherwise the index of
+       the element assigned is the last index assigned  to  by  the  statement
        plus one.  Indexing starts at zero.
 
        When assigning to an associative array, the words in a compound assign-
-       ment may be either assignment statements, for which  the  subscript  is
-       required,  or  a list of words that is interpreted as a sequence of al-
-       ternating keys and values: _\bn_\ba_\bm_\be=(\b( _\bk_\be_\by_\b1 _\bv_\ba_\bl_\bu_\be_\b1 _\bk_\be_\by_\b2 _\bv_\ba_\bl_\bu_\be_\b2 ...)\b).   These
-       are  treated  identically  to  _\bn_\ba_\bm_\be=(\b( [_\bk_\be_\by_\b1]=_\bv_\ba_\bl_\bu_\be_\b1 [_\bk_\be_\by_\b2]=_\bv_\ba_\bl_\bu_\be_\b2 ...)\b).
-       The first word in the list determines how the remaining words  are  in-
-       terpreted;  all  assignments  in a list must be of the same type.  When
-       using key/value pairs, the keys may not be missing or  empty;  a  final
+       ment  may  be  either assignment statements, for which the subscript is
+       required, or a list of words that is interpreted as a sequence  of  al-
+       ternating  keys and values: _\bn_\ba_\bm_\be=(\b( _\bk_\be_\by_\b1 _\bv_\ba_\bl_\bu_\be_\b1 _\bk_\be_\by_\b2 _\bv_\ba_\bl_\bu_\be_\b2 ...)\b).  These
+       are treated identically to  _\bn_\ba_\bm_\be=(\b(  [_\bk_\be_\by_\b1]=_\bv_\ba_\bl_\bu_\be_\b1  [_\bk_\be_\by_\b2]=_\bv_\ba_\bl_\bu_\be_\b ...)\b).
+       The  first  word in the list determines how the remaining words are in-
+       terpreted; all assignments in a list must be of the  same  type.   When
+       using  key/value  pairs,  the keys may not be missing or empty; a final
        missing value is treated like the empty string.
 
-       This  syntax is also accepted by the d\bde\bec\bcl\bla\bar\bre\be builtin.  Individual array
-       elements may be assigned to using the _\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]=_\bv_\ba_\bl_\bu_\be syntax  in-
+       This syntax is also accepted by the d\bde\bec\bcl\bla\bar\bre\be builtin.  Individual  array
+       elements  may be assigned to using the _\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]=_\bv_\ba_\bl_\bu_\be syntax in-
        troduced above.
 
-       When  assigning  to an indexed array, if _\bn_\ba_\bm_\be is subscripted by a nega-
+       When assigning to an indexed array, if _\bn_\ba_\bm_\be is subscripted by  a  nega-
        tive number, that number is interpreted as relative to one greater than
-       the maximum index of _\bn_\ba_\bm_\be, so negative indices count back from the  end
+       the  maximum index of _\bn_\ba_\bm_\be, so negative indices count back from the end
        of the array, and an index of -1 references the last element.
 
        The "+=" operator appends to an array variable when assigning using the
        compound assignment syntax; see P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS above.
 
-       An  array  element  is referenced using ${_\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]}.  The braces
-       are required to avoid conflicts with pathname expansion.  If  _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt
+       An array element is referenced using  ${_\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]}.   The  braces
+       are  required to avoid conflicts with pathname expansion.  If _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt
        is @\b@ or *\b*, the word expands to all members of _\bn_\ba_\bm_\be, unless noted in the
-       description  of  a  builtin or word expansion.  These subscripts differ
-       only when the word appears within double quotes.  If the word  is  dou-
-       ble-quoted,  ${_\bn_\ba_\bm_\be[*]} expands to a single word with the value of each
-       array member separated by the first character of the I\bIF\bFS\bS special  vari-
-       able,  and  ${_\bn_\ba_\bm_\be[@]} expands each element of _\bn_\ba_\bm_\be to a separate word.
+       description of a builtin or word expansion.   These  subscripts  differ
+       only  when  the word appears within double quotes.  If the word is dou-
+       ble-quoted, ${_\bn_\ba_\bm_\be[*]} expands to a single word with the value of  each
+       array  member separated by the first character of the I\bIF\bFS\bS special vari-
+       able, and ${_\bn_\ba_\bm_\be[@]} expands each element of _\bn_\ba_\bm_\be to a  separate  word.
        When there are no array members, ${_\bn_\ba_\bm_\be[@]} expands to nothing.  If the
-       double-quoted expansion occurs within a  word,  the  expansion  of  the
-       first  parameter  is joined with the beginning part of the expansion of
-       the original word, and the expansion of the last  parameter  is  joined
-       with  the  last  part  of  the expansion of the original word.  This is
-       analogous to the expansion of the special parameters *\b* and @\b@ (see  S\bSp\bpe\be-\b-
+       double-quoted  expansion  occurs  within  a  word, the expansion of the
+       first parameter is joined with the beginning part of the  expansion  of
+       the  original  word,  and the expansion of the last parameter is joined
+       with the last part of the expansion of  the  original  word.   This  is
+       analogous  to the expansion of the special parameters *\b* and @\b@ (see S\bSp\bpe\be-\b-
        c\bci\bia\bal\bl P\bPa\bar\bra\bam\bme\bet\bte\ber\brs\bs above).
 
-       ${#_\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]}  expands  to  the length of ${_\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]}.  If
+       ${#_\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]} expands to the length  of  ${_\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt]}.   If
        _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt is *\b* or @\b@, the expansion is the number of elements in the ar-
        ray.
 
        If the _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt used to reference an element of an indexed array eval-
-       uates to a number less than zero, it is interpreted as relative to  one
-       greater  than the maximum index of the array, so negative indices count
-       back from the end of the array, and an index of -1 references the  last
+       uates  to a number less than zero, it is interpreted as relative to one
+       greater than the maximum index of the array, so negative indices  count
+       back  from the end of the array, and an index of -1 references the last
        element.
 
        Referencing an array variable without a subscript is equivalent to ref-
-       erencing  the array with a subscript of 0.  Any reference to a variable
+       erencing the array with a subscript of 0.  Any reference to a  variable
        using a valid subscript is valid; b\bba\bas\bsh\bh creates an array if necessary.
 
-       An array variable is considered set if a subscript has been assigned  a
+       An  array variable is considered set if a subscript has been assigned a
        value.  The null string is a valid value.
 
-       It  is possible to obtain the keys (indices) of an array as well as the
-       values.  ${!\b!_\bn_\ba_\bm_\be[_\b@]} and ${!\b!_\bn_\ba_\bm_\be[_\b*]} expand to the indices assigned  in
+       It is possible to obtain the keys (indices) of an array as well as  the
+       values.   ${!\b!_\bn_\ba_\bm_\be[_\b@]} and ${!\b!_\bn_\ba_\bm_\be[_\b*]} expand to the indices assigned in
        array variable _\bn_\ba_\bm_\be.  The treatment when in double quotes is similar to
        the expansion of the special parameters _\b@ and _\b* within double quotes.
 
        The u\bun\bns\bse\bet\bt builtin is used to destroy arrays.  u\bun\bns\bse\bet\bt _\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt] un-
-       sets  the  array element at index _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt, for both indexed and asso-
-       ciative arrays.  Negative subscripts to indexed arrays are  interpreted
-       as  described  above.   Unsetting the last element of an array variable
-       does not unset the variable.  u\bun\bns\bse\bet\bt _\bn_\ba_\bm_\be, where _\bn_\ba_\bm_\be is an  array,  re-
-       moves  the entire array.  u\bun\bns\bse\bet\bt _\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt] behaves differently de-
-       pending on whether _\bn_\ba_\bm_\be is an indexed or associative  array  when  _\bs_\bu_\bb_\b-
+       sets the array element at index _\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt, for both indexed  and  asso-
+       ciative  arrays.  Negative subscripts to indexed arrays are interpreted
+       as described above.  Unsetting the last element of  an  array  variable
+       does  not  unset the variable.  u\bun\bns\bse\bet\bt _\bn_\ba_\bm_\be, where _\bn_\ba_\bm_\be is an array, re-
+       moves the entire array.  u\bun\bns\bse\bet\bt _\bn_\ba_\bm_\be[_\bs_\bu_\bb_\bs_\bc_\br_\bi_\bp_\bt] behaves differently  de-
+       pending  on  whether  _\bn_\ba_\bm_\be is an indexed or associative array when _\bs_\bu_\bb_\b-
        _\bs_\bc_\br_\bi_\bp_\bt is *\b* or @\b@.  If _\bn_\ba_\bm_\be is an associative array, this unsets the el-
-       ement  with  subscript  *\b* or @\b@.  If _\bn_\ba_\bm_\be is an indexed array, unset re-
+       ement with subscript *\b* or @\b@.  If _\bn_\ba_\bm_\be is an indexed  array,  unset  re-
        moves all of the elements but does not remove the array itself.
 
-       When using a variable name with a subscript as an argument  to  a  com-
-       mand,  such  as with u\bun\bns\bse\bet\bt, without using the word expansion syntax de-
-       scribed above, (e.g., unset a[4]), the argument is subject to  pathname
-       expansion.   Quote  the  argument  if pathname expansion is not desired
+       When  using  a  variable name with a subscript as an argument to a com-
+       mand, such as with u\bun\bns\bse\bet\bt, without using the word expansion  syntax  de-
+       scribed  above, (e.g., unset a[4]), the argument is subject to pathname
+       expansion.  Quote the argument if pathname  expansion  is  not  desired
        (e.g., unset 'a[4]').
 
-       The d\bde\bec\bcl\bla\bar\bre\be, l\blo\boc\bca\bal\bl, and r\bre\bea\bad\bdo\bon\bnl\bly\by builtins each accept a  -\b-a\ba  option  to
-       specify  an indexed array and a -\b-A\bA option to specify an associative ar-
-       ray.  If both options are supplied,  -\b-A\bA  takes  precedence.   The  r\bre\bea\bad\bd
-       builtin  accepts  a  -\b-a\ba  option to assign a list of words read from the
+       The  d\bde\bec\bcl\bla\bar\bre\be,  l\blo\boc\bca\bal\bl,  and r\bre\bea\bad\bdo\bon\bnl\bly\by builtins each accept a -\b-a\ba option to
+       specify an indexed array and a -\b-A\bA option to specify an associative  ar-
+       ray.   If  both  options  are  supplied, -\b-A\bA takes precedence.  The r\bre\bea\bad\bd
+       builtin accepts a -\b-a\ba option to assign a list of  words  read  from  the
        standard input to an array.  The s\bse\bet\bt and d\bde\bec\bcl\bla\bar\bre\be builtins display array
-       values in a way that allows them to be reused  as  assignments.   Other
-       builtins  accept  array name arguments as well (e.g., m\bma\bap\bpf\bfi\bil\ble\be); see the
-       descriptions of individual builtins below for details.  The shell  pro-
+       values  in  a  way that allows them to be reused as assignments.  Other
+       builtins accept array name arguments as well (e.g., m\bma\bap\bpf\bfi\bil\ble\be);  see  the
+       descriptions  of individual builtins below for details.  The shell pro-
        vides a number of builtin array variables.
 
 E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
@@ -1718,64 +1719,64 @@ E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
        _\bm_\be_\bt_\bi_\bc _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn, _\bw_\bo_\br_\bd _\bs_\bp_\bl_\bi_\bt_\bt_\bi_\bn_\bg, _\bp_\ba_\bt_\bh_\bn_\ba_\bm_\be _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn, and _\bq_\bu_\bo_\bt_\be _\br_\be_\bm_\bo_\bv_\ba_\bl.
 
        The order of expansions is: brace expansion; tilde expansion, parameter
-       and  variable expansion, arithmetic expansion, and command substitution
-       (done in a left-to-right fashion); word splitting; pathname  expansion;
+       and variable expansion, arithmetic expansion, and command  substitution
+       (done  in a left-to-right fashion); word splitting; pathname expansion;
        and quote removal.
 
        On systems that can support it, there is an additional expansion avail-
-       able:  _\bp_\br_\bo_\bc_\be_\bs_\bs  _\bs_\bu_\bb_\bs_\bt_\bi_\bt_\bu_\bt_\bi_\bo_\bn.   This  is  performed at the same time as
-       tilde, parameter, variable, and arithmetic expansion and  command  sub-
+       able: _\bp_\br_\bo_\bc_\be_\bs_\bs _\bs_\bu_\bb_\bs_\bt_\bi_\bt_\bu_\bt_\bi_\bo_\bn.  This is performed  at  the  same  time  as
+       tilde,  parameter,  variable, and arithmetic expansion and command sub-
        stitution.
 
-       _\bQ_\bu_\bo_\bt_\b _\br_\be_\bm_\bo_\bv_\ba_\bl  is  always performed last.  It removes quote characters
-       present in the original word, not ones resulting from one of the  other
+       _\bQ_\bu_\bo_\bt_\b_\br_\be_\bm_\bo_\bv_\ba_\bl is always performed last.  It  removes  quote  characters
+       present  in the original word, not ones resulting from one of the other
        expansions, unless they have been quoted themselves.
 
-       Only  brace  expansion,  word splitting, and pathname expansion can in-
-       crease the number of words of the expansion; other expansions expand  a
-       single  word to a single word.  The only exceptions to this are the ex-
+       Only brace expansion, word splitting, and pathname  expansion  can  in-
+       crease  the number of words of the expansion; other expansions expand a
+       single word to a single word.  The only exceptions to this are the  ex-
        pansions  of  "\b"$\b$@\b@"\b"  and  "\b"$\b${\b{_\bn_\ba_\bm_\be[\b[@\b@]\b]}\b}"\b",  and,  in  most  cases,  $\b$*\b*  and
        $\b${\b{_\bn_\ba_\bm_\be[\b[*\b*]\b]}\b} as explained above (see P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS).
 
    B\bBr\bra\bac\bce\be E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn
-       _\bB_\br_\ba_\bc_\b _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn is a mechanism to generate arbitrary strings sharing a
+       _\bB_\br_\ba_\bc_\b_\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn is a mechanism to generate arbitrary strings sharing  a
        common prefix and suffix, either of which can be empty.  This mechanism
-       is similar to _\bp_\ba_\bt_\bh_\bn_\ba_\bm_\be _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn, but the filenames generated need  not
-       exist.   Patterns to be brace expanded are formed from an optional _\bp_\br_\be_\b-
-       _\ba_\bm_\bb_\bl_\be, followed by either a series of comma-separated strings or a  se-
-       quence  expression  between  a  pair of braces, followed by an optional
-       _\bp_\bo_\bs_\bt_\bs_\bc_\br_\bi_\bp_\bt.  The preamble is prefixed to each string  contained  within
-       the  braces,  and  the  postscript  is  then appended to each resulting
+       is  similar to _\bp_\ba_\bt_\bh_\bn_\ba_\bm_\be _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn, but the filenames generated need not
+       exist.  Patterns to be brace expanded are formed from an optional  _\bp_\br_\be_\b-
+       _\ba_\bm_\bb_\bl_\be,  followed by either a series of comma-separated strings or a se-
+       quence expression between a pair of braces,  followed  by  an  optional
+       _\bp_\bo_\bs_\bt_\bs_\bc_\br_\bi_\bp_\bt.   The  preamble is prefixed to each string contained within
+       the braces, and the postscript  is  then  appended  to  each  resulting
        string, expanding left to right.
 
-       Brace expansions may be nested.  The results of  each  expanded  string
+       Brace  expansions  may  be nested.  The results of each expanded string
        are not sorted; brace expansion preserves left to right order.  For ex-
        ample, a{\b{d,c,b}\b}e expands into "ade ace abe".
 
-       A  sequence expression takes the form {\b{_\bx.\b..\b._\by[\b[.\b..\b._\bi_\bn_\bc_\br]\b]}\b}, where _\bx and _\by are
-       either integers or single letters, and _\bi_\bn_\bc_\br, an optional increment,  is
+       A sequence expression takes the form {\b{_\bx.\b..\b._\by[\b[.\b..\b._\bi_\bn_\bc_\br]\b]}\b}, where _\bx and _\b are
+       either  integers or single letters, and _\bi_\bn_\bc_\br, an optional increment, is
        an integer.  When integers are supplied, the expression expands to each
-       number  between  _\bx  and  _\by,  inclusive.  If either _\bx or _\by begins with a
+       number between _\bx and _\by, inclusive.  If either _\bx  or  _\by  begins  with  a
        zero, each generated term will contain the same number of digits, zero-
        padding where necessary.  When letters are supplied, the expression ex-
-       pands to each character lexicographically between _\bx and  _\by,  inclusive,
+       pands  to  each character lexicographically between _\bx and _\by, inclusive,
        using the default C locale.  Note that both _\bx and _\by must be of the same
-       type  (integer  or letter).  When the increment is supplied, it is used
-       as the difference between each term.  The default increment is 1 or  -1
+       type (integer or letter).  When the increment is supplied, it  is  used
+       as  the difference between each term.  The default increment is 1 or -1
        as appropriate.
 
        Brace expansion is performed before any other expansions, and any char-
-       acters  special to other expansions are preserved in the result.  It is
-       strictly textual.  B\bBa\bas\bsh\bh does not apply any syntactic interpretation  to
+       acters special to other expansions are preserved in the result.  It  is
+       strictly  textual.  B\bBa\bas\bsh\bh does not apply any syntactic interpretation to
        the context of the expansion or the text between the braces.
 
-       A  correctly-formed  brace  expansion must contain unquoted opening and
+       A correctly-formed brace expansion must contain  unquoted  opening  and
        closing braces, and at least one unquoted comma or a valid sequence ex-
        pression.  Any incorrectly formed brace expansion is left unchanged.
 
-       A "{" or Q , may be quoted with a backslash to prevent its  being  con-
-       sidered  part of a brace expression.  To avoid conflicts with parameter
-       expansion, the string "${" is not considered eligible for brace  expan-
+       A  "{"  or Q , may be quoted with a backslash to prevent its being con-
+       sidered part of a brace expression.  To avoid conflicts with  parameter
+       expansion,  the string "${" is not considered eligible for brace expan-
        sion, and inhibits brace expansion until the closing "}".
 
        This construct is typically used as shorthand when the common prefix of
@@ -1785,67 +1786,67 @@ E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
        or
               chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
 
-       Brace  expansion  introduces  a  slight incompatibility with historical
-       versions of s\bsh\bh.  s\bsh\bh does not treat opening or closing braces  specially
-       when  they  appear as part of a word, and preserves them in the output.
-       B\bBa\bas\bsh\bremoves braces from words as a  consequence  of  brace  expansion.
+       Brace expansion introduces a  slight  incompatibility  with  historical
+       versions  of s\bsh\bh.  s\bsh\bh does not treat opening or closing braces specially
+       when they appear as part of a word, and preserves them in  the  output.
+       B\bBa\bas\bsh\b removes  braces  from  words as a consequence of brace expansion.
        For example, a word entered to s\bsh\bh as "file{1,2}" appears identically in
        the output.  B\bBa\bas\bsh\bh outputs that word as "file1 file2" after brace expan-
-       sion.   Start  b\bba\bas\bsh\bh  with the +\b+B\bB option or disable brace expansion with
+       sion.  Start b\bba\bas\bsh\bh with the +\b+B\bB option or disable  brace  expansion  with
        the +\b+B\bB option to the s\bse\bet\bt command (see S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS below) for
        strict s\bsh\bh compatibility.
 
    T\bTi\bil\bld\bde\be E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn
-       If a word begins with an unquoted tilde character  ("~\b~"),  all  of  the
-       characters  preceding  the  first unquoted slash (or all characters, if
-       there is no unquoted slash) are considered a _\bt_\bi_\bl_\bd_\be_\b-_\bp_\br_\be_\bf_\bi_\bx.  If none  of
-       the  characters  in  the tilde-prefix are quoted, the characters in the
-       tilde-prefix following the tilde are treated as a possible _\bl_\bo_\bg_\bi_\b _\bn_\ba_\bm_\be.
-       If  this  login name is the null string, the tilde is replaced with the
+       If  a  word  begins  with an unquoted tilde character ("~\b~"), all of the
+       characters preceding the first unquoted slash (or  all  characters,  if
+       there  is no unquoted slash) are considered a _\bt_\bi_\bl_\bd_\be_\b-_\bp_\br_\be_\bf_\bi_\bx.  If none of
+       the characters in the tilde-prefix are quoted, the  characters  in  the
+       tilde-prefix  following the tilde are treated as a possible _\bl_\bo_\bg_\bi_\bn _\bn_\ba_\bm_\be.
+       If this login name is the null string, the tilde is replaced  with  the
        value of the shell parameter H\bHO\bOM\bME\bE.  If H\bHO\bOM\bME\bE is unset, the tilde expands
-       to the home directory of the user executing the shell instead.   Other-
-       wise,  the  tilde-prefix is replaced with the home directory associated
+       to  the home directory of the user executing the shell instead.  Other-
+       wise, the tilde-prefix is replaced with the home  directory  associated
        with the specified login name.
 
-       If the tilde-prefix is a "~+", the value of the shell variable P\bPW\bWD\b re-
+       If  the tilde-prefix is a "~+", the value of the shell variable P\bPW\bWD\bD re-
        places the tilde-prefix.  If the tilde-prefix is a "~-", the shell sub-
-       stitutes  the value of the shell variable O\bOL\bLD\bDP\bPW\bWD\bD, if it is set.  If the
-       characters following the tilde in the tilde-prefix consist of a  number
-       _\bN,  optionally prefixed by a "+" or a "-", the tilde-prefix is replaced
+       stitutes the value of the shell variable O\bOL\bLD\bDP\bPW\bWD\bD, if it is set.  If  the
+       characters  following the tilde in the tilde-prefix consist of a number
+       _\bN, optionally prefixed by a "+" or a "-", the tilde-prefix is  replaced
        with the corresponding element from the directory stack, as it would be
        displayed by the d\bdi\bir\brs\bs builtin invoked with the characters following the
-       tilde in the tilde-prefix as an argument.  If the characters  following
+       tilde  in the tilde-prefix as an argument.  If the characters following
        the tilde in the tilde-prefix consist of a number without a leading "+"
        or "-", tilde expansion assumes "+".
 
-       The  results  of tilde expansion are treated as if they were quoted, so
-       the replacement is not subject to word splitting  and  pathname  expan-
+       The results of tilde expansion are treated as if they were  quoted,  so
+       the  replacement  is  not subject to word splitting and pathname expan-
        sion.
 
-       If  the login name is invalid, or the tilde expansion fails, the tilde-
+       If the login name is invalid, or the tilde expansion fails, the  tilde-
        prefix is unchanged.
 
-       B\bBa\bas\bsh\bchecks each variable assignment for unquoted tilde-prefixes  imme-
-       diately  following  a :\b: or the first =\b=, and performs tilde expansion in
-       these cases.  Consequently, one may use filenames with  tildes  in  as-
-       signments  to P\bPA\bAT\bTH\bH, M\bMA\bAI\bIL\bLP\bPA\bAT\bTH\bH, and C\bCD\bDP\bPA\bAT\bTH\bH, and the shell assigns the ex-
+       B\bBa\bas\bsh\b checks each variable assignment for unquoted tilde-prefixes imme-
+       diately following a :\b: or the first =\b=, and performs tilde  expansion  in
+       these  cases.   Consequently,  one may use filenames with tildes in as-
+       signments to P\bPA\bAT\bTH\bH, M\bMA\bAI\bIL\bLP\bPA\bAT\bTH\bH, and C\bCD\bDP\bPA\bAT\bTH\bH, and the shell assigns the  ex-
        panded value.
 
-       B\bBa\bas\bsh\balso performs tilde expansion on words satisfying  the  conditions
+       B\bBa\bas\bsh\b also  performs tilde expansion on words satisfying the conditions
        of variable assignments (as described above under P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS) when they
-       appear  as arguments to simple commands.  B\bBa\bas\bsh\bh does not do this, except
+       appear as arguments to simple commands.  B\bBa\bas\bsh\bh does not do this,  except
        for the _\bd_\be_\bc_\bl_\ba_\br_\ba_\bt_\bi_\bo_\bn commands listed above, when in posix mode.
 
    P\bPa\bar\bra\bam\bme\bet\bte\ber\br E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn
        The "$\b$" character introduces parameter expansion, command substitution,
-       or arithmetic expansion.  The parameter name or symbol to  be  expanded
-       may  be enclosed in braces, which are optional but serve to protect the
-       variable to be expanded from characters immediately following it  which
+       or  arithmetic  expansion.  The parameter name or symbol to be expanded
+       may be enclosed in braces, which are optional but serve to protect  the
+       variable  to be expanded from characters immediately following it which
        could be interpreted as part of the name.
 
-       When  braces  are  used, the matching ending brace is the first "}\b}" not
+       When braces are used, the matching ending brace is the  first  "}\b}"  not
        escaped by a backslash or within a quoted string, and not within an em-
-       bedded arithmetic expansion, command substitution, or parameter  expan-
+       bedded  arithmetic expansion, command substitution, or parameter expan-
        sion.
 
        The basic form of parameter expansion is
@@ -1853,124 +1854,124 @@ E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br}
 
        which substitutes the value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br.  The braces are required when
-       _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\b is  a positional parameter with more than one digit, or when
-       _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\bis followed by a character which is not to be interpreted  as
-       part  of  its  name.   The  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is a shell parameter as described
+       _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\bis a positional parameter with more than one digit,  or  when
+       _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\b is followed by a character which is not to be interpreted as
+       part of its name.  The _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is  a  shell  parameter  as  described
        above P\bPA\bAR\bRA\bAM\bME\bET\bTE\bER\bRS\bS) or an array reference (A\bAr\brr\bra\bay\bys\bs).
 
-       If the first character of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is an exclamation  point  (!\b!),  and
+       If  the  first  character of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is an exclamation point (!\b!), and
        _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is not a _\bn_\ba_\bm_\be_\br_\be_\bf, it introduces a level of indirection.  B\bBa\bas\bsh\bh
        uses the value formed by expanding the rest of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br as the new _\bp_\ba_\b-
-       _\br_\ba_\bm_\be_\bt_\be_\br;  this new parameter is then expanded and that value is used in
-       the rest of the expansion, rather than the expansion  of  the  original
-       _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br.   This is known as _\bi_\bn_\bd_\bi_\br_\be_\bc_\bt _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn.  The value is subject
-       to tilde expansion,  parameter  expansion,  command  substitution,  and
-       arithmetic  expansion.   If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is a nameref, this expands to the
+       _\br_\ba_\bm_\be_\bt_\be_\br; this new parameter is then expanded and that value is used  in
+       the  rest  of  the expansion, rather than the expansion of the original
+       _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br.  This is known as _\bi_\bn_\bd_\bi_\br_\be_\bc_\bt _\be_\bx_\bp_\ba_\bn_\bs_\bi_\bo_\bn.  The value is  subject
+       to  tilde  expansion,  parameter  expansion,  command substitution, and
+       arithmetic expansion.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is a nameref, this expands  to  the
        name of the parameter referenced by _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br instead of performing the
        complete indirect expansion, for compatibility.  The exceptions to this
        are the expansions of ${!\b!_\bp_\br_\be_\bf_\bi_\bx*\b*} and ${!\b!_\bn_\ba_\bm_\be[_\b@]} described below.  The
-       exclamation point must immediately follow the left brace  in  order  to
+       exclamation  point  must  immediately follow the left brace in order to
        introduce indirection.
 
        In each of the cases below, _\bw_\bo_\br_\bd is subject to tilde expansion, parame-
        ter expansion, command substitution, and arithmetic expansion.
 
        When not performing substring expansion, using the forms documented be-
-       low  (e.g.,  :\b:-\b-),  b\bba\bas\bsh\bh  tests  for  a parameter that is unset or null.
+       low (e.g., :\b:-\b-), b\bba\bas\bsh\bh tests for a  parameter  that  is  unset  or  null.
        Omitting the colon tests only for a parameter that is unset.
 
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br:\b:-\b-_\bw_\bo_\br_\bd}
-              U\bUs\bse\bD\bDe\bef\bfa\bau\bul\blt\bt V\bVa\bal\blu\bue\bes\bs.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is unset or null,  the  expan-
-              sion  of _\bw_\bo_\br_\bd is substituted.  Otherwise, the value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br
+              U\bUs\bse\b D\bDe\bef\bfa\bau\bul\blt\bt  V\bVa\bal\blu\bue\bes\bs.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is unset or null, the expan-
+              sion of _\bw_\bo_\br_\bd is substituted.  Otherwise, the value of  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br
               is substituted.
 
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br:\b:=\b=_\bw_\bo_\br_\bd}
-              A\bAs\bss\bsi\big\bgn\bD\bDe\bef\bfa\bau\bul\blt\bt V\bVa\bal\blu\bue\bes\bs.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is unset or null,  the  ex-
-              pansion  of  _\bw_\bo_\br_\bd is assigned to _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, and the expansion is
+              A\bAs\bss\bsi\big\bgn\b D\bDe\bef\bfa\bau\bul\blt\bt  V\bVa\bal\blu\bue\bes\bs.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is unset or null, the ex-
+              pansion of _\bw_\bo_\br_\bd is assigned to _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, and the  expansion  is
               the final value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br.  Positional parameters and special
               parameters may not be assigned in this way.
 
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br:\b:?\b?_\bw_\bo_\br_\bd}
-              D\bDi\bis\bsp\bpl\bla\bay\bE\bEr\brr\bro\bor\br i\bif\bf N\bNu\bul\bll\bl o\bor\br U\bUn\bns\bse\bet\bt.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is null or  unset,
+              D\bDi\bis\bsp\bpl\bla\bay\b E\bEr\brr\bro\bor\br i\bif\bf N\bNu\bul\bll\bl o\bor\br U\bUn\bns\bse\bet\bt.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is null or unset,
               the shell writes the expansion of _\bw_\bo_\br_\bd (or a message to that ef-
               fect if _\bw_\bo_\br_\bd is not present) to the standard error and, if it is
-              not  interactive,  exits with a non-zero status.  An interactive
+              not interactive, exits with a non-zero status.   An  interactive
               shell does not exit, but does not execute the command associated
-              with the expansion.  Otherwise, the value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br  is  sub-
+              with  the  expansion.  Otherwise, the value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is sub-
               stituted.
 
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br:\b:+\b+_\bw_\bo_\br_\bd}
-              U\bUs\bse\b A\bAl\blt\bte\ber\brn\bna\bat\bte\be V\bVa\bal\blu\bue\be.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is null or unset, nothing is
-              substituted, otherwise the expansion  of  _\bw_\bo_\br_\bd  is  substituted.
+              U\bUs\bse\bA\bAl\blt\bte\ber\brn\bna\bat\bte\be V\bVa\bal\blu\bue\be.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is null or unset, nothing  is
+              substituted,  otherwise  the  expansion  of _\bw_\bo_\br_\bd is substituted.
               The value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is not used.
 
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br:\b:_\bo_\bf_\bf_\bs_\be_\bt}
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br:\b:_\bo_\bf_\bf_\bs_\be_\bt:\b:_\bl_\be_\bn_\bg_\bt_\bh}
-              S\bSu\bub\bbs\bst\btr\bri\bin\bng\b E\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn.  Expands to up to _\bl_\be_\bn_\bg_\bt_\bh characters of the
-              value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br starting at the character specified  by  _\bo_\bf_\bf_\b-
-              _\bs_\be_\bt.   If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is @\b@ or *\b*, an indexed array subscripted by @\b@
-              or *\b*, or an associative array name, the results  differ  as  de-
-              scribed  below.   If _\bl_\be_\bn_\bg_\bt_\bh is omitted, expands to the substring
+              S\bSu\bub\bbs\bst\btr\bri\bin\bng\bE\bEx\bxp\bpa\ban\bns\bsi\bio\bon\bn.  Expands to up to _\bl_\be_\bn_\bg_\bt_\bh characters of  the
+              value  of  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br starting at the character specified by _\bo_\bf_\bf_\b-
+              _\bs_\be_\bt.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is @\b@ or *\b*, an indexed array subscripted by  @\b@
+              or  *\b*,  or  an associative array name, the results differ as de-
+              scribed below.  If _\bl_\be_\bn_\bg_\bt_\bh is omitted, expands to  the  substring
               of the value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br starting at the character specified by
               _\bo_\bf_\bf_\bs_\be_\bt and extending to the end of the value.  _\bl_\be_\bn_\bg_\bt_\bh and _\bo_\bf_\bf_\bs_\be_\bt
               are arithmetic expressions (see A\bAR\bRI\bIT\bTH\bHM\bME\bET\bTI\bIC\bC E\bEV\bVA\bAL\bLU\bUA\bAT\bTI\bIO\bON\bN below).
 
-              If _\bo_\bf_\bf_\bs_\be_\bt evaluates to a number less than  zero,  the  value  is
+              If  _\bo_\bf_\bf_\bs_\be_\bt  evaluates  to  a number less than zero, the value is
               used as an offset in characters from the end of the value of _\bp_\ba_\b-
-              _\br_\ba_\bm_\be_\bt_\be_\br.   If _\bl_\be_\bn_\bg_\bt_\bh evaluates to a number less than zero, it is
+              _\br_\ba_\bm_\be_\bt_\be_\br.  If _\bl_\be_\bn_\bg_\bt_\bh evaluates to a number less than zero, it  is
               interpreted as an offset in characters from the end of the value
-              of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br rather than a number of characters, and the  expan-
-              sion  is  the  characters  between _\bo_\bf_\bf_\bs_\be_\bt and that result.  Note
-              that a negative offset must be separated from the  colon  by  at
+              of  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br rather than a number of characters, and the expan-
+              sion is the characters between _\bo_\bf_\bf_\bs_\be_\bt  and  that  result.   Note
+              that  a  negative  offset must be separated from the colon by at
               least one space to avoid being confused with the :\b:-\b- expansion.
 
-              If  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is @\b@ or *\b*, the result is _\bl_\be_\bn_\bg_\bt_\bh positional parame-
-              ters beginning at _\bo_\bf_\bf_\bs_\be_\bt.  A negative _\bo_\bf_\bf_\bs_\be_\bt is  taken  relative
-              to  one  greater  than  the greatest positional parameter, so an
+              If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is @\b@ or *\b*, the result is _\bl_\be_\bn_\bg_\bt_\bh positional  parame-
+              ters  beginning  at _\bo_\bf_\bf_\bs_\be_\bt.  A negative _\bo_\bf_\bf_\bs_\be_\bt is taken relative
+              to one greater than the greatest  positional  parameter,  so  an
               offset of -1 evaluates to the last positional parameter (or 0 if
-              there are no positional parameters).  It is an  expansion  error
+              there  are  no positional parameters).  It is an expansion error
               if _\bl_\be_\bn_\bg_\bt_\bh evaluates to a number less than zero.
 
               If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is an indexed array name subscripted by @ or *, the
               result is the _\bl_\be_\bn_\bg_\bt_\bh members of the array beginning with ${_\bp_\ba_\br_\ba_\b-
-              _\bm_\be_\bt_\be_\br[_\bo_\bf_\bf_\bs_\be_\bt]}.   A  negative  _\bo_\bf_\bf_\bs_\be_\bt  is  taken relative to one
+              _\bm_\be_\bt_\be_\br[_\bo_\bf_\bf_\bs_\be_\bt]}.  A negative _\bo_\bf_\bf_\bs_\be_\bt  is  taken  relative  to  one
               greater than the maximum index of the specified array.  It is an
               expansion error if _\bl_\be_\bn_\bg_\bt_\bh evaluates to a number less than zero.
 
               Substring expansion applied to an associative array produces un-
               defined results.
 
-              Substring indexing is zero-based unless the  positional  parame-
-              ters  are  used,  in  which case the indexing starts at 1 by de-
-              fault.  If _\bo_\bf_\bf_\bs_\be_\bt is 0, and the positional parameters are  used,
+              Substring  indexing  is zero-based unless the positional parame-
+              ters are used, in which case the indexing starts  at  1  by  de-
+              fault.   If _\bo_\bf_\bf_\bs_\be_\bt is 0, and the positional parameters are used,
               $\b$0\b0 is prefixed to the list.
 
        ${!\b!_\bp_\br_\be_\bf_\bi_\bx*\b*}
        ${!\b!_\bp_\br_\be_\bf_\bi_\bx@\b@}
-              N\bNa\bam\bme\bes\b m\bma\bat\btc\bch\bhi\bin\bng\bg p\bpr\bre\bef\bfi\bix\bx.  Expands to the names of variables whose
+              N\bNa\bam\bme\bes\bm\bma\bat\btc\bch\bhi\bin\bng\bg p\bpr\bre\bef\bfi\bix\bx.  Expands to the names of variables  whose
               names begin with _\bp_\br_\be_\bf_\bi_\bx, separated by the first character of the
-              I\bIF\bFS\bspecial variable.  When _\b@ is used and the expansion  appears
-              within  double  quotes, each variable name expands to a separate
+              I\bIF\bFS\b special variable.  When _\b@ is used and the expansion appears
+              within double quotes, each variable name expands to  a  separate
               word.
 
        ${!\b!_\bn_\ba_\bm_\be[_\b@]}
        ${!\b!_\bn_\ba_\bm_\be[_\b*]}
-              L\bLi\bis\bst\bo\bof\bf a\bar\brr\bra\bay\by k\bke\bey\bys\bs.  If _\bn_\ba_\bm_\be is an array  variable,  expands  to
-              the  list  of array indices (keys) assigned in _\bn_\ba_\bm_\be.  If _\bn_\ba_\bm_\be is
-              not an array, expands to 0 if _\bn_\ba_\bm_\be is set  and  null  otherwise.
-              When  _\b@  is used and the expansion appears within double quotes,
+              L\bLi\bis\bst\b o\bof\bf  a\bar\brr\bra\bay\by  k\bke\bey\bys\bs.  If _\bn_\ba_\bm_\be is an array variable, expands to
+              the list of array indices (keys) assigned in _\bn_\ba_\bm_\be.  If  _\bn_\ba_\bm_\b is
+              not  an  array,  expands to 0 if _\bn_\ba_\bm_\be is set and null otherwise.
+              When _\b@ is used and the expansion appears within  double  quotes,
               each key expands to a separate word.
 
        ${#\b#_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br}
-              P\bPa\bar\bra\bam\bme\bet\bte\ber\bl\ble\ben\bng\bgt\bth\bh.  Substitutes the length in characters  of  the
-              expanded  value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is *\b* or @\b@, the value
-              substituted is the number of positional parameters.  If  _\bp_\ba_\br_\ba_\bm_\be_\b-
-              _\bt_\be_\b is  an  array name subscripted by *\b* or @\b@, the value substi-
-              tuted is the number of elements in the array.  If  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\b is
-              an  indexed  array  name  subscripted by a negative number, that
-              number is interpreted as relative to one greater than the  maxi-
-              mum  index of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, so negative indices count back from the
-              end of the array, and an index of -1 references  the  last  ele-
+              P\bPa\bar\bra\bam\bme\bet\bte\ber\b l\ble\ben\bng\bgt\bth\bh.   Substitutes the length in characters of the
+              expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is *\b* or @\b@, the  value
+              substituted  is the number of positional parameters.  If _\bp_\ba_\br_\ba_\bm_\be_\b-
+              _\bt_\be_\bis an array name subscripted by *\b* or @\b@,  the  value  substi-
+              tuted  is  the number of elements in the array.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is
+              an indexed array name subscripted by  a  negative  number,  that
+              number  is interpreted as relative to one greater than the maxi-
+              mum index of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, so negative indices count back from  the
+              end  of  the  array, and an index of -1 references the last ele-
               ment.
 
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br#\b#_\bw_\bo_\br_\bd}
@@ -1978,15 +1979,15 @@ E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
               R\bRe\bem\bmo\bov\bve\be m\bma\bat\btc\bch\bhi\bin\bng\bg p\bpr\bre\bef\bfi\bix\bx p\bpa\bat\btt\bte\ber\brn\bn.  The _\bw_\bo_\br_\bd is expanded to produce
               a pattern just as in pathname expansion, and matched against the
               expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br using the rules described under P\bPa\bat\bt-\b-
-              t\bte\ber\brn\b M\bMa\bat\btc\bch\bhi\bin\bng\bg  below.   If the pattern matches the beginning of
-              the value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, then the result of the expansion is  the
-              expanded  value  of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br with the shortest matching pattern
-              (the "#" case) or the longest matching pattern (the  "##"  case)
-              deleted.   If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is @\b@ or *\b*, the pattern removal operation
-              is applied to each positional parameter in turn, and the  expan-
-              sion  is  the resultant list.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is an array variable
-              subscripted with @\b@ or *\b*, the pattern removal  operation  is  ap-
-              plied  to each member of the array in turn, and the expansion is
+              t\bte\ber\brn\bM\bMa\bat\btc\bch\bhi\bin\bng\bg below.  If the pattern matches  the  beginning  of
+              the  value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, then the result of the expansion is the
+              expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br with the shortest  matching  pattern
+              (the  "#"  case) or the longest matching pattern (the "##" case)
+              deleted.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is @\b@ or *\b*, the pattern removal  operation
+              is  applied to each positional parameter in turn, and the expan-
+              sion is the resultant list.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is an  array  variable
+              subscripted  with  @\b@  or *\b*, the pattern removal operation is ap-
+              plied to each member of the array in turn, and the expansion  is
               the resultant list.
 
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br%\b%_\bw_\bo_\br_\bd}
@@ -1994,15 +1995,15 @@ E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
               R\bRe\bem\bmo\bov\bve\be m\bma\bat\btc\bch\bhi\bin\bng\bg s\bsu\buf\bff\bfi\bix\bx p\bpa\bat\btt\bte\ber\brn\bn.  The _\bw_\bo_\br_\bd is expanded to produce
               a pattern just as in pathname expansion, and matched against the
               expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br using the rules described under P\bPa\bat\bt-\b-
-              t\bte\ber\brn\bM\bMa\bat\btc\bch\bhi\bin\bng\bg below.  If the pattern matches a trailing  portion
-              of  the  expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, then the result of the ex-
-              pansion is the expanded value of  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br  with  the  shortest
-              matching  pattern (the "%" case) or the longest matching pattern
-              (the "%%" case) deleted.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is @\b@ or  *\b*,  the  pattern
-              removal  operation  is  applied  to each positional parameter in
-              turn, and the expansion is the resultant list.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\b is
-              an  array  variable subscripted with @\b@ or *\b*, the pattern removal
-              operation is applied to each member of the array  in  turn,  and
+              t\bte\ber\brn\b M\bMa\bat\btc\bch\bhi\bin\bng\bg below.  If the pattern matches a trailing portion
+              of the expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br, then the result of  the  ex-
+              pansion  is  the  expanded  value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br with the shortest
+              matching pattern (the "%" case) or the longest matching  pattern
+              (the  "%%"  case)  deleted.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is @\b@ or *\b*, the pattern
+              removal operation is applied to  each  positional  parameter  in
+              turn,  and the expansion is the resultant list.  If _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is
+              an array variable subscripted with @\b@ or *\b*, the  pattern  removal
+              operation  is  applied  to each member of the array in turn, and
               the expansion is the resultant list.
 
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br/\b/_\bp_\ba_\bt_\bt_\be_\br_\bn/\b/_\bs_\bt_\br_\bi_\bn_\bg}
@@ -2010,12 +2011,12 @@ E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br/\b/#\b#_\bp_\ba_\bt_\bt_\be_\br_\bn/\b/_\bs_\bt_\br_\bi_\bn_\bg}
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br/\b/%\b%_\bp_\ba_\bt_\bt_\be_\br_\bn/\b/_\bs_\bt_\br_\bi_\bn_\bg}
               P\bPa\bat\btt\bte\ber\brn\bn s\bsu\bub\bbs\bst\bti\bit\btu\but\bti\bio\bon\bn.  The _\bp_\ba_\bt_\bt_\be_\br_\bn is expanded to produce a pat-
-              tern  just  as in pathname expansion and matched against the ex-
-              panded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br using the rules described  under  P\bPa\bat\bt-\b-
-              t\bte\ber\brn\bn  M\bMa\bat\btc\bch\bhi\bin\bng\bg  below.   The longest match of _\bp_\ba_\bt_\bt_\be_\br_\bn in the ex-
-              panded value is replaced with _\bs_\bt_\br_\bi_\bn_\bg.   _\bs_\bt_\br_\bi_\bn_\bg  undergoes  tilde
-              expansion,  parameter  and variable expansion, arithmetic expan-
-              sion, command and process substitution, and quote removal.
+              tern and matched against the expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br as  de-
+              scribed under P\bPa\bat\btt\bte\ber\brn\bn M\bMa\bat\btc\bch\bhi\bin\bng\bg below.  The longest match of _\bp_\ba_\bt_\b-
+              _\bt_\be_\br_\bn  in the expanded value is replaced with _\bs_\bt_\br_\bi_\bn_\bg.  _\bs_\bt_\br_\bi_\bn_\bg un-
+              dergoes  tilde  expansion,  parameter  and  variable  expansion,
+              arithmetic  expansion,  command  and  process  substitution, and
+              quote removal.
 
               In the first form above, only the first match is  replaced.   If
               there are two slashes separating _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br and _\bp_\ba_\bt_\bt_\be_\br_\bn (the sec-
@@ -2067,19 +2068,20 @@ E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br,\b,_\bp_\ba_\bt_\bt_\be_\br_\bn}
        ${_\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br,\b,,\b,_\bp_\ba_\bt_\bt_\be_\br_\bn}
               C\bCa\bas\bse\be  m\bmo\bod\bdi\bif\bfi\bic\bca\bat\bti\bio\bon\bn.   This expansion modifies the case of alpha-
-              betic characters in _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br.  The _\bp_\ba_\bt_\bt_\be_\br_\bn is expanded to  pro-
-              duce a pattern just as in pathname expansion.  Each character in
-              the  expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br is tested against _\bp_\ba_\bt_\bt_\be_\br_\bn, and,
-              if it matches the pattern, its case is converted.   The  pattern
-              should not attempt to match more than one character.
-
-              The  ^\b^  operator  converts lowercase letters matching _\bp_\ba_\bt_\bt_\be_\br_\bn to
-              uppercase; the ,\b, operator converts matching uppercase letters to
-              lowercase.  The ^\b^^\b^ and ,\b,,\b, expansions convert each matched  char-
-              acter  in  the  expanded value; the ^\b^ and ,\b, expansions match and
-              convert only the first character in the expanded value.  If _\bp_\ba_\bt_\b-
-              _\bt_\be_\br_\bn is omitted, it is treated like a  ?\b?,  which  matches  every
-              character.
+              betic characters in _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br.  First, the _\bp_\ba_\bt_\bt_\be_\br_\bn  is  expanded
+              to  produce a pattern as described below under P\bPa\bat\btt\bte\ber\brn\bn M\bMa\bat\btc\bch\bhi\bin\bng\bg.
+              B\bBa\bas\bsh\bh then examines characters in the expanded value of _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br
+              against _\bp_\ba_\bt_\bt_\be_\br_\bn as described below.  If a character matches  the
+              pattern,  its case is converted.  The pattern should not attempt
+              to match more than one character.
+
+              Using "^" converts lowercase letters matching _\bp_\ba_\bt_\bt_\be_\br_\bn to  upper-
+              case; "," converts matching uppercase letters to lowercase.  The
+              ^\b^  and  ,\b,  variants  examine the first character in the expanded
+              value and convert its case if it matches _\bp_\ba_\bt_\bt_\be_\br_\bn; the ^\b^^\b^ and  ,\b,,\b,
+              variants  examine  all characters in the expanded value and con-
+              vert each one that matches _\bp_\ba_\bt_\bt_\be_\br_\bn.  If _\bp_\ba_\bt_\bt_\be_\br_\bn is  omitted,  it
+              is treated like a ?\b?, which matches every character.
 
               If  _\bp_\ba_\br_\ba_\bm_\be_\bt_\be_\br  is @\b@ or *\b*, the case modification operation is ap-
               plied to each positional parameter in turn, and the expansion is
@@ -6627,7 +6629,6 @@ S\bSH\bHE\bEL\bLL\bL B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               c\bco\bom\bmp\bpa\bat\bt4\b42\b2
               c\bco\bom\bmp\bpa\bat\bt4\b43\b3
               c\bco\bom\bmp\bpa\bat\bt4\b44\b4
-              c\bco\bom\bmp\bpa\bat\bt5\b50\b0
                       These  control aspects of the shell's compatibility mode
                       (see S\bSH\bHE\bEL\bLL\bL C\bCO\bOM\bMP\bPA\bAT\bTI\bIB\bBI\bIL\bLI\bIT\bTY\bY M\bMO\bOD\bDE\bE below).
               c\bco\bom\bmp\bpl\ble\bet\bte\be_\b_f\bfu\bul\bll\blq\bqu\buo\bot\bte\be
@@ -7359,8 +7360,8 @@ R\bRE\bES\bST\bTR\bRI\bIC\bCT\bTE\bED\bD S\bSH\bHE\bEL\bLL\bL
        +\bo      Importing  function  definitions  from  the shell environment at
               startup.
 
-       +\bo      Parsing the value of S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS from  the  shell  environment  at
-              startup.
+       +\bo      Parsing the values of B\bBA\bAS\bSH\bHO\bOP\bPT\bTS\bS and S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS from the shell  en-
+              vironment at startup.
 
        +\bo      Redirecting  output using the >, >|, <>, >&, &>, and >> redirec-
               tion operators.
index a38d27f7490df8cc126b667b56d92f0c201d308e..7061d59b06705e4d8d93731aeb6115f187c02fbe 100644 (file)
@@ -3873,10 +3873,9 @@ ${\fIparameter\fP\fB/#\fP\fIpattern\fP\fB/\fP\fIstring\fP}
 ${\fIparameter\fP\fB/%\fP\fIpattern\fP\fB/\fP\fIstring\fP}
 .PD
 \fBPattern substitution\fP.
-The \fIpattern\fP is expanded to produce a pattern just as in
-pathname expansion and matched against the expanded value of
-\fIparameter\fP
-using the rules described under
+The \fIpattern\fP is expanded to produce a pattern
+and matched against the expanded value of \fIparameter\fP
+as described under
 .B "Pattern Matching"
 below.
 The longest match of \fIpattern\fP
@@ -3956,18 +3955,29 @@ ${\fIparameter\fP\fB,,\fP\fIpattern\fP}
 .PD
 \fBCase modification\fP.
 This expansion modifies the case of alphabetic characters in \fIparameter\fP.
-The \fIpattern\fP is expanded to produce a pattern just as in
-pathname expansion.
-Each character in the expanded value of \fIparameter\fP is tested against
-\fIpattern\fP, and, if it matches the pattern, its case is converted.
+First, the \fIpattern\fP is expanded to produce a pattern
+as described below under
+.SM
+.BR "Pattern Matching" .
+.B Bash
+then examines characters in the expanded value of \fIparameter\fP
+against \fIpattern\fP as described below.
+If a character matches the pattern, its case is converted.
 The pattern should not attempt to match more than one character.
 .IP
-The \fB\*^\fP operator converts lowercase letters matching \fIpattern\fP
-to uppercase; the \fB,\fP operator converts matching uppercase letters
-to lowercase.
-The \fB\*^\*^\fP and \fB,,\fP expansions convert each matched character in the
-expanded value; the \fB\*^\fP and \fB,\fP expansions match and convert only
-the first character in the expanded value.
+Using
+.Q \*^
+converts lowercase letters matching \fIpattern\fP to uppercase;
+.Q ,
+converts matching uppercase letters to lowercase.
+The
+\fB\*^\fP and \fB,\fP variants
+examine the first character in the expanded value
+and convert its case if it matches \fIpattern\fP;
+the
+\fB\*^\*^\fP and \fB,,\fP variants
+examine all characters in the expanded value
+and convert each one that matches \fIpattern\fP.
 If \fIpattern\fP is omitted, it is treated like a \fB?\fP, which matches
 every character.
 .IP
@@ -4426,7 +4436,7 @@ shell variable controls how the results of pathname expansion are sorted,
 as described above under
 .BR "Shell Variables" .
 .PP
-\fBPattern Matching\fP
+.B "Pattern Matching"
 .PP
 Any character that appears in a pattern, other than the special pattern
 characters described below, matches itself.
@@ -11873,8 +11883,6 @@ under
 .B compat43
 .TP 8
 .B compat44
-.TP 8
-.B compat50
 .PD
 These control aspects of the shell's compatibility mode
 (see
index 11bcc90325e8464097a1002c34f329e0fc004f42..0d43c0f6f5f22c0c9bd0607a42511dacf22ead0b 100644 (file)
@@ -2142,13 +2142,12 @@ omitted, the operator tests only for existence.
 â€˜${PARAMETER//PATTERN/STRING}’
 â€˜${PARAMETER/#PATTERN/STRING}’
 â€˜${PARAMETER/%PATTERN/STRING}’
-     The PATTERN is expanded to produce a pattern just as in filename
-     expansion and matched against the expanded value of PARAMETER
-     according to the rules described below (*note Pattern Matching::).
-     The longest match of PATTERN in the expanded value is replaced with
-     STRING.  STRING undergoes tilde expansion, parameter and variable
-     expansion, arithmetic expansion, command and process substitution,
-     and quote removal.
+     The PATTERN is expanded to produce a pattern and matched against
+     the expanded value of PARAMETER as described below (*note Pattern
+     Matching::).  The longest match of PATTERN in the expanded value is
+     replaced with STRING.  STRING undergoes tilde expansion, parameter
+     and variable expansion, arithmetic expansion, command and process
+     substitution, and quote removal.
 
      In the first form above, only the first match is replaced.  If
      there are two slashes separating PARAMETER and PATTERN (the second
@@ -2232,19 +2231,21 @@ omitted, the operator tests only for existence.
 â€˜${PARAMETER,PATTERN}’
 â€˜${PARAMETER,,PATTERN}’
      This expansion modifies the case of alphabetic characters in
-     PARAMETER.  The PATTERN is expanded to produce a pattern just as in
-     filename expansion.  Each character in the expanded value of
-     PARAMETER is tested against PATTERN, and, if it matches the
+     PARAMETER.  First, the PATTERN is expanded to produce a pattern as
+     described below in *note Pattern Matching::.
+
+     â€˜Bash’ then examines characters in the expanded value of PARAMETER
+     against PATTERN as described below.  If a character matches the
      pattern, its case is converted.  The pattern should not attempt to
      match more than one character.
 
-     The â€˜^’ operator converts lowercase letters matching PATTERN to
-     uppercase; the â€˜,’ operator converts matching uppercase letters to
-     lowercase.  The â€˜^^’ and â€˜,,’ expansions convert each matched
-     character in the expanded value; the â€˜^’ and â€˜,’ expansions match
-     and convert only the first character in the expanded value.  If
-     PATTERN is omitted, it is treated like a â€˜?’, which matches every
-     character.
+     Using â€˜^’ converts lowercase letters matching PATTERN to uppercase;
+     â€˜,’ converts matching uppercase letters to lowercase.  The â€˜^’ and
+     â€˜,’ variants examine the first character in the expanded value and
+     convert its case if it matches PATTERN; the â€˜^^’ and â€˜,,’ variants
+     examine all characters in the expanded value and convert each one
+     that matches PATTERN.  If PATTERN is omitted, it is treated like a
+     â€˜?’, which matches every character.
 
      If PARAMETER is â€˜@’ or â€˜*’, the case modification operation is
      applied to each positional parameter in turn, and the expansion is
@@ -5633,8 +5634,9 @@ Variables::).
      command (*note The Shopt Builtin::).  The options appearing in
      â€˜BASHOPTS’ are those reported as â€˜on’ by â€˜shopt’.  If this variable
      is in the environment when Bash starts up, the shell enables each
-     option in the list before reading any startup files.  This variable
-     is readonly.
+     option in the list before reading any startup files.  If this
+     variable is exported, child shells will enable each option in the
+     list.  This variable is readonly.
 
 â€˜BASHPID’
      Expands to the process ID of the current Bash process.  This
@@ -11115,8 +11117,9 @@ expansion uses the entire event.  A â€˜:’ separates the event
 specification from the word designator.  It may be omitted if the word
 designator begins with a â€˜^’, â€˜$’, â€˜*’, â€˜-’, or â€˜%’.  Words are numbered
 from the beginning of the line, with the first word being denoted by 0
-(zero).  Words are inserted into the current line separated by single
-spaces.
+(zero).  That first word is usually the command word, and the arguments
+begin with the second word.  Words are inserted into the current line
+separated by single spaces.
 
    For example,
 
@@ -11125,7 +11128,7 @@ spaces.
      preceding command is repeated in toto.
 
 â€˜!!:$’
-     designates the last argument of the preceding command.  This may be
+     designates the last word of the preceding command.  This may be
      shortened to â€˜!$’.
 
 â€˜!fi:2’
@@ -12938,27 +12941,27 @@ D.3 Parameter and Variable Index
 * auto_resume:                           Job Control Variables.
                                                               (line   6)
 * BASH:                                  Bash Variables.      (line  24)
-* BASH_ALIASES:                          Bash Variables.      (line  43)
-* BASH_ARGC:                             Bash Variables.      (line  52)
-* BASH_ARGV:                             Bash Variables.      (line  66)
-* BASH_ARGV0:                            Bash Variables.      (line  79)
-* BASH_CMDS:                             Bash Variables.      (line  87)
-* BASH_COMMAND:                          Bash Variables.      (line  96)
-* BASH_COMPAT:                           Bash Variables.      (line 103)
-* BASH_ENV:                              Bash Variables.      (line 119)
-* BASH_EXECUTION_STRING:                 Bash Variables.      (line 125)
-* BASH_LINENO:                           Bash Variables.      (line 128)
-* BASH_LOADABLES_PATH:                   Bash Variables.      (line 138)
-* BASH_MONOSECONDS:                      Bash Variables.      (line 142)
-* BASH_REMATCH:                          Bash Variables.      (line 149)
-* BASH_SOURCE:                           Bash Variables.      (line 157)
-* BASH_SUBSHELL:                         Bash Variables.      (line 165)
-* BASH_TRAPSIG:                          Bash Variables.      (line 171)
-* BASH_VERSINFO:                         Bash Variables.      (line 177)
-* BASH_VERSION:                          Bash Variables.      (line 200)
-* BASH_XTRACEFD:                         Bash Variables.      (line 204)
+* BASH_ALIASES:                          Bash Variables.      (line  44)
+* BASH_ARGC:                             Bash Variables.      (line  53)
+* BASH_ARGV:                             Bash Variables.      (line  67)
+* BASH_ARGV0:                            Bash Variables.      (line  80)
+* BASH_CMDS:                             Bash Variables.      (line  88)
+* BASH_COMMAND:                          Bash Variables.      (line  97)
+* BASH_COMPAT:                           Bash Variables.      (line 104)
+* BASH_ENV:                              Bash Variables.      (line 120)
+* BASH_EXECUTION_STRING:                 Bash Variables.      (line 126)
+* BASH_LINENO:                           Bash Variables.      (line 129)
+* BASH_LOADABLES_PATH:                   Bash Variables.      (line 139)
+* BASH_MONOSECONDS:                      Bash Variables.      (line 143)
+* BASH_REMATCH:                          Bash Variables.      (line 150)
+* BASH_SOURCE:                           Bash Variables.      (line 158)
+* BASH_SUBSHELL:                         Bash Variables.      (line 166)
+* BASH_TRAPSIG:                          Bash Variables.      (line 172)
+* BASH_VERSINFO:                         Bash Variables.      (line 178)
+* BASH_VERSION:                          Bash Variables.      (line 201)
+* BASH_XTRACEFD:                         Bash Variables.      (line 205)
 * BASHOPTS:                              Bash Variables.      (line  27)
-* BASHPID:                               Bash Variables.      (line  36)
+* BASHPID:                               Bash Variables.      (line  37)
 * bell-style:                            Readline Init File Syntax.
                                                               (line  64)
 * bind-tty-special-chars:                Readline Init File Syntax.
@@ -12967,21 +12970,21 @@ D.3 Parameter and Variable Index
                                                               (line  79)
 * CDPATH:                                Bourne Shell Variables.
                                                               (line   9)
-* CHILD_MAX:                             Bash Variables.      (line 216)
+* CHILD_MAX:                             Bash Variables.      (line 217)
 * colored-completion-prefix:             Readline Init File Syntax.
                                                               (line  84)
 * colored-stats:                         Readline Init File Syntax.
                                                               (line  94)
-* COLUMNS:                               Bash Variables.      (line 223)
+* COLUMNS:                               Bash Variables.      (line 224)
 * comment-begin:                         Readline Init File Syntax.
                                                               (line 100)
-* COMP_CWORD:                            Bash Variables.      (line 229)
-* COMP_KEY:                              Bash Variables.      (line 235)
-* COMP_LINE:                             Bash Variables.      (line 241)
-* COMP_POINT:                            Bash Variables.      (line 246)
-* COMP_TYPE:                             Bash Variables.      (line 254)
-* COMP_WORDBREAKS:                       Bash Variables.      (line 264)
-* COMP_WORDS:                            Bash Variables.      (line 270)
+* COMP_CWORD:                            Bash Variables.      (line 230)
+* COMP_KEY:                              Bash Variables.      (line 236)
+* COMP_LINE:                             Bash Variables.      (line 242)
+* COMP_POINT:                            Bash Variables.      (line 247)
+* COMP_TYPE:                             Bash Variables.      (line 255)
+* COMP_WORDBREAKS:                       Bash Variables.      (line 265)
+* COMP_WORDS:                            Bash Variables.      (line 271)
 * completion-display-width:              Readline Init File Syntax.
                                                               (line 104)
 * completion-ignore-case:                Readline Init File Syntax.
@@ -12992,18 +12995,18 @@ D.3 Parameter and Variable Index
                                                               (line 122)
 * completion-query-items:                Readline Init File Syntax.
                                                               (line 131)
-* COMPREPLY:                             Bash Variables.      (line 277)
+* COMPREPLY:                             Bash Variables.      (line 278)
 * convert-meta:                          Readline Init File Syntax.
                                                               (line 142)
-* COPROC:                                Bash Variables.      (line 283)
-* DIRSTACK:                              Bash Variables.      (line 287)
+* COPROC:                                Bash Variables.      (line 284)
+* DIRSTACK:                              Bash Variables.      (line 288)
 * disable-completion:                    Readline Init File Syntax.
                                                               (line 154)
 * echo-control-characters:               Readline Init File Syntax.
                                                               (line 159)
 * editing-mode:                          Readline Init File Syntax.
                                                               (line 164)
-* EMACS:                                 Bash Variables.      (line 297)
+* EMACS:                                 Bash Variables.      (line 298)
 * emacs-mode-string:                     Readline Init File Syntax.
                                                               (line 170)
 * enable-active-region The:              Readline Init File Syntax.
@@ -13014,72 +13017,72 @@ D.3 Parameter and Variable Index
                                                               (line 202)
 * enable-meta-key:                       Readline Init File Syntax.
                                                               (line 207)
-* ENV:                                   Bash Variables.      (line 302)
-* EPOCHREALTIME:                         Bash Variables.      (line 307)
-* EPOCHSECONDS:                          Bash Variables.      (line 315)
-* EUID:                                  Bash Variables.      (line 322)
-* EXECIGNORE:                            Bash Variables.      (line 326)
+* ENV:                                   Bash Variables.      (line 303)
+* EPOCHREALTIME:                         Bash Variables.      (line 308)
+* EPOCHSECONDS:                          Bash Variables.      (line 316)
+* EUID:                                  Bash Variables.      (line 323)
+* EXECIGNORE:                            Bash Variables.      (line 327)
 * expand-tilde:                          Readline Init File Syntax.
                                                               (line 217)
-* FCEDIT:                                Bash Variables.      (line 338)
-* FIGNORE:                               Bash Variables.      (line 341)
+* FCEDIT:                                Bash Variables.      (line 339)
+* FIGNORE:                               Bash Variables.      (line 342)
 * force-meta-prefix:                     Readline Init File Syntax.
                                                               (line 221)
-* FUNCNAME:                              Bash Variables.      (line 347)
-* FUNCNEST:                              Bash Variables.      (line 364)
-* GLOBIGNORE:                            Bash Variables.      (line 369)
-* GLOBSORT:                              Bash Variables.      (line 376)
-* GROUPS:                                Bash Variables.      (line 414)
-* histchars:                             Bash Variables.      (line 420)
-* HISTCMD:                               Bash Variables.      (line 436)
-* HISTCONTROL:                           Bash Variables.      (line 442)
-* HISTFILE:                              Bash Variables.      (line 460)
-* HISTFILESIZE:                          Bash Variables.      (line 466)
-* HISTIGNORE:                            Bash Variables.      (line 477)
+* FUNCNAME:                              Bash Variables.      (line 348)
+* FUNCNEST:                              Bash Variables.      (line 365)
+* GLOBIGNORE:                            Bash Variables.      (line 370)
+* GLOBSORT:                              Bash Variables.      (line 377)
+* GROUPS:                                Bash Variables.      (line 415)
+* histchars:                             Bash Variables.      (line 421)
+* HISTCMD:                               Bash Variables.      (line 437)
+* HISTCONTROL:                           Bash Variables.      (line 443)
+* HISTFILE:                              Bash Variables.      (line 461)
+* HISTFILESIZE:                          Bash Variables.      (line 467)
+* HISTIGNORE:                            Bash Variables.      (line 478)
 * history-preserve-point:                Readline Init File Syntax.
                                                               (line 234)
 * history-size:                          Readline Init File Syntax.
                                                               (line 240)
-* HISTSIZE:                              Bash Variables.      (line 501)
-* HISTTIMEFORMAT:                        Bash Variables.      (line 508)
+* HISTSIZE:                              Bash Variables.      (line 502)
+* HISTTIMEFORMAT:                        Bash Variables.      (line 509)
 * HOME:                                  Bourne Shell Variables.
                                                               (line  13)
 * horizontal-scroll-mode:                Readline Init File Syntax.
                                                               (line 250)
-* HOSTFILE:                              Bash Variables.      (line 517)
-* HOSTNAME:                              Bash Variables.      (line 528)
-* HOSTTYPE:                              Bash Variables.      (line 531)
+* HOSTFILE:                              Bash Variables.      (line 518)
+* HOSTNAME:                              Bash Variables.      (line 529)
+* HOSTTYPE:                              Bash Variables.      (line 532)
 * IFS:                                   Bourne Shell Variables.
                                                               (line  18)
-* IGNOREEOF:                             Bash Variables.      (line 534)
+* IGNOREEOF:                             Bash Variables.      (line 535)
 * input-meta:                            Readline Init File Syntax.
                                                               (line 258)
-* INPUTRC:                               Bash Variables.      (line 543)
-* INSIDE_EMACS:                          Bash Variables.      (line 547)
+* INPUTRC:                               Bash Variables.      (line 544)
+* INSIDE_EMACS:                          Bash Variables.      (line 548)
 * isearch-terminators:                   Readline Init File Syntax.
                                                               (line 269)
 * keymap:                                Readline Init File Syntax.
                                                               (line 276)
 * LANG:                                  Creating Internationalized Scripts.
                                                               (line  51)
-* LANG <1>:                              Bash Variables.      (line 553)
-* LC_ALL:                                Bash Variables.      (line 557)
-* LC_COLLATE:                            Bash Variables.      (line 561)
-* LC_CTYPE:                              Bash Variables.      (line 568)
+* LANG <1>:                              Bash Variables.      (line 554)
+* LC_ALL:                                Bash Variables.      (line 558)
+* LC_COLLATE:                            Bash Variables.      (line 562)
+* LC_CTYPE:                              Bash Variables.      (line 569)
 * LC_MESSAGES:                           Creating Internationalized Scripts.
                                                               (line  51)
-* LC_MESSAGES <1>:                       Bash Variables.      (line 573)
-* LC_NUMERIC:                            Bash Variables.      (line 577)
-* LC_TIME:                               Bash Variables.      (line 581)
-* LINENO:                                Bash Variables.      (line 585)
-* LINES:                                 Bash Variables.      (line 592)
-* MACHTYPE:                              Bash Variables.      (line 598)
+* LC_MESSAGES <1>:                       Bash Variables.      (line 574)
+* LC_NUMERIC:                            Bash Variables.      (line 578)
+* LC_TIME:                               Bash Variables.      (line 582)
+* LINENO:                                Bash Variables.      (line 586)
+* LINES:                                 Bash Variables.      (line 593)
+* MACHTYPE:                              Bash Variables.      (line 599)
 * MAIL:                                  Bourne Shell Variables.
                                                               (line  24)
-* MAILCHECK:                             Bash Variables.      (line 602)
+* MAILCHECK:                             Bash Variables.      (line 603)
 * MAILPATH:                              Bourne Shell Variables.
                                                               (line  29)
-* MAPFILE:                               Bash Variables.      (line 610)
+* MAPFILE:                               Bash Variables.      (line 611)
 * mark-modified-lines:                   Readline Init File Syntax.
                                                               (line 306)
 * mark-symlinked-directories:            Readline Init File Syntax.
@@ -13090,46 +13093,46 @@ D.3 Parameter and Variable Index
                                                               (line 323)
 * meta-flag:                             Readline Init File Syntax.
                                                               (line 258)
-* OLDPWD:                                Bash Variables.      (line 614)
+* OLDPWD:                                Bash Variables.      (line 615)
 * OPTARG:                                Bourne Shell Variables.
                                                               (line  36)
-* OPTERR:                                Bash Variables.      (line 617)
+* OPTERR:                                Bash Variables.      (line 618)
 * OPTIND:                                Bourne Shell Variables.
                                                               (line  40)
-* OSTYPE:                                Bash Variables.      (line 622)
+* OSTYPE:                                Bash Variables.      (line 623)
 * output-meta:                           Readline Init File Syntax.
                                                               (line 328)
 * page-completions:                      Readline Init File Syntax.
                                                               (line 337)
 * PATH:                                  Bourne Shell Variables.
                                                               (line  44)
-* PIPESTATUS:                            Bash Variables.      (line 625)
-* POSIXLY_CORRECT:                       Bash Variables.      (line 635)
-* PPID:                                  Bash Variables.      (line 645)
-* PROMPT_COMMAND:                        Bash Variables.      (line 649)
-* PROMPT_DIRTRIM:                        Bash Variables.      (line 655)
-* PS0:                                   Bash Variables.      (line 661)
+* PIPESTATUS:                            Bash Variables.      (line 626)
+* POSIXLY_CORRECT:                       Bash Variables.      (line 636)
+* PPID:                                  Bash Variables.      (line 646)
+* PROMPT_COMMAND:                        Bash Variables.      (line 650)
+* PROMPT_DIRTRIM:                        Bash Variables.      (line 656)
+* PS0:                                   Bash Variables.      (line 662)
 * PS1:                                   Bourne Shell Variables.
                                                               (line  53)
 * PS2:                                   Bourne Shell Variables.
                                                               (line  58)
-* PS3:                                   Bash Variables.      (line 666)
-* PS4:                                   Bash Variables.      (line 671)
-* PWD:                                   Bash Variables.      (line 679)
-* RANDOM:                                Bash Variables.      (line 682)
-* READLINE_ARGUMENT:                     Bash Variables.      (line 690)
-* READLINE_LINE:                         Bash Variables.      (line 694)
-* READLINE_MARK:                         Bash Variables.      (line 698)
-* READLINE_POINT:                        Bash Variables.      (line 704)
-* REPLY:                                 Bash Variables.      (line 708)
+* PS3:                                   Bash Variables.      (line 667)
+* PS4:                                   Bash Variables.      (line 672)
+* PWD:                                   Bash Variables.      (line 680)
+* RANDOM:                                Bash Variables.      (line 683)
+* READLINE_ARGUMENT:                     Bash Variables.      (line 691)
+* READLINE_LINE:                         Bash Variables.      (line 695)
+* READLINE_MARK:                         Bash Variables.      (line 699)
+* READLINE_POINT:                        Bash Variables.      (line 705)
+* REPLY:                                 Bash Variables.      (line 709)
 * revert-all-at-newline:                 Readline Init File Syntax.
                                                               (line 350)
 * search-ignore-case:                    Readline Init File Syntax.
                                                               (line 357)
-* SECONDS:                               Bash Variables.      (line 712)
-* SHELL:                                 Bash Variables.      (line 722)
-* SHELLOPTS:                             Bash Variables.      (line 727)
-* SHLVL:                                 Bash Variables.      (line 737)
+* SECONDS:                               Bash Variables.      (line 713)
+* SHELL:                                 Bash Variables.      (line 723)
+* SHELLOPTS:                             Bash Variables.      (line 728)
+* SHLVL:                                 Bash Variables.      (line 738)
 * show-all-if-ambiguous:                 Readline Init File Syntax.
                                                               (line 362)
 * show-all-if-unmodified:                Readline Init File Syntax.
@@ -13138,15 +13141,15 @@ D.3 Parameter and Variable Index
                                                               (line 377)
 * skip-completed-text:                   Readline Init File Syntax.
                                                               (line 383)
-* SRANDOM:                               Bash Variables.      (line 742)
+* SRANDOM:                               Bash Variables.      (line 743)
 * TEXTDOMAIN:                            Creating Internationalized Scripts.
                                                               (line  51)
 * TEXTDOMAINDIR:                         Creating Internationalized Scripts.
                                                               (line  51)
-* TIMEFORMAT:                            Bash Variables.      (line 751)
-* TMOUT:                                 Bash Variables.      (line 790)
-* TMPDIR:                                Bash Variables.      (line 802)
-* UID:                                   Bash Variables.      (line 806)
+* TIMEFORMAT:                            Bash Variables.      (line 752)
+* TMOUT:                                 Bash Variables.      (line 791)
+* TMPDIR:                                Bash Variables.      (line 803)
+* UID:                                   Bash Variables.      (line 807)
 * vi-cmd-mode-string:                    Readline Init File Syntax.
                                                               (line 396)
 * vi-ins-mode-string:                    Readline Init File Syntax.
@@ -13576,103 +13579,103 @@ Node: Shell Expansions\7f74043
 Node: Brace Expansion\7f76232
 Node: Tilde Expansion\7f79578
 Node: Shell Parameter Expansion\7f82533
-Node: Command Substitution\7f102293
-Node: Arithmetic Expansion\7f105822
-Node: Process Substitution\7f106836
-Node: Word Splitting\7f107944
-Node: Filename Expansion\7f110388
-Node: Pattern Matching\7f113612
-Node: Quote Removal\7f119335
-Node: Redirections\7f119639
-Node: Executing Commands\7f129902
-Node: Simple Command Expansion\7f130569
-Node: Command Search and Execution\7f132677
-Node: Command Execution Environment\7f135121
-Node: Environment\7f138569
-Node: Exit Status\7f140472
-Node: Signals\7f142530
-Node: Shell Scripts\7f147459
-Node: Shell Builtin Commands\7f150757
-Node: Bourne Shell Builtins\7f152868
-Node: Bash Builtins\7f179432
-Node: Modifying Shell Behavior\7f216356
-Node: The Set Builtin\7f216698
-Node: The Shopt Builtin\7f228686
-Node: Special Builtins\7f245738
-Node: Shell Variables\7f246727
-Node: Bourne Shell Variables\7f247161
-Node: Bash Variables\7f249669
-Node: Bash Features\7f288488
-Node: Invoking Bash\7f289502
-Node: Bash Startup Files\7f296086
-Node: Interactive Shells\7f301328
-Node: What is an Interactive Shell?\7f301736
-Node: Is this Shell Interactive?\7f302398
-Node: Interactive Shell Behavior\7f303222
-Node: Bash Conditional Expressions\7f306983
-Node: Shell Arithmetic\7f312194
-Node: Aliases\7f315523
-Node: Arrays\7f318657
-Node: The Directory Stack\7f325749
-Node: Directory Stack Builtins\7f326546
-Node: Controlling the Prompt\7f330991
-Node: The Restricted Shell\7f333876
-Node: Bash POSIX Mode\7f336758
-Node: Shell Compatibility Mode\7f354819
-Node: Job Control\7f363826
-Node: Job Control Basics\7f364283
-Node: Job Control Builtins\7f370561
-Node: Job Control Variables\7f377243
-Node: Command Line Editing\7f378474
-Node: Introduction and Notation\7f380177
-Node: Readline Interaction\7f382529
-Node: Readline Bare Essentials\7f383717
-Node: Readline Movement Commands\7f385525
-Node: Readline Killing Commands\7f386521
-Node: Readline Arguments\7f388544
-Node: Searching\7f389601
-Node: Readline Init File\7f391844
-Node: Readline Init File Syntax\7f393147
-Node: Conditional Init Constructs\7f419972
-Node: Sample Init File\7f424357
-Node: Bindable Readline Commands\7f427477
-Node: Commands For Moving\7f429015
-Node: Commands For History\7f431383
-Node: Commands For Text\7f436773
-Node: Commands For Killing\7f440898
-Node: Numeric Arguments\7f443686
-Node: Commands For Completion\7f444838
-Node: Keyboard Macros\7f450534
-Node: Miscellaneous Commands\7f451235
-Node: Readline vi Mode\7f457802
-Node: Programmable Completion\7f458779
-Node: Programmable Completion Builtins\7f467516
-Node: A Programmable Completion Example\7f479253
-Node: Using History Interactively\7f484598
-Node: Bash History Facilities\7f485279
-Node: Bash History Builtins\7f489014
-Node: History Interaction\7f495485
-Node: Event Designators\7f500435
-Node: Word Designators\7f502013
-Node: Modifiers\7f504317
-Node: Installing Bash\7f506254
-Node: Basic Installation\7f507370
-Node: Compilers and Options\7f511246
-Node: Compiling For Multiple Architectures\7f511996
-Node: Installation Names\7f513749
-Node: Specifying the System Type\7f515983
-Node: Sharing Defaults\7f516729
-Node: Operation Controls\7f517443
-Node: Optional Features\7f518462
-Node: Reporting Bugs\7f530842
-Node: Major Differences From The Bourne Shell\7f532199
-Node: GNU Free Documentation License\7f553619
-Node: Indexes\7f578796
-Node: Builtin Index\7f579247
-Node: Reserved Word Index\7f586345
-Node: Variable Index\7f588790
-Node: Function Index\7f606203
-Node: Concept Index\7f620198
+Node: Command Substitution\7f102341
+Node: Arithmetic Expansion\7f105870
+Node: Process Substitution\7f106884
+Node: Word Splitting\7f107992
+Node: Filename Expansion\7f110436
+Node: Pattern Matching\7f113660
+Node: Quote Removal\7f119383
+Node: Redirections\7f119687
+Node: Executing Commands\7f129950
+Node: Simple Command Expansion\7f130617
+Node: Command Search and Execution\7f132725
+Node: Command Execution Environment\7f135169
+Node: Environment\7f138617
+Node: Exit Status\7f140520
+Node: Signals\7f142578
+Node: Shell Scripts\7f147507
+Node: Shell Builtin Commands\7f150805
+Node: Bourne Shell Builtins\7f152916
+Node: Bash Builtins\7f179480
+Node: Modifying Shell Behavior\7f216404
+Node: The Set Builtin\7f216746
+Node: The Shopt Builtin\7f228734
+Node: Special Builtins\7f245786
+Node: Shell Variables\7f246775
+Node: Bourne Shell Variables\7f247209
+Node: Bash Variables\7f249717
+Node: Bash Features\7f288622
+Node: Invoking Bash\7f289636
+Node: Bash Startup Files\7f296220
+Node: Interactive Shells\7f301462
+Node: What is an Interactive Shell?\7f301870
+Node: Is this Shell Interactive?\7f302532
+Node: Interactive Shell Behavior\7f303356
+Node: Bash Conditional Expressions\7f307117
+Node: Shell Arithmetic\7f312328
+Node: Aliases\7f315657
+Node: Arrays\7f318791
+Node: The Directory Stack\7f325883
+Node: Directory Stack Builtins\7f326680
+Node: Controlling the Prompt\7f331125
+Node: The Restricted Shell\7f334010
+Node: Bash POSIX Mode\7f336892
+Node: Shell Compatibility Mode\7f354953
+Node: Job Control\7f363960
+Node: Job Control Basics\7f364417
+Node: Job Control Builtins\7f370695
+Node: Job Control Variables\7f377377
+Node: Command Line Editing\7f378608
+Node: Introduction and Notation\7f380311
+Node: Readline Interaction\7f382663
+Node: Readline Bare Essentials\7f383851
+Node: Readline Movement Commands\7f385659
+Node: Readline Killing Commands\7f386655
+Node: Readline Arguments\7f388678
+Node: Searching\7f389735
+Node: Readline Init File\7f391978
+Node: Readline Init File Syntax\7f393281
+Node: Conditional Init Constructs\7f420106
+Node: Sample Init File\7f424491
+Node: Bindable Readline Commands\7f427611
+Node: Commands For Moving\7f429149
+Node: Commands For History\7f431517
+Node: Commands For Text\7f436907
+Node: Commands For Killing\7f441032
+Node: Numeric Arguments\7f443820
+Node: Commands For Completion\7f444972
+Node: Keyboard Macros\7f450668
+Node: Miscellaneous Commands\7f451369
+Node: Readline vi Mode\7f457936
+Node: Programmable Completion\7f458913
+Node: Programmable Completion Builtins\7f467650
+Node: A Programmable Completion Example\7f479387
+Node: Using History Interactively\7f484732
+Node: Bash History Facilities\7f485413
+Node: Bash History Builtins\7f489148
+Node: History Interaction\7f495619
+Node: Event Designators\7f500569
+Node: Word Designators\7f502147
+Node: Modifiers\7f504539
+Node: Installing Bash\7f506476
+Node: Basic Installation\7f507592
+Node: Compilers and Options\7f511468
+Node: Compiling For Multiple Architectures\7f512218
+Node: Installation Names\7f513971
+Node: Specifying the System Type\7f516205
+Node: Sharing Defaults\7f516951
+Node: Operation Controls\7f517665
+Node: Optional Features\7f518684
+Node: Reporting Bugs\7f531064
+Node: Major Differences From The Bourne Shell\7f532421
+Node: GNU Free Documentation License\7f553841
+Node: Indexes\7f579018
+Node: Builtin Index\7f579469
+Node: Reserved Word Index\7f586567
+Node: Variable Index\7f589012
+Node: Function Index\7f606425
+Node: Concept Index\7f620420
 \1f
 End Tag Table
 
index b4c23235843712a520446fa5511d0c06206ea040..a1565dd79d7a1d56948c8dab065db456d886d9c7 100644 (file)
@@ -2143,13 +2143,12 @@ omitted, the operator tests only for existence.
 â€˜${PARAMETER//PATTERN/STRING}’
 â€˜${PARAMETER/#PATTERN/STRING}’
 â€˜${PARAMETER/%PATTERN/STRING}’
-     The PATTERN is expanded to produce a pattern just as in filename
-     expansion and matched against the expanded value of PARAMETER
-     according to the rules described below (*note Pattern Matching::).
-     The longest match of PATTERN in the expanded value is replaced with
-     STRING.  STRING undergoes tilde expansion, parameter and variable
-     expansion, arithmetic expansion, command and process substitution,
-     and quote removal.
+     The PATTERN is expanded to produce a pattern and matched against
+     the expanded value of PARAMETER as described below (*note Pattern
+     Matching::).  The longest match of PATTERN in the expanded value is
+     replaced with STRING.  STRING undergoes tilde expansion, parameter
+     and variable expansion, arithmetic expansion, command and process
+     substitution, and quote removal.
 
      In the first form above, only the first match is replaced.  If
      there are two slashes separating PARAMETER and PATTERN (the second
@@ -2233,19 +2232,21 @@ omitted, the operator tests only for existence.
 â€˜${PARAMETER,PATTERN}’
 â€˜${PARAMETER,,PATTERN}’
      This expansion modifies the case of alphabetic characters in
-     PARAMETER.  The PATTERN is expanded to produce a pattern just as in
-     filename expansion.  Each character in the expanded value of
-     PARAMETER is tested against PATTERN, and, if it matches the
+     PARAMETER.  First, the PATTERN is expanded to produce a pattern as
+     described below in *note Pattern Matching::.
+
+     â€˜Bash’ then examines characters in the expanded value of PARAMETER
+     against PATTERN as described below.  If a character matches the
      pattern, its case is converted.  The pattern should not attempt to
      match more than one character.
 
-     The â€˜^’ operator converts lowercase letters matching PATTERN to
-     uppercase; the â€˜,’ operator converts matching uppercase letters to
-     lowercase.  The â€˜^^’ and â€˜,,’ expansions convert each matched
-     character in the expanded value; the â€˜^’ and â€˜,’ expansions match
-     and convert only the first character in the expanded value.  If
-     PATTERN is omitted, it is treated like a â€˜?’, which matches every
-     character.
+     Using â€˜^’ converts lowercase letters matching PATTERN to uppercase;
+     â€˜,’ converts matching uppercase letters to lowercase.  The â€˜^’ and
+     â€˜,’ variants examine the first character in the expanded value and
+     convert its case if it matches PATTERN; the â€˜^^’ and â€˜,,’ variants
+     examine all characters in the expanded value and convert each one
+     that matches PATTERN.  If PATTERN is omitted, it is treated like a
+     â€˜?’, which matches every character.
 
      If PARAMETER is â€˜@’ or â€˜*’, the case modification operation is
      applied to each positional parameter in turn, and the expansion is
@@ -5634,8 +5635,9 @@ Variables::).
      command (*note The Shopt Builtin::).  The options appearing in
      â€˜BASHOPTS’ are those reported as â€˜on’ by â€˜shopt’.  If this variable
      is in the environment when Bash starts up, the shell enables each
-     option in the list before reading any startup files.  This variable
-     is readonly.
+     option in the list before reading any startup files.  If this
+     variable is exported, child shells will enable each option in the
+     list.  This variable is readonly.
 
 â€˜BASHPID’
      Expands to the process ID of the current Bash process.  This
@@ -11116,8 +11118,9 @@ expansion uses the entire event.  A â€˜:’ separates the event
 specification from the word designator.  It may be omitted if the word
 designator begins with a â€˜^’, â€˜$’, â€˜*’, â€˜-’, or â€˜%’.  Words are numbered
 from the beginning of the line, with the first word being denoted by 0
-(zero).  Words are inserted into the current line separated by single
-spaces.
+(zero).  That first word is usually the command word, and the arguments
+begin with the second word.  Words are inserted into the current line
+separated by single spaces.
 
    For example,
 
@@ -11126,7 +11129,7 @@ spaces.
      preceding command is repeated in toto.
 
 â€˜!!:$’
-     designates the last argument of the preceding command.  This may be
+     designates the last word of the preceding command.  This may be
      shortened to â€˜!$’.
 
 â€˜!fi:2’
@@ -12939,27 +12942,27 @@ D.3 Parameter and Variable Index
 * auto_resume:                           Job Control Variables.
                                                               (line   6)
 * BASH:                                  Bash Variables.      (line  24)
-* BASH_ALIASES:                          Bash Variables.      (line  43)
-* BASH_ARGC:                             Bash Variables.      (line  52)
-* BASH_ARGV:                             Bash Variables.      (line  66)
-* BASH_ARGV0:                            Bash Variables.      (line  79)
-* BASH_CMDS:                             Bash Variables.      (line  87)
-* BASH_COMMAND:                          Bash Variables.      (line  96)
-* BASH_COMPAT:                           Bash Variables.      (line 103)
-* BASH_ENV:                              Bash Variables.      (line 119)
-* BASH_EXECUTION_STRING:                 Bash Variables.      (line 125)
-* BASH_LINENO:                           Bash Variables.      (line 128)
-* BASH_LOADABLES_PATH:                   Bash Variables.      (line 138)
-* BASH_MONOSECONDS:                      Bash Variables.      (line 142)
-* BASH_REMATCH:                          Bash Variables.      (line 149)
-* BASH_SOURCE:                           Bash Variables.      (line 157)
-* BASH_SUBSHELL:                         Bash Variables.      (line 165)
-* BASH_TRAPSIG:                          Bash Variables.      (line 171)
-* BASH_VERSINFO:                         Bash Variables.      (line 177)
-* BASH_VERSION:                          Bash Variables.      (line 200)
-* BASH_XTRACEFD:                         Bash Variables.      (line 204)
+* BASH_ALIASES:                          Bash Variables.      (line  44)
+* BASH_ARGC:                             Bash Variables.      (line  53)
+* BASH_ARGV:                             Bash Variables.      (line  67)
+* BASH_ARGV0:                            Bash Variables.      (line  80)
+* BASH_CMDS:                             Bash Variables.      (line  88)
+* BASH_COMMAND:                          Bash Variables.      (line  97)
+* BASH_COMPAT:                           Bash Variables.      (line 104)
+* BASH_ENV:                              Bash Variables.      (line 120)
+* BASH_EXECUTION_STRING:                 Bash Variables.      (line 126)
+* BASH_LINENO:                           Bash Variables.      (line 129)
+* BASH_LOADABLES_PATH:                   Bash Variables.      (line 139)
+* BASH_MONOSECONDS:                      Bash Variables.      (line 143)
+* BASH_REMATCH:                          Bash Variables.      (line 150)
+* BASH_SOURCE:                           Bash Variables.      (line 158)
+* BASH_SUBSHELL:                         Bash Variables.      (line 166)
+* BASH_TRAPSIG:                          Bash Variables.      (line 172)
+* BASH_VERSINFO:                         Bash Variables.      (line 178)
+* BASH_VERSION:                          Bash Variables.      (line 201)
+* BASH_XTRACEFD:                         Bash Variables.      (line 205)
 * BASHOPTS:                              Bash Variables.      (line  27)
-* BASHPID:                               Bash Variables.      (line  36)
+* BASHPID:                               Bash Variables.      (line  37)
 * bell-style:                            Readline Init File Syntax.
                                                               (line  64)
 * bind-tty-special-chars:                Readline Init File Syntax.
@@ -12968,21 +12971,21 @@ D.3 Parameter and Variable Index
                                                               (line  79)
 * CDPATH:                                Bourne Shell Variables.
                                                               (line   9)
-* CHILD_MAX:                             Bash Variables.      (line 216)
+* CHILD_MAX:                             Bash Variables.      (line 217)
 * colored-completion-prefix:             Readline Init File Syntax.
                                                               (line  84)
 * colored-stats:                         Readline Init File Syntax.
                                                               (line  94)
-* COLUMNS:                               Bash Variables.      (line 223)
+* COLUMNS:                               Bash Variables.      (line 224)
 * comment-begin:                         Readline Init File Syntax.
                                                               (line 100)
-* COMP_CWORD:                            Bash Variables.      (line 229)
-* COMP_KEY:                              Bash Variables.      (line 235)
-* COMP_LINE:                             Bash Variables.      (line 241)
-* COMP_POINT:                            Bash Variables.      (line 246)
-* COMP_TYPE:                             Bash Variables.      (line 254)
-* COMP_WORDBREAKS:                       Bash Variables.      (line 264)
-* COMP_WORDS:                            Bash Variables.      (line 270)
+* COMP_CWORD:                            Bash Variables.      (line 230)
+* COMP_KEY:                              Bash Variables.      (line 236)
+* COMP_LINE:                             Bash Variables.      (line 242)
+* COMP_POINT:                            Bash Variables.      (line 247)
+* COMP_TYPE:                             Bash Variables.      (line 255)
+* COMP_WORDBREAKS:                       Bash Variables.      (line 265)
+* COMP_WORDS:                            Bash Variables.      (line 271)
 * completion-display-width:              Readline Init File Syntax.
                                                               (line 104)
 * completion-ignore-case:                Readline Init File Syntax.
@@ -12993,18 +12996,18 @@ D.3 Parameter and Variable Index
                                                               (line 122)
 * completion-query-items:                Readline Init File Syntax.
                                                               (line 131)
-* COMPREPLY:                             Bash Variables.      (line 277)
+* COMPREPLY:                             Bash Variables.      (line 278)
 * convert-meta:                          Readline Init File Syntax.
                                                               (line 142)
-* COPROC:                                Bash Variables.      (line 283)
-* DIRSTACK:                              Bash Variables.      (line 287)
+* COPROC:                                Bash Variables.      (line 284)
+* DIRSTACK:                              Bash Variables.      (line 288)
 * disable-completion:                    Readline Init File Syntax.
                                                               (line 154)
 * echo-control-characters:               Readline Init File Syntax.
                                                               (line 159)
 * editing-mode:                          Readline Init File Syntax.
                                                               (line 164)
-* EMACS:                                 Bash Variables.      (line 297)
+* EMACS:                                 Bash Variables.      (line 298)
 * emacs-mode-string:                     Readline Init File Syntax.
                                                               (line 170)
 * enable-active-region The:              Readline Init File Syntax.
@@ -13015,72 +13018,72 @@ D.3 Parameter and Variable Index
                                                               (line 202)
 * enable-meta-key:                       Readline Init File Syntax.
                                                               (line 207)
-* ENV:                                   Bash Variables.      (line 302)
-* EPOCHREALTIME:                         Bash Variables.      (line 307)
-* EPOCHSECONDS:                          Bash Variables.      (line 315)
-* EUID:                                  Bash Variables.      (line 322)
-* EXECIGNORE:                            Bash Variables.      (line 326)
+* ENV:                                   Bash Variables.      (line 303)
+* EPOCHREALTIME:                         Bash Variables.      (line 308)
+* EPOCHSECONDS:                          Bash Variables.      (line 316)
+* EUID:                                  Bash Variables.      (line 323)
+* EXECIGNORE:                            Bash Variables.      (line 327)
 * expand-tilde:                          Readline Init File Syntax.
                                                               (line 217)
-* FCEDIT:                                Bash Variables.      (line 338)
-* FIGNORE:                               Bash Variables.      (line 341)
+* FCEDIT:                                Bash Variables.      (line 339)
+* FIGNORE:                               Bash Variables.      (line 342)
 * force-meta-prefix:                     Readline Init File Syntax.
                                                               (line 221)
-* FUNCNAME:                              Bash Variables.      (line 347)
-* FUNCNEST:                              Bash Variables.      (line 364)
-* GLOBIGNORE:                            Bash Variables.      (line 369)
-* GLOBSORT:                              Bash Variables.      (line 376)
-* GROUPS:                                Bash Variables.      (line 414)
-* histchars:                             Bash Variables.      (line 420)
-* HISTCMD:                               Bash Variables.      (line 436)
-* HISTCONTROL:                           Bash Variables.      (line 442)
-* HISTFILE:                              Bash Variables.      (line 460)
-* HISTFILESIZE:                          Bash Variables.      (line 466)
-* HISTIGNORE:                            Bash Variables.      (line 477)
+* FUNCNAME:                              Bash Variables.      (line 348)
+* FUNCNEST:                              Bash Variables.      (line 365)
+* GLOBIGNORE:                            Bash Variables.      (line 370)
+* GLOBSORT:                              Bash Variables.      (line 377)
+* GROUPS:                                Bash Variables.      (line 415)
+* histchars:                             Bash Variables.      (line 421)
+* HISTCMD:                               Bash Variables.      (line 437)
+* HISTCONTROL:                           Bash Variables.      (line 443)
+* HISTFILE:                              Bash Variables.      (line 461)
+* HISTFILESIZE:                          Bash Variables.      (line 467)
+* HISTIGNORE:                            Bash Variables.      (line 478)
 * history-preserve-point:                Readline Init File Syntax.
                                                               (line 234)
 * history-size:                          Readline Init File Syntax.
                                                               (line 240)
-* HISTSIZE:                              Bash Variables.      (line 501)
-* HISTTIMEFORMAT:                        Bash Variables.      (line 508)
+* HISTSIZE:                              Bash Variables.      (line 502)
+* HISTTIMEFORMAT:                        Bash Variables.      (line 509)
 * HOME:                                  Bourne Shell Variables.
                                                               (line  13)
 * horizontal-scroll-mode:                Readline Init File Syntax.
                                                               (line 250)
-* HOSTFILE:                              Bash Variables.      (line 517)
-* HOSTNAME:                              Bash Variables.      (line 528)
-* HOSTTYPE:                              Bash Variables.      (line 531)
+* HOSTFILE:                              Bash Variables.      (line 518)
+* HOSTNAME:                              Bash Variables.      (line 529)
+* HOSTTYPE:                              Bash Variables.      (line 532)
 * IFS:                                   Bourne Shell Variables.
                                                               (line  18)
-* IGNOREEOF:                             Bash Variables.      (line 534)
+* IGNOREEOF:                             Bash Variables.      (line 535)
 * input-meta:                            Readline Init File Syntax.
                                                               (line 258)
-* INPUTRC:                               Bash Variables.      (line 543)
-* INSIDE_EMACS:                          Bash Variables.      (line 547)
+* INPUTRC:                               Bash Variables.      (line 544)
+* INSIDE_EMACS:                          Bash Variables.      (line 548)
 * isearch-terminators:                   Readline Init File Syntax.
                                                               (line 269)
 * keymap:                                Readline Init File Syntax.
                                                               (line 276)
 * LANG:                                  Creating Internationalized Scripts.
                                                               (line  51)
-* LANG <1>:                              Bash Variables.      (line 553)
-* LC_ALL:                                Bash Variables.      (line 557)
-* LC_COLLATE:                            Bash Variables.      (line 561)
-* LC_CTYPE:                              Bash Variables.      (line 568)
+* LANG <1>:                              Bash Variables.      (line 554)
+* LC_ALL:                                Bash Variables.      (line 558)
+* LC_COLLATE:                            Bash Variables.      (line 562)
+* LC_CTYPE:                              Bash Variables.      (line 569)
 * LC_MESSAGES:                           Creating Internationalized Scripts.
                                                               (line  51)
-* LC_MESSAGES <1>:                       Bash Variables.      (line 573)
-* LC_NUMERIC:                            Bash Variables.      (line 577)
-* LC_TIME:                               Bash Variables.      (line 581)
-* LINENO:                                Bash Variables.      (line 585)
-* LINES:                                 Bash Variables.      (line 592)
-* MACHTYPE:                              Bash Variables.      (line 598)
+* LC_MESSAGES <1>:                       Bash Variables.      (line 574)
+* LC_NUMERIC:                            Bash Variables.      (line 578)
+* LC_TIME:                               Bash Variables.      (line 582)
+* LINENO:                                Bash Variables.      (line 586)
+* LINES:                                 Bash Variables.      (line 593)
+* MACHTYPE:                              Bash Variables.      (line 599)
 * MAIL:                                  Bourne Shell Variables.
                                                               (line  24)
-* MAILCHECK:                             Bash Variables.      (line 602)
+* MAILCHECK:                             Bash Variables.      (line 603)
 * MAILPATH:                              Bourne Shell Variables.
                                                               (line  29)
-* MAPFILE:                               Bash Variables.      (line 610)
+* MAPFILE:                               Bash Variables.      (line 611)
 * mark-modified-lines:                   Readline Init File Syntax.
                                                               (line 306)
 * mark-symlinked-directories:            Readline Init File Syntax.
@@ -13091,46 +13094,46 @@ D.3 Parameter and Variable Index
                                                               (line 323)
 * meta-flag:                             Readline Init File Syntax.
                                                               (line 258)
-* OLDPWD:                                Bash Variables.      (line 614)
+* OLDPWD:                                Bash Variables.      (line 615)
 * OPTARG:                                Bourne Shell Variables.
                                                               (line  36)
-* OPTERR:                                Bash Variables.      (line 617)
+* OPTERR:                                Bash Variables.      (line 618)
 * OPTIND:                                Bourne Shell Variables.
                                                               (line  40)
-* OSTYPE:                                Bash Variables.      (line 622)
+* OSTYPE:                                Bash Variables.      (line 623)
 * output-meta:                           Readline Init File Syntax.
                                                               (line 328)
 * page-completions:                      Readline Init File Syntax.
                                                               (line 337)
 * PATH:                                  Bourne Shell Variables.
                                                               (line  44)
-* PIPESTATUS:                            Bash Variables.      (line 625)
-* POSIXLY_CORRECT:                       Bash Variables.      (line 635)
-* PPID:                                  Bash Variables.      (line 645)
-* PROMPT_COMMAND:                        Bash Variables.      (line 649)
-* PROMPT_DIRTRIM:                        Bash Variables.      (line 655)
-* PS0:                                   Bash Variables.      (line 661)
+* PIPESTATUS:                            Bash Variables.      (line 626)
+* POSIXLY_CORRECT:                       Bash Variables.      (line 636)
+* PPID:                                  Bash Variables.      (line 646)
+* PROMPT_COMMAND:                        Bash Variables.      (line 650)
+* PROMPT_DIRTRIM:                        Bash Variables.      (line 656)
+* PS0:                                   Bash Variables.      (line 662)
 * PS1:                                   Bourne Shell Variables.
                                                               (line  53)
 * PS2:                                   Bourne Shell Variables.
                                                               (line  58)
-* PS3:                                   Bash Variables.      (line 666)
-* PS4:                                   Bash Variables.      (line 671)
-* PWD:                                   Bash Variables.      (line 679)
-* RANDOM:                                Bash Variables.      (line 682)
-* READLINE_ARGUMENT:                     Bash Variables.      (line 690)
-* READLINE_LINE:                         Bash Variables.      (line 694)
-* READLINE_MARK:                         Bash Variables.      (line 698)
-* READLINE_POINT:                        Bash Variables.      (line 704)
-* REPLY:                                 Bash Variables.      (line 708)
+* PS3:                                   Bash Variables.      (line 667)
+* PS4:                                   Bash Variables.      (line 672)
+* PWD:                                   Bash Variables.      (line 680)
+* RANDOM:                                Bash Variables.      (line 683)
+* READLINE_ARGUMENT:                     Bash Variables.      (line 691)
+* READLINE_LINE:                         Bash Variables.      (line 695)
+* READLINE_MARK:                         Bash Variables.      (line 699)
+* READLINE_POINT:                        Bash Variables.      (line 705)
+* REPLY:                                 Bash Variables.      (line 709)
 * revert-all-at-newline:                 Readline Init File Syntax.
                                                               (line 350)
 * search-ignore-case:                    Readline Init File Syntax.
                                                               (line 357)
-* SECONDS:                               Bash Variables.      (line 712)
-* SHELL:                                 Bash Variables.      (line 722)
-* SHELLOPTS:                             Bash Variables.      (line 727)
-* SHLVL:                                 Bash Variables.      (line 737)
+* SECONDS:                               Bash Variables.      (line 713)
+* SHELL:                                 Bash Variables.      (line 723)
+* SHELLOPTS:                             Bash Variables.      (line 728)
+* SHLVL:                                 Bash Variables.      (line 738)
 * show-all-if-ambiguous:                 Readline Init File Syntax.
                                                               (line 362)
 * show-all-if-unmodified:                Readline Init File Syntax.
@@ -13139,15 +13142,15 @@ D.3 Parameter and Variable Index
                                                               (line 377)
 * skip-completed-text:                   Readline Init File Syntax.
                                                               (line 383)
-* SRANDOM:                               Bash Variables.      (line 742)
+* SRANDOM:                               Bash Variables.      (line 743)
 * TEXTDOMAIN:                            Creating Internationalized Scripts.
                                                               (line  51)
 * TEXTDOMAINDIR:                         Creating Internationalized Scripts.
                                                               (line  51)
-* TIMEFORMAT:                            Bash Variables.      (line 751)
-* TMOUT:                                 Bash Variables.      (line 790)
-* TMPDIR:                                Bash Variables.      (line 802)
-* UID:                                   Bash Variables.      (line 806)
+* TIMEFORMAT:                            Bash Variables.      (line 752)
+* TMOUT:                                 Bash Variables.      (line 791)
+* TMPDIR:                                Bash Variables.      (line 803)
+* UID:                                   Bash Variables.      (line 807)
 * vi-cmd-mode-string:                    Readline Init File Syntax.
                                                               (line 396)
 * vi-ins-mode-string:                    Readline Init File Syntax.
@@ -13577,103 +13580,103 @@ Node: Shell Expansions\7f74139
 Node: Brace Expansion\7f76331
 Node: Tilde Expansion\7f79680
 Node: Shell Parameter Expansion\7f82638
-Node: Command Substitution\7f102401
-Node: Arithmetic Expansion\7f105933
-Node: Process Substitution\7f106950
-Node: Word Splitting\7f108061
-Node: Filename Expansion\7f110508
-Node: Pattern Matching\7f113735
-Node: Quote Removal\7f119461
-Node: Redirections\7f119768
-Node: Executing Commands\7f130034
-Node: Simple Command Expansion\7f130704
-Node: Command Search and Execution\7f132815
-Node: Command Execution Environment\7f135262
-Node: Environment\7f138713
-Node: Exit Status\7f140619
-Node: Signals\7f142680
-Node: Shell Scripts\7f147612
-Node: Shell Builtin Commands\7f150913
-Node: Bourne Shell Builtins\7f153027
-Node: Bash Builtins\7f179594
-Node: Modifying Shell Behavior\7f216521
-Node: The Set Builtin\7f216866
-Node: The Shopt Builtin\7f228857
-Node: Special Builtins\7f245912
-Node: Shell Variables\7f246904
-Node: Bourne Shell Variables\7f247341
-Node: Bash Variables\7f249852
-Node: Bash Features\7f288674
-Node: Invoking Bash\7f289691
-Node: Bash Startup Files\7f296278
-Node: Interactive Shells\7f301523
-Node: What is an Interactive Shell?\7f301934
-Node: Is this Shell Interactive?\7f302599
-Node: Interactive Shell Behavior\7f303426
-Node: Bash Conditional Expressions\7f307190
-Node: Shell Arithmetic\7f312404
-Node: Aliases\7f315736
-Node: Arrays\7f318873
-Node: The Directory Stack\7f325968
-Node: Directory Stack Builtins\7f326768
-Node: Controlling the Prompt\7f331216
-Node: The Restricted Shell\7f334104
-Node: Bash POSIX Mode\7f336989
-Node: Shell Compatibility Mode\7f355053
-Node: Job Control\7f364063
-Node: Job Control Basics\7f364523
-Node: Job Control Builtins\7f370804
-Node: Job Control Variables\7f377489
-Node: Command Line Editing\7f378723
-Node: Introduction and Notation\7f380429
-Node: Readline Interaction\7f382784
-Node: Readline Bare Essentials\7f383975
-Node: Readline Movement Commands\7f385786
-Node: Readline Killing Commands\7f386785
-Node: Readline Arguments\7f388811
-Node: Searching\7f389871
-Node: Readline Init File\7f392117
-Node: Readline Init File Syntax\7f393423
-Node: Conditional Init Constructs\7f420251
-Node: Sample Init File\7f424639
-Node: Bindable Readline Commands\7f427762
-Node: Commands For Moving\7f429303
-Node: Commands For History\7f431674
-Node: Commands For Text\7f437067
-Node: Commands For Killing\7f441195
-Node: Numeric Arguments\7f443986
-Node: Commands For Completion\7f445141
-Node: Keyboard Macros\7f450840
-Node: Miscellaneous Commands\7f451544
-Node: Readline vi Mode\7f458114
-Node: Programmable Completion\7f459094
-Node: Programmable Completion Builtins\7f467834
-Node: A Programmable Completion Example\7f479574
-Node: Using History Interactively\7f484922
-Node: Bash History Facilities\7f485606
-Node: Bash History Builtins\7f489344
-Node: History Interaction\7f495818
-Node: Event Designators\7f500771
-Node: Word Designators\7f502352
-Node: Modifiers\7f504659
-Node: Installing Bash\7f506599
-Node: Basic Installation\7f507718
-Node: Compilers and Options\7f511597
-Node: Compiling For Multiple Architectures\7f512350
-Node: Installation Names\7f514106
-Node: Specifying the System Type\7f516343
-Node: Sharing Defaults\7f517092
-Node: Operation Controls\7f517809
-Node: Optional Features\7f518831
-Node: Reporting Bugs\7f531214
-Node: Major Differences From The Bourne Shell\7f532574
-Node: GNU Free Documentation License\7f553997
-Node: Indexes\7f579177
-Node: Builtin Index\7f579631
-Node: Reserved Word Index\7f586732
-Node: Variable Index\7f589180
-Node: Function Index\7f606596
-Node: Concept Index\7f620594
+Node: Command Substitution\7f102449
+Node: Arithmetic Expansion\7f105981
+Node: Process Substitution\7f106998
+Node: Word Splitting\7f108109
+Node: Filename Expansion\7f110556
+Node: Pattern Matching\7f113783
+Node: Quote Removal\7f119509
+Node: Redirections\7f119816
+Node: Executing Commands\7f130082
+Node: Simple Command Expansion\7f130752
+Node: Command Search and Execution\7f132863
+Node: Command Execution Environment\7f135310
+Node: Environment\7f138761
+Node: Exit Status\7f140667
+Node: Signals\7f142728
+Node: Shell Scripts\7f147660
+Node: Shell Builtin Commands\7f150961
+Node: Bourne Shell Builtins\7f153075
+Node: Bash Builtins\7f179642
+Node: Modifying Shell Behavior\7f216569
+Node: The Set Builtin\7f216914
+Node: The Shopt Builtin\7f228905
+Node: Special Builtins\7f245960
+Node: Shell Variables\7f246952
+Node: Bourne Shell Variables\7f247389
+Node: Bash Variables\7f249900
+Node: Bash Features\7f288808
+Node: Invoking Bash\7f289825
+Node: Bash Startup Files\7f296412
+Node: Interactive Shells\7f301657
+Node: What is an Interactive Shell?\7f302068
+Node: Is this Shell Interactive?\7f302733
+Node: Interactive Shell Behavior\7f303560
+Node: Bash Conditional Expressions\7f307324
+Node: Shell Arithmetic\7f312538
+Node: Aliases\7f315870
+Node: Arrays\7f319007
+Node: The Directory Stack\7f326102
+Node: Directory Stack Builtins\7f326902
+Node: Controlling the Prompt\7f331350
+Node: The Restricted Shell\7f334238
+Node: Bash POSIX Mode\7f337123
+Node: Shell Compatibility Mode\7f355187
+Node: Job Control\7f364197
+Node: Job Control Basics\7f364657
+Node: Job Control Builtins\7f370938
+Node: Job Control Variables\7f377623
+Node: Command Line Editing\7f378857
+Node: Introduction and Notation\7f380563
+Node: Readline Interaction\7f382918
+Node: Readline Bare Essentials\7f384109
+Node: Readline Movement Commands\7f385920
+Node: Readline Killing Commands\7f386919
+Node: Readline Arguments\7f388945
+Node: Searching\7f390005
+Node: Readline Init File\7f392251
+Node: Readline Init File Syntax\7f393557
+Node: Conditional Init Constructs\7f420385
+Node: Sample Init File\7f424773
+Node: Bindable Readline Commands\7f427896
+Node: Commands For Moving\7f429437
+Node: Commands For History\7f431808
+Node: Commands For Text\7f437201
+Node: Commands For Killing\7f441329
+Node: Numeric Arguments\7f444120
+Node: Commands For Completion\7f445275
+Node: Keyboard Macros\7f450974
+Node: Miscellaneous Commands\7f451678
+Node: Readline vi Mode\7f458248
+Node: Programmable Completion\7f459228
+Node: Programmable Completion Builtins\7f467968
+Node: A Programmable Completion Example\7f479708
+Node: Using History Interactively\7f485056
+Node: Bash History Facilities\7f485740
+Node: Bash History Builtins\7f489478
+Node: History Interaction\7f495952
+Node: Event Designators\7f500905
+Node: Word Designators\7f502486
+Node: Modifiers\7f504881
+Node: Installing Bash\7f506821
+Node: Basic Installation\7f507940
+Node: Compilers and Options\7f511819
+Node: Compiling For Multiple Architectures\7f512572
+Node: Installation Names\7f514328
+Node: Specifying the System Type\7f516565
+Node: Sharing Defaults\7f517314
+Node: Operation Controls\7f518031
+Node: Optional Features\7f519053
+Node: Reporting Bugs\7f531436
+Node: Major Differences From The Bourne Shell\7f532796
+Node: GNU Free Documentation License\7f554219
+Node: Indexes\7f579399
+Node: Builtin Index\7f579853
+Node: Reserved Word Index\7f586954
+Node: Variable Index\7f589402
+Node: Function Index\7f606818
+Node: Concept Index\7f620816
 \1f
 End Tag Table
 
index fdb1047a68122e587a803a648278b8aae23c1e7f..55c4d3c4eb12c3696087f3b7d5f3501908c002fd 100644 (file)
@@ -2583,11 +2583,9 @@ array in turn, and the expansion is the resultant list.
 @itemx $@{@var{parameter}//@var{pattern}/@var{string}@} 
 @itemx $@{@var{parameter}/#@var{pattern}/@var{string}@} 
 @itemx $@{@var{parameter}/%@var{pattern}/@var{string}@} 
-The @var{pattern} is expanded to produce a pattern just as in
-filename expansion and matched
-against the expanded value of @var{parameter}
-according to the rules
-described below (@pxref{Pattern Matching}).
+The @var{pattern} is expanded to produce a pattern
+and matched against the expanded value of @var{parameter}
+as described below (@pxref{Pattern Matching}).
 The longest match of @var{pattern}
 in the expanded value is replaced with @var{string}.
 @var{string} undergoes tilde expansion, parameter and variable expansion,
@@ -2693,18 +2691,28 @@ array in turn, and the expansion is the resultant list.
 @itemx $@{@var{parameter},@var{pattern}@}
 @itemx $@{@var{parameter},,@var{pattern}@}
 This expansion modifies the case of alphabetic characters in @var{parameter}.
-The @var{pattern} is expanded to produce a pattern just as in
-filename expansion.
-Each character in the expanded value of @var{parameter} is tested against
-@var{pattern}, and, if it matches the pattern, its case is converted.
+First, the @var{pattern} is expanded to produce a pattern
+as described below in @ref{Pattern Matching}.
+
+@code{Bash}
+then examines characters in the expanded value of @var{parameter}
+against @var{pattern} as described below.
+If a character matches the pattern, its case is converted.
 The pattern should not attempt to match more than one character.
 
-The @samp{^} operator converts lowercase letters matching @var{pattern}
-to uppercase; the @samp{,} operator converts matching uppercase letters
-to lowercase.
-The @samp{^^} and @samp{,,} expansions convert each matched character in the
-expanded value; the @samp{^} and @samp{,} expansions match and convert only
-the first character in the expanded value.
+Using
+@samp{^}
+converts lowercase letters matching @var{pattern} to uppercase;
+@samp{,}
+converts matching uppercase letters to lowercase.
+The
+@samp{^} and @samp{,} variants
+examine the first character in the expanded value
+and convert its case if it matches @var{pattern};
+the
+@samp{^^} and @samp{,,} variants
+examine all characters in the expanded value
+and convert each one that matches @var{pattern}.
 If @var{pattern} is omitted, it is treated like a @samp{?}, which matches
 every character.
 
index 7d31f0aa0c971d008820380f94c30a4cd0502730..dc07b3cbd736e879caf32fdea1142fd6ff90b0d6 100644 (file)
@@ -642,7 +642,7 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               though the shell normally searches for builtins before files.
 
               If -\b-n\bn is supplied, each _\bn_\ba_\bm_\be is disabled; otherwise,  _\bn_\ba_\bm_\bes  are
-              enabled.   For example, to use the t\bte\bes\bst\bt binary found usin g P\bPA\bAT\bTH\bH
+              enabled.   For  example, to use the t\bte\bes\bst\bt binary found using P\bPA\bAT\bTH\bH
               instead of the shell builtin version, run
 
               If no _\bn_\ba_\bm_\be arguments are supplied, or if the -\b-p\bp option  is  sup-
@@ -1618,7 +1618,6 @@ B\bBA\bAS\bSH\bH B\bBU\bUI\bIL\bLT\bTI\bIN\bN C\bCO\bOM\bMM\bMA\bAN\bND\bDS\bS
               c\bco\bom\bmp\bpa\bat\bt4\b42\b2
               c\bco\bom\bmp\bpa\bat\bt4\b43\b3
               c\bco\bom\bmp\bpa\bat\bt4\b44\b4
-              c\bco\bom\bmp\bpa\bat\bt5\b50\b0
                       These control aspects of the shell's compatibility  mode
                       (see S\bSH\bHE\bEL\bLL\bL C\bCO\bOM\bMP\bPA\bAT\bTI\bIB\bBI\bIL\bLI\bIT\bTY\bY M\bMO\bOD\bDE\bE in _\bb_\ba_\bs_\bh(1)).
               c\bco\bom\bmp\bpl\ble\bet\bte\be_\b_f\bfu\bul\bll\blq\bqu\buo\bot\bte\be
diff --git a/eval.c b/eval.c
index 0fc6cfcacdfd9f21e0f63094eb54efd0b8e9fe2d..926aeee08356a1f5091d9111b4997893457b2e66 100644 (file)
--- a/eval.c
+++ b/eval.c
@@ -95,7 +95,11 @@ reader_loop (void)
            {
              /* Some kind of throw to top_level has occurred. */
            case ERREXIT:
-             if (exit_immediately_on_error)
+             /* POSIX says to exit on error "as if by executing the
+                exit special built-in utility with no arguments," so we
+                don't reset any local contexts and keep the execution
+                context in a shell function if we were executing one. */
+             if (exit_immediately_on_error && posixly_correct == 0)
                reset_local_contexts ();        /* not in a function */
            case FORCE_EOF:
            case EXITPROG:
index f0023692bb3f5cad4a09d6e9d4d491b5feff44d9..dcc5e806d07210c9e69513a7d4fc211dd0ad8fa7 100644 (file)
@@ -1489,7 +1489,7 @@ rl_redisplay (void)
                 but the buffer position needs to be adjusted to account
                 for invisible characters. */
              if ((mb_cur_max == 1 || rl_byte_oriented) && cursor_linenum == prompt_last_screen_line)
-               _rl_last_c_pos = physpos + WRAP_OFFSET (cursor_linenum, wrap_offset);;
+               _rl_last_c_pos = physpos + WRAP_OFFSET (cursor_linenum, wrap_offset);
            }
 
          /* Now we move the cursor to where it needs to be.  First, make
@@ -1502,28 +1502,53 @@ rl_redisplay (void)
             invisible character in the prompt string. */
          /* XXX - why not use local_prompt_len? */
          nleft = prompt_visible_length + wrap_offset;
-         if (cursor_linenum == prompt_last_screen_line && wrap_offset > 0 &&
-             _rl_last_c_pos > 0 && local_prompt &&
-             _rl_last_c_pos < PROMPT_ENDING_INDEX)
+         if (cursor_linenum == prompt_last_screen_line)
            {
-             int pmt_offset;
-
-             _rl_cr ();
-             if (modmark)
-               _rl_output_some_chars ("*", 1);
-
-             /* If the number of characters in local_prompt is greater than
-                the screen width, the prompt wraps. We only want to print the
-                portion after the line wrap. */
-             pmt_offset = local_prompt_newlines[cursor_linenum];
-             if (cursor_linenum > 0 && pmt_offset > 0 && nleft > pmt_offset)
-               _rl_output_some_chars (local_prompt + pmt_offset, nleft - pmt_offset);
-             else
-               _rl_output_some_chars (local_prompt, nleft);
-             if (mb_cur_max > 1 && rl_byte_oriented == 0)
-               _rl_last_c_pos = _rl_col_width (local_prompt, 0, nleft, 1) - wrap_offset + modmark;
+             int pmt_offset = local_prompt_newlines ? local_prompt_newlines[cursor_linenum] : 0;
+             int curline_invchars = local_prompt_invis_chars ? local_prompt_invis_chars[cursor_linenum] : wrap_offset;
+             int cursor_bufpos;
+
+             /* cursor_bufpos is where the portion of the prompt that appears
+                on the current screen line begins in the buffer. It is a
+                buffer position, an index into curline
+                (local_prompt + pmt_offset) */
+             cursor_bufpos = pmt_offset;
+             if (mb_cur_max == 1 || rl_byte_oriented)
+               cursor_bufpos += _rl_last_c_pos;
              else
-               _rl_last_c_pos = nleft + modmark;       /* buffer position */
+               cursor_bufpos += _rl_last_c_pos + curline_invchars;
+
+             if (local_prompt && local_prompt_invis_chars[cursor_linenum] &&
+                   _rl_last_c_pos > 0 &&
+                   cursor_bufpos <= prompt_last_invisible)
+               {
+                 _rl_cr ();
+                 if (modmark)
+                   _rl_output_some_chars ("*", 1);
+
+                 /* If the number of characters in local_prompt is greater
+                    than the screen width, the prompt wraps. We only want to
+                    print the portion after the line wrap. */
+
+                 /* Make sure we set _rl_last_c_pos based on the number of
+                    characters we actually output, since we start at column 0. */
+                 if (cursor_linenum > 0 && pmt_offset > 0 && nleft > pmt_offset)
+                   _rl_output_some_chars (local_prompt + pmt_offset, nleft - pmt_offset);
+                 else
+                   {
+                     _rl_output_some_chars (local_prompt, nleft);
+                     pmt_offset = 0;           /* force for calculation below */
+                   }
+       
+                 if (mb_cur_max > 1 && rl_byte_oriented == 0)
+                   /* Start width calculation where we started output. */
+                   _rl_last_c_pos = _rl_col_width (local_prompt, pmt_offset, nleft, 1) - WRAP_OFFSET(cursor_linenum, wrap_offset) + modmark;
+                 else
+                   /* Index into invisible_line+inv_lbreaks[cursor_linenum],
+                      since that's what we use in the call to
+                      _rl_move_cursor_relative below. */
+                   _rl_last_c_pos = nleft + modmark - inv_lbreaks[cursor_linenum];     /* buffer position */
+               }
            }
 
          /* Where on that line?  And where does that line start
index a53d55758cbfee926490c1d737a2ef188d24bee2..5bce1c3d2e6af394a756a451f0f2b601719f448c 100644 (file)
@@ -504,6 +504,8 @@ It may be omitted if the word designator begins with a @samp{^}, @samp{$},
 @samp{*}, @samp{-}, or @samp{%}.
 Words are numbered from the beginning of the line,
 with the first word being denoted by 0 (zero).
+That first word is usually the command word, and the arguments begin
+with the second word.
 Words are inserted into the current line separated by single spaces.
 
 @need 0.75
@@ -515,7 +517,7 @@ designates the preceding command.
 When you type this, the preceding command is repeated in toto.
 
 @item !!:$
-designates the last argument of the preceding command.
+designates the last word of the preceding command.
 This may be shortened to @code{!$}.
 
 @item !fi:2
diff --git a/parse.y b/parse.y
index 96bbd024105f89493216cb58bbd393d4f6c2b13f..90436220969db0b7c79a5e8e9f8da07c31f8eaaf 100644 (file)
--- a/parse.y
+++ b/parse.y
@@ -6510,7 +6510,13 @@ decode_prompt_string (char *string, int is_prompt)
            case 'u':
              if (current_user.user_name == 0)
                get_current_user_info ();
-             temp = savestring (current_user.user_name);
+             if (promptvars || posixly_correct)
+               /* Make sure that expand_prompt_string is called with a
+                  second argument of Q_DOUBLE_QUOTES if we use this
+                  function here. */
+               temp = sh_backslash_quote_for_double_quotes (current_user.user_name, 0);
+             else
+               temp = savestring (current_user.user_name);
              goto add_string;
 
            case 'h':
diff --git a/subst.c b/subst.c
index 5c0cd8448e8df280c134d47861c795600c4d7b06..5f4dfc755fcaf32335bee78cd5adc30a83b96de2 100644 (file)
--- a/subst.c
+++ b/subst.c
@@ -7494,9 +7494,16 @@ array_length_reference (const char *s)
      failure. */
   if ((var == 0 || invisible_p (var) || (assoc_p (var) == 0 && array_p (var) == 0)) && unbound_vars_is_error)
     {
+      set_exit_status (EXECUTION_FAILURE);
+#if 1
+      /* If the array isn't subscripted with `@' or `*', it's an error. */
+      if (ALL_ELEMENT_SUB (t[0]) == 0 || t[1] != RBRACK)
+        return (INTMAX_MIN);           /* caller prints error */
+#endif
+      /* If the variable is subscripted with `@' or `*', ksh93 allows it to
+        return 0. We treat it as a non-fatal error. */
       c = *--t;
       *t = '\0';
-      set_exit_status (EXECUTION_FAILURE);
       err_unboundvar (s);
       *t = c;
       return (-1);
@@ -7521,6 +7528,8 @@ array_length_reference (const char *s)
        return (var_isset (var) ? 1 : 0);
     }
 
+  /* If an array variable is set, length expansions for unset elements
+     return 0. This is compatible with ksh93. */
   if (assoc_p (var))
     {
       t[len - 1] = '\0';
index 29a333b099228bc27c3936b120550894d2653702..e942701237c6586592607f9f608f76a948c4014a 100644 (file)
@@ -23,27 +23,27 @@ JOBaa bb cc ddCONTROL
 NOTFOUND
 ./comsub2.tests: line 75: p: command not found
 ./comsub2.tests: line 75: p: command not found
-expand_aliases            off
-expand_aliases            off
+expand_aliases         off
+expand_aliases         off
 outside:
 ./comsub2.tests: line 79: alias: p: not found
 alias e='echo inside redefine'
-expand_aliases            off
+expand_aliases         off
 1
-expand_aliases            on
+expand_aliases         on
 2
-expand_aliases            on
+expand_aliases         on
 outside:
 ./comsub2.tests: line 89: alias: p: not found
-expand_aliases            on
+expand_aliases         on
 1
 xx
-expand_aliases            on
+expand_aliases         on
 2
 xx
-expand_aliases            on
+expand_aliases         on
 outside:
-expand_aliases            on
+expand_aliases         on
 inside: 12 22 42
 outside: 42 2
 newlines
index ba5ae8904011fa60217b0e6bbb6cf187ea5cff54..d584d805788f529aaaca30fac6d5e764a42efae1 100644 (file)
@@ -79,7 +79,7 @@ this is ohio-state
 1
 0
 testb
-expand_aliases            on
+expand_aliases         on
 1
 1
 1
index 59faee109dd55b9b751f93afd2347795ee79432b..e01a60fb466ea42e1a4644bbb93e1552e904dde6 100644 (file)
@@ -182,10 +182,10 @@ no dotglob: .a .foo bar
 ? . .. .a .foo
 *
 bar
-extglob                   off
+extglob                off
 x
-extglob                   off
-extglob                   off
-extglob                   off
-extglob                   off
-extglob                   off
+extglob                off
+extglob                off
+extglob                off
+extglob                off
+extglob                off
index bbbc439ce04171524aeaf0ab921b4e822395d05a..2d47b5756855b511b2d8fe0a607ef5b2dd5f3565 100644 (file)
@@ -126,51 +126,51 @@ shopt -u shift_verbose
 shopt -u varredir_close
 shopt -u xpg_echo
 --
-array_expand_once         off
-assoc_expand_once         off
-autocd                    off
-bash_source_fullpath      off
-cdable_vars               off
-checkhash                 off
-checkjobs                 off
-checkwinsize              off
-compat31                  off
-compat32                  off
-compat40                  off
-compat41                  off
-compat42                  off
-compat43                  off
-compat44                  off
-direxpand                 off
-dirspell                  off
-dotglob                   off
-execfail                  off
-extdebug                  off
-extglob                   off
-failglob                  off
-globstar                  off
-gnu_errfmt                off
-histappend                off
-histreedit                off
-histverify                off
-huponexit                 off
-inherit_errexit           off
-lastpipe                  off
-lithist                   off
-localvar_inherit          off
-localvar_unset            off
-login_shell               off
-mailwarn                  off
-no_empty_cmd_completion   off
-nocaseglob                off
-nocasematch               off
-noexpand_translation      off
-nullglob                  off
-progcomp_alias            off
-restricted_shell          off
-shift_verbose             off
-varredir_close            off
-xpg_echo                  off
+array_expand_once      off
+assoc_expand_once      off
+autocd                 off
+bash_source_fullpath   off
+cdable_vars            off
+checkhash              off
+checkjobs              off
+checkwinsize           off
+compat31               off
+compat32               off
+compat40               off
+compat41               off
+compat42               off
+compat43               off
+compat44               off
+direxpand              off
+dirspell               off
+dotglob                off
+execfail               off
+extdebug               off
+extglob                off
+failglob               off
+globstar               off
+gnu_errfmt             off
+histappend             off
+histreedit             off
+histverify             off
+huponexit              off
+inherit_errexit        off
+lastpipe               off
+lithist                off
+localvar_inherit       off
+localvar_unset         off
+login_shell            off
+mailwarn               off
+no_empty_cmd_completion        off
+nocaseglob             off
+nocasematch            off
+noexpand_translation   off
+nullglob               off
+progcomp_alias         off
+restricted_shell       off
+shift_verbose          off
+varredir_close         off
+xpg_echo               off
 --
 set +o allexport
 set -o braceexpand
@@ -310,5 +310,5 @@ xtrace              off
 --
 ./shopt.tests: line 106: shopt: xyz1: invalid shell option name
 ./shopt.tests: line 107: shopt: xyz1: invalid option name
-expand_aliases            on
-expand_aliases            on
+expand_aliases         on
+expand_aliases         on
index e01896811d04b5def5b8401b6435a7e2910818c2..4ed1e04a501b29a343c408b1f122265d8d1f486c 100644 (file)
@@ -270,9 +270,9 @@ declare -x v="x"
 declare -x v="t"
 declare -- v
 declare -x v
-ignoreeof                 on
-ignoreeof                 off
-ignoreeof                 on
+ignoreeof              on
+ignoreeof              off
+ignoreeof              on
 10
 local -
 match 1