]> git.ipfire.org Git - thirdparty/bash.git/commitdiff
interim fix for generic list functions to avoid pointer aliasing issues; documentatio...
authorChet Ramey <chet.ramey@case.edu>
Fri, 8 May 2026 15:36:36 +0000 (11:36 -0400)
committerChet Ramey <chet.ramey@case.edu>
Fri, 8 May 2026 15:36:36 +0000 (11:36 -0400)
36 files changed:
CWRU/CWRU.chlog
Makefile.in
builtins/common.c
builtins/printf.def
doc/bash.0
doc/bash.1
doc/bash.html
doc/bash.info
doc/bash.pdf
doc/bashref.aux
doc/bashref.bt
doc/bashref.bts
doc/bashref.cp
doc/bashref.cps
doc/bashref.fn
doc/bashref.fns
doc/bashref.html
doc/bashref.info
doc/bashref.log
doc/bashref.pdf
doc/bashref.rw
doc/bashref.rws
doc/bashref.texi
doc/bashref.toc
doc/bashref.vr
doc/bashref.vrs
doc/version.texi
examples/loadables/rev.c
execute_cmd.c
externs.h
general.h
lib/sh/stringlist.c
lib/sh/stringvec.c
list.c
pcomplete.c
subst.c

index 4f571da04515150dd5e51310ed512d546015d541..db0e4d06f1afb1b998aecb9b428b3127f23ea88e 100644 (file)
@@ -12855,3 +12855,25 @@ subst.c
          old `quoted' is now (flags & W_QUOTED); changed all callers
          appropriately
 
+                                   5/7
+                                   ---
+list.c,externs.h
+       - list_reverse: change to use a void * scheme instead of GENERIC_LIST *
+         scheme as a temporary fix for strict pointer aliasing issues
+         Originally from Sam James <sam@gentoo.org>
+
+general.h
+       - REVERSE_LIST: change to use new void * argument scheme for now
+
+list.c,externs.h
+       - wlist_append,wlist_length: new WORD_LIST * specific versions of
+         list_append and list_length, since all callers use WORD_LIST *
+         arguments
+
+subst.c,pcomplete.c,execute_cmd.c,
+builtins/common.c,builtins/printf.def,
+lib/sh/stringvec.c,lib/sh/stringlist.c
+       - wlist_append,wlist_length: change callers to use new functions instead
+         of list_append/list_length, since they're always called with
+         WORD_LIST * arguments
+
index 43c0f5af73282f88fcf1875d3dfd8c5daee53139..1ac0ba3b3694acb3763897d18e89ca9b749c1e3f 100644 (file)
@@ -202,7 +202,8 @@ GCC_LINT_FLAGS = -O -Wall -Wshadow -Wpointer-arith -Wcast-qual -Wno-parentheses
                 -Wmissing-declarations  -Winline \
                 -Wmissing-prototypes -Wredundant-decls \
                 -Wformat-security -pedantic \
-                 -Werror=incompatible-pointer-types
+                -fstrict-aliasing -Wstrict-aliasing \
+                -Werror=incompatible-pointer-types
 
 GCC_LINT_CFLAGS = $(BASE_CCFLAGS) $(CPPFLAGS) $(GCC_LINT_FLAGS)
 
index 15a3b1560ba3b8d87f5a07383410b0bc72a70f87..a781a0fa1f30e51b47358eec83fd80eed8cd8b22 100644 (file)
@@ -1,6 +1,6 @@
 /* common.c - utility functions for all builtins */
 
-/* Copyright (C) 1987-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1987-2026 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -384,7 +384,7 @@ remember_args (WORD_LIST *list, int destructive)
     {
       dispose_words (rest_of_args);
       rest_of_args = copy_word_list (list);
-      posparam_count += list_length ((GENERIC_LIST *)list);
+      posparam_count += wlist_length (list);
     }
 
   if (destructive)
index b362201716385361099cb6ec105ca118785f69ee..456a1beb83753f4240651d0525f0570cb72b7080 100644 (file)
@@ -1,7 +1,7 @@
 This file is printf.def, from which is created printf.c.
 It implements the builtin "printf" in Bash.
 
-Copyright (C) 1997-2025 Free Software Foundation, Inc.
+Copyright (C) 1997-2026 Free Software Foundation, Inc.
 
 This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -273,7 +273,7 @@ init_numarg ()
   size_t len;
   WORD_LIST *l;
 
-  len = list_length ((GENERIC_LIST *)orig_arglist);
+  len = wlist_length (orig_arglist);
   narg_argv = (char **)xmalloc ((len + 2) * sizeof (char *));  /* +2 because we don't use 0 */
 
   for (narg_argc = 1, l = orig_arglist; l; l = l->next)
index 93d684c1437f845a87018098a41ba3db65289b97..6ebeca4f6fa62e5637881a088316daeb12b8dcd9 100644 (file)
@@ -152,80 +152,86 @@ I\bIN\bNV\bVO\bOC\bCA\bAT\bTI\bIO\bON\bN
        includes i\bi if the shell is interactive, so a shell script or a  startup
        file can test this state.
 
-       The  following paragraphs describe how b\bba\bas\bsh\bh executes its startup files.
-       If any of the files exist but cannot be read, b\bba\bas\bsh\bh  reports  an  error.
-       Tildes  are expanded in filenames as described below under T\bTi\bil\bld\bde\be E\bEx\bxp\bpa\ban\bn-\b-
+       A _\bn_\bo_\bn_\b-_\bi_\bn_\bt_\be_\br_\ba_\bc_\bt_\bi_\bv_\be _\bs_\bh_\be_\bl_\bl is, not surprisingly, one that does not satisfy
+       the  tests  for  interactivity given above.  A non-interactive shell is
+       usually started to run commands from a script file supplied as an argu-
+       ment (a _\bs_\bh_\be_\bl_\bl _\bs_\bc_\br_\bi_\bp_\bt) or from a string supplied with the -\b-c\bc option.
+
+       The following paragraphs describe how b\bba\bas\bsh\bh executes its startup  files.
+       If  any  of  the files exist but cannot be read, b\bba\bas\bsh\bh reports an error.
+       Tildes in filenames are expanded as described below under T\bTi\bil\bld\bde\be  E\bEx\bxp\bpa\ban\bn-\b-
        s\bsi\bio\bon\bn in the E\bEX\bXP\bPA\bAN\bNS\bSI\bIO\bON\bN section.
 
-       When b\bba\bas\bsh\bh is invoked as an interactive login shell, or as a  non-inter-
-       active  shell with the -\b--\b-l\blo\bog\bgi\bin\bn option, it first reads and executes com-
-       mands from the file _\b/_\be_\bt_\bc_\b/_\bp_\br_\bo_\bf_\bi_\bl_\be, if that file exists.   After  reading
+       When  b\bba\bas\bsh\bh is invoked as an interactive login shell, or as a non-inter-
+       active shell with the -\b--\b-l\blo\bog\bgi\bin\bn option, it first reads and executes  com-
+       mands  from  the file _\b/_\be_\bt_\bc_\b/_\bp_\br_\bo_\bf_\bi_\bl_\be, if that file exists.  After reading
        that file, it looks for _\b~_\b/_\b._\bb_\ba_\bs_\bh_\b__\bp_\br_\bo_\bf_\bi_\bl_\be, _\b~_\b/_\b._\bb_\ba_\bs_\bh_\b__\bl_\bo_\bg_\bi_\bn, and _\b~_\b/_\b._\bp_\br_\bo_\bf_\bi_\bl_\be,
-       in  that order, and reads and executes commands from the first one that
-       exists and is readable.  The -\b--\b-n\bno\bop\bpr\bro\bof\bfi\bil\ble\be option may be  used  when  the
+       in that order, and reads and executes commands from the first one  that
+       exists  and  is  readable.  The -\b--\b-n\bno\bop\bpr\bro\bof\bfi\bil\ble\be option may be used when the
        shell is started to inhibit this behavior.
 
        When an interactive login shell exits, or a non-interactive login shell
-       executes  the  e\bex\bxi\bit\bt  builtin  command, b\bba\bas\bsh\bh reads and executes commands
+       executes the e\bex\bxi\bit\bt builtin command, b\bba\bas\bsh\bh  reads  and  executes  commands
        from the file _\b~_\b/_\b._\bb_\ba_\bs_\bh_\b__\bl_\bo_\bg_\bo_\bu_\bt, if it exists.
 
-       When an interactive shell that is not a login shell  is  started,  b\bba\bas\bsh\bh
-       reads  and  executes commands from _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc, if that file exists.  The
-       -\b--\b-n\bno\bor\brc\boption inhibits this behavior.  The -\b--\b-r\brc\bcf\bfi\bil\ble\be _\bf_\bi_\bl_\be option  causes
+       When  an  interactive  shell that is not a login shell is started, b\bba\bas\bsh\bh
+       reads and executes commands from _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc, if that file  exists.   The
+       -\b--\b-n\bno\bor\brc\b option inhibits this behavior.  The -\b--\b-r\brc\bcf\bfi\bil\ble\be _\bf_\bi_\bl_\be option causes
        b\bba\bas\bsh\bh to use _\bf_\bi_\bl_\be instead of _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc.
 
-       When  b\bba\bas\bsh\bh is started non-interactively, to run a shell script, for ex-
-       ample, it looks for the variable B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\bV in the  environment,  expands
-       its  value if it appears there, and uses the expanded value as the name
-       of a file to read and execute.  B\bBa\bas\bsh\bh behaves as if the  following  com-
-       mand were executed:
+       When b\bba\bas\bsh\bh is started  non-interactively,  it  looks  for  the  variable
+       B\bBA\bAS\bSH\bH_\b_E\bEN\bNV\bV in the environment, expands its value if it appears there, and
+       uses  the  expanded  value  as  the name of a file to read and execute.
+       B\bBa\bas\bsh\bh behaves as if the following command were executed:
 
               if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
 
        but does not use the value of the P\bPA\bAT\bTH\bH variable to search for the file-
        name.
 
-       If  b\bba\bas\bsh\bh is invoked with the name s\bsh\bh, it tries to mimic the startup be-
-       havior of historical versions of s\bsh\bh as closely as possible, while  con-
-       forming  to the POSIX standard as well.  When invoked as an interactive
-       login shell, or a non-interactive shell with  the  -\b--\b-l\blo\bog\bgi\bin\bn  option,  it
-       first  attempts  to  read  and  execute  commands from _\b/_\be_\bt_\bc_\b/_\bp_\br_\bo_\bf_\bi_\bl_\be and
+       If b\bba\bas\bsh\bh is invoked with the name s\bsh\bh, it tries to mimic the startup  be-
+       havior  of historical versions of s\bsh\bh as closely as possible, while con-
+       forming to the POSIX standard as well.  When invoked as an  interactive
+       login  shell,  or  a  non-interactive shell with the -\b--\b-l\blo\bog\bgi\bin\bn option, it
+       first attempts to read  and  execute  commands  from  _\b/_\be_\bt_\bc_\b/_\bp_\br_\bo_\bf_\bi_\bl_\b and
        _\b~_\b/_\b._\bp_\br_\bo_\bf_\bi_\bl_\be, in that order.  The -\b--\b-n\bno\bop\bpr\bro\bof\bfi\bil\ble\be option inhibits this behav-
        ior.  When invoked as an interactive shell with the name s\bsh\bh, b\bba\bas\bsh\bh looks
-       for the variable E\bEN\bNV\bV, expands its value if it is defined, and uses  the
-       expanded  value  as  the  name  of a file to read and execute.  Since a
-       shell invoked as s\bsh\bh does not attempt to read and execute commands  from
-       any  other startup files, the -\b--\b-r\brc\bcf\bfi\bil\ble\be option has no effect.  A non-in-
-       teractive shell invoked with the name s\bsh\bh does not attempt to  read  any
+       for  the variable E\bEN\bNV\bV, expands its value if it is defined, and uses the
+       expanded value as the name of a file to  read  and  execute.   Since  a
+       shell  invoked as s\bsh\bh does not attempt to read and execute commands from
+       any other startup files, the -\b--\b-r\brc\bcf\bfi\bil\ble\be option has no effect.  A  non-in-
+       teractive  shell  invoked with the name s\bsh\bh does not attempt to read any
        other startup files.
 
-       When  invoked  as  s\bsh\bh, b\bba\bas\bsh\bh enters posix mode after reading the startup
+       When invoked as s\bsh\bh, b\bba\bas\bsh\bh enters posix mode after  reading  the  startup
        files.
 
-       When b\bba\bas\bsh\bh is started in posix mode, as with the  -\b--\b-p\bpo\bos\bsi\bix\bx  command  line
+       When  b\bba\bas\bsh\bh  is  started in posix mode, as with the -\b--\b-p\bpo\bos\bsi\bix\bx command line
        option, it follows the POSIX standard for startup files.  In this mode,
-       interactive  shells  expand  the E\bEN\bNV\bV variable and read and execute com-
-       mands from the file whose name is the expanded value.  No other startup
-       files are read.
+       interactive shells expand the E\bEN\bNV\bV variable and read  and  execute  com-
+       mands  from  the  file  whose name is the expanded value.  A posix-mode
+       shell does not attempt to read any other startup files, even  when  in-
+       voked as a login shell.
 
        B\bBa\bas\bsh\bh attempts to determine when it is being run with its standard input
-       connected to a network connection, as when executed by  the  historical
-       and  rarely-seen remote shell daemon, usually _\br_\bs_\bh_\bd, or the secure shell
-       daemon _\bs_\bs_\bh_\bd.  If b\bba\bas\bsh\bh determines it is being run  non-interactively  in
-       this  fashion,  it  reads and executes commands from _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc, if that
-       file exists and is readable.  B\bBa\bas\bsh\bh does not read this file  if  invoked
-       as  s\bsh\bh.  The -\b--\b-n\bno\bor\brc\bc option inhibits this behavior, and the -\b--\b-r\brc\bcf\bfi\bil\ble\be op-
-       tion makes b\bba\bas\bsh\bh use a different file instead of _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc, but  neither
-       _\br_\bs_\bh_\bd  nor  _\bs_\bs_\bh_\bd  generally invoke the shell with those options or allow
+       connected to a network connection, as when executed by the secure shell
+       daemon _\bs_\bs_\bh_\bd or the historical and rarely-seen remote shell daemon, usu-
+       ally  _\br_\bs_\bh_\bd.   If  b\bba\bas\bsh\bh  determines it is being run non-interactively in
+       this fashion, it reads and executes commands from  _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc,  if  that
+       file  exists  and is readable.  B\bBa\bas\bsh\bh does not read this file if invoked
+       as s\bsh\bh.  The -\b--\b-n\bno\bor\brc\bc option inhibits this behavior, and the -\b--\b-r\brc\bcf\bfi\bil\ble\b op-
+       tion  makes b\bba\bas\bsh\bh use a different file instead of _\b~_\b/_\b._\bb_\ba_\bs_\bh_\br_\bc, but neither
+       _\bs_\bs_\bh_\bd nor _\br_\bs_\bh_\bd generally invoke the shell with those  options  or  allow
        them to be specified.
 
        If the shell is started with the effective user (group) id not equal to
        the real user (group) id, and the -\b-p\bp option is not supplied, no startup
        files are read, shell functions are not inherited from the environment,
-       the S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS, B\bBA\bAS\bSH\bHO\bOP\bPT\bTS\bS, C\bCD\bDP\bPA\bAT\bTH\bH, and G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE variables, if they  ap-
-       pear  in the environment, are ignored, and the effective user id is set
-       to the real user id.  If the -\b-p\bp option is supplied at  invocation,  the
-       startup behavior is the same, but the effective user id is not reset.
+       the  S\bSH\bHE\bEL\bLL\bLO\bOP\bPT\bTS\bS, B\bBA\bAS\bSH\bHO\bOP\bPT\bTS\bS, C\bCD\bDP\bPA\bAT\bTH\bH, and G\bGL\bLO\bOB\bBI\bIG\bGN\bNO\bOR\bRE\bE variables, if they ap-
+       pear in the environment, are ignored, and the effective user id is  set
+       to  the  real user id.  If the -\b-p\bp option is supplied at invocation, the
+       startup behavior is the same, but b\bba\bas\bsh\bh does  not  reset  the  effective
+       user id.
 
 D\bDE\bEF\bFI\bIN\bNI\bIT\bTI\bIO\bON\bNS\bS
        The  following  definitions  are used throughout the rest of this docu-
@@ -7622,4 +7628,4 @@ B\bBU\bUG\bGS\bS
 
        Array variables may not (yet) be exported.
 
-GNU Bash 5.3                     2026 March 3                          _\bB_\bA_\bS_\bH(1)
+GNU Bash 5.3                     2026 April 29                         _\bB_\bA_\bS_\bH(1)
index 98f07427b963d74482b366870be7378b59c97ed1..6e47040954cc079bd9e6480d873466e7a721c2ee 100644 (file)
@@ -5,7 +5,7 @@
 .\"    Case Western Reserve University
 .\"    chet.ramey@case.edu
 .\"
-.\"    Last Change: Tue Mar  3 10:52:34 EST 2026
+.\"    Last Change: Wed May  6 16:08:33 EDT 2026
 .\"
 .\" For bash_builtins, strip all but "SHELL BUILTIN COMMANDS" section
 .\" For rbash, strip all but "RESTRICTED SHELL" section
@@ -22,7 +22,7 @@
 .ds zX \" empty
 .if \n(zZ=1 .ig zZ
 .if \n(zY=1 .ig zY
-.TH BASH 1 "2026 March 3" "GNU Bash 5.3"
+.TH BASH 1 "2026 May 6" "GNU Bash 5.3"
 .\"
 .ie \n(.g \{\
 .ds ' \(aq
@@ -376,13 +376,21 @@ includes
 if the shell is interactive,
 so a shell script or a startup file can test this state.
 .PP
+A \fInon-interactive shell\fP is, not surprisingly, one that does not
+satisfy the tests for interactivity given above.
+A non-interactive shell is usually started to run commands from a script
+file supplied as an argument (a \fIshell script\fP)
+or from a string supplied with the
+.B \-c
+option.
+.PP
 The following paragraphs describe how
 .B bash
 executes its startup files.
 If any of the files exist but cannot be read,
 .B bash
 reports an error.
-Tildes are expanded in filenames as described below under
+Tildes in filenames are expanded as described below under
 .B "Tilde Expansion"
 in the
 .SM
@@ -429,7 +437,7 @@ to use \fIfile\fP instead of
 .PP
 When
 .B bash
-is started non-interactively, to run a shell script, for example, it
+is started non-interactively, it
 looks for the variable
 .SM
 .B BASH_ENV
@@ -504,13 +512,14 @@ In this mode, interactive shells expand the
 .B ENV
 variable and read and execute commands from the file
 whose name is the expanded value.
-No other startup files are read.
+A posix-mode shell does not attempt to read any other startup files,
+even when invoked as a login shell.
 .PP
 .B Bash
 attempts to determine when it is being run with its standard input
 connected to a network connection, as when executed by
-the historical and rarely-seen remote shell daemon, usually \fIrshd\fP,
-or the secure shell daemon \fIsshd\fP.
+the secure shell daemon \fIsshd\fP
+or the historical and rarely-seen remote shell daemon, usually \fIrshd\fP.
 If
 .B bash
 determines it is being run non-interactively in this fashion,
@@ -526,7 +535,7 @@ option inhibits this behavior, and the
 option makes \fBbash\fP use a different file instead of
 .FN \*~/.bashrc ,
 but neither
-\fIrshd\fP nor \fIsshd\fP generally invoke the shell with those options
+\fIsshd\fP nor \fIrshd\fP generally invoke the shell with those options
 or allow them to be specified.
 .PP
 If the shell is started with the effective user (group) id not equal to the
@@ -544,7 +553,7 @@ and
 variables, if they appear in the environment, are ignored,
 and the effective user id is set to the real user id.
 If the \fB\-p\fP option is supplied at invocation, the startup behavior is
-the same, but the effective user id is not reset.
+the same, but \fBbash\fP does not reset the effective user id.
 .SH DEFINITIONS
 The following definitions are used throughout the rest of this
 document.
@@ -5038,7 +5047,7 @@ all lines of the here-document are subjected to
 parameter expansion, command substitution, and arithmetic expansion,
 the character sequence
 .B \e<newline>
-is treated literally, and
+is treated as a line continuation, and
 .B \e
 must be used to quote the characters
 .BR \e ,
index b116b819146c1d5ea6804a99ffe0a29cabec32ba..3924d2a005a487e1e3a54f32b94bd9b0808f3cf8 100644 (file)
@@ -1,5 +1,5 @@
 <!-- Creator     : groff version 1.23.0 -->
-<!-- CreationDate: Mon Mar 16 15:46:12 2026 -->
+<!-- CreationDate: Wed Apr 29 10:18:50 2026 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
 <html>
@@ -458,11 +458,19 @@ determined by <i>isatty</i>(3)), or one started with the
 <b>i</b> if the shell is interactive, so a shell script or a
 startup file can test this state.</p>
 
+<p style="margin-left:9%; margin-top: 1em">A
+<i>non-interactive shell</i> is, not surprisingly, one that
+does not satisfy the tests for interactivity given above. A
+non-interactive shell is usually started to run commands
+from a script file supplied as an argument (a <i>shell
+script</i>) or from a string supplied with the
+<b>&minus;c</b> option.</p>
+
 <p style="margin-left:9%; margin-top: 1em">The following
 paragraphs describe how <b>bash</b> executes its startup
 files. If any of the files exist but cannot be read,
-<b>bash</b> reports an error. Tildes are expanded in
-filenames as described below under <b>Tilde Expansion</b> in
+<b>bash</b> reports an error. Tildes in filenames are
+expanded as described below under <b>Tilde Expansion</b> in
 the <b><small>EXPANSION</small></b> section.</p>
 
 <p style="margin-left:9%; margin-top: 1em">When <b>bash</b>
@@ -493,8 +501,7 @@ interactive shell that is not a login shell is started,
 <A HREF="file:~/.bashrc"><i>~/.bashrc</i></A>.</p>
 
 <p style="margin-left:9%; margin-top: 1em">When <b>bash</b>
-is started non-interactively, to run a shell script, for
-example, it looks for the variable
+is started non-interactively, it looks for the variable
 <b><small>BASH_ENV</small></b> in the environment, expands
 its value if it appears there, and uses the expanded value
 as the name of a file to read and execute. <b>Bash</b>
@@ -539,14 +546,15 @@ is started in posix mode, as with the
 the <small>POSIX</small> standard for startup files. In this
 mode, interactive shells expand the
 <b><small>ENV</small></b> variable and read and execute
-commands from the file whose name is the expanded value. No
-other startup files are read.</p>
+commands from the file whose name is the expanded value. A
+posix-mode shell does not attempt to read any other startup
+files, even when invoked as a login shell.</p>
 
 <p style="margin-left:9%; margin-top: 1em"><b>Bash</b>
 attempts to determine when it is being run with its standard
 input connected to a network connection, as when executed by
-the historical and rarely-seen remote shell daemon, usually
-<i>rshd</i>, or the secure shell daemon <i>sshd</i>. If
+the secure shell daemon <i>sshd</i> or the historical and
+rarely-seen remote shell daemon, usually <i>rshd</i>. If
 <b>bash</b> determines it is being run non-interactively in
 this fashion, it reads and executes commands from
 <A HREF="file:~/.bashrc"><i>~/.bashrc</i></A>, if that file exists and is readable.
@@ -554,7 +562,7 @@ this fashion, it reads and executes commands from
 The <b>&minus;&minus;norc</b> option inhibits this behavior,
 and the <b>&minus;&minus;rcfile</b> option makes <b>bash</b>
 use a different file instead of <A HREF="file:~/.bashrc"><i>~/.bashrc</i></A>, but
-neither <i>rshd</i> nor <i>sshd</i> generally invoke the
+neither <i>sshd</i> nor <i>rshd</i> generally invoke the
 shell with those options or allow them to be specified.</p>
 
 <p style="margin-left:9%; margin-top: 1em">If the shell is
@@ -567,8 +575,8 @@ inherited from the environment, the
 variables, if they appear in the environment, are ignored,
 and the effective user id is set to the real user id. If the
 <b>&minus;p</b> option is supplied at invocation, the
-startup behavior is the same, but the effective user id is
-not reset.</p>
+startup behavior is the same, but <b>bash</b> does not reset
+the effective user id.</p>
 
 <h2>DEFINITIONS
 <a name="DEFINITIONS"></a>
index 474276a5133457f54c2cd11371f8b5d137626c92..7d4a287ed50dbbab45df5001aa4dad1244694949 100644 (file)
@@ -1,9 +1,9 @@
 This is bash.info, produced by makeinfo version 7.2 from bashref.texi.
 
 This text is a brief description of the features that are present in the
-Bash shell (version 5.3, 16 March 2026).
+Bash shell (version 5.3, 29 April 2026).
 
-   This is Edition 5.3, last updated 16 March 2026, of ‘The GNU Bash
+   This is Edition 5.3, last updated 29 April 2026, of ‘The GNU Bash
 Reference Manual’, for ‘Bash’, Version 5.3.
 
    Copyright © 1988-2026 Free Software Foundation, Inc.
@@ -26,10 +26,10 @@ Bash Features
 *************
 
 This text is a brief description of the features that are present in the
-Bash shell (version 5.3, 16 March 2026).  The Bash home page is
+Bash shell (version 5.3, 29 April 2026).  The Bash home page is
 <http://www.gnu.org/software/bash/>.
 
-   This is Edition 5.3, last updated 16 March 2026, of ‘The GNU Bash
+   This is Edition 5.3, last updated 29 April 2026, of ‘The GNU Bash
 Reference Manual’, for ‘Bash’, Version 5.3.
 
    Bash contains features that appear in other popular shells, and some
@@ -3361,7 +3361,7 @@ File: bash.info,  Node: Shell Scripts,  Prev: Executing Commands,  Up: Basic She
 3.8 Shell Scripts
 =================
 
-A shell script is a text file containing shell commands.  When such a
+A “shell script” is a text file containing shell commands.  When such a
 file is used as the first non-option argument when invoking Bash, and
 neither the ‘-c’ nor ‘-s’ option is supplied (*note Invoking Bash::),
 Bash reads and executes commands from the file, then exits.  This mode
@@ -6666,6 +6666,12 @@ standard input and standard error are both connected to terminals (as
 determined by isatty(3)), or one started with the ‘-i’ option.  *Note
 Interactive Shells::, for more information.
 
+   A “non-interactive shell” is, not surprisingly, one that does not
+satisfy the tests for interactivity given above.  A non-interactive
+shell is usually started to run commands from a script file supplied as
+an argument (*note Shell Scripts::) or from a string supplied with the
+‘-c’ option.
+
    If arguments remain after option processing, and neither the ‘-c’ nor
 the ‘-s’ option has been supplied, the first argument is treated as the
 name of a file containing shell commands (*note Shell Scripts::).  When
@@ -6677,6 +6683,22 @@ If no commands are executed, the exit status is 0.  Bash first attempts
 to open the file in the current directory, and, if no file is found,
 searches the directories in ‘PATH’ for the script.
 
+   For example, the following command starts an interactive shell:
+
+     bash
+
+whereas this command will read and execute commands from ‘filename’:
+
+     bash filename
+
+This command will execute ‘echo hello’:
+
+     bash -c 'echo hello'
+
+and this will execute the same command read from the standard input:
+
+     echo echo hello | bash
+
 \1f
 File: bash.info,  Node: Bash Startup Files,  Next: Interactive Shells,  Prev: Invoking Bash,  Up: Bash Features
 
@@ -6684,8 +6706,8 @@ File: bash.info,  Node: Bash Startup Files,  Next: Interactive Shells,  Prev: In
 ======================
 
 This section describes how Bash executes its startup files.  If any of
-the files exist but cannot be read, Bash reports an error.  Tildes are
-expanded in filenames as described above under Tilde Expansion (*note
+the files exist but cannot be read, Bash reports an error.  Tildes in
+filenames are expanded as described above under Tilde Expansion (*note
 Tilde Expansion::).
 
    Interactive shells are described in *note Interactive Shells::.
@@ -6763,21 +6785,22 @@ Invoked in POSIX mode
 When Bash is started in POSIX mode, as with the ‘--posix’ command line
 option, it follows the POSIX standard for startup files.  In this mode,
 interactive shells expand the ‘ENV’ variable and read and execute
-commands from the file whose name is the expanded value.  No other
-startup files are read.
+commands from the file whose name is the expanded value.  A posix-mode
+shell does not attempt to read any other startup files, even when
+invoked as a login shell.
 
 Invoked by remote shell daemon
 ..............................
 
 Bash attempts to determine when it is being run with its standard input
-connected to a network connection, as when executed by the historical
-and rarely-seen remote shell daemon, usually ‘rshd’, or the secure shell
-daemon ‘sshd’.  If Bash determines it is being run non-interactively in
+connected to a network connection, as when executed by the secure shell
+daemon ‘sshd’.  or the historical and rarely-seen remote shell daemon,
+usually ‘rshd’.  If Bash determines it is being run non-interactively in
 this fashion, it reads and executes commands from ‘~/.bashrc’, if that
 file exists and is readable.  Bash does not read this file if invoked as
 ‘sh’.  The ‘--norc’ option inhibits this behavior, and the ‘--rcfile’
 option makes Bash use a different file instead of ‘~/.bashrc’, but
-neither ‘rshd’ nor ‘sshd’ generally invoke the shell with those options
+neither ‘sshd’ nor ‘rshd’ generally invoke the shell with those options
 or allow them to be specified.
 
 Invoked with unequal effective and real UID/GIDs
@@ -6789,8 +6812,8 @@ files are read, shell functions are not inherited from the environment,
 the ‘SHELLOPTS’, ‘BASHOPTS’, ‘CDPATH’, and ‘GLOBIGNORE’ variables, if
 they appear in the environment, are ignored, and the effective user id
 is set to the real user id.  If the ‘-p’ option is supplied at
-invocation, the startup behavior is the same, but the effective user id
-is not reset.
+invocation, the startup behavior is the same, but Bash does not reset
+the effective user id.
 
 \1f
 File: bash.info,  Node: Interactive Shells,  Next: Bash Conditional Expressions,  Prev: Bash Startup Files,  Up: Bash Features
@@ -13791,87 +13814,87 @@ Node: Environment\7f140986
 Node: Exit Status\7f142889
 Node: Signals\7f144948
 Node: Shell Scripts\7f149896
-Node: Shell Builtin Commands\7f153194
-Node: Bourne Shell Builtins\7f155535
-Node: Bash Builtins\7f182254
-Node: Modifying Shell Behavior\7f219989
-Node: The Set Builtin\7f220331
-Node: The Shopt Builtin\7f232325
-Node: Special Builtins\7f249378
-Node: Shell Variables\7f250367
-Node: Bourne Shell Variables\7f250801
-Node: Bash Variables\7f253309
-Node: Bash Features\7f292593
-Node: Invoking Bash\7f293607
-Node: Bash Startup Files\7f300191
-Node: Interactive Shells\7f305433
-Node: What is an Interactive Shell?\7f305841
-Node: Is this Shell Interactive?\7f306503
-Node: Interactive Shell Behavior\7f307327
-Node: Bash Conditional Expressions\7f311088
-Node: Shell Arithmetic\7f316505
-Node: Aliases\7f319832
-Node: Arrays\7f322966
-Node: The Directory Stack\7f330668
-Node: Directory Stack Builtins\7f331465
-Node: Controlling the Prompt\7f335910
-Node: The Restricted Shell\7f338794
-Node: Bash POSIX Mode\7f341887
-Node: Shell Compatibility Mode\7f361703
-Node: Job Control\7f370710
-Node: Job Control Basics\7f371167
-Node: Job Control Builtins\7f377535
-Node: Job Control Variables\7f384323
-Node: Command Line Editing\7f385554
-Node: Introduction and Notation\7f387257
-Node: Readline Interaction\7f389609
-Node: Readline Bare Essentials\7f390797
-Node: Readline Movement Commands\7f392605
-Node: Readline Killing Commands\7f393601
-Node: Readline Arguments\7f395624
-Node: Searching\7f396714
-Node: Readline Init File\7f398957
-Node: Readline Init File Syntax\7f400260
-Node: Conditional Init Constructs\7f427211
-Node: Sample Init File\7f431596
-Node: Bindable Readline Commands\7f434716
-Node: Commands For Moving\7f436254
-Node: Commands For History\7f438718
-Node: Commands For Text\7f444109
-Node: Commands For Killing\7f448234
-Node: Numeric Arguments\7f451022
-Node: Commands For Completion\7f452174
-Node: Keyboard Macros\7f457870
-Node: Miscellaneous Commands\7f458571
-Node: Readline vi Mode\7f466114
-Node: Programmable Completion\7f467091
-Node: Programmable Completion Builtins\7f476827
-Node: A Programmable Completion Example\7f488564
-Node: Using History Interactively\7f493909
-Node: Bash History Facilities\7f494590
-Node: Bash History Builtins\7f498325
-Node: History Interaction\7f505920
-Node: Event Designators\7f510870
-Node: Word Designators\7f512448
-Node: Modifiers\7f514840
-Node: Installing Bash\7f516777
-Node: Basic Installation\7f517893
-Node: Compilers and Options\7f521769
-Node: Compiling For Multiple Architectures\7f522519
-Node: Installation Names\7f524272
-Node: Specifying the System Type\7f526506
-Node: Sharing Defaults\7f527252
-Node: Operation Controls\7f527966
-Node: Optional Features\7f528985
-Node: Reporting Bugs\7f541708
-Node: Major Differences From The Bourne Shell\7f543065
-Node: GNU Free Documentation License\7f564492
-Node: Indexes\7f589669
-Node: Builtin Index\7f590120
-Node: Reserved Word Index\7f597218
-Node: Variable Index\7f599663
-Node: Function Index\7f617076
-Node: Concept Index\7f631209
+Node: Shell Builtin Commands\7f153200
+Node: Bourne Shell Builtins\7f155541
+Node: Bash Builtins\7f182260
+Node: Modifying Shell Behavior\7f219995
+Node: The Set Builtin\7f220337
+Node: The Shopt Builtin\7f232331
+Node: Special Builtins\7f249384
+Node: Shell Variables\7f250373
+Node: Bourne Shell Variables\7f250807
+Node: Bash Variables\7f253315
+Node: Bash Features\7f292599
+Node: Invoking Bash\7f293613
+Node: Bash Startup Files\7f300843
+Node: Interactive Shells\7f306165
+Node: What is an Interactive Shell?\7f306573
+Node: Is this Shell Interactive?\7f307235
+Node: Interactive Shell Behavior\7f308059
+Node: Bash Conditional Expressions\7f311820
+Node: Shell Arithmetic\7f317237
+Node: Aliases\7f320564
+Node: Arrays\7f323698
+Node: The Directory Stack\7f331400
+Node: Directory Stack Builtins\7f332197
+Node: Controlling the Prompt\7f336642
+Node: The Restricted Shell\7f339526
+Node: Bash POSIX Mode\7f342619
+Node: Shell Compatibility Mode\7f362435
+Node: Job Control\7f371442
+Node: Job Control Basics\7f371899
+Node: Job Control Builtins\7f378267
+Node: Job Control Variables\7f385055
+Node: Command Line Editing\7f386286
+Node: Introduction and Notation\7f387989
+Node: Readline Interaction\7f390341
+Node: Readline Bare Essentials\7f391529
+Node: Readline Movement Commands\7f393337
+Node: Readline Killing Commands\7f394333
+Node: Readline Arguments\7f396356
+Node: Searching\7f397446
+Node: Readline Init File\7f399689
+Node: Readline Init File Syntax\7f400992
+Node: Conditional Init Constructs\7f427943
+Node: Sample Init File\7f432328
+Node: Bindable Readline Commands\7f435448
+Node: Commands For Moving\7f436986
+Node: Commands For History\7f439450
+Node: Commands For Text\7f444841
+Node: Commands For Killing\7f448966
+Node: Numeric Arguments\7f451754
+Node: Commands For Completion\7f452906
+Node: Keyboard Macros\7f458602
+Node: Miscellaneous Commands\7f459303
+Node: Readline vi Mode\7f466846
+Node: Programmable Completion\7f467823
+Node: Programmable Completion Builtins\7f477559
+Node: A Programmable Completion Example\7f489296
+Node: Using History Interactively\7f494641
+Node: Bash History Facilities\7f495322
+Node: Bash History Builtins\7f499057
+Node: History Interaction\7f506652
+Node: Event Designators\7f511602
+Node: Word Designators\7f513180
+Node: Modifiers\7f515572
+Node: Installing Bash\7f517509
+Node: Basic Installation\7f518625
+Node: Compilers and Options\7f522501
+Node: Compiling For Multiple Architectures\7f523251
+Node: Installation Names\7f525004
+Node: Specifying the System Type\7f527238
+Node: Sharing Defaults\7f527984
+Node: Operation Controls\7f528698
+Node: Optional Features\7f529717
+Node: Reporting Bugs\7f542440
+Node: Major Differences From The Bourne Shell\7f543797
+Node: GNU Free Documentation License\7f565224
+Node: Indexes\7f590401
+Node: Builtin Index\7f590852
+Node: Reserved Word Index\7f597950
+Node: Variable Index\7f600395
+Node: Function Index\7f617808
+Node: Concept Index\7f631941
 \1f
 End Tag Table
 
index 84dc06e9057095bae2eb0bb182fe9cef461f47c9..fef0744af977a7da023781be368cdf5938c9e3d1 100644 (file)
Binary files a/doc/bash.pdf and b/doc/bash.pdf differ
index 9e025c4bd895515b4760f907e47e9d69b230e41f..c8c0229c09a3011037f09ee22a88f01a5bc5453d 100644 (file)
 @xrdef{Interactive Shell Behavior-pg}{104}
 @xrdef{Bash Conditional Expressions-title}{Bash Conditional Expressions}
 @xrdef{Bash Conditional Expressions-snt}{Section@tie 6.4}
-@xrdef{Bash Conditional Expressions-pg}{105}
+@xrdef{Bash Conditional Expressions-pg}{106}
 @xrdef{Shell Arithmetic-title}{Shell Arithmetic}
 @xrdef{Shell Arithmetic-snt}{Section@tie 6.5}
-@xrdef{Shell Arithmetic-pg}{107}
+@xrdef{Shell Arithmetic-pg}{108}
 @xrdef{Aliases-title}{Aliases}
 @xrdef{Aliases-snt}{Section@tie 6.6}
 @xrdef{Aliases-pg}{109}
 @xrdef{Job Control-snt}{Chapter@tie 7}
 @xrdef{Job Control Basics-title}{Job Control Basics}
 @xrdef{Job Control Basics-snt}{Section@tie 7.1}
-@xrdef{Job Control-pg}{125}
-@xrdef{Job Control Basics-pg}{125}
+@xrdef{Job Control-pg}{126}
+@xrdef{Job Control Basics-pg}{126}
 @xrdef{Job Control Builtins-title}{Job Control Builtins}
 @xrdef{Job Control Builtins-snt}{Section@tie 7.2}
-@xrdef{Job Control Builtins-pg}{126}
+@xrdef{Job Control Builtins-pg}{127}
 @xrdef{Job Control Variables-title}{Job Control Variables}
 @xrdef{Job Control Variables-snt}{Section@tie 7.3}
-@xrdef{Job Control Variables-pg}{129}
+@xrdef{Job Control Variables-pg}{130}
 @xrdef{Command Line Editing-title}{Command Line Editing}
 @xrdef{Command Line Editing-snt}{Chapter@tie 8}
 @xrdef{Introduction and Notation-title}{Introduction to Line Editing}
 @xrdef{Introduction and Notation-snt}{Section@tie 8.1}
 @xrdef{Readline Interaction-title}{Readline Interaction}
 @xrdef{Readline Interaction-snt}{Section@tie 8.2}
-@xrdef{Command Line Editing-pg}{130}
-@xrdef{Introduction and Notation-pg}{130}
-@xrdef{Readline Interaction-pg}{130}
+@xrdef{Command Line Editing-pg}{131}
+@xrdef{Introduction and Notation-pg}{131}
+@xrdef{Readline Interaction-pg}{131}
 @xrdef{Readline Bare Essentials-title}{Readline Bare Essentials}
 @xrdef{Readline Bare Essentials-snt}{Section@tie 8.2.1}
 @xrdef{Readline Movement Commands-title}{Readline Movement Commands}
 @xrdef{Readline Movement Commands-snt}{Section@tie 8.2.2}
-@xrdef{Readline Bare Essentials-pg}{131}
-@xrdef{Readline Movement Commands-pg}{131}
+@xrdef{Readline Bare Essentials-pg}{132}
+@xrdef{Readline Movement Commands-pg}{132}
 @xrdef{Readline Killing Commands-title}{Readline Killing Commands}
 @xrdef{Readline Killing Commands-snt}{Section@tie 8.2.3}
 @xrdef{Readline Arguments-title}{Readline Arguments}
 @xrdef{Readline Arguments-snt}{Section@tie 8.2.4}
 @xrdef{Searching-title}{Searching for Commands in the History}
 @xrdef{Searching-snt}{Section@tie 8.2.5}
-@xrdef{Readline Killing Commands-pg}{132}
-@xrdef{Readline Arguments-pg}{132}
+@xrdef{Readline Killing Commands-pg}{133}
+@xrdef{Readline Arguments-pg}{133}
 @xrdef{Readline Init File-title}{Readline Init File}
 @xrdef{Readline Init File-snt}{Section@tie 8.3}
 @xrdef{Readline Init File Syntax-title}{Readline Init File Syntax}
 @xrdef{Readline Init File Syntax-snt}{Section@tie 8.3.1}
-@xrdef{Searching-pg}{133}
-@xrdef{Readline Init File-pg}{133}
-@xrdef{Readline Init File Syntax-pg}{133}
+@xrdef{Searching-pg}{134}
+@xrdef{Readline Init File-pg}{134}
+@xrdef{Readline Init File Syntax-pg}{134}
 @xrdef{Conditional Init Constructs-title}{Conditional Init Constructs}
 @xrdef{Conditional Init Constructs-snt}{Section@tie 8.3.2}
-@xrdef{Conditional Init Constructs-pg}{143}
+@xrdef{Conditional Init Constructs-pg}{144}
 @xrdef{Sample Init File-title}{Sample Init File}
 @xrdef{Sample Init File-snt}{Section@tie 8.3.3}
-@xrdef{Sample Init File-pg}{144}
+@xrdef{Sample Init File-pg}{145}
 @xrdef{Bindable Readline Commands-title}{Bindable Readline Commands}
 @xrdef{Bindable Readline Commands-snt}{Section@tie 8.4}
 @xrdef{Commands For Moving-title}{Commands For Moving}
 @xrdef{Commands For Moving-snt}{Section@tie 8.4.1}
-@xrdef{Bindable Readline Commands-pg}{147}
-@xrdef{Commands For Moving-pg}{147}
+@xrdef{Bindable Readline Commands-pg}{148}
+@xrdef{Commands For Moving-pg}{148}
 @xrdef{Commands For History-title}{Commands For Manipulating The History}
 @xrdef{Commands For History-snt}{Section@tie 8.4.2}
-@xrdef{Commands For History-pg}{148}
+@xrdef{Commands For History-pg}{149}
 @xrdef{Commands For Text-title}{Commands For Changing Text}
 @xrdef{Commands For Text-snt}{Section@tie 8.4.3}
-@xrdef{Commands For Text-pg}{150}
+@xrdef{Commands For Text-pg}{151}
 @xrdef{Commands For Killing-title}{Killing And Yanking}
 @xrdef{Commands For Killing-snt}{Section@tie 8.4.4}
-@xrdef{Commands For Killing-pg}{151}
+@xrdef{Commands For Killing-pg}{152}
 @xrdef{Numeric Arguments-title}{Specifying Numeric Arguments}
 @xrdef{Numeric Arguments-snt}{Section@tie 8.4.5}
 @xrdef{Commands For Completion-title}{Letting Readline Type For You}
 @xrdef{Commands For Completion-snt}{Section@tie 8.4.6}
-@xrdef{Numeric Arguments-pg}{153}
-@xrdef{Commands For Completion-pg}{153}
+@xrdef{Numeric Arguments-pg}{154}
+@xrdef{Commands For Completion-pg}{154}
 @xrdef{Keyboard Macros-title}{Keyboard Macros}
 @xrdef{Keyboard Macros-snt}{Section@tie 8.4.7}
 @xrdef{Miscellaneous Commands-title}{Some Miscellaneous Commands}
 @xrdef{Miscellaneous Commands-snt}{Section@tie 8.4.8}
-@xrdef{Keyboard Macros-pg}{155}
-@xrdef{Miscellaneous Commands-pg}{155}
+@xrdef{Keyboard Macros-pg}{156}
+@xrdef{Miscellaneous Commands-pg}{156}
 @xrdef{Readline vi Mode-title}{Readline vi Mode}
 @xrdef{Readline vi Mode-snt}{Section@tie 8.5}
 @xrdef{Programmable Completion-title}{Programmable Completion}
 @xrdef{Programmable Completion-snt}{Section@tie 8.6}
-@xrdef{Readline vi Mode-pg}{158}
-@xrdef{Programmable Completion-pg}{158}
+@xrdef{Readline vi Mode-pg}{159}
+@xrdef{Programmable Completion-pg}{159}
 @xrdef{Programmable Completion Builtins-title}{Programmable Completion Builtins}
 @xrdef{Programmable Completion Builtins-snt}{Section@tie 8.7}
-@xrdef{Programmable Completion Builtins-pg}{161}
+@xrdef{Programmable Completion Builtins-pg}{162}
 @xrdef{A Programmable Completion Example-title}{A Programmable Completion Example}
 @xrdef{A Programmable Completion Example-snt}{Section@tie 8.8}
-@xrdef{A Programmable Completion Example-pg}{165}
+@xrdef{A Programmable Completion Example-pg}{166}
 @xrdef{Using History Interactively-title}{Using History Interactively}
 @xrdef{Using History Interactively-snt}{Chapter@tie 9}
 @xrdef{Bash History Facilities-title}{Bash History Facilities}
 @xrdef{Bash History Facilities-snt}{Section@tie 9.1}
-@xrdef{Using History Interactively-pg}{168}
-@xrdef{Bash History Facilities-pg}{168}
+@xrdef{Using History Interactively-pg}{169}
+@xrdef{Bash History Facilities-pg}{169}
 @xrdef{Bash History Builtins-title}{Bash History Builtins}
 @xrdef{Bash History Builtins-snt}{Section@tie 9.2}
-@xrdef{Bash History Builtins-pg}{169}
+@xrdef{Bash History Builtins-pg}{170}
 @xrdef{History Interaction-title}{History Expansion}
 @xrdef{History Interaction-snt}{Section@tie 9.3}
-@xrdef{History Interaction-pg}{171}
+@xrdef{History Interaction-pg}{172}
 @xrdef{Event Designators-title}{Event Designators}
 @xrdef{Event Designators-snt}{Section@tie 9.3.1}
-@xrdef{Event Designators-pg}{172}
+@xrdef{Event Designators-pg}{173}
 @xrdef{Word Designators-title}{Word Designators}
 @xrdef{Word Designators-snt}{Section@tie 9.3.2}
-@xrdef{Word Designators-pg}{173}
+@xrdef{Word Designators-pg}{174}
 @xrdef{Modifiers-title}{Modifiers}
 @xrdef{Modifiers-snt}{Section@tie 9.3.3}
-@xrdef{Modifiers-pg}{174}
+@xrdef{Modifiers-pg}{175}
 @xrdef{Installing Bash-title}{Installing Bash}
 @xrdef{Installing Bash-snt}{Chapter@tie 10}
 @xrdef{Basic Installation-title}{Basic Installation}
 @xrdef{Basic Installation-snt}{Section@tie 10.1}
-@xrdef{Installing Bash-pg}{175}
-@xrdef{Basic Installation-pg}{175}
+@xrdef{Installing Bash-pg}{176}
+@xrdef{Basic Installation-pg}{176}
 @xrdef{Compilers and Options-title}{Compilers and Options}
 @xrdef{Compilers and Options-snt}{Section@tie 10.2}
 @xrdef{Compiling For Multiple Architectures-title}{Compiling For Multiple Architectures}
 @xrdef{Compiling For Multiple Architectures-snt}{Section@tie 10.3}
 @xrdef{Installation Names-title}{Installation Names}
 @xrdef{Installation Names-snt}{Section@tie 10.4}
-@xrdef{Compilers and Options-pg}{176}
-@xrdef{Compiling For Multiple Architectures-pg}{176}
+@xrdef{Compilers and Options-pg}{177}
+@xrdef{Compiling For Multiple Architectures-pg}{177}
 @xrdef{Specifying the System Type-title}{Specifying the System Type}
 @xrdef{Specifying the System Type-snt}{Section@tie 10.5}
 @xrdef{Sharing Defaults-title}{Sharing Defaults}
 @xrdef{Sharing Defaults-snt}{Section@tie 10.6}
 @xrdef{Operation Controls-title}{Operation Controls}
 @xrdef{Operation Controls-snt}{Section@tie 10.7}
-@xrdef{Installation Names-pg}{177}
-@xrdef{Specifying the System Type-pg}{177}
-@xrdef{Sharing Defaults-pg}{177}
+@xrdef{Installation Names-pg}{178}
+@xrdef{Specifying the System Type-pg}{178}
+@xrdef{Sharing Defaults-pg}{178}
 @xrdef{Optional Features-title}{Optional Features}
 @xrdef{Optional Features-snt}{Section@tie 10.8}
-@xrdef{Operation Controls-pg}{178}
-@xrdef{Optional Features-pg}{178}
+@xrdef{Operation Controls-pg}{179}
+@xrdef{Optional Features-pg}{179}
 @xrdef{Reporting Bugs-title}{Reporting Bugs}
 @xrdef{Reporting Bugs-snt}{Appendix@tie @char65{}}
-@xrdef{Reporting Bugs-pg}{184}
+@xrdef{Reporting Bugs-pg}{185}
 @xrdef{Major Differences From The Bourne Shell-title}{Major Differences From The Bourne Shell}
 @xrdef{Major Differences From The Bourne Shell-snt}{Appendix@tie @char66{}}
-@xrdef{Major Differences From The Bourne Shell-pg}{185}
+@xrdef{Major Differences From The Bourne Shell-pg}{186}
 @xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
 @xrdef{GNU Free Documentation License-snt}{Appendix@tie @char67{}}
-@xrdef{GNU Free Documentation License-pg}{192}
+@xrdef{GNU Free Documentation License-pg}{193}
 @xrdef{Indexes-title}{Indexes}
 @xrdef{Indexes-snt}{Appendix@tie @char68{}}
 @xrdef{Builtin Index-title}{Index of Shell Builtin Commands}
 @xrdef{Builtin Index-snt}{Section@tie @char68.1}
-@xrdef{Indexes-pg}{200}
-@xrdef{Builtin Index-pg}{200}
+@xrdef{Indexes-pg}{201}
+@xrdef{Builtin Index-pg}{201}
 @xrdef{Reserved Word Index-title}{Index of Shell Reserved Words}
 @xrdef{Reserved Word Index-snt}{Section@tie @char68.2}
 @xrdef{Variable Index-title}{Parameter and Variable Index}
 @xrdef{Variable Index-snt}{Section@tie @char68.3}
-@xrdef{Reserved Word Index-pg}{201}
-@xrdef{Variable Index-pg}{202}
+@xrdef{Reserved Word Index-pg}{202}
+@xrdef{Variable Index-pg}{203}
 @xrdef{Function Index-title}{Function Index}
 @xrdef{Function Index-snt}{Section@tie @char68.4}
-@xrdef{Function Index-pg}{204}
+@xrdef{Function Index-pg}{205}
 @xrdef{Concept Index-title}{Concept Index}
 @xrdef{Concept Index-snt}{Section@tie @char68.5}
-@xrdef{Concept Index-pg}{206}
+@xrdef{Concept Index-pg}{207}
index c7a7f16e3f8f7a2c6cf736841819eb601fa3b187..3eaf5dca715bcf781468b5613ba9b078ed426e99 100644 (file)
 \entry{dirs}{112}{\code {dirs}}
 \entry{popd}{113}{\code {popd}}
 \entry{pushd}{113}{\code {pushd}}
-\entry{bg}{126}{\code {bg}}
-\entry{fg}{127}{\code {fg}}
-\entry{jobs}{127}{\code {jobs}}
-\entry{kill}{127}{\code {kill}}
-\entry{wait}{128}{\code {wait}}
-\entry{disown}{128}{\code {disown}}
-\entry{suspend}{128}{\code {suspend}}
-\entry{compgen}{161}{\code {compgen}}
-\entry{complete}{162}{\code {complete}}
-\entry{compopt}{165}{\code {compopt}}
-\entry{fc}{169}{\code {fc}}
-\entry{history}{170}{\code {history}}
+\entry{bg}{127}{\code {bg}}
+\entry{fg}{128}{\code {fg}}
+\entry{jobs}{128}{\code {jobs}}
+\entry{kill}{128}{\code {kill}}
+\entry{wait}{129}{\code {wait}}
+\entry{disown}{129}{\code {disown}}
+\entry{suspend}{129}{\code {suspend}}
+\entry{compgen}{162}{\code {compgen}}
+\entry{complete}{163}{\code {complete}}
+\entry{compopt}{166}{\code {compopt}}
+\entry{fc}{170}{\code {fc}}
+\entry{history}{171}{\code {history}}
index 0296157d5de8c60ba54d51394af0a9af834ea627..eb3d1c3712924e349d6202b461b3599771974fe6 100644 (file)
@@ -7,7 +7,7 @@
 \initial {A}
 \entry{\code {alias}}{61}
 \initial {B}
-\entry{\code {bg}}{126}
+\entry{\code {bg}}{127}
 \entry{\code {bind}}{61}
 \entry{\code {break}}{53}
 \entry{\code {builtin}}{63}
 \entry{\code {caller}}{63}
 \entry{\code {cd}}{53}
 \entry{\code {command}}{63}
-\entry{\code {compgen}}{161}
-\entry{\code {complete}}{162}
-\entry{\code {compopt}}{165}
+\entry{\code {compgen}}{162}
+\entry{\code {complete}}{163}
+\entry{\code {compopt}}{166}
 \entry{\code {continue}}{54}
 \initial {D}
 \entry{\code {declare}}{64}
 \entry{\code {dirs}}{112}
-\entry{\code {disown}}{128}
+\entry{\code {disown}}{129}
 \initial {E}
 \entry{\code {echo}}{65}
 \entry{\code {enable}}{66}
 \entry{\code {export}}{54}
 \initial {F}
 \entry{\code {false}}{55}
-\entry{\code {fc}}{169}
-\entry{\code {fg}}{127}
+\entry{\code {fc}}{170}
+\entry{\code {fg}}{128}
 \initial {G}
 \entry{\code {getopts}}{55}
 \initial {H}
 \entry{\code {hash}}{56}
 \entry{\code {help}}{67}
-\entry{\code {history}}{170}
+\entry{\code {history}}{171}
 \initial {J}
-\entry{\code {jobs}}{127}
+\entry{\code {jobs}}{128}
 \initial {K}
-\entry{\code {kill}}{127}
+\entry{\code {kill}}{128}
 \initial {L}
 \entry{\code {let}}{67}
 \entry{\code {local}}{67}
@@ -65,7 +65,7 @@
 \entry{\code {shift}}{57}
 \entry{\code {shopt}}{78}
 \entry{\code {source}}{72}
-\entry{\code {suspend}}{128}
+\entry{\code {suspend}}{129}
 \initial {T}
 \entry{\code {test}}{57}
 \entry{\code {times}}{59}
@@ -79,4 +79,4 @@
 \entry{\code {unalias}}{74}
 \entry{\code {unset}}{61}
 \initial {W}
-\entry{\code {wait}}{128}
+\entry{\code {wait}}{129}
index 431e3ba78a040c95538e688c299632fdfa8846bb..cea96b183d5b2b31f7adecc2585492cdf21f2b82 100644 (file)
 \entry{startup files}{102}{startup files}
 \entry{interactive shell}{104}{interactive shell}
 \entry{shell, interactive}{104}{shell, interactive}
-\entry{expressions, conditional}{105}{expressions, conditional}
-\entry{arithmetic, shell}{107}{arithmetic, shell}
-\entry{shell arithmetic}{107}{shell arithmetic}
-\entry{expressions, arithmetic}{107}{expressions, arithmetic}
-\entry{evaluation, arithmetic}{107}{evaluation, arithmetic}
-\entry{arithmetic evaluation}{107}{arithmetic evaluation}
+\entry{expressions, conditional}{106}{expressions, conditional}
+\entry{arithmetic, shell}{108}{arithmetic, shell}
+\entry{shell arithmetic}{108}{shell arithmetic}
+\entry{expressions, arithmetic}{108}{expressions, arithmetic}
+\entry{evaluation, arithmetic}{108}{evaluation, arithmetic}
+\entry{arithmetic evaluation}{108}{arithmetic evaluation}
 \entry{arithmetic operators}{108}{arithmetic operators}
 \entry{unary arithmetic operators}{108}{unary arithmetic operators}
 \entry{binary arithmetic operators}{108}{binary arithmetic operators}
 \entry{POSIX Mode}{117}{POSIX Mode}
 \entry{Compatibility Level}{122}{Compatibility Level}
 \entry{Compatibility Mode}{122}{Compatibility Mode}
-\entry{job control}{125}{job control}
-\entry{foreground}{125}{foreground}
-\entry{background}{125}{background}
-\entry{suspending jobs}{125}{suspending jobs}
-\entry{Readline, how to use}{129}{Readline, how to use}
-\entry{interaction, readline}{130}{interaction, readline}
-\entry{notation, readline}{131}{notation, readline}
-\entry{command editing}{131}{command editing}
-\entry{editing command lines}{131}{editing command lines}
-\entry{killing text}{132}{killing text}
-\entry{yanking text}{132}{yanking text}
-\entry{kill ring}{132}{kill ring}
-\entry{initialization file, readline}{133}{initialization file, readline}
-\entry{variables, readline}{134}{variables, readline}
-\entry{programmable completion}{158}{programmable completion}
-\entry{completion builtins}{161}{completion builtins}
-\entry{History, how to use}{167}{History, how to use}
-\entry{command history}{168}{command history}
-\entry{history list}{168}{history list}
-\entry{history builtins}{169}{history builtins}
-\entry{history expansion}{171}{history expansion}
-\entry{event designators}{172}{event designators}
-\entry{history events}{172}{history events}
-\entry{installation}{175}{installation}
-\entry{configuration}{175}{configuration}
-\entry{Bash installation}{175}{Bash installation}
-\entry{Bash configuration}{175}{Bash configuration}
+\entry{job control}{126}{job control}
+\entry{foreground}{126}{foreground}
+\entry{background}{126}{background}
+\entry{suspending jobs}{126}{suspending jobs}
+\entry{Readline, how to use}{130}{Readline, how to use}
+\entry{interaction, readline}{131}{interaction, readline}
+\entry{notation, readline}{132}{notation, readline}
+\entry{command editing}{132}{command editing}
+\entry{editing command lines}{132}{editing command lines}
+\entry{killing text}{133}{killing text}
+\entry{yanking text}{133}{yanking text}
+\entry{kill ring}{133}{kill ring}
+\entry{initialization file, readline}{134}{initialization file, readline}
+\entry{variables, readline}{135}{variables, readline}
+\entry{programmable completion}{159}{programmable completion}
+\entry{completion builtins}{162}{completion builtins}
+\entry{History, how to use}{168}{History, how to use}
+\entry{command history}{169}{command history}
+\entry{history list}{169}{history list}
+\entry{history builtins}{170}{history builtins}
+\entry{history expansion}{172}{history expansion}
+\entry{event designators}{173}{event designators}
+\entry{history events}{173}{history events}
+\entry{installation}{176}{installation}
+\entry{configuration}{176}{configuration}
+\entry{Bash installation}{176}{Bash installation}
+\entry{Bash configuration}{176}{Bash configuration}
index ae331a6e7c919d8e18316b069eed6ae860b39ba8..a2017be7cabe3721b0c6ce4addd75ceb552db794 100644 (file)
@@ -1,24 +1,24 @@
 \initial {A}
 \entry{alias expansion}{109}
-\entry{arithmetic evaluation}{107}
+\entry{arithmetic evaluation}{108}
 \entry{arithmetic expansion}{37}
 \entry{arithmetic operators}{108}
-\entry{arithmetic, shell}{107}
+\entry{arithmetic, shell}{108}
 \entry{arrays}{110}
 \initial {B}
-\entry{background}{125}
-\entry{Bash configuration}{175}
-\entry{Bash installation}{175}
+\entry{background}{126}
+\entry{Bash configuration}{176}
+\entry{Bash installation}{176}
 \entry{binary arithmetic operators}{108}
 \entry{bitwise arithmetic operators}{108}
 \entry{Bourne shell}{5}
 \entry{brace expansion}{25}
 \entry{builtin}{3}
 \initial {C}
-\entry{command editing}{131}
+\entry{command editing}{132}
 \entry{command execution}{46}
 \entry{command expansion}{45}
-\entry{command history}{168}
+\entry{command history}{169}
 \entry{command search}{46}
 \entry{command substitution}{36}
 \entry{command timing}{10}
 \entry{comments, shell}{9}
 \entry{Compatibility Level}{122}
 \entry{Compatibility Mode}{122}
-\entry{completion builtins}{161}
+\entry{completion builtins}{162}
 \entry{conditional arithmetic operator}{108}
-\entry{configuration}{175}
+\entry{configuration}{176}
 \entry{control operator}{3}
 \entry{coprocess}{18}
 \initial {D}
 \entry{directory stack}{112}
 \entry{dollar-single quote quoting}{6}
 \initial {E}
-\entry{editing command lines}{131}
+\entry{editing command lines}{132}
 \entry{environment}{48}
-\entry{evaluation, arithmetic}{107}
-\entry{event designators}{172}
+\entry{evaluation, arithmetic}{108}
+\entry{event designators}{173}
 \entry{execution environment}{47}
 \entry{exit status}{3, 48}
 \entry{expansion}{25}
 \entry{expansion, parameter}{27}
 \entry{expansion, pathname}{39}
 \entry{expansion, tilde}{26}
-\entry{expressions, arithmetic}{107}
-\entry{expressions, conditional}{105}
+\entry{expressions, arithmetic}{108}
+\entry{expressions, conditional}{106}
 \initial {F}
 \entry{field}{3}
 \entry{filename}{3}
 \entry{filename expansion}{39}
-\entry{foreground}{125}
+\entry{foreground}{126}
 \entry{functions, shell}{19}
 \initial {H}
-\entry{history builtins}{169}
-\entry{history events}{172}
-\entry{history expansion}{171}
-\entry{history list}{168}
-\entry{History, how to use}{167}
+\entry{history builtins}{170}
+\entry{history events}{173}
+\entry{history expansion}{172}
+\entry{history list}{169}
+\entry{History, how to use}{168}
 \initial {I}
 \entry{identifier}{3}
-\entry{initialization file, readline}{133}
-\entry{installation}{175}
-\entry{interaction, readline}{130}
+\entry{initialization file, readline}{134}
+\entry{installation}{176}
+\entry{interaction, readline}{131}
 \entry{interactive shell}{102, 104}
 \entry{internationalization}{7}
 \entry{internationalized scripts}{8}
 \initial {J}
 \entry{job}{3}
-\entry{job control}{3, 125}
+\entry{job control}{3, 126}
 \initial {K}
-\entry{kill ring}{132}
-\entry{killing text}{132}
+\entry{kill ring}{133}
+\entry{killing text}{133}
 \initial {L}
 \entry{localization}{7}
 \entry{login shell}{102}
@@ -92,7 +92,7 @@
 \initial {N}
 \entry{name}{3}
 \entry{native languages}{7}
-\entry{notation, readline}{131}
+\entry{notation, readline}{132}
 \initial {O}
 \entry{operator, shell}{3}
 \initial {P}
 \entry{process group}{3}
 \entry{process group ID}{3}
 \entry{process substitution}{38}
-\entry{programmable completion}{158}
+\entry{programmable completion}{159}
 \entry{prompting}{114}
 \initial {Q}
 \entry{quoting}{6}
 \entry{quoting, ANSI}{6}
 \initial {R}
-\entry{Readline, how to use}{129}
+\entry{Readline, how to use}{130}
 \entry{redirection}{41}
 \entry{reserved word}{4}
 \entry{reserved words}{9}
 \entry{restricted shell}{115}
 \entry{return status}{4}
 \initial {S}
-\entry{shell arithmetic}{107}
+\entry{shell arithmetic}{108}
 \entry{shell function}{19}
 \entry{shell script}{50}
 \entry{shell variable}{22}
 \entry{special builtin}{4, 85}
 \entry{startup files}{102}
 \entry{string translations}{8}
-\entry{suspending jobs}{125}
+\entry{suspending jobs}{126}
 \initial {T}
 \entry{tilde expansion}{26}
 \entry{token}{4}
 \entry{unary arithmetic operators}{108}
 \initial {V}
 \entry{variable, shell}{22}
-\entry{variables, readline}{134}
+\entry{variables, readline}{135}
 \initial {W}
 \entry{word}{4}
 \entry{word splitting}{38}
 \initial {Y}
-\entry{yanking text}{132}
+\entry{yanking text}{133}
index fd2e5855d038c745ba8e48bb768ed8f9073f13cd..24cfbfdb371473875dd0146c7657d081a22a984c 100644 (file)
-\entry{beginning-of-line (C-a)}{147}{\code {beginning-of-line (C-a)}}
-\entry{end-of-line (C-e)}{147}{\code {end-of-line (C-e)}}
-\entry{forward-char (C-f)}{147}{\code {forward-char (C-f)}}
-\entry{backward-char (C-b)}{147}{\code {backward-char (C-b)}}
-\entry{forward-word (M-f)}{147}{\code {forward-word (M-f)}}
-\entry{backward-word (M-b)}{147}{\code {backward-word (M-b)}}
-\entry{shell-forward-word (M-C-f)}{147}{\code {shell-forward-word (M-C-f)}}
-\entry{shell-backward-word (M-C-b)}{147}{\code {shell-backward-word (M-C-b)}}
-\entry{previous-screen-line ()}{148}{\code {previous-screen-line ()}}
-\entry{next-screen-line ()}{148}{\code {next-screen-line ()}}
-\entry{clear-display (M-C-l)}{148}{\code {clear-display (M-C-l)}}
-\entry{clear-screen (C-l)}{148}{\code {clear-screen (C-l)}}
-\entry{redraw-current-line ()}{148}{\code {redraw-current-line ()}}
-\entry{accept-line (Newline or Return)}{148}{\code {accept-line (Newline or Return)}}
-\entry{previous-history (C-p)}{148}{\code {previous-history (C-p)}}
-\entry{next-history (C-n)}{148}{\code {next-history (C-n)}}
-\entry{beginning-of-history (M-<)}{148}{\code {beginning-of-history (M-<)}}
-\entry{end-of-history (M->)}{148}{\code {end-of-history (M->)}}
-\entry{reverse-search-history (C-r)}{148}{\code {reverse-search-history (C-r)}}
-\entry{forward-search-history (C-s)}{149}{\code {forward-search-history (C-s)}}
-\entry{non-incremental-reverse-search-history (M-p)}{149}{\code {non-incremental-reverse-search-history (M-p)}}
-\entry{non-incremental-forward-search-history (M-n)}{149}{\code {non-incremental-forward-search-history (M-n)}}
-\entry{history-search-backward ()}{149}{\code {history-search-backward ()}}
-\entry{history-search-forward ()}{149}{\code {history-search-forward ()}}
-\entry{history-substring-search-backward ()}{149}{\code {history-substring-search-backward ()}}
-\entry{history-substring-search-forward ()}{149}{\code {history-substring-search-forward ()}}
-\entry{yank-nth-arg (M-C-y)}{149}{\code {yank-nth-arg (M-C-y)}}
-\entry{yank-last-arg (M-. or M-_)}{149}{\code {yank-last-arg (M-. or M-_)}}
-\entry{operate-and-get-next (C-o)}{150}{\code {operate-and-get-next (C-o)}}
-\entry{fetch-history ()}{150}{\code {fetch-history ()}}
-\entry{end-of-file (usually C-d)}{150}{\code {\i {end-of-file} (usually C-d)}}
-\entry{delete-char (C-d)}{150}{\code {delete-char (C-d)}}
-\entry{backward-delete-char (Rubout)}{150}{\code {backward-delete-char (Rubout)}}
-\entry{forward-backward-delete-char ()}{150}{\code {forward-backward-delete-char ()}}
-\entry{quoted-insert (C-q or C-v)}{150}{\code {quoted-insert (C-q or C-v)}}
-\entry{self-insert (a, b, A, 1, !, ...{})}{150}{\code {self-insert (a, b, A, 1, !, \dots {})}}
-\entry{bracketed-paste-begin ()}{150}{\code {bracketed-paste-begin ()}}
-\entry{transpose-chars (C-t)}{151}{\code {transpose-chars (C-t)}}
-\entry{transpose-words (M-t)}{151}{\code {transpose-words (M-t)}}
-\entry{shell-transpose-words (M-C-t)}{151}{\code {shell-transpose-words (M-C-t)}}
-\entry{upcase-word (M-u)}{151}{\code {upcase-word (M-u)}}
-\entry{downcase-word (M-l)}{151}{\code {downcase-word (M-l)}}
-\entry{capitalize-word (M-c)}{151}{\code {capitalize-word (M-c)}}
-\entry{overwrite-mode ()}{151}{\code {overwrite-mode ()}}
-\entry{kill-line (C-k)}{151}{\code {kill-line (C-k)}}
-\entry{backward-kill-line (C-x Rubout)}{152}{\code {backward-kill-line (C-x Rubout)}}
-\entry{unix-line-discard (C-u)}{152}{\code {unix-line-discard (C-u)}}
-\entry{kill-whole-line ()}{152}{\code {kill-whole-line ()}}
-\entry{kill-word (M-d)}{152}{\code {kill-word (M-d)}}
-\entry{backward-kill-word (M-DEL)}{152}{\code {backward-kill-word (M-\key {DEL})}}
-\entry{shell-kill-word (M-C-d)}{152}{\code {shell-kill-word (M-C-d)}}
-\entry{shell-backward-kill-word ()}{152}{\code {shell-backward-kill-word ()}}
-\entry{unix-word-rubout (C-w)}{152}{\code {unix-word-rubout (C-w)}}
-\entry{unix-filename-rubout ()}{152}{\code {unix-filename-rubout ()}}
-\entry{delete-horizontal-space ()}{152}{\code {delete-horizontal-space ()}}
-\entry{kill-region ()}{152}{\code {kill-region ()}}
-\entry{copy-region-as-kill ()}{152}{\code {copy-region-as-kill ()}}
-\entry{copy-backward-word ()}{152}{\code {copy-backward-word ()}}
-\entry{copy-forward-word ()}{152}{\code {copy-forward-word ()}}
-\entry{yank (C-y)}{152}{\code {yank (C-y)}}
-\entry{yank-pop (M-y)}{153}{\code {yank-pop (M-y)}}
-\entry{digit-argument (M-0, M-1, ...{} M--)}{153}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
-\entry{universal-argument ()}{153}{\code {universal-argument ()}}
-\entry{complete (TAB)}{153}{\code {complete (\key {TAB})}}
-\entry{possible-completions (M-?)}{153}{\code {possible-completions (M-?)}}
-\entry{insert-completions (M-*)}{153}{\code {insert-completions (M-*)}}
-\entry{menu-complete ()}{153}{\code {menu-complete ()}}
-\entry{menu-complete-backward ()}{154}{\code {menu-complete-backward ()}}
-\entry{export-completions ()}{154}{\code {export-completions ()}}
-\entry{delete-char-or-list ()}{154}{\code {delete-char-or-list ()}}
-\entry{complete-filename (M-/)}{154}{\code {complete-filename (M-/)}}
-\entry{possible-filename-completions (C-x /)}{154}{\code {possible-filename-completions (C-x /)}}
-\entry{complete-username (M-~)}{154}{\code {complete-username (M-~)}}
-\entry{possible-username-completions (C-x ~)}{154}{\code {possible-username-completions (C-x ~)}}
-\entry{complete-variable (M-$)}{154}{\code {complete-variable (M-$)}}
-\entry{possible-variable-completions (C-x $)}{154}{\code {possible-variable-completions (C-x $)}}
-\entry{complete-hostname (M-@)}{154}{\code {complete-hostname (M-@)}}
-\entry{possible-hostname-completions (C-x @)}{155}{\code {possible-hostname-completions (C-x @)}}
-\entry{complete-command (M-!)}{155}{\code {complete-command (M-!)}}
-\entry{possible-command-completions (C-x !)}{155}{\code {possible-command-completions (C-x !)}}
-\entry{dynamic-complete-history (M-TAB)}{155}{\code {dynamic-complete-history (M-\key {TAB})}}
-\entry{dabbrev-expand ()}{155}{\code {dabbrev-expand ()}}
-\entry{complete-into-braces (M-{\indexlbrace })}{155}{\code {complete-into-braces (M-{\tt \char 123})}}
-\entry{start-kbd-macro (C-x ()}{155}{\code {start-kbd-macro (C-x ()}}
-\entry{end-kbd-macro (C-x ))}{155}{\code {end-kbd-macro (C-x ))}}
-\entry{call-last-kbd-macro (C-x e)}{155}{\code {call-last-kbd-macro (C-x e)}}
-\entry{print-last-kbd-macro ()}{155}{\code {print-last-kbd-macro ()}}
-\entry{re-read-init-file (C-x C-r)}{155}{\code {re-read-init-file (C-x C-r)}}
-\entry{abort (C-g)}{155}{\code {abort (C-g)}}
-\entry{do-lowercase-version (M-A, M-B, M-x, ...{})}{156}{\code {do-lowercase-version (M-A, M-B, M-\var {x}, \dots {})}}
-\entry{prefix-meta (ESC)}{156}{\code {prefix-meta (\key {ESC})}}
-\entry{undo (C-_ or C-x C-u)}{156}{\code {undo (C-_ or C-x C-u)}}
-\entry{revert-line (M-r)}{156}{\code {revert-line (M-r)}}
-\entry{tilde-expand (M-&)}{156}{\code {tilde-expand (M-&)}}
-\entry{set-mark (C-@)}{156}{\code {set-mark (C-@)}}
-\entry{exchange-point-and-mark (C-x C-x)}{156}{\code {exchange-point-and-mark (C-x C-x)}}
-\entry{character-search (C-])}{156}{\code {character-search (C-])}}
-\entry{character-search-backward (M-C-])}{156}{\code {character-search-backward (M-C-])}}
-\entry{skip-csi-sequence ()}{156}{\code {skip-csi-sequence ()}}
-\entry{insert-comment (M-#)}{156}{\code {insert-comment (M-#)}}
-\entry{dump-functions ()}{157}{\code {dump-functions ()}}
-\entry{dump-variables ()}{157}{\code {dump-variables ()}}
-\entry{dump-macros ()}{157}{\code {dump-macros ()}}
-\entry{execute-named-command (M-x)}{157}{\code {execute-named-command (M-x)}}
-\entry{spell-correct-word (C-x s)}{157}{\code {spell-correct-word (C-x s)}}
-\entry{glob-complete-word (M-g)}{157}{\code {glob-complete-word (M-g)}}
-\entry{glob-expand-word (C-x *)}{157}{\code {glob-expand-word (C-x *)}}
-\entry{glob-list-expansions (C-x g)}{157}{\code {glob-list-expansions (C-x g)}}
-\entry{shell-expand-line (M-C-e)}{157}{\code {shell-expand-line (M-C-e)}}
-\entry{shell-expand-and-requote-line ()}{157}{\code {shell-expand-and-requote-line ()}}
-\entry{history-expand-line (M-^)}{158}{\code {history-expand-line (M-^)}}
-\entry{magic-space ()}{158}{\code {magic-space ()}}
-\entry{alias-expand-line ()}{158}{\code {alias-expand-line ()}}
-\entry{history-and-alias-expand-line ()}{158}{\code {history-and-alias-expand-line ()}}
-\entry{insert-last-argument (M-. or M-_)}{158}{\code {insert-last-argument (M-. or M-_)}}
-\entry{edit-and-execute-command (C-x C-e)}{158}{\code {edit-and-execute-command (C-x C-e)}}
-\entry{display-shell-version (C-x C-v)}{158}{\code {display-shell-version (C-x C-v)}}
+\entry{beginning-of-line (C-a)}{148}{\code {beginning-of-line (C-a)}}
+\entry{end-of-line (C-e)}{148}{\code {end-of-line (C-e)}}
+\entry{forward-char (C-f)}{148}{\code {forward-char (C-f)}}
+\entry{backward-char (C-b)}{148}{\code {backward-char (C-b)}}
+\entry{forward-word (M-f)}{148}{\code {forward-word (M-f)}}
+\entry{backward-word (M-b)}{148}{\code {backward-word (M-b)}}
+\entry{shell-forward-word (M-C-f)}{148}{\code {shell-forward-word (M-C-f)}}
+\entry{shell-backward-word (M-C-b)}{148}{\code {shell-backward-word (M-C-b)}}
+\entry{previous-screen-line ()}{149}{\code {previous-screen-line ()}}
+\entry{next-screen-line ()}{149}{\code {next-screen-line ()}}
+\entry{clear-display (M-C-l)}{149}{\code {clear-display (M-C-l)}}
+\entry{clear-screen (C-l)}{149}{\code {clear-screen (C-l)}}
+\entry{redraw-current-line ()}{149}{\code {redraw-current-line ()}}
+\entry{accept-line (Newline or Return)}{149}{\code {accept-line (Newline or Return)}}
+\entry{previous-history (C-p)}{149}{\code {previous-history (C-p)}}
+\entry{next-history (C-n)}{149}{\code {next-history (C-n)}}
+\entry{beginning-of-history (M-<)}{149}{\code {beginning-of-history (M-<)}}
+\entry{end-of-history (M->)}{149}{\code {end-of-history (M->)}}
+\entry{reverse-search-history (C-r)}{149}{\code {reverse-search-history (C-r)}}
+\entry{forward-search-history (C-s)}{150}{\code {forward-search-history (C-s)}}
+\entry{non-incremental-reverse-search-history (M-p)}{150}{\code {non-incremental-reverse-search-history (M-p)}}
+\entry{non-incremental-forward-search-history (M-n)}{150}{\code {non-incremental-forward-search-history (M-n)}}
+\entry{history-search-backward ()}{150}{\code {history-search-backward ()}}
+\entry{history-search-forward ()}{150}{\code {history-search-forward ()}}
+\entry{history-substring-search-backward ()}{150}{\code {history-substring-search-backward ()}}
+\entry{history-substring-search-forward ()}{150}{\code {history-substring-search-forward ()}}
+\entry{yank-nth-arg (M-C-y)}{150}{\code {yank-nth-arg (M-C-y)}}
+\entry{yank-last-arg (M-. or M-_)}{150}{\code {yank-last-arg (M-. or M-_)}}
+\entry{operate-and-get-next (C-o)}{151}{\code {operate-and-get-next (C-o)}}
+\entry{fetch-history ()}{151}{\code {fetch-history ()}}
+\entry{end-of-file (usually C-d)}{151}{\code {\i {end-of-file} (usually C-d)}}
+\entry{delete-char (C-d)}{151}{\code {delete-char (C-d)}}
+\entry{backward-delete-char (Rubout)}{151}{\code {backward-delete-char (Rubout)}}
+\entry{forward-backward-delete-char ()}{151}{\code {forward-backward-delete-char ()}}
+\entry{quoted-insert (C-q or C-v)}{151}{\code {quoted-insert (C-q or C-v)}}
+\entry{self-insert (a, b, A, 1, !, ...{})}{151}{\code {self-insert (a, b, A, 1, !, \dots {})}}
+\entry{bracketed-paste-begin ()}{151}{\code {bracketed-paste-begin ()}}
+\entry{transpose-chars (C-t)}{152}{\code {transpose-chars (C-t)}}
+\entry{transpose-words (M-t)}{152}{\code {transpose-words (M-t)}}
+\entry{shell-transpose-words (M-C-t)}{152}{\code {shell-transpose-words (M-C-t)}}
+\entry{upcase-word (M-u)}{152}{\code {upcase-word (M-u)}}
+\entry{downcase-word (M-l)}{152}{\code {downcase-word (M-l)}}
+\entry{capitalize-word (M-c)}{152}{\code {capitalize-word (M-c)}}
+\entry{overwrite-mode ()}{152}{\code {overwrite-mode ()}}
+\entry{kill-line (C-k)}{152}{\code {kill-line (C-k)}}
+\entry{backward-kill-line (C-x Rubout)}{153}{\code {backward-kill-line (C-x Rubout)}}
+\entry{unix-line-discard (C-u)}{153}{\code {unix-line-discard (C-u)}}
+\entry{kill-whole-line ()}{153}{\code {kill-whole-line ()}}
+\entry{kill-word (M-d)}{153}{\code {kill-word (M-d)}}
+\entry{backward-kill-word (M-DEL)}{153}{\code {backward-kill-word (M-\key {DEL})}}
+\entry{shell-kill-word (M-C-d)}{153}{\code {shell-kill-word (M-C-d)}}
+\entry{shell-backward-kill-word ()}{153}{\code {shell-backward-kill-word ()}}
+\entry{unix-word-rubout (C-w)}{153}{\code {unix-word-rubout (C-w)}}
+\entry{unix-filename-rubout ()}{153}{\code {unix-filename-rubout ()}}
+\entry{delete-horizontal-space ()}{153}{\code {delete-horizontal-space ()}}
+\entry{kill-region ()}{153}{\code {kill-region ()}}
+\entry{copy-region-as-kill ()}{153}{\code {copy-region-as-kill ()}}
+\entry{copy-backward-word ()}{153}{\code {copy-backward-word ()}}
+\entry{copy-forward-word ()}{153}{\code {copy-forward-word ()}}
+\entry{yank (C-y)}{153}{\code {yank (C-y)}}
+\entry{yank-pop (M-y)}{154}{\code {yank-pop (M-y)}}
+\entry{digit-argument (M-0, M-1, ...{} M--)}{154}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
+\entry{universal-argument ()}{154}{\code {universal-argument ()}}
+\entry{complete (TAB)}{154}{\code {complete (\key {TAB})}}
+\entry{possible-completions (M-?)}{154}{\code {possible-completions (M-?)}}
+\entry{insert-completions (M-*)}{154}{\code {insert-completions (M-*)}}
+\entry{menu-complete ()}{154}{\code {menu-complete ()}}
+\entry{menu-complete-backward ()}{155}{\code {menu-complete-backward ()}}
+\entry{export-completions ()}{155}{\code {export-completions ()}}
+\entry{delete-char-or-list ()}{155}{\code {delete-char-or-list ()}}
+\entry{complete-filename (M-/)}{155}{\code {complete-filename (M-/)}}
+\entry{possible-filename-completions (C-x /)}{155}{\code {possible-filename-completions (C-x /)}}
+\entry{complete-username (M-~)}{155}{\code {complete-username (M-~)}}
+\entry{possible-username-completions (C-x ~)}{155}{\code {possible-username-completions (C-x ~)}}
+\entry{complete-variable (M-$)}{155}{\code {complete-variable (M-$)}}
+\entry{possible-variable-completions (C-x $)}{155}{\code {possible-variable-completions (C-x $)}}
+\entry{complete-hostname (M-@)}{155}{\code {complete-hostname (M-@)}}
+\entry{possible-hostname-completions (C-x @)}{156}{\code {possible-hostname-completions (C-x @)}}
+\entry{complete-command (M-!)}{156}{\code {complete-command (M-!)}}
+\entry{possible-command-completions (C-x !)}{156}{\code {possible-command-completions (C-x !)}}
+\entry{dynamic-complete-history (M-TAB)}{156}{\code {dynamic-complete-history (M-\key {TAB})}}
+\entry{dabbrev-expand ()}{156}{\code {dabbrev-expand ()}}
+\entry{complete-into-braces (M-{\indexlbrace })}{156}{\code {complete-into-braces (M-{\tt \char 123})}}
+\entry{start-kbd-macro (C-x ()}{156}{\code {start-kbd-macro (C-x ()}}
+\entry{end-kbd-macro (C-x ))}{156}{\code {end-kbd-macro (C-x ))}}
+\entry{call-last-kbd-macro (C-x e)}{156}{\code {call-last-kbd-macro (C-x e)}}
+\entry{print-last-kbd-macro ()}{156}{\code {print-last-kbd-macro ()}}
+\entry{re-read-init-file (C-x C-r)}{156}{\code {re-read-init-file (C-x C-r)}}
+\entry{abort (C-g)}{156}{\code {abort (C-g)}}
+\entry{do-lowercase-version (M-A, M-B, M-x, ...{})}{157}{\code {do-lowercase-version (M-A, M-B, M-\var {x}, \dots {})}}
+\entry{prefix-meta (ESC)}{157}{\code {prefix-meta (\key {ESC})}}
+\entry{undo (C-_ or C-x C-u)}{157}{\code {undo (C-_ or C-x C-u)}}
+\entry{revert-line (M-r)}{157}{\code {revert-line (M-r)}}
+\entry{tilde-expand (M-&)}{157}{\code {tilde-expand (M-&)}}
+\entry{set-mark (C-@)}{157}{\code {set-mark (C-@)}}
+\entry{exchange-point-and-mark (C-x C-x)}{157}{\code {exchange-point-and-mark (C-x C-x)}}
+\entry{character-search (C-])}{157}{\code {character-search (C-])}}
+\entry{character-search-backward (M-C-])}{157}{\code {character-search-backward (M-C-])}}
+\entry{skip-csi-sequence ()}{157}{\code {skip-csi-sequence ()}}
+\entry{insert-comment (M-#)}{157}{\code {insert-comment (M-#)}}
+\entry{dump-functions ()}{158}{\code {dump-functions ()}}
+\entry{dump-variables ()}{158}{\code {dump-variables ()}}
+\entry{dump-macros ()}{158}{\code {dump-macros ()}}
+\entry{execute-named-command (M-x)}{158}{\code {execute-named-command (M-x)}}
+\entry{spell-correct-word (C-x s)}{158}{\code {spell-correct-word (C-x s)}}
+\entry{glob-complete-word (M-g)}{158}{\code {glob-complete-word (M-g)}}
+\entry{glob-expand-word (C-x *)}{158}{\code {glob-expand-word (C-x *)}}
+\entry{glob-list-expansions (C-x g)}{158}{\code {glob-list-expansions (C-x g)}}
+\entry{shell-expand-line (M-C-e)}{158}{\code {shell-expand-line (M-C-e)}}
+\entry{shell-expand-and-requote-line ()}{158}{\code {shell-expand-and-requote-line ()}}
+\entry{history-expand-line (M-^)}{159}{\code {history-expand-line (M-^)}}
+\entry{magic-space ()}{159}{\code {magic-space ()}}
+\entry{alias-expand-line ()}{159}{\code {alias-expand-line ()}}
+\entry{history-and-alias-expand-line ()}{159}{\code {history-and-alias-expand-line ()}}
+\entry{insert-last-argument (M-. or M-_)}{159}{\code {insert-last-argument (M-. or M-_)}}
+\entry{edit-and-execute-command (C-x C-e)}{159}{\code {edit-and-execute-command (C-x C-e)}}
+\entry{display-shell-version (C-x C-v)}{159}{\code {display-shell-version (C-x C-v)}}
index ed1685caa8f7d341834a2a5cd9266526e9a4989e..c00245c3ac04e0981afb89420be401ac04099c09 100644 (file)
 \initial {A}
-\entry{\code {abort (C-g)}}{155}
-\entry{\code {accept-line (Newline or Return)}}{148}
-\entry{\code {alias-expand-line ()}}{158}
+\entry{\code {abort (C-g)}}{156}
+\entry{\code {accept-line (Newline or Return)}}{149}
+\entry{\code {alias-expand-line ()}}{159}
 \initial {B}
-\entry{\code {backward-char (C-b)}}{147}
-\entry{\code {backward-delete-char (Rubout)}}{150}
-\entry{\code {backward-kill-line (C-x Rubout)}}{152}
-\entry{\code {backward-kill-word (M-\key {DEL})}}{152}
-\entry{\code {backward-word (M-b)}}{147}
-\entry{\code {beginning-of-history (M-<)}}{148}
-\entry{\code {beginning-of-line (C-a)}}{147}
-\entry{\code {bracketed-paste-begin ()}}{150}
+\entry{\code {backward-char (C-b)}}{148}
+\entry{\code {backward-delete-char (Rubout)}}{151}
+\entry{\code {backward-kill-line (C-x Rubout)}}{153}
+\entry{\code {backward-kill-word (M-\key {DEL})}}{153}
+\entry{\code {backward-word (M-b)}}{148}
+\entry{\code {beginning-of-history (M-<)}}{149}
+\entry{\code {beginning-of-line (C-a)}}{148}
+\entry{\code {bracketed-paste-begin ()}}{151}
 \initial {C}
-\entry{\code {call-last-kbd-macro (C-x e)}}{155}
-\entry{\code {capitalize-word (M-c)}}{151}
-\entry{\code {character-search (C-])}}{156}
-\entry{\code {character-search-backward (M-C-])}}{156}
-\entry{\code {clear-display (M-C-l)}}{148}
-\entry{\code {clear-screen (C-l)}}{148}
-\entry{\code {complete (\key {TAB})}}{153}
-\entry{\code {complete-command (M-!)}}{155}
-\entry{\code {complete-filename (M-/)}}{154}
-\entry{\code {complete-hostname (M-@)}}{154}
-\entry{\code {complete-into-braces (M-{\tt \char 123})}}{155}
-\entry{\code {complete-username (M-~)}}{154}
-\entry{\code {complete-variable (M-$)}}{154}
-\entry{\code {copy-backward-word ()}}{152}
-\entry{\code {copy-forward-word ()}}{152}
-\entry{\code {copy-region-as-kill ()}}{152}
+\entry{\code {call-last-kbd-macro (C-x e)}}{156}
+\entry{\code {capitalize-word (M-c)}}{152}
+\entry{\code {character-search (C-])}}{157}
+\entry{\code {character-search-backward (M-C-])}}{157}
+\entry{\code {clear-display (M-C-l)}}{149}
+\entry{\code {clear-screen (C-l)}}{149}
+\entry{\code {complete (\key {TAB})}}{154}
+\entry{\code {complete-command (M-!)}}{156}
+\entry{\code {complete-filename (M-/)}}{155}
+\entry{\code {complete-hostname (M-@)}}{155}
+\entry{\code {complete-into-braces (M-{\tt \char 123})}}{156}
+\entry{\code {complete-username (M-~)}}{155}
+\entry{\code {complete-variable (M-$)}}{155}
+\entry{\code {copy-backward-word ()}}{153}
+\entry{\code {copy-forward-word ()}}{153}
+\entry{\code {copy-region-as-kill ()}}{153}
 \initial {D}
-\entry{\code {dabbrev-expand ()}}{155}
-\entry{\code {delete-char (C-d)}}{150}
-\entry{\code {delete-char-or-list ()}}{154}
-\entry{\code {delete-horizontal-space ()}}{152}
-\entry{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{153}
-\entry{\code {display-shell-version (C-x C-v)}}{158}
-\entry{\code {do-lowercase-version (M-A, M-B, M-\var {x}, \dots {})}}{156}
-\entry{\code {downcase-word (M-l)}}{151}
-\entry{\code {dump-functions ()}}{157}
-\entry{\code {dump-macros ()}}{157}
-\entry{\code {dump-variables ()}}{157}
-\entry{\code {dynamic-complete-history (M-\key {TAB})}}{155}
+\entry{\code {dabbrev-expand ()}}{156}
+\entry{\code {delete-char (C-d)}}{151}
+\entry{\code {delete-char-or-list ()}}{155}
+\entry{\code {delete-horizontal-space ()}}{153}
+\entry{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{154}
+\entry{\code {display-shell-version (C-x C-v)}}{159}
+\entry{\code {do-lowercase-version (M-A, M-B, M-\var {x}, \dots {})}}{157}
+\entry{\code {downcase-word (M-l)}}{152}
+\entry{\code {dump-functions ()}}{158}
+\entry{\code {dump-macros ()}}{158}
+\entry{\code {dump-variables ()}}{158}
+\entry{\code {dynamic-complete-history (M-\key {TAB})}}{156}
 \initial {E}
-\entry{\code {edit-and-execute-command (C-x C-e)}}{158}
-\entry{\code {end-kbd-macro (C-x ))}}{155}
-\entry{\code {\i {end-of-file} (usually C-d)}}{150}
-\entry{\code {end-of-history (M->)}}{148}
-\entry{\code {end-of-line (C-e)}}{147}
-\entry{\code {exchange-point-and-mark (C-x C-x)}}{156}
-\entry{\code {execute-named-command (M-x)}}{157}
-\entry{\code {export-completions ()}}{154}
+\entry{\code {edit-and-execute-command (C-x C-e)}}{159}
+\entry{\code {end-kbd-macro (C-x ))}}{156}
+\entry{\code {\i {end-of-file} (usually C-d)}}{151}
+\entry{\code {end-of-history (M->)}}{149}
+\entry{\code {end-of-line (C-e)}}{148}
+\entry{\code {exchange-point-and-mark (C-x C-x)}}{157}
+\entry{\code {execute-named-command (M-x)}}{158}
+\entry{\code {export-completions ()}}{155}
 \initial {F}
-\entry{\code {fetch-history ()}}{150}
-\entry{\code {forward-backward-delete-char ()}}{150}
-\entry{\code {forward-char (C-f)}}{147}
-\entry{\code {forward-search-history (C-s)}}{149}
-\entry{\code {forward-word (M-f)}}{147}
+\entry{\code {fetch-history ()}}{151}
+\entry{\code {forward-backward-delete-char ()}}{151}
+\entry{\code {forward-char (C-f)}}{148}
+\entry{\code {forward-search-history (C-s)}}{150}
+\entry{\code {forward-word (M-f)}}{148}
 \initial {G}
-\entry{\code {glob-complete-word (M-g)}}{157}
-\entry{\code {glob-expand-word (C-x *)}}{157}
-\entry{\code {glob-list-expansions (C-x g)}}{157}
+\entry{\code {glob-complete-word (M-g)}}{158}
+\entry{\code {glob-expand-word (C-x *)}}{158}
+\entry{\code {glob-list-expansions (C-x g)}}{158}
 \initial {H}
-\entry{\code {history-and-alias-expand-line ()}}{158}
-\entry{\code {history-expand-line (M-^)}}{158}
-\entry{\code {history-search-backward ()}}{149}
-\entry{\code {history-search-forward ()}}{149}
-\entry{\code {history-substring-search-backward ()}}{149}
-\entry{\code {history-substring-search-forward ()}}{149}
+\entry{\code {history-and-alias-expand-line ()}}{159}
+\entry{\code {history-expand-line (M-^)}}{159}
+\entry{\code {history-search-backward ()}}{150}
+\entry{\code {history-search-forward ()}}{150}
+\entry{\code {history-substring-search-backward ()}}{150}
+\entry{\code {history-substring-search-forward ()}}{150}
 \initial {I}
-\entry{\code {insert-comment (M-#)}}{156}
-\entry{\code {insert-completions (M-*)}}{153}
-\entry{\code {insert-last-argument (M-. or M-_)}}{158}
+\entry{\code {insert-comment (M-#)}}{157}
+\entry{\code {insert-completions (M-*)}}{154}
+\entry{\code {insert-last-argument (M-. or M-_)}}{159}
 \initial {K}
-\entry{\code {kill-line (C-k)}}{151}
-\entry{\code {kill-region ()}}{152}
-\entry{\code {kill-whole-line ()}}{152}
-\entry{\code {kill-word (M-d)}}{152}
+\entry{\code {kill-line (C-k)}}{152}
+\entry{\code {kill-region ()}}{153}
+\entry{\code {kill-whole-line ()}}{153}
+\entry{\code {kill-word (M-d)}}{153}
 \initial {M}
-\entry{\code {magic-space ()}}{158}
-\entry{\code {menu-complete ()}}{153}
-\entry{\code {menu-complete-backward ()}}{154}
+\entry{\code {magic-space ()}}{159}
+\entry{\code {menu-complete ()}}{154}
+\entry{\code {menu-complete-backward ()}}{155}
 \initial {N}
-\entry{\code {next-history (C-n)}}{148}
-\entry{\code {next-screen-line ()}}{148}
-\entry{\code {non-incremental-forward-search-history (M-n)}}{149}
-\entry{\code {non-incremental-reverse-search-history (M-p)}}{149}
+\entry{\code {next-history (C-n)}}{149}
+\entry{\code {next-screen-line ()}}{149}
+\entry{\code {non-incremental-forward-search-history (M-n)}}{150}
+\entry{\code {non-incremental-reverse-search-history (M-p)}}{150}
 \initial {O}
-\entry{\code {operate-and-get-next (C-o)}}{150}
-\entry{\code {overwrite-mode ()}}{151}
+\entry{\code {operate-and-get-next (C-o)}}{151}
+\entry{\code {overwrite-mode ()}}{152}
 \initial {P}
-\entry{\code {possible-command-completions (C-x !)}}{155}
-\entry{\code {possible-completions (M-?)}}{153}
-\entry{\code {possible-filename-completions (C-x /)}}{154}
-\entry{\code {possible-hostname-completions (C-x @)}}{155}
-\entry{\code {possible-username-completions (C-x ~)}}{154}
-\entry{\code {possible-variable-completions (C-x $)}}{154}
-\entry{\code {prefix-meta (\key {ESC})}}{156}
-\entry{\code {previous-history (C-p)}}{148}
-\entry{\code {previous-screen-line ()}}{148}
-\entry{\code {print-last-kbd-macro ()}}{155}
+\entry{\code {possible-command-completions (C-x !)}}{156}
+\entry{\code {possible-completions (M-?)}}{154}
+\entry{\code {possible-filename-completions (C-x /)}}{155}
+\entry{\code {possible-hostname-completions (C-x @)}}{156}
+\entry{\code {possible-username-completions (C-x ~)}}{155}
+\entry{\code {possible-variable-completions (C-x $)}}{155}
+\entry{\code {prefix-meta (\key {ESC})}}{157}
+\entry{\code {previous-history (C-p)}}{149}
+\entry{\code {previous-screen-line ()}}{149}
+\entry{\code {print-last-kbd-macro ()}}{156}
 \initial {Q}
-\entry{\code {quoted-insert (C-q or C-v)}}{150}
+\entry{\code {quoted-insert (C-q or C-v)}}{151}
 \initial {R}
-\entry{\code {re-read-init-file (C-x C-r)}}{155}
-\entry{\code {redraw-current-line ()}}{148}
-\entry{\code {reverse-search-history (C-r)}}{148}
-\entry{\code {revert-line (M-r)}}{156}
+\entry{\code {re-read-init-file (C-x C-r)}}{156}
+\entry{\code {redraw-current-line ()}}{149}
+\entry{\code {reverse-search-history (C-r)}}{149}
+\entry{\code {revert-line (M-r)}}{157}
 \initial {S}
-\entry{\code {self-insert (a, b, A, 1, !, \dots {})}}{150}
-\entry{\code {set-mark (C-@)}}{156}
-\entry{\code {shell-backward-kill-word ()}}{152}
-\entry{\code {shell-backward-word (M-C-b)}}{147}
-\entry{\code {shell-expand-and-requote-line ()}}{157}
-\entry{\code {shell-expand-line (M-C-e)}}{157}
-\entry{\code {shell-forward-word (M-C-f)}}{147}
-\entry{\code {shell-kill-word (M-C-d)}}{152}
-\entry{\code {shell-transpose-words (M-C-t)}}{151}
-\entry{\code {skip-csi-sequence ()}}{156}
-\entry{\code {spell-correct-word (C-x s)}}{157}
-\entry{\code {start-kbd-macro (C-x ()}}{155}
+\entry{\code {self-insert (a, b, A, 1, !, \dots {})}}{151}
+\entry{\code {set-mark (C-@)}}{157}
+\entry{\code {shell-backward-kill-word ()}}{153}
+\entry{\code {shell-backward-word (M-C-b)}}{148}
+\entry{\code {shell-expand-and-requote-line ()}}{158}
+\entry{\code {shell-expand-line (M-C-e)}}{158}
+\entry{\code {shell-forward-word (M-C-f)}}{148}
+\entry{\code {shell-kill-word (M-C-d)}}{153}
+\entry{\code {shell-transpose-words (M-C-t)}}{152}
+\entry{\code {skip-csi-sequence ()}}{157}
+\entry{\code {spell-correct-word (C-x s)}}{158}
+\entry{\code {start-kbd-macro (C-x ()}}{156}
 \initial {T}
-\entry{\code {tilde-expand (M-&)}}{156}
-\entry{\code {transpose-chars (C-t)}}{151}
-\entry{\code {transpose-words (M-t)}}{151}
+\entry{\code {tilde-expand (M-&)}}{157}
+\entry{\code {transpose-chars (C-t)}}{152}
+\entry{\code {transpose-words (M-t)}}{152}
 \initial {U}
-\entry{\code {undo (C-_ or C-x C-u)}}{156}
-\entry{\code {universal-argument ()}}{153}
-\entry{\code {unix-filename-rubout ()}}{152}
-\entry{\code {unix-line-discard (C-u)}}{152}
-\entry{\code {unix-word-rubout (C-w)}}{152}
-\entry{\code {upcase-word (M-u)}}{151}
+\entry{\code {undo (C-_ or C-x C-u)}}{157}
+\entry{\code {universal-argument ()}}{154}
+\entry{\code {unix-filename-rubout ()}}{153}
+\entry{\code {unix-line-discard (C-u)}}{153}
+\entry{\code {unix-word-rubout (C-w)}}{153}
+\entry{\code {upcase-word (M-u)}}{152}
 \initial {Y}
-\entry{\code {yank (C-y)}}{152}
-\entry{\code {yank-last-arg (M-. or M-_)}}{149}
-\entry{\code {yank-nth-arg (M-C-y)}}{149}
-\entry{\code {yank-pop (M-y)}}{153}
+\entry{\code {yank (C-y)}}{153}
+\entry{\code {yank-last-arg (M-. or M-_)}}{150}
+\entry{\code {yank-nth-arg (M-C-y)}}{150}
+\entry{\code {yank-pop (M-y)}}{154}
index f7b603a4231e33e5d0087cf46cbc4f9454c4dab4..08792f69d248c1a6f0cfbcef95735c18a5772667 100644 (file)
@@ -4,9 +4,9 @@
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
 <!-- This text is a brief description of the features that are present in
-the Bash shell (version 5.3, 16 March 2026).
+the Bash shell (version 5.3, 29 April 2026).
 
-This is Edition 5.3, last updated 16 March 2026,
+This is Edition 5.3, last updated 29 April 2026,
 of The GNU Bash Reference Manual,
 for Bash, Version 5.3.
 
@@ -77,10 +77,10 @@ Next: <a href="#Introduction" accesskey="n" rel="next">Introduction</a>, Previou
 <h1 class="top" id="Bash-Features-1"><span>Bash Features<a class="copiable-link" href="#Bash-Features-1"> &para;</a></span></h1>
 
 <p>This text is a brief description of the features that are present in
-the Bash shell (version 5.3, 16 March 2026).
+the Bash shell (version 5.3, 29 April 2026).
 The Bash home page is <a class="url" href="http://www.gnu.org/software/bash/">http://www.gnu.org/software/bash/</a>.
 </p>
-<p>This is Edition 5.3, last updated 16 March 2026,
+<p>This is Edition 5.3, last updated 29 April 2026,
 of <cite class="cite">The GNU Bash Reference Manual</cite>,
 for <code class="code">Bash</code>, Version 5.3.
 </p>
@@ -4611,7 +4611,7 @@ Previous: <a href="#Executing-Commands" accesskey="p" rel="prev">Executing Comma
 <h3 class="section" id="Shell-Scripts-1"><span>3.8 Shell Scripts<a class="copiable-link" href="#Shell-Scripts-1"> &para;</a></span></h3>
 <a class="index-entry-id" id="index-shell-script"></a>
 
-<p>A shell script is a text file containing shell commands.
+<p>A <em class="dfn">shell script</em> is a text file containing shell commands.
 When such a file is used as the first non-option argument when
 invoking Bash, and neither the <samp class="option">-c</samp> nor <samp class="option">-s</samp> option
 is supplied (see <a class="pxref" href="#Invoking-Bash">Invoking Bash</a>), 
@@ -8875,6 +8875,14 @@ connected to terminals (as determined by
 or one started with the <samp class="option">-i</samp> option.
 See <a class="xref" href="#Interactive-Shells">Interactive Shells</a>, for more information.
 </p>
+<p>A <em class="dfn">non-interactive shell</em> is, not surprisingly, one that does not
+satisfy the tests for interactivity given above.
+A non-interactive shell is usually started to run commands from a script
+file supplied as an argument (see <a class="pxref" href="#Shell-Scripts">Shell Scripts</a>)
+or from a string supplied with the
+<samp class="option">-c</samp>
+option.
+</p>
 <p>If arguments remain after option processing, and neither the
 <samp class="option">-c</samp> nor the <samp class="option">-s</samp>
 option has been supplied, the first argument is treated as
@@ -8892,6 +8900,31 @@ and, if no file is found, searches the directories in
 <code class="env">PATH</code>
 for the script.
 </p>
+<p>For example, the following command starts an interactive shell:
+</p>
+<div class="example">
+<pre class="example-preformatted">bash
+</pre></div>
+
+<p>whereas this command will read and execute commands from <samp class="file">filename</samp>:
+</p>
+<div class="example">
+<pre class="example-preformatted">bash filename
+</pre></div>
+
+<p>This command will execute &lsquo;<samp class="samp">echo hello</samp>&rsquo;:
+</p>
+<div class="example">
+<pre class="example-preformatted">bash -c 'echo hello'
+</pre></div>
+
+<p>and this will execute the same command
+read from the standard input:
+</p>
+<div class="example">
+<pre class="example-preformatted">echo echo hello | bash
+</pre></div>
+
 <hr>
 </div>
 <div class="section-level-extent" id="Bash-Startup-Files">
@@ -8904,7 +8937,7 @@ Next: <a href="#Interactive-Shells" accesskey="n" rel="next">Interactive Shells<
 
 <p>This section describes how Bash executes its startup files.
 If any of the files exist but cannot be read, Bash reports an error.
-Tildes are expanded in filenames as described above under
+Tildes in filenames are expanded as described above under
 Tilde Expansion (see <a class="pxref" href="#Tilde-Expansion">Tilde Expansion</a>).
 </p>
 <p>Interactive shells are described in <a class="ref" href="#Interactive-Shells">Interactive Shells</a>.
@@ -9000,15 +9033,16 @@ standard for startup files.
 In this mode, interactive shells expand the <code class="env">ENV</code> variable
 and read and execute commands from the file whose name is the
 expanded value.
-No other startup files are read.
+A posix-mode shell does not attempt to read any other startup files,
+even when invoked as a login shell.
 </p>
 <h4 class="subsubheading" id="Invoked-by-remote-shell-daemon"><span>Invoked by remote shell daemon<a class="copiable-link" href="#Invoked-by-remote-shell-daemon"> &para;</a></span></h4>
 
 <p>Bash
 attempts to determine when it is being run with its standard input
 connected to a network connection, as when executed by
-the historical and rarely-seen remote shell daemon, usually <code class="code">rshd</code>,
-or the secure shell daemon <code class="code">sshd</code>.
+the secure shell daemon <code class="code">sshd</code>.
+or the historical and rarely-seen remote shell daemon, usually <code class="code">rshd</code>.
 If
 Bash
 determines it is being run non-interactively in this fashion,
@@ -9023,7 +9057,7 @@ option inhibits this behavior, and the
 option makes Bash use a different file instead of
 <samp class="file">~/.bashrc</samp>,
 but neither
-<code class="code">rshd</code> nor <code class="code">sshd</code> generally invoke the shell with those
+<code class="command">sshd</code> nor <code class="command">rshd</code> generally invoke the shell with those
 options or allow them to be specified.
 </p>
 <h4 class="subsubheading" id="Invoked-with-unequal-effective-and-real-uid_002fgids"><span>Invoked with unequal effective and real <small class="sc">UID/GID</small>s<a class="copiable-link" href="#Invoked-with-unequal-effective-and-real-uid_002fgids"> &para;</a></span></h4>
@@ -9035,7 +9069,7 @@ the <code class="env">SHELLOPTS</code>, <code class="env">BASHOPTS</code>, <code
 variables, if they appear in the environment, are ignored, and the effective
 user id is set to the real user id.
 If the <samp class="option">-p</samp> option is supplied at invocation, the startup behavior is
-the same, but the effective user id is not reset.
+the same, but Bash does not reset the effective user id.
 </p>
 <hr>
 </div>
@@ -9671,7 +9705,7 @@ There is no maximum
 limit on the size of an array, nor any requirement that members
 be indexed or assigned contiguously.
 Indexed arrays are referenced using arithmetic expressions
-that must expand to an integer (see <a class="pxref" href="#Shell-Arithmetic">Shell Arithmetic</a>))
+that must expand to an integer (see <a class="pxref" href="#Shell-Arithmetic">Shell Arithmetic</a>)
 and are zero-based;
 associative arrays use arbitrary strings.
 Unless otherwise noted, indexed array indices must be non-negative integers.
index e437da96374b35560c428dc527435af0b01639e7..5414fe55994a035c4a9649c08078562b921e7db3 100644 (file)
@@ -2,9 +2,9 @@ This is bashref.info, produced by makeinfo version 7.2 from
 bashref.texi.
 
 This text is a brief description of the features that are present in the
-Bash shell (version 5.3, 16 March 2026).
+Bash shell (version 5.3, 29 April 2026).
 
-   This is Edition 5.3, last updated 16 March 2026, of ‘The GNU Bash
+   This is Edition 5.3, last updated 29 April 2026, of ‘The GNU Bash
 Reference Manual’, for ‘Bash’, Version 5.3.
 
    Copyright © 1988-2026 Free Software Foundation, Inc.
@@ -27,10 +27,10 @@ Bash Features
 *************
 
 This text is a brief description of the features that are present in the
-Bash shell (version 5.3, 16 March 2026).  The Bash home page is
+Bash shell (version 5.3, 29 April 2026).  The Bash home page is
 <http://www.gnu.org/software/bash/>.
 
-   This is Edition 5.3, last updated 16 March 2026, of ‘The GNU Bash
+   This is Edition 5.3, last updated 29 April 2026, of ‘The GNU Bash
 Reference Manual’, for ‘Bash’, Version 5.3.
 
    Bash contains features that appear in other popular shells, and some
@@ -3362,7 +3362,7 @@ File: bashref.info,  Node: Shell Scripts,  Prev: Executing Commands,  Up: Basic
 3.8 Shell Scripts
 =================
 
-A shell script is a text file containing shell commands.  When such a
+A “shell script” is a text file containing shell commands.  When such a
 file is used as the first non-option argument when invoking Bash, and
 neither the ‘-c’ nor ‘-s’ option is supplied (*note Invoking Bash::),
 Bash reads and executes commands from the file, then exits.  This mode
@@ -6667,6 +6667,12 @@ standard input and standard error are both connected to terminals (as
 determined by isatty(3)), or one started with the ‘-i’ option.  *Note
 Interactive Shells::, for more information.
 
+   A “non-interactive shell” is, not surprisingly, one that does not
+satisfy the tests for interactivity given above.  A non-interactive
+shell is usually started to run commands from a script file supplied as
+an argument (*note Shell Scripts::) or from a string supplied with the
+‘-c’ option.
+
    If arguments remain after option processing, and neither the ‘-c’ nor
 the ‘-s’ option has been supplied, the first argument is treated as the
 name of a file containing shell commands (*note Shell Scripts::).  When
@@ -6678,6 +6684,22 @@ If no commands are executed, the exit status is 0.  Bash first attempts
 to open the file in the current directory, and, if no file is found,
 searches the directories in ‘PATH’ for the script.
 
+   For example, the following command starts an interactive shell:
+
+     bash
+
+whereas this command will read and execute commands from ‘filename’:
+
+     bash filename
+
+This command will execute ‘echo hello’:
+
+     bash -c 'echo hello'
+
+and this will execute the same command read from the standard input:
+
+     echo echo hello | bash
+
 \1f
 File: bashref.info,  Node: Bash Startup Files,  Next: Interactive Shells,  Prev: Invoking Bash,  Up: Bash Features
 
@@ -6685,8 +6707,8 @@ File: bashref.info,  Node: Bash Startup Files,  Next: Interactive Shells,  Prev:
 ======================
 
 This section describes how Bash executes its startup files.  If any of
-the files exist but cannot be read, Bash reports an error.  Tildes are
-expanded in filenames as described above under Tilde Expansion (*note
+the files exist but cannot be read, Bash reports an error.  Tildes in
+filenames are expanded as described above under Tilde Expansion (*note
 Tilde Expansion::).
 
    Interactive shells are described in *note Interactive Shells::.
@@ -6764,21 +6786,22 @@ Invoked in POSIX mode
 When Bash is started in POSIX mode, as with the ‘--posix’ command line
 option, it follows the POSIX standard for startup files.  In this mode,
 interactive shells expand the ‘ENV’ variable and read and execute
-commands from the file whose name is the expanded value.  No other
-startup files are read.
+commands from the file whose name is the expanded value.  A posix-mode
+shell does not attempt to read any other startup files, even when
+invoked as a login shell.
 
 Invoked by remote shell daemon
 ..............................
 
 Bash attempts to determine when it is being run with its standard input
-connected to a network connection, as when executed by the historical
-and rarely-seen remote shell daemon, usually ‘rshd’, or the secure shell
-daemon ‘sshd’.  If Bash determines it is being run non-interactively in
+connected to a network connection, as when executed by the secure shell
+daemon ‘sshd’.  or the historical and rarely-seen remote shell daemon,
+usually ‘rshd’.  If Bash determines it is being run non-interactively in
 this fashion, it reads and executes commands from ‘~/.bashrc’, if that
 file exists and is readable.  Bash does not read this file if invoked as
 ‘sh’.  The ‘--norc’ option inhibits this behavior, and the ‘--rcfile’
 option makes Bash use a different file instead of ‘~/.bashrc’, but
-neither ‘rshd’ nor ‘sshd’ generally invoke the shell with those options
+neither ‘sshd’ nor ‘rshd’ generally invoke the shell with those options
 or allow them to be specified.
 
 Invoked with unequal effective and real UID/GIDs
@@ -6790,8 +6813,8 @@ files are read, shell functions are not inherited from the environment,
 the ‘SHELLOPTS’, ‘BASHOPTS’, ‘CDPATH’, and ‘GLOBIGNORE’ variables, if
 they appear in the environment, are ignored, and the effective user id
 is set to the real user id.  If the ‘-p’ option is supplied at
-invocation, the startup behavior is the same, but the effective user id
-is not reset.
+invocation, the startup behavior is the same, but Bash does not reset
+the effective user id.
 
 \1f
 File: bashref.info,  Node: Interactive Shells,  Next: Bash Conditional Expressions,  Prev: Bash Startup Files,  Up: Bash Features
@@ -13792,87 +13815,87 @@ Node: Environment\7f141130
 Node: Exit Status\7f143036
 Node: Signals\7f145098
 Node: Shell Scripts\7f150049
-Node: Shell Builtin Commands\7f153350
-Node: Bourne Shell Builtins\7f155694
-Node: Bash Builtins\7f182416
-Node: Modifying Shell Behavior\7f220154
-Node: The Set Builtin\7f220499
-Node: The Shopt Builtin\7f232496
-Node: Special Builtins\7f249552
-Node: Shell Variables\7f250544
-Node: Bourne Shell Variables\7f250981
-Node: Bash Variables\7f253492
-Node: Bash Features\7f292779
-Node: Invoking Bash\7f293796
-Node: Bash Startup Files\7f300383
-Node: Interactive Shells\7f305628
-Node: What is an Interactive Shell?\7f306039
-Node: Is this Shell Interactive?\7f306704
-Node: Interactive Shell Behavior\7f307531
-Node: Bash Conditional Expressions\7f311295
-Node: Shell Arithmetic\7f316715
-Node: Aliases\7f320045
-Node: Arrays\7f323182
-Node: The Directory Stack\7f330887
-Node: Directory Stack Builtins\7f331687
-Node: Controlling the Prompt\7f336135
-Node: The Restricted Shell\7f339022
-Node: Bash POSIX Mode\7f342118
-Node: Shell Compatibility Mode\7f361937
-Node: Job Control\7f370947
-Node: Job Control Basics\7f371407
-Node: Job Control Builtins\7f377778
-Node: Job Control Variables\7f384569
-Node: Command Line Editing\7f385803
-Node: Introduction and Notation\7f387509
-Node: Readline Interaction\7f389864
-Node: Readline Bare Essentials\7f391055
-Node: Readline Movement Commands\7f392866
-Node: Readline Killing Commands\7f393865
-Node: Readline Arguments\7f395891
-Node: Searching\7f396984
-Node: Readline Init File\7f399230
-Node: Readline Init File Syntax\7f400536
-Node: Conditional Init Constructs\7f427490
-Node: Sample Init File\7f431878
-Node: Bindable Readline Commands\7f435001
-Node: Commands For Moving\7f436542
-Node: Commands For History\7f439009
-Node: Commands For Text\7f444403
-Node: Commands For Killing\7f448531
-Node: Numeric Arguments\7f451322
-Node: Commands For Completion\7f452477
-Node: Keyboard Macros\7f458176
-Node: Miscellaneous Commands\7f458880
-Node: Readline vi Mode\7f466426
-Node: Programmable Completion\7f467406
-Node: Programmable Completion Builtins\7f477145
-Node: A Programmable Completion Example\7f488885
-Node: Using History Interactively\7f494233
-Node: Bash History Facilities\7f494917
-Node: Bash History Builtins\7f498655
-Node: History Interaction\7f506253
-Node: Event Designators\7f511206
-Node: Word Designators\7f512787
-Node: Modifiers\7f515182
-Node: Installing Bash\7f517122
-Node: Basic Installation\7f518241
-Node: Compilers and Options\7f522120
-Node: Compiling For Multiple Architectures\7f522873
-Node: Installation Names\7f524629
-Node: Specifying the System Type\7f526866
-Node: Sharing Defaults\7f527615
-Node: Operation Controls\7f528332
-Node: Optional Features\7f529354
-Node: Reporting Bugs\7f542080
-Node: Major Differences From The Bourne Shell\7f543440
-Node: GNU Free Documentation License\7f564870
-Node: Indexes\7f590050
-Node: Builtin Index\7f590504
-Node: Reserved Word Index\7f597605
-Node: Variable Index\7f600053
-Node: Function Index\7f617469
-Node: Concept Index\7f631605
+Node: Shell Builtin Commands\7f153356
+Node: Bourne Shell Builtins\7f155700
+Node: Bash Builtins\7f182422
+Node: Modifying Shell Behavior\7f220160
+Node: The Set Builtin\7f220505
+Node: The Shopt Builtin\7f232502
+Node: Special Builtins\7f249558
+Node: Shell Variables\7f250550
+Node: Bourne Shell Variables\7f250987
+Node: Bash Variables\7f253498
+Node: Bash Features\7f292785
+Node: Invoking Bash\7f293802
+Node: Bash Startup Files\7f301035
+Node: Interactive Shells\7f306360
+Node: What is an Interactive Shell?\7f306771
+Node: Is this Shell Interactive?\7f307436
+Node: Interactive Shell Behavior\7f308263
+Node: Bash Conditional Expressions\7f312027
+Node: Shell Arithmetic\7f317447
+Node: Aliases\7f320777
+Node: Arrays\7f323914
+Node: The Directory Stack\7f331619
+Node: Directory Stack Builtins\7f332419
+Node: Controlling the Prompt\7f336867
+Node: The Restricted Shell\7f339754
+Node: Bash POSIX Mode\7f342850
+Node: Shell Compatibility Mode\7f362669
+Node: Job Control\7f371679
+Node: Job Control Basics\7f372139
+Node: Job Control Builtins\7f378510
+Node: Job Control Variables\7f385301
+Node: Command Line Editing\7f386535
+Node: Introduction and Notation\7f388241
+Node: Readline Interaction\7f390596
+Node: Readline Bare Essentials\7f391787
+Node: Readline Movement Commands\7f393598
+Node: Readline Killing Commands\7f394597
+Node: Readline Arguments\7f396623
+Node: Searching\7f397716
+Node: Readline Init File\7f399962
+Node: Readline Init File Syntax\7f401268
+Node: Conditional Init Constructs\7f428222
+Node: Sample Init File\7f432610
+Node: Bindable Readline Commands\7f435733
+Node: Commands For Moving\7f437274
+Node: Commands For History\7f439741
+Node: Commands For Text\7f445135
+Node: Commands For Killing\7f449263
+Node: Numeric Arguments\7f452054
+Node: Commands For Completion\7f453209
+Node: Keyboard Macros\7f458908
+Node: Miscellaneous Commands\7f459612
+Node: Readline vi Mode\7f467158
+Node: Programmable Completion\7f468138
+Node: Programmable Completion Builtins\7f477877
+Node: A Programmable Completion Example\7f489617
+Node: Using History Interactively\7f494965
+Node: Bash History Facilities\7f495649
+Node: Bash History Builtins\7f499387
+Node: History Interaction\7f506985
+Node: Event Designators\7f511938
+Node: Word Designators\7f513519
+Node: Modifiers\7f515914
+Node: Installing Bash\7f517854
+Node: Basic Installation\7f518973
+Node: Compilers and Options\7f522852
+Node: Compiling For Multiple Architectures\7f523605
+Node: Installation Names\7f525361
+Node: Specifying the System Type\7f527598
+Node: Sharing Defaults\7f528347
+Node: Operation Controls\7f529064
+Node: Optional Features\7f530086
+Node: Reporting Bugs\7f542812
+Node: Major Differences From The Bourne Shell\7f544172
+Node: GNU Free Documentation License\7f565602
+Node: Indexes\7f590782
+Node: Builtin Index\7f591236
+Node: Reserved Word Index\7f598337
+Node: Variable Index\7f600785
+Node: Function Index\7f618201
+Node: Concept Index\7f632337
 \1f
 End Tag Table
 
index 667ab2fc10687a7fd0015de097f72db4fc395137..c9d495623cd85f1576e980711a5d6531f41336e4 100644 (file)
@@ -1,12 +1,12 @@
-This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2025/MacPorts 2025.74524_1) (preloaded format=etex 2025.9.16)  2 FEB 2026 15:27
+This is pdfTeX, Version 3.141592653-2.6-1.40.27 (TeX Live 2025/MacPorts 2025.74524_1) (preloaded format=pdfetex 2025.9.16)  29 APR 2026 10:19
 entering extended mode
  restricted \write18 enabled.
  file:line:error style messages enabled.
  %&-line parsing enabled.
-**\nonstopmode \input /usr/local/src/bash/bash-20260130/doc/bashref.texi \input
- /usr/local/src/bash/bash-20260130/doc/bashref.texi
-(/usr/local/src/bash/bash-20260130/doc/bashref.texi
-(/usr/local/src/bash/bash-20260130/doc/texinfo.tex
+**\input /usr/local/src/bash/bash-20260428/doc/bashref.texi \input /usr/local/s
+rc/bash/bash-20260428/doc/bashref.texi
+(/usr/local/src/bash/bash-20260428/doc/bashref.texi
+(/usr/local/src/bash/bash-20260428/doc/texinfo.tex
 Loading texinfo [version 2015-11-22.14]:
 \outerhsize=\dimen16
 \outervsize=\dimen17
@@ -162,20 +162,23 @@ This is `epsf.tex' v2.7.4 <14 February 2011>
 texinfo.tex: doing @include of version.texi
 
 
