interim fix for generic list functions to avoid pointer aliasing issues; documentation updates

This commit is contained in:
Chet Ramey
2026-05-08 11:36:36 -04:00
parent 330223688c
commit 669b32f676
36 changed files with 1124 additions and 889 deletions
+22
View 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
+2 -1
View 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)
+2 -2
View 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)
+2 -2
View 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)
+51 -45
View File
@@ -152,80 +152,86 @@ IINNVVOOCCAATTIIOONN
includes ii if the shell is interactive, so a shell script or a startup
file can test this state.
The following paragraphs describe how bbaasshh executes its startup files.
If any of the files exist but cannot be read, bbaasshh reports an error.
Tildes are expanded in filenames as described below under TTiillddee EExxppaann--
A _n_o_n_-_i_n_t_e_r_a_c_t_i_v_e _s_h_e_l_l is, not surprisingly, one that does not satisfy
the tests for interactivity given above. A non-interactive shell is
usually started to run commands from a script file supplied as an argu-
ment (a _s_h_e_l_l _s_c_r_i_p_t) or from a string supplied with the --cc option.
The following paragraphs describe how bbaasshh executes its startup files.
If any of the files exist but cannot be read, bbaasshh reports an error.
Tildes in filenames are expanded as described below under TTiillddee EExxppaann--
ssiioonn in the EEXXPPAANNSSIIOONN section.
When bbaasshh is invoked as an interactive login shell, or as a non-inter-
active shell with the ----llooggiinn option, it first reads and executes com-
mands from the file _/_e_t_c_/_p_r_o_f_i_l_e, if that file exists. After reading
When bbaasshh is invoked as an interactive login shell, or as a non-inter-
active shell with the ----llooggiinn option, it first reads and executes com-
mands from the file _/_e_t_c_/_p_r_o_f_i_l_e, if that file exists. After reading
that file, it looks for _~_/_._b_a_s_h___p_r_o_f_i_l_e, _~_/_._b_a_s_h___l_o_g_i_n, and _~_/_._p_r_o_f_i_l_e,
in that order, and reads and executes commands from the first one that
exists and is readable. The ----nnoopprrooffiillee option may be used when the
in that order, and reads and executes commands from the first one that
exists and is readable. The ----nnoopprrooffiillee option may be used when the
shell is started to inhibit this behavior.
When an interactive login shell exits, or a non-interactive login shell
executes the eexxiitt builtin command, bbaasshh reads and executes commands
executes the eexxiitt builtin command, bbaasshh reads and executes commands
from the file _~_/_._b_a_s_h___l_o_g_o_u_t, if it exists.
When an interactive shell that is not a login shell is started, bbaasshh
reads and executes commands from _~_/_._b_a_s_h_r_c, if that file exists. The
----nnoorrcc option inhibits this behavior. The ----rrccffiillee _f_i_l_e option causes
When an interactive shell that is not a login shell is started, bbaasshh
reads and executes commands from _~_/_._b_a_s_h_r_c, if that file exists. The
----nnoorrcc option inhibits this behavior. The ----rrccffiillee _f_i_l_e option causes
bbaasshh to use _f_i_l_e instead of _~_/_._b_a_s_h_r_c.
When bbaasshh is started non-interactively, to run a shell script, for ex-
ample, it looks for the variable BBAASSHH__EENNVV in the environment, expands
its value if it appears there, and uses the expanded value as the name
of a file to read and execute. BBaasshh behaves as if the following com-
mand were executed:
When bbaasshh is started non-interactively, it looks for the variable
BBAASSHH__EENNVV in the environment, expands its value if it appears there, and
uses the expanded value as the name of a file to read and execute.
BBaasshh behaves as if the following command were executed:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
but does not use the value of the PPAATTHH variable to search for the file-
name.
If bbaasshh is invoked with the name sshh, it tries to mimic the startup be-
havior of historical versions of sshh as closely as possible, while con-
forming to the POSIX standard as well. When invoked as an interactive
login shell, or a non-interactive shell with the ----llooggiinn option, it
first attempts to read and execute commands from _/_e_t_c_/_p_r_o_f_i_l_e and
If bbaasshh is invoked with the name sshh, it tries to mimic the startup be-
havior of historical versions of sshh as closely as possible, while con-
forming to the POSIX standard as well. When invoked as an interactive
login shell, or a non-interactive shell with the ----llooggiinn option, it
first attempts to read and execute commands from _/_e_t_c_/_p_r_o_f_i_l_e and
_~_/_._p_r_o_f_i_l_e, in that order. The ----nnoopprrooffiillee option inhibits this behav-
ior. When invoked as an interactive shell with the name sshh, bbaasshh looks
for the variable EENNVV, expands its value if it is defined, and uses the
expanded value as the name of a file to read and execute. Since a
shell invoked as sshh does not attempt to read and execute commands from
any other startup files, the ----rrccffiillee option has no effect. A non-in-
teractive shell invoked with the name sshh does not attempt to read any
for the variable EENNVV, expands its value if it is defined, and uses the
expanded value as the name of a file to read and execute. Since a
shell invoked as sshh does not attempt to read and execute commands from
any other startup files, the ----rrccffiillee option has no effect. A non-in-
teractive shell invoked with the name sshh does not attempt to read any
other startup files.
When invoked as sshh, bbaasshh enters posix mode after reading the startup
When invoked as sshh, bbaasshh enters posix mode after reading the startup
files.
When bbaasshh is started in posix mode, as with the ----ppoossiixx command line
When bbaasshh is started in posix mode, as with the ----ppoossiixx command line
option, it follows the POSIX standard for startup files. In this mode,
interactive shells expand the EENNVV variable and read and execute com-
mands from the file whose name is the expanded value. No other startup
files are read.
interactive shells expand the EENNVV variable and read and execute com-
mands from the file whose name is the expanded value. A posix-mode
shell does not attempt to read any other startup files, even when in-
voked as a login shell.
BBaasshh attempts to determine when it is being run with its standard input
connected to a network connection, as when executed by the historical
and rarely-seen remote shell daemon, usually _r_s_h_d, or the secure shell
daemon _s_s_h_d. If bbaasshh determines it is being run non-interactively in
this fashion, it reads and executes commands from _~_/_._b_a_s_h_r_c, if that
file exists and is readable. BBaasshh does not read this file if invoked
as sshh. The ----nnoorrcc option inhibits this behavior, and the ----rrccffiillee op-
tion makes bbaasshh use a different file instead of _~_/_._b_a_s_h_r_c, but neither
_r_s_h_d nor _s_s_h_d generally invoke the shell with those options or allow
connected to a network connection, as when executed by the secure shell
daemon _s_s_h_d or the historical and rarely-seen remote shell daemon, usu-
ally _r_s_h_d. If bbaasshh determines it is being run non-interactively in
this fashion, it reads and executes commands from _~_/_._b_a_s_h_r_c, if that
file exists and is readable. BBaasshh does not read this file if invoked
as sshh. The ----nnoorrcc option inhibits this behavior, and the ----rrccffiillee op-
tion makes bbaasshh use a different file instead of _~_/_._b_a_s_h_r_c, but neither
_s_s_h_d nor _r_s_h_d generally invoke the shell with those options or allow
them to be specified.
If the shell is started with the effective user (group) id not equal to
the real user (group) id, and the --pp option is not supplied, no startup
files are read, shell functions are not inherited from the environment,
the SSHHEELLLLOOPPTTSS, BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they ap-
pear in the environment, are ignored, and the effective user id is set
to the real user id. If the --pp option is supplied at invocation, the
startup behavior is the same, but the effective user id is not reset.
the SSHHEELLLLOOPPTTSS, BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they ap-
pear in the environment, are ignored, and the effective user id is set
to the real user id. If the --pp option is supplied at invocation, the
startup behavior is the same, but bbaasshh does not reset the effective
user id.
DDEEFFIINNIITTIIOONNSS
The following definitions are used throughout the rest of this docu-
@@ -7622,4 +7628,4 @@ BBUUGGSS
Array variables may not (yet) be exported.
GNU Bash 5.3 2026 March 3 _B_A_S_H(1)
GNU Bash 5.3 2026 April 29 _B_A_S_H(1)
+19 -10
View 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 ,
+20 -12
View 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>
+119 -96
View 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

