commit bash-20171006 snapshot

This commit is contained in:
Chet Ramey
2017-10-11 15:32:49 -04:00
parent 45cccbbc0e
commit c8cd6da325
21 changed files with 3733 additions and 3688 deletions
+45
View File
@@ -14328,3 +14328,48 @@ parse.y
two tokens read are `FOR' and `WORD' make sure we decrement
expecting_in_token. Fixes bug reported by Martijn Dekker
<martijn@inlv.org>
10/4
----
subst.c
- expand_string_for_rhs: now takes an additional PFLAGS argument from
its caller (one so far); passes that through to call_expand_word_internal
as W_ASSIGNRHS. Fixes bug reported by Martijn Dekker
<martijn@inlv.org>
- expand_string_for_rhs: expanding b in ${a[:]=b} is now done as if
b were the rhs of an assignment statement. This means that splitting
isn't done, but tilde expansion is performed as if the statement
were `a=b'. Fixes splitting bug with $* reported by Martijn Dekker
<martijn@inlv.org>
command.h
- W_NOASSNTILDE: new word flag, means to not perform tilde expansion
following a `:' even if the word has the W_ASSIGNRHS flag enabled
subst.c
- expand_word_internal: if we see a `:' with the W_NOASSNTILDE flag
set, just add the character and inhibit any subsequent tilde
expansion. Currently not set anywhere, but it could be set in
expand_string_for_rhs to satisfy its peculiar semantics
10/6
----
lib/sh/casemod.c
- sh_modcase: convert even single-byte wide characters to wide upper
or lowercase equivalents to accommodate locales where single-byte
characters have multibyte upper and lower case conversions. Bug
reported by Stephane Chazelas <stephane.chazelas@gmail.com>
10/7
----
doc/{bash.1,bashref.texi}
- slight changes to the description of command_not_found_handle to
clarify that it's executed in a separate execution environment,
just like if the command was found. Reported by Martijn Dekker
<martijn@inlv.org>
10/8
----
lib/readline/doc/{history.3,hstech.texi}
- history_get: clarify the range of valid values for the OFFSET
argument. From a report by Kevin Ryde <user42_kevin@yahoo.com.au>
+1
View File
@@ -102,6 +102,7 @@ enum command_type { cm_for, cm_case, cm_while, cm_if, cm_simple, cm_select,
#define W_NOBRACE 0x4000000 /* Don't perform brace expansion */
#define W_COMPLETE 0x8000000 /* word is being expanded for completion */
#define W_CHKLOCAL 0x10000000 /* check for local vars on assignment */
#define W_NOASSNTILDE 0x20000000 /* don't do tilde expansion like an assignment statement */
/* Flags for the `pflags' argument to param_expand() and various
parameter_brace_expand_xxx functions; also used for string_list_dollar_at */
+956 -955
View File
File diff suppressed because it is too large Load Diff
+5 -4
View File
@@ -5,12 +5,12 @@
.\" Case Western Reserve University
.\" chet.ramey@case.edu
.\"
.\" Last Change: Fri Jun 23 12:42:34 EDT 2017
.\" Last Change: Sat Oct 7 17:30:18 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 June 23" "GNU Bash 4.4"
.TH BASH 1 "2017 October 7" "GNU Bash 4.4"
.\"
.\" There's some problem with having a `@'
.\" in a tagged paragraph with the BSD man macros.
@@ -4694,9 +4694,10 @@ A full search of the directories in
is performed only if the command is not found in the hash table.
If the search is unsuccessful, the shell searches for a defined shell
function named \fBcommand_not_found_handle\fP.
If that function exists, it is invoked with the original command and
If that function exists, it is invoked in a separate execution environment
with the original command and
the original command's arguments as its arguments, and the function's
exit status becomes the exit status of the shell.
exit status becomes the exit status of that subshell.
If that function is not defined, the shell prints an error
message and returns an exit status of 127.
.PP
+4 -2
View File
@@ -8866,7 +8866,9 @@ fix errors in previous commands quickly.
<P>
History expansion is performed immediately after a complete line
is read, before the shell breaks it into words.
is read, before the shell breaks it into words, and is performed
on each line individually without taking quoting on previous lines into
account.
It takes place in two parts.
The first is to determine which line from the history list
to use during substitution.
@@ -13857,6 +13859,6 @@ There may be only one active coprocess at a time.
</DL>
<HR>
This document was created by man2html from bash.1.<BR>
Time: 23 August 2017 16:02:54 EDT
Time: 05 October 2017 14:35:31 EDT
</BODY>
</HTML>
+23 -22
View File
@@ -9196,7 +9196,8 @@ a previous command into the current input line, or fix errors in
previous commands quickly.
History expansion is performed immediately after a complete line is
read, before the shell breaks it into words.
read, before the shell breaks it into words, and is performed on each
line individually without taking quoting on previous lines into account.
History expansion takes place in two parts. The first is to
determine which line from the history list should be used during
@@ -11611,26 +11612,26 @@ Node: Using History Interactively384286
Node: Bash History Facilities384970
Node: Bash History Builtins387971
Node: History Interaction392263
Node: Event Designators395227
Node: Word Designators396446
Node: Modifiers398083
Node: Installing Bash399485
Node: Basic Installation400622
Node: Compilers and Options403313
Node: Compiling For Multiple Architectures404054
Node: Installation Names405717
Node: Specifying the System Type406535
Node: Sharing Defaults407251
Node: Operation Controls407924
Node: Optional Features408882
Node: Reporting Bugs419408
Node: Major Differences From The Bourne Shell420602
Node: GNU Free Documentation License437454
Node: Indexes462631
Node: Builtin Index463085
Node: Reserved Word Index469912
Node: Variable Index472360
Node: Function Index488038
Node: Concept Index501341
Node: Event Designators395325
Node: Word Designators396544
Node: Modifiers398181
Node: Installing Bash399583
Node: Basic Installation400720
Node: Compilers and Options403411
Node: Compiling For Multiple Architectures404152
Node: Installation Names405815
Node: Specifying the System Type406633
Node: Sharing Defaults407349
Node: Operation Controls408022
Node: Optional Features408980
Node: Reporting Bugs419506
Node: Major Differences From The Bourne Shell420700
Node: GNU Free Documentation License437552
Node: Indexes462729
Node: Builtin Index463183
Node: Reserved Word Index470010
Node: Variable Index472458
Node: Function Index488136
Node: Concept Index501439