-(/usr/local/src/bash/bash-20260130/doc/version.texi) [1] [2]
-(/usr/local/build/bash/bash-20260130/doc/bashref.toc [-1] [-2] [-3]) [-4]
-Chapter 1
+(/usr/local/src/bash/bash-20260428/doc/version.texi) [1{/opt/local/var/db/texmf
+/fonts/map/pdftex/updmap/pdftex.map}] [2]
+(/usr/local/build/bash/bash-20260428/doc/bashref.toc [-1] [-2] [-3]) [-4]
+(/usr/local/build/bash/bash-20260428/doc/bashref.toc)
+(/usr/local/build/bash/bash-20260428/doc/bashref.toc) Chapter 1
 \openout0 = `bashref.toc'.
 
- (/usr/local/build/bash/bash-20260130/doc/bashref.aux)
+
+(/usr/local/build/bash/bash-20260428/doc/bashref.aux)
 \openout1 = `bashref.aux'.
 
- [1] Chapter 2
-[2]
+ [1] Chapter 2 [2]
 @cpindfile=@write2
 \openout2 = `bashref.cp'.
 
- [3] Chapter 3 [4] [5] [6] [7]
+
+[3] Chapter 3 [4] [5] [6] [7]
 @vrindfile=@write3
 \openout3 = `bashref.vr'.
 
