commit bash-20170324 snapshot

This commit is contained in:
Chet Ramey
2017-03-28 11:32:59 -04:00
parent f698849a75
commit 124d67cde0
41 changed files with 9975 additions and 9249 deletions
+61 -1
View File
@@ -13206,7 +13206,7 @@ subst.c
2/19
----
subst.c
- expand_string_for_rhs: now that this is only use to expand the RHS
- expand_string_for_rhs: now that this is only used to expand the RHS
of the various non-pattern ${paramOPword} expansions, set
expand_no_split_dollar_star depending on whether or not the entire
brace expansion is going to be subjected to word splitting: if it's
@@ -13449,3 +13449,63 @@ parse.y
- parse_matched_pair: handle an embedded process substitution like an
embedded command substitution if we are parsing an array index or
a dollar-brace expansion. Reported by D630 <d630@posteo.net>
3/21
----
subst.h
- ASS_NOEVAL, ASS_NOLONGJMP: new values for assignments, used by
make_variable_value
variables.c
- make_variable_value: ASS_NOEVAL: if this is set, don't attempt
arithmetic evaluation or case modification, just produce the value
(still honor ASS_APPEND)
- make_variable_value: ASS_NOLONGJMP: don't longjmp back to top_level
if arithmetic evaluation fails due to a syntax error
- bind_variable_internal: make sure aflags is passed to all calls to
make_variable_value
- push_temp_var: add ASS_NOLONGJMP to the flags passed to
bind_variable_internal. Fixes bug reported by D630 <d630@posteo.net>
bashline.c
- bash_execute_unix_command: don't bother to attempt optimization by
checking whether the call to parse_and_execute changes $READLINE_LINE;
it can be defeated by the new code that optimizes appends to string
variables. Bug reported by Grisha Levit <grishalevit@gmail.com>
3/22
----
subst.c
- expand_string_for_rhs: re-apply change from 2/19 based on discussion
on the austin-group mailing list about how unquoted ${var-$*}
expands when IFS is null. Originally reported by Martijn Dekker
<martijn@inlv.org>
3/25
----
parse.y
- read_token_word: if we read a WORD immediately after a CASE, FOR, or
SELECT, increment `expecting_in_token' to note that we're going to
be reading IN as the next non-newline token
- special_case_tokens: if we're expecting an IN (expecting_in_token > 0)
and we have an "in", return IN and decrement expecting_in_token. This
is a better implementation of Posix grammar rule 6 than the previous
code in that function (which is still there for posterity, but should
eventually be removed). Fixes bug reported by Torka Noda
<kanito.tasoga@gmail.com>
subst.c
- string_list_pos_params: if the expansion is not quoted, and IFS is
null, return a string containing the quoted positional parameters
separated by spaces. Callers know what to do with the string
- parameter_brace_substring,parameter_brace_remove_pattern,
parameter_brace_transform,parameter_brace_patsub,parameter_brace_casemod:
for the VT_POSPARMS case, after calling the operator-specific
expansion function, which eventually calls string_list_pos_params,
leave the returned string alone, since it's already quoted properly
- parameter_brace_expand: after calling the above functions to perform
expansions, if the expansion is being performed on an unquoted $*
when IFS is null, set the W_SPLITSPACE flag in the return WORD_DESC
so that splitting on spaces is performed on the already-quoted word.
Fixes bug reported by Grisha Levit <grishalevit@gmail.com>
+1
View File
@@ -813,6 +813,7 @@ tests/test-glue-functions f
tests/alias.tests f
tests/alias1.sub f
tests/alias2.sub f
tests/alias3.sub f
tests/alias.right f
tests/appendop.tests f
tests/appendop1.sub f
+4 -6
View File
@@ -1,6 +1,6 @@
/* bashline.c -- Bash's interface to the readline library. */
/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -4094,7 +4094,7 @@ bash_execute_unix_command (count, key)
register int i, r;
intmax_t mi;
sh_parser_state_t ps;
char *cmd, *value, *l, *l1, *ce;
char *cmd, *value, *ce;
SHELL_VAR *v;
char ibuf[INT_STRLEN_BOUND(int) + 1];
@@ -4128,7 +4128,6 @@ bash_execute_unix_command (count, key)
v = bind_variable ("READLINE_LINE", rl_line_buffer, 0);
if (v)
VSETATTR (v, att_exported);
l = v ? value_cell (v) : 0;
value = inttostr (rl_point, ibuf, sizeof (ibuf));
v = bind_int_variable ("READLINE_POINT", value, 0);
if (v)
@@ -4140,9 +4139,8 @@ bash_execute_unix_command (count, key)
restore_parser_state (&ps);
v = find_variable ("READLINE_LINE");
l1 = v ? value_cell (v) : 0;
if (l1 != l)
maybe_make_readline_line (value_cell (v));
maybe_make_readline_line (v ? value_cell (v) : 0);
v = find_variable ("READLINE_POINT");
if (v && legal_number (value_cell (v), &mi))
{
+115 -79
View File
@@ -9,7 +9,7 @@ SSYYNNOOPPSSIISS
bbaasshh [options] [command_string | file]
CCOOPPYYRRIIGGHHTT
Bash is Copyright (C) 1989-2016 by the Free Software Foundation, Inc.
Bash is Copyright (C) 1989-2017 by the Free Software Foundation, Inc.
DDEESSCCRRIIPPTTIIOONN
BBaasshh is an sshh-compatible command language interpreter that executes
@@ -22,9 +22,9 @@ DDEESSCCRRIIPPTTIIOONN
OOPPTTIIOONNSS
All of the single-character shell options documented in the description
of the sseett builtin command can be used as options when the shell is
invoked. In addition, bbaasshh interprets the following options when it is
invoked:
of the sseett builtin command, including --oo, can be used as options when
the shell is invoked. In addition, bbaasshh interprets the following
options when it is invoked:
--cc If the --cc option is present, then commands are read from the
first non-option argument _c_o_m_m_a_n_d___s_t_r_i_n_g. If there are argu-
@@ -1286,9 +1286,9 @@ PPAARRAAMMEETTEERRSS
command (see SSHHEELLLL GGRRAAMMMMAARR above).
PPSS44 The value of this parameter is expanded as with PPSS11 and the
value is printed before each command bbaasshh displays during an
execution trace. The first character of PPSS44 is replicated mul-
tiple times, as necessary, to indicate multiple levels of indi-
rection. The default is ``++ ''.
execution trace. The first character of the expanded value of
PPSS44 is replicated multiple times, as necessary, to indicate mul-
tiple levels of indirection. The default is ``++ ''.
SSHHEELLLL The full pathname to the shell is kept in this environment vari-
able. If it is not set when the shell starts, bbaasshh assigns to
it the full pathname of the current user's login shell.
@@ -2176,12 +2176,11 @@ RREEDDIIRREECCTTIIOONN
[_n]<<<<<<_w_o_r_d
The _w_o_r_d undergoes brace expansion, tilde expansion, parameter and
variable expansion, command substitution, arithmetic expansion, and
quote removal. Pathname expansion and word splitting are not per-
formed. The result is supplied as a single string, with a newline
appended, to the command on its standard input (or file descriptor _n if
_n is specified).
The _w_o_r_d undergoes tilde expansion, parameter and variable expansion,
command substitution, arithmetic expansion, and quote removal. Path-
name expansion and word splitting are not performed. The result is
supplied as a single string, with a newline appended, to the command on
its standard input (or file descriptor _n if _n is specified).
DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss
The redirection operator
@@ -2189,22 +2188,22 @@ RREEDDIIRREECCTTIIOONN
[_n]<<&&_w_o_r_d
is used to duplicate input file descriptors. If _w_o_r_d expands to one or
more digits, the file descriptor denoted by _n is made to be a copy of
that file descriptor. If the digits in _w_o_r_d do not specify a file
descriptor open for input, a redirection error occurs. If _w_o_r_d evalu-
ates to --, file descriptor _n is closed. If _n is not specified, the
more digits, the file descriptor denoted by _n is made to be a copy of
that file descriptor. If the digits in _w_o_r_d do not specify a file
descriptor open for input, a redirection error occurs. If _w_o_r_d evalu-
ates to --, file descriptor _n is closed. If _n is not specified, the
standard input (file descriptor 0) is used.
The operator
[_n]>>&&_w_o_r_d
is used similarly to duplicate output file descriptors. If _n is not
specified, the standard output (file descriptor 1) is used. If the
digits in _w_o_r_d do not specify a file descriptor open for output, a re-
direction error occurs. If _w_o_r_d evaluates to --, file descriptor _n is
closed. As a special case, if _n is omitted, and _w_o_r_d does not expand
to one or more digits or --, the standard output and standard error are
is used similarly to duplicate output file descriptors. If _n is not
specified, the standard output (file descriptor 1) is used. If the
digits in _w_o_r_d do not specify a file descriptor open for output, a re-
direction error occurs. If _w_o_r_d evaluates to --, file descriptor _n is
closed. As a special case, if _n is omitted, and _w_o_r_d does not expand
to one or more digits or --, the standard output and standard error are
redirected as described previously.
MMoovviinngg FFiillee DDeessccrriippttoorrss
@@ -2212,7 +2211,7 @@ RREEDDIIRREECCTTIIOONN
[_n]<<&&_d_i_g_i_t--
moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard
moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard
input (file descriptor 0) if _n is not specified. _d_i_g_i_t is closed after
being duplicated to _n.
@@ -2220,7 +2219,7 @@ RREEDDIIRREECCTTIIOONN
[_n]>>&&_d_i_g_i_t--
moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard
moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard
output (file descriptor 1) if _n is not specified.
OOppeenniinngg FFiillee DDeessccrriippttoorrss ffoorr RReeaaddiinngg aanndd WWrriittiinngg
@@ -2228,81 +2227,102 @@ RREEDDIIRREECCTTIIOONN
[_n]<<>>_w_o_r_d
causes the file whose name is the expansion of _w_o_r_d to be opened for
both reading and writing on file descriptor _n, or on file descriptor 0
causes the file whose name is the expansion of _w_o_r_d to be opened for
both reading and writing on file descriptor _n, or on file descriptor 0
if _n is not specified. If the file does not exist, it is created.
AALLIIAASSEESS
_A_l_i_a_s_e_s allow a string to be substituted for a word when it is used as
the first word of a simple command. The shell maintains a list of
aliases that may be set and unset with the aalliiaass and uunnaalliiaass builtin
commands (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The first word of each
simple command, if unquoted, is checked to see if it has an alias. If
so, that word is replaced by the text of the alias. The characters //,
$$, ``, and == and any of the shell _m_e_t_a_c_h_a_r_a_c_t_e_r_s or quoting characters
_A_l_i_a_s_e_s allow a string to be substituted for a word when it is used as
the first word of a simple command. The shell maintains a list of
aliases that may be set and unset with the aalliiaass and uunnaalliiaass builtin
commands (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The first word of each
simple command, if unquoted, is checked to see if it has an alias. If
so, that word is replaced by the text of the alias. The characters //,
$$, ``, and == and any of the shell _m_e_t_a_c_h_a_r_a_c_t_e_r_s or quoting characters
listed above may not appear in an alias name. The replacement text may
contain any valid shell input, including shell metacharacters. The
first word of the replacement text is tested for aliases, but a word
that is identical to an alias being expanded is not expanded a second
time. This means that one may alias llss to llss --FF, for instance, and
bbaasshh does not try to recursively expand the replacement text. If the
last character of the alias value is a _b_l_a_n_k, then the next command
contain any valid shell input, including shell metacharacters. The
first word of the replacement text is tested for aliases, but a word
that is identical to an alias being expanded is not expanded a second
time. This means that one may alias llss to llss --FF, for instance, and
bbaasshh does not try to recursively expand the replacement text. If the
last character of the alias value is a _b_l_a_n_k, then the next command
word following the alias is also checked for alias expansion.
Aliases are created and listed with the aalliiaass command, and removed with
the uunnaalliiaass command.
There is no mechanism for using arguments in the replacement text. If
arguments are needed, a shell function should be used (see FFUUNNCCTTIIOONNSS
There is no mechanism for using arguments in the replacement text. If
arguments are needed, a shell function should be used (see FFUUNNCCTTIIOONNSS
below).
Aliases are not expanded when the shell is not interactive, unless the
eexxppaanndd__aalliiaasseess shell option is set using sshhoopptt (see the description of
Aliases are not expanded when the shell is not interactive, unless the
eexxppaanndd__aalliiaasseess shell option is set using sshhoopptt (see the description of
sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below).
The rules concerning the definition and use of aliases are somewhat
confusing. BBaasshh always reads at least one complete line of input
before executing any of the commands on that line. Aliases are
expanded when a command is read, not when it is executed. Therefore,
an alias definition appearing on the same line as another command does
not take effect until the next line of input is read. The commands
The rules concerning the definition and use of aliases are somewhat
confusing. BBaasshh always reads at least one complete line of input
before executing any of the commands on that line. Aliases are
expanded when a command is read, not when it is executed. Therefore,
an alias definition appearing on the same line as another command does
not take effect until the next line of input is read. The commands
following the alias definition on that line are not affected by the new
alias. This behavior is also an issue when functions are executed.
Aliases are expanded when a function definition is read, not when the
function is executed, because a function definition is itself a com-
mand. As a consequence, aliases defined in a function are not avail-
able until after that function is executed. To be safe, always put
alias definitions on a separate line, and do not use aalliiaass in compound
alias. This behavior is also an issue when functions are executed.
Aliases are expanded when a function definition is read, not when the
function is executed, because a function definition is itself a com-
mand. As a consequence, aliases defined in a function are not avail-
able until after that function is executed. To be safe, always put
alias definitions on a separate line, and do not use aalliiaass in compound
commands.
For almost every purpose, aliases are superseded by shell functions.
FFUUNNCCTTIIOONNSS
A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR,
stores a series of commands for later execution. When the name of a
shell function is used as a simple command name, the list of commands
A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR,
stores a series of commands for later execution. When the name of a
shell function is used as a simple command name, the list of commands
associated with that function name is executed. Functions are executed
in the context of the current shell; no new process is created to
interpret them (contrast this with the execution of a shell script).
When a function is executed, the arguments to the function become the
in the context of the current shell; no new process is created to
interpret them (contrast this with the execution of a shell script).
When a function is executed, the arguments to the function become the
positional parameters during its execution. The special parameter ## is
updated to reflect the change. Special parameter 00 is unchanged. The
first element of the FFUUNNCCNNAAMMEE variable is set to the name of the func-
updated to reflect the change. Special parameter 00 is unchanged. The
first element of the FFUUNNCCNNAAMMEE variable is set to the name of the func-
tion while the function is executing.
All other aspects of the shell execution environment are identical
between a function and its caller with these exceptions: the DDEEBBUUGG and
RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL
BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been
given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin
below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett
builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN
traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell
All other aspects of the shell execution environment are identical
between a function and its caller with these exceptions: the DDEEBBUUGG and
RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL
BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been
given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin
below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett
builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN
traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell
option has been enabled.
Variables local to the function may be declared with the llooccaall builtin
Variables local to the function may be declared with the llooccaall builtin
command. Ordinarily, variables and their values are shared between the
function and its caller.
function and its caller. If a variable is declared llooccaall, the vari-
able's visible scope is restricted to that function and its children
(including the functions it calls). Local variables "shadow" variables
with the same name declared at previous scopes. For instance, a local
variable declared in a function hides a global variable of the same
name: references and assignments refer to the local variable, leaving
the global variable unmodified. When the function returns, the global
variable is once again visible.
The shell uses _d_y_n_a_m_i_c _s_c_o_p_i_n_g to control a variable's visibility
within functions. With dynamic scoping, visible variables and their
values are a result of the sequence of function calls that caused exe-
cution to reach the current function. The value of a variable that a
function sees depends on its value within its caller, if any, whether
that caller is the "global" scope or another shell function. This is
also the value that a local variable declaration "shadows", and the
value that is restored when the function returns.
For example, if a variable _v_a_r is declared as local in function _f_u_n_c_1,
and _f_u_n_c_1 calls another function _f_u_n_c_2, references to _v_a_r made from
within _f_u_n_c_2 will resolve to the local variable _v_a_r from _f_u_n_c_1, shadow-
ing any global variable named _v_a_r.
The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0,
defines a maximum function nesting level. Function invocations that
@@ -2499,7 +2519,9 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS
binary operators return true if _a_r_g_1 is equal to, not equal to,
less than, less than or equal to, greater than, or greater than
or equal to _a_r_g_2, respectively. _A_r_g_1 and _a_r_g_2 may be positive
or negative integers.
or negative integers. When used with the [[[[ command, _A_r_g_1 and
_A_r_g_2 are evaluated as arithmetic expressions (see AARRIITTHHMMEETTIICC
EEVVAALLUUAATTIIOONN above).
SSIIMMPPLLEE CCOOMMMMAANNDD EEXXPPAANNSSIIOONN
When a simple command is executed, the shell performs the following
@@ -2836,9 +2858,11 @@ PPRROOMMPPTTIINNGG
When executing interactively, bbaasshh displays the primary prompt PPSS11 when
it is ready to read a command, and the secondary prompt PPSS22 when it
needs more input to complete a command. BBaasshh displays PPSS00 after it
reads a command but before executing it. BBaasshh allows these prompt
strings to be customized by inserting a number of backslash-escaped
special characters that are decoded as follows:
reads a command but before executing it. BBaasshh displays PPSS44 as
described above before tracing each command when the --xx option is
enabled. BBaasshh allows these prompt strings to be customized by insert-
ing a number of backslash-escaped special characters that are decoded
as follows:
\\aa an ASCII bell character (07)
\\dd the date in "Weekday Month Date" format (e.g., "Tue May
26")
@@ -3369,6 +3393,18 @@ RREEAADDLLIINNEE
sshheellll--bbaacckkwwaarrdd--wwoorrdd
Move back to the start of the current or previous word. Words
are delimited by non-quoted shell metacharacters.
pprreevviioouuss--ssccrreeeenn--lliinnee
Attempt to move point to the same physical screen column on the
previous physical screen line. This will not have the desired
effect if the current Readline line does not take up more than
one physical line or if point is not greater than the length of
the prompt plus the screen width.
nneexxtt--ssccrreeeenn--lliinnee
Attempt to move point to the same physical screen column on the
next physical screen line. This will not have the desired effect
if the current Readline line does not take up more than one
physical line or if the length of the current Readline line is
not greater than the length of the prompt plus the screen width.
cclleeaarr--ssccrreeeenn ((CC--ll))
Clear the screen leaving the current line at the top of the
screen. With an argument, refresh the current line without
@@ -5989,4 +6025,4 @@ BBUUGGSS
GNU Bash 4.4 2017 February 1 BASH(1)
GNU Bash 4.4 2017 March 22 BASH(1)
+41 -3
View File
@@ -5,12 +5,12 @@
.\" Case Western Reserve University
.\" chet.ramey@case.edu
.\"
.\" Last Change: Mon Mar 13 12:04:35 EDT 2017
.\" Last Change: Wed Mar 22 15:35:08 EDT 2017
.\"
.\" bash_builtins, strip all but Built-Ins section
.if \n(zZ=1 .ig zZ
.if \n(zY=1 .ig zY
.TH BASH 1 "2017 March 13" "GNU Bash 4.4"
.TH BASH 1 "2017 March 22" "GNU Bash 4.4"
.\"
.\" There's some problem with having a `@'
.\" in a tagged paragraph with the BSD man macros.
@@ -2673,10 +2673,12 @@ special parameters \fI@\fP and \fI*\fP within double quotes.
The
.B unset
builtin is used to destroy arrays. \fBunset\fP \fIname\fP[\fIsubscript\fP]
destroys the array element at index \fIsubscript\fP.
destroys the array element at index \fIsubscript\fP,
for both indexed and associative arrays.
Negative subscripts to indexed arrays are interpreted as described above.
Care must be taken to avoid unwanted side effects caused by pathname
expansion.
Unsetting the last element of an array variable does not unset the variable.
\fBunset\fP \fIname\fP, where \fIname\fP is an array, or
\fBunset\fP \fIname\fP[\fIsubscript\fP], where
\fIsubscript\fP is \fB*\fP or \fB@\fP, removes the entire array.
@@ -4244,6 +4246,42 @@ Variables local to the function may be declared with the
.B local
builtin command. Ordinarily, variables and their values
are shared between the function and its caller.
If a variable is declared \fBlocal\fP, the variable's visible scope
is restricted to that function and its children (including the functions
it calls).
Local variables "shadow" variables with the same name declared at
previous scopes.
For instance, a local variable declared in a function
hides a global variable of the same name: references and assignments
refer to the local variable, leaving the global variable unmodified.
When the function returns, the global variable is once again visible.
.PP
The shell uses \fIdynamic scoping\fP to control a variable's visibility
within functions.
With dynamic scoping, visible variables and their values
are a result of the sequence of function calls that caused execution
to reach the current function.
The value of a variable that a function sees depends
on its value within its caller, if any, whether that caller is
the "global" scope or another shell function.
This is also the value that a local variable
declaration "shadows", and the value that is restored when the function
returns.
.PP
For example, if a variable \fIvar\fP is declared as local in function
\fIfunc1\fP, and \fIfunc1\fP calls another function \fIfunc2\fP,
references to \fIvar\fP made from within \fIfunc2\fP will resolve to the
local variable \fIvar\fP from \fIfunc1\fP, shadowing any global variable
named \fIvar\fP.
.PP
The \fBunset\fP builtin also acts using the same dynamic scope: if a
variable is local to the current scope, \fBunset\fP will unset it;
otherwise the unset will refer to the variable found in any calling scope
as described above.
If a variable at the local scope is unset, it will remain so
until it is reset in that scope or until the function returns.
If the unset acts on a variable at a previous scope, any instance of a
variable with that name that had been shadowed will become visible.
.PP
The \fBFUNCNEST\fP variable, if set to a numeric value greater
than 0, defines a maximum function nesting level. Function
+73 -8
View File
@@ -3,7 +3,7 @@
</HEAD>
<BODY><TABLE WIDTH=100%>
<TR>
<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2017 February 1<TH ALIGN=RIGHT width=33%>BASH(1)
<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2017 March 22<TH ALIGN=RIGHT width=33%>BASH(1)
</TR>
</TABLE>
<BR><A HREF="#index">Index</A>
@@ -42,7 +42,7 @@ bash - GNU Bourne-Again SHell
<H3>COPYRIGHT</H3>
Bash is Copyright &#169; 1989-2016 by the Free Software Foundation, Inc.
Bash is Copyright &#169; 1989-2017 by the Free Software Foundation, Inc.
<A NAME="lbAE">&nbsp;</A>
<H3>DESCRIPTION</H3>
@@ -68,8 +68,8 @@ can be configured to be POSIX-conformant by default.
<H3>OPTIONS</H3>
All of the single-character shell options documented in the
description of the <B>set</B> builtin command can be used as options
when the shell is invoked.
description of the <B>set</B> builtin command, including <B>-o</B>,
can be used as options when the shell is invoked.
In addition, <B>bash</B>
interprets the following options when it is invoked:
<P>
@@ -3095,6 +3095,7 @@ and the value is printed before each command
<B>bash</B>
displays during an execution trace. The first character of
the expanded value of
<FONT SIZE=-1><B>PS4</B>
</FONT>
@@ -5116,7 +5117,7 @@ A variant of here documents, the format is:
<P>
The <I>word</I> undergoes
brace expansion, tilde expansion, parameter and variable expansion,
tilde expansion, parameter and variable expansion,
command substitution, arithmetic expansion, and quote removal.
Pathname expansion and word splitting are not performed.
The result is supplied as a single string, with a newline appended,
@@ -5420,6 +5421,35 @@ Variables local to the function may be declared with the
builtin command. Ordinarily, variables and their values
are shared between the function and its caller.
If a variable is declared <B>local</B>, the variable's visible scope
is restricted to that function and its children (including the functions
it calls).
Local variables &quot;shadow&quot; variables with the same name declared at
previous scopes.
For instance, a local variable declared in a function
hides a global variable of the same name: references and assignments
refer to the local variable, leaving the global variable unmodified.
When the function returns, the global variable is once again visible.
<P>
The shell uses <I>dynamic scoping</I> to control a variable's visibility
within functions.
With dynamic scoping, visible variables and their values
are a result of the sequence of function calls that caused execution
to reach the current function.
The value of a variable that a function sees depends
on its value within its caller, if any, whether that caller is
the &quot;global&quot; scope or another shell function.
This is also the value that a local variable
declaration &quot;shadows&quot;, and the value that is restored when the function
returns.
<P>
For example, if a variable <I>var</I> is declared as local in function
<I>func1</I>, and <I>func1</I> calls another function <I>func2</I>,
references to <I>var</I> made from within <I>func2</I> will resolve to the
local variable <I>var</I> from <I>func1</I>, shadowing any global variable
named <I>var</I>.
<P>
The <B>FUNCNEST</B> variable, if set to a numeric value greater
@@ -5823,6 +5853,17 @@ and
<I>arg2</I>
may be positive or negative integers.
When used with the <B>[[</B> command,
<I>Arg1</I>
and
<I>Arg2</I>
are evaluated as arithmetic expressions (see
<FONT SIZE=-1><B>ARITHMETIC EVALUATION</B>
</FONT>
above).
</DL>
<A NAME="lbBX">&nbsp;</A>
@@ -6532,11 +6573,20 @@ when it needs more input to complete a command.
<B>Bash</B>
displays
<B>PS0</B>
<FONT SIZE=-1><B>PS0</B>
</FONT>
after it reads a command but before executing it.
<B>Bash</B>
displays
<FONT SIZE=-1><B>PS4</B>
</FONT>
as described above
before tracing each command when the <B>-x</B> option is enabled.
<B>Bash</B>
allows these prompt strings to be customized by inserting a number of
backslash-escaped special characters that are decoded as follows:
<DL COMPACT><DT><DD>
@@ -7641,6 +7691,21 @@ Words are delimited by non-quoted shell metacharacters.
<DD>
Move back to the start of the current or previous word.
Words are delimited by non-quoted shell metacharacters.
<DT><B>previous-screen-line</B>
<DD>
Attempt to move point to the same physical screen column on the previous
physical screen line. This will not have the desired effect if the current
Readline line does not take up more than one physical line or if point is not
greater than the length of the prompt plus the screen width.
<DT><B>next-screen-line</B>
<DD>
Attempt to move point to the same physical screen column on the next
physical screen line. This will not have the desired effect if the current
Readline line does not take up more than one physical line or if the length
of the current Readline line is not greater than the length of the prompt
plus the screen width.
<DT><B>clear-screen (C-l)</B>
<DD>
@@ -13649,7 +13714,7 @@ There may be only one active coprocess at a time.
<HR>
<TABLE WIDTH=100%>
<TR>
<TH ALIGN=LEFT width=33%>GNU Bash 4.4<TH ALIGN=CENTER width=33%>2017 February 1<TH ALIGN=RIGHT width=33%>BASH(1)
<TH ALIGN=LEFT width=33%>GNU Bash 4.4<TH ALIGN=CENTER width=33%>2017 March 22<TH ALIGN=RIGHT width=33%>BASH(1)
</TR>
</TABLE>
<HR>
@@ -13755,6 +13820,6 @@ There may be only one active coprocess at a time.
</DL>
<HR>
This document was created by man2html from bash.1.<BR>
Time: 01 February 2017 09:18:17 EST
Time: 22 March 2017 16:12:40 EDT
</BODY>
</HTML>
+227 -165
View File
@@ -2,9 +2,9 @@ This is bash.info, produced by makeinfo version 6.3 from
bashref.texi.
This text is a brief description of the features that are present in the
Bash shell (version 4.4, 1 February 2017).
Bash shell (version 4.4, 22 March 2017).
This is Edition 4.4, last updated 1 February 2017, of 'The GNU Bash
This is Edition 4.4, last updated 22 March 2017, of 'The GNU Bash
Reference Manual', for 'Bash', Version 4.4.
Copyright (C) 1988-2017 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 4.4, 1 February 2017). The Bash home page is
Bash shell (version 4.4, 22 March 2017). The Bash home page is
<http://www.gnu.org/software/bash/>.
This is Edition 4.4, last updated 1 February 2017, of 'The GNU Bash
This is Edition 4.4, last updated 22 March 2017, of 'The GNU Bash
Reference Manual', for 'Bash', Version 4.4.
Bash contains features that appear in other popular shells, and some
@@ -1210,7 +1210,47 @@ last command executed before the 'return'.
Variables local to the function may be declared with the 'local'
builtin. These variables are visible only to the function and the
commands it invokes.
commands it invokes. This is particularly important when a shell
function calls other functions.
Local variables "shadow" variables with the same name declared at
previous scopes. For instance, a local variable declared in a function
hides a global variable of the same name: references and assignments
refer to the local variable, leaving the global variable unmodified.
When the function returns, the global variable is once again visible.
The shell uses DYNAMIC SCOPING to control a variable's visibility
within functions. With dynamic scoping, visible variables and their
values are a result of the sequence of function calls that caused
execution to reach the current function. The value of a variable that a
function sees depends on its value within its caller, if any, whether
that caller is the "global" scope or another shell function. This is
also the value that a local variable declaration "shadows", and the
value that is restored when the function returns.
For example, if a variable VAR is declared as local in function
FUNC1, and FUNC1 calls another function FUNC2, references to VAR made
from within FUNC2 will resolve to the local variable VAR from FUNC1,
shadowing any global variable named VAR.
The following script demonstrates this behavior. When executed, the
script displays
In func2, var = func1 local
func1()
{
local var='func1 local'
func2
}
func2()
{
echo "In func2, var = $var"
}
var=global
func1
Function names and definitions may be listed with the '-f' option to
the 'declare' ('typeset') builtin command (*note Bash Builtins::). The
@@ -2354,12 +2394,11 @@ fashion.
A variant of here documents, the format is:
[N]<<< WORD
The WORD undergoes brace expansion, tilde expansion, parameter and
variable expansion, command substitution, arithmetic expansion, and
quote removal. Pathname expansion and word splitting are not performed.
The result is supplied as a single string, with a newline appended, to
the command on its standard input (or file descriptor N if N is
specified).
The WORD undergoes tilde expansion, parameter and variable expansion,
command substitution, arithmetic expansion, and quote removal. Pathname
expansion and word splitting are not performed. The result is supplied
as a single string, with a newline appended, to the command on its
standard input (or file descriptor N if N is specified).
3.6.8 Duplicating File Descriptors
----------------------------------
@@ -4687,7 +4726,8 @@ In some cases, Bash assigns a default value to the variable.
that are expanded before 'PS1' is displayed.
'PS2'
The secondary prompt string. The default value is '> '.
The secondary prompt string. The default value is '> '. 'PS2' is
expanded in the same way as 'PS1' before being displayed.

File: bash.info, Node: Bash Variables, Prev: Bourne Shell Variables, Up: Shell Variables
@@ -5254,10 +5294,12 @@ Variables::).
with '#? '
'PS4'
The value is the prompt printed before the command line is echoed
when the '-x' option is set (*note The Set Builtin::). The first
character of 'PS4' is replicated multiple times, as necessary, to
indicate multiple levels of indirection. The default is '+ '.
The value of this parameter is expanded like PS1 and the expanded
value is the prompt printed before the command line is echoed when
the '-x' option is set (*note The Set Builtin::). The first
character of the expanded value is replicated multiple times, as
necessary, to indicate multiple levels of indirection. The default
is '+ '.
'PWD'
The current working directory as set by the 'cd' builtin.
@@ -5714,8 +5756,10 @@ several ways.
3. Bash expands and displays 'PS1' before reading the first line of a
command, and expands and displays 'PS2' before reading the second
and subsequent lines of a multi-line command. Bash displays 'PS0'
after it reads a command but before executing it.
and subsequent lines of a multi-line command. Bash expands and
displays 'PS0' after it reads a command but before executing it.
See *note Controlling the Prompt::, for a complete list of prompt
string escape sequences.
4. Bash executes the value of the 'PROMPT_COMMAND' variable as a
command before printing the primary prompt, '$PS1' (*note Bash
@@ -5920,7 +5964,9 @@ link itself.
arithmetic binary operators return true if ARG1 is equal to, not
equal to, less than, less than or equal to, greater than, or
greater than or equal to ARG2, respectively. ARG1 and ARG2 may be
positive or negative integers.
positive or negative integers. When used with the '[[' command,
ARG1 and ARG2 are evaluated as arithmetic expressions (*note Shell
Arithmetic::).

File: bash.info, Node: Shell Arithmetic, Next: Aliases, Prev: Bash Conditional Expressions, Up: Bash Features
@@ -6281,7 +6327,7 @@ non-null value, then the value is executed just as if it had been typed
on the command line.
In addition, the following table describes the special characters
which can appear in the prompt variables 'PS1' to 'PS4':
which can appear in the prompt variables 'PS0', 'PS1', 'PS2', and 'PS4':
'\a'
A bell character.
@@ -7854,6 +7900,20 @@ File: bash.info, Node: Commands For Moving, Next: Commands For History, Up: B
Move back to the start of the current or previous word. Words are
delimited by non-quoted shell metacharacters.
'previous-screen-line ()'
Attempt to move point to the same physical screen column on the
previous physical screen line. This will not have the desired
effect if the current Readline line does not take up more than one
physical line or if point is not greater than the length of the
prompt plus the screen width.
'next-screen-line ()'
Attempt to move point to the same physical screen column on the
next physical screen line. This will not have the desired effect
if the current Readline line does not take up more than one
physical line or if the length of the current Readline line is not
greater than the length of the prompt plus the screen width.
'clear-screen (C-l)'
Clear the screen and redraw the current line, leaving the current
line at the top of the screen.
@@ -9737,7 +9797,7 @@ unless the operating system does not provide the necessary support.
'--enable-prompt-string-decoding'
Turn on the interpretation of a number of backslash-escaped
characters in the '$PS1', '$PS2', '$PS3', and '$PS4' prompt
characters in the '$PS0', '$PS1', '$PS2', and '$PS4' prompt
strings. See *note Controlling the Prompt::, for a complete list
of prompt string escape sequences.
@@ -11019,17 +11079,17 @@ D.3 Parameter and Variable Index
(line 53)
* PS3: Bash Variables. (line 559)
* PS4: Bash Variables. (line 564)
* PWD: Bash Variables. (line 570)
* RANDOM: Bash Variables. (line 573)
* READLINE_LINE: Bash Variables. (line 578)
* READLINE_POINT: Bash Variables. (line 582)
* REPLY: Bash Variables. (line 586)
* PWD: Bash Variables. (line 572)
* RANDOM: Bash Variables. (line 575)
* READLINE_LINE: Bash Variables. (line 580)
* READLINE_POINT: Bash Variables. (line 584)
* REPLY: Bash Variables. (line 588)
* revert-all-at-newline: Readline Init File Syntax.
(line 270)
* SECONDS: Bash Variables. (line 589)
* SHELL: Bash Variables. (line 595)
* SHELLOPTS: Bash Variables. (line 600)
* SHLVL: Bash Variables. (line 609)
* SECONDS: Bash Variables. (line 591)
* SHELL: Bash Variables. (line 597)
* SHELLOPTS: Bash Variables. (line 602)
* SHLVL: Bash Variables. (line 611)
* show-all-if-ambiguous: Readline Init File Syntax.
(line 276)
* show-all-if-unmodified: Readline Init File Syntax.
@@ -11040,10 +11100,10 @@ D.3 Parameter and Variable Index
(line 297)
* TEXTDOMAIN: Locale Translation. (line 11)
* TEXTDOMAINDIR: Locale Translation. (line 11)
* TIMEFORMAT: Bash Variables. (line 614)
* TMOUT: Bash Variables. (line 652)
* TMPDIR: Bash Variables. (line 664)
* UID: Bash Variables. (line 668)
* TIMEFORMAT: Bash Variables. (line 616)
* TMOUT: Bash Variables. (line 654)
* TMPDIR: Bash Variables. (line 666)
* UID: Bash Variables. (line 670)
* vi-cmd-mode-string: Readline Init File Syntax.
(line 310)
* vi-ins-mode-string: Readline Init File Syntax.
@@ -11083,7 +11143,7 @@ D.4 Function Index
(line 42)
* character-search-backward (M-C-]): Miscellaneous Commands.
(line 47)
* clear-screen (C-l): Commands For Moving. (line 34)
* clear-screen (C-l): Commands For Moving. (line 48)
* complete (<TAB>): Commands For Completion.
(line 6)
* complete-command (M-!): Commands For Completion.
@@ -11179,6 +11239,7 @@ D.4 Function Index
(line 38)
* next-history (C-n): Commands For History.
(line 17)
* next-screen-line (): Commands For Moving. (line 41)
* non-incremental-forward-search-history (M-n): Commands For History.
(line 41)
* non-incremental-reverse-search-history (M-p): Commands For History.
@@ -11202,11 +11263,12 @@ D.4 Function Index
(line 19)
* previous-history (C-p): Commands For History.
(line 13)
* previous-screen-line (): Commands For Moving. (line 34)
* print-last-kbd-macro (): Keyboard Macros. (line 17)
* quoted-insert (C-q or C-v): Commands For Text. (line 26)
* re-read-init-file (C-x C-r): Miscellaneous Commands.
(line 6)
* redraw-current-line (): Commands For Moving. (line 38)
* redraw-current-line (): Commands For Moving. (line 52)
* reverse-search-history (C-r): Commands For History.
(line 27)
* revert-line (M-r): Miscellaneous Commands.
@@ -11410,134 +11472,134 @@ D.5 Concept Index