End Tag Table
+2465 -2466
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+3 -1
View File
@@ -12546,7 +12546,9 @@ arguments to a previous command into the current input line, or
fix errors in previous commands quickly.
</p>
<p>History expansion is performed immediately after a complete line
is read, before the shell breaks it into words.
is read, before the shell breaks it into words, and is performed
on each line individually without taking quoting on previous lines into
account.
</p>
<p>History expansion takes place in two parts. The first is to determine
which line from the history list should be used during substitution.
+23 -22
View File
@@ -9196,7 +9196,8 @@ a previous command into the current input line, or fix errors in
previous commands quickly.
History expansion is performed immediately after a complete line is
read, before the shell breaks it into words.
read, before the shell breaks it into words, and is performed on each
line individually without taking quoting on previous lines into account.
History expansion takes place in two parts. The first is to
determine which line from the history list should be used during
@@ -11611,26 +11612,26 @@ Node: Using History Interactively384286
Node: Bash History Facilities384970
Node: Bash History Builtins387971
Node: History Interaction392263
Node: Event Designators395227
Node: Word Designators396446
Node: Modifiers398083
Node: Installing Bash399485
Node: Basic Installation400622
Node: Compilers and Options403313
Node: Compiling For Multiple Architectures404054
Node: Installation Names405717
Node: Specifying the System Type406535
Node: Sharing Defaults407251
Node: Operation Controls407924
Node: Optional Features408882
Node: Reporting Bugs419408
Node: Major Differences From The Bourne Shell420602
Node: GNU Free Documentation License437454
Node: Indexes462631
Node: Builtin Index463085
Node: Reserved Word Index469912
Node: Variable Index472360
Node: Function Index488038
Node: Concept Index501341
Node: Event Designators395325
Node: Word Designators396544
Node: Modifiers398181
Node: Installing Bash399583
Node: Basic Installation400720
Node: Compilers and Options403411
Node: Compiling For Multiple Architectures404152
Node: Installation Names405815
Node: Specifying the System Type406633
Node: Sharing Defaults407349
Node: Operation Controls408022
Node: Optional Features408980
Node: Reporting Bugs419506
Node: Major Differences From The Bourne Shell420700
Node: GNU Free Documentation License437552
Node: Indexes462729
Node: Builtin Index463183
Node: Reserved Word Index470010
Node: Variable Index472458
Node: Function Index488136
Node: Concept Index501439