@@ -219,16 +222,17 @@ Overfull \hbox (5.95723pt too wide) in paragraph at lines 765--766
 @rwindfile=@write4
 \openout4 = `bashref.rw'.
 
- [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23]
-[24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38]
-[39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] Chapter 4 [51]
+ [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20{/opt/local/share/texmf-t
+exlive/fonts/enc/dvips/cm-super/cm-super-t1.enc}] [21] [22] [23] [24]
+[25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39]
+[40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] Chapter 4 [51]
 @btindfile=@write5
 \openout5 = `bashref.bt'.
 
-
-[52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66]
-[67] [68] [69] [70] [71] [72] [73]
-Overfull \hbox (38.26585pt too wide) in paragraph at lines 5964--5964
+ [52]
+[53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67]
+[68] [69] [70] [71] [72] [73]
+Overfull \hbox (38.26585pt too wide) in paragraph at lines 5981--5981
  []@texttt set [-abefhkmnptuvxBCEHPT] [-o @textttsl option-name@texttt ] [--] [
 -] [@textttsl ar-gu-ment []@texttt ][] 
 
@@ -241,7 +245,7 @@ Overfull \hbox (38.26585pt too wide) in paragraph at lines 5964--5964
 .etc.
 
 
-Overfull \hbox (38.26585pt too wide) in paragraph at lines 5965--5965
+Overfull \hbox (38.26585pt too wide) in paragraph at lines 5982--5982
  []@texttt set [+abefhkmnptuvxBCEHPT] [+o @textttsl option-name@texttt ] [--] [
 -] [@textttsl ar-gu-ment []@texttt ][] 
 