Tag Table:
Node: Top895
Node: Introduction2813
Node: What is Bash?3029
Node: What is a shell?4143
Node: Definitions6681
Node: Basic Shell Features9632
Node: Shell Syntax10851
Node: Shell Operation11877
Node: Quoting13170
Node: Escape Character14470
Node: Single Quotes14955
Node: Double Quotes15303
Node: ANSI-C Quoting16581
Node: Locale Translation17834
Node: Comments18730
Node: Shell Commands19348
Node: Simple Commands20220
Node: Pipelines20851
Node: Lists23594
Node: Compound Commands25323
Node: Looping Constructs26326
Node: Conditional Constructs28789
Node: Command Grouping39711
Node: Coprocesses41190
Node: GNU Parallel43022
Node: Shell Functions46995
Node: Shell Parameters52201
Node: Positional Parameters56614
Node: Special Parameters57514
Node: Shell Expansions60851
Node: Brace Expansion62945
Node: Tilde Expansion65779
Node: Shell Parameter Expansion68127
Node: Command Substitution82259
Node: Arithmetic Expansion83614
Node: Process Substitution84546
Node: Word Splitting85666
Node: Filename Expansion87610
Node: Pattern Matching89984
Node: Quote Removal93970
Node: Redirections94265
Node: Executing Commands103839
Node: Simple Command Expansion104509
Node: Command Search and Execution106439
Node: Command Execution Environment108775
Node: Environment111759
Node: Exit Status113418
Node: Signals115088
Node: Shell Scripts117055
Node: Shell Builtin Commands119570
Node: Bourne Shell Builtins121604
Node: Bash Builtins142204
Node: Modifying Shell Behavior170849
Node: The Set Builtin171194
Node: The Shopt Builtin181607
Node: Special Builtins197505
Node: Shell Variables198484
Node: Bourne Shell Variables198921
Node: Bash Variables200952
Node: Bash Features230660
Node: Invoking Bash231559
Node: Bash Startup Files237508
Node: Interactive Shells242611
Node: What is an Interactive Shell?243021
Node: Is this Shell Interactive?243670
Node: Interactive Shell Behavior244485
Node: Bash Conditional Expressions247860
Node: Shell Arithmetic252100
Node: Aliases254917
Node: Arrays257465
Node: The Directory Stack262549
Node: Directory Stack Builtins263333
Node: Controlling the Prompt266301
Node: The Restricted Shell269047
Node: Bash POSIX Mode270872
Node: Job Control281223
Node: Job Control Basics281683
Node: Job Control Builtins286651
Node: Job Control Variables291378
Node: Command Line Editing292534
Node: Introduction and Notation294205
Node: Readline Interaction295828
Node: Readline Bare Essentials297019
Node: Readline Movement Commands298802
Node: Readline Killing Commands299762
Node: Readline Arguments301680
Node: Searching302724
Node: Readline Init File304910
Node: Readline Init File Syntax306057
Node: Conditional Init Constructs326244
Node: Sample Init File328769
Node: Bindable Readline Commands331886
Node: Commands For Moving333090
Node: Commands For History334233
Node: Commands For Text338528
Node: Commands For Killing341917
Node: Numeric Arguments344398
Node: Commands For Completion345537
Node: Keyboard Macros349728
Node: Miscellaneous Commands350415
Node: Readline vi Mode356291
Node: Programmable Completion357198
Node: Programmable Completion Builtins364659
Node: A Programmable Completion Example374545
Node: Using History Interactively379797
Node: Bash History Facilities380481
Node: Bash History Builtins383482
Node: History Interaction387774
Node: Event Designators390738
Node: Word Designators391957
Node: Modifiers393594
Node: Installing Bash394996
Node: Basic Installation396133
Node: Compilers and Options398824
Node: Compiling For Multiple Architectures399565
Node: Installation Names401228
Node: Specifying the System Type402046
Node: Sharing Defaults402762
Node: Operation Controls403435
Node: Optional Features404393
Node: Reporting Bugs414919
Node: Major Differences From The Bourne Shell416113
Node: GNU Free Documentation License432965
Node: Indexes458142
Node: Builtin Index458596
Node: Reserved Word Index465423
Node: Variable Index467871
Node: Function Index483549
Node: Concept Index496706
Node: Top891
Node: Introduction2805
Node: What is Bash?3021
Node: What is a shell?4135
Node: Definitions6673
Node: Basic Shell Features9624
Node: Shell Syntax10843
Node: Shell Operation11869
Node: Quoting13162
Node: Escape Character14462
Node: Single Quotes14947
Node: Double Quotes15295
Node: ANSI-C Quoting16573
Node: Locale Translation17826
Node: Comments18722
Node: Shell Commands19340
Node: Simple Commands20212
Node: Pipelines20843
Node: Lists23586
Node: Compound Commands25315
Node: Looping Constructs26318
Node: Conditional Constructs28781
Node: Command Grouping39703
Node: Coprocesses41182
Node: GNU Parallel43014
Node: Shell Functions46987
Node: Shell Parameters53696
Node: Positional Parameters58109
Node: Special Parameters59009
Node: Shell Expansions62346
Node: Brace Expansion64440
Node: Tilde Expansion67274
Node: Shell Parameter Expansion69622
Node: Command Substitution83754
Node: Arithmetic Expansion85109
Node: Process Substitution86041
Node: Word Splitting87161
Node: Filename Expansion89105
Node: Pattern Matching91479
Node: Quote Removal95465
Node: Redirections95760
Node: Executing Commands105318
Node: Simple Command Expansion105988
Node: Command Search and Execution107918
Node: Command Execution Environment110254
Node: Environment113238
Node: Exit Status114897
Node: Signals116567
Node: Shell Scripts118534
Node: Shell Builtin Commands121049
Node: Bourne Shell Builtins123083
Node: Bash Builtins143683
Node: Modifying Shell Behavior172328
Node: The Set Builtin172673
Node: The Shopt Builtin183086
Node: Special Builtins198984
Node: Shell Variables199963
Node: Bourne Shell Variables200400
Node: Bash Variables202504
Node: Bash Features232297
Node: Invoking Bash233196
Node: Bash Startup Files239145
Node: Interactive Shells244248
Node: What is an Interactive Shell?244658
Node: Is this Shell Interactive?245307
Node: Interactive Shell Behavior246122
Node: Bash Conditional Expressions249610
Node: Shell Arithmetic253976
Node: Aliases256793
Node: Arrays259341
Node: The Directory Stack264425
Node: Directory Stack Builtins265209
Node: Controlling the Prompt268177
Node: The Restricted Shell270939
Node: Bash POSIX Mode272764
Node: Job Control283115
Node: Job Control Basics283575
Node: Job Control Builtins288543
Node: Job Control Variables293270
Node: Command Line Editing294426
Node: Introduction and Notation296097
Node: Readline Interaction297720
Node: Readline Bare Essentials298911
Node: Readline Movement Commands300694
Node: Readline Killing Commands301654
Node: Readline Arguments303572
Node: Searching304616
Node: Readline Init File306802
Node: Readline Init File Syntax307949
Node: Conditional Init Constructs328136
Node: Sample Init File330661
Node: Bindable Readline Commands333778
Node: Commands For Moving334982
Node: Commands For History336831
Node: Commands For Text341126
Node: Commands For Killing344515
Node: Numeric Arguments346996
Node: Commands For Completion348135
Node: Keyboard Macros352326
Node: Miscellaneous Commands353013
Node: Readline vi Mode358889
Node: Programmable Completion359796
Node: Programmable Completion Builtins367257
Node: A Programmable Completion Example377143
Node: Using History Interactively382395
Node: Bash History Facilities383079
Node: Bash History Builtins386080
Node: History Interaction390372
Node: Event Designators393336
Node: Word Designators394555
Node: Modifiers396192
Node: Installing Bash397594
Node: Basic Installation398731
Node: Compilers and Options401422
Node: Compiling For Multiple Architectures402163
Node: Installation Names403826
Node: Specifying the System Type404644
Node: Sharing Defaults405360
Node: Operation Controls406033
Node: Optional Features406991
Node: Reporting Bugs417517
Node: Major Differences From The Bourne Shell418711
Node: GNU Free Documentation License435563
Node: Indexes460740
Node: Builtin Index461194
Node: Reserved Word Index468021
Node: Variable Index470469
Node: Function Index486147
Node: Concept Index499450

