fix history expansion to not perform quick substitution on a new line that's part of a quoted string; save the value of $_ around prompt string decoding

This commit is contained in:
Chet Ramey
2023-12-19 09:56:34 -05:00
parent 9d51df7546
commit aa2d23cfac
24 changed files with 1973 additions and 1779 deletions
+31
View File
@@ -8172,3 +8172,34 @@ print_cmd.c
- make_command_string_internal: when printing a coproc, print the
coproc name only if the coproc command is not a simple command.
Report from Albert Akchurin <ackbeat@gmail.com>
12/14
-----
doc/bash.1,doc/bashref.texi
- bind: clarify meaning of `re-read' as being individual arguments
to `bind'.
Report from Dan Jacobson <jidanni@jidanni.org>
- history expansion: add that the quick substitution character is
only active when it's the first character on the line.
Suggested by Dale R. Worley <worley@alum.mit.edu>
lib/readline/histexpand.c
- history_expand: if history_quoting_state is "'", don't try to
interpret the quick substitution syntax at the start of the string.
Report from Sundeep Agarwal <learnbyexample.net@gmail.com>
execute_cmd.c,execute_cmd.h
- save_lastarg: new function, returns saved value of $_ in allocated
memory
parse.y
- execute_variable_command: instead of inline code, call save_lastarg
mailcheck.c
- check_mail: instead of inline code, call save_lastarg
- check_mail: instead of calling bind_variable, use bind_lastarg
parse.y
- decode_prompt_string: use save_lastarg() and bind_lastarg() to preserve
the value of $_ across prompt string decoding.
Patch from Grisha Levit <grishalevit@gmail.com>
+1366 -1354
View File
File diff suppressed because it is too large Load Diff
+21 -3
View File
@@ -5,14 +5,14 @@
.\" Case Western Reserve University
.\" chet.ramey@case.edu
.\"
.\" Last Change: Mon Nov 6 10:19:40 EST 2023
.\" Last Change: Thu Dec 14 11:05:39 EST 2023
.\"
.\" bash_builtins, strip all but Built-Ins section
.\" avoid a warning about an undefined register
.\" .if !rzY .nr zY 0
.if \n(zZ=1 .ig zZ
.if \n(zY=1 .ig zY
.TH BASH 1 "2023 November 6" "GNU Bash 5.3"
.TH BASH 1 "2023 December 14" "GNU Bash 5.3"
.\"
.\" There's some problem with having a `@'
.\" in a tagged paragraph with the BSD man macros.
@@ -2771,7 +2771,8 @@ the character which signals the start of a history
expansion, normally `\fB!\fP'.
The second character is the \fIquick substitution\fP
character, which is used as shorthand for re-running the previous
command entered, substituting one string for another in the command.
command entered, substituting one string for another in the command,
when it appears as the first character on the line.
The default is `\fB\(ha\fP'.
The optional third character is the character
which indicates that the remainder of the line is a comment when found
@@ -7584,6 +7585,17 @@ following the history expansion character, even if it is unquoted:
space, tab, newline, carriage return, \fB=\fP,
and the other shell metacharacters defined above.
.PP
There is a special abbreviation for substitution, active when the
\fIquick substitution\fP character (described above under
.BR histchars )
is the first character on the line.
It selects the previous history entry, using an event designator
equivalent to \fB!!\fP,
and substitutes one string for another in that line.
It is described below under \fBEvent Designators\fP.
This is the only history expansion that does not begin with the history
expansion character.
.PP
Several shell options settable with the
.B shopt
builtin may be used to tailor the behavior of history expansion.
@@ -7960,6 +7972,12 @@ initialization file such as
.IR .inputrc ,
but each binding or command must be passed as a separate argument;
e.g., '"\eC\-x\eC\-r": re\-read\-init\-file'.
In the following descriptions, output available to be re-read is formatted
as commands that would appear in a
.B readline
initialization file or that would be supplied as individual arguments to a
.B bind
command.
Options, if supplied, have the following meanings:
.RS
.PD 0
+40 -16
View File
@@ -3,7 +3,7 @@
</HEAD>
<BODY><TABLE WIDTH=100%>
<TR>
<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2023 October 6<TH ALIGN=RIGHT width=33%>BASH(1)
<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2023 December 14<TH ALIGN=RIGHT width=33%>BASH(1)
</TR>
</TABLE>
<BR><A HREF="#index">Index</A>
@@ -187,7 +187,9 @@ signals the end of options and disables further option processing.
Any arguments after the
<B>--</B>
are treated as filenames and arguments. An argument of
are treated as a shell script filename (see below)
and arguments passed to that script.
An argument of
<B>-</B>
is equivalent to <B>--</B>.
@@ -330,7 +332,7 @@ nor the
<B>-s</B>
option has been supplied, the first argument is assumed to
be the name of a file containing shell commands.
be the name of a file containing shell commands (a <I>shell script</I>).
If
<B>bash</B>
@@ -2889,7 +2891,7 @@ Control how the results of pathname expansion are sorted.
The value of this variable specifies the sort criteria and sort order for
the results of pathname expansion.
If this variable is unset or set to the null string, pathname expansion
uses the historial behavior of sorting by name.
uses the historical behavior of sorting by name.
If set, a valid value begins with an optional <I>+</I>, which is ignored,
or <I>-</I>, which reverses the sort order from ascending to descending,
followed by a sort specifier.
@@ -3490,7 +3492,8 @@ the character which signals the start of a history
expansion, normally `<B>!</B>'.
The second character is the <I>quick substitution</I>
character, which is used as shorthand for re-running the previous
command entered, substituting one string for another in the command.
command entered, substituting one string for another in the command,
when it appears as the first character on the line.
The default is `<B>ha</B>'.
The optional third character is the character
which indicates that the remainder of the line is a comment when found
@@ -9576,6 +9579,19 @@ space, tab, newline, carriage return, <B>=</B>,
and the other shell metacharacters defined above.
<P>
There is a special abbreviation for substitution, active when the
<I>quick substitution</I> character (described above under
<B>histchars</B>)
is the first character on the line.
It selects the previous history entry, using an event designator
equivalent to <B>!!</B>,
and substitutes one string for another in that line.
It is described below under <B>Event Designators</B>.
This is the only history expansion that does not begin with the history
expansion character.
<P>
Several shell options settable with the
<B>shopt</B>
@@ -10056,6 +10072,14 @@ initialization file such as
but each binding or command must be passed as a separate argument;
e.g., '&quot;\C-x\C-r&quot;: re-read-init-file'.
In the following descriptions, output available to be re-read is formatted
as commands that would appear in a
<B>readline</B>
initialization file or that would be supplied as individual arguments to a
<B>bind</B>
command.
Options, if supplied, have the following meanings:
<DL COMPACT><DT><DD>
@@ -11124,8 +11148,10 @@ from shared object
on systems that support dynamic loading.
<B>Bash</B> will use the value of the <B>BASH_LOADABLES_PATH</B> variable as a
colon-separated list of directories in which to search for <I>filename</I>.
The default is system-dependent.
colon-separated list of directories in which to search for <I>filename</I>,
if <I>filename</I> does not contain a slash.
The default is system-dependent,
and may include &quot;.&quot; to force a search of the current directory.
The
<B>-d</B>
@@ -13682,16 +13708,14 @@ If the string is not translated, this has no effect.
<DT><B>nullglob</B>
<DD>
If set,
<B>bash</B>
allows patterns which match no
files (see
If set, pathname expansion patterns which match no files
(see
<B>Pathname Expansion</B>
above)
to expand to a null string, rather than themselves.
expand to nothing and are removed,
rather than expanding to themselves.
<DT><B>patsub_replacement</B>
<DD>
@@ -15161,7 +15185,7 @@ There may be only one active coprocess at a time.
<HR>
<TABLE WIDTH=100%>
<TR>
<TH ALIGN=LEFT width=33%>GNU Bash 5.3<TH ALIGN=CENTER width=33%>2023 October 6<TH ALIGN=RIGHT width=33%>BASH(1)
<TH ALIGN=LEFT width=33%>GNU Bash 5.3<TH ALIGN=CENTER width=33%>2023 December 14<TH ALIGN=RIGHT width=33%>BASH(1)
</TR>
</TABLE>
<HR>
@@ -15267,7 +15291,7 @@ There may be only one active coprocess at a time.
<DT><A HREF="#lbDI">BUGS</A><DD>
</DL>
<HR>
This document was created by man2html from /usr/local/src/bash/bash-20231007/doc/bash.1.<BR>
Time: 11 October 2023 10:25:11 EDT
This document was created by man2html from /usr/local/src/bash/bash-20231212/doc/bash.1.<BR>
Time: 14 December 2023 16:39:25 EST
</BODY>
</HTML>
+173 -163
View File
@@ -1,9 +1,9 @@
This is bash.info, produced by makeinfo version 6.8 from bashref.texi.
This text is a brief description of the features that are present in the
Bash shell (version 5.3, 6 November 2023).
Bash shell (version 5.3, 14 December 2023).
This is Edition 5.3, last updated 6 November 2023, of 'The GNU Bash
This is Edition 5.3, last updated 14 December 2023, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.3.
Copyright (C) 1988-2023 Free Software Foundation, Inc.
@@ -26,10 +26,10 @@ Bash Features
*************
This text is a brief description of the features that are present in the
Bash shell (version 5.3, 6 November 2023). The Bash home page is
Bash shell (version 5.3, 14 December 2023). The Bash home page is
<http://www.gnu.org/software/bash/>.
This is Edition 5.3, last updated 6 November 2023, of 'The GNU Bash
This is Edition 5.3, last updated 14 December 2023, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.3.
Bash contains features that appear in other popular shells, and some
@@ -3805,24 +3805,25 @@ standard.
'-p'
Display Readline function names and bindings in such a way
that they can be used as input or in a Readline initialization
file.
that they can be used as an argument to a subsequent 'bind'
command or in a Readline initialization file.
'-P'
List current Readline function names and bindings.
'-v'
Display Readline variable names and values in such a way that
they can be used as input or in a Readline initialization
file.
they can be used as an argument to a subsequent 'bind' command
or in a Readline initialization file.
'-V'
List current Readline variable names and values.
'-s'
Display Readline key sequences bound to macros and the strings
they output in such a way that they can be used as input or in
a Readline initialization file.
they output in such a way that they can be used as an argument
to a subsequent 'bind' command or in a Readline initialization
file.
'-S'
Display Readline key sequences bound to macros and the strings
@@ -3865,7 +3866,8 @@ standard.
'-X'
List all key sequences bound to shell commands and the
associated commands in a format that can be reused as input.
associated commands in a format that can be reused as an
argument to a subsequent 'bind' command.
The return status is zero unless an invalid option is supplied or
an error occurs.
@@ -5735,7 +5737,7 @@ Variables::).
first character is the "history expansion" character, that is, the
character which signifies the start of a history expansion,
normally '!'. The second character is the character which
signifies 'quick substitution' when seen as the first character on
signifies "quick substitution" when seen as the first character on
a line, normally '^'. The optional third character is the
character which indicates that the remainder of the line is a
comment when found as the first character of a word, usually '#'.
@@ -10479,6 +10481,14 @@ history expansion character, but the history expansion character is also
treated as quoted if it immediately precedes the closing double quote in
a double-quoted string.
There is a special abbreviation for substitution, active when the
QUICK SUBSTITUTION character (default '^') is the first character on the
line. It selects the previous history list entry, using an event
designator equivalent to '!!', and substitutes one string for another in
that line. It is described below (*note Event Designators::). This is
the only history expansion that does not begin with the history
expansion character.
Several shell options settable with the 'shopt' builtin (*note The
Shopt Builtin::) may be used to tailor the behavior of history
expansion. If the 'histverify' shell option is enabled, and Readline is
@@ -12138,11 +12148,11 @@ D.1 Index of Shell Builtin Commands
* bind: Bash Builtins. (line 21)
* break: Bourne Shell Builtins.
(line 37)
* builtin: Bash Builtins. (line 117)
* caller: Bash Builtins. (line 126)
* builtin: Bash Builtins. (line 119)
* caller: Bash Builtins. (line 128)
* cd: Bourne Shell Builtins.
(line 45)
* command: Bash Builtins. (line 143)
* command: Bash Builtins. (line 145)
* compgen: Programmable Completion Builtins.
(line 12)
* complete: Programmable Completion Builtins.
@@ -12151,13 +12161,13 @@ D.1 Index of Shell Builtin Commands
(line 248)
* continue: Bourne Shell Builtins.
(line 90)
* declare: Bash Builtins. (line 163)
* declare: Bash Builtins. (line 165)
* dirs: Directory Stack Builtins.
(line 7)
* disown: Job Control Builtins.
(line 104)
* echo: Bash Builtins. (line 266)
* enable: Bash Builtins. (line 315)
* echo: Bash Builtins. (line 268)
* enable: Bash Builtins. (line 317)
* eval: Bourne Shell Builtins.
(line 99)
* exec: Bourne Shell Builtins.
@@ -12176,26 +12186,26 @@ D.1 Index of Shell Builtin Commands
(line 153)
* hash: Bourne Shell Builtins.
(line 197)
* help: Bash Builtins. (line 353)
* help: Bash Builtins. (line 355)
* history: Bash History Builtins.
(line 46)
* jobs: Job Control Builtins.
(line 27)
* kill: Job Control Builtins.
(line 58)
* let: Bash Builtins. (line 372)
* local: Bash Builtins. (line 380)
* logout: Bash Builtins. (line 397)
* mapfile: Bash Builtins. (line 402)
* let: Bash Builtins. (line 374)
* local: Bash Builtins. (line 382)
* logout: Bash Builtins. (line 399)
* mapfile: Bash Builtins. (line 404)
* popd: Directory Stack Builtins.
(line 35)
* printf: Bash Builtins. (line 448)
* printf: Bash Builtins. (line 450)
* pushd: Directory Stack Builtins.
(line 69)
* pwd: Bourne Shell Builtins.
(line 222)
* read: Bash Builtins. (line 516)
* readarray: Bash Builtins. (line 619)
* read: Bash Builtins. (line 518)
* readarray: Bash Builtins. (line 621)
* readonly: Bourne Shell Builtins.
(line 232)
* return: Bourne Shell Builtins.
@@ -12204,7 +12214,7 @@ D.1 Index of Shell Builtin Commands
* shift: Bourne Shell Builtins.
(line 272)
* shopt: The Shopt Builtin. (line 9)
* source: Bash Builtins. (line 628)
* source: Bash Builtins. (line 630)
* suspend: Job Control Builtins.
(line 116)
* test: Bourne Shell Builtins.
@@ -12215,12 +12225,12 @@ D.1 Index of Shell Builtin Commands
(line 393)
* true: Bourne Shell Builtins.
(line 455)
* type: Bash Builtins. (line 633)
* typeset: Bash Builtins. (line 671)
* ulimit: Bash Builtins. (line 677)
* type: Bash Builtins. (line 635)
* typeset: Bash Builtins. (line 673)
* ulimit: Bash Builtins. (line 679)
* umask: Bourne Shell Builtins.
(line 460)
* unalias: Bash Builtins. (line 783)
* unalias: Bash Builtins. (line 785)
* unset: Bourne Shell Builtins.
(line 478)
* wait: Job Control Builtins.
@@ -12898,138 +12908,138 @@ D.5 Concept Index

Tag Table:
Node: Top892
Node: Introduction2807
Node: What is Bash?3020
Node: What is a shell?4131
Node: Definitions6666
Node: Basic Shell Features9614
Node: Shell Syntax10830
Node: Shell Operation11853
Node: Quoting13143
Node: Escape Character14444
Node: Single Quotes14926
Node: Double Quotes15271
Node: ANSI-C Quoting16546
Node: Locale Translation17855
Node: Creating Internationalized Scripts19163
Node: Comments23277
Node: Shell Commands23892
Node: Reserved Words24827
Node: Simple Commands25580
Node: Pipelines26231
Node: Lists29214
Node: Compound Commands31006
Node: Looping Constructs32015
Node: Conditional Constructs34507
Node: Command Grouping48992
Node: Coprocesses50467
Node: GNU Parallel53127
Node: Shell Functions54041
Node: Shell Parameters61923
Node: Positional Parameters66308
Node: Special Parameters67207
Node: Shell Expansions70418
Node: Brace Expansion72503
Node: Tilde Expansion75234
Node: Shell Parameter Expansion77852
Node: Command Substitution96442
Node: Arithmetic Expansion99903
Node: Process Substitution100868
Node: Word Splitting101985
Node: Filename Expansion104030
Node: Pattern Matching106960
Node: Quote Removal111959
Node: Redirections112251
Node: Executing Commands121942
Node: Simple Command Expansion122609
Node: Command Search and Execution124716
Node: Command Execution Environment127100
Node: Environment130132
Node: Exit Status131792
Node: Signals133573
Node: Shell Scripts137019
Node: Shell Builtin Commands140043
Node: Bourne Shell Builtins142078
Node: Bash Builtins165467
Node: Modifying Shell Behavior198516
Node: The Set Builtin198858
Node: The Shopt Builtin209829
Node: Special Builtins226021
Node: Shell Variables227010
Node: Bourne Shell Variables227444
Node: Bash Variables229545
Node: Bash Features264611
Node: Invoking Bash265621
Node: Bash Startup Files271752
Node: Interactive Shells276880
Node: What is an Interactive Shell?277288
Node: Is this Shell Interactive?277934
Node: Interactive Shell Behavior278746
Node: Bash Conditional Expressions282372
Node: Shell Arithmetic287282
Node: Aliases290240
Node: Arrays293131
Node: The Directory Stack299762
Node: Directory Stack Builtins300543
Node: Controlling the Prompt304800
Node: The Restricted Shell307762
Node: Bash POSIX Mode310369
Node: Shell Compatibility Mode327011
Node: Job Control335256
Node: Job Control Basics335713
Node: Job Control Builtins340712
Node: Job Control Variables346504
Node: Command Line Editing347657
Node: Introduction and Notation349325
Node: Readline Interaction350945
Node: Readline Bare Essentials352133
Node: Readline Movement Commands353919
Node: Readline Killing Commands354876
Node: Readline Arguments356794
Node: Searching357835
Node: Readline Init File360018
Node: Readline Init File Syntax361276
Node: Conditional Init Constructs385298
Node: Sample Init File389491
Node: Bindable Readline Commands392612
Node: Commands For Moving393813
Node: Commands For History395861
Node: Commands For Text400852
Node: Commands For Killing404827
Node: Numeric Arguments407528
Node: Commands For Completion408664
Node: Keyboard Macros412852
Node: Miscellaneous Commands413537
Node: Readline vi Mode419903
Node: Programmable Completion420807
Node: Programmable Completion Builtins428584
Node: A Programmable Completion Example439701
Node: Using History Interactively444946
Node: Bash History Facilities445627
Node: Bash History Builtins448635
Node: History Interaction453723
Node: Event Designators457533
Node: Word Designators459068
Node: Modifiers460930
Node: Installing Bash462735
Node: Basic Installation463869
Node: Compilers and Options467588
Node: Compiling For Multiple Architectures468326
Node: Installation Names470015
Node: Specifying the System Type472121
Node: Sharing Defaults472835
Node: Operation Controls473505
Node: Optional Features474460
Node: Reporting Bugs485677
Node: Major Differences From The Bourne Shell487008
Node: GNU Free Documentation License503863
Node: Indexes529037
Node: Builtin Index529488
Node: Reserved Word Index536586
Node: Variable Index539031
Node: Function Index556162
Node: Concept Index570018
Node: Top894
Node: Introduction2811
Node: What is Bash?3024
Node: What is a shell?4135
Node: Definitions6670
Node: Basic Shell Features9618
Node: Shell Syntax10834
Node: Shell Operation11857
Node: Quoting13147
Node: Escape Character14448
Node: Single Quotes14930
Node: Double Quotes15275
Node: ANSI-C Quoting16550
Node: Locale Translation17859
Node: Creating Internationalized Scripts19167
Node: Comments23281
Node: Shell Commands23896
Node: Reserved Words24831
Node: Simple Commands25584
Node: Pipelines26235
Node: Lists29218
Node: Compound Commands31010
Node: Looping Constructs32019
Node: Conditional Constructs34511
Node: Command Grouping48996
Node: Coprocesses50471
Node: GNU Parallel53131
Node: Shell Functions54045
Node: Shell Parameters61927
Node: Positional Parameters66312
Node: Special Parameters67211
Node: Shell Expansions70422
Node: Brace Expansion72507
Node: Tilde Expansion75238
Node: Shell Parameter Expansion77856
Node: Command Substitution96446
Node: Arithmetic Expansion99907
Node: Process Substitution100872
Node: Word Splitting101989
Node: Filename Expansion104034
Node: Pattern Matching106964
Node: Quote Removal111963
Node: Redirections112255
Node: Executing Commands121946
Node: Simple Command Expansion122613
Node: Command Search and Execution124720
Node: Command Execution Environment127104
Node: Environment130136
Node: Exit Status131796
Node: Signals133577
Node: Shell Scripts137023
Node: Shell Builtin Commands140047
Node: Bourne Shell Builtins142082
Node: Bash Builtins165471
Node: Modifying Shell Behavior198688
Node: The Set Builtin199030
Node: The Shopt Builtin210001
Node: Special Builtins226193
Node: Shell Variables227182
Node: Bourne Shell Variables227616
Node: Bash Variables229717
Node: Bash Features264783
Node: Invoking Bash265793
Node: Bash Startup Files271924
Node: Interactive Shells277052
Node: What is an Interactive Shell?277460
Node: Is this Shell Interactive?278106
Node: Interactive Shell Behavior278918
Node: Bash Conditional Expressions282544
Node: Shell Arithmetic287454
Node: Aliases290412
Node: Arrays293303
Node: The Directory Stack299934
Node: Directory Stack Builtins300715
Node: Controlling the Prompt304972
Node: The Restricted Shell307934
Node: Bash POSIX Mode310541
Node: Shell Compatibility Mode327183
Node: Job Control335428
Node: Job Control Basics335885
Node: Job Control Builtins340884
Node: Job Control Variables346676
Node: Command Line Editing347829
Node: Introduction and Notation349497
Node: Readline Interaction351117
Node: Readline Bare Essentials352305
Node: Readline Movement Commands354091
Node: Readline Killing Commands355048
Node: Readline Arguments356966
Node: Searching358007
Node: Readline Init File360190
Node: Readline Init File Syntax361448
Node: Conditional Init Constructs385470
Node: Sample Init File389663
Node: Bindable Readline Commands392784
Node: Commands For Moving393985
Node: Commands For History396033
Node: Commands For Text401024
Node: Commands For Killing404999
Node: Numeric Arguments407700
Node: Commands For Completion408836
Node: Keyboard Macros413024
Node: Miscellaneous Commands413709
Node: Readline vi Mode420075
Node: Programmable Completion420979
Node: Programmable Completion Builtins428756
Node: A Programmable Completion Example439873
Node: Using History Interactively445118
Node: Bash History Facilities445799
Node: Bash History Builtins448807
Node: History Interaction453895
Node: Event Designators458144
Node: Word Designators459679
Node: Modifiers461541
Node: Installing Bash463346
Node: Basic Installation464480
Node: Compilers and Options468199
Node: Compiling For Multiple Architectures468937
Node: Installation Names470626
Node: Specifying the System Type472732
Node: Sharing Defaults473446
Node: Operation Controls474116
Node: Optional Features475071
Node: Reporting Bugs486288
Node: Major Differences From The Bourne Shell487619
Node: GNU Free Documentation License504474
Node: Indexes529648
Node: Builtin Index530099
Node: Reserved Word Index537197
Node: Variable Index539642
Node: Function Index556773
Node: Concept Index570629

End Tag Table
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -26,7 +26,7 @@
\entry{builtin}{59}{\code {builtin}}
\entry{caller}{59}{\code {caller}}
\entry{command}{59}{\code {command}}
\entry{declare}{59}{\code {declare}}
\entry{declare}{60}{\code {declare}}
\entry{echo}{61}{\code {echo}}
\entry{enable}{62}{\code {enable}}
\entry{help}{62}{\code {help}}
+1 -1
View File
@@ -20,7 +20,7 @@
\entry{\code {compopt}}{155}
\entry{\code {continue}}{50}
\initial {D}
\entry{\code {declare}}{59}
\entry{\code {declare}}{60}
\entry{\code {dirs}}{106}
\entry{\code {disown}}{121}
\initial {E}
+72 -26
View File
@@ -4,9 +4,9 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- This text is a brief description of the features that are present in
the Bash shell (version 5.3, 6 October 2023).
the Bash shell (version 5.3, 14 December 2023).
This is Edition 5.3, last updated 6 October 2023,
This is Edition 5.3, last updated 14 December 2023,
of The GNU Bash Reference Manual,
for Bash, Version 5.3.
@@ -77,10 +77,10 @@ Next: <a href="#Introduction" accesskey="n" rel="next">Introduction</a>, Previou
<span id="Bash-Features-1"></span><h1 class="top">Bash Features</h1>
<p>This text is a brief description of the features that are present in
the Bash shell (version 5.3, 6 October 2023).
the Bash shell (version 5.3, 14 December 2023).
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 5.3, last updated 6 October 2023,
<p>This is Edition 5.3, last updated 14 December 2023,
of <cite>The GNU Bash Reference Manual</cite>,
for <code>Bash</code>, Version 5.3.
</p>
@@ -5055,8 +5055,10 @@ synonym); <code>emacs</code> is equivalent to <code>emacs-standard</code>.
</p>
</dd>
<dt><span><code>-p</code></span></dt>
<dd><p>Display Readline function names and bindings in such a way that they
can be used as input or in a Readline initialization file.
<dd><p>Display Readline function names and bindings
in such a way that they can be used as
an argument to a subsequent <code>bind</code> command
or in a Readline initialization file.
</p>
</dd>
<dt><span><code>-P</code></span></dt>
@@ -5064,8 +5066,10 @@ can be used as input or in a Readline initialization file.
</p>
</dd>
<dt><span><code>-v</code></span></dt>
<dd><p>Display Readline variable names and values in such a way that they
can be used as input or in a Readline initialization file.
<dd><p>Display Readline variable names and values
in such a way that they can be used as
an argument to a subsequent <code>bind</code> command
or in a Readline initialization file.
</p>
</dd>
<dt><span><code>-V</code></span></dt>
@@ -5074,8 +5078,9 @@ can be used as input or in a Readline initialization file.
</dd>
<dt><span><code>-s</code></span></dt>
<dd><p>Display Readline key sequences bound to macros and the strings they output
in such a way that they can be used as input or in a Readline
initialization file.
in such a way that they can be used as
an argument to a subsequent <code>bind</code> command
or in a Readline initialization file.
</p>
</dd>
<dt><span><code>-S</code></span></dt>
@@ -5125,7 +5130,8 @@ reflected in the editing state.
</dd>
<dt><span><code>-X</code></span></dt>
<dd><p>List all key sequences bound to shell commands and the associated commands
in a format that can be reused as input.
in a format that can be reused as
an argument to a subsequent <code>bind</code> command.
</p></dd>
</dl>
@@ -5411,8 +5417,10 @@ each builtin with an indication of whether or not it is enabled.
<p>The <samp>-f</samp> option means to load the new builtin command <var>name</var>
from shared object <var>filename</var>, on systems that support dynamic loading.
Bash will use the value of the <code>BASH_LOADABLES_PATH</code> variable as a
colon-separated list of directories in which to search for <var>filename</var>.
The default is system-dependent.
colon-separated list of directories in which to search for <var>filename</var>,
if <var>filename</var> does not contain a slash.
The default is system-dependent,
and may include &quot;.&quot; to force a search of the current directory.
The <samp>-d</samp> option will delete a builtin loaded with <samp>-f</samp>.
</p>
<p>If there are no options, a list of the shell builtins is displayed.
@@ -6754,8 +6762,10 @@ If the string is not translated, this has no effect.
</p>
</dd>
<dt><span><code>nullglob</code></span></dt>
<dd><p>If set, Bash allows filename patterns which match no
files to expand to a null string, rather than themselves.
<dd><p>If set, filename expansion patterns which match no files
(see <a href="#Filename-Expansion">Filename Expansion</a>)
expand to nothing and are removed,
rather than expanding to themselves.
</p>
</dd>
<dt><span><code>patsub_replacement</code></span></dt>
@@ -6856,8 +6866,8 @@ The Bash <small>POSIX</small> mode is described in <a href="#Bash-POSIX-Mode">Ba
</p>
<p>These are the <small>POSIX</small> special builtins:
</p><div class="example">
<pre class="example">break : . continue eval exec exit export readonly return set<!-- /@w -->
shift trap unset<!-- /@w -->
<pre class="example">break : . source continue eval exec exit export readonly return set<!-- /@w -->
shift times trap unset<!-- /@w -->
</pre></div>
<hr>
@@ -7442,7 +7452,7 @@ option.
The value of this variable specifies the sort criteria and sort order for
the results of filename expansion.
If this variable is unset or set to the null string, filename expansion
uses the historial behavior of sorting by name.
uses the historical behavior of sorting by name.
If set, a valid value begins with an optional &lsquo;<samp>+</samp>&rsquo;, which is ignored,
or &lsquo;<samp>-</samp>&rsquo;, which reverses the sort order from ascending to descending,
followed by a sort specifier.
@@ -7484,13 +7494,17 @@ subsequently reset.
substitution, and tokenization (see <a href="#History-Interaction">History Expansion</a>).
The first character is the
<em>history expansion</em> character, that is, the character which signifies the
start of a history expansion, normally &lsquo;<samp>!</samp>&rsquo;. The second character is the
character which signifies &lsquo;quick substitution&rsquo; when seen as the first
character on a line, normally &lsquo;<samp>^</samp>&rsquo;. The optional third character is the
start of a history expansion, normally &lsquo;<samp>!</samp>&rsquo;.
The second character is the
character which signifies &quot;quick substitution&quot; when seen as the first
character on a line, normally &lsquo;<samp>^</samp>&rsquo;.
The optional third character is the
character which indicates that the remainder of the line is a comment when
found as the first character of a word, usually &lsquo;<samp>#</samp>&rsquo;. The history
found as the first character of a word, usually &lsquo;<samp>#</samp>&rsquo;.
The history
comment character causes history substitution to be skipped for the
remaining words on the line. It does not necessarily cause the shell
remaining words on the line.
It does not necessarily cause the shell
parser to treat the rest of the line as a comment.
</p>
</dd>
@@ -8130,8 +8144,15 @@ that may be reused as input.
<dt><span><code>--</code></span></dt>
<dd><p>A <code>--</code> signals the end of options and disables further option
processing.
Any arguments after the <code>--</code> are treated as filenames and arguments.
</p></dd>
Any arguments after the <code>--</code>
are treated as a shell script filename (see <a href="#Shell-Scripts">Shell Scripts</a>)
and arguments passed to that script.
</p>
</dd>
<dt><span><code>-</code></span></dt>
<dd><p>Equivalent to <code>--</code>.
</p>
</dd>
</dl>
<span id="index-login-shell"></span>
@@ -9574,6 +9595,12 @@ fatal error if it attempts to unset a <code>readonly</code> or <code>non-unsetta
variable, or encounters a variable name argument that is an invalid identifier,
which causes a non-interactive shell to exit.
</li><li> When asked to unset a variable that appears in an assignment statement
preceding the command, the <code>unset</code> builtin attempts to unset a variable
of the same name in the current or previous scope as well.
This implements the required &quot;if an assigned variable is further modified
by the utility, the modifications made by the utility shall persist&quot; behavior.
</li><li> A non-interactive shell exits with an error status if a variable
assignment error occurs when no command name follows the assignment
statements.
@@ -12394,6 +12421,14 @@ as the editor, in that order.
</p>
</dd>
<dt id='index-execute_002dnamed_002dcommand-_0028M_002dx_0029'><span><code>execute-named-command (M-x)</code><a href='#index-execute_002dnamed_002dcommand-_0028M_002dx_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Read a bindable readline command name from the input and execute the
function to which it&rsquo;s bound, as if the key sequence to which it was
bound appeared in the input.
If this function is supplied with a numeric argument, it passes that
argument to the function it executes.
</p>
</dd>
</dl>
@@ -13362,6 +13397,16 @@ history expansion character, but the history expansion character is
also treated as quoted if it immediately precedes the closing double quote
in a double-quoted string.
</p>
<p>There is a special abbreviation for substitution, active when the
<var>quick substitution</var> character (default &lsquo;<samp>^</samp>&rsquo;)
is the first character on the line.
It selects the previous history list entry, using an event designator
equivalent to <code>!!</code>,
and substitutes one string for another in that line.
It is described below (see <a href="#Event-Designators">Event Designators</a>).
This is the only history expansion that does not begin with the history
expansion character.
</p>
<p>Several shell options settable with the <code>shopt</code>
builtin (see <a href="#The-Shopt-Builtin">The Shopt Builtin</a>) may be used to tailor
the behavior of history expansion. If the
@@ -14204,7 +14249,7 @@ instance of the shell from the environment. This option is enabled by
default.
</p>
</dd>
<dt><span><code>--enable-glob-asciirange-default</code></span></dt>
<dt><span><code>--enable-glob-asciiranges-default</code></span></dt>
<dd><p>Set the default value of the <code>globasciiranges</code> shell option described
above under <a href="#The-Shopt-Builtin">The Shopt Builtin</a> to be enabled.
This controls the behavior of character ranges when used in pattern matching
@@ -16034,6 +16079,7 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
<tr><td></td><td valign="top"><a href="#index-end_002dof_002dhistory-_0028M_002d_003e_0029"><code>end-of-history (M-&gt;)</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-end_002dof_002dline-_0028C_002de_0029"><code>end-of-line (C-e)</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-exchange_002dpoint_002dand_002dmark-_0028C_002dx-C_002dx_0029"><code>exchange-point-and-mark (C-x C-x)</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-execute_002dnamed_002dcommand-_0028M_002dx_0029"><code>execute-named-command (M-x)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td colspan="4"> <hr></td></tr>
<tr><th id="Function-Index_fn_letter-F">F</th><td></td><td></td></tr>
<tr><td></td><td valign="top"><a href="#index-fetch_002dhistory-_0028_0029"><code>fetch-history ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-History">Commands For History</a></td></tr>
+173 -163
View File
@@ -2,9 +2,9 @@ This is bashref.info, produced by makeinfo version 6.8 from
bashref.texi.
This text is a brief description of the features that are present in the
Bash shell (version 5.3, 6 November 2023).
Bash shell (version 5.3, 14 December 2023).
This is Edition 5.3, last updated 6 November 2023, of 'The GNU Bash
This is Edition 5.3, last updated 14 December 2023, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.3.
Copyright (C) 1988-2023 Free Software Foundation, Inc.
@@ -27,10 +27,10 @@ Bash Features
*************
This text is a brief description of the features that are present in the
Bash shell (version 5.3, 6 November 2023). The Bash home page is
Bash shell (version 5.3, 14 December 2023). The Bash home page is
<http://www.gnu.org/software/bash/>.
This is Edition 5.3, last updated 6 November 2023, of 'The GNU Bash
This is Edition 5.3, last updated 14 December 2023, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.3.
Bash contains features that appear in other popular shells, and some
@@ -3806,24 +3806,25 @@ standard.
'-p'
Display Readline function names and bindings in such a way
that they can be used as input or in a Readline initialization
file.
that they can be used as an argument to a subsequent 'bind'
command or in a Readline initialization file.
'-P'
List current Readline function names and bindings.
'-v'
Display Readline variable names and values in such a way that
they can be used as input or in a Readline initialization
file.
they can be used as an argument to a subsequent 'bind' command
or in a Readline initialization file.
'-V'
List current Readline variable names and values.
'-s'
Display Readline key sequences bound to macros and the strings
they output in such a way that they can be used as input or in
a Readline initialization file.
they output in such a way that they can be used as an argument
to a subsequent 'bind' command or in a Readline initialization
file.
'-S'
Display Readline key sequences bound to macros and the strings
@@ -3866,7 +3867,8 @@ standard.
'-X'
List all key sequences bound to shell commands and the
associated commands in a format that can be reused as input.
associated commands in a format that can be reused as an
argument to a subsequent 'bind' command.
The return status is zero unless an invalid option is supplied or
an error occurs.
@@ -5736,7 +5738,7 @@ Variables::).
first character is the "history expansion" character, that is, the
character which signifies the start of a history expansion,
normally '!'. The second character is the character which
signifies 'quick substitution' when seen as the first character on
signifies "quick substitution" when seen as the first character on
a line, normally '^'. The optional third character is the
character which indicates that the remainder of the line is a
comment when found as the first character of a word, usually '#'.
@@ -10480,6 +10482,14 @@ history expansion character, but the history expansion character is also
treated as quoted if it immediately precedes the closing double quote in
a double-quoted string.
There is a special abbreviation for substitution, active when the
QUICK SUBSTITUTION character (default '^') is the first character on the
line. It selects the previous history list entry, using an event
designator equivalent to '!!', and substitutes one string for another in
that line. It is described below (*note Event Designators::). This is
the only history expansion that does not begin with the history
expansion character.
Several shell options settable with the 'shopt' builtin (*note The
Shopt Builtin::) may be used to tailor the behavior of history
expansion. If the 'histverify' shell option is enabled, and Readline is
@@ -12139,11 +12149,11 @@ D.1 Index of Shell Builtin Commands
* bind: Bash Builtins. (line 21)
* break: Bourne Shell Builtins.
(line 37)
* builtin: Bash Builtins. (line 117)
* caller: Bash Builtins. (line 126)
* builtin: Bash Builtins. (line 119)
* caller: Bash Builtins. (line 128)
* cd: Bourne Shell Builtins.
(line 45)
* command: Bash Builtins. (line 143)
* command: Bash Builtins. (line 145)
* compgen: Programmable Completion Builtins.
(line 12)
* complete: Programmable Completion Builtins.
@@ -12152,13 +12162,13 @@ D.1 Index of Shell Builtin Commands
(line 248)
* continue: Bourne Shell Builtins.
(line 90)
* declare: Bash Builtins. (line 163)
* declare: Bash Builtins. (line 165)
* dirs: Directory Stack Builtins.
(line 7)
* disown: Job Control Builtins.
(line 104)
* echo: Bash Builtins. (line 266)
* enable: Bash Builtins. (line 315)
* echo: Bash Builtins. (line 268)
* enable: Bash Builtins. (line 317)
* eval: Bourne Shell Builtins.
(line 99)
* exec: Bourne Shell Builtins.
@@ -12177,26 +12187,26 @@ D.1 Index of Shell Builtin Commands
(line 153)
* hash: Bourne Shell Builtins.
(line 197)
* help: Bash Builtins. (line 353)
* help: Bash Builtins. (line 355)
* history: Bash History Builtins.
(line 46)
* jobs: Job Control Builtins.
(line 27)
* kill: Job Control Builtins.
(line 58)
* let: Bash Builtins. (line 372)
* local: Bash Builtins. (line 380)
* logout: Bash Builtins. (line 397)
* mapfile: Bash Builtins. (line 402)
* let: Bash Builtins. (line 374)
* local: Bash Builtins. (line 382)
* logout: Bash Builtins. (line 399)
* mapfile: Bash Builtins. (line 404)
* popd: Directory Stack Builtins.
(line 35)
* printf: Bash Builtins. (line 448)
* printf: Bash Builtins. (line 450)
* pushd: Directory Stack Builtins.
(line 69)
* pwd: Bourne Shell Builtins.
(line 222)
* read: Bash Builtins. (line 516)
* readarray: Bash Builtins. (line 619)
* read: Bash Builtins. (line 518)
* readarray: Bash Builtins. (line 621)
* readonly: Bourne Shell Builtins.
(line 232)
* return: Bourne Shell Builtins.
@@ -12205,7 +12215,7 @@ D.1 Index of Shell Builtin Commands
* shift: Bourne Shell Builtins.
(line 272)
* shopt: The Shopt Builtin. (line 9)
* source: Bash Builtins. (line 628)
* source: Bash Builtins. (line 630)
* suspend: Job Control Builtins.
(line 116)
* test: Bourne Shell Builtins.
@@ -12216,12 +12226,12 @@ D.1 Index of Shell Builtin Commands
(line 393)
* true: Bourne Shell Builtins.
(line 455)
* type: Bash Builtins. (line 633)
* typeset: Bash Builtins. (line 671)
* ulimit: Bash Builtins. (line 677)
* type: Bash Builtins. (line 635)
* typeset: Bash Builtins. (line 673)
* ulimit: Bash Builtins. (line 679)
* umask: Bourne Shell Builtins.
(line 460)
* unalias: Bash Builtins. (line 783)
* unalias: Bash Builtins. (line 785)
* unset: Bourne Shell Builtins.
(line 478)
* wait: Job Control Builtins.
@@ -12899,138 +12909,138 @@ 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 Character14474
Node: Single Quotes14959
Node: Double Quotes15307
Node: ANSI-C Quoting16585
Node: Locale Translation17897
Node: Creating Internationalized Scripts19208
Node: Comments23325
Node: Shell Commands23943
Node: Reserved Words24881
Node: Simple Commands25637
Node: Pipelines26291
Node: Lists29277
Node: Compound Commands31072
Node: Looping Constructs32084
Node: Conditional Constructs34579
Node: Command Grouping49067
Node: Coprocesses50545
Node: GNU Parallel53208
Node: Shell Functions54125
Node: Shell Parameters62010
Node: Positional Parameters66398
Node: Special Parameters67300
Node: Shell Expansions70514
Node: Brace Expansion72602
Node: Tilde Expansion75336
Node: Shell Parameter Expansion77957
Node: Command Substitution96550
Node: Arithmetic Expansion100014
Node: Process Substitution100982
Node: Word Splitting102102
Node: Filename Expansion104150
Node: Pattern Matching107083
Node: Quote Removal112085
Node: Redirections112380
Node: Executing Commands122074
Node: Simple Command Expansion122744
Node: Command Search and Execution124854
Node: Command Execution Environment127241
Node: Environment130276
Node: Exit Status131939
Node: Signals133723
Node: Shell Scripts137172
Node: Shell Builtin Commands140199
Node: Bourne Shell Builtins142237
Node: Bash Builtins165629
Node: Modifying Shell Behavior198681
Node: The Set Builtin199026
Node: The Shopt Builtin210000
Node: Special Builtins226195
Node: Shell Variables227187
Node: Bourne Shell Variables227624
Node: Bash Variables229728
Node: Bash Features264797
Node: Invoking Bash265810
Node: Bash Startup Files271944
Node: Interactive Shells277075
Node: What is an Interactive Shell?277486
Node: Is this Shell Interactive?278135
Node: Interactive Shell Behavior278950
Node: Bash Conditional Expressions282579
Node: Shell Arithmetic287492
Node: Aliases290453
Node: Arrays293347
Node: The Directory Stack299981
Node: Directory Stack Builtins300765
Node: Controlling the Prompt305025
Node: The Restricted Shell307990
Node: Bash POSIX Mode310600
Node: Shell Compatibility Mode327245
Node: Job Control335493
Node: Job Control Basics335953
Node: Job Control Builtins340955
Node: Job Control Variables346750
Node: Command Line Editing347906
Node: Introduction and Notation349577
Node: Readline Interaction351200
Node: Readline Bare Essentials352391
Node: Readline Movement Commands354180
Node: Readline Killing Commands355140
Node: Readline Arguments357061
Node: Searching358105
Node: Readline Init File360291
Node: Readline Init File Syntax361552
Node: Conditional Init Constructs385577
Node: Sample Init File389773
Node: Bindable Readline Commands392897
Node: Commands For Moving394101
Node: Commands For History396152
Node: Commands For Text401146
Node: Commands For Killing405124
Node: Numeric Arguments407828
Node: Commands For Completion408967
Node: Keyboard Macros413158
Node: Miscellaneous Commands413846
Node: Readline vi Mode420215
Node: Programmable Completion421122
Node: Programmable Completion Builtins428902
Node: A Programmable Completion Example440022
Node: Using History Interactively445270
Node: Bash History Facilities445954
Node: Bash History Builtins448965
Node: History Interaction454056
Node: Event Designators457869
Node: Word Designators459407
Node: Modifiers461272
Node: Installing Bash463080
Node: Basic Installation464217
Node: Compilers and Options467939
Node: Compiling For Multiple Architectures468680
Node: Installation Names470372
Node: Specifying the System Type472481
Node: Sharing Defaults473198
Node: Operation Controls473871
Node: Optional Features474829
Node: Reporting Bugs486049
Node: Major Differences From The Bourne Shell487383
Node: GNU Free Documentation License504241
Node: Indexes529418
Node: Builtin Index529872
Node: Reserved Word Index536973
Node: Variable Index539421
Node: Function Index556555
Node: Concept Index570414
Node: Top897
Node: Introduction2817
Node: What is Bash?3033
Node: What is a shell?4147
Node: Definitions6685
Node: Basic Shell Features9636
Node: Shell Syntax10855
Node: Shell Operation11881
Node: Quoting13174
Node: Escape Character14478
Node: Single Quotes14963
Node: Double Quotes15311
Node: ANSI-C Quoting16589
Node: Locale Translation17901
Node: Creating Internationalized Scripts19212
Node: Comments23329
Node: Shell Commands23947
Node: Reserved Words24885
Node: Simple Commands25641
Node: Pipelines26295
Node: Lists29281
Node: Compound Commands31076
Node: Looping Constructs32088
Node: Conditional Constructs34583
Node: Command Grouping49071
Node: Coprocesses50549
Node: GNU Parallel53212
Node: Shell Functions54129
Node: Shell Parameters62014
Node: Positional Parameters66402
Node: Special Parameters67304
Node: Shell Expansions70518
Node: Brace Expansion72606
Node: Tilde Expansion75340
Node: Shell Parameter Expansion77961
Node: Command Substitution96554
Node: Arithmetic Expansion100018
Node: Process Substitution100986
Node: Word Splitting102106
Node: Filename Expansion104154
Node: Pattern Matching107087
Node: Quote Removal112089
Node: Redirections112384
Node: Executing Commands122078
Node: Simple Command Expansion122748
Node: Command Search and Execution124858
Node: Command Execution Environment127245
Node: Environment130280
Node: Exit Status131943
Node: Signals133727
Node: Shell Scripts137176
Node: Shell Builtin Commands140203
Node: Bourne Shell Builtins142241
Node: Bash Builtins165633
Node: Modifying Shell Behavior198853
Node: The Set Builtin199198
Node: The Shopt Builtin210172
Node: Special Builtins226367
Node: Shell Variables227359
Node: Bourne Shell Variables227796
Node: Bash Variables229900
Node: Bash Features264969
Node: Invoking Bash265982
Node: Bash Startup Files272116
Node: Interactive Shells277247
Node: What is an Interactive Shell?277658
Node: Is this Shell Interactive?278307
Node: Interactive Shell Behavior279122
Node: Bash Conditional Expressions282751
Node: Shell Arithmetic287664
Node: Aliases290625
Node: Arrays293519
Node: The Directory Stack300153
Node: Directory Stack Builtins300937
Node: Controlling the Prompt305197
Node: The Restricted Shell308162
Node: Bash POSIX Mode310772
Node: Shell Compatibility Mode327417
Node: Job Control335665
Node: Job Control Basics336125
Node: Job Control Builtins341127
Node: Job Control Variables346922
Node: Command Line Editing348078
Node: Introduction and Notation349749
Node: Readline Interaction351372
Node: Readline Bare Essentials352563
Node: Readline Movement Commands354352
Node: Readline Killing Commands355312
Node: Readline Arguments357233
Node: Searching358277
Node: Readline Init File360463
Node: Readline Init File Syntax361724
Node: Conditional Init Constructs385749
Node: Sample Init File389945
Node: Bindable Readline Commands393069
Node: Commands For Moving394273
Node: Commands For History396324
Node: Commands For Text401318
Node: Commands For Killing405296
Node: Numeric Arguments408000
Node: Commands For Completion409139
Node: Keyboard Macros413330
Node: Miscellaneous Commands414018
Node: Readline vi Mode420387
Node: Programmable Completion421294
Node: Programmable Completion Builtins429074
Node: A Programmable Completion Example440194
Node: Using History Interactively445442
Node: Bash History Facilities446126
Node: Bash History Builtins449137
Node: History Interaction454228
Node: Event Designators458480
Node: Word Designators460018
Node: Modifiers461883
Node: Installing Bash463691
Node: Basic Installation464828
Node: Compilers and Options468550
Node: Compiling For Multiple Architectures469291
Node: Installation Names470983
Node: Specifying the System Type473092
Node: Sharing Defaults473809
Node: Operation Controls474482
Node: Optional Features475440
Node: Reporting Bugs486660
Node: Major Differences From The Bourne Shell487994
Node: GNU Free Documentation License504852
Node: Indexes530029
Node: Builtin Index530483
Node: Reserved Word Index537584
Node: Variable Index540032
Node: Function Index557166
Node: Concept Index571025

End Tag Table
+21 -21
View File
@@ -1,12 +1,12 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021/MacPorts 2021.58693_0) (preloaded format=pdfetex 2021.8.30) 30 NOV 2023 08:24
This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021/MacPorts 2021.58693_0) (preloaded format=pdfetex 2021.8.30) 14 DEC 2023 16:39
entering extended mode
restricted \write18 enabled.
file:line:error style messages enabled.
%&-line parsing enabled.
**\input /usr/local/src/bash/bash-20231124/doc/bashref.texi \input /usr/local/s
rc/bash/bash-20231124/doc/bashref.texi
(/usr/local/src/bash/bash-20231124/doc/bashref.texi
(/usr/local/src/bash/bash-20231124/doc/texinfo.tex
**\input /usr/local/src/bash/bash-20231212/doc/bashref.texi \input /usr/local/s
rc/bash/bash-20231212/doc/bashref.texi
(/usr/local/src/bash/bash-20231212/doc/bashref.texi
(/usr/local/src/bash/bash-20231212/doc/texinfo.tex
Loading texinfo [version 2015-11-22.14]:
\outerhsize=\dimen16
\outervsize=\dimen17
@@ -162,15 +162,15 @@ This is `epsf.tex' v2.7.4 <14 February 2011>
texinfo.tex: doing @include of version.texi
(/usr/local/src/bash/bash-20231124/doc/version.texi) [1{/opt/local/var/db/texmf
(/usr/local/src/bash/bash-20231212/doc/version.texi) [1{/opt/local/var/db/texmf
/fonts/map/pdftex/updmap/pdftex.map}] [2]
(/usr/local/build/bash/bash-20231124/doc/bashref.toc [-1] [-2] [-3]) [-4]
(/usr/local/build/bash/bash-20231124/doc/bashref.toc)
(/usr/local/build/bash/bash-20231124/doc/bashref.toc) Chapter 1
(/usr/local/build/bash/bash-20231212/doc/bashref.toc [-1] [-2] [-3]) [-4]
(/usr/local/build/bash/bash-20231212/doc/bashref.toc)
(/usr/local/build/bash/bash-20231212/doc/bashref.toc) Chapter 1
\openout0 = `bashref.toc'.
(/usr/local/build/bash/bash-20231124/doc/bashref.aux)
(/usr/local/build/bash/bash-20231212/doc/bashref.aux)
\openout1 = `bashref.aux'.
Chapter 2 [1] [2]
@@ -230,7 +230,7 @@ Overfull \hbox (5.95723pt too wide) in paragraph at lines 724--725
[49] [50] [51]
[52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66]
[67] [68]
Overfull \hbox (38.26585pt too wide) in paragraph at lines 5414--5414
Overfull \hbox (38.26585pt too wide) in paragraph at lines 5420--5420
[]@texttt set [-abefhkmnptuvxBCEHPT] [-o @textttsl option-name@texttt ] [--] [
-] [@textttsl ar-gu-ment []@texttt ][]
@@ -243,7 +243,7 @@ Overfull \hbox (38.26585pt too wide) in paragraph at lines 5414--5414
.etc.
Overfull \hbox (38.26585pt too wide) in paragraph at lines 5415--5415
Overfull \hbox (38.26585pt too wide) in paragraph at lines 5421--5421
[]@texttt set [+abefhkmnptuvxBCEHPT] [+o @textttsl option-name@texttt ] [--] [
-] [@textttsl ar-gu-ment []@texttt ][]
@@ -262,7 +262,7 @@ Overfull \hbox (38.26585pt too wide) in paragraph at lines 5415--5415
[119] [120]
texinfo.tex: doing @include of rluser.texi
(/usr/local/src/bash/bash-20231124/lib/readline/doc/rluser.texi
(/usr/local/src/bash/bash-20231212/lib/readline/doc/rluser.texi
Chapter 8 [121] [122] [123] [124] [125] [126] [127] [128] [129] [130] [131]
[132]
Underfull \hbox (badness 7540) in paragraph at lines 878--884
@@ -312,10 +312,10 @@ gnored[]
texinfo.tex: doing @include of hsuser.texi
(/usr/local/src/bash/bash-20231124/lib/readline/doc/hsuser.texi Chapter 9
(/usr/local/src/bash/bash-20231212/lib/readline/doc/hsuser.texi Chapter 9
[158] [159] [160] [161] [162] [163]) Chapter 10 [164] [165] [166] [167]
[168]
Underfull \hbox (badness 10000) in paragraph at lines 9766--9775
Underfull \hbox (badness 10000) in paragraph at lines 9776--9785
[]@textrm All of the fol-low-ing op-tions ex-cept for `@texttt alt-array-implem
entation[]@textrm '[],
@@ -328,7 +328,7 @@ entation[]@textrm '[],
.etc.
Underfull \hbox (badness 10000) in paragraph at lines 9766--9775
Underfull \hbox (badness 10000) in paragraph at lines 9776--9785
@textrm `@texttt disabled-builtins[]@textrm '[], `@texttt direxpand-default[]@t
extrm '[], `@texttt strict-posix-default[]@textrm '[], and
@@ -344,13 +344,13 @@ extrm '[], `@texttt strict-posix-default[]@textrm '[], and
[178] [179] Appendix C [180]
texinfo.tex: doing @include of fdl.texi
(/usr/local/src/bash/bash-20231124/doc/fdl.texi
(/usr/local/src/bash/bash-20231212/doc/fdl.texi
[181] [182] [183] [184] [185] [186] [187]) Appendix D [188] [189] [190]
[191] [192] [193] [194] [195] [196] [197] )
Here is how much of TeX's memory you used:
4104 strings out of 497086
47614 string characters out of 6206517
141907 words of memory out of 5000000
141909 words of memory out of 5000000
4869 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
@@ -372,10 +372,10 @@ texlive/fonts/type1/public/amsfonts/cm/cmtt12.pfb></opt/local/share/texmf-texli
ve/fonts/type1/public/amsfonts/cm/cmtt9.pfb></opt/local/share/texmf-texlive/fon
ts/type1/public/cm-super/sfrm1095.pfb></opt/local/share/texmf-texlive/fonts/typ
e1/public/cm-super/sfrm1440.pfb>
Output written on bashref.pdf (203 pages, 815459 bytes).
Output written on bashref.pdf (203 pages, 816032 bytes).
PDF statistics:
2829 PDF objects out of 2984 (max. 8388607)
2579 compressed objects within 26 object streams
2830 PDF objects out of 2984 (max. 8388607)
2580 compressed objects within 26 object streams
331 named destinations out of 1000 (max. 500000)
1157 words of extra memory for PDF output out of 10000 (max. 10000000)
BIN
View File
Binary file not shown.
+22 -12
View File
@@ -4531,23 +4531,28 @@ synonym); @code{emacs} is equivalent to @code{emacs-standard}.
List the names of all Readline functions.
@item -p
Display Readline function names and bindings in such a way that they
can be used as input or in a Readline initialization file.
Display Readline function names and bindings
in such a way that they can be used as
an argument to a subsequent @code{bind} command
or in a Readline initialization file.
@item -P
List current Readline function names and bindings.
@item -v
Display Readline variable names and values in such a way that they
can be used as input or in a Readline initialization file.
Display Readline variable names and values
in such a way that they can be used as
an argument to a subsequent @code{bind} command
or in a Readline initialization file.
@item -V
List current Readline variable names and values.
@item -s
Display Readline key sequences bound to macros and the strings they output
in such a way that they can be used as input or in a Readline
initialization file.
in such a way that they can be used as
an argument to a subsequent @code{bind} command
or in a Readline initialization file.
@item -S
Display Readline key sequences bound to macros and the strings they output.
@@ -4590,7 +4595,8 @@ reflected in the editing state.
@item -X
List all key sequences bound to shell commands and the associated commands
in a format that can be reused as input.
in a format that can be reused as
an argument to a subsequent @code{bind} command.
@end table
@noindent
@@ -6689,13 +6695,17 @@ Up to three characters which control history expansion, quick
substitution, and tokenization (@pxref{History Interaction}).
The first character is the
@dfn{history expansion} character, that is, the character which signifies the
start of a history expansion, normally @samp{!}. The second character is the
character which signifies `quick substitution' when seen as the first
character on a line, normally @samp{^}. The optional third character is the
start of a history expansion, normally @samp{!}.
The second character is the
character which signifies "quick substitution" when seen as the first
character on a line, normally @samp{^}.
The optional third character is the
character which indicates that the remainder of the line is a comment when
found as the first character of a word, usually @samp{#}. The history
found as the first character of a word, usually @samp{#}.
The history
comment character causes history substitution to be skipped for the
remaining words on the line. It does not necessarily cause the shell
remaining words on the line.
It does not necessarily cause the shell
parser to treat the rest of the line as a comment.
@item HISTCMD
+3 -3
View File
@@ -2,10 +2,10 @@
Copyright (C) 1988-2023 Free Software Foundation, Inc.
@end ignore
@set LASTCHANGE Mon Nov 6 10:19:14 EST 2023
@set LASTCHANGE Thu Dec 14 11:05:10 EST 2023
@set EDITION 5.3
@set VERSION 5.3
@set UPDATED 6 November 2023
@set UPDATED-MONTH November 2023
@set UPDATED 14 December 2023
@set UPDATED-MONTH December 2023
+11
View File
@@ -4089,6 +4089,17 @@ execute_cond_command (COND_COM *cond_command)
}
#endif /* COND_COMMAND */
char *
save_lastarg (void)
{
char *v;
v = get_string_value ("_");
if (v)
v = savestring (v);
return v;
}
void
bind_lastarg (char *arg)
{
+1
View File
@@ -124,6 +124,7 @@ extern void uw_restore_funcarray_state (void *);
extern void uw_maybe_restore_getopt_state (void *);
extern void uw_lastpipe_cleanup (void *);
extern char *save_lastarg (void);
extern void bind_lastarg (char *);
extern void uw_dispose_fd_bitmap (void *);
+13 -2
View File
@@ -6,9 +6,9 @@
.\" Case Western Reserve University
.\" chet.ramey@case.edu
.\"
.\" Last Change: Thu Jan 19 17:20:59 EST 2023
.\" Last Change: Thu Dec 14 15:42:44 EST 2023
.\"
.TH HISTORY 3 "2023 January 19" "GNU History 8.2"
.TH HISTORY 3 "2023 December 14" "GNU History 8.3"
.\"
.\" File Name macro. This used to be `.PN', for Path Name,
.\" but Sun doesn't seem to like that very much.
@@ -74,10 +74,21 @@ does when reading input,
so that several words that would otherwise be separated
are considered one word when surrounded by quotes (see the
description of \fBhistory_tokenize()\fP below).
.PP
History expansions are introduced by the appearance of the
history expansion character, which is \^\fB!\fP\^ by default.
Only backslash (\^\fB\e\fP\^) and single quotes can quote
the history expansion character.
.PP
There is a special abbreviation for substitution, active when the
\fIquick substitution\fP character (default \fB\(ha\fP)
is the first character on the line.
It selects the previous history list entry, using an event designator
equivalent to \fB!!\fP,
and substitutes one string for another in that line.
It is described below under \fBEvent Designators\fP.
This is the only history expansion that does not begin with the history
expansion character.
.SS Event Designators
An event designator is a reference to a command line entry in the
history list.
+10
View File
@@ -316,6 +316,16 @@ also treated as quoted if it immediately precedes the closing double quote
in a double-quoted string.
@end ifset
There is a special abbreviation for substitution, active when the
@var{quick substitution} character (default @samp{^})
is the first character on the line.
It selects the previous history list entry, using an event designator
equivalent to @code{!!},
and substitutes one string for another in that line.
It is described below (@pxref{Event Designators}).
This is the only history expansion that does not begin with the history
expansion character.
@ifset BashFeatures
Several shell options settable with the @code{shopt}
builtin (@pxref{The Shopt Builtin}) may be used to tailor
+3 -3
View File
@@ -5,7 +5,7 @@ Copyright (C) 1988-2023 Free Software Foundation, Inc.
@set EDITION 8.3
@set VERSION 8.3
@set UPDATED 3 November 2023
@set UPDATED-MONTH November 2023
@set UPDATED 14 December 2023
@set UPDATED-MONTH December 2023
@set LASTCHANGE Fri Nov 3 12:04:26 EDT 2023
@set LASTCHANGE Thu Dec 14 15:45:46 EST 2023
+1 -1
View File
@@ -950,7 +950,7 @@ history_expand (const char *hstring, char **output)
/* The quick substitution character is a history expansion all right. That
is to say, "^this^that^" is equivalent to "!!:s^this^that^", and in fact,
that is the substitution that we do. */
if (hstring[0] == history_subst_char)
if ((history_quoting_state != '\'' || history_quotes_inhibit_expansion == 0) && hstring[0] == history_subst_char)
{
string = (char *)xmalloc (l + 5);
+2 -4
View File
@@ -418,9 +418,7 @@ check_mail (void)
int i, use_user_notification;
char *dollar_underscore, *temp;
dollar_underscore = get_string_value ("_");
if (dollar_underscore)
dollar_underscore = savestring (dollar_underscore);
dollar_underscore = save_lastarg ();
for (i = 0; i < mailfiles_count; i++)
{
@@ -481,7 +479,7 @@ check_mail (void)
if (dollar_underscore)
{
bind_variable ("_", dollar_underscore, 0);
bind_lastarg (dollar_underscore);
free (dollar_underscore);
}
else
+5 -4
View File
@@ -2931,9 +2931,7 @@ execute_variable_command (const char *command, const char *vname)
sh_parser_state_t ps;
save_parser_state (&ps);
last_lastarg = get_string_value ("_");
if (last_lastarg)
last_lastarg = savestring (last_lastarg);
last_lastarg = save_lastarg ();
parse_and_execute (savestring (command), vname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_NOOPTIMIZE);
@@ -6126,7 +6124,7 @@ char *
decode_prompt_string (char *string)
{
WORD_LIST *list;
char *result, *t, *orig_string;
char *result, *t, *orig_string, *last_lastarg;
struct dstack save_dstack;
int last_exit_value, last_comsub_pid, last_comsub_status;
#if defined (PROMPT_STRING_DECODE)
@@ -6535,10 +6533,13 @@ not_escape:
last_exit_value = last_command_exit_value;
last_comsub_pid = last_command_subst_pid;
last_comsub_status = last_command_subst_status;
last_lastarg = save_lastarg ();
list = expand_prompt_string (result, Q_DOUBLE_QUOTES, 0);
free (result);
result = string_list (list);
dispose_words (list);
bind_lastarg (last_lastarg);
free (last_lastarg);
last_command_exit_value = last_exit_value;
last_command_subst_pid = last_comsub_pid;
last_command_subst_status = last_comsub_status;
+1 -1
View File
@@ -21,7 +21,7 @@ aéb
bytematch
0000000 254 012
0000002
Passed all 1774 Unicode tests
Passed all 1770 Unicode tests
0000000 303 277 012
0000003
0000000 303 277 012
+2 -1
View File
@@ -107,7 +107,8 @@ zh_TW_BIG5=(
[0x03A8]=$'\243Z' [0x03A9]=$'\243[' [0x03B1]=$'\243\\' [0x03B2]=$'\243]'
[0x03B3]=$'\243^' [0x03B4]=$'\243_' [0x03B5]=$'\243`' [0x03B6]=$'\243a'
# and some invalid ones that output \u0XX
[0x00fb]='\u00FB' [0x00fc]='\u00FC' [0x00fd]='\u00FD' [0x00fe]='\u00FE'
# can't use these any more; macos 14 (sonoma) broke libiconv
# [0x00fb]='\u00FB' [0x00fc]='\u00FC' [0x00fd]='\u00FD' [0x00fe]='\u00FE'
)
TestCodePage zh_TW.BIG5 zh_TW_BIG5