@@ -257,12 +261,12 @@ Overfull \hbox (38.26585pt too wide) in paragraph at lines 5965--5965
 [87] [88] [89] [90] [91] [92] [93] [94] [95] [96] [97] [98] Chapter 6 [99]
 [100] [101] [102] [103] [104] [105] [106] [107] [108] [109] [110] [111]
 [112] [113] [114] [115] [116] [117] [118] [119] [120] [121] [122] [123]
-Chapter 7 [124] [125] [126] [127] [128]
+[124] Chapter 7 [125] [126] [127] [128] [129]
 texinfo.tex: doing @include of rluser.texi
 
 
-(/usr/local/src/bash/bash-20260130/lib/readline/doc/rluser.texi Chapter 8
-[129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
+(/usr/local/src/bash/bash-20260428/lib/readline/doc/rluser.texi Chapter 8
+[130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140] [141]
 Underfull \hbox (badness 7540) in paragraph at lines 969--975
  []@textrm In the ex-am-ple above, @textttsl C-u[] @textrm is bound to the func
 -tion
@@ -288,7 +292,7 @@ e func-tion
 .@texttt v
 .etc.
 
-[141] [142] [143] [144]
+[142] [143] [144] [145]
 Overfull \hbox (26.43913pt too wide) in paragraph at lines 1215--1215
  []@texttt Meta-Control-h: backward-kill-word Text after the function name is i
 gnored[] 
@@ -301,19 +305,19 @@ gnored[]
 .@texttt t
 .etc.
 
-[145] [146]
+[146] [147]
 @fnindfile=@write6
 \openout6 = `bashref.fn'.
 
- [147] [148] [149] [150] [151] [152] [153] [154] [155] [156]
-[157] [158] [159] [160] [161] [162] [163] [164] [165] [166])
+ [148] [149] [150] [151] [152] [153] [154] [155] [156] [157]
+[158] [159] [160] [161] [162] [163] [164] [165] [166] [167])
 texinfo.tex: doing @include of hsuser.texi
 
 
-(/usr/local/src/bash/bash-20260130/lib/readline/doc/hsuser.texi Chapter 9
-[167] [168] [169] [170] [171] [172] [173]) Chapter 10 [174] [175] [176]
-[177] [178]
-Underfull \hbox (badness 10000) in paragraph at lines 10793--10802
+(/usr/local/src/bash/bash-20260428/lib/readline/doc/hsuser.texi Chapter 9
+[168] [169] [170] [171] [172] [173] [174]) Chapter 10 [175] [176] [177]
+[178] [179]
+Underfull \hbox (badness 10000) in paragraph at lines 10855--10864
 []@textrm All of the fol-low-ing op-tions ex-cept for `@texttt alt-array-implem
 entation[]@textrm '[],
 
@@ -326,7 +330,7 @@ entation[]@textrm '[],
 .etc.
 
 
-Underfull \hbox (badness 10000) in paragraph at lines 10793--10802
+Underfull \hbox (badness 10000) in paragraph at lines 10855--10864
 @textrm `@texttt disabled-builtins[]@textrm '[], `@texttt direxpand-default[]@t
 extrm '[], `@texttt strict-posix-default[]@textrm '[], and
 
@@ -338,21 +342,42 @@ extrm '[], `@texttt strict-posix-default[]@textrm '[], and
 .@texttt a
 .etc.
 
-[179] [180] [181] [182] Appendix A [183] Appendix B [184] [185] [186] [187]
-[188] [189] [190] Appendix C [191]
+[180] [181] [182] [183] Appendix A [184] Appendix B [185] [186] [187] [188]
+[189] [190] [191] Appendix C [192]
 texinfo.tex: doing @include of fdl.texi
 
 
-(/usr/local/src/bash/bash-20260130/doc/fdl.texi [192] [193] [194] [195]
-[196] [197] [198]) Appendix D [199] [200] [201] [202] [203] [204] [205]
-[206] [207] [208] ) 
+(/usr/local/src/bash/bash-20260428/doc/fdl.texi [193] [194] [195] [196]
+[197] [198] [199]) Appendix D [200] [201] [202] [203] [204] [205] [206]
+[207] [208] [209] ) 
 Here is how much of TeX's memory you used:
3531 strings out of 495830
- 40273 string characters out of 6171293
88550 words of memory out of 5000000
4884 multiletter control sequences out of 15000+600000
4117 strings out of 495820
+ 47665 string characters out of 6170887
145121 words of memory out of 5000000
5053 multiletter control sequences out of 15000+600000
  34315 words of font info for 116 fonts, out of 8000000 for 9000
  701 hyphenation exceptions out of 8191
- 16i,6n,16p,402b,942s stack positions out of 10000i,1000n,20000p,200000b,200000s
+ 16i,6n,16p,389b,983s stack positions out of 10000i,1000n,20000p,200000b,200000s
+</opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/
+cm/cmbx12.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cm
+csc10.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmmi10
+.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmmi12.pfb>
+</opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmmi9.pfb></opt/
+local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmr10.pfb></opt/local/
+share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmr9.pfb></opt/local/share/t
+exmf-texlive/fonts/type1/public/amsfonts/cm/cmsl10.pfb></opt/local/share/texmf-
+texlive/fonts/type1/public/amsfonts/cm/cmsltt10.pfb></opt/local/share/texmf-tex
+live/fonts/type1/public/amsfonts/cm/cmsy10.pfb></opt/local/share/texmf-texlive/
+fonts/type1/public/amsfonts/cm/cmti10.pfb></opt/local/share/texmf-texlive/fonts
+/type1/public/amsfonts/cm/cmtt10.pfb></opt/local/share/texmf-texlive/fonts/type
+1/public/amsfonts/cm/cmtt12.pfb></opt/local/share/texmf-texlive/fonts/type1/pub
+lic/amsfonts/cm/cmtt9.pfb></opt/local/share/texmf-texlive/fonts/type1/public/cm
+-super/sfrm1095.pfb></opt/local/share/texmf-texlive/fonts/type1/public/cm-super
+/sfrm1440.pfb>
+Output written on bashref.pdf (215 pages, 814924 bytes).
+PDF statistics:
+ 2954 PDF objects out of 2984 (max. 8388607)
+ 2691 compressed objects within 27 object streams
+ 343 named destinations out of 1000 (max. 500000)
+ 1157 words of extra memory for PDF output out of 10000 (max. 10000000)
 
-Output written on bashref.dvi (214 pages, 903700 bytes).
index ecf3add52c8b5a6c3f833c431395bb3e91b77826..a2a47b9097059429385bbb7357f7db66239f4676 100644 (file)
Binary files a/doc/bashref.pdf and b/doc/bashref.pdf differ
index 0d76f6ac893441efa0f7d8a3301ee8e481881df0..a1a91695543f97491406de30601dd2a6636c58fa 100644 (file)
@@ -18,4 +18,4 @@
 \entry{]]}{15}{\code {]]}}
 \entry{{\indexlbrace }}{18}{\code {{\tt \char 123}}}
 \entry{{\indexrbrace }}{18}{\code {{\tt \char 125}}}