End Tag Table
BIN
View File
Binary file not shown.
+4974 -4901
View File
File diff suppressed because it is too large Load Diff
+52 -52
View File
@@ -75,73 +75,73 @@
@xrdef{Shell Functions-pg}{17}
@xrdef{Shell Parameters-title}{Shell Parameters}
@xrdef{Shell Parameters-snt}{Section@tie 3.4}
@xrdef{Shell Parameters-pg}{18}
@xrdef{Shell Parameters-pg}{19}
@xrdef{Positional Parameters-title}{Positional Parameters}
@xrdef{Positional Parameters-snt}{Section@tie 3.4.1}
@xrdef{Positional Parameters-pg}{19}
@xrdef{Special Parameters-title}{Special Parameters}
@xrdef{Special Parameters-snt}{Section@tie 3.4.2}
@xrdef{Positional Parameters-pg}{20}
@xrdef{Special Parameters-pg}{20}
@xrdef{Shell Expansions-title}{Shell Expansions}
@xrdef{Shell Expansions-snt}{Section@tie 3.5}
@xrdef{Shell Expansions-pg}{21}
@xrdef{Brace Expansion-title}{Brace Expansion}
@xrdef{Brace Expansion-snt}{Section@tie 3.5.1}
@xrdef{Shell Expansions-pg}{21}
@xrdef{Brace Expansion-pg}{21}
@xrdef{Brace Expansion-pg}{22}
@xrdef{Tilde Expansion-title}{Tilde Expansion}
@xrdef{Tilde Expansion-snt}{Section@tie 3.5.2}
@xrdef{Tilde Expansion-pg}{22}
@xrdef{Shell Parameter Expansion-title}{Shell Parameter Expansion}
@xrdef{Shell Parameter Expansion-snt}{Section@tie 3.5.3}
@xrdef{Shell Parameter Expansion-pg}{23}
@xrdef{Tilde Expansion-pg}{23}
@xrdef{Shell Parameter Expansion-pg}{24}
@xrdef{Command Substitution-title}{Command Substitution}
@xrdef{Command Substitution-snt}{Section@tie 3.5.4}
@xrdef{Command Substitution-pg}{29}
@xrdef{Arithmetic Expansion-title}{Arithmetic Expansion}
@xrdef{Arithmetic Expansion-snt}{Section@tie 3.5.5}
@xrdef{Process Substitution-title}{Process Substitution}
@xrdef{Process Substitution-snt}{Section@tie 3.5.6}
@xrdef{Command Substitution-pg}{29}
@xrdef{Arithmetic Expansion-pg}{29}
@xrdef{Word Splitting-title}{Word Splitting}
@xrdef{Word Splitting-snt}{Section@tie 3.5.7}
@xrdef{Arithmetic Expansion-pg}{30}
@xrdef{Process Substitution-pg}{30}
@xrdef{Filename Expansion-title}{Filename Expansion}
@xrdef{Filename Expansion-snt}{Section@tie 3.5.8}
@xrdef{Process Substitution-pg}{30}
@xrdef{Word Splitting-pg}{30}
@xrdef{Filename Expansion-pg}{30}
@xrdef{Word Splitting-pg}{31}
@xrdef{Filename Expansion-pg}{31}
@xrdef{Pattern Matching-title}{Pattern Matching}
@xrdef{Pattern Matching-snt}{Section@tie 3.5.8.1}
@xrdef{Pattern Matching-pg}{31}
@xrdef{Pattern Matching-pg}{32}
@xrdef{Quote Removal-title}{Quote Removal}
@xrdef{Quote Removal-snt}{Section@tie 3.5.9}
@xrdef{Redirections-title}{Redirections}
@xrdef{Redirections-snt}{Section@tie 3.6}
@xrdef{Quote Removal-pg}{32}
@xrdef{Redirections-pg}{32}
@xrdef{Quote Removal-pg}{33}
@xrdef{Redirections-pg}{33}
@xrdef{Executing Commands-title}{Executing Commands}
@xrdef{Executing Commands-snt}{Section@tie 3.7}
@xrdef{Simple Command Expansion-title}{Simple Command Expansion}
@xrdef{Simple Command Expansion-snt}{Section@tie 3.7.1}
@xrdef{Executing Commands-pg}{36}
@xrdef{Simple Command Expansion-pg}{36}
@xrdef{Command Search and Execution-title}{Command Search and Execution}
@xrdef{Command Search and Execution-snt}{Section@tie 3.7.2}
@xrdef{Executing Commands-pg}{37}
@xrdef{Simple Command Expansion-pg}{37}
@xrdef{Command Execution Environment-title}{Command Execution Environment}
@xrdef{Command Execution Environment-snt}{Section@tie 3.7.3}
@xrdef{Command Search and Execution-pg}{37}
@xrdef{Command Execution Environment-pg}{37}
@xrdef{Command Search and Execution-pg}{38}
@xrdef{Command Execution Environment-pg}{38}
@xrdef{Environment-title}{Environment}
@xrdef{Environment-snt}{Section@tie 3.7.4}
@xrdef{Environment-pg}{38}
@xrdef{Environment-pg}{39}
@xrdef{Exit Status-title}{Exit Status}
@xrdef{Exit Status-snt}{Section@tie 3.7.5}
@xrdef{Signals-title}{Signals}
@xrdef{Signals-snt}{Section@tie 3.7.6}
@xrdef{Exit Status-pg}{39}
@xrdef{Signals-pg}{39}
@xrdef{Exit Status-pg}{40}
@xrdef{Signals-pg}{40}
@xrdef{Shell Scripts-title}{Shell Scripts}
@xrdef{Shell Scripts-snt}{Section@tie 3.8}
@xrdef{Shell Scripts-pg}{40}
@xrdef{Shell Scripts-pg}{41}
@xrdef{Shell Builtin Commands-title}{Shell Builtin Commands}
@xrdef{Shell Builtin Commands-snt}{Chapter@tie 4}
@xrdef{Bourne Shell Builtins-title}{Bourne Shell Builtins}
@@ -272,17 +272,17 @@
@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{Commands For History-title}{Commands For Manipulating The History}
@xrdef{Commands For History-snt}{Section@tie 8.4.2}
@xrdef{Bindable Readline Commands-pg}{120}
@xrdef{Commands For Moving-pg}{120}
@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}{121}
@xrdef{Commands For Text-title}{Commands For Changing Text}
@xrdef{Commands For Text-snt}{Section@tie 8.4.3}
@xrdef{Commands For Text-pg}{122}
@xrdef{Commands For Killing-title}{Killing And Yanking}
@xrdef{Commands For Killing-snt}{Section@tie 8.4.4}
@xrdef{Commands For Killing-pg}{123}
@xrdef{Commands For Killing-pg}{124}
@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}
@@ -297,88 +297,88 @@
@xrdef{Miscellaneous Commands-pg}{127}
@xrdef{Readline vi Mode-title}{Readline vi Mode}
@xrdef{Readline vi Mode-snt}{Section@tie 8.5}
@xrdef{Readline vi Mode-pg}{129}
@xrdef{Programmable Completion-title}{Programmable Completion}
@xrdef{Programmable Completion-snt}{Section@tie 8.6}
@xrdef{Readline vi Mode-pg}{129}
@xrdef{Programmable Completion-pg}{130}
@xrdef{Programmable Completion Builtins-title}{Programmable Completion Builtins}
@xrdef{Programmable Completion Builtins-snt}{Section@tie 8.7}
@xrdef{Programmable Completion Builtins-pg}{132}
@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}{135}
@xrdef{A Programmable Completion Example-pg}{136}
@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{Bash History Builtins-title}{Bash History Builtins}
@xrdef{Bash History Builtins-snt}{Section@tie 9.2}
@xrdef{Using History Interactively-pg}{138}
@xrdef{Bash History Facilities-pg}{138}
@xrdef{Bash History Builtins-pg}{138}
@xrdef{Using History Interactively-pg}{139}
@xrdef{Bash History Facilities-pg}{139}
@xrdef{Bash History Builtins-pg}{139}
@xrdef{History Interaction-title}{History Expansion}
@xrdef{History Interaction-snt}{Section@tie 9.3}
@xrdef{History Interaction-pg}{140}
@xrdef{History Interaction-pg}{141}
@xrdef{Event Designators-title}{Event Designators}
@xrdef{Event Designators-snt}{Section@tie 9.3.1}
@xrdef{Word Designators-title}{Word Designators}
@xrdef{Word Designators-snt}{Section@tie 9.3.2}
@xrdef{Event Designators-pg}{141}
@xrdef{Word Designators-pg}{141}
@xrdef{Event Designators-pg}{142}
@xrdef{Word Designators-pg}{142}
@xrdef{Modifiers-title}{Modifiers}
@xrdef{Modifiers-snt}{Section@tie 9.3.3}
@xrdef{Modifiers-pg}{142}
@xrdef{Modifiers-pg}{143}
@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{Compilers and Options-title}{Compilers and Options}
@xrdef{Compilers and Options-snt}{Section@tie 10.2}
@xrdef{Installing Bash-pg}{143}
@xrdef{Basic Installation-pg}{143}
@xrdef{Installing Bash-pg}{144}
@xrdef{Basic Installation-pg}{144}
@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{Specifying the System Type-title}{Specifying the System Type}
@xrdef{Specifying the System Type-snt}{Section@tie 10.5}
@xrdef{Compilers and Options-pg}{144}
@xrdef{Compiling For Multiple Architectures-pg}{144}
@xrdef{Installation Names-pg}{144}
@xrdef{Specifying the System Type-pg}{144}
@xrdef{Compilers and Options-pg}{145}
@xrdef{Compiling For Multiple Architectures-pg}{145}
@xrdef{Installation Names-pg}{145}
@xrdef{Specifying the System Type-pg}{145}
@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{Optional Features-title}{Optional Features}
@xrdef{Optional Features-snt}{Section@tie 10.8}
@xrdef{Sharing Defaults-pg}{145}
@xrdef{Operation Controls-pg}{145}
@xrdef{Optional Features-pg}{145}
@xrdef{Sharing Defaults-pg}{146}
@xrdef{Operation Controls-pg}{146}
@xrdef{Optional Features-pg}{146}
@xrdef{Reporting Bugs-title}{Reporting Bugs}
@xrdef{Reporting Bugs-snt}{Appendix@tie @char65{}}
@xrdef{Reporting Bugs-pg}{151}
@xrdef{Reporting Bugs-pg}{152}
@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}{152}
@xrdef{Major Differences From The Bourne Shell-pg}{153}
@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}{158}
@xrdef{GNU Free Documentation License-pg}{159}
@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}{166}
@xrdef{Builtin Index-pg}{166}
@xrdef{Indexes-pg}{167}
@xrdef{Builtin Index-pg}{167}
@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}{167}
@xrdef{Variable Index-pg}{168}
@xrdef{Reserved Word Index-pg}{168}
@xrdef{Variable Index-pg}{169}
@xrdef{Function Index-title}{Function Index}
@xrdef{Function Index-snt}{Section@tie @char68.4}
@xrdef{Function Index-pg}{170}
@xrdef{Function Index-pg}{171}
@xrdef{Concept Index-title}{Concept Index}
@xrdef{Concept Index-snt}{Section@tie @char68.5}
@xrdef{Concept Index-pg}{172}
@xrdef{Concept Index-pg}{173}
+3 -3
View File
@@ -44,7 +44,7 @@
\entry{shopt}{64}{\code {shopt}}
\entry{dirs}{94}{\code {dirs}}
\entry{popd}{94}{\code {popd}}
\entry{pushd}{94}{\code {pushd}}
\entry{pushd}{95}{\code {pushd}}
\entry{bg}{102}{\code {bg}}
\entry{fg}{102}{\code {fg}}
\entry{jobs}{102}{\code {jobs}}
@@ -55,5 +55,5 @@
\entry{compgen}{132}{\code {compgen}}
\entry{complete}{132}{\code {complete}}
\entry{compopt}{135}{\code {compopt}}
\entry{fc}{138}{\code {fc}}
\entry{history}{139}{\code {history}}
\entry{fc}{139}{\code {fc}}
\entry{history}{140}{\code {history}}
+3 -3
View File
@@ -31,14 +31,14 @@
\entry {\code {exit}}{44}
\entry {\code {export}}{44}
\initial {F}
\entry {\code {fc}}{138}
\entry {\code {fc}}{139}
\entry {\code {fg}}{102}
\initial {G}
\entry {\code {getopts}}{44}
\initial {H}
\entry {\code {hash}}{45}
\entry {\code {help}}{54}
\entry {\code {history}}{139}
\entry {\code {history}}{140}
\initial {J}
\entry {\code {jobs}}{102}
\initial {K}
@@ -52,7 +52,7 @@
\initial {P}
\entry {\code {popd}}{94}
\entry {\code {printf}}{55}
\entry {\code {pushd}}{94}
\entry {\code {pushd}}{95}
\entry {\code {pwd}}{45}
\initial {R}
\entry {\code {read}}{56}
+39 -39
View File
@@ -39,38 +39,38 @@
\entry{coprocess}{15}{coprocess}
\entry{shell function}{17}{shell function}
\entry{functions, shell}{17}{functions, shell}
\entry{parameters}{18}{parameters}
\entry{variable, shell}{18}{variable, shell}
\entry{shell variable}{18}{shell variable}
\entry{parameters, positional}{19}{parameters, positional}
\entry{parameters}{19}{parameters}
\entry{variable, shell}{19}{variable, shell}
\entry{shell variable}{19}{shell variable}
\entry{parameters, positional}{20}{parameters, positional}
\entry{parameters, special}{20}{parameters, special}
\entry{expansion}{21}{expansion}
\entry{brace expansion}{21}{brace expansion}
\entry{expansion, brace}{21}{expansion, brace}
\entry{tilde expansion}{22}{tilde expansion}
\entry{expansion, tilde}{22}{expansion, tilde}
\entry{parameter expansion}{23}{parameter expansion}
\entry{expansion, parameter}{23}{expansion, parameter}
\entry{brace expansion}{22}{brace expansion}
\entry{expansion, brace}{22}{expansion, brace}
\entry{tilde expansion}{23}{tilde expansion}
\entry{expansion, tilde}{23}{expansion, tilde}
\entry{parameter expansion}{24}{parameter expansion}
\entry{expansion, parameter}{24}{expansion, parameter}
\entry{command substitution}{29}{command substitution}
\entry{expansion, arithmetic}{29}{expansion, arithmetic}
\entry{arithmetic expansion}{29}{arithmetic expansion}
\entry{expansion, arithmetic}{30}{expansion, arithmetic}
\entry{arithmetic expansion}{30}{arithmetic expansion}
\entry{process substitution}{30}{process substitution}
\entry{word splitting}{30}{word splitting}
\entry{expansion, filename}{30}{expansion, filename}
\entry{expansion, pathname}{30}{expansion, pathname}
\entry{filename expansion}{30}{filename expansion}
\entry{pathname expansion}{30}{pathname expansion}
\entry{pattern matching}{31}{pattern matching}
\entry{matching, pattern}{31}{matching, pattern}
\entry{redirection}{32}{redirection}
\entry{command expansion}{36}{command expansion}
\entry{command execution}{37}{command execution}
\entry{command search}{37}{command search}
\entry{execution environment}{37}{execution environment}
\entry{environment}{38}{environment}
\entry{exit status}{39}{exit status}
\entry{signal handling}{39}{signal handling}
\entry{shell script}{40}{shell script}
\entry{word splitting}{31}{word splitting}
\entry{expansion, filename}{31}{expansion, filename}
\entry{expansion, pathname}{31}{expansion, pathname}
\entry{filename expansion}{31}{filename expansion}
\entry{pathname expansion}{31}{pathname expansion}
\entry{pattern matching}{32}{pattern matching}
\entry{matching, pattern}{32}{matching, pattern}
\entry{redirection}{33}{redirection}
\entry{command expansion}{37}{command expansion}
\entry{command execution}{38}{command execution}
\entry{command search}{38}{command search}
\entry{execution environment}{38}{execution environment}
\entry{environment}{39}{environment}
\entry{exit status}{40}{exit status}
\entry{signal handling}{40}{signal handling}
\entry{shell script}{41}{shell script}
\entry{special builtin}{70}{special builtin}
\entry{login shell}{85}{login shell}
\entry{interactive shell}{85}{interactive shell}
@@ -105,14 +105,14 @@
\entry{variables, readline}{109}{variables, readline}
\entry{programmable completion}{130}{programmable completion}
\entry{completion builtins}{132}{completion builtins}
\entry{History, how to use}{137}{History, how to use}
\entry{command history}{138}{command history}
\entry{history list}{138}{history list}
\entry{history builtins}{138}{history builtins}
\entry{history expansion}{140}{history expansion}
\entry{event designators}{141}{event designators}
\entry{history events}{141}{history events}
\entry{installation}{143}{installation}
\entry{configuration}{143}{configuration}
\entry{Bash installation}{143}{Bash installation}
\entry{Bash configuration}{143}{Bash configuration}
\entry{History, how to use}{138}{History, how to use}
\entry{command history}{139}{command history}
\entry{history list}{139}{history list}
\entry{history builtins}{139}{history builtins}
\entry{history expansion}{141}{history expansion}
\entry{event designators}{142}{event designators}
\entry{history events}{142}{history events}
\entry{installation}{144}{installation}
\entry{configuration}{144}{configuration}
\entry{Bash installation}{144}{Bash installation}
\entry{Bash configuration}{144}{Bash configuration}
+39 -39
View File
@@ -1,22 +1,22 @@
\initial {A}
\entry {alias expansion}{91}
\entry {arithmetic evaluation}{90}
\entry {arithmetic expansion}{29}
\entry {arithmetic expansion}{30}
\entry {arithmetic, shell}{90}
\entry {arrays}{92}
\initial {B}
\entry {background}{101}
\entry {Bash configuration}{143}
\entry {Bash installation}{143}
\entry {Bash configuration}{144}
\entry {Bash installation}{144}
\entry {Bourne shell}{5}
\entry {brace expansion}{21}
\entry {brace expansion}{22}
\entry {builtin}{3}
\initial {C}
\entry {command editing}{106}
\entry {command execution}{37}
\entry {command expansion}{36}
\entry {command history}{138}
\entry {command search}{37}
\entry {command execution}{38}
\entry {command expansion}{37}
\entry {command history}{139}
\entry {command search}{38}
\entry {command substitution}{29}
\entry {command timing}{8}
\entry {commands, compound}{9}
@@ -29,43 +29,43 @@
\entry {commands, simple}{8}
\entry {comments, shell}{7}
\entry {completion builtins}{132}
\entry {configuration}{143}
\entry {configuration}{144}
\entry {control operator}{3}
\entry {coprocess}{15}
\initial {D}
\entry {directory stack}{94}
\initial {E}
\entry {editing command lines}{106}
\entry {environment}{38}
\entry {environment}{39}
\entry {evaluation, arithmetic}{90}
\entry {event designators}{141}
\entry {execution environment}{37}
\entry {exit status}{3, 39}
\entry {event designators}{142}
\entry {execution environment}{38}
\entry {exit status}{3, 40}
\entry {expansion}{21}
\entry {expansion, arithmetic}{29}
\entry {expansion, brace}{21}
\entry {expansion, filename}{30}
\entry {expansion, parameter}{23}
\entry {expansion, pathname}{30}
\entry {expansion, tilde}{22}
\entry {expansion, arithmetic}{30}
\entry {expansion, brace}{22}
\entry {expansion, filename}{31}
\entry {expansion, parameter}{24}
\entry {expansion, pathname}{31}
\entry {expansion, tilde}{23}
\entry {expressions, arithmetic}{90}
\entry {expressions, conditional}{88}
\initial {F}
\entry {field}{3}
\entry {filename}{3}
\entry {filename expansion}{30}
\entry {filename expansion}{31}
\entry {foreground}{101}
\entry {functions, shell}{17}
\initial {H}
\entry {history builtins}{138}
\entry {history events}{141}
\entry {history expansion}{140}
\entry {history list}{138}
\entry {History, how to use}{137}
\entry {history builtins}{139}
\entry {history events}{142}
\entry {history expansion}{141}
\entry {history list}{139}
\entry {History, how to use}{138}
\initial {I}
\entry {identifier}{3}
\entry {initialization file, readline}{108}
\entry {installation}{143}
\entry {installation}{144}
\entry {interaction, readline}{105}
\entry {interactive shell}{85, 86}
\entry {internationalization}{7}
@@ -79,7 +79,7 @@
\entry {localization}{7}
\entry {login shell}{85}
\initial {M}
\entry {matching, pattern}{31}
\entry {matching, pattern}{32}
\entry {metacharacter}{3}
\initial {N}
\entry {name}{3}
@@ -88,12 +88,12 @@
\initial {O}
\entry {operator, shell}{3}
\initial {P}
\entry {parameter expansion}{23}
\entry {parameters}{18}
\entry {parameters, positional}{19}
\entry {parameter expansion}{24}
\entry {parameters}{19}
\entry {parameters, positional}{20}
\entry {parameters, special}{20}
\entry {pathname expansion}{30}
\entry {pattern matching}{31}
\entry {pathname expansion}{31}
\entry {pattern matching}{32}
\entry {pipeline}{8}
\entry {POSIX}{3}
\entry {POSIX Mode}{97}
@@ -107,30 +107,30 @@
\entry {quoting, ANSI}{6}
\initial {R}
\entry {Readline, how to use}{104}
\entry {redirection}{32}
\entry {redirection}{33}
\entry {reserved word}{3}
\entry {restricted shell}{96}
\entry {return status}{4}
\initial {S}
\entry {shell arithmetic}{90}
\entry {shell function}{17}
\entry {shell script}{40}
\entry {shell variable}{18}
\entry {shell script}{41}
\entry {shell variable}{19}
\entry {shell, interactive}{86}
\entry {signal}{4}
\entry {signal handling}{39}
\entry {signal handling}{40}
\entry {special builtin}{4, 70}
\entry {startup files}{85}
\entry {suspending jobs}{101}
\initial {T}
\entry {tilde expansion}{22}
\entry {tilde expansion}{23}
\entry {token}{4}
\entry {translation, native languages}{7}
\initial {V}
\entry {variable, shell}{18}
\entry {variable, shell}{19}
\entry {variables, readline}{109}
\initial {W}
\entry {word}{4}
\entry {word splitting}{30}
\entry {word splitting}{31}
\initial {Y}
\entry {yanking text}{107}
BIN
View File
Binary file not shown.
+22 -20
View File
@@ -6,8 +6,10 @@
\entry{backward-word (M-b)}{120}{\code {backward-word (M-b)}}
\entry{shell-forward-word ()}{120}{\code {shell-forward-word ()}}
\entry{shell-backward-word ()}{120}{\code {shell-backward-word ()}}
\entry{clear-screen (C-l)}{120}{\code {clear-screen (C-l)}}
\entry{redraw-current-line ()}{120}{\code {redraw-current-line ()}}
\entry{previous-screen-line ()}{120}{\code {previous-screen-line ()}}
\entry{next-screen-line ()}{121}{\code {next-screen-line ()}}
\entry{clear-screen (C-l)}{121}{\code {clear-screen (C-l)}}
\entry{redraw-current-line ()}{121}{\code {redraw-current-line ()}}
\entry{accept-line (Newline or Return)}{121}{\code {accept-line (Newline or Return)}}
\entry{previous-history (C-p)}{121}{\code {previous-history (C-p)}}
\entry{next-history (C-n)}{121}{\code {next-history (C-n)}}
@@ -18,16 +20,16 @@
\entry{non-incremental-reverse-search-history (M-p)}{121}{\code {non-incremental-reverse-search-history (M-p)}}
\entry{non-incremental-forward-search-history (M-n)}{121}{\code {non-incremental-forward-search-history (M-n)}}
\entry{history-search-forward ()}{121}{\code {history-search-forward ()}}
\entry{history-search-backward ()}{121}{\code {history-search-backward ()}}
\entry{history-substring-search-forward ()}{121}{\code {history-substring-search-forward ()}}
\entry{history-search-backward ()}{122}{\code {history-search-backward ()}}
\entry{history-substring-search-forward ()}{122}{\code {history-substring-search-forward ()}}
\entry{history-substring-search-backward ()}{122}{\code {history-substring-search-backward ()}}
\entry{yank-nth-arg (M-C-y)}{122}{\code {yank-nth-arg (M-C-y)}}
\entry{yank-last-arg (M-. or M-_)}{122}{\code {yank-last-arg (M-. or M-_)}}
\entry{end-of-file (usually C-d)}{122}{\code {\i {end-of-file} (usually C-d)}}
\entry{delete-char (C-d)}{122}{\code {delete-char (C-d)}}
\entry{backward-delete-char (Rubout)}{122}{\code {backward-delete-char (Rubout)}}
\entry{forward-backward-delete-char ()}{122}{\code {forward-backward-delete-char ()}}
\entry{quoted-insert (C-q or C-v)}{122}{\code {quoted-insert (C-q or C-v)}}
\entry{backward-delete-char (Rubout)}{123}{\code {backward-delete-char (Rubout)}}
\entry{forward-backward-delete-char ()}{123}{\code {forward-backward-delete-char ()}}
\entry{quoted-insert (C-q or C-v)}{123}{\code {quoted-insert (C-q or C-v)}}
\entry{self-insert (a, b, A, 1, !, ...{})}{123}{\code {self-insert (a, b, A, 1, !, \dots {})}}
\entry{bracketed-paste-begin ()}{123}{\code {bracketed-paste-begin ()}}
\entry{transpose-chars (C-t)}{123}{\code {transpose-chars (C-t)}}
@@ -36,8 +38,8 @@
\entry{downcase-word (M-l)}{123}{\code {downcase-word (M-l)}}
\entry{capitalize-word (M-c)}{123}{\code {capitalize-word (M-c)}}
\entry{overwrite-mode ()}{123}{\code {overwrite-mode ()}}
\entry{kill-line (C-k)}{123}{\code {kill-line (C-k)}}
\entry{backward-kill-line (C-x Rubout)}{123}{\code {backward-kill-line (C-x Rubout)}}
\entry{kill-line (C-k)}{124}{\code {kill-line (C-k)}}
\entry{backward-kill-line (C-x Rubout)}{124}{\code {backward-kill-line (C-x Rubout)}}
\entry{unix-line-discard (C-u)}{124}{\code {unix-line-discard (C-u)}}
\entry{kill-whole-line ()}{124}{\code {kill-whole-line ()}}
\entry{kill-word (M-d)}{124}{\code {kill-word (M-d)}}
@@ -50,16 +52,16 @@
\entry{kill-region ()}{124}{\code {kill-region ()}}
\entry{copy-region-as-kill ()}{124}{\code {copy-region-as-kill ()}}
\entry{copy-backward-word ()}{124}{\code {copy-backward-word ()}}
\entry{copy-forward-word ()}{124}{\code {copy-forward-word ()}}
\entry{yank (C-y)}{124}{\code {yank (C-y)}}
\entry{yank-pop (M-y)}{124}{\code {yank-pop (M-y)}}
\entry{copy-forward-word ()}{125}{\code {copy-forward-word ()}}
\entry{yank (C-y)}{125}{\code {yank (C-y)}}
\entry{yank-pop (M-y)}{125}{\code {yank-pop (M-y)}}
\entry{digit-argument (M-0, M-1, ...{} M--)}{125}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
\entry{universal-argument ()}{125}{\code {universal-argument ()}}
\entry{complete (TAB)}{125}{\code {complete (\key {TAB})}}
\entry{possible-completions (M-?)}{125}{\code {possible-completions (M-?)}}
\entry{insert-completions (M-*)}{125}{\code {insert-completions (M-*)}}
\entry{menu-complete ()}{125}{\code {menu-complete ()}}
\entry{menu-complete-backward ()}{125}{\code {menu-complete-backward ()}}
\entry{menu-complete-backward ()}{126}{\code {menu-complete-backward ()}}
\entry{delete-char-or-list ()}{126}{\code {delete-char-or-list ()}}
\entry{complete-filename (M-/)}{126}{\code {complete-filename (M-/)}}
\entry{possible-filename-completions (C-x /)}{126}{\code {possible-filename-completions (C-x /)}}
@@ -72,8 +74,8 @@
\entry{complete-command (M-!)}{126}{\code {complete-command (M-!)}}
\entry{possible-command-completions (C-x !)}{126}{\code {possible-command-completions (C-x !)}}
\entry{dynamic-complete-history (M-TAB)}{126}{\code {dynamic-complete-history (M-\key {TAB})}}
\entry{dabbrev-expand ()}{126}{\code {dabbrev-expand ()}}
\entry{complete-into-braces (M-{\indexlbrace })}{126}{\code {complete-into-braces (M-{\tt \char 123})}}
\entry{dabbrev-expand ()}{127}{\code {dabbrev-expand ()}}
\entry{complete-into-braces (M-{\indexlbrace })}{127}{\code {complete-into-braces (M-{\tt \char 123})}}
\entry{start-kbd-macro (C-x ()}{127}{\code {start-kbd-macro (C-x ()}}
\entry{end-kbd-macro (C-x ))}{127}{\code {end-kbd-macro (C-x ))}}
\entry{call-last-kbd-macro (C-x e)}{127}{\code {call-last-kbd-macro (C-x e)}}
@@ -85,17 +87,17 @@
\entry{undo (C-_ or C-x C-u)}{127}{\code {undo (C-_ or C-x C-u)}}
\entry{revert-line (M-r)}{127}{\code {revert-line (M-r)}}
\entry{tilde-expand (M-&)}{127}{\code {tilde-expand (M-&)}}
\entry{set-mark (C-@)}{127}{\code {set-mark (C-@)}}
\entry{exchange-point-and-mark (C-x C-x)}{127}{\code {exchange-point-and-mark (C-x C-x)}}
\entry{character-search (C-])}{127}{\code {character-search (C-])}}
\entry{set-mark (C-@)}{128}{\code {set-mark (C-@)}}
\entry{exchange-point-and-mark (C-x C-x)}{128}{\code {exchange-point-and-mark (C-x C-x)}}
\entry{character-search (C-])}{128}{\code {character-search (C-])}}
\entry{character-search-backward (M-C-])}{128}{\code {character-search-backward (M-C-])}}
\entry{skip-csi-sequence ()}{128}{\code {skip-csi-sequence ()}}
\entry{insert-comment (M-#)}{128}{\code {insert-comment (M-#)}}
\entry{dump-functions ()}{128}{\code {dump-functions ()}}
\entry{dump-variables ()}{128}{\code {dump-variables ()}}
\entry{dump-macros ()}{128}{\code {dump-macros ()}}
\entry{glob-complete-word (M-g)}{128}{\code {glob-complete-word (M-g)}}
\entry{glob-expand-word (C-x *)}{128}{\code {glob-expand-word (C-x *)}}
\entry{glob-complete-word (M-g)}{129}{\code {glob-complete-word (M-g)}}
\entry{glob-expand-word (C-x *)}{129}{\code {glob-expand-word (C-x *)}}
\entry{glob-list-expansions (C-x g)}{129}{\code {glob-list-expansions (C-x g)}}
\entry{display-shell-version (C-x C-v)}{129}{\code {display-shell-version (C-x C-v)}}
\entry{shell-expand-line (M-C-e)}{129}{\code {shell-expand-line (M-C-e)}}
+22 -20
View File
@@ -4,8 +4,8 @@
\entry {\code {alias-expand-line ()}}{129}
\initial {B}
\entry {\code {backward-char (C-b)}}{120}
\entry {\code {backward-delete-char (Rubout)}}{122}
\entry {\code {backward-kill-line (C-x Rubout)}}{123}
\entry {\code {backward-delete-char (Rubout)}}{123}
\entry {\code {backward-kill-line (C-x Rubout)}}{124}
\entry {\code {backward-kill-word (M-\key {DEL})}}{124}
\entry {\code {backward-word (M-b)}}{120}
\entry {\code {beginning-of-history (M-<)}}{121}
@@ -14,21 +14,21 @@
\initial {C}
\entry {\code {call-last-kbd-macro (C-x e)}}{127}
\entry {\code {capitalize-word (M-c)}}{123}
\entry {\code {character-search (C-])}}{127}
\entry {\code {character-search (C-])}}{128}
\entry {\code {character-search-backward (M-C-])}}{128}
\entry {\code {clear-screen (C-l)}}{120}
\entry {\code {clear-screen (C-l)}}{121}
\entry {\code {complete (\key {TAB})}}{125}
\entry {\code {complete-command (M-!)}}{126}
\entry {\code {complete-filename (M-/)}}{126}
\entry {\code {complete-hostname (M-@)}}{126}
\entry {\code {complete-into-braces (M-{\tt \char 123})}}{126}
\entry {\code {complete-into-braces (M-{\tt \char 123})}}{127}
\entry {\code {complete-username (M-~)}}{126}
\entry {\code {complete-variable (M-$)}}{126}
\entry {\code {copy-backward-word ()}}{124}
\entry {\code {copy-forward-word ()}}{124}
\entry {\code {copy-forward-word ()}}{125}
\entry {\code {copy-region-as-kill ()}}{124}
\initial {D}
\entry {\code {dabbrev-expand ()}}{126}
\entry {\code {dabbrev-expand ()}}{127}
\entry {\code {delete-char (C-d)}}{122}
\entry {\code {delete-char-or-list ()}}{126}
\entry {\code {delete-horizontal-space ()}}{124}
@@ -46,38 +46,39 @@
\entry {\code {\i {end-of-file} (usually C-d)}}{122}
\entry {\code {end-of-history (M->)}}{121}
\entry {\code {end-of-line (C-e)}}{120}
\entry {\code {exchange-point-and-mark (C-x C-x)}}{127}
\entry {\code {exchange-point-and-mark (C-x C-x)}}{128}
\initial {F}
\entry {\code {forward-backward-delete-char ()}}{122}
\entry {\code {forward-backward-delete-char ()}}{123}
\entry {\code {forward-char (C-f)}}{120}
\entry {\code {forward-search-history (C-s)}}{121}
\entry {\code {forward-word (M-f)}}{120}
\initial {G}
\entry {\code {glob-complete-word (M-g)}}{128}
\entry {\code {glob-expand-word (C-x *)}}{128}
\entry {\code {glob-complete-word (M-g)}}{129}
\entry {\code {glob-expand-word (C-x *)}}{129}
\entry {\code {glob-list-expansions (C-x g)}}{129}
\initial {H}
\entry {\code {history-and-alias-expand-line ()}}{129}
\entry {\code {history-expand-line (M-^)}}{129}
\entry {\code {history-search-backward ()}}{121}
\entry {\code {history-search-backward ()}}{122}
\entry {\code {history-search-forward ()}}{121}
\entry {\code {history-substring-search-backward ()}}{122}
\entry {\code {history-substring-search-forward ()}}{121}
\entry {\code {history-substring-search-forward ()}}{122}
\initial {I}
\entry {\code {insert-comment (M-#)}}{128}
\entry {\code {insert-completions (M-*)}}{125}
\entry {\code {insert-last-argument (M-. or M-_)}}{129}
\initial {K}
\entry {\code {kill-line (C-k)}}{123}
\entry {\code {kill-line (C-k)}}{124}
\entry {\code {kill-region ()}}{124}
\entry {\code {kill-whole-line ()}}{124}
\entry {\code {kill-word (M-d)}}{124}
\initial {M}
\entry {\code {magic-space ()}}{129}
\entry {\code {menu-complete ()}}{125}
\entry {\code {menu-complete-backward ()}}{125}
\entry {\code {menu-complete-backward ()}}{126}
\initial {N}
\entry {\code {next-history (C-n)}}{121}
\entry {\code {next-screen-line ()}}{121}
\entry {\code {non-incremental-forward-search-history (M-n)}}{121}
\entry {\code {non-incremental-reverse-search-history (M-p)}}{121}
\initial {O}
@@ -92,17 +93,18 @@
\entry {\code {possible-variable-completions (C-x $)}}{126}
\entry {\code {prefix-meta (\key {ESC})}}{127}
\entry {\code {previous-history (C-p)}}{121}
\entry {\code {previous-screen-line ()}}{120}
\entry {\code {print-last-kbd-macro ()}}{127}
\initial {Q}
\entry {\code {quoted-insert (C-q or C-v)}}{122}
\entry {\code {quoted-insert (C-q or C-v)}}{123}
\initial {R}
\entry {\code {re-read-init-file (C-x C-r)}}{127}
\entry {\code {redraw-current-line ()}}{120}
\entry {\code {redraw-current-line ()}}{121}
\entry {\code {reverse-search-history (C-r)}}{121}
\entry {\code {revert-line (M-r)}}{127}
\initial {S}
\entry {\code {self-insert (a, b, A, 1, !, \dots {})}}{123}
\entry {\code {set-mark (C-@)}}{127}
\entry {\code {set-mark (C-@)}}{128}
\entry {\code {shell-backward-kill-word ()}}{124}
\entry {\code {shell-backward-word ()}}{120}
\entry {\code {shell-expand-line (M-C-e)}}{129}
@@ -122,7 +124,7 @@
\entry {\code {unix-word-rubout (C-w)}}{124}
\entry {\code {upcase-word (M-u)}}{123}
\initial {Y}
\entry {\code {yank (C-y)}}{124}
\entry {\code {yank (C-y)}}{125}
\entry {\code {yank-last-arg (M-. or M-_)}}{122}
\entry {\code {yank-nth-arg (M-C-y)}}{122}
\entry {\code {yank-pop (M-y)}}{124}
\entry {\code {yank-pop (M-y)}}{125}
+91 -13
View File
@@ -1,9 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This text is a brief description of the features that are present in
the Bash shell (version 4.4, 1 February 2017).
the Bash shell (version 4.4, 22 March 2017).
This is Edition 4.4, last updated 1 February 2017,
This is Edition 4.4, last updated 22 March 2017,
of The GNU Bash Reference Manual,
for Bash, Version 4.4.
@@ -284,10 +284,10 @@ Next: <a href="#Introduction" accesskey="n" rel="next">Introduction</a>, Previou
<h1 class="top">Bash Features</h1>
<p>This text is a brief description of the features that are present in
the Bash shell (version 4.4, 1 February 2017).
the Bash shell (version 4.4, 22 March 2017).
The Bash home page is <a href="http://www.gnu.org/software/bash/">http://www.gnu.org/software/bash/</a>.
</p>
<p>This is Edition 4.4, last updated 1 February 2017,
<p>This is Edition 4.4, last updated 22 March 2017,
of <cite>The GNU Bash Reference Manual</cite>,
for <code>Bash</code>, Version 4.4.
</p>
@@ -1865,8 +1865,56 @@ before the <code>return</code>.
</p>
<p>Variables local to the function may be declared with the
<code>local</code> builtin. These variables are visible only to
the function and the commands it invokes.
the function and the commands it invokes. This is particularly
important when a shell function calls other functions.
</p>
<p>Local variables &quot;shadow&quot; variables with the same name declared at
previous scopes. For instance, a local variable declared in a function
hides a global variable of the same name: references and assignments
refer to the local variable, leaving the global variable unmodified.
When the function returns, the global variable is once again visible.
</p>
<p>The shell uses <var>dynamic scoping</var> to control a variable&rsquo;s visibility
within functions.
With dynamic scoping, visible variables and their values
are a result of the sequence of function calls that caused execution
to reach the current function.
The value of a variable that a function sees depends
on its value within its caller, if any, whether that caller is
the &quot;global&quot; scope or another shell function.
This is also the value that a local variable
declaration &quot;shadows&quot;, and the value that is restored when the function
returns.
</p>
<p>For example, if a variable <var>var</var> is declared as local in function
<var>func1</var>, and <var>func1</var> calls another function <var>func2</var>,
references to <var>var</var> made from within <var>func2</var> will resolve to the
local variable <var>var</var> from <var>func1</var>, shadowing any global variable
named <var>var</var>.
</p>
<p>The following script demonstrates this behavior.
When executed, the script displays
</p>
<div class="example">
<pre class="example">In func2, var = func1 local
</pre></div>
<div class="example">
<pre class="example">func1()
{
local var='func1 local'
func2
}
func2()
{
echo &quot;In func2, var = $var&quot;
}
var=global
func1
</pre></div>
<p>Function names and definitions may be listed with the
<samp>-f</samp> option to the <code>declare</code> (<code>typeset</code>)
builtin command (see <a href="#Bash-Builtins">Bash Builtins</a>).
@@ -3370,7 +3418,7 @@ natural fashion.
</pre></div>
<p>The <var>word</var> undergoes
brace expansion, tilde expansion, parameter and variable expansion,
tilde expansion, parameter and variable expansion,
command substitution, arithmetic expansion, and quote removal.
Pathname expansion and word splitting are not performed.
The result is supplied as a single string,
@@ -6392,6 +6440,8 @@ sequences that are expanded before <code>PS1</code> is displayed.
<a name="index-PS2"></a>
</dt>
<dd><p>The secondary prompt string. The default value is &lsquo;<samp>&gt; </samp>&rsquo;.
<code>PS2</code> is expanded in the same way as <code>PS1</code> before being
displayed.
</p>
</dd>
</dl>
@@ -7262,10 +7312,11 @@ and before the command is executed.
<dt><code>PS4</code>
<a name="index-PS4"></a>
</dt>
<dd><p>The value is the prompt printed before the command line is echoed
when the <samp>-x</samp> option is set (see <a href="#The-Set-Builtin">The Set Builtin</a>).
The first character of <code>PS4</code> is replicated multiple times, as
necessary, to indicate multiple levels of indirection.
<dd><p>The value of this parameter is expanded like <var>PS1</var>
and the expanded value is the prompt printed before the command line
is echoed when the <samp>-x</samp> option is set (see <a href="#The-Set-Builtin">The Set Builtin</a>).
The first character of the expanded value is replicated multiple times,
as necessary, to indicate multiple levels of indirection.
The default is &lsquo;<samp>+ </samp>&rsquo;.
</p>
</dd>
@@ -7877,7 +7928,10 @@ signals <code>SIGTTIN</code>, <code>SIGTTOU</code>, and <code>SIGTSTP</code>.
</li><li> Bash expands and displays <code>PS1</code> before reading the first line
of a command, and expands and displays <code>PS2</code> before reading the
second and subsequent lines of a multi-line command.
Bash displays <code>PS0</code> after it reads a command but before executing it.
Bash expands and displays <code>PS0</code> after it reads a command but before
executing it.
See <a href="#Controlling-the-Prompt">Controlling the Prompt</a>, for a complete list of prompt
string escape sequences.
</li><li> Bash executes the value of the <code>PROMPT_COMMAND</code> variable as a command
before printing the primary prompt, <code>$PS1</code>
@@ -8130,6 +8184,8 @@ is equal to, not equal to, less than, less than or equal to,
greater than, or greater than or equal to <var>arg2</var>,
respectively. <var>Arg1</var> and <var>arg2</var>
may be positive or negative integers.
When used with the <code>[[</code> command, <var>Arg1</var> and <var>Arg2</var>
are evaluated as arithmetic expressions (see <a href="#Shell-Arithmetic">Shell Arithmetic</a>).
</p></dd>
</dl>
@@ -8623,7 +8679,8 @@ has a non-null value, then the
value is executed just as if it had been typed on the command line.
</p>
<p>In addition, the following table describes the special characters which
can appear in the prompt variables <code>PS1</code> to <code>PS4</code>:
can appear in the prompt variables <code>PS0</code>, <code>PS1</code>, <code>PS2</code>, and
<code>PS4</code>:
</p>
<dl compact="compact">
<dt><code>\a</code></dt>
@@ -10659,6 +10716,25 @@ Words are delimited by non-quoted shell metacharacters.
Words are delimited by non-quoted shell metacharacters.
</p>
</dd>
<dt><code>previous-screen-line ()</code>
<a name="index-previous_002dscreen_002dline-_0028_0029"></a>
</dt>
<dd><p>Attempt to move point to the same physical screen column on the previous
physical screen line. This will not have the desired effect if the current
Readline line does not take up more than one physical line or if point is not
greater than the length of the prompt plus the screen width.
</p>
</dd>
<dt><code>next-screen-line ()</code>
<a name="index-next_002dscreen_002dline-_0028_0029"></a>
</dt>
<dd><p>Attempt to move point to the same physical screen column on the next
physical screen line. This will not have the desired effect if the current
Readline line does not take up more than one physical line or if the length
of the current Readline line is not greater than the length of the prompt
plus the screen width.
</p>
</dd>
<dt><code>clear-screen (C-l)</code>
<a name="index-clear_002dscreen-_0028C_002dl_0029"></a>
</dt>
@@ -13258,7 +13334,7 @@ If Readline is not enabled, this option has no effect.
</dd>
<dt><code>--enable-prompt-string-decoding</code></dt>
<dd><p>Turn on the interpretation of a number of backslash-escaped characters
in the <code>$PS1</code>, <code>$PS2</code>, <code>$PS3</code>, and <code>$PS4</code> prompt
in the <code>$PS0</code>, <code>$PS1</code>, <code>$PS2</code>, and <code>$PS4</code> prompt
strings. See <a href="#Controlling-the-Prompt">Controlling the Prompt</a>, for a complete list of prompt
string escape sequences.
</p>
@@ -15066,6 +15142,7 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
<tr><td colspan="4"> <hr></td></tr>
<tr><th><a name="Function-Index_fn_letter-N">N</a></th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-next_002dhistory-_0028C_002dn_0029"><code>next-history (C-n)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-next_002dscreen_002dline-_0028_0029"><code>next-screen-line ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-non_002dincremental_002dforward_002dsearch_002dhistory-_0028M_002dn_0029"><code>non-incremental-forward-search-history (M-n)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-non_002dincremental_002dreverse_002dsearch_002dhistory-_0028M_002dp_0029"><code>non-incremental-reverse-search-history (M-p)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
@@ -15082,6 +15159,7 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
<tr><td></td><td valign="top"><a href="#index-possible_002dvariable_002dcompletions-_0028C_002dx-_0024_0029"><code>possible-variable-completions (C-x $)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-prefix_002dmeta-_0028ESC_0029"><code>prefix-meta (<span class="key">ESC</span>)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-previous_002dhistory-_0028C_002dp_0029"><code>previous-history (C-p)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-previous_002dscreen_002dline-_0028_0029"><code>previous-screen-line ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-print_002dlast_002dkbd_002dmacro-_0028_0029"><code>print-last-kbd-macro ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th><a name="Function-Index_fn_letter-Q">Q</a></th><td></td><td></td></tr>
+227 -165
View File
@@ -2,9 +2,9 @@ This is bashref.info, produced by makeinfo version 6.3 from
bashref.texi.
This text is a brief description of the features that are present in the
Bash shell (version 4.4, 1 February 2017).
Bash shell (version 4.4, 22 March 2017).
This is Edition 4.4, last updated 1 February 2017, of 'The GNU Bash
This is Edition 4.4, last updated 22 March 2017, of 'The GNU Bash
Reference Manual', for 'Bash', Version 4.4.
Copyright (C) 1988-2017 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 4.4, 1 February 2017). The Bash home page is
Bash shell (version 4.4, 22 March 2017). The Bash home page is
<http://www.gnu.org/software/bash/>.
This is Edition 4.4, last updated 1 February 2017, of 'The GNU Bash
This is Edition 4.4, last updated 22 March 2017, of 'The GNU Bash
Reference Manual', for 'Bash', Version 4.4.
Bash contains features that appear in other popular shells, and some
@@ -1210,7 +1210,47 @@ last command executed before the 'return'.
Variables local to the function may be declared with the 'local'
builtin. These variables are visible only to the function and the
commands it invokes.
commands it invokes. This is particularly important when a shell
function calls other functions.
Local variables "shadow" variables with the same name declared at
previous scopes. For instance, a local variable declared in a function
hides a global variable of the same name: references and assignments
refer to the local variable, leaving the global variable unmodified.
When the function returns, the global variable is once again visible.
The shell uses DYNAMIC SCOPING to control a variable's visibility
within functions. With dynamic scoping, visible variables and their
values are a result of the sequence of function calls that caused
execution to reach the current function. The value of a variable that a
function sees depends on its value within its caller, if any, whether
that caller is the "global" scope or another shell function. This is
also the value that a local variable declaration "shadows", and the
value that is restored when the function returns.
For example, if a variable VAR is declared as local in function
FUNC1, and FUNC1 calls another function FUNC2, references to VAR made
from within FUNC2 will resolve to the local variable VAR from FUNC1,
shadowing any global variable named VAR.
The following script demonstrates this behavior. When executed, the
script displays
In func2, var = func1 local
func1()
{
local var='func1 local'
func2
}
func2()
{
echo "In func2, var = $var"
}
var=global
func1
Function names and definitions may be listed with the '-f' option to
the 'declare' ('typeset') builtin command (*note Bash Builtins::). The
@@ -2354,12 +2394,11 @@ fashion.
A variant of here documents, the format is:
[N]<<< WORD
The WORD undergoes brace expansion, tilde expansion, parameter and
variable expansion, command substitution, arithmetic expansion, and
quote removal. Pathname expansion and word splitting are not performed.
The result is supplied as a single string, with a newline appended, to
the command on its standard input (or file descriptor N if N is
specified).
The WORD undergoes tilde expansion, parameter and variable expansion,
command substitution, arithmetic expansion, and quote removal. Pathname
expansion and word splitting are not performed. The result is supplied
as a single string, with a newline appended, to the command on its
standard input (or file descriptor N if N is specified).
3.6.8 Duplicating File Descriptors
----------------------------------
@@ -4687,7 +4726,8 @@ In some cases, Bash assigns a default value to the variable.
that are expanded before 'PS1' is displayed.
'PS2'
The secondary prompt string. The default value is '> '.
The secondary prompt string. The default value is '> '. 'PS2' is
expanded in the same way as 'PS1' before being displayed.

File: bashref.info, Node: Bash Variables, Prev: Bourne Shell Variables, Up: Shell Variables
@@ -5254,10 +5294,12 @@ Variables::).
with '#? '
'PS4'
The value is the prompt printed before the command line is echoed
when the '-x' option is set (*note The Set Builtin::). The first
character of 'PS4' is replicated multiple times, as necessary, to
indicate multiple levels of indirection. The default is '+ '.
The value of this parameter is expanded like PS1 and the expanded
value is the prompt printed before the command line is echoed when
the '-x' option is set (*note The Set Builtin::). The first
character of the expanded value is replicated multiple times, as
necessary, to indicate multiple levels of indirection. The default
is '+ '.
'PWD'
The current working directory as set by the 'cd' builtin.
@@ -5714,8 +5756,10 @@ several ways.
3. Bash expands and displays 'PS1' before reading the first line of a
command, and expands and displays 'PS2' before reading the second
and subsequent lines of a multi-line command. Bash displays 'PS0'
after it reads a command but before executing it.
and subsequent lines of a multi-line command. Bash expands and
displays 'PS0' after it reads a command but before executing it.
See *note Controlling the Prompt::, for a complete list of prompt
string escape sequences.
4. Bash executes the value of the 'PROMPT_COMMAND' variable as a
command before printing the primary prompt, '$PS1' (*note Bash
@@ -5920,7 +5964,9 @@ link itself.
arithmetic binary operators return true if ARG1 is equal to, not
equal to, less than, less than or equal to, greater than, or
greater than or equal to ARG2, respectively. ARG1 and ARG2 may be
positive or negative integers.
positive or negative integers. When used with the '[[' command,
ARG1 and ARG2 are evaluated as arithmetic expressions (*note Shell
Arithmetic::).

File: bashref.info, Node: Shell Arithmetic, Next: Aliases, Prev: Bash Conditional Expressions, Up: Bash Features
@@ -6281,7 +6327,7 @@ non-null value, then the value is executed just as if it had been typed
on the command line.
In addition, the following table describes the special characters
which can appear in the prompt variables 'PS1' to 'PS4':
which can appear in the prompt variables 'PS0', 'PS1', 'PS2', and 'PS4':
'\a'
A bell character.
@@ -7854,6 +7900,20 @@ File: bashref.info, Node: Commands For Moving, Next: Commands For History, Up
Move back to the start of the current or previous word. Words are
delimited by non-quoted shell metacharacters.
'previous-screen-line ()'
Attempt to move point to the same physical screen column on the
previous physical screen line. This will not have the desired
effect if the current Readline line does not take up more than one
physical line or if point is not greater than the length of the
prompt plus the screen width.
'next-screen-line ()'
Attempt to move point to the same physical screen column on the
next physical screen line. This will not have the desired effect
if the current Readline line does not take up more than one
physical line or if the length of the current Readline line is not
greater than the length of the prompt plus the screen width.
'clear-screen (C-l)'
Clear the screen and redraw the current line, leaving the current
line at the top of the screen.
@@ -9737,7 +9797,7 @@ unless the operating system does not provide the necessary support.
'--enable-prompt-string-decoding'
Turn on the interpretation of a number of backslash-escaped
characters in the '$PS1', '$PS2', '$PS3', and '$PS4' prompt
characters in the '$PS0', '$PS1', '$PS2', and '$PS4' prompt
strings. See *note Controlling the Prompt::, for a complete list
of prompt string escape sequences.
@@ -11019,17 +11079,17 @@ D.3 Parameter and Variable Index
(line 53)
* PS3: Bash Variables. (line 559)
* PS4: Bash Variables. (line 564)
* PWD: Bash Variables. (line 570)
* RANDOM: Bash Variables. (line 573)
* READLINE_LINE: Bash Variables. (line 578)
* READLINE_POINT: Bash Variables. (line 582)
* REPLY: Bash Variables. (line 586)
* PWD: Bash Variables. (line 572)
* RANDOM: Bash Variables. (line 575)
* READLINE_LINE: Bash Variables. (line 580)
* READLINE_POINT: Bash Variables. (line 584)
* REPLY: Bash Variables. (line 588)
* revert-all-at-newline: Readline Init File Syntax.
(line 270)
* SECONDS: Bash Variables. (line 589)
* SHELL: Bash Variables. (line 595)
* SHELLOPTS: Bash Variables. (line 600)
* SHLVL: Bash Variables. (line 609)
* SECONDS: Bash Variables. (line 591)
* SHELL: Bash Variables. (line 597)
* SHELLOPTS: Bash Variables. (line 602)
* SHLVL: Bash Variables. (line 611)
* show-all-if-ambiguous: Readline Init File Syntax.
(line 276)
* show-all-if-unmodified: Readline Init File Syntax.
@@ -11040,10 +11100,10 @@ D.3 Parameter and Variable Index
(line 297)
* TEXTDOMAIN: Locale Translation. (line 11)
* TEXTDOMAINDIR: Locale Translation. (line 11)
* TIMEFORMAT: Bash Variables. (line 614)
* TMOUT: Bash Variables. (line 652)
* TMPDIR: Bash Variables. (line 664)
* UID: Bash Variables. (line 668)
* TIMEFORMAT: Bash Variables. (line 616)
* TMOUT: Bash Variables. (line 654)
* TMPDIR: Bash Variables. (line 666)
* UID: Bash Variables. (line 670)
* vi-cmd-mode-string: Readline Init File Syntax.
(line 310)
* vi-ins-mode-string: Readline Init File Syntax.
@@ -11083,7 +11143,7 @@ D.4 Function Index
(line 42)
* character-search-backward (M-C-]): Miscellaneous Commands.
(line 47)
* clear-screen (C-l): Commands For Moving. (line 34)
* clear-screen (C-l): Commands For Moving. (line 48)
* complete (<TAB>): Commands For Completion.
(line 6)
* complete-command (M-!): Commands For Completion.
@@ -11179,6 +11239,7 @@ D.4 Function Index
(line 38)
* next-history (C-n): Commands For History.
(line 17)
* next-screen-line (): Commands For Moving. (line 41)
* non-incremental-forward-search-history (M-n): Commands For History.
(line 41)
* non-incremental-reverse-search-history (M-p): Commands For History.
@@ -11202,11 +11263,12 @@ D.4 Function Index
(line 19)
* previous-history (C-p): Commands For History.
(line 13)
* previous-screen-line (): Commands For Moving. (line 34)
* print-last-kbd-macro (): Keyboard Macros. (line 17)
* quoted-insert (C-q or C-v): Commands For Text. (line 26)
* re-read-init-file (C-x C-r): Miscellaneous Commands.
(line 6)
* redraw-current-line (): Commands For Moving. (line 38)
* redraw-current-line (): Commands For Moving. (line 52)
* reverse-search-history (C-r): Commands For History.
(line 27)
* revert-line (M-r): Miscellaneous Commands.
@@ -11410,134 +11472,134 @@ D.5 Concept Index

Tag Table:
Node: Top895
Node: Introduction2813
Node: What is Bash?3029
Node: What is a shell?4143
Node: Definitions6681
Node: Basic Shell Features9632
Node: Shell Syntax10851
Node: Shell Operation11877
Node: Quoting13170
Node: Escape Character14470
Node: Single Quotes14955
Node: Double Quotes15303
Node: ANSI-C Quoting16581
Node: Locale Translation17834
Node: Comments18730
Node: Shell Commands19348
Node: Simple Commands20220
Node: Pipelines20851
Node: Lists23594
Node: Compound Commands25323
Node: Looping Constructs26326
Node: Conditional Constructs28789
Node: Command Grouping39711
Node: Coprocesses41190
Node: GNU Parallel43022
Node: Shell Functions46995
Node: Shell Parameters52201
Node: Positional Parameters56614
Node: Special Parameters57514
Node: Shell Expansions60851
Node: Brace Expansion62945
Node: Tilde Expansion65779
Node: Shell Parameter Expansion68127
Node: Command Substitution82259
Node: Arithmetic Expansion83614
Node: Process Substitution84546
Node: Word Splitting85666
Node: Filename Expansion87610
Node: Pattern Matching89984
Node: Quote Removal93970
Node: Redirections94265
Node: Executing Commands103839
Node: Simple Command Expansion104509
Node: Command Search and Execution106439
Node: Command Execution Environment108775
Node: Environment111759
Node: Exit Status113418
Node: Signals115088
Node: Shell Scripts117055
Node: Shell Builtin Commands119570
Node: Bourne Shell Builtins121604
Node: Bash Builtins142204
Node: Modifying Shell Behavior170849
Node: The Set Builtin171194
Node: The Shopt Builtin181607
Node: Special Builtins197505
Node: Shell Variables198484
Node: Bourne Shell Variables198921
Node: Bash Variables200952
Node: Bash Features230660
Node: Invoking Bash231559
Node: Bash Startup Files237508
Node: Interactive Shells242611
Node: What is an Interactive Shell?243021
Node: Is this Shell Interactive?243670
Node: Interactive Shell Behavior244485
Node: Bash Conditional Expressions247860
Node: Shell Arithmetic252100
Node: Aliases254917
Node: Arrays257465
Node: The Directory Stack262549
Node: Directory Stack Builtins263333
Node: Controlling the Prompt266301
Node: The Restricted Shell269047
Node: Bash POSIX Mode270872
Node: Job Control281223
Node: Job Control Basics281683
Node: Job Control Builtins286651
Node: Job Control Variables291378
Node: Command Line Editing292534
Node: Introduction and Notation294205
Node: Readline Interaction295828
Node: Readline Bare Essentials297019
Node: Readline Movement Commands298802
Node: Readline Killing Commands299762
Node: Readline Arguments301680
Node: Searching302724
Node: Readline Init File304910
Node: Readline Init File Syntax306057
Node: Conditional Init Constructs326244
Node: Sample Init File328769
Node: Bindable Readline Commands331886
Node: Commands For Moving333090
Node: Commands For History334233
Node: Commands For Text338528
Node: Commands For Killing341917
Node: Numeric Arguments344398
Node: Commands For Completion345537
Node: Keyboard Macros349728
Node: Miscellaneous Commands350415
Node: Readline vi Mode356291
Node: Programmable Completion357198
Node: Programmable Completion Builtins364659
Node: A Programmable Completion Example374545
Node: Using History Interactively379797
Node: Bash History Facilities380481
Node: Bash History Builtins383482
Node: History Interaction387774
Node: Event Designators390738
Node: Word Designators391957
Node: Modifiers393594
Node: Installing Bash394996
Node: Basic Installation396133
Node: Compilers and Options398824
Node: Compiling For Multiple Architectures399565
Node: Installation Names401228
Node: Specifying the System Type402046
Node: Sharing Defaults402762
Node: Operation Controls403435
Node: Optional Features404393
Node: Reporting Bugs414919
Node: Major Differences From The Bourne Shell416113
Node: GNU Free Documentation License432965
Node: Indexes458142
Node: Builtin Index458596
Node: Reserved Word Index465423
Node: Variable Index467871
Node: Function Index483549
Node: Concept Index496706
Node: Top891
Node: Introduction2805
Node: What is Bash?3021
Node: What is a shell?4135
Node: Definitions6673
Node: Basic Shell Features9624
Node: Shell Syntax10843
Node: Shell Operation11869
Node: Quoting13162
Node: Escape Character14462
Node: Single Quotes14947
Node: Double Quotes15295
Node: ANSI-C Quoting16573
Node: Locale Translation17826
Node: Comments18722
Node: Shell Commands19340
Node: Simple Commands20212
Node: Pipelines20843
Node: Lists23586
Node: Compound Commands25315
Node: Looping Constructs26318
Node: Conditional Constructs28781
Node: Command Grouping39703
Node: Coprocesses41182
Node: GNU Parallel43014
Node: Shell Functions46987
Node: Shell Parameters53696
Node: Positional Parameters58109
Node: Special Parameters59009
Node: Shell Expansions62346
Node: Brace Expansion64440
Node: Tilde Expansion67274
Node: Shell Parameter Expansion69622
Node: Command Substitution83754
Node: Arithmetic Expansion85109
Node: Process Substitution86041
Node: Word Splitting87161
Node: Filename Expansion89105
Node: Pattern Matching91479
Node: Quote Removal95465
Node: Redirections95760
Node: Executing Commands105318
Node: Simple Command Expansion105988
Node: Command Search and Execution107918
Node: Command Execution Environment110254
Node: Environment113238
Node: Exit Status114897
Node: Signals116567
Node: Shell Scripts118534
Node: Shell Builtin Commands121049
Node: Bourne Shell Builtins123083
Node: Bash Builtins143683
Node: Modifying Shell Behavior172328
Node: The Set Builtin172673
Node: The Shopt Builtin183086
Node: Special Builtins198984
Node: Shell Variables199963
Node: Bourne Shell Variables200400
Node: Bash Variables202504
Node: Bash Features232297
Node: Invoking Bash233196
Node: Bash Startup Files239145
Node: Interactive Shells244248
Node: What is an Interactive Shell?244658
Node: Is this Shell Interactive?245307
Node: Interactive Shell Behavior246122
Node: Bash Conditional Expressions249610
Node: Shell Arithmetic253976
Node: Aliases256793
Node: Arrays259341
Node: The Directory Stack264425
Node: Directory Stack Builtins265209
Node: Controlling the Prompt268177
Node: The Restricted Shell270939
Node: Bash POSIX Mode272764
Node: Job Control283115
Node: Job Control Basics283575
Node: Job Control Builtins288543
Node: Job Control Variables293270
Node: Command Line Editing294426
Node: Introduction and Notation296097
Node: Readline Interaction297720
Node: Readline Bare Essentials298911
Node: Readline Movement Commands300694
Node: Readline Killing Commands301654
Node: Readline Arguments303572
Node: Searching304616
Node: Readline Init File306802
Node: Readline Init File Syntax307949
Node: Conditional Init Constructs328136
Node: Sample Init File330661
Node: Bindable Readline Commands333778
Node: Commands For Moving334982
Node: Commands For History336831
Node: Commands For Text341126
Node: Commands For Killing344515
Node: Numeric Arguments346996
Node: Commands For Completion348135
Node: Keyboard Macros352326
Node: Miscellaneous Commands353013
Node: Readline vi Mode358889
Node: Programmable Completion359796
Node: Programmable Completion Builtins367257
Node: A Programmable Completion Example377143
Node: Using History Interactively382395
Node: Bash History Facilities383079
Node: Bash History Builtins386080
Node: History Interaction390372
Node: Event Designators393336
Node: Word Designators394555
Node: Modifiers396192
Node: Installing Bash397594
Node: Basic Installation398731
Node: Compilers and Options401422
Node: Compiling For Multiple Architectures402163
Node: Installation Names403826
Node: Specifying the System Type404644
Node: Sharing Defaults405360
Node: Operation Controls406033
Node: Optional Features406991
Node: Reporting Bugs417517
Node: Major Differences From The Bourne Shell418711
Node: GNU Free Documentation License435563
Node: Indexes460740
Node: Builtin Index461194
Node: Reserved Word Index468021
Node: Variable Index470469
Node: Function Index486147
Node: Concept Index499450

End Tag Table
+39 -39
View File
@@ -1,4 +1,4 @@
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016/MacPorts 2016_4) (preloaded format=pdfetex 2017.1.6) 1 FEB 2017 10:46
This is pdfTeX, Version 3.14159265-2.6-1.40.17 (TeX Live 2016/MacPorts 2016_4) (preloaded format=pdfetex 2017.1.6) 22 MAR 2017 16:20
entering extended mode
restricted \write18 enabled.
file:line:error style messages enabled.
@@ -243,7 +243,7 @@ arallel -k traceroute[]
[42] [43]
[44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54]
Overfull \hbox (26.76846pt too wide) in paragraph at lines 4280--4280
Overfull \hbox (26.76846pt too wide) in paragraph at lines 4328--4328
[]@texttt mapfile [-d @textttsl de-lim@texttt ] [-n @textttsl count@texttt ] [
-O @textttsl ori-gin@texttt ] [-s @textttsl count@texttt ] [-t] [-u @textttsl f
d@texttt ][]
@@ -257,7 +257,7 @@ d@texttt ][]
.etc.
[55] [56]
Overfull \hbox (38.26584pt too wide) in paragraph at lines 4484--4484
Overfull \hbox (38.26584pt too wide) in paragraph at lines 4532--4532
[]@texttt readarray [-d @textttsl de-lim@texttt ] [-n @textttsl count@texttt ]
[-O @textttsl ori-gin@texttt ] [-s @textttsl count@texttt ] [-t] [-u @textttsl
fd@texttt ][]
@@ -272,7 +272,7 @@ Overfull \hbox (38.26584pt too wide) in paragraph at lines 4484--4484
[57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] Chapter 5
[70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] Chapter 6 [82]
Overfull \hbox (49.43388pt too wide) in paragraph at lines 6228--6228
Overfull \hbox (49.43388pt too wide) in paragraph at lines 6279--6279
[]@texttt bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@t
exttt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar-
@@ -285,7 +285,7 @@ exttt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar-
.etc.
Overfull \hbox (72.42863pt too wide) in paragraph at lines 6229--6229
Overfull \hbox (72.42863pt too wide) in paragraph at lines 6280--6280
[]@texttt bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@texttt
] [-O @textttsl shopt_option@texttt ] -c @textttsl string @texttt [@textttsl ar
-
@@ -299,7 +299,7 @@ Overfull \hbox (72.42863pt too wide) in paragraph at lines 6229--6229
.etc.
Overfull \hbox (32.18782pt too wide) in paragraph at lines 6230--6230
Overfull \hbox (32.18782pt too wide) in paragraph at lines 6281--6281
[]@texttt bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@text
tt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar-
@@ -362,7 +362,7 @@ gnored[]
[120] [121] [122] [123] [124] [125] [126] [127] [128] [129]
[130] [131] [132] [133] [134] [135]
Overfull \hbox (26.43913pt too wide) in paragraph at lines 2234--2234
Overfull \hbox (26.43913pt too wide) in paragraph at lines 2247--2247
[] @texttt # Tilde expansion, with side effect of expanding tilde to full p
athname[]
@@ -374,47 +374,47 @@ athname[]
.@penalty 10000
.etc.
[136])
[136] [137])
texinfo.tex: doing @include of hsuser.texi
(/usr/homes/chet/src/bash/src/lib/readline/doc/hsuser.texi Chapter 9
[137] [138] [139] [140] [141]) Chapter 10 [142] [143] [144] [145] [146]
[147] [148] [149] Appendix A [150] Appendix B [151] [152] [153] [154] [155]
[156] Appendix C [157]
(/usr/homes/chet/src/bash/src/lib/readline/doc/hsuser.texi
Chapter 9 [138] [139] [140] [141] [142]) Chapter 10 [143] [144] [145] [146]
[147] [148] [149] [150] Appendix A [151] Appendix B [152] [153] [154] [155]
[156] [157] Appendix C [158]
texinfo.tex: doing @include of fdl.texi
(/Users/chet/src/bash/src/doc/fdl.texi [158] [159]
[160] [161] [162] [163] [164]) Appendix D [165] [166] [167] [168] [169]
[170] [171] [172] [173] [174] )
(/Users/chet/src/bash/src/doc/fdl.texi [159]
[160] [161] [162] [163] [164] [165]) Appendix D [166] [167] [168] [169]
[170] [171] [172] [173] [174] [175] )
Here is how much of TeX's memory you used:
4062 strings out of 497105
47063 string characters out of 6206776
136604 words of memory out of 5000000
4063 strings out of 497105
47066 string characters out of 6206776
137574 words of memory out of 5000000
4846 multiletter control sequences out of 15000+600000
34315 words of font info for 116 fonts, out of 8000000 for 9000
51 hyphenation exceptions out of 8191
16i,6n,16p,326b,968s stack positions out of 5000i,500n,10000p,200000b,80000s
{/opt/local/share/texmf-texlive/fonts/enc/dvips/
cm-super/cm-super-t1.enc}</opt/local/share/texmf-texlive/fonts/type1/public/ams
fonts/cm/cmbx12.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfonts
/cm/cmcsc10.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/
cmmi10.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmmi1
2.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/s
hare/texmf-texlive/fonts/type1/public/amsfonts/cm/cmsl10.pfb></opt/local/share/
texmf-texlive/fonts/type1/public/amsfonts/cm/cmsltt10.pfb></opt/local/share/tex
mf-texlive/fonts/type1/public/amsfonts/cm/cmsy10.pfb></opt/local/share/texmf-te
xlive/fonts/type1/public/amsfonts/cm/cmti10.pfb></opt/local/share/texmf-texlive
/fonts/type1/public/amsfonts/cm/cmtt10.pfb></opt/local/share/texmf-texlive/font
s/type1/public/amsfonts/cm/cmtt12.pfb></opt/local/share/texmf-texlive/fonts/typ
e1/public/amsfonts/cm/cmtt9.pfb></opt/local/share/texmf-texlive/fonts/type1/pub
lic/cm-super/sfrm1095.pfb></opt/local/share/texmf-texlive/fonts/type1/public/cm
-super/sfrm1440.pfb>
Output written on bashref.pdf (180 pages, 738487 bytes).
{/opt/local/share/texmf-texlive/fonts/enc/
dvips/cm-super/cm-super-t1.enc}</opt/local/share/texmf-texlive/fonts/type1/publ
ic/amsfonts/cm/cmbx12.pfb></opt/local/share/texmf-texlive/fonts/type1/public/am
sfonts/cm/cmcsc10.pfb></opt/local/share/texmf-texlive/fonts/type1/public/amsfon
ts/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/cmmi
9.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/l
ocal/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmsl10.pfb></opt/local/
share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmsltt10.pfb></opt/local/sha
re/texmf-texlive/fonts/type1/public/amsfonts/cm/cmsy10.pfb></opt/local/share/te
xmf-texlive/fonts/type1/public/amsfonts/cm/cmti10.pfb></opt/local/share/texmf-t
exlive/fonts/type1/public/amsfonts/cm/cmtt10.pfb></opt/local/share/texmf-texliv
e/fonts/type1/public/amsfonts/cm/cmtt12.pfb></opt/local/share/texmf-texlive/fon
ts/type1/public/amsfonts/cm/cmtt9.pfb></opt/local/share/texmf-texlive/fonts/typ
e1/public/cm-super/sfrm1095.pfb></opt/local/share/texmf-texlive/fonts/type1/pub
lic/cm-super/sfrm1440.pfb>
Output written on bashref.pdf (181 pages, 741335 bytes).
PDF statistics:
2589 PDF objects out of 2984 (max. 8388607)
2364 compressed objects within 24 object streams
306 named destinations out of 1000 (max. 500000)
2600 PDF objects out of 2984 (max. 8388607)
2374 compressed objects within 24 object streams
307 named destinations out of 1000 (max. 500000)
1125 words of extra memory for PDF output out of 10000 (max. 10000000)
BIN
View File
Binary file not shown.
+3609 -3533
View File
File diff suppressed because it is too large Load Diff
+59 -1
View File
@@ -1424,7 +1424,64 @@ before the @code{return}.
Variables local to the function may be declared with the
@code{local} builtin. These variables are visible only to
the function and the commands it invokes.
the function and the commands it invokes. This is particularly
important when a shell function calls other functions.
Local variables "shadow" variables with the same name declared at
previous scopes. For instance, a local variable declared in a function
hides a global variable of the same name: references and assignments
refer to the local variable, leaving the global variable unmodified.
When the function returns, the global variable is once again visible.
The shell uses @var{dynamic scoping} to control a variable's visibility
within functions.
With dynamic scoping, visible variables and their values
are a result of the sequence of function calls that caused execution
to reach the current function.
The value of a variable that a function sees depends
on its value within its caller, if any, whether that caller is
the "global" scope or another shell function.
This is also the value that a local variable
declaration "shadows", and the value that is restored when the function
returns.
For example, if a variable @var{var} is declared as local in function
@var{func1}, and @var{func1} calls another function @var{func2},
references to @var{var} made from within @var{func2} will resolve to the
local variable @var{var} from @var{func1}, shadowing any global variable
named @var{var}.
The following script demonstrates this behavior.
When executed, the script displays
@example
In func2, var = func1 local
@end example
@example
func1()
@{
local var='func1 local'
func2
@}
func2()
@{
echo "In func2, var = $var"
@}
var=global
func1
@end example
The @code{unset} builtin also acts using the same dynamic scope: if a
variable is local to the current scope, @code{unset} will unset it;
otherwise the unset will refer to the variable found in any calling scope
as described above.
If a variable at the local scope is unset, it will remain so
until it is reset in that scope or until the function returns.
If the unset acts on a variable at a previous scope, any instance of a
variable with that name that had been shadowed will become visible.
Function names and definitions may be listed with the
@option{-f} option to the @code{declare} (@code{typeset})
@@ -7102,6 +7159,7 @@ destroys the array element at index @var{subscript}.
Negative subscripts to indexed arrays are interpreted as described above.
Care must be taken to avoid unwanted side effects caused by filename
expansion.
Unsetting the last element of an array variable does not unset the variable.
@code{unset @var{name}}, where @var{name} is an array, removes the
entire array. A subscript of @samp{*} or @samp{@@} also removes the
entire array.
+55 -55
View File
@@ -23,39 +23,39 @@
@numsubsecentry{Coprocesses}{3.2.5}{Coprocesses}{15}
@numsubsecentry{GNU Parallel}{3.2.6}{GNU Parallel}{15}
@numsecentry{Shell Functions}{3.3}{Shell Functions}{17}
@numsecentry{Shell Parameters}{3.4}{Shell Parameters}{18}
@numsubsecentry{Positional Parameters}{3.4.1}{Positional Parameters}{19}
@numsecentry{Shell Parameters}{3.4}{Shell Parameters}{19}
@numsubsecentry{Positional Parameters}{3.4.1}{Positional Parameters}{20}
@numsubsecentry{Special Parameters}{3.4.2}{Special Parameters}{20}
@numsecentry{Shell Expansions}{3.5}{Shell Expansions}{21}
@numsubsecentry{Brace Expansion}{3.5.1}{Brace Expansion}{21}
@numsubsecentry{Tilde Expansion}{3.5.2}{Tilde Expansion}{22}
@numsubsecentry{Shell Parameter Expansion}{3.5.3}{Shell Parameter Expansion}{23}
@numsubsecentry{Brace Expansion}{3.5.1}{Brace Expansion}{22}
@numsubsecentry{Tilde Expansion}{3.5.2}{Tilde Expansion}{23}
@numsubsecentry{Shell Parameter Expansion}{3.5.3}{Shell Parameter Expansion}{24}
@numsubsecentry{Command Substitution}{3.5.4}{Command Substitution}{29}
@numsubsecentry{Arithmetic Expansion}{3.5.5}{Arithmetic Expansion}{29}
@numsubsecentry{Arithmetic Expansion}{3.5.5}{Arithmetic Expansion}{30}
@numsubsecentry{Process Substitution}{3.5.6}{Process Substitution}{30}
@numsubsecentry{Word Splitting}{3.5.7}{Word Splitting}{30}
@numsubsecentry{Filename Expansion}{3.5.8}{Filename Expansion}{30}
@numsubsubsecentry{Pattern Matching}{3.5.8.1}{Pattern Matching}{31}
@numsubsecentry{Quote Removal}{3.5.9}{Quote Removal}{32}
@numsecentry{Redirections}{3.6}{Redirections}{32}
@numsubsecentry{Word Splitting}{3.5.7}{Word Splitting}{31}
@numsubsecentry{Filename Expansion}{3.5.8}{Filename Expansion}{31}
@numsubsubsecentry{Pattern Matching}{3.5.8.1}{Pattern Matching}{32}
@numsubsecentry{Quote Removal}{3.5.9}{Quote Removal}{33}
@numsecentry{Redirections}{3.6}{Redirections}{33}
@numsubsecentry{Redirecting Input}{3.6.1}{}{34}
@numsubsecentry{Redirecting Output}{3.6.2}{}{34}
@numsubsecentry{Appending Redirected Output}{3.6.3}{}{34}
@numsubsecentry{Redirecting Standard Output and Standard Error}{3.6.4}{}{34}
@numsubsecentry{Redirecting Output}{3.6.2}{}{35}
@numsubsecentry{Appending Redirected Output}{3.6.3}{}{35}
@numsubsecentry{Redirecting Standard Output and Standard Error}{3.6.4}{}{35}
@numsubsecentry{Appending Standard Output and Standard Error}{3.6.5}{}{35}
@numsubsecentry{Here Documents}{3.6.6}{}{35}
@numsubsecentry{Here Strings}{3.6.7}{}{35}
@numsubsecentry{Duplicating File Descriptors}{3.6.8}{}{35}
@numsubsecentry{Moving File Descriptors}{3.6.9}{}{36}
@numsubsecentry{Opening File Descriptors for Reading and Writing}{3.6.10}{}{36}
@numsecentry{Executing Commands}{3.7}{Executing Commands}{36}
@numsubsecentry{Simple Command Expansion}{3.7.1}{Simple Command Expansion}{36}
@numsubsecentry{Command Search and Execution}{3.7.2}{Command Search and Execution}{37}
@numsubsecentry{Command Execution Environment}{3.7.3}{Command Execution Environment}{37}
@numsubsecentry{Environment}{3.7.4}{Environment}{38}
@numsubsecentry{Exit Status}{3.7.5}{Exit Status}{39}
@numsubsecentry{Signals}{3.7.6}{Signals}{39}
@numsecentry{Shell Scripts}{3.8}{Shell Scripts}{40}
@numsubsecentry{Here Documents}{3.6.6}{}{36}
@numsubsecentry{Here Strings}{3.6.7}{}{36}
@numsubsecentry{Duplicating File Descriptors}{3.6.8}{}{36}
@numsubsecentry{Moving File Descriptors}{3.6.9}{}{37}
@numsubsecentry{Opening File Descriptors for Reading and Writing}{3.6.10}{}{37}
@numsecentry{Executing Commands}{3.7}{Executing Commands}{37}
@numsubsecentry{Simple Command Expansion}{3.7.1}{Simple Command Expansion}{37}
@numsubsecentry{Command Search and Execution}{3.7.2}{Command Search and Execution}{38}
@numsubsecentry{Command Execution Environment}{3.7.3}{Command Execution Environment}{38}
@numsubsecentry{Environment}{3.7.4}{Environment}{39}
@numsubsecentry{Exit Status}{3.7.5}{Exit Status}{40}
@numsubsecentry{Signals}{3.7.6}{Signals}{40}
@numsecentry{Shell Scripts}{3.8}{Shell Scripts}{41}
@numchapentry{Shell Builtin Commands}{4}{Shell Builtin Commands}{42}
@numsecentry{Bourne Shell Builtins}{4.1}{Bourne Shell Builtins}{42}
@numsecentry{Bash Builtin Commands}{4.2}{Bash Builtins}{49}
@@ -102,7 +102,7 @@
@numsubsecentry{Commands For Moving}{8.4.1}{Commands For Moving}{120}
@numsubsecentry{Commands For Manipulating The History}{8.4.2}{Commands For History}{121}
@numsubsecentry{Commands For Changing Text}{8.4.3}{Commands For Text}{122}
@numsubsecentry{Killing And Yanking}{8.4.4}{Commands For Killing}{123}
@numsubsecentry{Killing And Yanking}{8.4.4}{Commands For Killing}{124}
@numsubsecentry{Specifying Numeric Arguments}{8.4.5}{Numeric Arguments}{125}
@numsubsecentry{Letting Readline Type For You}{8.4.6}{Commands For Completion}{125}
@numsubsecentry{Keyboard Macros}{8.4.7}{Keyboard Macros}{127}
@@ -110,30 +110,30 @@
@numsecentry{Readline vi Mode}{8.5}{Readline vi Mode}{129}
@numsecentry{Programmable Completion}{8.6}{Programmable Completion}{130}
@numsecentry{Programmable Completion Builtins}{8.7}{Programmable Completion Builtins}{132}
@numsecentry{A Programmable Completion Example}{8.8}{A Programmable Completion Example}{135}
@numchapentry{Using History Interactively}{9}{Using History Interactively}{138}
@numsecentry{Bash History Facilities}{9.1}{Bash History Facilities}{138}
@numsecentry{Bash History Builtins}{9.2}{Bash History Builtins}{138}
@numsecentry{History Expansion}{9.3}{History Interaction}{140}
@numsubsecentry{Event Designators}{9.3.1}{Event Designators}{141}
@numsubsecentry{Word Designators}{9.3.2}{Word Designators}{141}
@numsubsecentry{Modifiers}{9.3.3}{Modifiers}{142}
@numchapentry{Installing Bash}{10}{Installing Bash}{143}
@numsecentry{Basic Installation}{10.1}{Basic Installation}{143}
@numsecentry{Compilers and Options}{10.2}{Compilers and Options}{144}
@numsecentry{Compiling For Multiple Architectures}{10.3}{Compiling For Multiple Architectures}{144}
@numsecentry{Installation Names}{10.4}{Installation Names}{144}
@numsecentry{Specifying the System Type}{10.5}{Specifying the System Type}{144}
@numsecentry{Sharing Defaults}{10.6}{Sharing Defaults}{145}
@numsecentry{Operation Controls}{10.7}{Operation Controls}{145}
@numsecentry{Optional Features}{10.8}{Optional Features}{145}
@appentry{Reporting Bugs}{A}{Reporting Bugs}{151}
@appentry{Major Differences From The Bourne Shell}{B}{Major Differences From The Bourne Shell}{152}
@appsecentry{Implementation Differences From The SVR4.2 Shell}{B.1}{}{156}
@appentry{GNU Free Documentation License}{C}{GNU Free Documentation License}{158}
@appentry{Indexes}{D}{Indexes}{166}
@appsecentry{Index of Shell Builtin Commands}{D.1}{Builtin Index}{166}
@appsecentry{Index of Shell Reserved Words}{D.2}{Reserved Word Index}{167}
@appsecentry{Parameter and Variable Index}{D.3}{Variable Index}{168}
@appsecentry{Function Index}{D.4}{Function Index}{170}
@appsecentry{Concept Index}{D.5}{Concept Index}{172}
@numsecentry{A Programmable Completion Example}{8.8}{A Programmable Completion Example}{136}
@numchapentry{Using History Interactively}{9}{Using History Interactively}{139}
@numsecentry{Bash History Facilities}{9.1}{Bash History Facilities}{139}
@numsecentry{Bash History Builtins}{9.2}{Bash History Builtins}{139}
@numsecentry{History Expansion}{9.3}{History Interaction}{141}
@numsubsecentry{Event Designators}{9.3.1}{Event Designators}{142}
@numsubsecentry{Word Designators}{9.3.2}{Word Designators}{142}
@numsubsecentry{Modifiers}{9.3.3}{Modifiers}{143}
@numchapentry{Installing Bash}{10}{Installing Bash}{144}
@numsecentry{Basic Installation}{10.1}{Basic Installation}{144}
@numsecentry{Compilers and Options}{10.2}{Compilers and Options}{145}
@numsecentry{Compiling For Multiple Architectures}{10.3}{Compiling For Multiple Architectures}{145}
@numsecentry{Installation Names}{10.4}{Installation Names}{145}
@numsecentry{Specifying the System Type}{10.5}{Specifying the System Type}{145}
@numsecentry{Sharing Defaults}{10.6}{Sharing Defaults}{146}
@numsecentry{Operation Controls}{10.7}{Operation Controls}{146}
@numsecentry{Optional Features}{10.8}{Optional Features}{146}
@appentry{Reporting Bugs}{A}{Reporting Bugs}{152}
@appentry{Major Differences From The Bourne Shell}{B}{Major Differences From The Bourne Shell}{153}
@appsecentry{Implementation Differences From The SVR4.2 Shell}{B.1}{}{157}
@appentry{GNU Free Documentation License}{C}{GNU Free Documentation License}{159}
@appentry{Indexes}{D}{Indexes}{167}
@appsecentry{Index of Shell Builtin Commands}{D.1}{Builtin Index}{167}
@appsecentry{Index of Shell Reserved Words}{D.2}{Reserved Word Index}{168}
@appsecentry{Parameter and Variable Index}{D.3}{Variable Index}{169}
@appsecentry{Function Index}{D.4}{Function Index}{171}
@appsecentry{Concept Index}{D.5}{Concept Index}{173}
+16 -16
View File
@@ -3,22 +3,22 @@
\entry{TEXTDOMAINDIR}{7}{\code {TEXTDOMAINDIR}}
\entry{*}{20}{\code {*}}
\entry{$*}{20}{\code {$*}}
\entry{@}{20}{\code {@}}
\entry{$@}{20}{\code {$@}}
\entry{#}{20}{\code {#}}
\entry{$#}{20}{\code {$#}}
\entry{?}{20}{\code {?}}
\entry{$?}{20}{\code {$?}}
\entry{-}{20}{\code {-}}
\entry{$-}{20}{\code {$-}}
\entry{$}{20}{\code {$}}
\entry{$$}{20}{\code {$$}}
\entry{!}{20}{\code {!}}
\entry{$!}{20}{\code {$!}}
\entry{0}{20}{\code {0}}
\entry{$0}{20}{\code {$0}}
\entry{_}{20}{\code {_}}
\entry{$_}{20}{\code {$_}}
\entry{@}{21}{\code {@}}
\entry{$@}{21}{\code {$@}}
\entry{#}{21}{\code {#}}
\entry{$#}{21}{\code {$#}}
\entry{?}{21}{\code {?}}
\entry{$?}{21}{\code {$?}}
\entry{-}{21}{\code {-}}
\entry{$-}{21}{\code {$-}}
\entry{$}{21}{\code {$}}
\entry{$$}{21}{\code {$$}}
\entry{!}{21}{\code {!}}
\entry{$!}{21}{\code {$!}}
\entry{0}{21}{\code {0}}
\entry{$0}{21}{\code {$0}}
\entry{_}{21}{\code {_}}
\entry{$_}{21}{\code {$_}}
\entry{CDPATH}{71}{\code {CDPATH}}
\entry{HOME}{71}{\code {HOME}}
\entry{IFS}{71}{\code {IFS}}
+16 -16
View File
@@ -1,30 +1,30 @@
\initial {!}
\entry {\code {!}}{20}
\entry {\code {!}}{21}
\initial {#}
\entry {\code {#}}{20}
\entry {\code {#}}{21}
\initial {$}
\entry {\code {$}}{20}
\entry {\code {$!}}{20}
\entry {\code {$#}}{20}
\entry {\code {$$}}{20}
\entry {\code {$}}{21}
\entry {\code {$!}}{21}
\entry {\code {$#}}{21}
\entry {\code {$$}}{21}
\entry {\code {$*}}{20}
\entry {\code {$-}}{20}
\entry {\code {$?}}{20}
\entry {\code {$@}}{20}
\entry {\code {$_}}{20}
\entry {\code {$0}}{20}
\entry {\code {$-}}{21}
\entry {\code {$?}}{21}
\entry {\code {$@}}{21}
\entry {\code {$_}}{21}
\entry {\code {$0}}{21}
\initial {*}
\entry {\code {*}}{20}
\initial {-}
\entry {\code {-}}{20}
\entry {\code {-}}{21}
\initial {?}
\entry {\code {?}}{20}
\entry {\code {?}}{21}
\initial {@}
\entry {\code {@}}{20}
\entry {\code {@}}{21}
\initial {_}
\entry {\code {_}}{20}
\entry {\code {_}}{21}
\initial {0}
\entry {\code {0}}{20}
\entry {\code {0}}{21}
\initial {A}
\entry {\code {auto_resume}}{104}
\initial {B}
+1 -1
View File
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.22.3
%%CreationDate: Wed Feb 1 09:18:06 2017
%%CreationDate: Wed Mar 22 16:11:15 2017
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
+1 -1
View File
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.22.3
%%CreationDate: Wed Feb 1 09:18:06 2017
%%CreationDate: Wed Mar 22 16:11:15 2017
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%DocumentSuppliedResources: procset grops 1.22 3
+2 -2
View File
@@ -2,10 +2,10 @@
Copyright (C) 1988-2017 Free Software Foundation, Inc.
@end ignore
@set LASTCHANGE Mon Mar 13 11:48:21 EDT 2017
@set LASTCHANGE Wed Mar 22 16:10:53 EDT 2017
@set EDITION 4.4
@set VERSION 4.4
@set UPDATED 13 March 2017
@set UPDATED 22 March 2017
@set UPDATED-MONTH March 2017
+1 -1
View File
@@ -2874,7 +2874,7 @@ execute_for_command (for_command)
{
SHELL_VAR *new_value;
new_value = bind_variable (identifier, value_cell(old_value), 0);
new_value = bind_variable (identifier, value_cell (old_value), 0);
new_value->attributes = old_value->attributes;
dispose_variable (old_value);
}
+7 -7
View File
@@ -1,6 +1,6 @@
/* findcmd.c -- Functions to search for commands by name. */
/* Copyright (C) 1997-2015 Free Software Foundation, Inc.
/* Copyright (C) 1997-2017 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -337,7 +337,7 @@ search_for_command (pathname, flags)
const char *pathname;
int flags;
{
char *hashed_file, *command, *pathlist;
char *hashed_file, *command, *path_list;
int temp_path, st;
SHELL_VAR *path;
@@ -378,13 +378,13 @@ search_for_command (pathname, flags)
else
{
if (flags & CMDSRCH_STDPATH)
pathlist = conf_standard_path ();
path_list = conf_standard_path ();
else if (temp_path || path)
pathlist = value_cell (path);
path_list = value_cell (path);
else
pathlist = 0;
path_list = 0;
command = find_user_command_in_path (pathname, pathlist, FS_EXEC_PREFERRED|FS_NODIRS);
command = find_user_command_in_path (pathname, path_list, FS_EXEC_PREFERRED|FS_NODIRS);
if (command && hashing_enabled && temp_path == 0 && (flags & CMDSRCH_HASH))
{
@@ -402,7 +402,7 @@ search_for_command (pathname, flags)
}
if (flags & CMDSRCH_STDPATH)
free (pathlist);
free (path_list);
}
return (command);
+23 -4
View File
@@ -2684,6 +2684,10 @@ yylex ()
which allow ESAC to be the next one read. */
static int esacs_needed_count;
/* When non-zero, we can read IN as an acceptable token, regardless of how
many newlines we read. */
static int expecting_in_token;
static void
push_heredoc (r)
REDIRECT *r;
@@ -2934,12 +2938,9 @@ static int
special_case_tokens (tokstr)
char *tokstr;
{
/* Posix grammar rule 6 */
if ((last_read_token == WORD) &&
#if defined (SELECT_COMMAND)
((token_before_that == FOR) || (token_before_that == CASE) || (token_before_that == SELECT)) &&
#else
((token_before_that == FOR) || (token_before_that == CASE)) &&
#endif
(tokstr[0] == 'i' && tokstr[1] == 'n' && tokstr[2] == 0))
{
if (token_before_that == CASE)
@@ -2947,6 +2948,23 @@ special_case_tokens (tokstr)
parser_state |= PST_CASEPAT;
esacs_needed_count++;
}
if (expecting_in_token)
expecting_in_token--;
return (IN);
}
/* bash-5.0: leaving above code intact for now, but it should eventually be
removed in favor of this clause. */
/* Posix grammar rule 6 */
if (expecting_in_token && (last_read_token == WORD || last_read_token == '\n') &&
(tokstr[0] == 'i' && tokstr[1] == 'n' && tokstr[2] == 0))
{
if (parser_state & PST_CASESTMT)
{
parser_state |= PST_CASEPAT;
esacs_needed_count++;
}
expecting_in_token--;
return (IN);
}
@@ -5205,6 +5223,7 @@ got_token:
if (word_top < MAX_CASE_NEST)
word_top++;
word_lineno[word_top] = line_number;
expecting_in_token++;
break;
}
+82 -30
View File
@@ -4,7 +4,7 @@
/* ``Have a little faith, there's magic in the night. You ain't a
beauty, but, hey, you're alright.'' */
/* Copyright (C) 1987-2016 Free Software Foundation, Inc.
/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -2539,6 +2539,8 @@ ifs_firstchar (lenp)
expansion [of $*] appears within a double quoted string, it expands
to a single field with the value of each parameter separated by the
first character of the IFS variable, or by a <space> if IFS is unset." */
/* Posix interpretation 888 changes this when IFS is null by specifying
that when unquoted, this expands to separate arguments */
char *
string_list_dollar_star (list)
WORD_LIST *list;
@@ -2688,6 +2690,10 @@ string_list_pos_params (pchar, list, quoted)
word_list_remove_quoted_nulls (tlist);
ret = string_list (tlist);
}
else if (pchar == '*' && quoted == 0 && ifs_is_null) /* XXX */
{
ret = string_list_dollar_at (list, quoted, 0); /* Posix interp 888 */
}
else if (pchar == '*')
{
/* Even when unquoted, string_list_dollar_star does the right thing
@@ -2704,6 +2710,10 @@ string_list_pos_params (pchar, list, quoted)
the elements of $@ are separated by the first character of $IFS for
later splitting. */
ret = string_list_dollar_at (list, quoted, 0);
else if (pchar == '@' && quoted == 0 && ifs_is_null) /* XXX */
{
ret = string_list_dollar_at (list, quoted, 0); /* Posix interp 888 */
}
else if (pchar == '@')
ret = string_list_dollar_star (list);
else
@@ -3856,11 +3866,9 @@ expand_string_for_rhs (string, quoted, op, dollar_at_p, expanded_p)
1. This may need additional changes depending on whether or not this is
on the RHS of an assignment statement. */
/* The updated treatment of $* is the result of Posix interp 888 */
#if 0
expand_no_split_dollar_star = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || op == '=' || ifs_is_null == 0;
#else
expand_no_split_dollar_star = 1;
#endif
/* This was further clarified on the austin-group list in March, 2017 and
in Posix bug 1129 */
expand_no_split_dollar_star = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || op == '=' || ifs_is_null == 0; /* XXX - was 1 */
td.flags = W_NOSPLIT2; /* no splitting, remove "" and '' */
td.word = string;
tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p);
@@ -5142,7 +5150,11 @@ parameter_brace_remove_pattern (varname, value, ind, patstr, rtype, quoted, flag
#endif
case VT_POSPARMS:
temp1 = parameter_list_remove_pattern (varname[0], pattern, patspec, quoted);
if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
if (temp1 && quoted == 0 && ifs_is_null)
{
/* Posix interp 888 */
}
else if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
{
val = quote_escapes (temp1);
free (temp1);
@@ -5420,7 +5432,11 @@ parameter_brace_transform (varname, value, ind, xform, rtype, quoted, flags)
#endif
case VT_POSPARMS:
temp1 = parameter_list_transform (xc, varname[0], quoted);
if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
if (temp1 && quoted == 0 && ifs_is_null)
{
/* Posix interp 888 */
}
else if (temp1 && ((quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)) == 0))
{
val = quote_escapes (temp1);
free (temp1);
@@ -7520,7 +7536,11 @@ parameter_brace_substring (varname, value, ind, substr, quoted, flags)
break;
case VT_POSPARMS:
tt = pos_params (varname, e1, e2, quoted);
if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0)
if (tt && quoted == 0 && ifs_is_null)
{
temp = tt; /* Posix interp 888 */
}
else if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) == 0)
{
temp = tt ? quote_escapes (tt) : (char *)NULL;
FREE (tt);
@@ -7734,7 +7754,6 @@ pos_params_pat_subst (string, pat, rep, mflags)
qflags = (mflags & MATCH_QUOTED) == MATCH_QUOTED ? Q_DOUBLE_QUOTES : 0;
ret = string_list_pos_params (pchar, save, qflags);
dispose_words (save);
return (ret);
@@ -7872,7 +7891,11 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags)
break;
case VT_POSPARMS:
temp = pos_params_pat_subst (val, p, rep, mflags);
if (temp && (mflags & MATCH_QUOTED) == 0)
if (temp && quoted == 0 && ifs_is_null)
{
/* Posix interp 888 */
}
else if (temp && (mflags & MATCH_QUOTED) == 0)
{
tt = quote_escapes (temp);
free (temp);
@@ -8021,7 +8044,11 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, flags)
case VT_POSPARMS:
temp = pos_params_modcase (val, pat, modop, mflags);
if (temp && (mflags & MATCH_QUOTED) == 0)
if (temp && quoted == 0 && ifs_is_null)
{
/* Posix interp 888 */
}
else if (temp && (mflags & MATCH_QUOTED) == 0)
{
tt = quote_escapes (temp);
free (temp);
@@ -8479,14 +8506,14 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
if (want_substring)
{
temp1 = parameter_brace_substring (name, temp, ind, value, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
FREE (name);
FREE (value);
FREE (temp);
if (temp1 == &expand_param_error)
return (&expand_wdesc_error);
else if (temp1 == &expand_param_fatal)
return (&expand_wdesc_fatal);
if (temp1 == &expand_param_error || temp1 == &expand_param_fatal)
{
FREE (name);
return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal);
}
ret = alloc_word_desc ();
ret->word = temp1;
@@ -8498,19 +8525,24 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
(quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) &&
QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
/* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */
else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null)
ret->flags |= W_SPLITSPACE; /* Posix interp 888 */
FREE (name);
return ret;
}
else if (want_patsub)
{
temp1 = parameter_brace_patsub (name, temp, ind, value, quoted, pflags, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
FREE (name);
FREE (value);
FREE (temp);
if (temp1 == &expand_param_error)
return (&expand_wdesc_error);
else if (temp1 == &expand_param_fatal)
return (&expand_wdesc_fatal);
if (temp1 == &expand_param_error || temp1 == &expand_param_fatal)
{
FREE (name);
return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal);
}
ret = alloc_word_desc ();
ret->word = temp1;
@@ -8518,20 +8550,25 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
(quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) &&
QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
/* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */
else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null)
ret->flags |= W_SPLITSPACE; /* Posix interp 888 */
FREE (name);
return ret;
}
#if defined (CASEMOD_EXPANSIONS)
else if (want_casemod)
{
temp1 = parameter_brace_casemod (name, temp, ind, modspec, value, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
FREE (name);
FREE (value);
FREE (temp);
if (temp1 == &expand_param_error)
return (&expand_wdesc_error);
else if (temp1 == &expand_param_fatal)
return (&expand_wdesc_fatal);
if (temp1 == &expand_param_error || temp1 == &expand_param_fatal)
{
FREE (name);
return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal);
}
ret = alloc_word_desc ();
ret->word = temp1;
@@ -8539,6 +8576,11 @@ parameter_brace_expand (string, indexp, quoted, pflags, quoted_dollar_atp, conta
(quoted_dollar_atp == 0 || *quoted_dollar_atp == 0) &&
QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
/* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */
else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null)
ret->flags |= W_SPLITSPACE; /* Posix interp 888 */
FREE (name);
return ret;
}
#endif
@@ -8566,10 +8608,11 @@ bad_substitution:
temp1 = parameter_brace_transform (name, temp, ind, value, c, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
free (temp);
free (value);
free (name);
if (temp1 == &expand_param_error || temp1 == &expand_param_fatal)
{
last_command_exit_value = EXECUTION_FAILURE;
free (name);
last_command_exit_value = EXECUTION_FAILURE;
report_error (_("%s: bad substitution"), string ? string : "??");
return (temp1 == &expand_param_error ? &expand_wdesc_error : &expand_wdesc_fatal);
}
@@ -8578,6 +8621,11 @@ bad_substitution:
ret->word = temp1;
if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
/* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */
else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null)
ret->flags |= W_SPLITSPACE; /* Posix interp 888 */
free (name);
return ret;
case '#': /* ${param#[#]pattern} */
@@ -8590,12 +8638,16 @@ bad_substitution:
temp1 = parameter_brace_remove_pattern (name, temp, ind, value, c, quoted, (tflag & W_ARRAYIND) ? AV_USEIND : 0);
free (temp);
free (value);
free (name);
ret = alloc_word_desc ();
ret->word = temp1;
if (temp1 && QUOTED_NULL (temp1) && (quoted & (Q_HERE_DOCUMENT|Q_DOUBLE_QUOTES)))
ret->flags |= W_QUOTED|W_HASQUOTEDNULL;
/* Special handling for $* when unquoted and $IFS is null. Posix interp 888 */
else if (temp1 && (name[0] == '*' && name[1] == 0) && quoted == 0 && ifs_is_null)
ret->flags |= W_SPLITSPACE; /* Posix interp 888 */
free (name);
return ret;
case '-':
+3 -1
View File
@@ -1,6 +1,6 @@
/* subst.h -- Names of externally visible functions in subst.c. */
/* Copyright (C) 1993-2015 Free Software Foundation, Inc.
/* Copyright (C) 1993-2017 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -52,6 +52,8 @@
#define ASS_FORCE 0x0020 /* force assignment even to readonly variable */
#define ASS_CHKLOCAL 0x0040 /* check local variable before assignment */
#define ASS_NOEXPAND 0x0080 /* don't expand associative array subscripts */
#define ASS_NOEVAL 0x0100 /* don't evaluate value as expression */
#define ASS_NOLONGJMP 0x0200 /* don't longjmp on fatal assignment error */
/* Flags for the string extraction functions. */
#define SX_NOALLOC 0x0001 /* just skip; don't return substring */
+1 -1
View File
@@ -1,4 +1,4 @@
BUILD_DIR=/usr/local/build/chet/bash/bash-current
BUILD_DIR=/usr/local/build/bash/bash-current
THIS_SH=$BUILD_DIR/bash
PATH=$PATH:$BUILD_DIR
+1
View File
@@ -38,3 +38,4 @@ unalias foo bar baz
${THIS_SH} ./alias1.sub
${THIS_SH} ./alias2.sub
${THIS_SH} ./alias3.sub
+12
View File
@@ -0,0 +1,12 @@
#!/bin/bash
shopt -s expand_aliases
alias foo='oneword'
foo_word='foo'
#
# Fails silently to match 'foo':
#
case "$foo_word"
in
foo) ;;
*) echo bad 1;;
esac
+12 -4
View File
@@ -557,8 +557,12 @@ def ghi
jkl
----
IFS= ${var-$*}
abcdef ghijkl
abcdef ghijkl
abc
def ghi
jkl
abc
def ghi
jkl
----
IFS= ${var=$*}
abcdef ghijkl
@@ -567,5 +571,9 @@ abcdef ghijkl
var=abcdef ghijkl
----
IFS= ${var+$*}
abcdef ghijkl
abcdef ghijkl
abc
def ghi
jkl
abc
def ghi
jkl
+8 -4
View File
@@ -179,7 +179,7 @@ a b
<a><b><c><d>
<a><b><c><d>
<a><b><c d>
<abc d>
<a><b><c d>
<a><b>
<a:b>
<a><b>
@@ -480,8 +480,10 @@ argv[2] = <b>
argv[3] = <c>
argv[4] = <d>
argv[1] = <a b c d>
<1>
<abcdef ghijkl>
<3>
<abc>
<def ghi>
<jkl>
<3>
<abc>
<def ghi>
@@ -489,7 +491,9 @@ argv[1] = <a b c d>
<abc>
<def ghi>
<jkl>
<abcdef ghijkl>
<abc>
<def ghi>
<jkl>
<abcdef ghijkl>
<abc>
<def ghi>
+3 -1
View File
@@ -291,7 +291,9 @@ var=abc:def ghi:jkl
abcdef ghijkl
abcdef ghijkl
abcdef ghijkl
abcdef ghijkl
abc
def ghi
jkl
abcdef ghijkl
abcdef ghijkl
abcdef ghijkl
+30 -15
View File
@@ -2662,8 +2662,11 @@ make_variable_value (var, value, flags)
then do expression evaluation on it and store the result. The
functions in expr.c (evalexp()) and bind_int_variable() are responsible
for turning off the integer flag if they don't want further
evaluation done. */
if (integer_p (var))
evaluation done. Callers that find it inconvenient to do this can set
the ASS_NOEVAL flag. For the special case of arithmetic expression
evaluation, the caller can set ASS_NOLONGJMP to avoid jumping out to
top_level. */
if ((flags & ASS_NOEVAL) == 0 && integer_p (var))
{
if (flags & ASS_APPEND)
{
@@ -2671,15 +2674,25 @@ make_variable_value (var, value, flags)
lval = evalexp (oval, 0, &expok); /* ksh93 seems to do this */
if (expok == 0)
{
top_level_cleanup ();
jump_to_top_level (DISCARD);
if (flags & ASS_NOLONGJMP)
goto make_value;
else
{
top_level_cleanup ();
jump_to_top_level (DISCARD);
}
}
}
rval = evalexp (value, 0, &expok);
if (expok == 0)
{
top_level_cleanup ();
jump_to_top_level (DISCARD);
if (flags & ASS_NOLONGJMP)
goto make_value;
else
{
top_level_cleanup ();
jump_to_top_level (DISCARD);
}
}
/* This can be fooled if the variable's value changes while evaluating
`rval'. We can change it if we move the evaluation of lval to here. */
@@ -2688,7 +2701,7 @@ make_variable_value (var, value, flags)
retval = itos (rval);
}
#if defined (CASEMOD_ATTRS)
else if (capcase_p (var) || uppercase_p (var) || lowercase_p (var))
else if ((flags & ASS_NOEVAL) == 0 && (capcase_p (var) || uppercase_p (var) || lowercase_p (var)))
{
if (flags & ASS_APPEND)
{
@@ -2717,6 +2730,7 @@ make_variable_value (var, value, flags)
#endif /* CASEMOD_ATTRS */
else if (value)
{
make_value:
if (flags & ASS_APPEND)
{
oval = get_variable_value (var);
@@ -2789,7 +2803,8 @@ optimized_assignment (entry, value, aflags)
}
/* Bind a variable NAME to VALUE in the HASH_TABLE TABLE, which may be the
temporary environment (but usually is not). */
temporary environment (but usually is not). HFLAGS controls how NAME
is looked up in TABLE; AFLAGS controls how VALUE is assigned */
static SHELL_VAR *
bind_variable_internal (name, value, table, hflags, aflags)
const char *name;
@@ -2842,21 +2857,21 @@ bind_variable_internal (name, value, table, hflags, aflags)
}
free (tname);
/* XXX - should it be aflags? */
entry = assign_array_element (newval, make_variable_value (entry, value, 0), aflags|ASS_NAMEREF);
entry = assign_array_element (newval, make_variable_value (entry, value, aflags), aflags|ASS_NAMEREF);
if (entry == 0)
return entry;
}
else
#endif
{
entry = make_new_variable (newval, table);
var_setvalue (entry, make_variable_value (entry, value, 0));
}
{
entry = make_new_variable (newval, table);
var_setvalue (entry, make_variable_value (entry, value, aflags));
}
}
else if (entry == 0)
{
entry = make_new_variable (name, table);
var_setvalue (entry, make_variable_value (entry, value, 0)); /* XXX */
var_setvalue (entry, make_variable_value (entry, value, aflags)); /* XXX */
}
else if (entry->assign_func) /* array vars have assign functions now */
{
@@ -4179,7 +4194,7 @@ push_temp_var (data)
binding_table = shell_variables->table = hash_create (TEMPENV_HASH_BUCKETS);
}
v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE);
v = bind_variable_internal (var->name, value_cell (var), binding_table, 0, ASS_FORCE|ASS_NOLONGJMP);
/* XXX - should we set the context here? It shouldn't matter because of how
assign_in_env works, but might want to check. */