End Tag Table
+18 -43
View File
@@ -1,11 +1,11 @@
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/MacPorts 2017_0) (preloaded format=pdfetex 2017.7.5) 23 AUG 2017 16:02
This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/MacPorts 2017_0) (preloaded format=etex 2017.7.5) 5 OCT 2017 14:35
entering extended mode
restricted \write18 enabled.
file:line:error style messages enabled.
%&-line parsing enabled.
**\input /usr/homes/chet/src/bash/src/doc/bashref.texi
(/usr/homes/chet/src/bash/src/doc/bashref.texi
(/Users/chet/src/bash/src/doc/texinfo.tex
**\catcode126=12 \def\normaltilde{~}\catcode126=13 \let~\normaltilde \input /u
sr/homes/chet/src/bash/src/doc/bashref.texi
(/usr/homes/chet/src/bash/src/doc/bashref.texi (./texinfo.tex
Loading texinfo [version 2015-11-22.14]:
\outerhsize=\dimen16
\outervsize=\dimen17
@@ -161,22 +161,18 @@ This is `epsf.tex' v2.7.4 <14 February 2011>
texinfo.tex: doing @include of version.texi
(/Users/chet/src/bash/src/doc/version.texi) [1{/opt/local/var/db/texmf/fonts/ma
p/pdftex/updmap/pdftex.map}] [2] (/Users/chet/src/bash/src/doc/bashref.toc
[-1] [-2] [-3]) [-4] (/Users/chet/src/bash/src/doc/bashref.toc)
(/Users/chet/src/bash/src/doc/bashref.toc) Chapter 1
(./version.texi) [1] [2] (./bashref.toc [-1] [-2] [-3]) [-4] Chapter 1
\openout0 = `bashref.toc'.
(/Users/chet/src/bash/src/doc/bashref.aux)
(./bashref.aux)
\openout1 = `bashref.aux'.
Chapter 2 [1] [2]
@cpindfile=@write2
\openout2 = `bashref.cp'.
[3] Chapter 3
[4] [5] [6]
[3] Chapter 3 [4] [5] [6]
@vrindfile=@write3
\openout3 = `bashref.vr'.
@@ -184,7 +180,8 @@ p/pdftex/updmap/pdftex.map}] [2] (/Users/chet/src/bash/src/doc/bashref.toc
@rwindfile=@write4
\openout4 = `bashref.rw'.
[8] [9] [10]
[8] [9]
[10]
Overfull \hbox (38.26587pt too wide) in paragraph at lines 879--879
[]@texttt case @textttsl word @texttt in [ [(] @textttsl pat-tern @texttt [| @
textttsl pattern@texttt ][]) @textttsl command-list @texttt ;;][] esac[]
@@ -383,38 +380,16 @@ Chapter 9 [139] [140] [141] [142] [143]) Chapter 10 [144] [145] [146] [147]
[157] [158] Appendix C [159]
texinfo.tex: doing @include of fdl.texi
(/Users/chet/src/bash/src/doc/fdl.texi [160]
[161] [162] [163] [164] [165] [166]) Appendix D [167] [168] [169] [170]
[171] [172] [173] [174] [175] [176] )
(./fdl.texi [160] [161] [162] [163] [164] [165]
[166]) Appendix D [167] [168] [169] [170] [171] [172] [173] [174] [175]
[176] )
Here is how much of TeX's memory you used:
4064 strings out of 497104
47069 string characters out of 6206767
136551 words of memory out of 5000000
4846 multiletter control sequences out of 15000+600000
3517 strings out of 497114
39615 string characters out of 6207173
86566 words of memory out of 5000000
4681 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/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 (182 pages, 743593 bytes).
PDF statistics:
2608 PDF objects out of 2984 (max. 8388607)
2381 compressed objects within 24 object streams
308 named destinations out of 1000 (max. 500000)
1125 words of extra memory for PDF output out of 10000 (max. 10000000)
16i,6n,16p,394b,936s stack positions out of 5000i,500n,10000p,200000b,80000s
Output written on bashref.dvi (182 pages, 756388 bytes).
+140 -139
View File
@@ -1,7 +1,7 @@
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.997 Copyright 2017 Radical Eye Software
%%Title: bashref.dvi
%%CreationDate: Wed Aug 23 20:02:50 2017
%%CreationDate: Thu Oct 5 18:35:29 2017
%%Pages: 182
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
@@ -12,7 +12,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi
%DVIPSParameters: dpi=600
%DVIPSSource: TeX output 2017.08.23:1602
%DVIPSSource: TeX output 2017.10.05:1435
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -18096,212 +18096,213 @@ b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(142)630
408 y(lines)36 b(en)m(tered)g(since)f(the)h(b)s(eginning)f(of)g(the)h
(curren)m(t)f(Bash)h(session,)h(but)1110 518 y(not)31
b(already)g(app)s(ended)d(to)j(the)g(history)f(\014le.)630
674 y Ft(-n)384 b Fu(App)s(end)32 b(the)i(history)f(lines)h(not)g
684 y Ft(-n)384 b Fu(App)s(end)32 b(the)i(history)f(lines)h(not)g
(already)g(read)g(from)f(the)h(history)f(\014le)h(to)1110
784 y(the)26 b(curren)m(t)f(history)g(list.)40 b(These)25
794 y(the)26 b(curren)m(t)f(history)g(list.)40 b(These)25
b(are)h(lines)g(app)s(ended)e(to)i(the)f(history)h(\014le)1110
893 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f(Bash)h
(session.)630 1049 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g(\014le)h
903 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f(Bash)h
(session.)630 1070 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g(\014le)h
(and)f(app)s(end)e(its)j(con)m(ten)m(ts)h(to)f(the)g(history)f(list.)
630 1205 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m(t)f
(history)g(list)h(to)h(the)e(history)g(\014le.)630 1361
630 1236 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m(t)f
(history)g(list)h(to)h(the)e(history)g(\014le.)630 1402
y Ft(-p)384 b Fu(P)m(erform)31 b(history)f(substitution)h(on)f(the)h
Fr(arg)8 b Fu(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110
1470 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g
(in)g(the)g(history)g(list.)630 1626 y Ft(-s)384 b Fu(The)30
1512 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g
(in)g(the)g(history)g(list.)630 1678 y Ft(-s)384 b Fu(The)30
b Fr(arg)8 b Fu(s)30 b(are)h(added)f(to)h(the)f(end)g(of)h(the)f
(history)h(list)g(as)f(a)h(single)g(en)m(try)-8 b(.)630
1782 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p
1844 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p
Fu(,)g Ft(-a)p Fu(,)g(or)f Ft(-n)f Fu(options)i(is)f(used,)h(if)f
Fr(\014lename)32 b Fu(is)26 b(giv)m(en,)i(then)e(it)h(is)630
1892 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28
1954 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28
b(not,)i(then)e(the)g(v)-5 b(alue)29 b(of)g(the)g Ft(HISTFILE)d
Fu(v)-5 b(ariable)29 b(is)f(used.)150 2129 y Fs(9.3)68
b(History)46 b(Expansion)150 2288 y Fu(The)f(History)h(library)e(pro)m
Fu(v)-5 b(ariable)29 b(is)f(used.)150 2204 y Fs(9.3)68
b(History)46 b(Expansion)150 2364 y Fu(The)f(History)h(library)e(pro)m
(vides)i(a)f(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g
(the)f(history)150 2398 y(expansion)g(pro)m(vided)f(b)m(y)h
(the)f(history)150 2473 y(expansion)g(pro)m(vided)f(b)m(y)h
Ft(csh)p Fu(.)83 b(This)44 b(section)i(describ)s(es)e(the)h(syn)m(tax)h
(used)e(to)i(manipulate)f(the)150 2508 y(history)30 b(information.)275
2640 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h
(used)e(to)i(manipulate)f(the)150 2583 y(history)30 b(information.)275
2724 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h
(history)f(list)h(in)m(to)g(the)g(input)f(stream,)h(making)150
2750 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen)
2834 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen)
m(ts)f(to)h(a)g(previous)f(command)g(in)m(to)i(the)e(curren)m(t)150
2860 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g
(quic)m(kly)-8 b(.)275 2992 y(History)40 b(expansion)g(is)h(p)s
(erformed)d(immediately)k(after)f(a)f(complete)i(line)f(is)f(read,)j(b)
s(efore)d(the)150 3102 y(shell)31 b(breaks)f(it)h(in)m(to)g(w)m(ords.)
275 3235 y(History)c(expansion)f(tak)m(es)i(place)f(in)f(t)m(w)m(o)i
(parts.)39 b(The)26 b(\014rst)g(is)g(to)h(determine)g(whic)m(h)f(line)h
(from)f(the)150 3344 y(history)i(list)g(should)f(b)s(e)g(used)g(during)
g(substitution.)39 b(The)27 b(second)h(is)g(to)h(select)g(p)s(ortions)e
(of)h(that)h(line)150 3454 y(for)d(inclusion)f(in)m(to)i(the)f(curren)m
(t)f(one.)40 b(The)25 b(line)h(selected)h(from)f(the)g(history)f(is)h
(called)h(the)f Fr(ev)m(en)m(t)p Fu(,)j(and)150 3563
y(the)21 b(p)s(ortions)g(of)g(that)h(line)f(that)h(are)g(acted)g(up)s
(on)e(are)h(called)h Fr(w)m(ords)p Fu(.)38 b(V)-8 b(arious)21
b Fr(mo)s(di\014ers)j Fu(are)e(a)m(v)-5 b(ailable)150
3673 y(to)35 b(manipulate)f(the)g(selected)i(w)m(ords.)51
2944 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g
(quic)m(kly)-8 b(.)275 3085 y(History)24 b(expansion)f(is)h(p)s
(erformed)e(immediately)j(after)f(a)g(complete)h(line)f(is)g(read,)h(b)
s(efore)e(the)h(shell)150 3194 y(breaks)30 b(it)h(in)m(to)h(w)m(ords,)e
(and)g(is)g(p)s(erformed)f(on)i(eac)m(h)g(line)g(individually)f
(without)h(taking)g(quoting)g(on)150 3304 y(previous)f(lines)g(in)m(to)
i(accoun)m(t.)275 3445 y(History)27 b(expansion)f(tak)m(es)i(place)f
(in)f(t)m(w)m(o)i(parts.)39 b(The)26 b(\014rst)g(is)g(to)h(determine)g
(whic)m(h)f(line)h(from)f(the)150 3555 y(history)i(list)g(should)f(b)s
(e)g(used)g(during)g(substitution.)39 b(The)27 b(second)h(is)g(to)h
(select)g(p)s(ortions)e(of)h(that)h(line)150 3664 y(for)d(inclusion)f
(in)m(to)i(the)f(curren)m(t)f(one.)40 b(The)25 b(line)h(selected)h
(from)f(the)g(history)f(is)h(called)h(the)f Fr(ev)m(en)m(t)p
Fu(,)j(and)150 3774 y(the)21 b(p)s(ortions)g(of)g(that)h(line)f(that)h
(are)g(acted)g(up)s(on)e(are)h(called)h Fr(w)m(ords)p
Fu(.)38 b(V)-8 b(arious)21 b Fr(mo)s(di\014ers)j Fu(are)e(a)m(v)-5
b(ailable)150 3884 y(to)35 b(manipulate)f(the)g(selected)i(w)m(ords.)51
b(The)33 b(line)h(is)g(brok)m(en)g(in)m(to)h(w)m(ords)e(in)h(the)g
(same)h(fashion)e(that)150 3783 y(Bash)i(do)s(es,)h(so)f(that)h(sev)m
(same)h(fashion)e(that)150 3993 y(Bash)i(do)s(es,)h(so)f(that)h(sev)m
(eral)g(w)m(ords)e(surrounded)f(b)m(y)i(quotes)g(are)g(considered)g
(one)g(w)m(ord.)54 b(History)150 3892 y(expansions)34
(one)g(w)m(ord.)54 b(History)150 4103 y(expansions)34
b(are)g(in)m(tro)s(duced)f(b)m(y)h(the)g(app)s(earance)g(of)g(the)g
(history)g(expansion)g(c)m(haracter,)i(whic)m(h)e(is)150
4002 y(`)p Ft(!)p Fu(')39 b(b)m(y)g(default.)66 b(Only)38
4212 y(`)p Ft(!)p Fu(')39 b(b)m(y)g(default.)66 b(Only)38
b(`)p Ft(\\)p Fu(')h(and)f(`)p Ft(')p Fu(')h(ma)m(y)h(b)s(e)e(used)g
(to)h(escap)s(e)h(the)f(history)f(expansion)h(c)m(haracter,)150
4111 y(but)27 b(the)i(history)f(expansion)g(c)m(haracter)i(is)e(also)h
4322 y(but)27 b(the)i(history)f(expansion)g(c)m(haracter)i(is)e(also)h
(treated)g(as)g(quoted)f(if)g(it)h(immediately)h(precedes)e(the)150
4221 y(closing)j(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275
4354 y(Sev)m(eral)40 b(shell)g(options)g(settable)h(with)e(the)h
4432 y(closing)j(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275
4573 y(Sev)m(eral)40 b(shell)g(options)g(settable)h(with)e(the)h
Ft(shopt)e Fu(builtin)h(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)150
4463 y(page)32 b(50\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)g(the)e(b)s
4682 y(page)32 b(50\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)g(the)e(b)s
(eha)m(vior)h(of)g(history)g(expansion.)44 b(If)31 b(the)h
Ft(histverify)d Fu(shell)150 4573 y(option)39 b(is)f(enabled,)i(and)e
Ft(histverify)d Fu(shell)150 4792 y(option)39 b(is)f(enabled,)i(and)e
(Readline)g(is)h(b)s(eing)e(used,)j(history)e(substitutions)g(are)g
(not)h(immediately)150 4682 y(passed)30 b(to)h(the)g(shell)g(parser.)40
(not)h(immediately)150 4902 y(passed)30 b(to)h(the)g(shell)g(parser.)40
b(Instead,)30 b(the)h(expanded)f(line)h(is)f(reloaded)h(in)m(to)h(the)e
(Readline)h(editing)150 4792 y(bu\013er)e(for)i(further)e(mo)s
(Readline)h(editing)150 5011 y(bu\013er)e(for)i(further)e(mo)s
(di\014cation.)41 b(If)30 b(Readline)h(is)f(b)s(eing)g(used,)g(and)g
(the)g Ft(histreedit)e Fu(shell)i(option)150 4902 y(is)k(enabled,)h(a)g
(the)g Ft(histreedit)e Fu(shell)i(option)150 5121 y(is)k(enabled,)h(a)g
(failed)g(history)f(expansion)g(will)g(b)s(e)g(reloaded)g(in)m(to)h
(the)g(Readline)f(editing)h(bu\013er)e(for)150 5011 y(correction.)68
(the)g(Readline)f(editing)h(bu\013er)e(for)150 5230 y(correction.)68
b(The)38 b Ft(-p)h Fu(option)g(to)h(the)f Ft(history)e
Fu(builtin)i(command)f(ma)m(y)i(b)s(e)e(used)g(to)i(see)g(what)f(a)150
5121 y(history)f(expansion)f(will)h(do)g(b)s(efore)f(using)h(it.)63
5340 y(history)f(expansion)f(will)h(do)g(b)s(efore)f(using)h(it.)63
b(The)37 b Ft(-s)g Fu(option)i(to)f(the)g Ft(history)e
Fu(builtin)h(ma)m(y)i(b)s(e)150 5230 y(used)21 b(to)i(add)f(commands)g
(to)g(the)h(end)e(of)i(the)f(history)g(list)h(without)f(actually)i
(executing)f(them,)h(so)e(that)150 5340 y(they)31 b(are)f(a)m(v)-5
b(ailable)33 b(for)d(subsequen)m(t)g(recall.)42 b(This)29
b(is)i(most)g(useful)e(in)h(conjunction)h(with)f(Readline.)p
eop end
Fu(builtin)h(ma)m(y)i(b)s(e)p eop end
%%Page: 143 149
TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(9:)41
b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(143)275
299 y(The)33 b(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g(v)-5
b(arious)34 b(c)m(haracters)h(used)f(b)m(y)f(the)h(history)g(expansion)
g(mec)m(h-)150 408 y(anism)h(with)g(the)g Ft(histchars)d
Fu(v)-5 b(ariable,)38 b(as)d(explained)g(ab)s(o)m(v)m(e)i(\(see)f
(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150 518 y(page)32
b(72\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g(commen)m(t)i(c)m
(haracter)f(to)g(mark)f(history)g(timestamps)h(when)150
628 y(writing)e(the)h(history)f(\014le.)150 830 y Fk(9.3.1)63
b(Ev)m(en)m(t)39 b(Designators)150 977 y Fu(An)32 b(ev)m(en)m(t)j
(designator)e(is)g(a)g(reference)g(to)h(a)f(command)f(line)h(en)m(try)g
(in)g(the)g(history)g(list.)48 b(Unless)33 b(the)150
1087 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts)f(are)g(relativ)m(e)i
(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h(history)f(list.)150
1251 y Ft(!)432 b Fu(Start)34 b(a)f(history)h(substitution,)g(except)g
(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h(tab,)f(the)g(end)f(of)630
1361 y(the)i(line,)g(`)p Ft(=)p Fu(')g(or)f(`)p Ft(\()p
Fu(')h(\(when)e(the)i Ft(extglob)d Fu(shell)j(option)f(is)h(enabled)f
(using)g(the)g Ft(shopt)630 1470 y Fu(builtin\).)150
1633 y Ft(!)p Fj(n)384 b Fu(Refer)30 b(to)i(command)e(line)g
Fr(n)p Fu(.)150 1796 y Ft(!-)p Fj(n)336 b Fu(Refer)30
b(to)i(the)e(command)g Fr(n)g Fu(lines)h(bac)m(k.)150
1958 y Ft(!!)384 b Fu(Refer)30 b(to)i(the)e(previous)g(command.)40
b(This)30 b(is)g(a)h(synon)m(ym)f(for)g(`)p Ft(!-1)p
Fu('.)150 2121 y Ft(!)p Fj(string)144 b Fu(Refer)25 b(to)h(the)f(most)h
(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t)g(p)s(osition)g(in)
g(the)g(history)630 2231 y(list)31 b(starting)g(with)f
Fr(string)p Fu(.)150 2394 y Ft(!?)p Fj(string)p Ft([?])630
2503 y Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)
g(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630
2613 y(list)32 b(con)m(taining)i Fr(string)p Fu(.)45
b(The)31 b(trailing)i(`)p Ft(?)p Fu(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f
(the)g Fr(string)39 b Fu(is)32 b(follo)m(w)m(ed)630 2722
y(immediately)g(b)m(y)e(a)h(newline.)150 2885 y Ft(^)p
Fj(string1)p Ft(^)p Fj(string2)p Ft(^)630 2995 y Fu(Quic)m(k)h
(Substitution.)44 b(Rep)s(eat)32 b(the)g(last)h(command,)f(replacing)g
Fr(string1)40 b Fu(with)31 b Fr(string2)p Fu(.)630 3104
y(Equiv)-5 b(alen)m(t)31 b(to)g Ft(!!:s/)p Fj(string1)p
Ft(/)p Fj(string2)p Ft(/)p Fu(.)150 3267 y Ft(!#)384
b Fu(The)30 b(en)m(tire)h(command)f(line)h(t)m(yp)s(ed)f(so)h(far.)150
3469 y Fk(9.3.2)63 b(W)-10 b(ord)41 b(Designators)150
3616 y Fu(W)-8 b(ord)27 b(designators)h(are)g(used)e(to)i(select)h
(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)41 b(A)27
b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150
3726 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61
b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(143)150
299 y(used)21 b(to)i(add)f(commands)g(to)g(the)h(end)e(of)i(the)f
(history)g(list)h(without)f(actually)i(executing)f(them,)h(so)e(that)
150 408 y(they)31 b(are)f(a)m(v)-5 b(ailable)33 b(for)d(subsequen)m(t)g
(recall.)42 b(This)29 b(is)i(most)g(useful)e(in)h(conjunction)h(with)f
(Readline.)275 551 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g
(v)-5 b(arious)34 b(c)m(haracters)h(used)f(b)m(y)f(the)h(history)g
(expansion)g(mec)m(h-)150 661 y(anism)h(with)g(the)g
Ft(histchars)d Fu(v)-5 b(ariable,)38 b(as)d(explained)g(ab)s(o)m(v)m(e)
i(\(see)f(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150
771 y(page)32 b(72\).)44 b(The)31 b(shell)g(uses)g(the)g(history)g
(commen)m(t)i(c)m(haracter)f(to)g(mark)f(history)g(timestamps)h(when)
150 880 y(writing)e(the)h(history)f(\014le.)150 1088
y Fk(9.3.1)63 b(Ev)m(en)m(t)39 b(Designators)150 1235
y Fu(An)32 b(ev)m(en)m(t)j(designator)e(is)g(a)g(reference)g(to)h(a)f
(command)f(line)h(en)m(try)g(in)g(the)g(history)g(list.)48
b(Unless)33 b(the)150 1344 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts)
f(are)g(relativ)m(e)i(to)e(the)f(curren)m(t)g(p)s(osition)h(in)f(the)h
(history)f(list.)150 1516 y Ft(!)432 b Fu(Start)34 b(a)f(history)h
(substitution,)g(except)g(when)f(follo)m(w)m(ed)i(b)m(y)e(a)h(space,)h
(tab,)f(the)g(end)f(of)630 1626 y(the)i(line,)g(`)p Ft(=)p
Fu(')g(or)f(`)p Ft(\()p Fu(')h(\(when)e(the)i Ft(extglob)d
Fu(shell)j(option)f(is)h(enabled)f(using)g(the)g Ft(shopt)630
1736 y Fu(builtin\).)150 1903 y Ft(!)p Fj(n)384 b Fu(Refer)30
b(to)i(command)e(line)g Fr(n)p Fu(.)150 2071 y Ft(!-)p
Fj(n)336 b Fu(Refer)30 b(to)i(the)e(command)g Fr(n)g
Fu(lines)h(bac)m(k.)150 2239 y Ft(!!)384 b Fu(Refer)30
b(to)i(the)e(previous)g(command.)40 b(This)30 b(is)g(a)h(synon)m(ym)f
(for)g(`)p Ft(!-1)p Fu('.)150 2407 y Ft(!)p Fj(string)144
b Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g
(the)g(curren)m(t)g(p)s(osition)g(in)g(the)g(history)630
2516 y(list)31 b(starting)g(with)f Fr(string)p Fu(.)150
2684 y Ft(!?)p Fj(string)p Ft([?])630 2794 y Fu(Refer)25
b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding)g(the)g(curren)m(t)
g(p)s(osition)g(in)g(the)g(history)630 2903 y(list)32
b(con)m(taining)i Fr(string)p Fu(.)45 b(The)31 b(trailing)i(`)p
Ft(?)p Fu(')f(ma)m(y)g(b)s(e)f(omitted)i(if)f(the)g Fr(string)39
b Fu(is)32 b(follo)m(w)m(ed)630 3013 y(immediately)g(b)m(y)e(a)h
(newline.)150 3181 y Ft(^)p Fj(string1)p Ft(^)p Fj(string2)p
Ft(^)630 3290 y Fu(Quic)m(k)h(Substitution.)44 b(Rep)s(eat)32
b(the)g(last)h(command,)f(replacing)g Fr(string1)40 b
Fu(with)31 b Fr(string2)p Fu(.)630 3400 y(Equiv)-5 b(alen)m(t)31
b(to)g Ft(!!:s/)p Fj(string1)p Ft(/)p Fj(string2)p Ft(/)p
Fu(.)150 3568 y Ft(!#)384 b Fu(The)30 b(en)m(tire)h(command)f(line)h(t)
m(yp)s(ed)f(so)h(far.)150 3775 y Fk(9.3.2)63 b(W)-10
b(ord)41 b(Designators)150 3922 y Fu(W)-8 b(ord)27 b(designators)h(are)
g(used)e(to)i(select)h(desired)d(w)m(ords)h(from)f(the)i(ev)m(en)m(t.)
41 b(A)27 b(`)p Ft(:)p Fu(')g(separates)h(the)f(ev)m(en)m(t)150
4032 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61
b(It)37 b(ma)m(y)h(b)s(e)e(omitted)i(if)e(the)h(w)m(ord)g(designator)g
(b)s(egins)150 3836 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p
(b)s(egins)150 4142 y(with)30 b(a)g(`)p Ft(^)p Fu(',)g(`)p
Ft($)p Fu(',)g(`)p Ft(*)p Fu(',)h(`)p Ft(-)p Fu(',)f(or)g(`)p
Ft(\045)p Fu('.)41 b(W)-8 b(ords)30 b(are)g(n)m(um)m(b)s(ered)e(from)i
(the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)150
3945 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).)
4251 y(\014rst)f(w)m(ord)f(b)s(eing)h(denoted)h(b)m(y)f(0)h(\(zero\).)
41 b(W)-8 b(ords)30 b(are)g(inserted)f(in)m(to)h(the)g(curren)m(t)f
(line)g(separated)h(b)m(y)150 4055 y(single)h(spaces.)275
4193 y(F)-8 b(or)31 b(example,)150 4357 y Ft(!!)384 b
(line)g(separated)h(b)m(y)150 4361 y(single)h(spaces.)275
4504 y(F)-8 b(or)31 b(example,)150 4676 y Ft(!!)384 b
Fu(designates)37 b(the)f(preceding)g(command.)57 b(When)35
b(y)m(ou)i(t)m(yp)s(e)f(this,)h(the)f(preceding)g(com-)630
4467 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 4629
4785 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 4953
y Ft(!!:$)288 b Fu(designates)23 b(the)g(last)g(argumen)m(t)g(of)f(the)
h(preceding)f(command.)38 b(This)22 b(ma)m(y)h(b)s(e)e(shortened)630
4739 y(to)31 b Ft(!$)p Fu(.)150 4902 y Ft(!fi:2)240 b
5063 y(to)31 b Ft(!$)p Fu(.)150 5230 y Ft(!fi:2)240 b
Fu(designates)30 b(the)g(second)f(argumen)m(t)h(of)f(the)h(most)f
(recen)m(t)i(command)e(starting)h(with)f(the)630 5011
y(letters)j Ft(fi)p Fu(.)275 5176 y(Here)e(are)h(the)g(w)m(ord)f
(designators:)150 5340 y Ft(0)g(\(zero\))114 b Fu(The)30
b Ft(0)p Fu(th)g(w)m(ord.)40 b(F)-8 b(or)31 b(man)m(y)g(applications,)h
(this)e(is)g(the)h(command)f(w)m(ord.)p eop end
(recen)m(t)i(command)e(starting)h(with)f(the)630 5340
y(letters)j Ft(fi)p Fu(.)p eop end
%%Page: 144 150
TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(9:)41
b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(144)150
299 y Fj(n)432 b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150
458 y Ft(^)432 b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m
(ord)g(1.)150 618 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150
777 y Ft(\045)432 b Fu(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h
b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(144)275
299 y(Here)30 b(are)h(the)g(w)m(ord)f(designators:)150
458 y Ft(0)g(\(zero\))114 b Fu(The)30 b Ft(0)p Fu(th)g(w)m(ord.)40
b(F)-8 b(or)31 b(man)m(y)g(applications,)h(this)e(is)g(the)h(command)f
(w)m(ord.)150 617 y Fj(n)432 b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150
776 y Ft(^)432 b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m
(ord)g(1.)150 935 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150
1094 y Ft(\045)432 b Fu(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h
(most)g(recen)m(t)g(`)p Ft(?)p Fj(string)p Ft(?)p Fu(')e(searc)m(h.)150
936 y Fj(x)p Ft(-)p Fj(y)336 b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p
1253 y Fj(x)p Ft(-)p Fj(y)336 b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p
Ft(-)p Fj(y)p Fu(')g(abbreviates)h(`)p Ft(0-)p Fj(y)p
Fu('.)150 1096 y Ft(*)432 b Fu(All)28 b(of)g(the)g(w)m(ords,)g(except)h
Fu('.)150 1412 y Ft(*)432 b Fu(All)28 b(of)g(the)g(w)m(ords,)g(except)h
(the)e Ft(0)p Fu(th.)40 b(This)27 b(is)g(a)h(synon)m(ym)f(for)h(`)p
Ft(1-$)p Fu('.)39 b(It)28 b(is)g(not)g(an)f(error)630
1205 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m
1521 y(to)j(use)g(`)p Ft(*)p Fu(')f(if)h(there)g(is)g(just)f(one)h(w)m
(ord)f(in)g(the)h(ev)m(en)m(t;)i(the)d(empt)m(y)i(string)e(is)h
(returned)e(in)630 1315 y(that)j(case.)150 1474 y Fj(x)p
(returned)e(in)630 1631 y(that)j(case.)150 1790 y Fj(x)p
Ft(*)384 b Fu(Abbreviates)31 b(`)p Fj(x)p Ft(-$)p Fu(')150
1634 y Fj(x)p Ft(-)384 b Fu(Abbreviates)31 b(`)p Fj(x)p
1949 y Fj(x)p Ft(-)384 b Fu(Abbreviates)31 b(`)p Fj(x)p
Ft(-$)p Fu(')f(lik)m(e)h(`)p Fj(x)p Ft(*)p Fu(',)g(but)f(omits)h(the)f
(last)h(w)m(ord.)275 1793 y(If)i(a)h(w)m(ord)g(designator)g(is)g
(last)h(w)m(ord.)275 2108 y(If)i(a)h(w)m(ord)g(designator)g(is)g
(supplied)f(without)h(an)g(ev)m(en)m(t)h(sp)s(eci\014cation,)h(the)e
(previous)f(command)150 1903 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150
2102 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 2249 y Fu(After)29
(previous)f(command)150 2217 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150
2416 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 2563 y Fu(After)29
b(the)g(optional)g(w)m(ord)g(designator,)g(y)m(ou)g(can)g(add)f(a)h
(sequence)g(of)g(one)g(or)f(more)h(of)g(the)f(follo)m(wing)150
2359 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p
Ft(:)p Fu('.)150 2518 y Ft(h)432 b Fu(Remo)m(v)m(e)32
2672 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p
Ft(:)p Fu('.)150 2831 y Ft(h)432 b Fu(Remo)m(v)m(e)32
b(a)f(trailing)g(pathname)g(comp)s(onen)m(t,)g(lea)m(ving)h(only)e(the)
h(head.)150 2677 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h
h(head.)150 2990 y Ft(t)432 b Fu(Remo)m(v)m(e)32 b(all)f(leading)h
(pathname)e(comp)s(onen)m(ts,)h(lea)m(ving)h(the)e(tail.)150
2837 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g
3149 y Ft(r)432 b Fu(Remo)m(v)m(e)32 b(a)f(trailing)g(su\016x)f(of)g
(the)h(form)f(`)p Ft(.)p Fj(suffix)p Fu(',)f(lea)m(ving)j(the)f
(basename.)150 2996 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h
(trailing)g(su\016x.)150 3156 y Ft(p)432 b Fu(Prin)m(t)30
(basename.)150 3308 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h
(trailing)g(su\016x.)150 3467 y Ft(p)432 b Fu(Prin)m(t)30
b(the)h(new)f(command)g(but)g(do)g(not)g(execute)i(it.)150
3315 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g(w)m(ords,)g
(escaping)h(further)e(substitutions.)150 3474 y Ft(x)432
3626 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g(w)m(ords,)g
(escaping)h(further)e(substitutions.)150 3785 y Ft(x)432
b Fu(Quote)32 b(the)f(substituted)g(w)m(ords)f(as)i(with)f(`)p
Ft(q)p Fu(',)h(but)e(break)h(in)m(to)i(w)m(ords)d(at)i(spaces,)h(tabs,)
630 3584 y(and)d(newlines.)150 3743 y Ft(s/)p Fj(old)p
Ft(/)p Fj(new)p Ft(/)630 3853 y Fu(Substitute)i Fr(new)40
630 3895 y(and)d(newlines.)150 4054 y Ft(s/)p Fj(old)p
Ft(/)p Fj(new)p Ft(/)630 4163 y Fu(Substitute)i Fr(new)40
b Fu(for)32 b(the)h(\014rst)f(o)s(ccurrence)h(of)f Fr(old)37
b Fu(in)32 b(the)h(ev)m(en)m(t)h(line.)48 b(An)m(y)32
b(delimiter)630 3963 y(ma)m(y)25 b(b)s(e)g(used)f(in)g(place)i(of)f(`)p
b(delimiter)630 4273 y(ma)m(y)25 b(b)s(e)g(used)f(in)g(place)i(of)f(`)p
Ft(/)p Fu('.)39 b(The)24 b(delimiter)h(ma)m(y)h(b)s(e)e(quoted)h(in)f
Fr(old)29 b Fu(and)24 b Fr(new)32 b Fu(with)25 b(a)630
4072 y(single)k(bac)m(kslash.)40 b(If)28 b(`)p Ft(&)p
4382 y(single)k(bac)m(kslash.)40 b(If)28 b(`)p Ft(&)p
Fu(')g(app)s(ears)g(in)f Fr(new)p Fu(,)i(it)f(is)h(replaced)f(b)m(y)g
Fr(old)p Fu(.)40 b(A)28 b(single)h(bac)m(kslash)630 4182
Fr(old)p Fu(.)40 b(A)28 b(single)h(bac)m(kslash)630 4492
y(will)35 b(quote)g(the)g(`)p Ft(&)p Fu('.)54 b(The)34
b(\014nal)g(delimiter)i(is)e(optional)i(if)f(it)g(is)f(the)h(last)h(c)m
(haracter)g(on)630 4291 y(the)31 b(input)e(line.)150
4451 y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150
4610 y Ft(g)150 4720 y(a)432 b Fu(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f
(haracter)g(on)630 4602 y(the)31 b(input)e(line.)150
4761 y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150
4919 y Ft(g)150 5029 y(a)432 b Fu(Cause)38 b(c)m(hanges)i(to)f(b)s(e)f
(applied)h(o)m(v)m(er)h(the)f(en)m(tire)g(ev)m(en)m(t)h(line.)66
b(Used)39 b(in)f(conjunction)630 4829 y(with)30 b(`)p
b(Used)39 b(in)f(conjunction)630 5139 y(with)30 b(`)p
Ft(s)p Fu(',)h(as)f(in)h Ft(gs/)p Fj(old)p Ft(/)p Fj(new)p
Ft(/)p Fu(,)c(or)j(with)h(`)p Ft(&)p Fu('.)150 4989 y
Ft(/)p Fu(,)c(or)j(with)h(`)p Ft(&)p Fu('.)150 5298 y
Ft(G)432 b Fu(Apply)30 b(the)g(follo)m(wing)i(`)p Ft(s)p
Fu(')f(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m(ord)e(in)g(the)g(ev)m
(en)m(t.)p eop end
+3 -2
View File
@@ -3003,9 +3003,10 @@ A full search of the directories in @env{$PATH}
is performed only if the command is not found in the hash table.
If the search is unsuccessful, the shell searches for a defined shell
function named @code{command_not_found_handle}.
If that function exists, it is invoked with the original command and
If that function exists, it is invoked in a separate execution environment
with the original command and
the original command's arguments as its arguments, and the function's
exit status becomes the exit status of the shell.
exit status becomes the exit status of that subshell.
If that function is not defined, the shell prints an error
message and returns an exit status of 127.
+1 -1
View File
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.22.3
%%CreationDate: Wed Aug 23 16:02:43 2017
%%CreationDate: Thu Oct 5 14:35:22 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 Aug 23 16:02:43 2017
%%CreationDate: Thu Oct 5 14:35:23 2017
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%DocumentSuppliedResources: procset grops 1.22 3
+3 -3
View File
@@ -2,10 +2,10 @@
Copyright (C) 1988-2017 Free Software Foundation, Inc.
@end ignore
@set LASTCHANGE Fri Jun 23 12:42:54 EDT 2017
@set LASTCHANGE Sat Oct 7 17:29:58 EDT 2017
@set EDITION 4.4
@set VERSION 4.4
@set UPDATED 23 June 2017
@set UPDATED-MONTH June 2017
@set UPDATED 7 October 2017
@set UPDATED-MONTH October 2017
+9 -8
View File
@@ -6,9 +6,9 @@
.\" Case Western Reserve University
.\" chet.ramey@case.edu
.\"
.\" Last Change: Sun May 24 18:01:17 EDT 2015
.\" Last Change: Sun Oct 8 11:43:43 EDT 2017
.\"
.TH HISTORY 3 "2015 May 24" "GNU History 6.3"
.TH HISTORY 3 "2017 October 8" "GNU History 6.3"
.\"
.\" File Name macro. This used to be `.PN', for Path Name,
.\" but Sun doesn't seem to like that very much.
@@ -40,8 +40,8 @@
.SH NAME
history \- GNU History Library
.SH COPYRIGHT
.if t The GNU History Library is Copyright \(co 1989-2014 by the Free Software Foundation, Inc.
.if n The GNU History Library is Copyright (C) 1989-2014 by the Free Software Foundation, Inc.
.if t The GNU History Library is Copyright \(co 1989-2017 by the Free Software Foundation, Inc.
.if n The GNU History Library is Copyright (C) 1989-2017 by the Free Software Foundation, Inc.
.SH DESCRIPTION
Many programs read input from the user a line at a time. The GNU
History library is able to keep track of those lines, associate arbitrary
@@ -411,10 +411,11 @@ Return the history entry at the current position, as determined by
pointer.
.Fn1 "HIST_ENTRY *" history_get "int offset"
Return the history entry at position \fIoffset\fP, starting from
\fBhistory_base\fP.
If there is no entry there, or if \fIoffset\fP
is greater than the history length, return a \fBNULL\fP pointer.
Return the history entry at position \fIoffset\fP.
The range of valid values of \fIoffset\fP starts at \fBhistory_base\fP
and ends at \fBhistory_length\fP \- 1.
If there is no entry there, or if \fIoffset\fP is outside the valid
range, return a \fBNULL\fP pointer.
.Fn1 "time_t" history_get_time "HIST_ENTRY *"
Return the time stamp associated with the history entry passed as the argument.
+6 -4
View File
@@ -234,10 +234,12 @@ pointer.
@end deftypefun
@deftypefun {HIST_ENTRY *} history_get (int offset)
Return the history entry at position @var{offset}, starting from
@code{history_base} (@pxref{History Variables}).
If there is no entry there, or if @var{offset}
is greater than the history length, return a @code{NULL} pointer.
Return the history entry at position @var{offset}.
The range of valid
values of @var{offset} starts at @code{history_base} and ends at
@var{history_length} - 1 (@pxref{History Variables}).
If there is no entry there, or if @var{offset} is outside the valid
range, return a @code{NULL} pointer.
@end deftypefun
@deftypefun time_t history_get_time (HIST_ENTRY *entry)
+3 -3
View File
@@ -4,7 +4,7 @@ Copyright (C) 1988-2017 Free Software Foundation, Inc.
@set EDITION 7.0
@set VERSION 7.0
@set UPDATED 4 July 2017
@set UPDATED-MONTH July 2017
@set UPDATED 8 October 2017
@set UPDATED-MONTH October 2017
@set LASTCHANGE Tue Jul 4 16:32:48 EDT 2017
@set LASTCHANGE Sun Oct 8 11:44:33 EDT 2017
+4 -1
View File
@@ -229,7 +229,10 @@ singlebyte:
else
{
m = mbrtowc (&wc, string + start, end - start, &state);
if (MB_INVALIDCH (m) || m == 1)
/* Have to go through case conversion even for single-byte chars, to
accommodate single-byte characters where the corresponding upper
or lower case equivalent is multibyte. */
if (MB_INVALIDCH (m))
{
wc = (unsigned char)string[start];
goto singlebyte;
+20 -11
View File
@@ -236,7 +236,7 @@ static inline char *expand_string_to_string_internal __P((char *, int, EXPFUNC *
static WORD_LIST *call_expand_word_internal __P((WORD_DESC *, int, int, int *, int *));
static WORD_LIST *expand_string_internal __P((char *, int));
static WORD_LIST *expand_string_leave_quoted __P((char *, int));
static WORD_LIST *expand_string_for_rhs __P((char *, int, int, int *, int *));
static WORD_LIST *expand_string_for_rhs __P((char *, int, int, int, int *, int *));
static WORD_LIST *expand_string_for_pat __P((char *, int, int *, int *));
static WORD_LIST *list_quote_escapes __P((WORD_LIST *));
@@ -447,6 +447,11 @@ dump_word_flags (flags)
f &= ~W_ASSIGNRHS;
fprintf (stderr, "W_ASSIGNRHS%s", f ? "|" : "");
}
if (f & W_NOASSNTILDE)
{
f &= ~W_NOASSNTILDE;
fprintf (stderr, "W_NOASSNTILDE%s", f ? "|" : "");
}
if (f & W_NOCOMSUB)
{
f &= ~W_NOCOMSUB;
@@ -3833,13 +3838,14 @@ expand_string_leave_quoted (string, quoted)
/* This does not perform word splitting or dequote the WORD_LIST
it returns. */
static WORD_LIST *
expand_string_for_rhs (string, quoted, op, dollar_at_p, expanded_p)
expand_string_for_rhs (string, quoted, op, pflags, dollar_at_p, expanded_p)
char *string;
int quoted, op;
int quoted, op, pflags;
int *dollar_at_p, *expanded_p;
{
WORD_DESC td;
WORD_LIST *tresult;
int old_nosplit;
if (string == 0 || *string == '\0')
return (WORD_LIST *)NULL;
@@ -3849,20 +3855,23 @@ expand_string_for_rhs (string, quoted, op, dollar_at_p, expanded_p)
we expand here. However, the expansion of $* is determined by whether we
are going to eventually perform word splitting, so we want to set this
depending on whether or not are are going to be splitting: if the expansion
is quoted, if the OP is `=', or if IFS is set to the empty string, we
is quoted, if the OP is `=', or if IFS is set to the empty string, we
are not going to be splitting, so we set expand_no_split_dollar_star to
1. This may need additional changes depending on whether or not this is
on the RHS of an assignment statement. */
We pass through PF_ASSIGNRHS as W_ASSIGNRHS if this is on the RHS of an
assignment statement. */
/* The updated treatment of $* is the result of Posix interp 888 */
/* This was further clarified on the austin-group list in March, 2017 and
in Posix bug 1129 */
old_nosplit = expand_no_split_dollar_star;
expand_no_split_dollar_star = (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || op == '=' || ifs_is_null == 0; /* XXX - was 1 */
/* You'd think Posix specifies W_ASSIGNRHS, but it results in tilde expansion
after `=' and `:' the rhs of ${param=word} */
td.flags = W_NOSPLIT2; /* no splitting, remove "" and '' */
if (pflags & PF_ASSIGNRHS) /* pass through */
td.flags |= W_ASSIGNRHS;
if (op == '=')
td.flags |= W_ASSIGNRHS; /* expand b in ${a=b} like assignment */
td.word = string;
tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p);
expand_no_split_dollar_star = 0;
expand_no_split_dollar_star = old_nosplit;
return (tresult);
}
@@ -6633,7 +6642,7 @@ parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdoll
w = alloc_word_desc ();
l_hasdollat = 0;
l = *temp ? expand_string_for_rhs (temp, quoted, op, &l_hasdollat, (int *)NULL)
l = *temp ? expand_string_for_rhs (temp, quoted, op, pflags, &l_hasdollat, (int *)NULL)
: (WORD_LIST *)0;
if (hasdollarat)
*hasdollarat = l_hasdollat || (l && l->next);
@@ -9573,7 +9582,7 @@ add_string:
goto add_character;
case ':':
if (word->flags & W_NOTILDE)
if (word->flags & (W_NOTILDE|W_NOASSNTILDE))
{
if (isexp == 0 && (word->flags & (W_NOSPLIT|W_NOSPLIT2)) == 0 && isifs (c))
goto add_ifs_character;