-\entry{function}{19}{\code {function}}
+\entry{function}{20}{\code {function}}
index e0a61179d97f9e83a0dea8cf35271ef297e605b5..30487436f1e0a01ac5015d051ced73bc63861148 100644 (file)
@@ -20,7 +20,7 @@
 \initial {F}
 \entry{\code {fi}}{13}
 \entry{\code {for}}{12}
-\entry{\code {function}}{19}
+\entry{\code {function}}{20}
 \initial {I}
 \entry{\code {if}}{13}
 \entry{\code {in}}{13}
index 079a5b2638eb50c272402de7634ebf5b6e337f8c..06b488320255264bc3f8cc79aac72570a915e988 100644 (file)
@@ -3570,7 +3570,7 @@ If @var{word} is unquoted,
 and the here-document text is treated similarly to a double-quoted string:
 all lines of the here-document are subjected to
 parameter expansion, command substitution, and arithmetic expansion,
-the character sequence @code{\newline} is treated literally,
+the character sequence @code{\newline} is treated as a line continuation,
 and @samp{\} must be used to quote the characters
 @samp{\}, @samp{$}, and @samp{`};
 however, double quote characters have no special meaning.
@@ -4105,7 +4105,7 @@ itself (scenario 1 above), for compatibility.
 @section Shell Scripts
 @cindex shell script
 
-A shell script is a text file containing shell commands.
+A @dfn{shell script} is a text file containing shell commands.
 When such a file is used as the first non-option argument when
 invoking Bash, and neither the @option{-c} nor @option{-s} option
 is supplied (@pxref{Invoking Bash}), 
@@ -7992,6 +7992,14 @@ connected to terminals (as determined by
 or one started with the @option{-i} option.
 @xref{Interactive Shells}, for more information.
 
+A @dfn{non-interactive shell} is, not surprisingly, one that does not
+satisfy the tests for interactivity given above.
+A non-interactive shell is usually started to run commands from a script
+file supplied as an argument (@pxref{Shell Scripts})
+or from a string supplied with the
+@option{-c}
+option.
+
 If arguments remain after option processing, and neither the
 @option{-c} nor the @option{-s}
 option has been supplied, the first argument is treated as
@@ -8009,13 +8017,41 @@ and, if no file is found, searches the directories in
 @env{PATH}
 for the script.
 
+For example, the following command starts an interactive shell:
+
+@example
+bash
+@end example
+
+@noindent
+whereas this command will read and execute commands from @file{filename}:
+
+@example
+bash filename
+@end example
+
+@noindent
+This command will execute @samp{echo hello}:
+
+@example
+bash -c 'echo hello'
+@end example
+
+@noindent
+and this will execute the same command
+read from the standard input:
+
+@example
+echo echo hello | bash
+@end example
+
 @node Bash Startup Files
 @section Bash Startup Files
 @cindex startup files
 
 This section describes how Bash executes its startup files.
 If any of the files exist but cannot be read, Bash reports an error.
-Tildes are expanded in filenames as described above under
+Tildes in filenames are expanded as described above under
 Tilde Expansion (@pxref{Tilde Expansion}).
 
 Interactive shells are described in @ref{Interactive Shells}.
@@ -8113,15 +8149,16 @@ standard for startup files.
 In this mode, interactive shells expand the @env{ENV} variable
 and read and execute commands from the file whose name is the
 expanded value.
-No other startup files are read.
+A posix-mode shell does not attempt to read any other startup files,
+even when invoked as a login shell.
 
 @subsubheading Invoked by remote shell daemon
 
 Bash
 attempts to determine when it is being run with its standard input
 connected to a network connection, as when executed by
-the historical and rarely-seen remote shell daemon, usually @code{rshd},
-or the secure shell daemon @code{sshd}.
+the secure shell daemon @code{sshd}.
+or the historical and rarely-seen remote shell daemon, usually @code{rshd}.
 If
 Bash
 determines it is being run non-interactively in this fashion,
@@ -8136,7 +8173,7 @@ option inhibits this behavior, and the
 option makes Bash use a different file instead of
 @file{~/.bashrc},
 but neither
-@code{rshd} nor @code{sshd} generally invoke the shell with those
+@command{sshd} nor @command{rshd} generally invoke the shell with those
 options or allow them to be specified.
 
 @subsubheading Invoked with unequal effective and real @sc{uid/gid}s
@@ -8148,7 +8185,7 @@ the @env{SHELLOPTS}, @env{BASHOPTS}, @env{CDPATH}, and @env{GLOBIGNORE}
 variables, if they appear in the environment, are ignored, and the effective
 user id is set to the real user id.
 If the @option{-p} option is supplied at invocation, the startup behavior is
-the same, but the effective user id is not reset.
+the same, but Bash does not reset the effective user id.
 
 @node Interactive Shells
 @section Interactive Shells
index b6aefea7f717b5d212f040b0f7725e4a8e06d0a4..b0f08b97c55123b996787e6ebc6e0d6f6ef584ca 100644 (file)
@@ -74,8 +74,8 @@
 @numsubsecentry{What is an Interactive Shell?}{6.3.1}{What is an Interactive Shell?}{104}
 @numsubsecentry{Is this Shell Interactive?}{6.3.2}{Is this Shell Interactive?}{104}
 @numsubsecentry{Interactive Shell Behavior}{6.3.3}{Interactive Shell Behavior}{104}
-@numsecentry{Bash Conditional Expressions}{6.4}{Bash Conditional Expressions}{105}
-@numsecentry{Shell Arithmetic}{6.5}{Shell Arithmetic}{107}
+@numsecentry{Bash Conditional Expressions}{6.4}{Bash Conditional Expressions}{106}
+@numsecentry{Shell Arithmetic}{6.5}{Shell Arithmetic}{108}
 @numsecentry{Aliases}{6.6}{Aliases}{109}
 @numsecentry{Arrays}{6.7}{Arrays}{110}
 @numsecentry{The Directory Stack}{6.8}{The Directory Stack}{112}
 @numsubsecentry{What is POSIX?}{6.11.1}{}{116}
 @numsubsecentry{Bash POSIX Mode}{6.11.2}{}{117}
 @numsecentry{Shell Compatibility Mode}{6.12}{Shell Compatibility Mode}{122}
-@numchapentry{Job Control}{7}{Job Control}{125}
-@numsecentry{Job Control Basics}{7.1}{Job Control Basics}{125}
-@numsecentry{Job Control Builtins}{7.2}{Job Control Builtins}{126}
-@numsecentry{Job Control Variables}{7.3}{Job Control Variables}{129}
-@numchapentry{Command Line Editing}{8}{Command Line Editing}{130}
-@numsecentry{Introduction to Line Editing}{8.1}{Introduction and Notation}{130}
-@numsecentry{Readline Interaction}{8.2}{Readline Interaction}{130}
-@numsubsecentry{Readline Bare Essentials}{8.2.1}{Readline Bare Essentials}{131}
-@numsubsecentry{Readline Movement Commands}{8.2.2}{Readline Movement Commands}{131}
-@numsubsecentry{Readline Killing Commands}{8.2.3}{Readline Killing Commands}{132}
-@numsubsecentry{Readline Arguments}{8.2.4}{Readline Arguments}{132}
-@numsubsecentry{Searching for Commands in the History}{8.2.5}{Searching}{133}
-@numsecentry{Readline Init File}{8.3}{Readline Init File}{133}
-@numsubsecentry{Readline Init File Syntax}{8.3.1}{Readline Init File Syntax}{133}
-@numsubsecentry{Conditional Init Constructs}{8.3.2}{Conditional Init Constructs}{143}
-@numsubsecentry{Sample Init File}{8.3.3}{Sample Init File}{144}
-@numsecentry{Bindable Readline Commands}{8.4}{Bindable Readline Commands}{147}
-@numsubsecentry{Commands For Moving}{8.4.1}{Commands For Moving}{147}
-@numsubsecentry{Commands For Manipulating The History}{8.4.2}{Commands For History}{148}
-@numsubsecentry{Commands For Changing Text}{8.4.3}{Commands For Text}{150}
-@numsubsecentry{Killing And Yanking}{8.4.4}{Commands For Killing}{151}
-@numsubsecentry{Specifying Numeric Arguments}{8.4.5}{Numeric Arguments}{153}
-@numsubsecentry{Letting Readline Type For You}{8.4.6}{Commands For Completion}{153}
-@numsubsecentry{Keyboard Macros}{8.4.7}{Keyboard Macros}{155}
-@numsubsecentry{Some Miscellaneous Commands}{8.4.8}{Miscellaneous Commands}{155}
-@numsecentry{Readline vi Mode}{8.5}{Readline vi Mode}{158}
-@numsecentry{Programmable Completion}{8.6}{Programmable Completion}{158}
-@numsecentry{Programmable Completion Builtins}{8.7}{Programmable Completion Builtins}{161}
-@numsecentry{A Programmable Completion Example}{8.8}{A Programmable Completion Example}{165}
-@numchapentry{Using History Interactively}{9}{Using History Interactively}{168}
-@numsecentry{Bash History Facilities}{9.1}{Bash History Facilities}{168}
-@numsecentry{Bash History Builtins}{9.2}{Bash History Builtins}{169}
-@numsecentry{History Expansion}{9.3}{History Interaction}{171}
-@numsubsecentry{Event Designators}{9.3.1}{Event Designators}{172}
-@numsubsecentry{Word Designators}{9.3.2}{Word Designators}{173}
-@numsubsecentry{Modifiers}{9.3.3}{Modifiers}{174}
-@numchapentry{Installing Bash}{10}{Installing Bash}{175}
-@numsecentry{Basic Installation}{10.1}{Basic Installation}{175}
-@numsecentry{Compilers and Options}{10.2}{Compilers and Options}{176}
-@numsecentry{Compiling For Multiple Architectures}{10.3}{Compiling For Multiple Architectures}{176}
-@numsecentry{Installation Names}{10.4}{Installation Names}{177}
-@numsecentry{Specifying the System Type}{10.5}{Specifying the System Type}{177}
-@numsecentry{Sharing Defaults}{10.6}{Sharing Defaults}{177}
-@numsecentry{Operation Controls}{10.7}{Operation Controls}{178}
-@numsecentry{Optional Features}{10.8}{Optional Features}{178}
-@appentry{Reporting Bugs}{A}{Reporting Bugs}{184}
-@appentry{Major Differences From The Bourne Shell}{B}{Major Differences From The Bourne Shell}{185}
-@appsecentry{Implementation Differences From The SVR4.2 Shell}{B.1}{}{190}
-@appentry{GNU Free Documentation License}{C}{GNU Free Documentation License}{192}
-@appentry{Indexes}{D}{Indexes}{200}
-@appsecentry{Index of Shell Builtin Commands}{D.1}{Builtin Index}{200}
-@appsecentry{Index of Shell Reserved Words}{D.2}{Reserved Word Index}{201}
-@appsecentry{Parameter and Variable Index}{D.3}{Variable Index}{202}
-@appsecentry{Function Index}{D.4}{Function Index}{204}
-@appsecentry{Concept Index}{D.5}{Concept Index}{206}
+@numchapentry{Job Control}{7}{Job Control}{126}
+@numsecentry{Job Control Basics}{7.1}{Job Control Basics}{126}
+@numsecentry{Job Control Builtins}{7.2}{Job Control Builtins}{127}
+@numsecentry{Job Control Variables}{7.3}{Job Control Variables}{130}
+@numchapentry{Command Line Editing}{8}{Command Line Editing}{131}
+@numsecentry{Introduction to Line Editing}{8.1}{Introduction and Notation}{131}
+@numsecentry{Readline Interaction}{8.2}{Readline Interaction}{131}
+@numsubsecentry{Readline Bare Essentials}{8.2.1}{Readline Bare Essentials}{132}
+@numsubsecentry{Readline Movement Commands}{8.2.2}{Readline Movement Commands}{132}
+@numsubsecentry{Readline Killing Commands}{8.2.3}{Readline Killing Commands}{133}
+@numsubsecentry{Readline Arguments}{8.2.4}{Readline Arguments}{133}
+@numsubsecentry{Searching for Commands in the History}{8.2.5}{Searching}{134}
+@numsecentry{Readline Init File}{8.3}{Readline Init File}{134}
+@numsubsecentry{Readline Init File Syntax}{8.3.1}{Readline Init File Syntax}{134}
+@numsubsecentry{Conditional Init Constructs}{8.3.2}{Conditional Init Constructs}{144}
+@numsubsecentry{Sample Init File}{8.3.3}{Sample Init File}{145}
+@numsecentry{Bindable Readline Commands}{8.4}{Bindable Readline Commands}{148}
+@numsubsecentry{Commands For Moving}{8.4.1}{Commands For Moving}{148}
+@numsubsecentry{Commands For Manipulating The History}{8.4.2}{Commands For History}{149}
+@numsubsecentry{Commands For Changing Text}{8.4.3}{Commands For Text}{151}
+@numsubsecentry{Killing And Yanking}{8.4.4}{Commands For Killing}{152}
+@numsubsecentry{Specifying Numeric Arguments}{8.4.5}{Numeric Arguments}{154}
+@numsubsecentry{Letting Readline Type For You}{8.4.6}{Commands For Completion}{154}
+@numsubsecentry{Keyboard Macros}{8.4.7}{Keyboard Macros}{156}
+@numsubsecentry{Some Miscellaneous Commands}{8.4.8}{Miscellaneous Commands}{156}
+@numsecentry{Readline vi Mode}{8.5}{Readline vi Mode}{159}
+@numsecentry{Programmable Completion}{8.6}{Programmable Completion}{159}
+@numsecentry{Programmable Completion Builtins}{8.7}{Programmable Completion Builtins}{162}
+@numsecentry{A Programmable Completion Example}{8.8}{A Programmable Completion Example}{166}
+@numchapentry{Using History Interactively}{9}{Using History Interactively}{169}
+@numsecentry{Bash History Facilities}{9.1}{Bash History Facilities}{169}
+@numsecentry{Bash History Builtins}{9.2}{Bash History Builtins}{170}
+@numsecentry{History Expansion}{9.3}{History Interaction}{172}
+@numsubsecentry{Event Designators}{9.3.1}{Event Designators}{173}
+@numsubsecentry{Word Designators}{9.3.2}{Word Designators}{174}
+@numsubsecentry{Modifiers}{9.3.3}{Modifiers}{175}
+@numchapentry{Installing Bash}{10}{Installing Bash}{176}
+@numsecentry{Basic Installation}{10.1}{Basic Installation}{176}
+@numsecentry{Compilers and Options}{10.2}{Compilers and Options}{177}
+@numsecentry{Compiling For Multiple Architectures}{10.3}{Compiling For Multiple Architectures}{177}
+@numsecentry{Installation Names}{10.4}{Installation Names}{178}
+@numsecentry{Specifying the System Type}{10.5}{Specifying the System Type}{178}
+@numsecentry{Sharing Defaults}{10.6}{Sharing Defaults}{178}
+@numsecentry{Operation Controls}{10.7}{Operation Controls}{179}
+@numsecentry{Optional Features}{10.8}{Optional Features}{179}
+@appentry{Reporting Bugs}{A}{Reporting Bugs}{185}
+@appentry{Major Differences From The Bourne Shell}{B}{Major Differences From The Bourne Shell}{186}
+@appsecentry{Implementation Differences From The SVR4.2 Shell}{B.1}{}{191}
+@appentry{GNU Free Documentation License}{C}{GNU Free Documentation License}{193}
+@appentry{Indexes}{D}{Indexes}{201}
+@appsecentry{Index of Shell Builtin Commands}{D.1}{Builtin Index}{201}
+@appsecentry{Index of Shell Reserved Words}{D.2}{Reserved Word Index}{202}
+@appsecentry{Parameter and Variable Index}{D.3}{Variable Index}{203}
+@appsecentry{Function Index}{D.4}{Function Index}{205}
+@appsecentry{Concept Index}{D.5}{Concept Index}{207}
index bb93b795ca62c48ac1558b23d8d2b8f18b21ef0d..9ffdd4bf401578722db7b08cf2fcf5f886face87 100644 (file)
 \entry{TMOUT}{99}{\code {TMOUT}}
 \entry{TMPDIR}{99}{\code {TMPDIR}}
 \entry{UID}{99}{\code {UID}}
-\entry{auto_resume}{129}{\code {auto_resume}}
-\entry{active-region-start-color}{134}{\code {active-region-start-color}}
-\entry{active-region-end-color}{134}{\code {active-region-end-color}}
-\entry{bell-style}{134}{\code {bell-style}}
-\entry{bind-tty-special-chars}{135}{\code {bind-tty-special-chars}}
-\entry{blink-matching-paren}{135}{\code {blink-matching-paren}}
-\entry{colored-completion-prefix}{135}{\code {colored-completion-prefix}}
-\entry{colored-stats}{135}{\code {colored-stats}}
-\entry{comment-begin}{135}{\code {comment-begin}}
-\entry{completion-display-width}{135}{\code {completion-display-width}}
-\entry{completion-ignore-case}{135}{\code {completion-ignore-case}}
-\entry{completion-map-case}{135}{\code {completion-map-case}}
-\entry{completion-prefix-display-length}{135}{\code {completion-prefix-display-length}}
-\entry{completion-query-items}{136}{\code {completion-query-items}}
-\entry{convert-meta}{136}{\code {convert-meta}}
-\entry{disable-completion}{136}{\code {disable-completion}}
-\entry{echo-control-characters}{136}{\code {echo-control-characters}}
-\entry{editing-mode}{136}{\code {editing-mode}}
-\entry{emacs-mode-string}{136}{\code {emacs-mode-string}}
-\entry{enable-active-region The}{137}{\code {enable-active-region The}}
-\entry{enable-bracketed-paste}{137}{\code {enable-bracketed-paste}}
-\entry{enable-keypad}{137}{\code {enable-keypad}}
-\entry{enable-meta-key}{137}{\code {enable-meta-key}}
-\entry{expand-tilde}{137}{\code {expand-tilde}}
-\entry{force-meta-prefix}{137}{\code {force-meta-prefix}}
-\entry{history-preserve-point}{138}{\code {history-preserve-point}}
-\entry{history-size}{138}{\code {history-size}}
-\entry{horizontal-scroll-mode}{138}{\code {horizontal-scroll-mode}}
-\entry{input-meta}{138}{\code {input-meta}}
-\entry{meta-flag}{138}{\code {meta-flag}}
-\entry{isearch-terminators}{138}{\code {isearch-terminators}}
-\entry{keymap}{138}{\code {keymap}}
-\entry{mark-modified-lines}{139}{\code {mark-modified-lines}}
-\entry{mark-symlinked-directories}{139}{\code {mark-symlinked-directories}}
-\entry{match-hidden-files}{139}{\code {match-hidden-files}}
-\entry{menu-complete-display-prefix}{139}{\code {menu-complete-display-prefix}}
-\entry{output-meta}{139}{\code {output-meta}}
-\entry{page-completions}{139}{\code {page-completions}}
-\entry{revert-all-at-newline}{140}{\code {revert-all-at-newline}}
-\entry{search-ignore-case}{140}{\code {search-ignore-case}}
-\entry{show-all-if-ambiguous}{140}{\code {show-all-if-ambiguous}}
-\entry{show-all-if-unmodified}{140}{\code {show-all-if-unmodified}}
-\entry{show-mode-in-prompt}{140}{\code {show-mode-in-prompt}}
-\entry{skip-completed-text}{140}{\code {skip-completed-text}}
-\entry{vi-cmd-mode-string}{140}{\code {vi-cmd-mode-string}}
-\entry{vi-ins-mode-string}{141}{\code {vi-ins-mode-string}}
-\entry{visible-stats}{141}{\code {visible-stats}}
+\entry{auto_resume}{130}{\code {auto_resume}}
+\entry{active-region-start-color}{135}{\code {active-region-start-color}}
+\entry{active-region-end-color}{135}{\code {active-region-end-color}}
+\entry{bell-style}{135}{\code {bell-style}}
+\entry{bind-tty-special-chars}{136}{\code {bind-tty-special-chars}}
+\entry{blink-matching-paren}{136}{\code {blink-matching-paren}}
+\entry{colored-completion-prefix}{136}{\code {colored-completion-prefix}}
+\entry{colored-stats}{136}{\code {colored-stats}}
+\entry{comment-begin}{136}{\code {comment-begin}}
+\entry{completion-display-width}{136}{\code {completion-display-width}}
+\entry{completion-ignore-case}{136}{\code {completion-ignore-case}}
+\entry{completion-map-case}{136}{\code {completion-map-case}}
+\entry{completion-prefix-display-length}{136}{\code {completion-prefix-display-length}}
+\entry{completion-query-items}{137}{\code {completion-query-items}}
+\entry{convert-meta}{137}{\code {convert-meta}}
+\entry{disable-completion}{137}{\code {disable-completion}}
+\entry{echo-control-characters}{137}{\code {echo-control-characters}}
+\entry{editing-mode}{137}{\code {editing-mode}}
+\entry{emacs-mode-string}{137}{\code {emacs-mode-string}}
+\entry{enable-active-region The}{138}{\code {enable-active-region The}}
+\entry{enable-bracketed-paste}{138}{\code {enable-bracketed-paste}}
+\entry{enable-keypad}{138}{\code {enable-keypad}}
+\entry{enable-meta-key}{138}{\code {enable-meta-key}}
+\entry{expand-tilde}{138}{\code {expand-tilde}}
+\entry{force-meta-prefix}{138}{\code {force-meta-prefix}}
+\entry{history-preserve-point}{139}{\code {history-preserve-point}}
+\entry{history-size}{139}{\code {history-size}}
+\entry{horizontal-scroll-mode}{139}{\code {horizontal-scroll-mode}}
+\entry{input-meta}{139}{\code {input-meta}}
+\entry{meta-flag}{139}{\code {meta-flag}}
+\entry{isearch-terminators}{139}{\code {isearch-terminators}}
+\entry{keymap}{139}{\code {keymap}}
+\entry{mark-modified-lines}{140}{\code {mark-modified-lines}}
+\entry{mark-symlinked-directories}{140}{\code {mark-symlinked-directories}}
+\entry{match-hidden-files}{140}{\code {match-hidden-files}}
+\entry{menu-complete-display-prefix}{140}{\code {menu-complete-display-prefix}}
+\entry{output-meta}{140}{\code {output-meta}}
+\entry{page-completions}{140}{\code {page-completions}}
+\entry{revert-all-at-newline}{141}{\code {revert-all-at-newline}}
+\entry{search-ignore-case}{141}{\code {search-ignore-case}}
+\entry{show-all-if-ambiguous}{141}{\code {show-all-if-ambiguous}}
+\entry{show-all-if-unmodified}{141}{\code {show-all-if-unmodified}}
+\entry{show-mode-in-prompt}{141}{\code {show-mode-in-prompt}}
+\entry{skip-completed-text}{141}{\code {skip-completed-text}}
+\entry{vi-cmd-mode-string}{141}{\code {vi-cmd-mode-string}}
+\entry{vi-ins-mode-string}{142}{\code {vi-ins-mode-string}}
+\entry{visible-stats}{142}{\code {visible-stats}}
index 484d1a5172b6b9f1697f0cf27559c86dce8e62d3..1d8024c94cd6c3f57c3c8886219a17e6e2e5829d 100644 (file)
@@ -26,9 +26,9 @@
 \initial {0}
 \entry{\code {0}}{24}
 \initial {A}
-\entry{\code {active-region-end-color}}{134}
-\entry{\code {active-region-start-color}}{134}
-\entry{\code {auto_resume}}{129}
+\entry{\code {active-region-end-color}}{135}
+\entry{\code {active-region-start-color}}{135}
+\entry{\code {auto_resume}}{130}
 \initial {B}
 \entry{\code {BASH}}{87}
 \entry{\code {BASH_ALIASES}}{87}
 \entry{\code {BASH_XTRACEFD}}{90}
 \entry{\code {BASHOPTS}}{87}
 \entry{\code {BASHPID}}{87}
-\entry{\code {bell-style}}{134}
-\entry{\code {bind-tty-special-chars}}{135}
-\entry{\code {blink-matching-paren}}{135}
+\entry{\code {bell-style}}{135}
+\entry{\code {bind-tty-special-chars}}{136}
+\entry{\code {blink-matching-paren}}{136}
 \initial {C}
 \entry{\code {CDPATH}}{86}
 \entry{\code {CHILD_MAX}}{90}
-\entry{\code {colored-completion-prefix}}{135}
-\entry{\code {colored-stats}}{135}
+\entry{\code {colored-completion-prefix}}{136}
+\entry{\code {colored-stats}}{136}
 \entry{\code {COLUMNS}}{90}
-\entry{\code {comment-begin}}{135}
+\entry{\code {comment-begin}}{136}
 \entry{\code {COMP_CWORD}}{90}
 \entry{\code {COMP_KEY}}{90}
 \entry{\code {COMP_LINE}}{91}
 \entry{\code {COMP_TYPE}}{91}
 \entry{\code {COMP_WORDBREAKS}}{91}
 \entry{\code {COMP_WORDS}}{91}
-\entry{\code {completion-display-width}}{135}
-\entry{\code {completion-ignore-case}}{135}
-\entry{\code {completion-map-case}}{135}
-\entry{\code {completion-prefix-display-length}}{135}
-\entry{\code {completion-query-items}}{136}
+\entry{\code {completion-display-width}}{136}
+\entry{\code {completion-ignore-case}}{136}
+\entry{\code {completion-map-case}}{136}
+\entry{\code {completion-prefix-display-length}}{136}
+\entry{\code {completion-query-items}}{137}
 \entry{\code {COMPREPLY}}{91}
-\entry{\code {convert-meta}}{136}
+\entry{\code {convert-meta}}{137}
 \entry{\code {COPROC}}{91}
 \initial {D}
 \entry{\code {DIRSTACK}}{91}
-\entry{\code {disable-completion}}{136}
+\entry{\code {disable-completion}}{137}
 \initial {E}
-\entry{\code {echo-control-characters}}{136}
-\entry{\code {editing-mode}}{136}
-\entry{\code {emacs-mode-string}}{136}
+\entry{\code {echo-control-characters}}{137}
+\entry{\code {editing-mode}}{137}
+\entry{\code {emacs-mode-string}}{137}
 \entry{\code {EMACS}}{92}
-\entry{\code {enable-active-region The}}{137}
-\entry{\code {enable-bracketed-paste}}{137}
-\entry{\code {enable-keypad}}{137}
-\entry{\code {enable-meta-key}}{137}
+\entry{\code {enable-active-region The}}{138}
+\entry{\code {enable-bracketed-paste}}{138}
+\entry{\code {enable-keypad}}{138}
+\entry{\code {enable-meta-key}}{138}
 \entry{\code {ENV}}{92}
 \entry{\code {EPOCHREALTIME}}{92}
 \entry{\code {EPOCHSECONDS}}{92}
 \entry{\code {EUID}}{92}
 \entry{\code {EXECIGNORE}}{92}
-\entry{\code {expand-tilde}}{137}
+\entry{\code {expand-tilde}}{138}
 \initial {F}
 \entry{\code {FCEDIT}}{92}
 \entry{\code {FIGNORE}}{92}
-\entry{\code {force-meta-prefix}}{137}
+\entry{\code {force-meta-prefix}}{138}
 \entry{\code {FUNCNAME}}{92}
 \entry{\code {FUNCNEST}}{93}
 \initial {G}
 \entry{\code {HISTFILE}}{94}
 \entry{\code {HISTFILESIZE}}{94}
 \entry{\code {HISTIGNORE}}{94}
-\entry{\code {history-preserve-point}}{138}
-\entry{\code {history-size}}{138}
+\entry{\code {history-preserve-point}}{139}
+\entry{\code {history-size}}{139}
 \entry{\code {HISTSIZE}}{95}
 \entry{\code {HISTTIMEFORMAT}}{95}
 \entry{\code {HOME}}{86}
-\entry{\code {horizontal-scroll-mode}}{138}
+\entry{\code {horizontal-scroll-mode}}{139}
 \entry{\code {HOSTFILE}}{95}
 \entry{\code {HOSTNAME}}{95}
 \entry{\code {HOSTTYPE}}{95}
 \initial {I}
 \entry{\code {IFS}}{86}
 \entry{\code {IGNOREEOF}}{95}
-\entry{\code {input-meta}}{138}
+\entry{\code {input-meta}}{139}
 \entry{\code {INPUTRC}}{95}
 \entry{\code {INSIDE_EMACS}}{95}
-\entry{\code {isearch-terminators}}{138}
+\entry{\code {isearch-terminators}}{139}
 \initial {K}
-\entry{\code {keymap}}{138}
+\entry{\code {keymap}}{139}
 \initial {L}
 \entry{\code {LANG}}{8, 96}
 \entry{\code {LC_ALL}}{96}
 \entry{\code {MAILCHECK}}{96}
 \entry{\code {MAILPATH}}{86}
 \entry{\code {MAPFILE}}{96}
-\entry{\code {mark-modified-lines}}{139}
-\entry{\code {mark-symlinked-directories}}{139}
-\entry{\code {match-hidden-files}}{139}
-\entry{\code {menu-complete-display-prefix}}{139}
-\entry{\code {meta-flag}}{138}
+\entry{\code {mark-modified-lines}}{140}
+\entry{\code {mark-symlinked-directories}}{140}
+\entry{\code {match-hidden-files}}{140}
+\entry{\code {menu-complete-display-prefix}}{140}
+\entry{\code {meta-flag}}{139}
 \initial {O}
 \entry{\code {OLDPWD}}{96}
 \entry{\code {OPTARG}}{86}
 \entry{\code {OPTERR}}{96}
 \entry{\code {OPTIND}}{86}
 \entry{\code {OSTYPE}}{96}
-\entry{\code {output-meta}}{139}
+\entry{\code {output-meta}}{140}
 \initial {P}
-\entry{\code {page-completions}}{139}
+\entry{\code {page-completions}}{140}
 \entry{\code {PATH}}{86}
 \entry{\code {PIPESTATUS}}{97}
 \entry{\code {POSIXLY_CORRECT}}{97}
 \entry{\code {READLINE_MARK}}{98}
 \entry{\code {READLINE_POINT}}{98}
 \entry{\code {REPLY}}{98}
-\entry{\code {revert-all-at-newline}}{140}
+\entry{\code {revert-all-at-newline}}{141}
 \initial {S}
-\entry{\code {search-ignore-case}}{140}
+\entry{\code {search-ignore-case}}{141}
 \entry{\code {SECONDS}}{98}
 \entry{\code {SHELL}}{98}
 \entry{\code {SHELLOPTS}}{98}
 \entry{\code {SHLVL}}{98}
-\entry{\code {show-all-if-ambiguous}}{140}
-\entry{\code {show-all-if-unmodified}}{140}
-\entry{\code {show-mode-in-prompt}}{140}
-\entry{\code {skip-completed-text}}{140}
+\entry{\code {show-all-if-ambiguous}}{141}
+\entry{\code {show-all-if-unmodified}}{141}
+\entry{\code {show-mode-in-prompt}}{141}
+\entry{\code {skip-completed-text}}{141}
 \entry{\code {SRANDOM}}{98}
 \initial {T}
 \entry{\code {TEXTDOMAIN}}{8}
 \initial {U}
 \entry{\code {UID}}{99}
 \initial {V}
-\entry{\code {vi-cmd-mode-string}}{140}
-\entry{\code {vi-ins-mode-string}}{141}
-\entry{\code {visible-stats}}{141}
+\entry{\code {vi-cmd-mode-string}}{141}
+\entry{\code {vi-ins-mode-string}}{142}
+\entry{\code {visible-stats}}{142}
index 8e9201d166b79ec8009a3d7f12e1ad5086f060cd..b3f81be4adefc04952b4ca602b0390e06bd0dfed 100644 (file)
@@ -2,10 +2,10 @@
 Copyright (C) 1988-2026 Free Software Foundation, Inc.
 @end ignore
 
-@set LASTCHANGE Mon Mar 16 15:38:02 EDT 2026
+@set LASTCHANGE Wed May  6 16:08:14 EDT 2026
 
 @set EDITION 5.3
 @set VERSION 5.3
 
-@set UPDATED 16 March 2026
-@set UPDATED-MONTH March 2026
+@set UPDATED 6 May 2026
+@set UPDATED-MONTH May 2026
index b8d7d4d83d6d85095c6aa7371f72500bf30b93f3..3c448ee08c42fcf0369d893f17da7aba1094f138 100644 (file)
@@ -42,6 +42,7 @@
  */
 
 /* Headers */
+#include <config.h>
 
 #include <errno.h>
 #include <fcntl.h>
@@ -52,6 +53,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
+
 #include "shmbutil.h"
 #include "loadables.h"
 #include <array.h>                 /* Has to go after stdint & loadables (!) */
@@ -86,6 +88,7 @@ getlen(char *last_trlg_byte, int num_bytes_left)
 
   if ((*p-- & mask[1]) != mask[0])
     goto not_utf_8;
+  num_bytes_left--;
   n = 2;
   for (i = num_bytes_left >= 3 ? 3 : num_bytes_left; i > 0; i--, p--, n++)
   {                                /* 3 more bytes max */
@@ -119,9 +122,9 @@ reverse_line(SHELL_VAR *v, arrayind_t *ind, char *line, size_t len,
      * with NULL value and putting an allocated buffer in it.
      */
     bind_array_element (v, (*ind)++, (char *)NULL, 0);
-    buf = xmalloc(len + 1);        /* +1 for NUL */
+    buf = xmalloc(len + outputsep + 1);        /* +1 for NUL */
     (((ARRAY *)v->value)->lastref)->value = buf;
-    buf[len] = '\0';
+    buf[len + outputsep] = '\0';
   }                                /* if (v) */
 #endif
 
@@ -167,7 +170,7 @@ rev_internal(WORD_LIST *list)
   int rval;
   char sep;
   int opt;
-  int fd;
+  int fd, closefd;
 
   v = 0;
   rval = EXECUTION_SUCCESS;
@@ -177,7 +180,7 @@ rev_internal(WORD_LIST *list)
   ind = 0;
 
   reset_internal_getopt();
-  while ((opt = internal_getopt(list, "0:a:h")) != -1)
+  while ((opt = internal_getopt(list, "0a:h")) != -1)
     switch (opt)
     {
       case '0':
@@ -219,11 +222,15 @@ rev_internal(WORD_LIST *list)
   do
   {
 /* for each file */
+    closefd = 0;
 
     if (l == 0)
       fd = 0;
     else
-      SYSCALL(fd, open(l->word->word, O_RDONLY));
+      {
+        SYSCALL(fd, open(l->word->word, O_RDONLY));
+        closefd = fd != -1;;
+      }
     if (fd == -1)
     {
       file_error(l->word->word);
@@ -250,7 +257,7 @@ rev_internal(WORD_LIST *list)
       }
       reverse_line(v, &ind, line, n, outputsep, sep);
     }                              /* while ((n = zgetline(...) !=-1) */
-    if (fd != 0)
+    if (closefd)
       close(fd);
 
   next_file:
index dc0a2a3a1ce169e2b0003a5b4b676b08caa54045..ea361106b718a798d11fd09bba576d8cded7fe38 100644 (file)
@@ -3584,7 +3584,7 @@ execute_select_command (SELECT_COM *select_command)
   /* command and arithmetic substitution, parameter and variable expansion,
      word splitting, pathname expansion, and quote removal. */
   list = releaser = expand_words_no_vars (select_command->map_list);
-  list_len = list_length ((GENERIC_LIST *)list);
+  list_len = wlist_length (list);
   if (list == 0 || list_len == 0)
     {
       if (list)
index ca0c6c395527b51b41ac947bd5013388087ec12f..934b0050d4653646ed4940825154f736504632c6 100644 (file)
--- a/externs.h
+++ b/externs.h
@@ -155,10 +155,12 @@ extern int locale_decpoint (void);
 /* Declarations for functions defined in list.c. */
 extern void list_walk (GENERIC_LIST *, sh_glist_func_t *);
 extern void wlist_walk (WORD_LIST *, sh_icpfunc_t *);
-extern GENERIC_LIST *list_reverse (GENERIC_LIST *);
+extern void *list_reverse (void *);
 extern int list_length (GENERIC_LIST *);
+extern int wlist_length (WORD_LIST *);
 extern GENERIC_LIST *list_append (GENERIC_LIST *, GENERIC_LIST *);
-extern GENERIC_LIST *list_emove (GENERIC_LIST **, sh_gcp_func_t *, char *); /* unused */
+extern WORD_LIST *wlist_append (WORD_LIST *, WORD_LIST *);
+extern GENERIC_LIST *list_remove (GENERIC_LIST **, sh_gcp_func_t *, char *); /* unused */
 
 /* Declarations for functions defined in stringlib.c */
 extern int find_string_in_alist (char *, STRING_INT_ALIST *, int);
index 8827578b54e42a261230a9ebe63eac1bafe05c36..b9fd1018a56612194f64e9352110c5b6351bdbf9 100644 (file)
--- a/general.h
+++ b/general.h
@@ -133,7 +133,7 @@ typedef struct {
 
 /* A macro to avoid making an unnecessary function call. */
 #define REVERSE_LIST(list, type) \
-  ((list && list->next) ? (type)list_reverse ((GENERIC_LIST *)list) \
+  ((list && list->next) ? (type)list_reverse ((void *)list) \
                        : (type)(list))
 
 #if __GNUC__ > 1
index 2e61287f7a9507a08311fda7a41ed32be547f6b8..6e7a78367b22fa790efc6485fb378a750e36a8c4 100644 (file)
@@ -1,6 +1,6 @@
 /* stringlist.c - functions to handle a generic `list of strings' structure */
 
-/* Copyright (C) 2000-2019, 2022-2023 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2019, 2022-2026 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -253,7 +253,7 @@ strlist_from_word_list (WORD_LIST *list, int alloc, int starting_index, int *ip)
         *ip = 0;
       return ((STRINGLIST *)0);
     }
-  slen = list_length ((GENERIC_LIST *)list);
+  slen = wlist_length (list);
   ret = (STRINGLIST *)xmalloc (sizeof (STRINGLIST));
   ret->list = strvec_from_word_list (list, alloc, starting_index, &len);
   ret->list_size = slen + starting_index;
index dc61c24cef0f3e6d0aeabefd4ecfef5ef417d393..8017ee63e06a6349606cdcd825e057ebe21975d0 100644 (file)
@@ -1,6 +1,6 @@
 /* stringvec.c - functions for managing arrays of strings. */
 
-/* Copyright (C) 2000-2002,2022-2024 Free Software Foundation, Inc.
+/* Copyright (C) 2000-2002,2022-2026 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -206,7 +206,7 @@ strvec_from_word_list (WORD_LIST *list, int alloc, int starting_index, int *ip)
   size_t count;
   char **array;
 
-  count = list_length ((GENERIC_LIST *)list);
+  count = wlist_length (list);
   array = (char **)xmalloc ((1 + count + starting_index) * sizeof (char *));
 
   for (count = 0; count < starting_index; count++)
diff --git a/list.c b/list.c
index a470cf7f8246d54f9f5f32211c9c776f724e34b6..e5f9f69ed274900efca640310a0a7c66769b6bd4 100644 (file)
--- a/list.c
+++ b/list.c
@@ -1,6 +1,6 @@
 /* list.c - Functions for manipulating linked lists of objects. */
 
-/* Copyright (C) 1996-2009,2022 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2026 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -55,31 +55,54 @@ wlist_walk (WORD_LIST *words, sh_icpfunc_t *function)
 /* Reverse the chain of structures in LIST.  Output the new head
    of the chain.  You should always assign the output value of this
    function to something, or you will lose the chain. */
-GENERIC_LIST *
-list_reverse (GENERIC_LIST *list)
+void *
+list_reverse (void *head)
 {
-  register GENERIC_LIST *next, *prev;
-
-  for (prev = (GENERIC_LIST *)NULL; list; )
+  void *next, *prev, *list;
+
+  prev = NULL;
+  next = NULL;
+  list = head;
+
+  /* We rely on the fact that the C standard guarantees that structures are
+     not padded: the first member of the struct has the same address as the
+     struct itself. So *(void **)X is effectively X->next as long as next is
+     the first member of struct X. We'll see if this gets past gcc's strict
+     aliasing rules. */
+  while (list != NULL)
     {
-      next = list->next;
-      list->next = prev;
+      next = *(void **)list;           /* effectively list->next */
+      *(void **)list = prev;           /* effectively set list->next */
+
       prev = list;
       list = next;
     }
+
   return (prev);
 }
 
+#ifdef INCLUDE_UNUSED
 /* Return the number of elements in LIST, a generic list. */
 int
 list_length (GENERIC_LIST *list)
 {
-  register int i;
+  int i;
+
+  for (i = 0; list; list = list->next, i++);
+  return (i);
+}
+#endif
+
+int
+wlist_length (WORD_LIST *list)
+{
+  int i;
 
   for (i = 0; list; list = list->next, i++);
   return (i);
 }
 
+#if defined (INCLUDE_UNUSED)
 /* Append TAIL to HEAD.  Return the header of the list. */
 GENERIC_LIST *
 list_append (GENERIC_LIST *head, GENERIC_LIST *tail)
@@ -94,6 +117,21 @@ list_append (GENERIC_LIST *head, GENERIC_LIST *tail)
   t_head->next = tail;
   return (head);
 }