File: bash.info, Node: Bash Startup Files, Next: Interactive Shells, Prev: Invoking Bash, Up: Bash Features
@@ -6684,8 +6706,8 @@ File: bash.info, Node: Bash Startup Files, Next: Interactive Shells, Prev: In
======================
This section describes how Bash executes its startup files. If any of
the files exist but cannot be read, Bash reports an error. Tildes are
expanded in filenames as described above under Tilde Expansion (*note
the files exist but cannot be read, Bash reports an error. Tildes in
filenames are expanded as described above under Tilde Expansion (*note
Tilde Expansion::).
Interactive shells are described in *note Interactive Shells::.
@@ -6763,21 +6785,22 @@ Invoked in POSIX mode
When Bash is started in POSIX mode, as with the --posix command line
option, it follows the POSIX standard for startup files. In this mode,
interactive shells expand the ENV variable and read and execute
commands from the file whose name is the expanded value. No other
startup files are read.
commands from the file whose name is the expanded value. A posix-mode
shell does not attempt to read any other startup files, even when
invoked as a login shell.
Invoked by remote shell daemon
..............................
Bash attempts to determine when it is being run with its standard input
connected to a network connection, as when executed by the historical
and rarely-seen remote shell daemon, usually rshd, or the secure shell
daemon sshd. If Bash determines it is being run non-interactively in
connected to a network connection, as when executed by the secure shell
daemon sshd. or the historical and rarely-seen remote shell daemon,
usually rshd. If Bash determines it is being run non-interactively in
this fashion, it reads and executes commands from ~/.bashrc, if that
file exists and is readable. Bash does not read this file if invoked as
sh. The --norc option inhibits this behavior, and the --rcfile
option makes Bash use a different file instead of ~/.bashrc, but
neither rshd nor sshd generally invoke the shell with those options
neither sshd nor rshd generally invoke the shell with those options
or allow them to be specified.
Invoked with unequal effective and real UID/GIDs
@@ -6789,8 +6812,8 @@ files are read, shell functions are not inherited from the environment,
the SHELLOPTS, BASHOPTS, CDPATH, and GLOBIGNORE variables, if
they appear in the environment, are ignored, and the effective user id
is set to the real user id. If the -p option is supplied at
invocation, the startup behavior is the same, but the effective user id
is not reset.
invocation, the startup behavior is the same, but Bash does not reset
the effective user id.

File: bash.info, Node: Interactive Shells, Next: Bash Conditional Expressions, Prev: Bash Startup Files, Up: Bash Features
@@ -13791,87 +13814,87 @@ Node: Environment140986
Node: Exit Status142889
Node: Signals144948
Node: Shell Scripts149896
Node: Shell Builtin Commands153194
Node: Bourne Shell Builtins155535
Node: Bash Builtins182254
Node: Modifying Shell Behavior219989
Node: The Set Builtin220331
Node: The Shopt Builtin232325
Node: Special Builtins249378
Node: Shell Variables250367
Node: Bourne Shell Variables250801
Node: Bash Variables253309
Node: Bash Features292593
Node: Invoking Bash293607
Node: Bash Startup Files300191
Node: Interactive Shells305433
Node: What is an Interactive Shell?305841
Node: Is this Shell Interactive?306503
Node: Interactive Shell Behavior307327
Node: Bash Conditional Expressions311088
Node: Shell Arithmetic316505
Node: Aliases319832
Node: Arrays322966
Node: The Directory Stack330668
Node: Directory Stack Builtins331465
Node: Controlling the Prompt335910
Node: The Restricted Shell338794
Node: Bash POSIX Mode341887
Node: Shell Compatibility Mode361703
Node: Job Control370710
Node: Job Control Basics371167
Node: Job Control Builtins377535
Node: Job Control Variables384323
Node: Command Line Editing385554
Node: Introduction and Notation387257
Node: Readline Interaction389609
Node: Readline Bare Essentials390797
Node: Readline Movement Commands392605
Node: Readline Killing Commands393601
Node: Readline Arguments395624
Node: Searching396714
Node: Readline Init File398957
Node: Readline Init File Syntax400260
Node: Conditional Init Constructs427211
Node: Sample Init File431596
Node: Bindable Readline Commands434716
Node: Commands For Moving436254
Node: Commands For History438718
Node: Commands For Text444109
Node: Commands For Killing448234
Node: Numeric Arguments451022
Node: Commands For Completion452174
Node: Keyboard Macros457870
Node: Miscellaneous Commands458571
Node: Readline vi Mode466114
Node: Programmable Completion467091
Node: Programmable Completion Builtins476827
Node: A Programmable Completion Example488564
Node: Using History Interactively493909
Node: Bash History Facilities494590
Node: Bash History Builtins498325
Node: History Interaction505920
Node: Event Designators510870
Node: Word Designators512448
Node: Modifiers514840
Node: Installing Bash516777
Node: Basic Installation517893
Node: Compilers and Options521769
Node: Compiling For Multiple Architectures522519
Node: Installation Names524272
Node: Specifying the System Type526506
Node: Sharing Defaults527252
Node: Operation Controls527966
Node: Optional Features528985
Node: Reporting Bugs541708
Node: Major Differences From The Bourne Shell543065
Node: GNU Free Documentation License564492
Node: Indexes589669
Node: Builtin Index590120
Node: Reserved Word Index597218
Node: Variable Index599663
Node: Function Index617076
Node: Concept Index631209
Node: Shell Builtin Commands153200
Node: Bourne Shell Builtins155541
Node: Bash Builtins182260
Node: Modifying Shell Behavior219995
Node: The Set Builtin220337
Node: The Shopt Builtin232331
Node: Special Builtins249384
Node: Shell Variables250373
Node: Bourne Shell Variables250807
Node: Bash Variables253315
Node: Bash Features292599
Node: Invoking Bash293613
Node: Bash Startup Files300843
Node: Interactive Shells306165
Node: What is an Interactive Shell?306573
Node: Is this Shell Interactive?307235
Node: Interactive Shell Behavior308059
Node: Bash Conditional Expressions311820
Node: Shell Arithmetic317237
Node: Aliases320564
Node: Arrays323698
Node: The Directory Stack331400
Node: Directory Stack Builtins332197
Node: Controlling the Prompt336642
Node: The Restricted Shell339526
Node: Bash POSIX Mode342619
Node: Shell Compatibility Mode362435
Node: Job Control371442
Node: Job Control Basics371899
Node: Job Control Builtins378267
Node: Job Control Variables385055
Node: Command Line Editing386286
Node: Introduction and Notation387989
Node: Readline Interaction390341
Node: Readline Bare Essentials391529
Node: Readline Movement Commands393337
Node: Readline Killing Commands394333
Node: Readline Arguments396356
Node: Searching397446
Node: Readline Init File399689
Node: Readline Init File Syntax400992
Node: Conditional Init Constructs427943
Node: Sample Init File432328
Node: Bindable Readline Commands435448
Node: Commands For Moving436986
Node: Commands For History439450
Node: Commands For Text444841
Node: Commands For Killing448966
Node: Numeric Arguments451754
Node: Commands For Completion452906
Node: Keyboard Macros458602
Node: Miscellaneous Commands459303
Node: Readline vi Mode466846
Node: Programmable Completion467823
Node: Programmable Completion Builtins477559
Node: A Programmable Completion Example489296
Node: Using History Interactively494641
Node: Bash History Facilities495322
Node: Bash History Builtins499057
Node: History Interaction506652
Node: Event Designators511602
Node: Word Designators513180
Node: Modifiers515572
Node: Installing Bash517509
Node: Basic Installation518625
Node: Compilers and Options522501
Node: Compiling For Multiple Architectures523251
Node: Installation Names525004
Node: Specifying the System Type527238
Node: Sharing Defaults527984
Node: Operation Controls528698
Node: Optional Features529717
Node: Reporting Bugs542440
Node: Major Differences From The Bourne Shell543797
Node: GNU Free Documentation License565224
Node: Indexes590401
Node: Builtin Index590852
Node: Reserved Word Index597950
Node: Variable Index600395
Node: Function Index617808
Node: Concept Index631941

End Tag Table
BIN
View File
Binary file not shown.
+56 -56
View File
@@ -198,10 +198,10 @@
@xrdef{Interactive Shell Behavior-pg}{104}
@xrdef{Bash Conditional Expressions-title}{Bash Conditional Expressions}
@xrdef{Bash Conditional Expressions-snt}{Section@tie 6.4}
@xrdef{Bash Conditional Expressions-pg}{105}
@xrdef{Bash Conditional Expressions-pg}{106}
@xrdef{Shell Arithmetic-title}{Shell Arithmetic}
@xrdef{Shell Arithmetic-snt}{Section@tie 6.5}
@xrdef{Shell Arithmetic-pg}{107}
@xrdef{Shell Arithmetic-pg}{108}
@xrdef{Aliases-title}{Aliases}
@xrdef{Aliases-snt}{Section@tie 6.6}
@xrdef{Aliases-pg}{109}
@@ -230,161 +230,161 @@
@xrdef{Job Control-snt}{Chapter@tie 7}
@xrdef{Job Control Basics-title}{Job Control Basics}
@xrdef{Job Control Basics-snt}{Section@tie 7.1}
@xrdef{Job Control-pg}{125}
@xrdef{Job Control Basics-pg}{125}
@xrdef{Job Control-pg}{126}
@xrdef{Job Control Basics-pg}{126}
@xrdef{Job Control Builtins-title}{Job Control Builtins}
@xrdef{Job Control Builtins-snt}{Section@tie 7.2}
@xrdef{Job Control Builtins-pg}{126}
@xrdef{Job Control Builtins-pg}{127}
@xrdef{Job Control Variables-title}{Job Control Variables}
@xrdef{Job Control Variables-snt}{Section@tie 7.3}
@xrdef{Job Control Variables-pg}{129}
@xrdef{Job Control Variables-pg}{130}
@xrdef{Command Line Editing-title}{Command Line Editing}
@xrdef{Command Line Editing-snt}{Chapter@tie 8}
@xrdef{Introduction and Notation-title}{Introduction to Line Editing}
@xrdef{Introduction and Notation-snt}{Section@tie 8.1}
@xrdef{Readline Interaction-title}{Readline Interaction}
@xrdef{Readline Interaction-snt}{Section@tie 8.2}
@xrdef{Command Line Editing-pg}{130}
@xrdef{Introduction and Notation-pg}{130}
@xrdef{Readline Interaction-pg}{130}
@xrdef{Command Line Editing-pg}{131}
@xrdef{Introduction and Notation-pg}{131}
@xrdef{Readline Interaction-pg}{131}
@xrdef{Readline Bare Essentials-title}{Readline Bare Essentials}
@xrdef{Readline Bare Essentials-snt}{Section@tie 8.2.1}
@xrdef{Readline Movement Commands-title}{Readline Movement Commands}
@xrdef{Readline Movement Commands-snt}{Section@tie 8.2.2}
@xrdef{Readline Bare Essentials-pg}{131}
@xrdef{Readline Movement Commands-pg}{131}
@xrdef{Readline Bare Essentials-pg}{132}
@xrdef{Readline Movement Commands-pg}{132}
@xrdef{Readline Killing Commands-title}{Readline Killing Commands}
@xrdef{Readline Killing Commands-snt}{Section@tie 8.2.3}
@xrdef{Readline Arguments-title}{Readline Arguments}
@xrdef{Readline Arguments-snt}{Section@tie 8.2.4}
@xrdef{Searching-title}{Searching for Commands in the History}
@xrdef{Searching-snt}{Section@tie 8.2.5}
@xrdef{Readline Killing Commands-pg}{132}
@xrdef{Readline Arguments-pg}{132}
@xrdef{Readline Killing Commands-pg}{133}
@xrdef{Readline Arguments-pg}{133}
@xrdef{Readline Init File-title}{Readline Init File}
@xrdef{Readline Init File-snt}{Section@tie 8.3}
@xrdef{Readline Init File Syntax-title}{Readline Init File Syntax}
@xrdef{Readline Init File Syntax-snt}{Section@tie 8.3.1}
@xrdef{Searching-pg}{133}
@xrdef{Readline Init File-pg}{133}
@xrdef{Readline Init File Syntax-pg}{133}
@xrdef{Searching-pg}{134}
@xrdef{Readline Init File-pg}{134}
@xrdef{Readline Init File Syntax-pg}{134}
@xrdef{Conditional Init Constructs-title}{Conditional Init Constructs}
@xrdef{Conditional Init Constructs-snt}{Section@tie 8.3.2}
@xrdef{Conditional Init Constructs-pg}{143}
@xrdef{Conditional Init Constructs-pg}{144}
@xrdef{Sample Init File-title}{Sample Init File}
@xrdef{Sample Init File-snt}{Section@tie 8.3.3}
@xrdef{Sample Init File-pg}{144}
@xrdef{Sample Init File-pg}{145}
@xrdef{Bindable Readline Commands-title}{Bindable Readline Commands}
@xrdef{Bindable Readline Commands-snt}{Section@tie 8.4}
@xrdef{Commands For Moving-title}{Commands For Moving}
@xrdef{Commands For Moving-snt}{Section@tie 8.4.1}
@xrdef{Bindable Readline Commands-pg}{147}
@xrdef{Commands For Moving-pg}{147}
@xrdef{Bindable Readline Commands-pg}{148}
@xrdef{Commands For Moving-pg}{148}
@xrdef{Commands For History-title}{Commands For Manipulating The History}
@xrdef{Commands For History-snt}{Section@tie 8.4.2}
@xrdef{Commands For History-pg}{148}
@xrdef{Commands For History-pg}{149}
@xrdef{Commands For Text-title}{Commands For Changing Text}
@xrdef{Commands For Text-snt}{Section@tie 8.4.3}
@xrdef{Commands For Text-pg}{150}
@xrdef{Commands For Text-pg}{151}
@xrdef{Commands For Killing-title}{Killing And Yanking}
@xrdef{Commands For Killing-snt}{Section@tie 8.4.4}
@xrdef{Commands For Killing-pg}{151}
@xrdef{Commands For Killing-pg}{152}
@xrdef{Numeric Arguments-title}{Specifying Numeric Arguments}
@xrdef{Numeric Arguments-snt}{Section@tie 8.4.5}
@xrdef{Commands For Completion-title}{Letting Readline Type For You}
@xrdef{Commands For Completion-snt}{Section@tie 8.4.6}
@xrdef{Numeric Arguments-pg}{153}
@xrdef{Commands For Completion-pg}{153}
@xrdef{Numeric Arguments-pg}{154}
@xrdef{Commands For Completion-pg}{154}
@xrdef{Keyboard Macros-title}{Keyboard Macros}
@xrdef{Keyboard Macros-snt}{Section@tie 8.4.7}
@xrdef{Miscellaneous Commands-title}{Some Miscellaneous Commands}
@xrdef{Miscellaneous Commands-snt}{Section@tie 8.4.8}
@xrdef{Keyboard Macros-pg}{155}
@xrdef{Miscellaneous Commands-pg}{155}
@xrdef{Keyboard Macros-pg}{156}
@xrdef{Miscellaneous Commands-pg}{156}
@xrdef{Readline vi Mode-title}{Readline vi Mode}
@xrdef{Readline vi Mode-snt}{Section@tie 8.5}
@xrdef{Programmable Completion-title}{Programmable Completion}
@xrdef{Programmable Completion-snt}{Section@tie 8.6}
@xrdef{Readline vi Mode-pg}{158}
@xrdef{Programmable Completion-pg}{158}
@xrdef{Readline vi Mode-pg}{159}
@xrdef{Programmable Completion-pg}{159}
@xrdef{Programmable Completion Builtins-title}{Programmable Completion Builtins}
@xrdef{Programmable Completion Builtins-snt}{Section@tie 8.7}
@xrdef{Programmable Completion Builtins-pg}{161}
@xrdef{Programmable Completion Builtins-pg}{162}
@xrdef{A Programmable Completion Example-title}{A Programmable Completion Example}
@xrdef{A Programmable Completion Example-snt}{Section@tie 8.8}
@xrdef{A Programmable Completion Example-pg}{165}
@xrdef{A Programmable Completion Example-pg}{166}
@xrdef{Using History Interactively-title}{Using History Interactively}
@xrdef{Using History Interactively-snt}{Chapter@tie 9}
@xrdef{Bash History Facilities-title}{Bash History Facilities}
@xrdef{Bash History Facilities-snt}{Section@tie 9.1}
@xrdef{Using History Interactively-pg}{168}
@xrdef{Bash History Facilities-pg}{168}
@xrdef{Using History Interactively-pg}{169}
@xrdef{Bash History Facilities-pg}{169}
@xrdef{Bash History Builtins-title}{Bash History Builtins}
@xrdef{Bash History Builtins-snt}{Section@tie 9.2}
@xrdef{Bash History Builtins-pg}{169}
@xrdef{Bash History Builtins-pg}{170}
@xrdef{History Interaction-title}{History Expansion}
@xrdef{History Interaction-snt}{Section@tie 9.3}
@xrdef{History Interaction-pg}{171}
@xrdef{History Interaction-pg}{172}
@xrdef{Event Designators-title}{Event Designators}
@xrdef{Event Designators-snt}{Section@tie 9.3.1}
@xrdef{Event Designators-pg}{172}
@xrdef{Event Designators-pg}{173}
@xrdef{Word Designators-title}{Word Designators}
@xrdef{Word Designators-snt}{Section@tie 9.3.2}
@xrdef{Word Designators-pg}{173}
@xrdef{Word Designators-pg}{174}
@xrdef{Modifiers-title}{Modifiers}
@xrdef{Modifiers-snt}{Section@tie 9.3.3}
@xrdef{Modifiers-pg}{174}
@xrdef{Modifiers-pg}{175}
@xrdef{Installing Bash-title}{Installing Bash}
@xrdef{Installing Bash-snt}{Chapter@tie 10}
@xrdef{Basic Installation-title}{Basic Installation}
@xrdef{Basic Installation-snt}{Section@tie 10.1}
@xrdef{Installing Bash-pg}{175}
@xrdef{Basic Installation-pg}{175}
@xrdef{Installing Bash-pg}{176}
@xrdef{Basic Installation-pg}{176}
@xrdef{Compilers and Options-title}{Compilers and Options}
@xrdef{Compilers and Options-snt}{Section@tie 10.2}
@xrdef{Compiling For Multiple Architectures-title}{Compiling For Multiple Architectures}
@xrdef{Compiling For Multiple Architectures-snt}{Section@tie 10.3}
@xrdef{Installation Names-title}{Installation Names}
@xrdef{Installation Names-snt}{Section@tie 10.4}
@xrdef{Compilers and Options-pg}{176}
@xrdef{Compiling For Multiple Architectures-pg}{176}
@xrdef{Compilers and Options-pg}{177}
@xrdef{Compiling For Multiple Architectures-pg}{177}
@xrdef{Specifying the System Type-title}{Specifying the System Type}
@xrdef{Specifying the System Type-snt}{Section@tie 10.5}
@xrdef{Sharing Defaults-title}{Sharing Defaults}
@xrdef{Sharing Defaults-snt}{Section@tie 10.6}
@xrdef{Operation Controls-title}{Operation Controls}
@xrdef{Operation Controls-snt}{Section@tie 10.7}
@xrdef{Installation Names-pg}{177}
@xrdef{Specifying the System Type-pg}{177}
@xrdef{Sharing Defaults-pg}{177}
@xrdef{Installation Names-pg}{178}
@xrdef{Specifying the System Type-pg}{178}
@xrdef{Sharing Defaults-pg}{178}
@xrdef{Optional Features-title}{Optional Features}
@xrdef{Optional Features-snt}{Section@tie 10.8}
@xrdef{Operation Controls-pg}{178}
@xrdef{Optional Features-pg}{178}
@xrdef{Operation Controls-pg}{179}
@xrdef{Optional Features-pg}{179}
@xrdef{Reporting Bugs-title}{Reporting Bugs}
@xrdef{Reporting Bugs-snt}{Appendix@tie @char65{}}
@xrdef{Reporting Bugs-pg}{184}
@xrdef{Reporting Bugs-pg}{185}
@xrdef{Major Differences From The Bourne Shell-title}{Major Differences From The Bourne Shell}
@xrdef{Major Differences From The Bourne Shell-snt}{Appendix@tie @char66{}}
@xrdef{Major Differences From The Bourne Shell-pg}{185}
@xrdef{Major Differences From The Bourne Shell-pg}{186}
@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
@xrdef{GNU Free Documentation License-snt}{Appendix@tie @char67{}}
@xrdef{GNU Free Documentation License-pg}{192}
@xrdef{GNU Free Documentation License-pg}{193}
@xrdef{Indexes-title}{Indexes}
@xrdef{Indexes-snt}{Appendix@tie @char68{}}
@xrdef{Builtin Index-title}{Index of Shell Builtin Commands}
@xrdef{Builtin Index-snt}{Section@tie @char68.1}
@xrdef{Indexes-pg}{200}
@xrdef{Builtin Index-pg}{200}
@xrdef{Indexes-pg}{201}
@xrdef{Builtin Index-pg}{201}
@xrdef{Reserved Word Index-title}{Index of Shell Reserved Words}
@xrdef{Reserved Word Index-snt}{Section@tie @char68.2}
@xrdef{Variable Index-title}{Parameter and Variable Index}
@xrdef{Variable Index-snt}{Section@tie @char68.3}
@xrdef{Reserved Word Index-pg}{201}
@xrdef{Variable Index-pg}{202}
@xrdef{Reserved Word Index-pg}{202}
@xrdef{Variable Index-pg}{203}
@xrdef{Function Index-title}{Function Index}
@xrdef{Function Index-snt}{Section@tie @char68.4}
@xrdef{Function Index-pg}{204}
@xrdef{Function Index-pg}{205}
@xrdef{Concept Index-title}{Concept Index}
@xrdef{Concept Index-snt}{Section@tie @char68.5}
@xrdef{Concept Index-pg}{206}
@xrdef{Concept Index-pg}{207}
+12 -12
View File
@@ -47,15 +47,15 @@
\entry{dirs}{112}{\code {dirs}}
\entry{popd}{113}{\code {popd}}
\entry{pushd}{113}{\code {pushd}}
\entry{bg}{126}{\code {bg}}
\entry{fg}{127}{\code {fg}}
\entry{jobs}{127}{\code {jobs}}
\entry{kill}{127}{\code {kill}}
\entry{wait}{128}{\code {wait}}
\entry{disown}{128}{\code {disown}}
\entry{suspend}{128}{\code {suspend}}
\entry{compgen}{161}{\code {compgen}}
\entry{complete}{162}{\code {complete}}
\entry{compopt}{165}{\code {compopt}}
\entry{fc}{169}{\code {fc}}
\entry{history}{170}{\code {history}}
\entry{bg}{127}{\code {bg}}
\entry{fg}{128}{\code {fg}}
\entry{jobs}{128}{\code {jobs}}
\entry{kill}{128}{\code {kill}}
\entry{wait}{129}{\code {wait}}
\entry{disown}{129}{\code {disown}}
\entry{suspend}{129}{\code {suspend}}
\entry{compgen}{162}{\code {compgen}}
\entry{complete}{163}{\code {complete}}
\entry{compopt}{166}{\code {compopt}}
\entry{fc}{170}{\code {fc}}
\entry{history}{171}{\code {history}}
+12 -12
View 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}
@@ -15,14 +15,14 @@
\entry{\code {caller}}{63}
\entry{\code {cd}}{53}
\entry{\code {command}}{63}
\entry{\code {compgen}}{161}
\entry{\code {complete}}{162}
\entry{\code {compopt}}{165}
\entry{\code {compgen}}{162}
\entry{\code {complete}}{163}
\entry{\code {compopt}}{166}
\entry{\code {continue}}{54}
\initial {D}
\entry{\code {declare}}{64}
\entry{\code {dirs}}{112}
\entry{\code {disown}}{128}
\entry{\code {disown}}{129}
\initial {E}
\entry{\code {echo}}{65}
\entry{\code {enable}}{66}
@@ -32,18 +32,18 @@
\entry{\code {export}}{54}
\initial {F}
\entry{\code {false}}{55}
\entry{\code {fc}}{169}
\entry{\code {fg}}{127}
\entry{\code {fc}}{170}
\entry{\code {fg}}{128}
\initial {G}
\entry{\code {getopts}}{55}
\initial {H}
\entry{\code {hash}}{56}
\entry{\code {help}}{67}
\entry{\code {history}}{170}
\entry{\code {history}}{171}
\initial {J}
\entry{\code {jobs}}{127}
\entry{\code {jobs}}{128}
\initial {K}
\entry{\code {kill}}{127}
\entry{\code {kill}}{128}
\initial {L}
\entry{\code {let}}{67}
\entry{\code {local}}{67}
@@ -65,7 +65,7 @@
\entry{\code {shift}}{57}
\entry{\code {shopt}}{78}
\entry{\code {source}}{72}
\entry{\code {suspend}}{128}
\entry{\code {suspend}}{129}
\initial {T}
\entry{\code {test}}{57}
\entry{\code {times}}{59}
@@ -79,4 +79,4 @@
\entry{\code {unalias}}{74}
\entry{\code {unset}}{61}
\initial {W}
\entry{\code {wait}}{128}
\entry{\code {wait}}{129}
+33 -33
View File
@@ -81,12 +81,12 @@
\entry{startup files}{102}{startup files}
\entry{interactive shell}{104}{interactive shell}
\entry{shell, interactive}{104}{shell, interactive}
\entry{expressions, conditional}{105}{expressions, conditional}
\entry{arithmetic, shell}{107}{arithmetic, shell}
\entry{shell arithmetic}{107}{shell arithmetic}
\entry{expressions, arithmetic}{107}{expressions, arithmetic}
\entry{evaluation, arithmetic}{107}{evaluation, arithmetic}
\entry{arithmetic evaluation}{107}{arithmetic evaluation}
\entry{expressions, conditional}{106}{expressions, conditional}
\entry{arithmetic, shell}{108}{arithmetic, shell}
\entry{shell arithmetic}{108}{shell arithmetic}
\entry{expressions, arithmetic}{108}{expressions, arithmetic}
\entry{evaluation, arithmetic}{108}{evaluation, arithmetic}
\entry{arithmetic evaluation}{108}{arithmetic evaluation}
\entry{arithmetic operators}{108}{arithmetic operators}
\entry{unary arithmetic operators}{108}{unary arithmetic operators}
\entry{binary arithmetic operators}{108}{binary arithmetic operators}
@@ -101,30 +101,30 @@
\entry{POSIX Mode}{117}{POSIX Mode}
\entry{Compatibility Level}{122}{Compatibility Level}
\entry{Compatibility Mode}{122}{Compatibility Mode}
\entry{job control}{125}{job control}
\entry{foreground}{125}{foreground}
\entry{background}{125}{background}
\entry{suspending jobs}{125}{suspending jobs}
\entry{Readline, how to use}{129}{Readline, how to use}
\entry{interaction, readline}{130}{interaction, readline}
\entry{notation, readline}{131}{notation, readline}
\entry{command editing}{131}{command editing}
\entry{editing command lines}{131}{editing command lines}
\entry{killing text}{132}{killing text}
\entry{yanking text}{132}{yanking text}
\entry{kill ring}{132}{kill ring}
\entry{initialization file, readline}{133}{initialization file, readline}
\entry{variables, readline}{134}{variables, readline}
\entry{programmable completion}{158}{programmable completion}
\entry{completion builtins}{161}{completion builtins}
\entry{History, how to use}{167}{History, how to use}
\entry{command history}{168}{command history}
\entry{history list}{168}{history list}
\entry{history builtins}{169}{history builtins}
\entry{history expansion}{171}{history expansion}
\entry{event designators}{172}{event designators}
\entry{history events}{172}{history events}
\entry{installation}{175}{installation}
\entry{configuration}{175}{configuration}
\entry{Bash installation}{175}{Bash installation}
\entry{Bash configuration}{175}{Bash configuration}
\entry{job control}{126}{job control}
\entry{foreground}{126}{foreground}
\entry{background}{126}{background}
\entry{suspending jobs}{126}{suspending jobs}
\entry{Readline, how to use}{130}{Readline, how to use}
\entry{interaction, readline}{131}{interaction, readline}
\entry{notation, readline}{132}{notation, readline}
\entry{command editing}{132}{command editing}
\entry{editing command lines}{132}{editing command lines}
\entry{killing text}{133}{killing text}
\entry{yanking text}{133}{yanking text}
\entry{kill ring}{133}{kill ring}
\entry{initialization file, readline}{134}{initialization file, readline}
\entry{variables, readline}{135}{variables, readline}
\entry{programmable completion}{159}{programmable completion}
\entry{completion builtins}{162}{completion builtins}
\entry{History, how to use}{168}{History, how to use}
\entry{command history}{169}{command history}
\entry{history list}{169}{history list}
\entry{history builtins}{170}{history builtins}
\entry{history expansion}{172}{history expansion}
\entry{event designators}{173}{event designators}
\entry{history events}{173}{history events}
\entry{installation}{176}{installation}
\entry{configuration}{176}{configuration}
\entry{Bash installation}{176}{Bash installation}
\entry{Bash configuration}{176}{Bash configuration}
+33 -33
View 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}
@@ -33,19 +33,19 @@
\entry{comments, shell}{9}
\entry{Compatibility Level}{122}
\entry{Compatibility Mode}{122}
\entry{completion builtins}{161}
\entry{completion builtins}{162}
\entry{conditional arithmetic operator}{108}
\entry{configuration}{175}
\entry{configuration}{176}
\entry{control operator}{3}
\entry{coprocess}{18}
\initial {D}
\entry{directory stack}{112}
\entry{dollar-single quote quoting}{6}
\initial {E}
\entry{editing command lines}{131}
\entry{editing command lines}{132}
\entry{environment}{48}
\entry{evaluation, arithmetic}{107}
\entry{event designators}{172}
\entry{evaluation, arithmetic}{108}
\entry{event designators}{173}
\entry{execution environment}{47}
\entry{exit status}{3, 48}
\entry{expansion}{25}
@@ -55,34 +55,34 @@
\entry{expansion, parameter}{27}
\entry{expansion, pathname}{39}
\entry{expansion, tilde}{26}
\entry{expressions, arithmetic}{107}
\entry{expressions, conditional}{105}
\entry{expressions, arithmetic}{108}
\entry{expressions, conditional}{106}
\initial {F}
\entry{field}{3}
\entry{filename}{3}
\entry{filename expansion}{39}
\entry{foreground}{125}
\entry{foreground}{126}
\entry{functions, shell}{19}
\initial {H}
\entry{history builtins}{169}
\entry{history events}{172}
\entry{history expansion}{171}
\entry{history list}{168}
\entry{History, how to use}{167}
\entry{history builtins}{170}
\entry{history events}{173}
\entry{history expansion}{172}
\entry{history list}{169}
\entry{History, how to use}{168}
\initial {I}
\entry{identifier}{3}
\entry{initialization file, readline}{133}
\entry{installation}{175}
\entry{interaction, readline}{130}
\entry{initialization file, readline}{134}
\entry{installation}{176}
\entry{interaction, readline}{131}
\entry{interactive shell}{102, 104}
\entry{internationalization}{7}
\entry{internationalized scripts}{8}
\initial {J}
\entry{job}{3}
\entry{job control}{3, 125}
\entry{job control}{3, 126}
\initial {K}
\entry{kill ring}{132}
\entry{killing text}{132}
\entry{kill ring}{133}
\entry{killing text}{133}
\initial {L}
\entry{localization}{7}
\entry{login shell}{102}
@@ -92,7 +92,7 @@
\initial {N}
\entry{name}{3}
\entry{native languages}{7}
\entry{notation, readline}{131}
\entry{notation, readline}{132}
\initial {O}
\entry{operator, shell}{3}
\initial {P}
@@ -109,20 +109,20 @@
\entry{process group}{3}
\entry{process group ID}{3}
\entry{process substitution}{38}
\entry{programmable completion}{158}
\entry{programmable completion}{159}
\entry{prompting}{114}
\initial {Q}
\entry{quoting}{6}
\entry{quoting, ANSI}{6}
\initial {R}
\entry{Readline, how to use}{129}
\entry{Readline, how to use}{130}
\entry{redirection}{41}
\entry{reserved word}{4}
\entry{reserved words}{9}
\entry{restricted shell}{115}
\entry{return status}{4}
\initial {S}
\entry{shell arithmetic}{107}
\entry{shell arithmetic}{108}
\entry{shell function}{19}
\entry{shell script}{50}
\entry{shell variable}{22}
@@ -132,7 +132,7 @@
\entry{special builtin}{4, 85}
\entry{startup files}{102}
\entry{string translations}{8}
\entry{suspending jobs}{125}
\entry{suspending jobs}{126}
\initial {T}
\entry{tilde expansion}{26}
\entry{token}{4}
@@ -141,9 +141,9 @@
\entry{unary arithmetic operators}{108}
\initial {V}
\entry{variable, shell}{22}
\entry{variables, readline}{134}
\entry{variables, readline}{135}
\initial {W}
\entry{word}{4}
\entry{word splitting}{38}
\initial {Y}
\entry{yanking text}{132}
\entry{yanking text}{133}
+117 -117
View File
@@ -1,117 +1,117 @@
\entry{beginning-of-line (C-a)}{147}{\code {beginning-of-line (C-a)}}
\entry{end-of-line (C-e)}{147}{\code {end-of-line (C-e)}}
\entry{forward-char (C-f)}{147}{\code {forward-char (C-f)}}
\entry{backward-char (C-b)}{147}{\code {backward-char (C-b)}}
\entry{forward-word (M-f)}{147}{\code {forward-word (M-f)}}
\entry{backward-word (M-b)}{147}{\code {backward-word (M-b)}}
\entry{shell-forward-word (M-C-f)}{147}{\code {shell-forward-word (M-C-f)}}
\entry{shell-backward-word (M-C-b)}{147}{\code {shell-backward-word (M-C-b)}}
\entry{previous-screen-line ()}{148}{\code {previous-screen-line ()}}
\entry{next-screen-line ()}{148}{\code {next-screen-line ()}}
\entry{clear-display (M-C-l)}{148}{\code {clear-display (M-C-l)}}
\entry{clear-screen (C-l)}{148}{\code {clear-screen (C-l)}}
\entry{redraw-current-line ()}{148}{\code {redraw-current-line ()}}
\entry{accept-line (Newline or Return)}{148}{\code {accept-line (Newline or Return)}}
\entry{previous-history (C-p)}{148}{\code {previous-history (C-p)}}
\entry{next-history (C-n)}{148}{\code {next-history (C-n)}}
\entry{beginning-of-history (M-<)}{148}{\code {beginning-of-history (M-<)}}
\entry{end-of-history (M->)}{148}{\code {end-of-history (M->)}}
\entry{reverse-search-history (C-r)}{148}{\code {reverse-search-history (C-r)}}
\entry{forward-search-history (C-s)}{149}{\code {forward-search-history (C-s)}}
\entry{non-incremental-reverse-search-history (M-p)}{149}{\code {non-incremental-reverse-search-history (M-p)}}
\entry{non-incremental-forward-search-history (M-n)}{149}{\code {non-incremental-forward-search-history (M-n)}}
\entry{history-search-backward ()}{149}{\code {history-search-backward ()}}
\entry{history-search-forward ()}{149}{\code {history-search-forward ()}}
\entry{history-substring-search-backward ()}{149}{\code {history-substring-search-backward ()}}
\entry{history-substring-search-forward ()}{149}{\code {history-substring-search-forward ()}}
\entry{yank-nth-arg (M-C-y)}{149}{\code {yank-nth-arg (M-C-y)}}
\entry{yank-last-arg (M-. or M-_)}{149}{\code {yank-last-arg (M-. or M-_)}}
\entry{operate-and-get-next (C-o)}{150}{\code {operate-and-get-next (C-o)}}
\entry{fetch-history ()}{150}{\code {fetch-history ()}}
\entry{end-of-file (usually C-d)}{150}{\code {\i {end-of-file} (usually C-d)}}
\entry{delete-char (C-d)}{150}{\code {delete-char (C-d)}}
\entry{backward-delete-char (Rubout)}{150}{\code {backward-delete-char (Rubout)}}
\entry{forward-backward-delete-char ()}{150}{\code {forward-backward-delete-char ()}}
\entry{quoted-insert (C-q or C-v)}{150}{\code {quoted-insert (C-q or C-v)}}
\entry{self-insert (a, b, A, 1, !, ...{})}{150}{\code {self-insert (a, b, A, 1, !, \dots {})}}
\entry{bracketed-paste-begin ()}{150}{\code {bracketed-paste-begin ()}}
\entry{transpose-chars (C-t)}{151}{\code {transpose-chars (C-t)}}
\entry{transpose-words (M-t)}{151}{\code {transpose-words (M-t)}}
\entry{shell-transpose-words (M-C-t)}{151}{\code {shell-transpose-words (M-C-t)}}
\entry{upcase-word (M-u)}{151}{\code {upcase-word (M-u)}}
\entry{downcase-word (M-l)}{151}{\code {downcase-word (M-l)}}
\entry{capitalize-word (M-c)}{151}{\code {capitalize-word (M-c)}}
\entry{overwrite-mode ()}{151}{\code {overwrite-mode ()}}
\entry{kill-line (C-k)}{151}{\code {kill-line (C-k)}}
\entry{backward-kill-line (C-x Rubout)}{152}{\code {backward-kill-line (C-x Rubout)}}
\entry{unix-line-discard (C-u)}{152}{\code {unix-line-discard (C-u)}}
\entry{kill-whole-line ()}{152}{\code {kill-whole-line ()}}
\entry{kill-word (M-d)}{152}{\code {kill-word (M-d)}}
\entry{backward-kill-word (M-DEL)}{152}{\code {backward-kill-word (M-\key {DEL})}}
\entry{shell-kill-word (M-C-d)}{152}{\code {shell-kill-word (M-C-d)}}
\entry{shell-backward-kill-word ()}{152}{\code {shell-backward-kill-word ()}}
\entry{unix-word-rubout (C-w)}{152}{\code {unix-word-rubout (C-w)}}
\entry{unix-filename-rubout ()}{152}{\code {unix-filename-rubout ()}}
\entry{delete-horizontal-space ()}{152}{\code {delete-horizontal-space ()}}
\entry{kill-region ()}{152}{\code {kill-region ()}}
\entry{copy-region-as-kill ()}{152}{\code {copy-region-as-kill ()}}
\entry{copy-backward-word ()}{152}{\code {copy-backward-word ()}}
\entry{copy-forward-word ()}{152}{\code {copy-forward-word ()}}
\entry{yank (C-y)}{152}{\code {yank (C-y)}}
\entry{yank-pop (M-y)}{153}{\code {yank-pop (M-y)}}
\entry{digit-argument (M-0, M-1, ...{} M--)}{153}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
\entry{universal-argument ()}{153}{\code {universal-argument ()}}
\entry{complete (TAB)}{153}{\code {complete (\key {TAB})}}
\entry{possible-completions (M-?)}{153}{\code {possible-completions (M-?)}}
\entry{insert-completions (M-*)}{153}{\code {insert-completions (M-*)}}
\entry{menu-complete ()}{153}{\code {menu-complete ()}}
\entry{menu-complete-backward ()}{154}{\code {menu-complete-backward ()}}
\entry{export-completions ()}{154}{\code {export-completions ()}}
\entry{delete-char-or-list ()}{154}{\code {delete-char-or-list ()}}
\entry{complete-filename (M-/)}{154}{\code {complete-filename (M-/)}}
\entry{possible-filename-completions (C-x /)}{154}{\code {possible-filename-completions (C-x /)}}
\entry{complete-username (M-~)}{154}{\code {complete-username (M-~)}}
\entry{possible-username-completions (C-x ~)}{154}{\code {possible-username-completions (C-x ~)}}
\entry{complete-variable (M-$)}{154}{\code {complete-variable (M-$)}}
\entry{possible-variable-completions (C-x $)}{154}{\code {possible-variable-completions (C-x $)}}
\entry{complete-hostname (M-@)}{154}{\code {complete-hostname (M-@)}}
\entry{possible-hostname-completions (C-x @)}{155}{\code {possible-hostname-completions (C-x @)}}
\entry{complete-command (M-!)}{155}{\code {complete-command (M-!)}}
\entry{possible-command-completions (C-x !)}{155}{\code {possible-command-completions (C-x !)}}
\entry{dynamic-complete-history (M-TAB)}{155}{\code {dynamic-complete-history (M-\key {TAB})}}
\entry{dabbrev-expand ()}{155}{\code {dabbrev-expand ()}}
\entry{complete-into-braces (M-{\indexlbrace })}{155}{\code {complete-into-braces (M-{\tt \char 123})}}
\entry{start-kbd-macro (C-x ()}{155}{\code {start-kbd-macro (C-x ()}}
\entry{end-kbd-macro (C-x ))}{155}{\code {end-kbd-macro (C-x ))}}
\entry{call-last-kbd-macro (C-x e)}{155}{\code {call-last-kbd-macro (C-x e)}}
\entry{print-last-kbd-macro ()}{155}{\code {print-last-kbd-macro ()}}
\entry{re-read-init-file (C-x C-r)}{155}{\code {re-read-init-file (C-x C-r)}}
\entry{abort (C-g)}{155}{\code {abort (C-g)}}
\entry{do-lowercase-version (M-A, M-B, M-x, ...{})}{156}{\code {do-lowercase-version (M-A, M-B, M-\var {x}, \dots {})}}
\entry{prefix-meta (ESC)}{156}{\code {prefix-meta (\key {ESC})}}
\entry{undo (C-_ or C-x C-u)}{156}{\code {undo (C-_ or C-x C-u)}}
\entry{revert-line (M-r)}{156}{\code {revert-line (M-r)}}
\entry{tilde-expand (M-&)}{156}{\code {tilde-expand (M-&)}}
\entry{set-mark (C-@)}{156}{\code {set-mark (C-@)}}
\entry{exchange-point-and-mark (C-x C-x)}{156}{\code {exchange-point-and-mark (C-x C-x)}}
\entry{character-search (C-])}{156}{\code {character-search (C-])}}
\entry{character-search-backward (M-C-])}{156}{\code {character-search-backward (M-C-])}}
\entry{skip-csi-sequence ()}{156}{\code {skip-csi-sequence ()}}
\entry{insert-comment (M-#)}{156}{\code {insert-comment (M-#)}}
\entry{dump-functions ()}{157}{\code {dump-functions ()}}
\entry{dump-variables ()}{157}{\code {dump-variables ()}}
\entry{dump-macros ()}{157}{\code {dump-macros ()}}
\entry{execute-named-command (M-x)}{157}{\code {execute-named-command (M-x)}}
\entry{spell-correct-word (C-x s)}{157}{\code {spell-correct-word (C-x s)}}
\entry{glob-complete-word (M-g)}{157}{\code {glob-complete-word (M-g)}}
\entry{glob-expand-word (C-x *)}{157}{\code {glob-expand-word (C-x *)}}
\entry{glob-list-expansions (C-x g)}{157}{\code {glob-list-expansions (C-x g)}}
\entry{shell-expand-line (M-C-e)}{157}{\code {shell-expand-line (M-C-e)}}
\entry{shell-expand-and-requote-line ()}{157}{\code {shell-expand-and-requote-line ()}}
\entry{history-expand-line (M-^)}{158}{\code {history-expand-line (M-^)}}
\entry{magic-space ()}{158}{\code {magic-space ()}}
\entry{alias-expand-line ()}{158}{\code {alias-expand-line ()}}
\entry{history-and-alias-expand-line ()}{158}{\code {history-and-alias-expand-line ()}}
\entry{insert-last-argument (M-. or M-_)}{158}{\code {insert-last-argument (M-. or M-_)}}
\entry{edit-and-execute-command (C-x C-e)}{158}{\code {edit-and-execute-command (C-x C-e)}}
\entry{display-shell-version (C-x C-v)}{158}{\code {display-shell-version (C-x C-v)}}
\entry{beginning-of-line (C-a)}{148}{\code {beginning-of-line (C-a)}}
\entry{end-of-line (C-e)}{148}{\code {end-of-line (C-e)}}
\entry{forward-char (C-f)}{148}{\code {forward-char (C-f)}}
\entry{backward-char (C-b)}{148}{\code {backward-char (C-b)}}
\entry{forward-word (M-f)}{148}{\code {forward-word (M-f)}}
\entry{backward-word (M-b)}{148}{\code {backward-word (M-b)}}
\entry{shell-forward-word (M-C-f)}{148}{\code {shell-forward-word (M-C-f)}}
\entry{shell-backward-word (M-C-b)}{148}{\code {shell-backward-word (M-C-b)}}
\entry{previous-screen-line ()}{149}{\code {previous-screen-line ()}}
\entry{next-screen-line ()}{149}{\code {next-screen-line ()}}
\entry{clear-display (M-C-l)}{149}{\code {clear-display (M-C-l)}}
\entry{clear-screen (C-l)}{149}{\code {clear-screen (C-l)}}
\entry{redraw-current-line ()}{149}{\code {redraw-current-line ()}}
\entry{accept-line (Newline or Return)}{149}{\code {accept-line (Newline or Return)}}
\entry{previous-history (C-p)}{149}{\code {previous-history (C-p)}}
\entry{next-history (C-n)}{149}{\code {next-history (C-n)}}
\entry{beginning-of-history (M-<)}{149}{\code {beginning-of-history (M-<)}}
\entry{end-of-history (M->)}{149}{\code {end-of-history (M->)}}
\entry{reverse-search-history (C-r)}{149}{\code {reverse-search-history (C-r)}}
\entry{forward-search-history (C-s)}{150}{\code {forward-search-history (C-s)}}
\entry{non-incremental-reverse-search-history (M-p)}{150}{\code {non-incremental-reverse-search-history (M-p)}}
\entry{non-incremental-forward-search-history (M-n)}{150}{\code {non-incremental-forward-search-history (M-n)}}
\entry{history-search-backward ()}{150}{\code {history-search-backward ()}}
\entry{history-search-forward ()}{150}{\code {history-search-forward ()}}
\entry{history-substring-search-backward ()}{150}{\code {history-substring-search-backward ()}}
\entry{history-substring-search-forward ()}{150}{\code {history-substring-search-forward ()}}
\entry{yank-nth-arg (M-C-y)}{150}{\code {yank-nth-arg (M-C-y)}}
\entry{yank-last-arg (M-. or M-_)}{150}{\code {yank-last-arg (M-. or M-_)}}
\entry{operate-and-get-next (C-o)}{151}{\code {operate-and-get-next (C-o)}}
\entry{fetch-history ()}{151}{\code {fetch-history ()}}
\entry{end-of-file (usually C-d)}{151}{\code {\i {end-of-file} (usually C-d)}}
\entry{delete-char (C-d)}{151}{\code {delete-char (C-d)}}
\entry{backward-delete-char (Rubout)}{151}{\code {backward-delete-char (Rubout)}}
\entry{forward-backward-delete-char ()}{151}{\code {forward-backward-delete-char ()}}
\entry{quoted-insert (C-q or C-v)}{151}{\code {quoted-insert (C-q or C-v)}}
\entry{self-insert (a, b, A, 1, !, ...{})}{151}{\code {self-insert (a, b, A, 1, !, \dots {})}}
\entry{bracketed-paste-begin ()}{151}{\code {bracketed-paste-begin ()}}
\entry{transpose-chars (C-t)}{152}{\code {transpose-chars (C-t)}}
\entry{transpose-words (M-t)}{152}{\code {transpose-words (M-t)}}
\entry{shell-transpose-words (M-C-t)}{152}{\code {shell-transpose-words (M-C-t)}}
\entry{upcase-word (M-u)}{152}{\code {upcase-word (M-u)}}
\entry{downcase-word (M-l)}{152}{\code {downcase-word (M-l)}}
\entry{capitalize-word (M-c)}{152}{\code {capitalize-word (M-c)}}
\entry{overwrite-mode ()}{152}{\code {overwrite-mode ()}}
\entry{kill-line (C-k)}{152}{\code {kill-line (C-k)}}
\entry{backward-kill-line (C-x Rubout)}{153}{\code {backward-kill-line (C-x Rubout)}}
\entry{unix-line-discard (C-u)}{153}{\code {unix-line-discard (C-u)}}
\entry{kill-whole-line ()}{153}{\code {kill-whole-line ()}}
\entry{kill-word (M-d)}{153}{\code {kill-word (M-d)}}
\entry{backward-kill-word (M-DEL)}{153}{\code {backward-kill-word (M-\key {DEL})}}
\entry{shell-kill-word (M-C-d)}{153}{\code {shell-kill-word (M-C-d)}}
\entry{shell-backward-kill-word ()}{153}{\code {shell-backward-kill-word ()}}
\entry{unix-word-rubout (C-w)}{153}{\code {unix-word-rubout (C-w)}}
\entry{unix-filename-rubout ()}{153}{\code {unix-filename-rubout ()}}
\entry{delete-horizontal-space ()}{153}{\code {delete-horizontal-space ()}}
\entry{kill-region ()}{153}{\code {kill-region ()}}
\entry{copy-region-as-kill ()}{153}{\code {copy-region-as-kill ()}}
\entry{copy-backward-word ()}{153}{\code {copy-backward-word ()}}
\entry{copy-forward-word ()}{153}{\code {copy-forward-word ()}}
\entry{yank (C-y)}{153}{\code {yank (C-y)}}
\entry{yank-pop (M-y)}{154}{\code {yank-pop (M-y)}}
\entry{digit-argument (M-0, M-1, ...{} M--)}{154}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
\entry{universal-argument ()}{154}{\code {universal-argument ()}}
\entry{complete (TAB)}{154}{\code {complete (\key {TAB})}}
\entry{possible-completions (M-?)}{154}{\code {possible-completions (M-?)}}
\entry{insert-completions (M-*)}{154}{\code {insert-completions (M-*)}}
\entry{menu-complete ()}{154}{\code {menu-complete ()}}
\entry{menu-complete-backward ()}{155}{\code {menu-complete-backward ()}}
\entry{export-completions ()}{155}{\code {export-completions ()}}
\entry{delete-char-or-list ()}{155}{\code {delete-char-or-list ()}}
\entry{complete-filename (M-/)}{155}{\code {complete-filename (M-/)}}
\entry{possible-filename-completions (C-x /)}{155}{\code {possible-filename-completions (C-x /)}}
\entry{complete-username (M-~)}{155}{\code {complete-username (M-~)}}
\entry{possible-username-completions (C-x ~)}{155}{\code {possible-username-completions (C-x ~)}}
\entry{complete-variable (M-$)}{155}{\code {complete-variable (M-$)}}
\entry{possible-variable-completions (C-x $)}{155}{\code {possible-variable-completions (C-x $)}}
\entry{complete-hostname (M-@)}{155}{\code {complete-hostname (M-@)}}
\entry{possible-hostname-completions (C-x @)}{156}{\code {possible-hostname-completions (C-x @)}}
\entry{complete-command (M-!)}{156}{\code {complete-command (M-!)}}
\entry{possible-command-completions (C-x !)}{156}{\code {possible-command-completions (C-x !)}}
\entry{dynamic-complete-history (M-TAB)}{156}{\code {dynamic-complete-history (M-\key {TAB})}}
\entry{dabbrev-expand ()}{156}{\code {dabbrev-expand ()}}
\entry{complete-into-braces (M-{\indexlbrace })}{156}{\code {complete-into-braces (M-{\tt \char 123})}}
\entry{start-kbd-macro (C-x ()}{156}{\code {start-kbd-macro (C-x ()}}
\entry{end-kbd-macro (C-x ))}{156}{\code {end-kbd-macro (C-x ))}}
\entry{call-last-kbd-macro (C-x e)}{156}{\code {call-last-kbd-macro (C-x e)}}
\entry{print-last-kbd-macro ()}{156}{\code {print-last-kbd-macro ()}}
\entry{re-read-init-file (C-x C-r)}{156}{\code {re-read-init-file (C-x C-r)}}
\entry{abort (C-g)}{156}{\code {abort (C-g)}}
\entry{do-lowercase-version (M-A, M-B, M-x, ...{})}{157}{\code {do-lowercase-version (M-A, M-B, M-\var {x}, \dots {})}}
\entry{prefix-meta (ESC)}{157}{\code {prefix-meta (\key {ESC})}}
\entry{undo (C-_ or C-x C-u)}{157}{\code {undo (C-_ or C-x C-u)}}
\entry{revert-line (M-r)}{157}{\code {revert-line (M-r)}}
\entry{tilde-expand (M-&)}{157}{\code {tilde-expand (M-&)}}
\entry{set-mark (C-@)}{157}{\code {set-mark (C-@)}}
\entry{exchange-point-and-mark (C-x C-x)}{157}{\code {exchange-point-and-mark (C-x C-x)}}
\entry{character-search (C-])}{157}{\code {character-search (C-])}}
\entry{character-search-backward (M-C-])}{157}{\code {character-search-backward (M-C-])}}
\entry{skip-csi-sequence ()}{157}{\code {skip-csi-sequence ()}}
\entry{insert-comment (M-#)}{157}{\code {insert-comment (M-#)}}
\entry{dump-functions ()}{158}{\code {dump-functions ()}}
\entry{dump-variables ()}{158}{\code {dump-variables ()}}
\entry{dump-macros ()}{158}{\code {dump-macros ()}}
\entry{execute-named-command (M-x)}{158}{\code {execute-named-command (M-x)}}
\entry{spell-correct-word (C-x s)}{158}{\code {spell-correct-word (C-x s)}}
\entry{glob-complete-word (M-g)}{158}{\code {glob-complete-word (M-g)}}
\entry{glob-expand-word (C-x *)}{158}{\code {glob-expand-word (C-x *)}}
\entry{glob-list-expansions (C-x g)}{158}{\code {glob-list-expansions (C-x g)}}
\entry{shell-expand-line (M-C-e)}{158}{\code {shell-expand-line (M-C-e)}}
\entry{shell-expand-and-requote-line ()}{158}{\code {shell-expand-and-requote-line ()}}
\entry{history-expand-line (M-^)}{159}{\code {history-expand-line (M-^)}}
\entry{magic-space ()}{159}{\code {magic-space ()}}
\entry{alias-expand-line ()}{159}{\code {alias-expand-line ()}}
\entry{history-and-alias-expand-line ()}{159}{\code {history-and-alias-expand-line ()}}
\entry{insert-last-argument (M-. or M-_)}{159}{\code {insert-last-argument (M-. or M-_)}}
\entry{edit-and-execute-command (C-x C-e)}{159}{\code {edit-and-execute-command (C-x C-e)}}
\entry{display-shell-version (C-x C-v)}{159}{\code {display-shell-version (C-x C-v)}}
+117 -117
View File
@@ -1,137 +1,137 @@
\initial {A}
\entry{\code {abort (C-g)}}{155}
\entry{\code {accept-line (Newline or Return)}}{148}
\entry{\code {alias-expand-line ()}}{158}
\entry{\code {abort (C-g)}}{156}
\entry{\code {accept-line (Newline or Return)}}{149}
\entry{\code {alias-expand-line ()}}{159}
\initial {B}
\entry{\code {backward-char (C-b)}}{147}
\entry{\code {backward-delete-char (Rubout)}}{150}
\entry{\code {backward-kill-line (C-x Rubout)}}{152}
\entry{\code {backward-kill-word (M-\key {DEL})}}{152}
\entry{\code {backward-word (M-b)}}{147}
\entry{\code {beginning-of-history (M-<)}}{148}
\entry{\code {beginning-of-line (C-a)}}{147}
\entry{\code {bracketed-paste-begin ()}}{150}
\entry{\code {backward-char (C-b)}}{148}
\entry{\code {backward-delete-char (Rubout)}}{151}
\entry{\code {backward-kill-line (C-x Rubout)}}{153}
\entry{\code {backward-kill-word (M-\key {DEL})}}{153}
\entry{\code {backward-word (M-b)}}{148}
\entry{\code {beginning-of-history (M-<)}}{149}
\entry{\code {beginning-of-line (C-a)}}{148}
\entry{\code {bracketed-paste-begin ()}}{151}
\initial {C}
\entry{\code {call-last-kbd-macro (C-x e)}}{155}
\entry{\code {capitalize-word (M-c)}}{151}
\entry{\code {character-search (C-])}}{156}
\entry{\code {character-search-backward (M-C-])}}{156}
\entry{\code {clear-display (M-C-l)}}{148}
\entry{\code {clear-screen (C-l)}}{148}
\entry{\code {complete (\key {TAB})}}{153}
\entry{\code {complete-command (M-!)}}{155}
\entry{\code {complete-filename (M-/)}}{154}
\entry{\code {complete-hostname (M-@)}}{154}
\entry{\code {complete-into-braces (M-{\tt \char 123})}}{155}
\entry{\code {complete-username (M-~)}}{154}
\entry{\code {complete-variable (M-$)}}{154}
\entry{\code {copy-backward-word ()}}{152}
\entry{\code {copy-forward-word ()}}{152}
\entry{\code {copy-region-as-kill ()}}{152}
\entry{\code {call-last-kbd-macro (C-x e)}}{156}
\entry{\code {capitalize-word (M-c)}}{152}
\entry{\code {character-search (C-])}}{157}
\entry{\code {character-search-backward (M-C-])}}{157}
\entry{\code {clear-display (M-C-l)}}{149}
\entry{\code {clear-screen (C-l)}}{149}
\entry{\code {complete (\key {TAB})}}{154}
\entry{\code {complete-command (M-!)}}{156}
\entry{\code {complete-filename (M-/)}}{155}
\entry{\code {complete-hostname (M-@)}}{155}
\entry{\code {complete-into-braces (M-{\tt \char 123})}}{156}
\entry{\code {complete-username (M-~)}}{155}
\entry{\code {complete-variable (M-$)}}{155}
\entry{\code {copy-backward-word ()}}{153}
\entry{\code {copy-forward-word ()}}{153}
\entry{\code {copy-region-as-kill ()}}{153}
\initial {D}
\entry{\code {dabbrev-expand ()}}{155}
\entry{\code {delete-char (C-d)}}{150}
\entry{\code {delete-char-or-list ()}}{154}
\entry{\code {delete-horizontal-space ()}}{152}
\entry{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{153}
\entry{\code {display-shell-version (C-x C-v)}}{158}
\entry{\code {do-lowercase-version (M-A, M-B, M-\var {x}, \dots {})}}{156}
\entry{\code {downcase-word (M-l)}}{151}
\entry{\code {dump-functions ()}}{157}
\entry{\code {dump-macros ()}}{157}
\entry{\code {dump-variables ()}}{157}
\entry{\code {dynamic-complete-history (M-\key {TAB})}}{155}
\entry{\code {dabbrev-expand ()}}{156}
\entry{\code {delete-char (C-d)}}{151}
\entry{\code {delete-char-or-list ()}}{155}
\entry{\code {delete-horizontal-space ()}}{153}
\entry{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{154}
\entry{\code {display-shell-version (C-x C-v)}}{159}
\entry{\code {do-lowercase-version (M-A, M-B, M-\var {x}, \dots {})}}{157}
\entry{\code {downcase-word (M-l)}}{152}
\entry{\code {dump-functions ()}}{158}
\entry{\code {dump-macros ()}}{158}
\entry{\code {dump-variables ()}}{158}
\entry{\code {dynamic-complete-history (M-\key {TAB})}}{156}
\initial {E}
\entry{\code {edit-and-execute-command (C-x C-e)}}{158}
\entry{\code {end-kbd-macro (C-x ))}}{155}
\entry{\code {\i {end-of-file} (usually C-d)}}{150}
\entry{\code {end-of-history (M->)}}{148}
\entry{\code {end-of-line (C-e)}}{147}
\entry{\code {exchange-point-and-mark (C-x C-x)}}{156}
\entry{\code {execute-named-command (M-x)}}{157}
\entry{\code {export-completions ()}}{154}
\entry{\code {edit-and-execute-command (C-x C-e)}}{159}
\entry{\code {end-kbd-macro (C-x ))}}{156}
\entry{\code {\i {end-of-file} (usually C-d)}}{151}
\entry{\code {end-of-history (M->)}}{149}
\entry{\code {end-of-line (C-e)}}{148}
\entry{\code {exchange-point-and-mark (C-x C-x)}}{157}
\entry{\code {execute-named-command (M-x)}}{158}
\entry{\code {export-completions ()}}{155}
\initial {F}
\entry{\code {fetch-history ()}}{150}
\entry{\code {forward-backward-delete-char ()}}{150}
\entry{\code {forward-char (C-f)}}{147}
\entry{\code {forward-search-history (C-s)}}{149}
\entry{\code {forward-word (M-f)}}{147}
\entry{\code {fetch-history ()}}{151}
\entry{\code {forward-backward-delete-char ()}}{151}
\entry{\code {forward-char (C-f)}}{148}
\entry{\code {forward-search-history (C-s)}}{150}
\entry{\code {forward-word (M-f)}}{148}
\initial {G}
\entry{\code {glob-complete-word (M-g)}}{157}
\entry{\code {glob-expand-word (C-x *)}}{157}
\entry{\code {glob-list-expansions (C-x g)}}{157}
\entry{\code {glob-complete-word (M-g)}}{158}
\entry{\code {glob-expand-word (C-x *)}}{158}
\entry{\code {glob-list-expansions (C-x g)}}{158}
\initial {H}
\entry{\code {history-and-alias-expand-line ()}}{158}
\entry{\code {history-expand-line (M-^)}}{158}
\entry{\code {history-search-backward ()}}{149}
\entry{\code {history-search-forward ()}}{149}
\entry{\code {history-substring-search-backward ()}}{149}
\entry{\code {history-substring-search-forward ()}}{149}
\entry{\code {history-and-alias-expand-line ()}}{159}
\entry{\code {history-expand-line (M-^)}}{159}
\entry{\code {history-search-backward ()}}{150}
\entry{\code {history-search-forward ()}}{150}
\entry{\code {history-substring-search-backward ()}}{150}
\entry{\code {history-substring-search-forward ()}}{150}
\initial {I}
\entry{\code {insert-comment (M-#)}}{156}
\entry{\code {insert-completions (M-*)}}{153}
\entry{\code {insert-last-argument (M-. or M-_)}}{158}
\entry{\code {insert-comment (M-#)}}{157}
\entry{\code {insert-completions (M-*)}}{154}
\entry{\code {insert-last-argument (M-. or M-_)}}{159}
\initial {K}
\entry{\code {kill-line (C-k)}}{151}
\entry{\code {kill-region ()}}{152}
\entry{\code {kill-whole-line ()}}{152}
\entry{\code {kill-word (M-d)}}{152}
\entry{\code {kill-line (C-k)}}{152}
\entry{\code {kill-region ()}}{153}
\entry{\code {kill-whole-line ()}}{153}
\entry{\code {kill-word (M-d)}}{153}
\initial {M}
\entry{\code {magic-space ()}}{158}
\entry{\code {menu-complete ()}}{153}
\entry{\code {menu-complete-backward ()}}{154}
\entry{\code {magic-space ()}}{159}
\entry{\code {menu-complete ()}}{154}
\entry{\code {menu-complete-backward ()}}{155}
\initial {N}
\entry{\code {next-history (C-n)}}{148}
\entry{\code {next-screen-line ()}}{148}
\entry{\code {non-incremental-forward-search-history (M-n)}}{149}
\entry{\code {non-incremental-reverse-search-history (M-p)}}{149}
\entry{\code {next-history (C-n)}}{149}
\entry{\code {next-screen-line ()}}{149}
\entry{\code {non-incremental-forward-search-history (M-n)}}{150}
\entry{\code {non-incremental-reverse-search-history (M-p)}}{150}
\initial {O}
\entry{\code {operate-and-get-next (C-o)}}{150}
\entry{\code {overwrite-mode ()}}{151}
\entry{\code {operate-and-get-next (C-o)}}{151}
\entry{\code {overwrite-mode ()}}{152}
\initial {P}
\entry{\code {possible-command-completions (C-x !)}}{155}
\entry{\code {possible-completions (M-?)}}{153}
\entry{\code {possible-filename-completions (C-x /)}}{154}
\entry{\code {possible-hostname-completions (C-x @)}}{155}
\entry{\code {possible-username-completions (C-x ~)}}{154}
\entry{\code {possible-variable-completions (C-x $)}}{154}
\entry{\code {prefix-meta (\key {ESC})}}{156}
\entry{\code {previous-history (C-p)}}{148}
\entry{\code {previous-screen-line ()}}{148}
\entry{\code {print-last-kbd-macro ()}}{155}
\entry{\code {possible-command-completions (C-x !)}}{156}
\entry{\code {possible-completions (M-?)}}{154}
\entry{\code {possible-filename-completions (C-x /)}}{155}
\entry{\code {possible-hostname-completions (C-x @)}}{156}
\entry{\code {possible-username-completions (C-x ~)}}{155}
\entry{\code {possible-variable-completions (C-x $)}}{155}
\entry{\code {prefix-meta (\key {ESC})}}{157}
\entry{\code {previous-history (C-p)}}{149}
\entry{\code {previous-screen-line ()}}{149}
\entry{\code {print-last-kbd-macro ()}}{156}
\initial {Q}
\entry{\code {quoted-insert (C-q or C-v)}}{150}
\entry{\code {quoted-insert (C-q or C-v)}}{151}
\initial {R}
\entry{\code {re-read-init-file (C-x C-r)}}{155}
\entry{\code {redraw-current-line ()}}{148}
\entry{\code {reverse-search-history (C-r)}}{148}
\entry{\code {revert-line (M-r)}}{156}
\entry{\code {re-read-init-file (C-x C-r)}}{156}
\entry{\code {redraw-current-line ()}}{149}
\entry{\code {reverse-search-history (C-r)}}{149}
\entry{\code {revert-line (M-r)}}{157}
\initial {S}
\entry{\code {self-insert (a, b, A, 1, !, \dots {})}}{150}
\entry{\code {set-mark (C-@)}}{156}
\entry{\code {shell-backward-kill-word ()}}{152}
\entry{\code {shell-backward-word (M-C-b)}}{147}
\entry{\code {shell-expand-and-requote-line ()}}{157}
\entry{\code {shell-expand-line (M-C-e)}}{157}
\entry{\code {shell-forward-word (M-C-f)}}{147}
\entry{\code {shell-kill-word (M-C-d)}}{152}
\entry{\code {shell-transpose-words (M-C-t)}}{151}
\entry{\code {skip-csi-sequence ()}}{156}
\entry{\code {spell-correct-word (C-x s)}}{157}
\entry{\code {start-kbd-macro (C-x ()}}{155}
\entry{\code {self-insert (a, b, A, 1, !, \dots {})}}{151}
\entry{\code {set-mark (C-@)}}{157}
\entry{\code {shell-backward-kill-word ()}}{153}
\entry{\code {shell-backward-word (M-C-b)}}{148}
\entry{\code {shell-expand-and-requote-line ()}}{158}
\entry{\code {shell-expand-line (M-C-e)}}{158}
\entry{\code {shell-forward-word (M-C-f)}}{148}
\entry{\code {shell-kill-word (M-C-d)}}{153}
\entry{\code {shell-transpose-words (M-C-t)}}{152}
\entry{\code {skip-csi-sequence ()}}{157}
\entry{\code {spell-correct-word (C-x s)}}{158}
\entry{\code {start-kbd-macro (C-x ()}}{156}
\initial {T}
\entry{\code {tilde-expand (M-&)}}{156}
\entry{\code {transpose-chars (C-t)}}{151}
\entry{\code {transpose-words (M-t)}}{151}
\entry{\code {tilde-expand (M-&)}}{157}
\entry{\code {transpose-chars (C-t)}}{152}
\entry{\code {transpose-words (M-t)}}{152}
\initial {U}
\entry{\code {undo (C-_ or C-x C-u)}}{156}
\entry{\code {universal-argument ()}}{153}
\entry{\code {unix-filename-rubout ()}}{152}
\entry{\code {unix-line-discard (C-u)}}{152}
\entry{\code {unix-word-rubout (C-w)}}{152}
\entry{\code {upcase-word (M-u)}}{151}
\entry{\code {undo (C-_ or C-x C-u)}}{157}
\entry{\code {universal-argument ()}}{154}
\entry{\code {unix-filename-rubout ()}}{153}
\entry{\code {unix-line-discard (C-u)}}{153}
\entry{\code {unix-word-rubout (C-w)}}{153}
\entry{\code {upcase-word (M-u)}}{152}
\initial {Y}
\entry{\code {yank (C-y)}}{152}
\entry{\code {yank-last-arg (M-. or M-_)}}{149}
\entry{\code {yank-nth-arg (M-C-y)}}{149}
\entry{\code {yank-pop (M-y)}}{153}
\entry{\code {yank (C-y)}}{153}
\entry{\code {yank-last-arg (M-. or M-_)}}{150}
\entry{\code {yank-nth-arg (M-C-y)}}{150}
\entry{\code {yank-pop (M-y)}}{154}
+46 -12
View 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.
+119 -96
View 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

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.

File: bashref.info, Node: Interactive Shells, Next: Bash Conditional Expressions, Prev: Bash Startup Files, Up: Bash Features
@@ -13792,87 +13815,87 @@ Node: Environment141130
Node: Exit Status143036
Node: Signals145098
Node: Shell Scripts150049
Node: Shell Builtin Commands153350
Node: Bourne Shell Builtins155694
Node: Bash Builtins182416
Node: Modifying Shell Behavior220154
Node: The Set Builtin220499
Node: The Shopt Builtin232496
Node: Special Builtins249552
Node: Shell Variables250544
Node: Bourne Shell Variables250981
Node: Bash Variables253492
Node: Bash Features292779
Node: Invoking Bash293796
Node: Bash Startup Files300383
Node: Interactive Shells305628
Node: What is an Interactive Shell?306039
Node: Is this Shell Interactive?306704
Node: Interactive Shell Behavior307531
Node: Bash Conditional Expressions311295
Node: Shell Arithmetic316715
Node: Aliases320045
Node: Arrays323182
Node: The Directory Stack330887
Node: Directory Stack Builtins331687
Node: Controlling the Prompt336135
Node: The Restricted Shell339022
Node: Bash POSIX Mode342118
Node: Shell Compatibility Mode361937
Node: Job Control370947
Node: Job Control Basics371407
Node: Job Control Builtins377778
Node: Job Control Variables384569
Node: Command Line Editing385803
Node: Introduction and Notation387509
Node: Readline Interaction389864
Node: Readline Bare Essentials391055
Node: Readline Movement Commands392866
Node: Readline Killing Commands393865
Node: Readline Arguments395891
Node: Searching396984
Node: Readline Init File399230
Node: Readline Init File Syntax400536
Node: Conditional Init Constructs427490
Node: Sample Init File431878
Node: Bindable Readline Commands435001
Node: Commands For Moving436542
Node: Commands For History439009
Node: Commands For Text444403
Node: Commands For Killing448531
Node: Numeric Arguments451322
Node: Commands For Completion452477
Node: Keyboard Macros458176
Node: Miscellaneous Commands458880
Node: Readline vi Mode466426
Node: Programmable Completion467406
Node: Programmable Completion Builtins477145
Node: A Programmable Completion Example488885
Node: Using History Interactively494233
Node: Bash History Facilities494917
Node: Bash History Builtins498655
Node: History Interaction506253
Node: Event Designators511206
Node: Word Designators512787
Node: Modifiers515182
Node: Installing Bash517122
Node: Basic Installation518241
Node: Compilers and Options522120
Node: Compiling For Multiple Architectures522873
Node: Installation Names524629
Node: Specifying the System Type526866
Node: Sharing Defaults527615
Node: Operation Controls528332
Node: Optional Features529354
Node: Reporting Bugs542080
Node: Major Differences From The Bourne Shell543440
Node: GNU Free Documentation License564870
Node: Indexes590050
Node: Builtin Index590504
Node: Reserved Word Index597605
Node: Variable Index600053
Node: Function Index617469
Node: Concept Index631605
Node: Shell Builtin Commands153356
Node: Bourne Shell Builtins155700
Node: Bash Builtins182422
Node: Modifying Shell Behavior220160
Node: The Set Builtin220505
Node: The Shopt Builtin232502
Node: Special Builtins249558
Node: Shell Variables250550
Node: Bourne Shell Variables250987
Node: Bash Variables253498
Node: Bash Features292785
Node: Invoking Bash293802
Node: Bash Startup Files301035
Node: Interactive Shells306360
Node: What is an Interactive Shell?306771
Node: Is this Shell Interactive?307436
Node: Interactive Shell Behavior308263
Node: Bash Conditional Expressions312027
Node: Shell Arithmetic317447
Node: Aliases320777
Node: Arrays323914
Node: The Directory Stack331619
Node: Directory Stack Builtins332419
Node: Controlling the Prompt336867
Node: The Restricted Shell339754
Node: Bash POSIX Mode342850
Node: Shell Compatibility Mode362669
Node: Job Control371679
Node: Job Control Basics372139
Node: Job Control Builtins378510
Node: Job Control Variables385301
Node: Command Line Editing386535
Node: Introduction and Notation388241
Node: Readline Interaction390596
Node: Readline Bare Essentials391787
Node: Readline Movement Commands393598
Node: Readline Killing Commands394597
Node: Readline Arguments396623
Node: Searching397716
Node: Readline Init File399962
Node: Readline Init File Syntax401268
Node: Conditional Init Constructs428222
Node: Sample Init File432610
Node: Bindable Readline Commands435733
Node: Commands For Moving437274
Node: Commands For History439741
Node: Commands For Text445135
Node: Commands For Killing449263
Node: Numeric Arguments452054
Node: Commands For Completion453209
Node: Keyboard Macros458908
Node: Miscellaneous Commands459612
Node: Readline vi Mode467158
Node: Programmable Completion468138
Node: Programmable Completion Builtins477877
Node: A Programmable Completion Example489617
Node: Using History Interactively494965
Node: Bash History Facilities495649
Node: Bash History Builtins499387
Node: History Interaction506985
Node: Event Designators511938
Node: Word Designators513519
Node: Modifiers515914
Node: Installing Bash517854
Node: Basic Installation518973
Node: Compilers and Options522852
Node: Compiling For Multiple Architectures523605
Node: Installation Names525361
Node: Specifying the System Type527598
Node: Sharing Defaults528347
Node: Operation Controls529064
Node: Optional Features530086
Node: Reporting Bugs542812
Node: Major Differences From The Bourne Shell544172
Node: GNU Free Documentation License565602
Node: Indexes590782
Node: Builtin Index591236
Node: Reserved Word Index598337
Node: Variable Index600785
Node: Function Index618201
Node: Concept Index632337

End Tag Table
+68 -43
View 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).
BIN
View File
Binary file not shown.
+1 -1
View 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}}
+1 -1
View 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}
+45 -8
View 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
+57 -57
View 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}
@@ -86,58 +86,58 @@
@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}
+47 -47
View File
@@ -130,50 +130,50 @@
\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}}
+47 -47
View 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}
@@ -52,16 +52,16 @@
\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}
@@ -69,36 +69,36 @@
\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}
@@ -112,24 +112,24 @@
\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}
@@ -146,20 +146,20 @@
\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}
@@ -179,17 +179,17 @@
\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}
@@ -200,6 +200,6 @@
\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}
+3 -3
View 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
+13 -6
View 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:
+1 -1
View 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)
+4 -2
View File
@@ -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);
+1 -1
View File
@@ -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
+2 -2
View 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;
+2 -2
View 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++)
+46 -8
View File
@@ -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;
void *next, *prev, *list;
for (prev = (GENERIC_LIST *)NULL; 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.
+2 -2
View 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);
+2 -2
View File
@@ -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)