+#endif
+
+WORD_LIST *
+wlist_append (WORD_LIST *head, WORD_LIST *tail)
+{
+  register WORD_LIST *t_head;
+
+  if (head == 0)
+    return (tail);
+
+  for (t_head = head; t_head->next; t_head = t_head->next)
+    ;
+  t_head->next = tail;
+  return (head);
+}
 
 #ifdef INCLUDE_UNUSED
 /* Delete the element of LIST which satisfies the predicate function COMPARER.
index bc65ff3f24581c15b90d1c8e4661bdb712003a2a..d7ecc16c2e6a23bcf25bcd2dbee2a9a765e0c716 100644 (file)
@@ -1,6 +1,6 @@
 /* pcomplete.c - functions to generate lists of matches for programmable completion. */
 
-/* Copyright (C) 1999-2024 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2026 Free Software Foundation, Inc.
 
    This file is part of GNU Bash, the Bourne Again SHell.
 
@@ -880,7 +880,7 @@ gen_wordlist_matches (COMPSPEC *cs, const char *text)
   l2 = expand_words_shellexp (l);
   dispose_words (l);
 
-  nw = list_length ((GENERIC_LIST *)l2);
+  nw = wlist_length (l2);
   sl = strlist_create (nw + 1);
 
   ntxt = bash_dequote_text (text);
diff --git a/subst.c b/subst.c
index 37014c5e6a714d7b58fd01ae7d8914970bb9854c..121a7a3c4c791ca11c90eb0c4c8991b2ffd39303 100644 (file)
--- a/subst.c
+++ b/subst.c
@@ -12836,7 +12836,7 @@ glob_expand_word_list (WORD_LIST *tlist, int eflags)
 
          if (glob_list)
            {
-             output_list = (WORD_LIST *)list_append ((GENERIC_LIST *)glob_list, (GENERIC_LIST *)output_list);
+             output_list = wlist_append (glob_list, output_list);
              PREPEND_LIST (tlist, disposables);
            }
          else if (fail_glob_expansion != 0)
@@ -13301,7 +13301,7 @@ shell_expand_word_list (WORD_LIST *tlist, int eflags)
        }
 
       expanded = REVERSE_LIST (temp_list, WORD_LIST *);
-      new_list = (WORD_LIST *)list_append ((GENERIC_LIST *)expanded, (GENERIC_LIST *)new_list);
+      new_list = wlist_append (expanded, new_list);
     }
 
   if (orig_list)