mirror of
https://https.git.savannah.gnu.org/git/bash.git
synced 2026-06-26 15:23:09 +02:00
addition to POSIX mode documentation; new translations; update copyrights on some files; update formatted documentation; changes to cut/lcut loadable builtins when supplied -a ARRAY
This commit is contained in:
@@ -792,6 +792,7 @@ examples/loadables/csv.c f
|
||||
examples/loadables/dsv.c f
|
||||
examples/loadables/kv.c f
|
||||
examples/loadables/cut.c f
|
||||
examples/loadables/ocut.c f
|
||||
examples/loadables/logname.c f
|
||||
examples/loadables/basename.c f
|
||||
examples/loadables/dirname.c f
|
||||
|
||||
@@ -362,14 +362,23 @@ The following list is what's changed when POSIX mode is in effect:
|
||||
75. Bash removes an exited background process's status from the list
|
||||
of such statuses after the ‘wait’ builtin returns it.
|
||||
|
||||
There is other POSIX behavior that Bash does not implement by default
|
||||
even when in POSIX mode. Specifically:
|
||||
There is additional POSIX behavior that Bash does not implement by
|
||||
default even when in POSIX mode. Specifically:
|
||||
|
||||
1. The ‘fc’ builtin checks ‘$EDITOR’ as a program to edit history
|
||||
1. POSIX requires that word splitting be byte-oriented. That is, each
|
||||
_byte_ in the value of ‘IFS’ potentially splits a word, even if
|
||||
that byte is part of a multibyte character in ‘IFS’ or part of
|
||||
multibyte character in the word. Bash allows multibyte characters
|
||||
in the value of ‘IFS’, treating a valid multibyte character as a
|
||||
single delimiter, and will not split a valid multibyte character
|
||||
even if one of the bytes composing that character appears in ‘IFS’.
|
||||
This is POSIX interpretation 1560, further modified by issue 1924.
|
||||
|
||||
2. The ‘fc’ builtin checks ‘$EDITOR’ as a program to edit history
|
||||
entries if ‘FCEDIT’ is unset, rather than defaulting directly to
|
||||
‘ed’. ‘fc’ uses ‘ed’ if ‘EDITOR’ is unset.
|
||||
|
||||
2. As noted above, Bash requires the ‘xpg_echo’ option to be enabled
|
||||
3. As noted above, Bash requires the ‘xpg_echo’ option to be enabled
|
||||
for the ‘echo’ builtin to be fully conformant.
|
||||
|
||||
Bash can be configured to be POSIX-conformant by default, by specifying
|
||||
|
||||
+150
-142
@@ -1,9 +1,9 @@
|
||||
This is bash.info, produced by makeinfo version 7.1 from bashref.texi.
|
||||
This is bash.info, produced by makeinfo version 7.2 from bashref.texi.
|
||||
|
||||
This text is a brief description of the features that are present in the
|
||||
Bash shell (version 5.3, 7 April 2025).
|
||||
Bash shell (version 5.3, 18 May 2025).
|
||||
|
||||
This is Edition 5.3, last updated 7 April 2025, of ‘The GNU Bash
|
||||
This is Edition 5.3, last updated 18 May 2025, of ‘The GNU Bash
|
||||
Reference Manual’, for ‘Bash’, Version 5.3.
|
||||
|
||||
Copyright © 1988-2025 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, 7 April 2025). The Bash home page is
|
||||
Bash shell (version 5.3, 18 May 2025). The Bash home page is
|
||||
<http://www.gnu.org/software/bash/>.
|
||||
|
||||
This is Edition 5.3, last updated 7 April 2025, of ‘The GNU Bash
|
||||
This is Edition 5.3, last updated 18 May 2025, of ‘The GNU Bash
|
||||
Reference Manual’, for ‘Bash’, Version 5.3.
|
||||
|
||||
Bash contains features that appear in other popular shells, and some
|
||||
@@ -7990,14 +7990,23 @@ startup files.
|
||||
75. Bash removes an exited background process's status from the list
|
||||
of such statuses after the ‘wait’ builtin returns it.
|
||||
|
||||
There is other POSIX behavior that Bash does not implement by default
|
||||
even when in POSIX mode. Specifically:
|
||||
There is additional POSIX behavior that Bash does not implement by
|
||||
default even when in POSIX mode. Specifically:
|
||||
|
||||
1. The ‘fc’ builtin checks ‘$EDITOR’ as a program to edit history
|
||||
1. POSIX requires that word splitting be byte-oriented. That is, each
|
||||
_byte_ in the value of ‘IFS’ potentially splits a word, even if
|
||||
that byte is part of a multibyte character in ‘IFS’ or part of
|
||||
multibyte character in the word. Bash allows multibyte characters
|
||||
in the value of ‘IFS’, treating a valid multibyte character as a
|
||||
single delimiter, and will not split a valid multibyte character
|
||||
even if one of the bytes composing that character appears in ‘IFS’.
|
||||
This is POSIX interpretation 1560, further modified by issue 1924.
|
||||
|
||||
2. The ‘fc’ builtin checks ‘$EDITOR’ as a program to edit history
|
||||
entries if ‘FCEDIT’ is unset, rather than defaulting directly to
|
||||
‘ed’. ‘fc’ uses ‘ed’ if ‘EDITOR’ is unset.
|
||||
|
||||
2. As noted above, Bash requires the ‘xpg_echo’ option to be enabled
|
||||
3. As noted above, Bash requires the ‘xpg_echo’ option to be enabled
|
||||
for the ‘echo’ builtin to be fully conformant.
|
||||
|
||||
Bash can be configured to be POSIX-conformant by default, by
|
||||
@@ -13600,141 +13609,140 @@ D.5 Concept Index
|
||||
* yanking text: Readline Killing Commands.
|
||||
(line 6)
|
||||
|
||||
|
||||
|
||||
Tag Table:
|
||||
Node: Top893
|
||||
Node: Introduction2826
|
||||
Node: What is Bash?3039
|
||||
Node: What is a shell?4172
|
||||
Node: Definitions6782
|
||||
Node: Basic Shell Features10109
|
||||
Node: Shell Syntax11333
|
||||
Node: Shell Operation12360
|
||||
Node: Quoting13651
|
||||
Node: Escape Character14989
|
||||
Node: Single Quotes15524
|
||||
Node: Double Quotes15873
|
||||
Node: ANSI-C Quoting17218
|
||||
Node: Locale Translation18612
|
||||
Node: Creating Internationalized Scripts20015
|
||||
Node: Comments24213
|
||||
Node: Shell Commands24980
|
||||
Node: Reserved Words25919
|
||||
Node: Simple Commands26784
|
||||
Node: Pipelines27446
|
||||
Node: Lists30702
|
||||
Node: Compound Commands32574
|
||||
Node: Looping Constructs33583
|
||||
Node: Conditional Constructs36132
|
||||
Node: Command Grouping51202
|
||||
Node: Coprocesses52694
|
||||
Node: GNU Parallel55380
|
||||
Node: Shell Functions56298
|
||||
Node: Shell Parameters64746
|
||||
Node: Positional Parameters69647
|
||||
Node: Special Parameters70737
|
||||
Node: Shell Expansions74198
|
||||
Node: Brace Expansion76387
|
||||
Node: Tilde Expansion79723
|
||||
Node: Shell Parameter Expansion82678
|
||||
Node: Command Substitution103321
|
||||
Node: Arithmetic Expansion106850
|
||||
Node: Process Substitution108026
|
||||
Node: Word Splitting109134
|
||||
Node: Filename Expansion111578
|
||||
Node: Pattern Matching114802
|
||||
Node: Quote Removal120525
|
||||
Node: Redirections120829
|
||||
Node: Executing Commands131092
|
||||
Node: Simple Command Expansion131759
|
||||
Node: Command Search and Execution133867
|
||||
Node: Command Execution Environment136311
|
||||
Node: Environment139759
|
||||
Node: Exit Status141662
|
||||
Node: Signals143720
|
||||
Node: Shell Scripts148649
|
||||
Node: Shell Builtin Commands151947
|
||||
Node: Bourne Shell Builtins154058
|
||||
Node: Bash Builtins180705
|
||||
Node: Modifying Shell Behavior217629
|
||||
Node: The Set Builtin217971
|
||||
Node: The Shopt Builtin229965
|
||||
Node: Special Builtins247017
|
||||
Node: Shell Variables248006
|
||||
Node: Bourne Shell Variables248440
|
||||
Node: Bash Variables250948
|
||||
Node: Bash Features290072
|
||||
Node: Invoking Bash291086
|
||||
Node: Bash Startup Files297670
|
||||
Node: Interactive Shells302912
|
||||
Node: What is an Interactive Shell?303320
|
||||
Node: Is this Shell Interactive?303982
|
||||
Node: Interactive Shell Behavior304806
|
||||
Node: Bash Conditional Expressions308567
|
||||
Node: Shell Arithmetic313984
|
||||
Node: Aliases317313
|
||||
Node: Arrays320447
|
||||
Node: The Directory Stack328035
|
||||
Node: Directory Stack Builtins328832
|
||||
Node: Controlling the Prompt333277
|
||||
Node: The Restricted Shell336162
|
||||
Node: Bash POSIX Mode339044
|
||||
Node: Shell Compatibility Mode357401
|
||||
Node: Job Control366408
|
||||
Node: Job Control Basics366865
|
||||
Node: Job Control Builtins373233
|
||||
Node: Job Control Variables379915
|
||||
Node: Command Line Editing381146
|
||||
Node: Introduction and Notation382849
|
||||
Node: Readline Interaction385201
|
||||
Node: Readline Bare Essentials386389
|
||||
Node: Readline Movement Commands388197
|
||||
Node: Readline Killing Commands389193
|
||||
Node: Readline Arguments391216
|
||||
Node: Searching392273
|
||||
Node: Readline Init File394516
|
||||
Node: Readline Init File Syntax395819
|
||||
Node: Conditional Init Constructs422644
|
||||
Node: Sample Init File427029
|
||||
Node: Bindable Readline Commands430149
|
||||
Node: Commands For Moving431687
|
||||
Node: Commands For History434151
|
||||
Node: Commands For Text439541
|
||||
Node: Commands For Killing443666
|
||||
Node: Numeric Arguments446454
|
||||
Node: Commands For Completion447606
|
||||
Node: Keyboard Macros453302
|
||||
Node: Miscellaneous Commands454003
|
||||
Node: Readline vi Mode460570
|
||||
Node: Programmable Completion461547
|
||||
Node: Programmable Completion Builtins470284
|
||||
Node: A Programmable Completion Example482021
|
||||
Node: Using History Interactively487366
|
||||
Node: Bash History Facilities488047
|
||||
Node: Bash History Builtins491782
|
||||
Node: History Interaction498253
|
||||
Node: Event Designators503203
|
||||
Node: Word Designators504781
|
||||
Node: Modifiers507173
|
||||
Node: Installing Bash509110
|
||||
Node: Basic Installation510226
|
||||
Node: Compilers and Options514102
|
||||
Node: Compiling For Multiple Architectures514852
|
||||
Node: Installation Names516605
|
||||
Node: Specifying the System Type518839
|
||||
Node: Sharing Defaults519585
|
||||
Node: Operation Controls520299
|
||||
Node: Optional Features521318
|
||||
Node: Reporting Bugs533698
|
||||
Node: Major Differences From The Bourne Shell535055
|
||||
Node: GNU Free Documentation License556481
|
||||
Node: Indexes581658
|
||||
Node: Builtin Index582109
|
||||
Node: Reserved Word Index589207
|
||||
Node: Variable Index591652
|
||||
Node: Function Index609065
|
||||
Node: Concept Index623060
|
||||
Node: Top891
|
||||
Node: Introduction2822
|
||||
Node: What is Bash?3035
|
||||
Node: What is a shell?4168
|
||||
Node: Definitions6778
|
||||
Node: Basic Shell Features10105
|
||||
Node: Shell Syntax11329
|
||||
Node: Shell Operation12356
|
||||
Node: Quoting13647
|
||||
Node: Escape Character14985
|
||||
Node: Single Quotes15520
|
||||
Node: Double Quotes15869
|
||||
Node: ANSI-C Quoting17214
|
||||
Node: Locale Translation18608
|
||||
Node: Creating Internationalized Scripts20011
|
||||
Node: Comments24209
|
||||
Node: Shell Commands24976
|
||||
Node: Reserved Words25915
|
||||
Node: Simple Commands26780
|
||||
Node: Pipelines27442
|
||||
Node: Lists30698
|
||||
Node: Compound Commands32570
|
||||
Node: Looping Constructs33579
|
||||
Node: Conditional Constructs36128
|
||||
Node: Command Grouping51198
|
||||
Node: Coprocesses52690
|
||||
Node: GNU Parallel55376
|
||||
Node: Shell Functions56294
|
||||
Node: Shell Parameters64742
|
||||
Node: Positional Parameters69643
|
||||
Node: Special Parameters70733
|
||||
Node: Shell Expansions74194
|
||||
Node: Brace Expansion76383
|
||||
Node: Tilde Expansion79719
|
||||
Node: Shell Parameter Expansion82674
|
||||
Node: Command Substitution103317
|
||||
Node: Arithmetic Expansion106846
|
||||
Node: Process Substitution108022
|
||||
Node: Word Splitting109130
|
||||
Node: Filename Expansion111574
|
||||
Node: Pattern Matching114798
|
||||
Node: Quote Removal120521
|
||||
Node: Redirections120825
|
||||
Node: Executing Commands131088
|
||||
Node: Simple Command Expansion131755
|
||||
Node: Command Search and Execution133863
|
||||
Node: Command Execution Environment136307
|
||||
Node: Environment139755
|
||||
Node: Exit Status141658
|
||||
Node: Signals143716
|
||||
Node: Shell Scripts148645
|
||||
Node: Shell Builtin Commands151943
|
||||
Node: Bourne Shell Builtins154054
|
||||
Node: Bash Builtins180701
|
||||
Node: Modifying Shell Behavior217625
|
||||
Node: The Set Builtin217967
|
||||
Node: The Shopt Builtin229961
|
||||
Node: Special Builtins247013
|
||||
Node: Shell Variables248002
|
||||
Node: Bourne Shell Variables248436
|
||||
Node: Bash Variables250944
|
||||
Node: Bash Features290068
|
||||
Node: Invoking Bash291082
|
||||
Node: Bash Startup Files297666
|
||||
Node: Interactive Shells302908
|
||||
Node: What is an Interactive Shell?303316
|
||||
Node: Is this Shell Interactive?303978
|
||||
Node: Interactive Shell Behavior304802
|
||||
Node: Bash Conditional Expressions308563
|
||||
Node: Shell Arithmetic313980
|
||||
Node: Aliases317309
|
||||
Node: Arrays320443
|
||||
Node: The Directory Stack328031
|
||||
Node: Directory Stack Builtins328828
|
||||
Node: Controlling the Prompt333273
|
||||
Node: The Restricted Shell336158
|
||||
Node: Bash POSIX Mode339040
|
||||
Node: Shell Compatibility Mode357986
|
||||
Node: Job Control366993
|
||||
Node: Job Control Basics367450
|
||||
Node: Job Control Builtins373818
|
||||
Node: Job Control Variables380500
|
||||
Node: Command Line Editing381731
|
||||
Node: Introduction and Notation383434
|
||||
Node: Readline Interaction385786
|
||||
Node: Readline Bare Essentials386974
|
||||
Node: Readline Movement Commands388782
|
||||
Node: Readline Killing Commands389778
|
||||
Node: Readline Arguments391801
|
||||
Node: Searching392858
|
||||
Node: Readline Init File395101
|
||||
Node: Readline Init File Syntax396404
|
||||
Node: Conditional Init Constructs423229
|
||||
Node: Sample Init File427614
|
||||
Node: Bindable Readline Commands430734
|
||||
Node: Commands For Moving432272
|
||||
Node: Commands For History434736
|
||||
Node: Commands For Text440126
|
||||
Node: Commands For Killing444251
|
||||
Node: Numeric Arguments447039
|
||||
Node: Commands For Completion448191
|
||||
Node: Keyboard Macros453887
|
||||
Node: Miscellaneous Commands454588
|
||||
Node: Readline vi Mode461155
|
||||
Node: Programmable Completion462132
|
||||
Node: Programmable Completion Builtins470869
|
||||
Node: A Programmable Completion Example482606
|
||||
Node: Using History Interactively487951
|
||||
Node: Bash History Facilities488632
|
||||
Node: Bash History Builtins492367
|
||||
Node: History Interaction498838
|
||||
Node: Event Designators503788
|
||||
Node: Word Designators505366
|
||||
Node: Modifiers507758
|
||||
Node: Installing Bash509695
|
||||
Node: Basic Installation510811
|
||||
Node: Compilers and Options514687
|
||||
Node: Compiling For Multiple Architectures515437
|
||||
Node: Installation Names517190
|
||||
Node: Specifying the System Type519424
|
||||
Node: Sharing Defaults520170
|
||||
Node: Operation Controls520884
|
||||
Node: Optional Features521903
|
||||
Node: Reporting Bugs534283
|
||||
Node: Major Differences From The Bourne Shell535640
|
||||
Node: GNU Free Documentation License557066
|
||||
Node: Indexes582243
|
||||
Node: Builtin Index582694
|
||||
Node: Reserved Word Index589792
|
||||
Node: Variable Index592237
|
||||
Node: Function Index609650
|
||||
Node: Concept Index623645
|
||||
|
||||
End Tag Table
|
||||
|
||||
|
||||
Binary file not shown.
+13
-13
@@ -1,6 +1,6 @@
|
||||
%!PS-Adobe-3.0
|
||||
%%Creator: groff version 1.23.0
|
||||
%%CreationDate: Tue Apr 22 10:00:28 2025
|
||||
%%CreationDate: Fri May 30 08:52:48 2025
|
||||
%%DocumentNeededResources: font Times-Italic
|
||||
%%+ font Times-Roman
|
||||
%%+ font Times-Bold
|
||||
@@ -1469,18 +1469,18 @@ F1 .523(are each e)3.023 F -.25(va)-.25 G .523(luated as arith-).25 F
|
||||
F .55(alue is usu-)-.25 F .595(ally an inte)108 424.8 R .595
|
||||
(ger constant, b)-.15 F .595(ut may be an e)-.2 F 3.096(xpression. When)
|
||||
-.15 F .596(\231+=\232 is applied to an array v)3.096 F .596
|
||||
(ariable using com-)-.25 F .262(pound assignment \(see)108 436.8 R F2
|
||||
(Arrays)2.761 E F1(belo)2.761 E .261(w\), the v)-.25 F(ariable')-.25 E
|
||||
2.761(sv)-.55 G .261(alue is not unset \(as it is when using and ne)
|
||||
-3.011 F 2.761(wv)-.25 G(alues)-3.011 E .437
|
||||
(are appended to the array be)108 448.8 R .438
|
||||
(ginning at one greater than the array')-.15 F 2.938(sm)-.55 G .438
|
||||
(aximum inde)-2.938 F 2.938(x\()-.15 G .438(for inde)-2.938 F -.15(xe)
|
||||
-.15 G 2.938(da).15 G .438(rrays\) or)-2.938 F .123
|
||||
(added as additional k)108 460.8 R -.15(ey)-.1 G<ad76>.15 E .123
|
||||
(alue pairs in an associati)-.25 F .423 -.15(ve a)-.25 H(rray).15 E
|
||||
5.123(.W)-.65 G .122(hen applied to a string-v)-5.123 F .122(alued v)
|
||||
-.25 F(ariable,)-.25 E F0(value)2.622 E F1(is e)108 472.8 Q
|
||||
(ariable using com-)-.25 F .537(pound assignment \(see)108 436.8 R F2
|
||||
(Arrays)3.036 E F1(belo)3.036 E .536(w\), the v)-.25 F(ariable')-.25 E
|
||||
3.036(sv)-.55 G .536
|
||||
(alue is not unset \(as it is when using \231=\232\), and ne)-3.286 F(w)
|
||||
-.25 E -.25(va)108 448.8 S .431(lues are appended to the array be).25 F
|
||||
.431(ginning at one greater than the array')-.15 F 2.931(sm)-.55 G .431
|
||||
(aximum inde)-2.931 F 2.932(x\()-.15 G .432(for inde)-2.932 F -.15(xe)
|
||||
-.15 G 2.932(da).15 G -.2(r-)-2.932 G .532
|
||||
(rays\) or added as additional k)108 460.8 R -.15(ey)-.1 G<ad76>.15 E
|
||||
.532(alue pairs in an associati)-.25 F .832 -.15(ve a)-.25 H(rray).15 E
|
||||
5.532(.W)-.65 G .532(hen applied to a string-v)-5.532 F .531(alued v)
|
||||
-.25 F(ari-)-.25 E(able,)108 472.8 Q F0(value)2.5 E F1(is e)2.5 E
|
||||
(xpanded and appended to the v)-.15 E(ariable')-.25 E 2.5(sv)-.55 G
|
||||
(alue.)-2.75 E 3.382(Av)108 489.6 S .882(ariable can be assigned the)
|
||||
-3.632 F F0(namer)3.382 E(ef)-.37 E F1(attrib)3.382 E .882
|
||||
|
||||
Binary file not shown.
+145
-134
@@ -1,12 +1,12 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<!-- Created by GNU Texinfo 7.1, https://www.gnu.org/software/texinfo/ -->
|
||||
<!-- Created by GNU Texinfo 7.2, https://www.gnu.org/software/texinfo/ -->
|
||||
<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, 7 April 2025).
|
||||
the Bash shell (version 5.3, 18 May 2025).
|
||||
|
||||
This is Edition 5.3, last updated 7 April 2025,
|
||||
This is Edition 5.3, last updated 18 May 2025,
|
||||
of The GNU Bash Reference Manual,
|
||||
for Bash, Version 5.3.
|
||||
|
||||
@@ -77,10 +77,10 @@ Next: <a href="#Introduction" accesskey="n" rel="next">Introduction</a>, Previou
|
||||
<h1 class="top" id="Bash-Features-1"><span>Bash Features<a class="copiable-link" href="#Bash-Features-1"> ¶</a></span></h1>
|
||||
|
||||
<p>This text is a brief description of the features that are present in
|
||||
the Bash shell (version 5.3, 7 April 2025).
|
||||
the Bash shell (version 5.3, 18 May 2025).
|
||||
The Bash home page is <a class="url" href="http://www.gnu.org/software/bash/">http://www.gnu.org/software/bash/</a>.
|
||||
</p>
|
||||
<p>This is Edition 5.3, last updated 7 April 2025,
|
||||
<p>This is Edition 5.3, last updated 18 May 2025,
|
||||
of <cite class="cite">The GNU Bash Reference Manual</cite>,
|
||||
for <code class="code">Bash</code>, Version 5.3.
|
||||
</p>
|
||||
@@ -99,70 +99,70 @@ The Bash manual page should be used as the definitive
|
||||
reference on shell behavior.
|
||||
</p>
|
||||
|
||||
<div class="element-contents" id="SEC_Contents">
|
||||
<div class="region-contents" id="SEC_Contents">
|
||||
<h2 class="contents-heading">Table of Contents</h2>
|
||||
|
||||
<div class="contents">
|
||||
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Introduction-1" href="#Introduction">1 Introduction</a>
|
||||
<li><a id="toc-Introduction" href="#Introduction">1 Introduction</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-What-is-Bash_003f-1" href="#What-is-Bash_003f">1.1 What is Bash?</a></li>
|
||||
<li><a id="toc-What-is-a-shell_003f-1" href="#What-is-a-shell_003f">1.2 What is a shell?</a></li>
|
||||
<li><a id="toc-What-is-Bash_003f" href="#What-is-Bash_003f">1.1 What is Bash?</a></li>
|
||||
<li><a id="toc-What-is-a-shell_003f" href="#What-is-a-shell_003f">1.2 What is a shell?</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Definitions-1" href="#Definitions">2 Definitions</a></li>
|
||||
<li><a id="toc-Basic-Shell-Features-1" href="#Basic-Shell-Features">3 Basic Shell Features</a>
|
||||
<li><a id="toc-Definitions" href="#Definitions">2 Definitions</a></li>
|
||||
<li><a id="toc-Basic-Shell-Features" href="#Basic-Shell-Features">3 Basic Shell Features</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Shell-Syntax-1" href="#Shell-Syntax">3.1 Shell Syntax</a>
|
||||
<li><a id="toc-Shell-Syntax" href="#Shell-Syntax">3.1 Shell Syntax</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Shell-Operation-1" href="#Shell-Operation">3.1.1 Shell Operation</a></li>
|
||||
<li><a id="toc-Quoting-1" href="#Quoting">3.1.2 Quoting</a>
|
||||
<li><a id="toc-Shell-Operation" href="#Shell-Operation">3.1.1 Shell Operation</a></li>
|
||||
<li><a id="toc-Quoting" href="#Quoting">3.1.2 Quoting</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Escape-Character-1" href="#Escape-Character">3.1.2.1 Escape Character</a></li>
|
||||
<li><a id="toc-Single-Quotes-1" href="#Single-Quotes">3.1.2.2 Single Quotes</a></li>
|
||||
<li><a id="toc-Double-Quotes-1" href="#Double-Quotes">3.1.2.3 Double Quotes</a></li>
|
||||
<li><a id="toc-ANSI_002dC-Quoting-1" href="#ANSI_002dC-Quoting">3.1.2.4 ANSI-C Quoting</a></li>
|
||||
<li><a id="toc-Escape-Character" href="#Escape-Character">3.1.2.1 Escape Character</a></li>
|
||||
<li><a id="toc-Single-Quotes" href="#Single-Quotes">3.1.2.2 Single Quotes</a></li>
|
||||
<li><a id="toc-Double-Quotes" href="#Double-Quotes">3.1.2.3 Double Quotes</a></li>
|
||||
<li><a id="toc-ANSI_002dC-Quoting" href="#ANSI_002dC-Quoting">3.1.2.4 ANSI-C Quoting</a></li>
|
||||
<li><a id="toc-Locale_002dSpecific-Translation" href="#Locale-Translation">3.1.2.5 Locale-Specific Translation</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Comments-1" href="#Comments">3.1.3 Comments</a></li>
|
||||
<li><a id="toc-Comments" href="#Comments">3.1.3 Comments</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Shell-Commands-1" href="#Shell-Commands">3.2 Shell Commands</a>
|
||||
<li><a id="toc-Shell-Commands" href="#Shell-Commands">3.2 Shell Commands</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Reserved-Words-1" href="#Reserved-Words">3.2.1 Reserved Words</a></li>
|
||||
<li><a id="toc-Simple-Commands-1" href="#Simple-Commands">3.2.2 Simple Commands</a></li>
|
||||
<li><a id="toc-Pipelines-1" href="#Pipelines">3.2.3 Pipelines</a></li>
|
||||
<li><a id="toc-Reserved-Words" href="#Reserved-Words">3.2.1 Reserved Words</a></li>
|
||||
<li><a id="toc-Simple-Commands" href="#Simple-Commands">3.2.2 Simple Commands</a></li>
|
||||
<li><a id="toc-Pipelines" href="#Pipelines">3.2.3 Pipelines</a></li>
|
||||
<li><a id="toc-Lists-of-Commands" href="#Lists">3.2.4 Lists of Commands</a></li>
|
||||
<li><a id="toc-Compound-Commands-1" href="#Compound-Commands">3.2.5 Compound Commands</a>
|
||||
<li><a id="toc-Compound-Commands" href="#Compound-Commands">3.2.5 Compound Commands</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Looping-Constructs-1" href="#Looping-Constructs">3.2.5.1 Looping Constructs</a></li>
|
||||
<li><a id="toc-Conditional-Constructs-1" href="#Conditional-Constructs">3.2.5.2 Conditional Constructs</a></li>
|
||||
<li><a id="toc-Looping-Constructs" href="#Looping-Constructs">3.2.5.1 Looping Constructs</a></li>
|
||||
<li><a id="toc-Conditional-Constructs" href="#Conditional-Constructs">3.2.5.2 Conditional Constructs</a></li>
|
||||
<li><a id="toc-Grouping-Commands" href="#Command-Grouping">3.2.5.3 Grouping Commands</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Coprocesses-1" href="#Coprocesses">3.2.6 Coprocesses</a></li>
|
||||
<li><a id="toc-GNU-Parallel-1" href="#GNU-Parallel">3.2.7 GNU Parallel</a></li>
|
||||
<li><a id="toc-Coprocesses" href="#Coprocesses">3.2.6 Coprocesses</a></li>
|
||||
<li><a id="toc-GNU-Parallel" href="#GNU-Parallel">3.2.7 GNU Parallel</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Shell-Functions-1" href="#Shell-Functions">3.3 Shell Functions</a></li>
|
||||
<li><a id="toc-Shell-Parameters-1" href="#Shell-Parameters">3.4 Shell Parameters</a>
|
||||
<li><a id="toc-Shell-Functions" href="#Shell-Functions">3.3 Shell Functions</a></li>
|
||||
<li><a id="toc-Shell-Parameters" href="#Shell-Parameters">3.4 Shell Parameters</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Positional-Parameters-1" href="#Positional-Parameters">3.4.1 Positional Parameters</a></li>
|
||||
<li><a id="toc-Special-Parameters-1" href="#Special-Parameters">3.4.2 Special Parameters</a></li>
|
||||
<li><a id="toc-Positional-Parameters" href="#Positional-Parameters">3.4.1 Positional Parameters</a></li>
|
||||
<li><a id="toc-Special-Parameters" href="#Special-Parameters">3.4.2 Special Parameters</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Shell-Expansions-1" href="#Shell-Expansions">3.5 Shell Expansions</a>
|
||||
<li><a id="toc-Shell-Expansions" href="#Shell-Expansions">3.5 Shell Expansions</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Brace-Expansion-1" href="#Brace-Expansion">3.5.1 Brace Expansion</a></li>
|
||||
<li><a id="toc-Tilde-Expansion-1" href="#Tilde-Expansion">3.5.2 Tilde Expansion</a></li>
|
||||
<li><a id="toc-Shell-Parameter-Expansion-1" href="#Shell-Parameter-Expansion">3.5.3 Shell Parameter Expansion</a></li>
|
||||
<li><a id="toc-Command-Substitution-1" href="#Command-Substitution">3.5.4 Command Substitution</a></li>
|
||||
<li><a id="toc-Arithmetic-Expansion-1" href="#Arithmetic-Expansion">3.5.5 Arithmetic Expansion</a></li>
|
||||
<li><a id="toc-Process-Substitution-1" href="#Process-Substitution">3.5.6 Process Substitution</a></li>
|
||||
<li><a id="toc-Word-Splitting-1" href="#Word-Splitting">3.5.7 Word Splitting</a></li>
|
||||
<li><a id="toc-Filename-Expansion-1" href="#Filename-Expansion">3.5.8 Filename Expansion</a>
|
||||
<li><a id="toc-Brace-Expansion" href="#Brace-Expansion">3.5.1 Brace Expansion</a></li>
|
||||
<li><a id="toc-Tilde-Expansion" href="#Tilde-Expansion">3.5.2 Tilde Expansion</a></li>
|
||||
<li><a id="toc-Shell-Parameter-Expansion" href="#Shell-Parameter-Expansion">3.5.3 Shell Parameter Expansion</a></li>
|
||||
<li><a id="toc-Command-Substitution" href="#Command-Substitution">3.5.4 Command Substitution</a></li>
|
||||
<li><a id="toc-Arithmetic-Expansion" href="#Arithmetic-Expansion">3.5.5 Arithmetic Expansion</a></li>
|
||||
<li><a id="toc-Process-Substitution" href="#Process-Substitution">3.5.6 Process Substitution</a></li>
|
||||
<li><a id="toc-Word-Splitting" href="#Word-Splitting">3.5.7 Word Splitting</a></li>
|
||||
<li><a id="toc-Filename-Expansion" href="#Filename-Expansion">3.5.8 Filename Expansion</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Pattern-Matching-1" href="#Pattern-Matching">3.5.8.1 Pattern Matching</a></li>
|
||||
<li><a id="toc-Pattern-Matching" href="#Pattern-Matching">3.5.8.1 Pattern Matching</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Quote-Removal-1" href="#Quote-Removal">3.5.9 Quote Removal</a></li>
|
||||
<li><a id="toc-Quote-Removal" href="#Quote-Removal">3.5.9 Quote Removal</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Redirections-1" href="#Redirections">3.6 Redirections</a>
|
||||
<li><a id="toc-Redirections" href="#Redirections">3.6 Redirections</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Redirecting-Input" href="#Redirecting-Input">3.6.1 Redirecting Input</a></li>
|
||||
<li><a id="toc-Redirecting-Output" href="#Redirecting-Output">3.6.2 Redirecting Output</a></li>
|
||||
@@ -175,134 +175,134 @@ reference on shell behavior.
|
||||
<li><a id="toc-Moving-File-Descriptors" href="#Moving-File-Descriptors">3.6.9 Moving File Descriptors</a></li>
|
||||
<li><a id="toc-Opening-File-Descriptors-for-Reading-and-Writing" href="#Opening-File-Descriptors-for-Reading-and-Writing">3.6.10 Opening File Descriptors for Reading and Writing</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Executing-Commands-1" href="#Executing-Commands">3.7 Executing Commands</a>
|
||||
<li><a id="toc-Executing-Commands" href="#Executing-Commands">3.7 Executing Commands</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Simple-Command-Expansion-1" href="#Simple-Command-Expansion">3.7.1 Simple Command Expansion</a></li>
|
||||
<li><a id="toc-Command-Search-and-Execution-1" href="#Command-Search-and-Execution">3.7.2 Command Search and Execution</a></li>
|
||||
<li><a id="toc-Command-Execution-Environment-1" href="#Command-Execution-Environment">3.7.3 Command Execution Environment</a></li>
|
||||
<li><a id="toc-Environment-1" href="#Environment">3.7.4 Environment</a></li>
|
||||
<li><a id="toc-Exit-Status-1" href="#Exit-Status">3.7.5 Exit Status</a></li>
|
||||
<li><a id="toc-Signals-1" href="#Signals">3.7.6 Signals</a></li>
|
||||
<li><a id="toc-Simple-Command-Expansion" href="#Simple-Command-Expansion">3.7.1 Simple Command Expansion</a></li>
|
||||
<li><a id="toc-Command-Search-and-Execution" href="#Command-Search-and-Execution">3.7.2 Command Search and Execution</a></li>
|
||||
<li><a id="toc-Command-Execution-Environment" href="#Command-Execution-Environment">3.7.3 Command Execution Environment</a></li>
|
||||
<li><a id="toc-Environment" href="#Environment">3.7.4 Environment</a></li>
|
||||
<li><a id="toc-Exit-Status" href="#Exit-Status">3.7.5 Exit Status</a></li>
|
||||
<li><a id="toc-Signals" href="#Signals">3.7.6 Signals</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Shell-Scripts-1" href="#Shell-Scripts">3.8 Shell Scripts</a></li>
|
||||
<li><a id="toc-Shell-Scripts" href="#Shell-Scripts">3.8 Shell Scripts</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Shell-Builtin-Commands-1" href="#Shell-Builtin-Commands">4 Shell Builtin Commands</a>
|
||||
<li><a id="toc-Shell-Builtin-Commands" href="#Shell-Builtin-Commands">4 Shell Builtin Commands</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Bourne-Shell-Builtins-1" href="#Bourne-Shell-Builtins">4.1 Bourne Shell Builtins</a></li>
|
||||
<li><a id="toc-Bourne-Shell-Builtins" href="#Bourne-Shell-Builtins">4.1 Bourne Shell Builtins</a></li>
|
||||
<li><a id="toc-Bash-Builtin-Commands" href="#Bash-Builtins">4.2 Bash Builtin Commands</a></li>
|
||||
<li><a id="toc-Modifying-Shell-Behavior-1" href="#Modifying-Shell-Behavior">4.3 Modifying Shell Behavior</a>
|
||||
<li><a id="toc-Modifying-Shell-Behavior" href="#Modifying-Shell-Behavior">4.3 Modifying Shell Behavior</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-The-Set-Builtin-1" href="#The-Set-Builtin">4.3.1 The Set Builtin</a></li>
|
||||
<li><a id="toc-The-Shopt-Builtin-1" href="#The-Shopt-Builtin">4.3.2 The Shopt Builtin</a></li>
|
||||
<li><a id="toc-The-Set-Builtin" href="#The-Set-Builtin">4.3.1 The Set Builtin</a></li>
|
||||
<li><a id="toc-The-Shopt-Builtin" href="#The-Shopt-Builtin">4.3.2 The Shopt Builtin</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Special-Builtins-1" href="#Special-Builtins">4.4 Special Builtins</a></li>
|
||||
<li><a id="toc-Special-Builtins" href="#Special-Builtins">4.4 Special Builtins</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Shell-Variables-1" href="#Shell-Variables">5 Shell Variables</a>
|
||||
<li><a id="toc-Shell-Variables" href="#Shell-Variables">5 Shell Variables</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Bourne-Shell-Variables-1" href="#Bourne-Shell-Variables">5.1 Bourne Shell Variables</a></li>
|
||||
<li><a id="toc-Bash-Variables-1" href="#Bash-Variables">5.2 Bash Variables</a></li>
|
||||
<li><a id="toc-Bourne-Shell-Variables" href="#Bourne-Shell-Variables">5.1 Bourne Shell Variables</a></li>
|
||||
<li><a id="toc-Bash-Variables" href="#Bash-Variables">5.2 Bash Variables</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Bash-Features-2" href="#Bash-Features">6 Bash Features</a>
|
||||
<li><a id="toc-Bash-Features-1" href="#Bash-Features">6 Bash Features</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Invoking-Bash-1" href="#Invoking-Bash">6.1 Invoking Bash</a></li>
|
||||
<li><a id="toc-Bash-Startup-Files-1" href="#Bash-Startup-Files">6.2 Bash Startup Files</a></li>
|
||||
<li><a id="toc-Interactive-Shells-1" href="#Interactive-Shells">6.3 Interactive Shells</a>
|
||||
<li><a id="toc-Invoking-Bash" href="#Invoking-Bash">6.1 Invoking Bash</a></li>
|
||||
<li><a id="toc-Bash-Startup-Files" href="#Bash-Startup-Files">6.2 Bash Startup Files</a></li>
|
||||
<li><a id="toc-Interactive-Shells" href="#Interactive-Shells">6.3 Interactive Shells</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-What-is-an-Interactive-Shell_003f-1" href="#What-is-an-Interactive-Shell_003f">6.3.1 What is an Interactive Shell?</a></li>
|
||||
<li><a id="toc-Is-this-Shell-Interactive_003f-1" href="#Is-this-Shell-Interactive_003f">6.3.2 Is this Shell Interactive?</a></li>
|
||||
<li><a id="toc-Interactive-Shell-Behavior-1" href="#Interactive-Shell-Behavior">6.3.3 Interactive Shell Behavior</a></li>
|
||||
<li><a id="toc-What-is-an-Interactive-Shell_003f" href="#What-is-an-Interactive-Shell_003f">6.3.1 What is an Interactive Shell?</a></li>
|
||||
<li><a id="toc-Is-this-Shell-Interactive_003f" href="#Is-this-Shell-Interactive_003f">6.3.2 Is this Shell Interactive?</a></li>
|
||||
<li><a id="toc-Interactive-Shell-Behavior" href="#Interactive-Shell-Behavior">6.3.3 Interactive Shell Behavior</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Bash-Conditional-Expressions-1" href="#Bash-Conditional-Expressions">6.4 Bash Conditional Expressions</a></li>
|
||||
<li><a id="toc-Shell-Arithmetic-1" href="#Shell-Arithmetic">6.5 Shell Arithmetic</a></li>
|
||||
<li><a id="toc-Aliases-1" href="#Aliases">6.6 Aliases</a></li>
|
||||
<li><a id="toc-Arrays-1" href="#Arrays">6.7 Arrays</a></li>
|
||||
<li><a id="toc-The-Directory-Stack-1" href="#The-Directory-Stack">6.8 The Directory Stack</a>
|
||||
<li><a id="toc-Bash-Conditional-Expressions" href="#Bash-Conditional-Expressions">6.4 Bash Conditional Expressions</a></li>
|
||||
<li><a id="toc-Shell-Arithmetic" href="#Shell-Arithmetic">6.5 Shell Arithmetic</a></li>
|
||||
<li><a id="toc-Aliases" href="#Aliases">6.6 Aliases</a></li>
|
||||
<li><a id="toc-Arrays" href="#Arrays">6.7 Arrays</a></li>
|
||||
<li><a id="toc-The-Directory-Stack" href="#The-Directory-Stack">6.8 The Directory Stack</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Directory-Stack-Builtins-1" href="#Directory-Stack-Builtins">6.8.1 Directory Stack Builtins</a></li>
|
||||
<li><a id="toc-Directory-Stack-Builtins" href="#Directory-Stack-Builtins">6.8.1 Directory Stack Builtins</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Controlling-the-Prompt-1" href="#Controlling-the-Prompt">6.9 Controlling the Prompt</a></li>
|
||||
<li><a id="toc-The-Restricted-Shell-1" href="#The-Restricted-Shell">6.10 The Restricted Shell</a></li>
|
||||
<li><a id="toc-Controlling-the-Prompt" href="#Controlling-the-Prompt">6.9 Controlling the Prompt</a></li>
|
||||
<li><a id="toc-The-Restricted-Shell" href="#The-Restricted-Shell">6.10 The Restricted Shell</a></li>
|
||||
<li><a id="toc-Bash-and-POSIX" href="#Bash-POSIX-Mode">6.11 Bash and POSIX</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-What-is-POSIX_003f" href="#What-is-POSIX_003f">6.11.1 What is POSIX?</a></li>
|
||||
<li><a id="toc-Bash-POSIX-Mode-1" href="#Bash-POSIX-Mode-1">6.11.2 Bash POSIX Mode</a></li>
|
||||
<li><a id="toc-Bash-POSIX-Mode" href="#Bash-POSIX-Mode-1">6.11.2 Bash POSIX Mode</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Shell-Compatibility-Mode-1" href="#Shell-Compatibility-Mode">6.12 Shell Compatibility Mode</a></li>
|
||||
<li><a id="toc-Shell-Compatibility-Mode" href="#Shell-Compatibility-Mode">6.12 Shell Compatibility Mode</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Job-Control-1" href="#Job-Control">7 Job Control</a>
|
||||
<li><a id="toc-Job-Control" href="#Job-Control">7 Job Control</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Job-Control-Basics-1" href="#Job-Control-Basics">7.1 Job Control Basics</a></li>
|
||||
<li><a id="toc-Job-Control-Builtins-1" href="#Job-Control-Builtins">7.2 Job Control Builtins</a></li>
|
||||
<li><a id="toc-Job-Control-Variables-1" href="#Job-Control-Variables">7.3 Job Control Variables</a></li>
|
||||
<li><a id="toc-Job-Control-Basics" href="#Job-Control-Basics">7.1 Job Control Basics</a></li>
|
||||
<li><a id="toc-Job-Control-Builtins" href="#Job-Control-Builtins">7.2 Job Control Builtins</a></li>
|
||||
<li><a id="toc-Job-Control-Variables" href="#Job-Control-Variables">7.3 Job Control Variables</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Command-Line-Editing-1" href="#Command-Line-Editing">8 Command Line Editing</a>
|
||||
<li><a id="toc-Command-Line-Editing" href="#Command-Line-Editing">8 Command Line Editing</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Introduction-to-Line-Editing" href="#Introduction-and-Notation">8.1 Introduction to Line Editing</a></li>
|
||||
<li><a id="toc-Readline-Interaction-1" href="#Readline-Interaction">8.2 Readline Interaction</a>
|
||||
<li><a id="toc-Readline-Interaction" href="#Readline-Interaction">8.2 Readline Interaction</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Readline-Bare-Essentials-1" href="#Readline-Bare-Essentials">8.2.1 Readline Bare Essentials</a></li>
|
||||
<li><a id="toc-Readline-Movement-Commands-1" href="#Readline-Movement-Commands">8.2.2 Readline Movement Commands</a></li>
|
||||
<li><a id="toc-Readline-Killing-Commands-1" href="#Readline-Killing-Commands">8.2.3 Readline Killing Commands</a></li>
|
||||
<li><a id="toc-Readline-Arguments-1" href="#Readline-Arguments">8.2.4 Readline Arguments</a></li>
|
||||
<li><a id="toc-Readline-Bare-Essentials" href="#Readline-Bare-Essentials">8.2.1 Readline Bare Essentials</a></li>
|
||||
<li><a id="toc-Readline-Movement-Commands" href="#Readline-Movement-Commands">8.2.2 Readline Movement Commands</a></li>
|
||||
<li><a id="toc-Readline-Killing-Commands" href="#Readline-Killing-Commands">8.2.3 Readline Killing Commands</a></li>
|
||||
<li><a id="toc-Readline-Arguments" href="#Readline-Arguments">8.2.4 Readline Arguments</a></li>
|
||||
<li><a id="toc-Searching-for-Commands-in-the-History" href="#Searching">8.2.5 Searching for Commands in the History</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Readline-Init-File-1" href="#Readline-Init-File">8.3 Readline Init File</a>
|
||||
<li><a id="toc-Readline-Init-File" href="#Readline-Init-File">8.3 Readline Init File</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Readline-Init-File-Syntax-1" href="#Readline-Init-File-Syntax">8.3.1 Readline Init File Syntax</a></li>
|
||||
<li><a id="toc-Conditional-Init-Constructs-1" href="#Conditional-Init-Constructs">8.3.2 Conditional Init Constructs</a></li>
|
||||
<li><a id="toc-Sample-Init-File-1" href="#Sample-Init-File">8.3.3 Sample Init File</a></li>
|
||||
<li><a id="toc-Readline-Init-File-Syntax" href="#Readline-Init-File-Syntax">8.3.1 Readline Init File Syntax</a></li>
|
||||
<li><a id="toc-Conditional-Init-Constructs" href="#Conditional-Init-Constructs">8.3.2 Conditional Init Constructs</a></li>
|
||||
<li><a id="toc-Sample-Init-File" href="#Sample-Init-File">8.3.3 Sample Init File</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Bindable-Readline-Commands-1" href="#Bindable-Readline-Commands">8.4 Bindable Readline Commands</a>
|
||||
<li><a id="toc-Bindable-Readline-Commands" href="#Bindable-Readline-Commands">8.4 Bindable Readline Commands</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Commands-For-Moving-1" href="#Commands-For-Moving">8.4.1 Commands For Moving</a></li>
|
||||
<li><a id="toc-Commands-For-Moving" href="#Commands-For-Moving">8.4.1 Commands For Moving</a></li>
|
||||
<li><a id="toc-Commands-For-Manipulating-The-History" href="#Commands-For-History">8.4.2 Commands For Manipulating The History</a></li>
|
||||
<li><a id="toc-Commands-For-Changing-Text" href="#Commands-For-Text">8.4.3 Commands For Changing Text</a></li>
|
||||
<li><a id="toc-Killing-And-Yanking" href="#Commands-For-Killing">8.4.4 Killing And Yanking</a></li>
|
||||
<li><a id="toc-Specifying-Numeric-Arguments" href="#Numeric-Arguments">8.4.5 Specifying Numeric Arguments</a></li>
|
||||
<li><a id="toc-Letting-Readline-Type-For-You" href="#Commands-For-Completion">8.4.6 Letting Readline Type For You</a></li>
|
||||
<li><a id="toc-Keyboard-Macros-1" href="#Keyboard-Macros">8.4.7 Keyboard Macros</a></li>
|
||||
<li><a id="toc-Keyboard-Macros" href="#Keyboard-Macros">8.4.7 Keyboard Macros</a></li>
|
||||
<li><a id="toc-Some-Miscellaneous-Commands" href="#Miscellaneous-Commands">8.4.8 Some Miscellaneous Commands</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Readline-vi-Mode-1" href="#Readline-vi-Mode">8.5 Readline vi Mode</a></li>
|
||||
<li><a id="toc-Programmable-Completion-1" href="#Programmable-Completion">8.6 Programmable Completion</a></li>
|
||||
<li><a id="toc-Programmable-Completion-Builtins-1" href="#Programmable-Completion-Builtins">8.7 Programmable Completion Builtins</a></li>
|
||||
<li><a id="toc-A-Programmable-Completion-Example-1" href="#A-Programmable-Completion-Example">8.8 A Programmable Completion Example</a></li>
|
||||
<li><a id="toc-Readline-vi-Mode" href="#Readline-vi-Mode">8.5 Readline vi Mode</a></li>
|
||||
<li><a id="toc-Programmable-Completion" href="#Programmable-Completion">8.6 Programmable Completion</a></li>
|
||||
<li><a id="toc-Programmable-Completion-Builtins" href="#Programmable-Completion-Builtins">8.7 Programmable Completion Builtins</a></li>
|
||||
<li><a id="toc-A-Programmable-Completion-Example" href="#A-Programmable-Completion-Example">8.8 A Programmable Completion Example</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Using-History-Interactively-1" href="#Using-History-Interactively">9 Using History Interactively</a>
|
||||
<li><a id="toc-Using-History-Interactively" href="#Using-History-Interactively">9 Using History Interactively</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Bash-History-Facilities-1" href="#Bash-History-Facilities">9.1 Bash History Facilities</a></li>
|
||||
<li><a id="toc-Bash-History-Builtins-1" href="#Bash-History-Builtins">9.2 Bash History Builtins</a></li>
|
||||
<li><a id="toc-Bash-History-Facilities" href="#Bash-History-Facilities">9.1 Bash History Facilities</a></li>
|
||||
<li><a id="toc-Bash-History-Builtins" href="#Bash-History-Builtins">9.2 Bash History Builtins</a></li>
|
||||
<li><a id="toc-History-Expansion" href="#History-Interaction">9.3 History Expansion</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Event-Designators-1" href="#Event-Designators">9.3.1 Event Designators</a></li>
|
||||
<li><a id="toc-Word-Designators-1" href="#Word-Designators">9.3.2 Word Designators</a></li>
|
||||
<li><a id="toc-Modifiers-1" href="#Modifiers">9.3.3 Modifiers</a></li>
|
||||
<li><a id="toc-Event-Designators" href="#Event-Designators">9.3.1 Event Designators</a></li>
|
||||
<li><a id="toc-Word-Designators" href="#Word-Designators">9.3.2 Word Designators</a></li>
|
||||
<li><a id="toc-Modifiers" href="#Modifiers">9.3.3 Modifiers</a></li>
|
||||
</ul></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Installing-Bash-1" href="#Installing-Bash">10 Installing Bash</a>
|
||||
<li><a id="toc-Installing-Bash" href="#Installing-Bash">10 Installing Bash</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Basic-Installation-1" href="#Basic-Installation">10.1 Basic Installation</a></li>
|
||||
<li><a id="toc-Compilers-and-Options-1" href="#Compilers-and-Options">10.2 Compilers and Options</a></li>
|
||||
<li><a id="toc-Compiling-For-Multiple-Architectures-1" href="#Compiling-For-Multiple-Architectures">10.3 Compiling For Multiple Architectures</a></li>
|
||||
<li><a id="toc-Installation-Names-1" href="#Installation-Names">10.4 Installation Names</a></li>
|
||||
<li><a id="toc-Specifying-the-System-Type-1" href="#Specifying-the-System-Type">10.5 Specifying the System Type</a></li>
|
||||
<li><a id="toc-Sharing-Defaults-1" href="#Sharing-Defaults">10.6 Sharing Defaults</a></li>
|
||||
<li><a id="toc-Operation-Controls-1" href="#Operation-Controls">10.7 Operation Controls</a></li>
|
||||
<li><a id="toc-Optional-Features-1" href="#Optional-Features">10.8 Optional Features</a></li>
|
||||
<li><a id="toc-Basic-Installation" href="#Basic-Installation">10.1 Basic Installation</a></li>
|
||||
<li><a id="toc-Compilers-and-Options" href="#Compilers-and-Options">10.2 Compilers and Options</a></li>
|
||||
<li><a id="toc-Compiling-For-Multiple-Architectures" href="#Compiling-For-Multiple-Architectures">10.3 Compiling For Multiple Architectures</a></li>
|
||||
<li><a id="toc-Installation-Names" href="#Installation-Names">10.4 Installation Names</a></li>
|
||||
<li><a id="toc-Specifying-the-System-Type" href="#Specifying-the-System-Type">10.5 Specifying the System Type</a></li>
|
||||
<li><a id="toc-Sharing-Defaults" href="#Sharing-Defaults">10.6 Sharing Defaults</a></li>
|
||||
<li><a id="toc-Operation-Controls" href="#Operation-Controls">10.7 Operation Controls</a></li>
|
||||
<li><a id="toc-Optional-Features" href="#Optional-Features">10.8 Optional Features</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-Reporting-Bugs-1" href="#Reporting-Bugs">Appendix A Reporting Bugs</a></li>
|
||||
<li><a id="toc-Major-Differences-From-The-Bourne-Shell-1" href="#Major-Differences-From-The-Bourne-Shell">Appendix B Major Differences From The Bourne Shell</a>
|
||||
<li><a id="toc-Reporting-Bugs" href="#Reporting-Bugs">Appendix A Reporting Bugs</a></li>
|
||||
<li><a id="toc-Major-Differences-From-The-Bourne-Shell" href="#Major-Differences-From-The-Bourne-Shell">Appendix B Major Differences From The Bourne Shell</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Implementation-Differences-From-The-SVR4_002e2-Shell" href="#Implementation-Differences-From-The-SVR4_002e2-Shell">B.1 Implementation Differences From The SVR4.2 Shell</a></li>
|
||||
</ul></li>
|
||||
<li><a id="toc-GNU-Free-Documentation-License-1" href="#GNU-Free-Documentation-License">Appendix C GNU Free Documentation License</a></li>
|
||||
<li><a id="toc-Indexes-1" href="#Indexes">Appendix D Indexes</a>
|
||||
<li><a id="toc-GNU-Free-Documentation-License" href="#GNU-Free-Documentation-License">Appendix C GNU Free Documentation License</a></li>
|
||||
<li><a id="toc-Indexes" href="#Indexes">Appendix D Indexes</a>
|
||||
<ul class="toc-numbered-mark">
|
||||
<li><a id="toc-Index-of-Shell-Builtin-Commands" href="#Builtin-Index" rel="index">D.1 Index of Shell Builtin Commands</a></li>
|
||||
<li><a id="toc-Index-of-Shell-Reserved-Words" href="#Reserved-Word-Index" rel="index">D.2 Index of Shell Reserved Words</a></li>
|
||||
<li><a id="toc-Parameter-and-Variable-Index" href="#Variable-Index" rel="index">D.3 Parameter and Variable Index</a></li>
|
||||
<li><a id="toc-Function-Index-1" href="#Function-Index" rel="index">D.4 Function Index</a></li>
|
||||
<li><a id="toc-Concept-Index-1" href="#Concept-Index" rel="index">D.5 Concept Index</a></li>
|
||||
<li><a id="toc-Function-Index" href="#Function-Index" rel="index">D.4 Function Index</a></li>
|
||||
<li><a id="toc-Concept-Index" href="#Concept-Index" rel="index">D.5 Concept Index</a></li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
</div>
|
||||
@@ -9562,7 +9562,8 @@ not when the function is executed, because a function definition
|
||||
is itself a command.
|
||||
As a consequence, aliases
|
||||
defined in a function are not available until after that
|
||||
function is executed. To be safe, always put
|
||||
function is executed.
|
||||
To be safe, always put
|
||||
alias definitions on a separate line, and do not use <code class="code">alias</code>
|
||||
in compound commands.
|
||||
</p>
|
||||
@@ -10531,12 +10532,22 @@ statuses after the <code class="code">wait</code> builtin returns it.
|
||||
|
||||
</li></ol>
|
||||
|
||||
<p>There is other <small class="sc">POSIX</small> behavior that Bash does not implement by
|
||||
<p>There is additional <small class="sc">POSIX</small> behavior that Bash does not implement by
|
||||
default even when in <small class="sc">POSIX</small> mode.
|
||||
Specifically:
|
||||
</p>
|
||||
<ol class="enumerate">
|
||||
<li> The <code class="code">fc</code> builtin checks <code class="code">$EDITOR</code> as a program to edit history
|
||||
<li> <small class="sc">POSIX</small> requires that word splitting be byte-oriented.
|
||||
That is, each <em class="emph">byte</em> in the value of <code class="env">IFS</code> potentially splits a
|
||||
word, even if that byte is part of a multibyte character in <code class="env">IFS</code>
|
||||
or part of multibyte character in the word.
|
||||
Bash allows multibyte characters in the value of <code class="env">IFS</code>, treating
|
||||
a valid multibyte character as a single delimiter, and will not
|
||||
split a valid multibyte character even if one of the bytes composing that
|
||||
character appears in <code class="env">IFS</code>.
|
||||
This is <small class="sc">POSIX</small> interpretation 1560, further modified by issue 1924.
|
||||
|
||||
</li><li> The <code class="code">fc</code> builtin checks <code class="code">$EDITOR</code> as a program to edit history
|
||||
entries if <code class="code">FCEDIT</code> is unset, rather than defaulting directly to
|
||||
<code class="code">ed</code>.
|
||||
<code class="code">fc</code> uses <code class="code">ed</code> if <code class="code">EDITOR</code> is unset.
|
||||
@@ -12866,7 +12877,7 @@ This is how to insert key sequences like <kbd class="kbd">C-q</kbd>, for example
|
||||
</p>
|
||||
|
||||
</dd>
|
||||
<dt><a id="index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029"></a><span><code class="code">self-insert (a, b, A, 1, !, …)</code><a class="copiable-link" href="#index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029"> ¶</a></span></dt>
|
||||
<dt><a id="index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_002e_002e_002e_0029"></a><span><code class="code">self-insert (a, b, A, 1, !, …)</code><a class="copiable-link" href="#index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_002e_002e_002e_0029"> ¶</a></span></dt>
|
||||
<dd><p>Insert the character typed.
|
||||
</p>
|
||||
</dd>
|
||||
@@ -13059,7 +13070,7 @@ Next: <a href="#Commands-For-Completion" accesskey="n" rel="next">Letting Readli
|
||||
</div>
|
||||
<h4 class="subsection" id="Specifying-Numeric-Arguments"><span>8.4.5 Specifying Numeric Arguments<a class="copiable-link" href="#Specifying-Numeric-Arguments"> ¶</a></span></h4>
|
||||
<dl class="ftable">
|
||||
<dt><a id="index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029"></a><span><code class="code">digit-argument (<kbd class="kbd">M-0</kbd>, <kbd class="kbd">M-1</kbd>, … <kbd class="kbd">M--</kbd>)</code><a class="copiable-link" href="#index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029"> ¶</a></span></dt>
|
||||
<dt><a id="index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_002e_002e_002e-M_002d_002d_0029"></a><span><code class="code">digit-argument (<kbd class="kbd">M-0</kbd>, <kbd class="kbd">M-1</kbd>, … <kbd class="kbd">M--</kbd>)</code><a class="copiable-link" href="#index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_002e_002e_002e-M_002d_002d_0029"> ¶</a></span></dt>
|
||||
<dd><p>Add this digit to the argument already accumulating, or start a new
|
||||
argument.
|
||||
<kbd class="kbd">M--</kbd> starts a negative argument.
|
||||
@@ -13298,7 +13309,7 @@ ring the terminal’s bell (subject to the setting of
|
||||
<code class="code">bell-style</code>).
|
||||
</p>
|
||||
</dd>
|
||||
<dt><a id="index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029"></a><span><code class="code">do-lowercase-version (M-A, M-B, M-<var class="var">x</var>, …)</code><a class="copiable-link" href="#index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029"> ¶</a></span></dt>
|
||||
<dt><a id="index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_002e_002e_002e_0029"></a><span><code class="code">do-lowercase-version (M-A, M-B, M-<var class="var">x</var>, …)</code><a class="copiable-link" href="#index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_002e_002e_002e_0029"> ¶</a></span></dt>
|
||||
<dd><p>If the metafied character <var class="var">x</var> is upper case, run the command
|
||||
that is bound to the corresponding metafied lower case character.
|
||||
The behavior is undefined if <var class="var">x</var> is already lower case.
|
||||
@@ -16650,7 +16661,7 @@ Next: <a href="#Reserved-Word-Index" accesskey="n" rel="next">Index of Shell Res
|
||||
<a class="summary-letter-printindex" href="#Builtin-Index_bt_letter-W"><b>W</b></a>
|
||||
|
||||
</td></tr></table>
|
||||
<table class="bt-entries-printindex" border="0">
|
||||
<table class="bt-entries-printindex">
|
||||
<tr><td></td><th class="entries-header-printindex">Index Entry</th><th class="sections-header-printindex">Section</th></tr>
|
||||
<tr><td colspan="3"><hr></td></tr>
|
||||
<tr><th id="Builtin-Index_bt_symbol-1">:</th></tr>
|
||||
@@ -16842,7 +16853,7 @@ Next: <a href="#Variable-Index" accesskey="n" rel="next">Parameter and Variable
|
||||
<a class="summary-letter-printindex" href="#Reserved-Word-Index_rw_letter-W"><b>W</b></a>
|
||||
|
||||
</td></tr></table>
|
||||
<table class="rw-entries-printindex" border="0">
|
||||
<table class="rw-entries-printindex">
|
||||
<tr><td></td><th class="entries-header-printindex">Index Entry</th><th class="sections-header-printindex">Section</th></tr>
|
||||
<tr><td colspan="3"><hr></td></tr>
|
||||
<tr><th id="Reserved-Word-Index_rw_symbol-1">!</th></tr>
|
||||
@@ -16994,7 +17005,7 @@ Next: <a href="#Function-Index" accesskey="n" rel="next">Function Index</a>, Pre
|
||||
<a class="summary-letter-printindex" href="#Variable-Index_vr_letter-V"><b>V</b></a>
|
||||
|
||||
</td></tr></table>
|
||||
<table class="vr-entries-printindex" border="0">
|
||||
<table class="vr-entries-printindex">
|
||||
<tr><td></td><th class="entries-header-printindex">Index Entry</th><th class="sections-header-printindex">Section</th></tr>
|
||||
<tr><td colspan="3"><hr></td></tr>
|
||||
<tr><th id="Variable-Index_vr_symbol-1">_</th></tr>
|
||||
@@ -17343,7 +17354,7 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
|
||||
<a class="summary-letter-printindex" href="#Function-Index_fn_letter-Y"><b>Y</b></a>
|
||||
|
||||
</td></tr></table>
|
||||
<table class="fn-entries-printindex" border="0">
|
||||
<table class="fn-entries-printindex">
|
||||
<tr><td></td><th class="entries-header-printindex">Index Entry</th><th class="sections-header-printindex">Section</th></tr>
|
||||
<tr><td colspan="3"><hr></td></tr>
|
||||
<tr><th id="Function-Index_fn_letter-A">A</th></tr>
|
||||
@@ -17384,9 +17395,9 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-delete_002dchar-_0028C_002dd_0029"><code>delete-char (C-d)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-delete_002dchar_002dor_002dlist-_0028_0029"><code>delete-char-or-list ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Completion">Commands For Completion</a></td></tr>
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-delete_002dhorizontal_002dspace-_0028_0029"><code>delete-horizontal-space ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_2026-M_002d_002d_0029"><code>digit-argument (<kbd class="kbd">M-0</kbd>, <kbd class="kbd">M-1</kbd>, … <kbd class="kbd">M--</kbd>)</code></a></td><td class="printindex-index-section"><a href="#Numeric-Arguments">Numeric Arguments</a></td></tr>
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-digit_002dargument-_0028M_002d0_002c-M_002d1_002c-_002e_002e_002e-M_002d_002d_0029"><code>digit-argument (<kbd class="kbd">M-0</kbd>, <kbd class="kbd">M-1</kbd>, … <kbd class="kbd">M--</kbd>)</code></a></td><td class="printindex-index-section"><a href="#Numeric-Arguments">Numeric Arguments</a></td></tr>
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-display_002dshell_002dversion-_0028C_002dx-C_002dv_0029"><code>display-shell-version (C-x C-v)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_2026_0029"><code>do-lowercase-version (M-A, M-B, M-<var class="var">x</var>, …)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-do_002dlowercase_002dversion-_0028M_002dA_002c-M_002dB_002c-M_002dx_002c-_002e_002e_002e_0029"><code>do-lowercase-version (M-A, M-B, M-<var class="var">x</var>, …)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-downcase_002dword-_0028M_002dl_0029"><code>downcase-word (M-l)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-dump_002dfunctions-_0028_0029"><code>dump-functions ()</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-dump_002dmacros-_0028_0029"><code>dump-macros ()</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
|
||||
@@ -17471,7 +17482,7 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-revert_002dline-_0028M_002dr_0029"><code>revert-line (M-r)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
|
||||
<tr><td colspan="3"><hr></td></tr>
|
||||
<tr><th id="Function-Index_fn_letter-S">S</th></tr>
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_2026_0029"><code>self-insert (a, b, A, 1, !, …)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-self_002dinsert-_0028a_002c-b_002c-A_002c-1_002c-_0021_002c-_002e_002e_002e_0029"><code>self-insert (a, b, A, 1, !, …)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-set_002dmark-_0028C_002d_0040_0029"><code>set-mark (C-@)</code></a></td><td class="printindex-index-section"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-shell_002dbackward_002dkill_002dword-_0028_0029"><code>shell-backward-kill-word ()</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
|
||||
<tr><td></td><td class="printindex-index-entry"><a href="#index-shell_002dbackward_002dword-_0028M_002dC_002db_0029"><code>shell-backward-word (M-C-b)</code></a></td><td class="printindex-index-section"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
|
||||
@@ -17602,7 +17613,7 @@ Previous: <a href="#Function-Index" accesskey="p" rel="prev">Function Index</a>,
|
||||
<a class="summary-letter-printindex" href="#Concept-Index_cp_letter-Y"><b>Y</b></a>
|
||||
|
||||
</td></tr></table>
|
||||
<table class="cp-entries-printindex" border="0">
|
||||
<table class="cp-entries-printindex">
|
||||
<tr><td></td><th class="entries-header-printindex">Index Entry</th><th class="sections-header-printindex">Section</th></tr>
|
||||
<tr><td colspan="3"><hr></td></tr>
|
||||
<tr><th id="Concept-Index_cp_letter-A">A</th></tr>
|
||||
|
||||
+150
-142
@@ -1,10 +1,10 @@
|
||||
This is bashref.info, produced by makeinfo version 7.1 from
|
||||
This is bashref.info, produced by makeinfo version 7.2 from
|
||||
bashref.texi.
|
||||
|
||||
This text is a brief description of the features that are present in the
|
||||
Bash shell (version 5.3, 7 April 2025).
|
||||
Bash shell (version 5.3, 18 May 2025).
|
||||
|
||||
This is Edition 5.3, last updated 7 April 2025, of ‘The GNU Bash
|
||||
This is Edition 5.3, last updated 18 May 2025, of ‘The GNU Bash
|
||||
Reference Manual’, for ‘Bash’, Version 5.3.
|
||||
|
||||
Copyright © 1988-2025 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, 7 April 2025). The Bash home page is
|
||||
Bash shell (version 5.3, 18 May 2025). The Bash home page is
|
||||
<http://www.gnu.org/software/bash/>.
|
||||
|
||||
This is Edition 5.3, last updated 7 April 2025, of ‘The GNU Bash
|
||||
This is Edition 5.3, last updated 18 May 2025, of ‘The GNU Bash
|
||||
Reference Manual’, for ‘Bash’, Version 5.3.
|
||||
|
||||
Bash contains features that appear in other popular shells, and some
|
||||
@@ -7991,14 +7991,23 @@ startup files.
|
||||
75. Bash removes an exited background process's status from the list
|
||||
of such statuses after the ‘wait’ builtin returns it.
|
||||
|
||||
There is other POSIX behavior that Bash does not implement by default
|
||||
even when in POSIX mode. Specifically:
|
||||
There is additional POSIX behavior that Bash does not implement by
|
||||
default even when in POSIX mode. Specifically:
|
||||
|
||||
1. The ‘fc’ builtin checks ‘$EDITOR’ as a program to edit history
|
||||
1. POSIX requires that word splitting be byte-oriented. That is, each
|
||||
_byte_ in the value of ‘IFS’ potentially splits a word, even if
|
||||
that byte is part of a multibyte character in ‘IFS’ or part of
|
||||
multibyte character in the word. Bash allows multibyte characters
|
||||
in the value of ‘IFS’, treating a valid multibyte character as a
|
||||
single delimiter, and will not split a valid multibyte character
|
||||
even if one of the bytes composing that character appears in ‘IFS’.
|
||||
This is POSIX interpretation 1560, further modified by issue 1924.
|
||||
|
||||
2. The ‘fc’ builtin checks ‘$EDITOR’ as a program to edit history
|
||||
entries if ‘FCEDIT’ is unset, rather than defaulting directly to
|
||||
‘ed’. ‘fc’ uses ‘ed’ if ‘EDITOR’ is unset.
|
||||
|
||||
2. As noted above, Bash requires the ‘xpg_echo’ option to be enabled
|
||||
3. As noted above, Bash requires the ‘xpg_echo’ option to be enabled
|
||||
for the ‘echo’ builtin to be fully conformant.
|
||||
|
||||
Bash can be configured to be POSIX-conformant by default, by
|
||||
@@ -13601,141 +13610,140 @@ D.5 Concept Index
|
||||
* yanking text: Readline Killing Commands.
|
||||
(line 6)
|
||||
|
||||
|
||||
|
||||
Tag Table:
|
||||
Node: Top896
|
||||
Node: Introduction2832
|
||||
Node: What is Bash?3048
|
||||
Node: What is a shell?4184
|
||||
Node: Definitions6797
|
||||
Node: Basic Shell Features10127
|
||||
Node: Shell Syntax11354
|
||||
Node: Shell Operation12384
|
||||
Node: Quoting13678
|
||||
Node: Escape Character15019
|
||||
Node: Single Quotes15557
|
||||
Node: Double Quotes15909
|
||||
Node: ANSI-C Quoting17257
|
||||
Node: Locale Translation18654
|
||||
Node: Creating Internationalized Scripts20060
|
||||
Node: Comments24261
|
||||
Node: Shell Commands25031
|
||||
Node: Reserved Words25973
|
||||
Node: Simple Commands26841
|
||||
Node: Pipelines27506
|
||||
Node: Lists30765
|
||||
Node: Compound Commands32640
|
||||
Node: Looping Constructs33652
|
||||
Node: Conditional Constructs36204
|
||||
Node: Command Grouping51277
|
||||
Node: Coprocesses52772
|
||||
Node: GNU Parallel55461
|
||||
Node: Shell Functions56382
|
||||
Node: Shell Parameters64833
|
||||
Node: Positional Parameters69737
|
||||
Node: Special Parameters70830
|
||||
Node: Shell Expansions74294
|
||||
Node: Brace Expansion76486
|
||||
Node: Tilde Expansion79825
|
||||
Node: Shell Parameter Expansion82783
|
||||
Node: Command Substitution103429
|
||||
Node: Arithmetic Expansion106961
|
||||
Node: Process Substitution108140
|
||||
Node: Word Splitting109251
|
||||
Node: Filename Expansion111698
|
||||
Node: Pattern Matching114925
|
||||
Node: Quote Removal120651
|
||||
Node: Redirections120958
|
||||
Node: Executing Commands131224
|
||||
Node: Simple Command Expansion131894
|
||||
Node: Command Search and Execution134005
|
||||
Node: Command Execution Environment136452
|
||||
Node: Environment139903
|
||||
Node: Exit Status141809
|
||||
Node: Signals143870
|
||||
Node: Shell Scripts148802
|
||||
Node: Shell Builtin Commands152103
|
||||
Node: Bourne Shell Builtins154217
|
||||
Node: Bash Builtins180867
|
||||
Node: Modifying Shell Behavior217794
|
||||
Node: The Set Builtin218139
|
||||
Node: The Shopt Builtin230136
|
||||
Node: Special Builtins247191
|
||||
Node: Shell Variables248183
|
||||
Node: Bourne Shell Variables248620
|
||||
Node: Bash Variables251131
|
||||
Node: Bash Features290258
|
||||
Node: Invoking Bash291275
|
||||
Node: Bash Startup Files297862
|
||||
Node: Interactive Shells303107
|
||||
Node: What is an Interactive Shell?303518
|
||||
Node: Is this Shell Interactive?304183
|
||||
Node: Interactive Shell Behavior305010
|
||||
Node: Bash Conditional Expressions308774
|
||||
Node: Shell Arithmetic314194
|
||||
Node: Aliases317526
|
||||
Node: Arrays320663
|
||||
Node: The Directory Stack328254
|
||||
Node: Directory Stack Builtins329054
|
||||
Node: Controlling the Prompt333502
|
||||
Node: The Restricted Shell336390
|
||||
Node: Bash POSIX Mode339275
|
||||
Node: Shell Compatibility Mode357635
|
||||
Node: Job Control366645
|
||||
Node: Job Control Basics367105
|
||||
Node: Job Control Builtins373476
|
||||
Node: Job Control Variables380161
|
||||
Node: Command Line Editing381395
|
||||
Node: Introduction and Notation383101
|
||||
Node: Readline Interaction385456
|
||||
Node: Readline Bare Essentials386647
|
||||
Node: Readline Movement Commands388458
|
||||
Node: Readline Killing Commands389457
|
||||
Node: Readline Arguments391483
|
||||
Node: Searching392543
|
||||
Node: Readline Init File394789
|
||||
Node: Readline Init File Syntax396095
|
||||
Node: Conditional Init Constructs422923
|
||||
Node: Sample Init File427311
|
||||
Node: Bindable Readline Commands430434
|
||||
Node: Commands For Moving431975
|
||||
Node: Commands For History434442
|
||||
Node: Commands For Text439835
|
||||
Node: Commands For Killing443963
|
||||
Node: Numeric Arguments446754
|
||||
Node: Commands For Completion447909
|
||||
Node: Keyboard Macros453608
|
||||
Node: Miscellaneous Commands454312
|
||||
Node: Readline vi Mode460882
|
||||
Node: Programmable Completion461862
|
||||
Node: Programmable Completion Builtins470602
|
||||
Node: A Programmable Completion Example482342
|
||||
Node: Using History Interactively487690
|
||||
Node: Bash History Facilities488374
|
||||
Node: Bash History Builtins492112
|
||||
Node: History Interaction498586
|
||||
Node: Event Designators503539
|
||||
Node: Word Designators505120
|
||||
Node: Modifiers507515
|
||||
Node: Installing Bash509455
|
||||
Node: Basic Installation510574
|
||||
Node: Compilers and Options514453
|
||||
Node: Compiling For Multiple Architectures515206
|
||||
Node: Installation Names516962
|
||||
Node: Specifying the System Type519199
|
||||
Node: Sharing Defaults519948
|
||||
Node: Operation Controls520665
|
||||
Node: Optional Features521687
|
||||
Node: Reporting Bugs534070
|
||||
Node: Major Differences From The Bourne Shell535430
|
||||
Node: GNU Free Documentation License556859
|
||||
Node: Indexes582039
|
||||
Node: Builtin Index582493
|
||||
Node: Reserved Word Index589594
|
||||
Node: Variable Index592042
|
||||
Node: Function Index609458
|
||||
Node: Concept Index623456
|
||||
Node: Top894
|
||||
Node: Introduction2828
|
||||
Node: What is Bash?3044
|
||||
Node: What is a shell?4180
|
||||
Node: Definitions6793
|
||||
Node: Basic Shell Features10123
|
||||
Node: Shell Syntax11350
|
||||
Node: Shell Operation12380
|
||||
Node: Quoting13674
|
||||
Node: Escape Character15015
|
||||
Node: Single Quotes15553
|
||||
Node: Double Quotes15905
|
||||
Node: ANSI-C Quoting17253
|
||||
Node: Locale Translation18650
|
||||
Node: Creating Internationalized Scripts20056
|
||||
Node: Comments24257
|
||||
Node: Shell Commands25027
|
||||
Node: Reserved Words25969
|
||||
Node: Simple Commands26837
|
||||
Node: Pipelines27502
|
||||
Node: Lists30761
|
||||
Node: Compound Commands32636
|
||||
Node: Looping Constructs33648
|
||||
Node: Conditional Constructs36200
|
||||
Node: Command Grouping51273
|
||||
Node: Coprocesses52768
|
||||
Node: GNU Parallel55457
|
||||
Node: Shell Functions56378
|
||||
Node: Shell Parameters64829
|
||||
Node: Positional Parameters69733
|
||||
Node: Special Parameters70826
|
||||
Node: Shell Expansions74290
|
||||
Node: Brace Expansion76482
|
||||
Node: Tilde Expansion79821
|
||||
Node: Shell Parameter Expansion82779
|
||||
Node: Command Substitution103425
|
||||
Node: Arithmetic Expansion106957
|
||||
Node: Process Substitution108136
|
||||
Node: Word Splitting109247
|
||||
Node: Filename Expansion111694
|
||||
Node: Pattern Matching114921
|
||||
Node: Quote Removal120647
|
||||
Node: Redirections120954
|
||||
Node: Executing Commands131220
|
||||
Node: Simple Command Expansion131890
|
||||
Node: Command Search and Execution134001
|
||||
Node: Command Execution Environment136448
|
||||
Node: Environment139899
|
||||
Node: Exit Status141805
|
||||
Node: Signals143866
|
||||
Node: Shell Scripts148798
|
||||
Node: Shell Builtin Commands152099
|
||||
Node: Bourne Shell Builtins154213
|
||||
Node: Bash Builtins180863
|
||||
Node: Modifying Shell Behavior217790
|
||||
Node: The Set Builtin218135
|
||||
Node: The Shopt Builtin230132
|
||||
Node: Special Builtins247187
|
||||
Node: Shell Variables248179
|
||||
Node: Bourne Shell Variables248616
|
||||
Node: Bash Variables251127
|
||||
Node: Bash Features290254
|
||||
Node: Invoking Bash291271
|
||||
Node: Bash Startup Files297858
|
||||
Node: Interactive Shells303103
|
||||
Node: What is an Interactive Shell?303514
|
||||
Node: Is this Shell Interactive?304179
|
||||
Node: Interactive Shell Behavior305006
|
||||
Node: Bash Conditional Expressions308770
|
||||
Node: Shell Arithmetic314190
|
||||
Node: Aliases317522
|
||||
Node: Arrays320659
|
||||
Node: The Directory Stack328250
|
||||
Node: Directory Stack Builtins329050
|
||||
Node: Controlling the Prompt333498
|
||||
Node: The Restricted Shell336386
|
||||
Node: Bash POSIX Mode339271
|
||||
Node: Shell Compatibility Mode358220
|
||||
Node: Job Control367230
|
||||
Node: Job Control Basics367690
|
||||
Node: Job Control Builtins374061
|
||||
Node: Job Control Variables380746
|
||||
Node: Command Line Editing381980
|
||||
Node: Introduction and Notation383686
|
||||
Node: Readline Interaction386041
|
||||
Node: Readline Bare Essentials387232
|
||||
Node: Readline Movement Commands389043
|
||||
Node: Readline Killing Commands390042
|
||||
Node: Readline Arguments392068
|
||||
Node: Searching393128
|
||||
Node: Readline Init File395374
|
||||
Node: Readline Init File Syntax396680
|
||||
Node: Conditional Init Constructs423508
|
||||
Node: Sample Init File427896
|
||||
Node: Bindable Readline Commands431019
|
||||
Node: Commands For Moving432560
|
||||
Node: Commands For History435027
|
||||
Node: Commands For Text440420
|
||||
Node: Commands For Killing444548
|
||||
Node: Numeric Arguments447339
|
||||
Node: Commands For Completion448494
|
||||
Node: Keyboard Macros454193
|
||||
Node: Miscellaneous Commands454897
|
||||
Node: Readline vi Mode461467
|
||||
Node: Programmable Completion462447
|
||||
Node: Programmable Completion Builtins471187
|
||||
Node: A Programmable Completion Example482927
|
||||
Node: Using History Interactively488275
|
||||
Node: Bash History Facilities488959
|
||||
Node: Bash History Builtins492697
|
||||
Node: History Interaction499171
|
||||
Node: Event Designators504124
|
||||
Node: Word Designators505705
|
||||
Node: Modifiers508100
|
||||
Node: Installing Bash510040
|
||||
Node: Basic Installation511159
|
||||
Node: Compilers and Options515038
|
||||
Node: Compiling For Multiple Architectures515791
|
||||
Node: Installation Names517547
|
||||
Node: Specifying the System Type519784
|
||||
Node: Sharing Defaults520533
|
||||
Node: Operation Controls521250
|
||||
Node: Optional Features522272
|
||||
Node: Reporting Bugs534655
|
||||
Node: Major Differences From The Bourne Shell536015
|
||||
Node: GNU Free Documentation License557444
|
||||
Node: Indexes582624
|
||||
Node: Builtin Index583078
|
||||
Node: Reserved Word Index590179
|
||||
Node: Variable Index592627
|
||||
Node: Function Index610043
|
||||
Node: Concept Index624041
|
||||
|
||||
End Tag Table
|
||||
|
||||
|
||||
+16
-16
@@ -1,11 +1,11 @@
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.26 (TeX Live 2024/MacPorts 2024.70613_1) (preloaded format=pdfetex 2024.4.9) 22 APR 2025 10:00
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.26 (TeX Live 2024/MacPorts 2024.70613_1) (preloaded format=pdfetex 2024.4.9) 30 MAY 2025 08:52
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
file:line:error style messages enabled.
|
||||
%&-line parsing enabled.
|
||||
**\input /usr/local/src/bash/bash-20250418/doc/bashref.texi
|
||||
(/usr/local/src/bash/bash-20250418/doc/bashref.texi
|
||||
(/usr/local/src/bash/bash-20250418/doc/texinfo.tex
|
||||
**\input /usr/local/src/bash/bash-20250529/doc/bashref.texi
|
||||
(/usr/local/src/bash/bash-20250529/doc/bashref.texi
|
||||
(/usr/local/src/bash/bash-20250529/doc/texinfo.tex
|
||||
Loading texinfo [version 2015-11-22.14]:
|
||||
\outerhsize=\dimen16
|
||||
\outervsize=\dimen17
|
||||
@@ -161,15 +161,15 @@ This is `epsf.tex' v2.7.4 <14 February 2011>
|
||||
texinfo.tex: doing @include of version.texi
|
||||
|
||||
|
||||
(/usr/local/src/bash/bash-20250418/doc/version.texi) [1{/opt/local/var/db/texmf
|
||||
(/usr/local/src/bash/bash-20250529/doc/version.texi) [1{/opt/local/var/db/texmf
|
||||
/fonts/map/pdftex/updmap/pdftex.map}] [2]
|
||||
(/usr/local/build/bash/bash-20250418/doc/bashref.toc [-1] [-2] [-3]) [-4]
|
||||
(/usr/local/build/bash/bash-20250418/doc/bashref.toc)
|
||||
(/usr/local/build/bash/bash-20250418/doc/bashref.toc) Chapter 1
|
||||
(/usr/local/build/bash/bash-20250529/doc/bashref.toc [-1] [-2] [-3]) [-4]
|
||||
(/usr/local/build/bash/bash-20250529/doc/bashref.toc)
|
||||
(/usr/local/build/bash/bash-20250529/doc/bashref.toc) Chapter 1
|
||||
\openout0 = `bashref.toc'.
|
||||
|
||||
|
||||
(/usr/local/build/bash/bash-20250418/doc/bashref.aux)
|
||||
(/usr/local/build/bash/bash-20250529/doc/bashref.aux)
|
||||
\openout1 = `bashref.aux'.
|
||||
|
||||
[1] Chapter 2 [2]
|
||||
@@ -264,7 +264,7 @@ Chapter 7 [124] [125] [126] [127] [128]
|
||||
texinfo.tex: doing @include of rluser.texi
|
||||
|
||||
|
||||
(/usr/local/src/bash/bash-20250418/lib/readline/doc/rluser.texi Chapter 8
|
||||
(/usr/local/src/bash/bash-20250529/lib/readline/doc/rluser.texi Chapter 8
|
||||
[129] [130] [131] [132] [133] [134] [135] [136] [137] [138] [139] [140]
|
||||
Underfull \hbox (badness 7540) in paragraph at lines 964--970
|
||||
[]@textrm In the ex-am-ple above, @textttsl C-u[] @textrm is bound to the func
|
||||
@@ -313,10 +313,10 @@ gnored[]
|
||||
texinfo.tex: doing @include of hsuser.texi
|
||||
|
||||
|
||||
(/usr/local/src/bash/bash-20250418/lib/readline/doc/hsuser.texi Chapter 9
|
||||
(/usr/local/src/bash/bash-20250529/lib/readline/doc/hsuser.texi Chapter 9
|
||||
[167] [168] [169] [170] [171] [172] [173]) Chapter 10 [174] [175] [176]
|
||||
[177] [178]
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 10677--10686
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 10695--10704
|
||||
[]@textrm All of the fol-low-ing op-tions ex-cept for `@texttt alt-array-implem
|
||||
entation[]@textrm '[],
|
||||
|
||||
@@ -329,7 +329,7 @@ entation[]@textrm '[],
|
||||
.etc.
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 10677--10686
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 10695--10704
|
||||
@textrm `@texttt disabled-builtins[]@textrm '[], `@texttt direxpand-default[]@t
|
||||
extrm '[], `@texttt strict-posix-default[]@textrm '[], and
|
||||
|
||||
@@ -346,13 +346,13 @@ extrm '[], `@texttt strict-posix-default[]@textrm '[], and
|
||||
texinfo.tex: doing @include of fdl.texi
|
||||
|
||||
|
||||
(/usr/local/src/bash/bash-20250418/doc/fdl.texi [192] [193] [194] [195]
|
||||
(/usr/local/src/bash/bash-20250529/doc/fdl.texi [192] [193] [194] [195]
|
||||
[196] [197] [198]) Appendix D [199] [200] [201] [202] [203] [204] [205]
|
||||
[206] [207] [208] )
|
||||
Here is how much of TeX's memory you used:
|
||||
4116 strings out of 495840
|
||||
47662 string characters out of 6171739
|
||||
145156 words of memory out of 5000000
|
||||
145154 words of memory out of 5000000
|
||||
5048 multiletter control sequences out of 15000+600000
|
||||
34315 words of font info for 116 fonts, out of 8000000 for 9000
|
||||
701 hyphenation exceptions out of 8191
|
||||
@@ -373,7 +373,7 @@ fonts/type1/public/amsfonts/cm/cmti10.pfb></opt/local/share/texmf-texlive/fonts
|
||||
lic/amsfonts/cm/cmtt9.pfb></opt/local/share/texmf-texlive/fonts/type1/public/cm
|
||||
-super/sfrm1095.pfb></opt/local/share/texmf-texlive/fonts/type1/public/cm-super
|
||||
/sfrm1440.pfb>
|
||||
Output written on bashref.pdf (214 pages, 855036 bytes).
|
||||
Output written on bashref.pdf (214 pages, 855783 bytes).
|
||||
PDF statistics:
|
||||
2948 PDF objects out of 2984 (max. 8388607)
|
||||
2686 compressed objects within 27 object streams
|
||||
|
||||
Binary file not shown.
+339
-319
@@ -1,7 +1,7 @@
|
||||
%!PS-Adobe-2.0
|
||||
%%Creator: dvips(k) 2024.1 (TeX Live 2024) Copyright 2024 Radical Eye Software
|
||||
%%Title: bashref.dvi
|
||||
%%CreationDate: Tue Apr 22 14:00:28 2025
|
||||
%%CreationDate: Fri May 30 12:52:48 2025
|
||||
%%Pages: 214
|
||||
%%PageOrder: Ascend
|
||||
%%BoundingBox: 0 0 612 792
|
||||
@@ -10,10 +10,9 @@
|
||||
%%DocumentPaperSizes: Letter
|
||||
%%EndComments
|
||||
%DVIPSWebPage: (www.radicaleye.com)
|
||||
%DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps
|
||||
%+ /usr/local/src/bash/bash-20250418/doc/bashref.dvi
|
||||
%DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi
|
||||
%DVIPSParameters: dpi=600
|
||||
%DVIPSSource: TeX output 2025.04.22:1000
|
||||
%DVIPSSource: TeX output 2025.05.30:0852
|
||||
%%BeginProcSet: tex.pro 0 0
|
||||
%!
|
||||
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
|
||||
@@ -4954,6 +4953,7 @@ dup 41 /parenright put
|
||||
dup 45 /hyphen put
|
||||
dup 51 /three put
|
||||
dup 97 /a put
|
||||
dup 98 /b put
|
||||
dup 99 /c put
|
||||
dup 100 /d put
|
||||
dup 101 /e put
|
||||
@@ -5196,135 +5196,141 @@ ACA503B3C565FE949A30F08F9A68541FC740549496AA70885C19FB751B46C797
|
||||
2BDAE3C044E0BBD0FFCFB0E6676B8A06318ECE80777A5FA5A137CC043FA0E17B
|
||||
8BA4E8C5DCD5854EE5775355100225D52D719BBE3AE2BBAEE2A9EBFC1E6DDB44
|
||||
30B4DC186F26DA75731DF0BB2232903645900B351A1A40EF09E80E4D602E3F3B
|
||||
91708A66B4DBCFCDF9F739947A34AC5BB67EA974A305C7F95DE2C331D8E5AC2E
|
||||
029BD620DFFCD216CFF05B10E68262D58DED07D9CB5CD73C20778E3BB1B1EDE4
|
||||
A4538AA03CB7778E19B89AF3F34438F882105DE368C1B5AEF6667CF77ADB94EF
|
||||
D54E166110F8242A64117AB9A9B78E11437F0CC332865D268FC5F5259CA6BAB5
|
||||
116C169C72CA1390D264B6694721F6C4E11E7FBA3E71EBF9DB0CAA0E47293153
|
||||
A02729F77ABFD98C8BEFF6C29C0C1471033978A1FB867F3BF22158B0A4781426
|
||||
8AC4F157E5AEA63F8D164D6654360577CD9860282B379FBAAE27F07039161ED7
|
||||
F8B99311C72B2A02189A447CED8191932F70BBB78D805847EC77F3C43CF58CC4
|
||||
EAE0E7219426BF23819E0DE5912486D77B8B7D585E6A50AA5762197C8E2C4EB4
|
||||
3A2B1A34E8C0F5AED32DA5FE92952FFAABFB29742C18470AF7046292E11154F0
|
||||
7F9EE5622DE1C04A60B8D0C2257EE8D06CA3E4D0D6CC2B6CEE18B4F5BB2E7299
|
||||
A939892DD8DF1366FEF6258390F3E7563A3A4AB54F9910A4A317DE96DE0CC1D1
|
||||
59E087517210E5012256A56EFD75CBB351B9F3CEFCC5EB693BD3F265490AE809
|
||||
C81D375B49279900C5EA3804B495216F8905D3C430979032230C39106F8FBC7A
|
||||
F7FE5AC195AA3F37EB736B5F9895A6C7494A19F53325FFB31C154CF78879D336
|
||||
BFB1718799B2A1E0717833548403E3F4A96023F9FD06B5728A1EEF86FCE5345F
|
||||
13ECCC04A6F06A2195446121C45F4A5CC66796924A6EF8429327CB9BC3289F13
|
||||
71FC30E1DC10D7BF6DE0A9E4135FA3D86B1FA416DA5277F678E72B7DEAE1E7A8
|
||||
83B615B9DFA92F8C86B98A36413A9A83F859B06BFD57A239745598EBBC91FA11
|
||||
5A7738F46DE08A31A286474EFF96552B4F2B9552C806CE2988879B2B707063CB
|
||||
F4285218597CA39A00A3432B784F8EE45AF5507C667E1641374E225B71F2BE34
|
||||
69F1DE6B8357A78646D38C4E2430011501FA6C4791BAAF24A240A8C765DFCF4E
|
||||
EF8F3FF7B892F0070FAF734DB0BE2F0122DE5C1EBB2554C4AFF49BDEB6CE9A55
|
||||
E0F246D29A8001F5704C04FF41D7439D628AB4D968938A4C094FEBF4EEBAE758
|
||||
0D7E247AA9D7598BAEBF182DB178BD90520E80748C35F30339BC6BE01F40473D
|
||||
7070138BEB5587F0536F517BFB4B35A0341E803D7E38500308E3DCBB1F0B107B
|
||||
B7C9D890BC079A1F7727DA51CFF0E36D2F93CC990E2A5354CEEEDD1C43A4D760
|
||||
80E97B13E562EE347252E72829FBDE9EF644171C02F9394EF0DFAAECE1BC9A59
|
||||
D0388A70048AB2AA8C2694391FF2BB9E764BC220A77970E324345255E2D47540
|
||||
BCC6903E2D87A75C6848FEF763D5794D29D7BB362890D591AAD1B210D5A3198D
|
||||
455A4CD565C3A85E88525FB2F2E340ED2AD15A5569C54DFA9A889D2790C1E4BC
|
||||
984690ADEF12C1C57A999D08B85BE2AA554E20B48172FB3FDCF127E4CEF6283C
|
||||
77EBB27AA14449610CA704337A9427AF3EEB863707009A51A1AA9E3DD0ED6C1A
|
||||
B0579A4CB74F0BB962FA97EA4C3599FA782C9714237C1A04665BB5C6FF544208
|
||||
D7AF307383667A7AA3EC2D5B349B5ED7C7F37CA5FBD5B0171A95D7A9A3D973AE
|
||||
F8632214A31264888AF7292B81E19AC2846E0C79131C40B391B0A785E2CCE197
|
||||
524117179B44B9E8B633C1D3F19F1B3523CFC02DD5F1E9806BEF62491140A59B
|
||||
2052BEC84B496869EACB84AC9CA6A854D5E701186FB15BA016B33F9681F5A5FC
|
||||
2AE141291D02383433C57C205F526D3CD4FEB5D99B2FBCB609ED85B474BA8F69
|
||||
C45A1BA96B5AECBE7EC1EBCF265F400DAE943CFCCA785907050CFA6A23CD4C5E
|
||||
B6DC2C793BE8D8ACD85BF83AC662205BF76981DD864E58F66212A4F8A650AB7E
|
||||
244444786D75D1821283C544804F8FE5EA300E3DDF832056A916DD9FBEF04E68
|
||||
339C66FF5054D30C094FC5498AAC3E170701C382322DF543EC3D98A11FC3225B
|
||||
158694570C4FE19CDF592F5F3A111B63615AB2DA3E932CCA1EA02373B01D6398
|
||||
E6AAD8FEB3C9F62CC29CB6CA30CEF112C1D004D21A28DD03952D5188F5C39203
|
||||
BC5EB7E6BBD07B30B12233964860C7302493DF286F87C9AD8C8DA34582AAB342
|
||||
E726C5EE08AEE84BBE57C3C3D0465DA3ED81F506337B152E97F303093526B26E
|
||||
4D52B0C43CE276B4F06E8E8601FD18496B166303CFF419B9B5DC200F691F1955
|
||||
9C2CF202F41BF2295E1738F5C7ACD434CF628BBE043BFE2ECCB5DE2D71BDE932
|
||||
0162EA7DB842017FB1F428F91ABC693A1182DD1ED09AF938F5934F5CA36C001A
|
||||
810815A152A96091B27E49FDE87BD97F019804D1FCCE1793700AC0762FFB3FD4
|
||||
14245E87888B54D2FB91AE501B0A998732321A9A275265A7AF196CB0BBE2A9A9
|
||||
27DA00C9282EB875B7D508ADD444261C799B558F764143BC780C8F6C74EA7FF9
|
||||
8C2CCA95D9E5AC225843019E3DDCAF3555381F3F7A46A49731EBEA3D3BCE7C29
|
||||
C5D86EDE26FDC34E9DF04266B9FEC79CE387493FA40AB4762178686659D210BB
|
||||
30215702BFEC9EF027916978583A76617EB180B8D6C866257F9C14B80D7C0254
|
||||
A5B1BD9FF2096AEA41031DC702911A40A06092EDCCFF150DC756A893E19AF583
|
||||
832E7B0ED88996692783C11CE1CD5BB3268BA0579BE0E003CE53B0E719B5BB2F
|
||||
AE87DE65AE8064AFB8F4EE72F16F4A567AB2EBF3002DABC0C3D56BE7BA073860
|
||||
6B583385F8478868364A85BD9A89ED52693E4E03188872917A2219A89599F867
|
||||
F7585E713CAC55F4D523662891745D8172CE06910AEAD92C0A9489ABD51DBB8F
|
||||
C5FC9DE83FF69505C1F09A8598FAF1BFD3FFFAB05A537C6E651EAC117E0F3FFE
|
||||
6EE53778C2017582250FA25B381300766CCF1EBFA5B210549FC243EE32FD1381
|
||||
FDC1070B7BD459C025C6B591032CE422BE8B6B411A0380175DC101C3859B315E
|
||||
47ABA9A68AC52CABD3711AF236E3B67BAC6BDB07666F563441CAEC10C2B12196
|
||||
6B687C34F8FCC9C061B6B19792F3F2CE72E4AF6C8070709C9CC9DD8B8CBE9980
|
||||
79FDC3D6391F35022B3E1EC0B298DC2409842B39386DBAB07F7DB4F28A40F3D7
|
||||
FAF6C7E39C16E88AAFCE8F5958F7D3E2E866FE990BEE541983253F6A447919B1
|
||||
F88600D21A55E25EE7DAA7CBF0E9E632C1553BF1C220220DBA1132995D39796E
|
||||
548448C9940F18CD41D4153AB742BC6E5A200D70B12D2C91CDDB60AB2D949FD7
|
||||
05D9F51500E5D8FA6A3BC706FD66404EE565EEBD6192F1BC784E47E55312B4DA
|
||||
531121687D60CBB1985285E73A7CF3A629A104EEB54F4DFBB6BF9C326D1ABAC9
|
||||
FFFD8142F10E17F9C4407589507E47CA36ECCC4DDB2A8C3CB1EB57AFEE28E2D8
|
||||
809CB435BB888BAE35BAFD16B3764F6922E5A4DA6723CEB52AAC2951F0C3DD54
|
||||
A25D55C9830728F471170004020471DD7316BCE6E5293DD716CA55F05693013B
|
||||
EAA64EF3814069A5B125FE134ABE80B54644DC89BF0058C0039EAEEA998D817D
|
||||
315AB5A6A28F31472D169FA2AD749BD153B45B81EBC0C92964415FCB8B8D1AFD
|
||||
245EBFDE89121D366C8DF5322F7090D0360F680D029C3C05987B066CEEBC3B21
|
||||
5558632CB4E826AC1E70862B7FADD4F0AA9DE4FBE517D3D0C8BABA83FDEBB01B
|
||||
B37CA493E4A21A758234157A94BFFD9AB867840FFC638EDAF4B8B36476593C8E
|
||||
A7E81C53DEC2832621165C53029DE5066813F0AEDF98BC881B45986CDDD7158A
|
||||
24F245A6E71EFB7075790A3AE298953EBEC4AE166F66E8C33FF7ACE0D20575B2
|
||||
5910A6716280EA62F0C7BD75987F620CEFD9855084FB287BC944E0DF7CFCAB1E
|
||||
184106282A5083E42313EB5BBFA6DB134F07CAE3273D9B6288AEECF43A4337F3
|
||||
7CF6D2A6B93FEB3281F4001585728CC11A076C5BE40C2E9D24303ABF65475DBD
|
||||
F2B7089743EF0E70670FE9BED3550794945ED5C1370BD4BF7A576E24F7A7B8B5
|
||||
9590224F96CFA37B11E82BC3C0F204AD60AB2D3E72EDFA23197BF91D9985645E
|
||||
B7F7EE572AA35A5773A612880B5504789EB184550B3575F3C45B9E9D3C945940
|
||||
BC05F5829254CBF087EFE06ECD5C68BA41D79A4EB5B0596825157FAF7B16A723
|
||||
50459059531503BAFADCB2AFBEC4D0DFD2129E2654255AF136AB5758C88AB51D
|
||||
6BA6CE751AEC740EF8A5C738B22038156D12EE80D9CCD34D87E4863784B399F7
|
||||
B97BE7794B6B16F3468EB810B1E562E9D09E05F6D03982C4455ACC4138415358
|
||||
C41EFA7647D8803B582F190A818FDD67B5C65129B99A630F615DD92A73EB5B68
|
||||
2683C9E42CEE118A9C642D7B00B7238791AA5972751248C32959589300C2AF60
|
||||
A777CCA09D66FA49C38BEBC5A233814B006CC15BF71C12305BE9B1E81429884C
|
||||
D3193BB1C07E9CAE0E73F220C4C5EC3E869E9B7F12FC85B998F7FB2513224868
|
||||
082EDD4977F37690D36E791D5685D46F6A5128B57056B2F5D9BDC29AFEA659AA
|
||||
FAD00B44FB5BFC84F0D2DE276A4D53AE32A85D051D4FF7071BAF8473EE2767CB
|
||||
54603F343268BD752FD0F59720B62A3A49D3B89CFE75DC777A51AF18AC918BB7
|
||||
4B30884FF61AF01C417AADEA4AD4F14327FA3C14486BB5D1BC07DB7443B04D9D
|
||||
E20A5ACA8531B476A92DE84D02C1BF2E90EEA55B678E07CED5AAA14EFAD83042
|
||||
4172743746A4963F82625635F69F280DF086DE28B0F4FF205A530506556C9416
|
||||
3FD225BA22B9B6EA745A28C05B2CE086713E3964DA2A5A4D8A860F0694DFC7B7
|
||||
58DEEC11BA5AABBAAE516721F3CDEDAA0EC320E543FF7BDFF5C5F7E1800ED7E0
|
||||
0E686EDEF974ADD0D84AC93936C1590C0C900B16309DC6CD11FF29F7A18256FA
|
||||
658351FF63F8ECEDF1A08ACC907723574A69757910C123480D37798124B644C0
|
||||
A209AA45D6C2AF87FD66948FF924AAD4332864B563CBB49DDC47371F386D2005
|
||||
63C512685F38BD1613D45DE23F3B16F861FDB39BE984E76657DC2F7315BAAA32
|
||||
1F48A9E6E880D6DCCACCF3503324F9F10E672695C487A5F02C11059EB3D65945
|
||||
76660D7CD1892564904EA92E040CC6418C1C8C207983849E374583C32ABBD886
|
||||
0B41A147DD2CDB5E97128A7E8351A5583BADC4A1DA271AF38D2C09C2E78CD172
|
||||
808672645B0B197694125C1B8D010D0675CBBC1A399A4D6DC768E773CF0CE2F4
|
||||
0C922B8384813E5602DA73518CDD721114938E290AC48E50ED3B4E109C607A42
|
||||
18FF245B7AA243593F01A41E8FE317ED997C16BE35A3A802EF57929C82B9637D
|
||||
2B694013286C22A4052940C4816AB2C203F5726E6286E235FDF28DA8A058B024
|
||||
B78945E8A38FD5B82DB71C2BA3D61CE8512F554F901E828A753873D7D35ED923
|
||||
79A4738CAE8113297E53E4665906A1EF4D1653DBAFC95F5B619C783E42FFD95A
|
||||
B38B4A5C4235B4B769759B8BA80B05999091D1B48D401762E2CE3DAA631DB555
|
||||
1FEF72484E29C7DFB767811A49B23231466FC826BCBAE39ADACDAE8FF665F33C
|
||||
E8707685B4C46CEAE91CFB897D6C4982A0F73BA0CF85D4966484BE20E43F1F2C
|
||||
706C5E466247F343833A0FF9877C812C6C06B2B7076E282BD20EA0819345867E
|
||||
AB2C71D97347BA071834F9539D2F7561A7281A6B6F91A6A5AB576041553716E1
|
||||
0DF8F5F400F9DD06F13894181B58200AB282161FF91C82DA04761435B141BE4E
|
||||
22E9DA50EA6B37E534397B0A66ED598196BAF64EB579C7BB08AC795DE403C01A
|
||||
9BBEF136818330E2700389E8CF5D8734CA7642DBED662EB43F99F0E91C983CA2
|
||||
1BDEE4F01680A833C87A1B1BBC9FCF2111D9835F1993F2FB5EDFA2D30131FC8E
|
||||
0780CC8FC83E52B9FCC8454C7E95C3E45AD18C196E302341ED6A49D84D595852
|
||||
CE841193E319A2D566BA1781242E2A6B3A09EB62EEB76956FD61BC7EB31F76F3
|
||||
CBDC3AE9837AB34F5FA6
|
||||
91708A66B4DBCFCC2A6B3C3FEDA18C851EEDB91B757FB44909E3DF1BB06DDFE7
|
||||
30B193FB0D3D09F8B11E7B417B00555E2413A2572E67AA9B48C859A4FA50B834
|
||||
CFB8512BD5E9D13DD1132F6704EC4ECE2A132C3AE447A5F332E60928ADA72B63
|
||||
9846383F731E0F6D8B5458ED73FCB6EA6615E2379E6AB895CADB47F4595A502D
|
||||
45D99ED65A2909B95468CEF6DA0393F644D5CBFB34C7642F7B42A38ED34DAED1
|
||||
97C0DC8F2556AFD0956F35C26FD1413849912627AD230A6DF64A657B8EACA61C
|
||||
E01E0FC10E680D1213CBB756CD85D67343E6C89CA30981C6B31AC0BB3CF76D73
|
||||
3EA83F472E0FBAC18DA0968BB15942BB25984BCBF99592996F4B896AB6077E37
|
||||
432C9DACD78769827CF159E0BFD7E792E9A623D05DD7F2983F157A4E0D3C61C8
|
||||
44FD2EE38965EDFA7909CE809C8FAC231541015D692C17D65E4A5AADD889C7DB
|
||||
27083128B78310B37180A83E85ED7E12A6E278C4C61BE3F2CE7C6BEE827E8837
|
||||
15212BC5779B4F1D7A09A89573452F59194EAB6374A8D887167903A4535D3E86
|
||||
4C0A6D3E3168E65F67AB2CB8D4DB1A7456461E9D6A52B752D5A4C6C1C14DC410
|
||||
6D3919AF616F2EB4036B48D7863F77154BC028A70037514E283E1A448404DCCA
|
||||
C03F4DB671066CDA6414204F54AA899ECE4676D8992943A108E1A1040173FDFA
|
||||
C22739B5E42C6B6230E81DB55BACEC7D7A77BEE1450EB4E76BD6ABA0517B924B
|
||||
9B4F65BAB4EA17AFBFF9FC99F504DDA47A3EF836804D2A8DB02250ECC1F185F1
|
||||
273983C49340AEA983D1862E9920D8A19046DF30B03F204A65CA971A702FA790
|
||||
7A1207A59D57886D7F7BAD9B5763DDF0CBD9C26291F1310E4C7ADC388B0EEB8C
|
||||
494F56E4ABD1E273AB1550D234989F106D85DEA26E8572B712FC1E47A7F941E1
|
||||
81FD663E667EF64A3B6E780F22AC9AB166288ACD6B6DE0DDACA8EE96895DE623
|
||||
F887745E77B6D95410BE1A33A3DECDB646C342DD745876B909DF57C5FF69108F
|
||||
BB3E04358715700B9D5289B7BF86BA03C96E72C45588BF19FD1BAEC5758C6AFD
|
||||
CE305899B23F877BE70F91FED87DF410C20F932F72AC437C9AC2C14D48BF79C4
|
||||
A9CB3E4F95F88B89136AC126EB2245F2760463E10A1439708DBC3C6028EF54B5
|
||||
F601782C652600DB0EADF179A5CD975CCEBA238CA2F85E1BCE229EC2021F1454
|
||||
90A6FBC9647E08C2000FCADF613B837969178D44AB0659D9D8B142E216AD612E
|
||||
7EFEA426317CB26A4C67B5588607B17B65D6145621B7E9AC5E2FB6D82BD706EF
|
||||
F4BAB2278C3CCCADB21EE033A4C9735452265AADB3682CD57758CD47EB39993C
|
||||
A722680E13EE1B7E29AF97C168F6428786E1B4C284E3004B3185D5EC1207CE91
|
||||
6CDB4EC6879519A377237B059DE5B340B2506879C6517D6F36C98392D334FCBA
|
||||
153F3E580180E6EE253DEC9B46CEF5C4E9287A72C53C6AABE7C5F4F006792854
|
||||
56CFB32B4FA636D35161B3EB6C40C9B9FCA605851B553877BF0CD9004B0B3C6C
|
||||
9F76C8688E3E3D8C142A23C9035E77D0F90C198AC39C7C9371F72C1D473A50BF
|
||||
0DB83C888D6764393CC4C7F28226C29E028F6FD830CE850083BC3A7707E3925D
|
||||
FDE48920E5C2C228B9A02424AA9DA14E0DB4ED0D43EDCA7EF9A96BCB6354F04A
|
||||
ED6D35CF7A4F669EC60C99118913C6C3B61F50C35FE2C5808E2C0804EB925FA3
|
||||
37E2D42990C84B26257AAFE9D9BDE77FF125CE106FA066B9DA902B4D2F0A3844
|
||||
C5C96C3FBD0191A50BF798B3DF1C2CE05019E0B91CED479216D4518C9237C394
|
||||
974E35929D8FA50DAE7D8DC9ACD0B93984B7D4E909DD97C2BEF9DFA3575936D4
|
||||
86E923E95C76F0051CED607A7CA487047474C39DD11E3FA0F23D33FF5CB65C9F
|
||||
F5225506B4E5435016D4F92E8E853C7985C46201883BCC5F327F70542FBA00CD
|
||||
7B43C5FD66E1670F2EE9B9316E45D6C3D0DD9AF463F0D460585E2C2AAE4BABE5
|
||||
C7805F81C8560C092103A63C190F97EBCFB1E2CAE202E09623DAEA9E502845E9
|
||||
EAEDA60AE08657270F7E31B565D813F81DD9D5EE5FF28D3BDD8E8C988954C591
|
||||
EF5F86FB2C930CCE57CA447D22DB0F91E5715774DD18FEE6282EA9B9524046CD
|
||||
9BD32C82096AC7E11E6F975CE8BDAC28ABD40A631D5ADE7B08B5C3ABFE253BAF
|
||||
C0DCC5CCC95B34149E13559A9ECF503B2EFB1CD3FC971AFC38349E8D4CDB7F92
|
||||
E0301590C0E28E1CD5998D401332530B749CF239A94E61126A3E58DA153B4636
|
||||
4761D9A49FFCDB5B76E4A7C9868BA67EED58B0354BDE5F93A97038F6C27E1088
|
||||
DA3E30A9E958A3A4DB441D3FB14D1BF60201F32A2162E3B4672CE6036322B817
|
||||
2094A3753326B93E750D5D089ECDBA70EF7BE18A7D923964F0B39C13B474210A
|
||||
0C801824E702ADAFE8D8460FC48FCA6A9EC26C714796A89AE9E061240BD39106
|
||||
2B9FDE81DBF2E0D09D5899035E1FB733849598A3767E2DA726890283C0FD8D6D
|
||||
8895E3613CE13FA4B424D95FA099F9610FBD9963D45D46BB4265E1108EFFD9BC
|
||||
DCE1E2BCB5C16C0BD12834F70EBD59BAA63115B4F12A24496BF5A4D23FBE89EF
|
||||
980E94FF241A49EE5625A14D446DDEF0B69A9A7198E360235D953404DFD1EC07
|
||||
6323392D0E4FE6954B70F32958E8F0C528373102EF2B23FDB7D79AB5A00AD438
|
||||
3C7847FF35878384B0702B8643F60A516DDFB683E38FED29BC034EE49D3359EB
|
||||
3983154A0D2995528558463D2EBA4F0DC855284968F305D7E618142C4F2680A2
|
||||
A7D214AABFE635D1D75536C165A3989C9C03214ED83A6F423983ADFD45959707
|
||||
383A5BFA058E20A325F09D386EB549E08680333CF43582FD09BD5A30914DA8C2
|
||||
4FE430810CEAE208A4A1E4599B55E177460457DA4510EBCA4317005FE1641AD8
|
||||
87E76AAED9299A492AC1757F6FB1ADC2328842E3D68C0FF0D3FCB7E51B4E08F4
|
||||
AFE461E5A2EFD6AA7D62CF1609BF2CFD37A9807C88E3157722C7991BBA55685B
|
||||
4C088D18C242E77A92407ED80D4DE389752ED29E50A5D5DDE93C9A4DFDDE5C38
|
||||
B30584F6255500231A9EB03BBD33645FED004541D095430209A3D43245063387
|
||||
8141D72DCBB19ACFD298A6D980A34EADA7EACC4CA0650E2260E3F0625510BA50
|
||||
09A5BFD2B382CDDC68357EF7B3F2232B0ECDFFB5EA68B8DA44EC63FBC709FCC9
|
||||
254B3CBCD772C1BFB0212E908CF1D1FA4AB9B63FCE36008FD6159B5921303457
|
||||
D9F1AA25FDE085DF6B5F3F4D27DA8B250A7BF4E9BD067209852A6FD04ED61AB7
|
||||
2761D72FB3BFBABF5B2C9B4C51472773AE5FA5BA283249196FA4703AE8D2BC93
|
||||
E9C87378C51AB36D4154A6CBF6D0F04BB60F7A803A5E9DD02ADA9690E7241411
|
||||
230E9287525B4F5B9BFB3927EFA4A4F17EB849F731E7B9CC557E721485B27D77
|
||||
7EDED14680FB592C5C214FCC83AC89C3CBADA0AFABA5BE9D7CBC73A1D7590C5B
|
||||
EB372681E9681738EEB27D812E8F63666002BE8237DF9D1A030D58F479DD3C89
|
||||
A325970C20C20349D3E243FB0255A66EE53318AEC3963E83E1521B17927BFC8C
|
||||
104F5052B05B4BF759481B65F2AAA08F53927F28E0E06B160E25224C3FA2AF8C
|
||||
DA0DA5FBC15502A9E38BEDB9F24C1D4B115EAC9ED9DA490519D206E7E8A5C597
|
||||
1A9DE22EA133EA9C1DD05EE44932AC4C47EF92B743B99CA49A4D24DD7A9597A2
|
||||
5E678DB4EEAE812C00D3DFC1660D442BC3956B941D24F3C17D654D21F9CA135E
|
||||
706180E03058CD04867DF42B27ADC04C84DC4E147E819A82B0144A8539D146CC
|
||||
229E29FE9FFD1F5144366B7A0357325077E71093C0902C076C16323FE18E34D3
|
||||
5E38F0F6B8153F6E3729B582616F43EF4BFED11E96604E73A820AAD9B976D673
|
||||
E4516467BB4C938A04BDEDF19D8366FB89B021310169355C0BE5D0781293E6E2
|
||||
E46F572EA4F66B1253BE3C2FE7FB30092ED2C5FCED39A97C5039AAD8CB41000D
|
||||
F33FB894B57EFDB51E4AD8935661D3DF41601552F245712A44D384A7C1BB8209
|
||||
A24908872CB129B5C56637B548CAF0036EF165FC7CE103204A71FA7354B94589
|
||||
2547AB84089EA9D4FF4F125DB93FA845E2187B4FBE931DE05CC3ACDE09C5230A
|
||||
C1C73DCCEBF0AFEB3EF052F267F0F5DF1D66C89C8E93F38212E974B0362A9DDC
|
||||
47B97961D7285737F2176EBCD70CECA79606859F8B88CEBFB4B4D9250B0F3496
|
||||
7C9850B6CC2C9C227E0AE5B9CF61BDFB4EFCC07C083CB2631DCAD9B0CDD3469B
|
||||
F5408972F0052A7D7D7B4C81421F33BCE5D1ACC9F033FEB51CCE6060F611FE4A
|
||||
0BC396D58ACF04184EC1DCEEB6711C7C6F171B79DE2680C34959275D0E9F8A1A
|
||||
A1DBF43F1A50B82F631205BEE0DBDC69B7AD74BFB08E3190610CB966D6A689CE
|
||||
20A1D6D3A8F7A0C8318F309DF47813D6DB98C2B725B0E3E9BA0944C8A961EB9A
|
||||
BAB3D7B987A5F0FB5DCA7F3CE510EBB9FE7F045C44ED5EA72DE6C5B05E419415
|
||||
72C5084CF59E83D5BCB203201A43547FBBBADA248255ED86E81333E9814068E5
|
||||
51316EB120BD7A6B7DB7C907D2A1FDB6EDA22EC0FC863B842BF73134101AE59C
|
||||
9528AE301BA7E5F03EA3B58E7A3FC7A1207D117EA58EAB0D6855DC88ABE23B95
|
||||
18F319C307A5EE278A89909BEADED3056E577A1F34D7410B5D827FF1281867DD
|
||||
5F9D04DD8F24F420CB1F6A52AEC8A52701A5B99A2696BC2827D8F1B0004D380F
|
||||
93CB984DC5429236B8C4BA24E20D2DF19F872A84883CE944B798B6B148993691
|
||||
F4BF17CC2952F9F85333A8492F63D460378014AF2A02A50972120B3DEC05E54E
|
||||
CB2192E31A5FCB88AD6EBC88004B29F0EA91B346CB2B65FDDE1BCB5227C65EAE
|
||||
14F191859B55CA7BF0815A7F5CD583085E902E48E09F7C4AB48E8DF7C550DB9E
|
||||
0D37671146FCEF5E572F4520064244671B8E0EE9CD80F7A06B0DF881952E2170
|
||||
8F9994BE756B1AB0A2C71C9E1F181F8F635F4282878D8BAF16B519D685E99985
|
||||
236FD4EB83127DF45ABAB8137580919A633EE3813835FA1FA7930EA3627CCF57
|
||||
8C01329CF170ACC8A08E65478C3FA7C39AB68CC6172A83F50406EF3F6A532969
|
||||
08CB29259774A33D26DCAFAC7E35B1F16F3A8E092EF1408EAFBFE34714EB6B53
|
||||
37C1CDBEB6FFB780E148AB32D8CC4B8393DAFC29061AF59D059A03128F76232C
|
||||
2281DEBFFDF89440008BAA676E400D2909BE95350BA495CB5BC2B0C1E808A67F
|
||||
8C12A7B0B29778B8DAF30432622D84138909E5866871C566241AC9893696C20B
|
||||
53B11E41A7E8D0B08D2C1C7D18D2F3F9F0DAB2DFB99EA17E53D2FB83C48EF123
|
||||
80C085C6395E6333E51E0928F1E8040F520A531C313E5571E37FC7A2ABA8E589
|
||||
BD100B2C01D13EC317E11EA4B3033D3E63ED7FCECCF610DC78319E052431F2EE
|
||||
F37473B1B362897E5EF60FECFFF3DD33C36049D888DA082105B46123D78C296F
|
||||
C1CDBEEE60F6AA39B22C5163C54F6DD9E324F88BC13383176FE2FC88AF56CEF3
|
||||
467AC8860B6E5D6A886F0A3F6F043D0ADDDD45354F69070A45823968D31467F1
|
||||
28D2C18DB5901470323CC6880CAF849F6FDC1CAB1301B24624190B06F98CB493
|
||||
B883BC8D3ED2BF23896D4ED94B5ED6EA0BAB6918D458FE8D246257EB09300550
|
||||
4A4A865BC9D686120BECFC329F468ADC94B7917E05EAAECCCF433A57BE01EACD
|
||||
9B96E4369AD38E0E877C4E9F6944A6DC4D7A053F304EB4DAB9FF375DFF3A4F42
|
||||
A9E68C87E7DC462F557FFC6B5A5A3977A4903F3DF37904F99B1F1E0449A69BDC
|
||||
6D9BA0A87C4296A398C3FED6211868176C0E975288BB3E5BA0C8839A2B5CF275
|
||||
DA3E9C8AB1FAD2E20EB2456138F324DB3C6872923EE1A785E58B89DFACCF676C
|
||||
5F4CBC2ABD84E52854D01D2383D063A3DDEE5D18FC72D49F3C1C5B0699F2A93A
|
||||
2FE26A8A4CD859C88ADF1DDAA01704889764BC7A895E2707548FC587970D7BBC
|
||||
CA26876B9476AF789D099274522195B62B18FAAABF7966BC693FD014C9686AC5
|
||||
A2EE90658A218DAF93B6BE47FD647C1291A999270C267A28FF077FF78A8E4249
|
||||
2F0A7E3FA0A1D3DF9D1D1F66FF954ED296277AD7DE85FECCC788AA88B9B9A1C9
|
||||
E17BF86E7D7FE3F2F7C20771DA823896F141733BFAC034920D3B6F3FFD44CD29
|
||||
6FF1A159FD3A6A543795BB3AB0EF517E58ACF8300938CA4010DC5AB5197E4B94
|
||||
48
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
0000000000000000000000000000000000000000000000000000000000000000
|
||||
@@ -7567,8 +7573,7 @@ E69030FD907778821C66F93220A31991386640AC2315A5B7DB80B4AE91A6A4D7
|
||||
cleartomark
|
||||
{restore}if
|
||||
%%EndFont
|
||||
TeXDict begin 40258431 52099146 1000 600 600
|
||||
(/usr/local/src/bash/bash-20250418/doc/bashref.dvi)
|
||||
TeXDict begin 40258431 52099146 1000 600 600 (bashref.dvi)
|
||||
@start /Fa 130[55 1[55 123[{ T1Encoding ReEncodeFont }2
|
||||
116.231 /SFRM1440 rf /Fb 133[34 41 41 55 41 43 30 30
|
||||
30 41 43 38 43 64 21 41 23 21 43 38 23 34 43 34 43 38
|
||||
@@ -7597,8 +7602,8 @@ TeXDict begin 40258431 52099146 1000 600 600
|
||||
96 116 74 96 1[46 96 96 77 81 94 89 87 93 1[58 5[61 61
|
||||
61 61 61 61 61 61 61 61 1[34 41 34 31[68 72 11[{}63 109.091
|
||||
/CMBX12 rf /Fl 134[44 42 1[42 1[30 37 38 1[46 46 51 74
|
||||
23 2[28 1[42 28 42 46 42 1[46 45[46 5[33 3[37 37 27[51
|
||||
12[{}23 90.9091 /CMTI10 rf /Fm 135[56 2[56 1[42 55 1[51
|
||||
23 2[28 1[42 28 42 46 42 42 46 45[46 5[33 3[37 37 27[51
|
||||
12[{}24 90.9091 /CMTI10 rf /Fm 135[56 2[56 1[42 55 1[51
|
||||
58 56 1[47 2[27 1[58 49 51 57 54 53 56 97[{}16 90.9091
|
||||
/CMCSC10 rf /Fn 197[25 58[{}1 90.9091 /CMMI10 rf /Fo
|
||||
197[33 58[{}1 119.552 /CMMI12 rf /Fp 134[85 85 1[85 90
|
||||
@@ -7646,7 +7651,7 @@ ifelse
|
||||
TeXDict begin 1 0 bop 150 1318 a Fv(Bash)64 b(Reference)j(Man)-5
|
||||
b(ual)p 150 1385 3600 34 v 2361 1481 a Fu(Reference)31
|
||||
b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(5.3,)g(for)f
|
||||
Ft(Bash)g Fu(V)-8 b(ersion)31 b(5.3.)3333 1697 y(April)f(2025)150
|
||||
Ft(Bash)g Fu(V)-8 b(ersion)31 b(5.3.)3364 1697 y(Ma)m(y)g(2025)150
|
||||
4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46
|
||||
b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11
|
||||
b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11
|
||||
@@ -7654,15 +7659,16 @@ b(oundation)p 150 5141 3600 17 v eop end
|
||||
%%Page: 2 2
|
||||
TeXDict begin 2 1 bop 150 4279 a Fu(This)35 b(text)h(is)g(a)g(brief)f
|
||||
(description)h(of)f(the)h(features)g(that)g(are)g(presen)m(t)g(in)f
|
||||
(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(5.3,)c(7)e(April)h
|
||||
(2025\).)150 4523 y(This)36 b(is)g(Edition)h(5.3,)j(last)d(up)s(dated)e
|
||||
(7)i(April)g(2025,)j(of)c Fr(The)h(GNU)g(Bash)g(Reference)g(Man)m(ual)p
|
||||
Fu(,)i(for)150 4633 y Ft(Bash)p Fu(,)29 b(V)-8 b(ersion)31
|
||||
b(5.3.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 4767
|
||||
y Fq(\015)f Fu(1988{2025)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8
|
||||
b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h
|
||||
(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s
|
||||
(cumen)m(t)f(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8
|
||||
(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(5.3,)c(18)f(Ma)m(y)g
|
||||
(2025\).)150 4523 y(This)k(is)h(Edition)f(5.3,)k(last)d(up)s(dated)e
|
||||
(18)j(Ma)m(y)g(2025,)i(of)c Fr(The)h(GNU)g(Bash)g(Reference)g(Man)m
|
||||
(ual)p Fu(,)i(for)150 4633 y Ft(Bash)p Fu(,)29 b(V)-8
|
||||
b(ersion)31 b(5.3.)150 4767 y(Cop)m(yrigh)m(t)602 4764
|
||||
y(c)577 4767 y Fq(\015)f Fu(1988{2025)35 b(F)-8 b(ree)31
|
||||
b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 4902
|
||||
y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8
|
||||
b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f
|
||||
(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8
|
||||
b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26
|
||||
b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43
|
||||
b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8
|
||||
@@ -17077,271 +17083,285 @@ b(The)37 b Ft(type)g Fu(and)g Ft(command)f Fu(builtins)i(will)g(not)g
|
||||
(rep)s(ort)f(a)i(non-executable)g(\014le)f(as)g(ha)m(ving)h(b)s(een)330
|
||||
408 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g(execute)
|
||||
g(suc)m(h)f(a)g(\014le)g(if)g(it)g(is)g(the)g(only)g(so-named)g(\014le)
|
||||
330 518 y(found)i(in)h Ft($PATH)p Fu(.)154 655 y(71.)61
|
||||
330 518 y(found)i(in)h Ft($PATH)p Fu(.)154 648 y(71.)61
|
||||
b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m(k)g(size)g(of)
|
||||
g(512)g(b)m(ytes)g(for)f(the)h Ft(-c)f Fu(and)g Ft(-f)f
|
||||
Fu(options.)154 791 y(72.)61 b(The)35 b Ft(unset)e Fu(builtin)i(with)g
|
||||
Fu(options.)154 778 y(72.)61 b(The)35 b Ft(unset)e Fu(builtin)i(with)g
|
||||
(the)g Ft(-v)f Fu(option)i(sp)s(eci\014ed)e(returns)g(a)i(fatal)g
|
||||
(error)f(if)g(it)g(attempts)h(to)330 901 y(unset)29 b(a)g
|
||||
(error)f(if)g(it)g(attempts)h(to)330 888 y(unset)29 b(a)g
|
||||
Ft(readonly)e Fu(or)i Ft(non-unsettable)c Fu(v)-5 b(ariable,)30
|
||||
b(whic)m(h)f(causes)h(a)f(non-in)m(teractiv)m(e)j(shell)d(to)330
|
||||
1010 y(exit.)154 1147 y(73.)61 b(When)39 b(ask)m(ed)g(to)g(unset)g(a)g
|
||||
997 y(exit.)154 1127 y(73.)61 b(When)39 b(ask)m(ed)g(to)g(unset)g(a)g
|
||||
(v)-5 b(ariable)39 b(that)h(app)s(ears)e(in)g(an)h(assignmen)m(t)g
|
||||
(statemen)m(t)i(preceding)330 1256 y(the)30 b(command,)f(the)h
|
||||
(statemen)m(t)i(preceding)330 1237 y(the)30 b(command,)f(the)h
|
||||
Ft(unset)e Fu(builtin)h(attempts)i(to)f(unset)f(a)h(v)-5
|
||||
b(ariable)31 b(of)e(the)h(same)g(name)g(in)f(the)330
|
||||
1366 y(curren)m(t)24 b(or)g(previous)g(scop)s(e)g(as)g(w)m(ell.)40
|
||||
1347 y(curren)m(t)24 b(or)g(previous)g(scop)s(e)g(as)g(w)m(ell.)40
|
||||
b(This)23 b(implemen)m(ts)i(the)f(required)f Ft(")p Fu(if)h(an)g
|
||||
(assigned)g(v)-5 b(ariable)330 1476 y(is)34 b(further)e(mo)s(di\014ed)g
|
||||
(assigned)g(v)-5 b(ariable)330 1456 y(is)34 b(further)e(mo)s(di\014ed)g
|
||||
(b)m(y)i(the)g(utilit)m(y)-8 b(,)36 b(the)e(mo)s(di\014cations)g(made)g
|
||||
(b)m(y)f(the)h(utilit)m(y)h(shall)f(p)s(ersist)p Ft(")330
|
||||
1585 y Fu(b)s(eha)m(vior.)154 1722 y(74.)61 b(The)39
|
||||
1566 y Fu(b)s(eha)m(vior.)154 1696 y(74.)61 b(The)39
|
||||
b(arriv)-5 b(al)41 b(of)f Ft(SIGCHLD)e Fu(when)h(a)h(trap)g(is)g(set)h
|
||||
(on)f Ft(SIGCHLD)e Fu(do)s(es)h(not)h(in)m(terrupt)g(the)g
|
||||
Ft(wait)330 1831 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f
|
||||
Ft(wait)330 1805 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f
|
||||
(immediately)-8 b(.)62 b(The)37 b(trap)f(command)h(is)g(run)e(once)j
|
||||
(for)f(eac)m(h)330 1941 y(c)m(hild)31 b(that)g(exits.)154
|
||||
2078 y(75.)61 b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i(bac)m(kground)e
|
||||
(for)f(eac)m(h)330 1915 y(c)m(hild)31 b(that)g(exits.)154
|
||||
2045 y(75.)61 b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i(bac)m(kground)e
|
||||
(pro)s(cess's)h(status)g(from)f(the)h(list)g(of)g(suc)m(h)f(statuses)h
|
||||
(after)330 2187 y(the)k Ft(wait)e Fu(builtin)h(returns)f(it.)275
|
||||
2353 y(There)34 b(is)g(other)h Fm(posix)f Fu(b)s(eha)m(vior)h(that)g
|
||||
(Bash)g(do)s(es)f(not)h(implemen)m(t)g(b)m(y)g(default)f(ev)m(en)i
|
||||
(when)d(in)150 2462 y Fm(posix)d Fu(mo)s(de.)40 b(Sp)s(eci\014cally:)
|
||||
199 2601 y(1.)61 b(The)30 b Ft(fc)f Fu(builtin)h(c)m(hec)m(ks)i
|
||||
(after)330 2155 y(the)k Ft(wait)e Fu(builtin)h(returns)f(it.)275
|
||||
2305 y(There)e(is)i(additional)g Fm(posix)f Fu(b)s(eha)m(vior)g(that)h
|
||||
(Bash)g(do)s(es)f(not)g(implemen)m(t)h(b)m(y)f(default)h(ev)m(en)g
|
||||
(when)150 2415 y(in)h Fm(posix)g Fu(mo)s(de.)40 b(Sp)s(eci\014cally:)
|
||||
199 2545 y(1.)61 b Fm(posix)30 b Fu(requires)g(that)i(w)m(ord)e
|
||||
(splitting)i(b)s(e)e(b)m(yte-orien)m(ted.)44 b(That)30
|
||||
b(is,)i(eac)m(h)g Fl(byte)37 b Fu(in)31 b(the)g(v)-5
|
||||
b(alue)31 b(of)330 2654 y Ft(IFS)23 b Fu(p)s(oten)m(tially)j(splits)f
|
||||
(a)g(w)m(ord,)g(ev)m(en)g(if)f(that)h(b)m(yte)g(is)g(part)f(of)g(a)h(m)
|
||||
m(ultib)m(yte)h(c)m(haracter)f(in)f Ft(IFS)g Fu(or)330
|
||||
2764 y(part)29 b(of)f(m)m(ultib)m(yte)i(c)m(haracter)g(in)f(the)g(w)m
|
||||
(ord.)39 b(Bash)29 b(allo)m(ws)h(m)m(ultib)m(yte)g(c)m(haracters)g(in)f
|
||||
(the)f(v)-5 b(alue)330 2874 y(of)35 b Ft(IFS)p Fu(,)f(treating)i(a)f(v)
|
||||
-5 b(alid)34 b(m)m(ultib)m(yte)i(c)m(haracter)g(as)f(a)f(single)i
|
||||
(delimiter,)g(and)e(will)g(not)h(split)g(a)330 2983 y(v)-5
|
||||
b(alid)29 b(m)m(ultib)m(yte)i(c)m(haracter)f(ev)m(en)g(if)f(one)g(of)h
|
||||
(the)f(b)m(ytes)g(comp)s(osing)h(that)f(c)m(haracter)i(app)s(ears)d(in)
|
||||
330 3093 y Ft(IFS)p Fu(.)40 b(This)29 b(is)i Fm(posix)e
|
||||
Fu(in)m(terpretation)j(1560,)h(further)c(mo)s(di\014ed)g(b)m(y)h(issue)
|
||||
g(1924.)199 3223 y(2.)61 b(The)30 b Ft(fc)f Fu(builtin)h(c)m(hec)m(ks)i
|
||||
Ft($EDITOR)c Fu(as)j(a)f(program)g(to)h(edit)g(history)f(en)m(tries)h
|
||||
(if)f Ft(FCEDIT)f Fu(is)h(unset,)330 2710 y(rather)g(than)g(defaulting)
|
||||
(if)f Ft(FCEDIT)f Fu(is)h(unset,)330 3333 y(rather)g(than)g(defaulting)
|
||||
h(directly)g(to)g Ft(ed)p Fu(.)40 b Ft(fc)30 b Fu(uses)g
|
||||
Ft(ed)g Fu(if)g Ft(EDITOR)f Fu(is)h(unset.)199 2847 y(2.)61
|
||||
Ft(ed)g Fu(if)g Ft(EDITOR)f Fu(is)h(unset.)199 3463 y(3.)61
|
||||
b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i(Bash)e(requires)g(the)g
|
||||
Ft(xpg_echo)e Fu(option)j(to)g(b)s(e)e(enabled)h(for)g(the)g
|
||||
Ft(echo)f Fu(builtin)330 2957 y(to)j(b)s(e)f(fully)g(conforman)m(t.)275
|
||||
3122 y(Bash)c(can)g(b)s(e)f(con\014gured)h(to)g(b)s(e)g
|
||||
Ft(echo)f Fu(builtin)330 3572 y(to)j(b)s(e)f(fully)g(conforman)m(t.)275
|
||||
3723 y(Bash)c(can)g(b)s(e)f(con\014gured)h(to)g(b)s(e)g
|
||||
Fm(posix)p Fu(-conforman)m(t)g(b)m(y)g(default,)h(b)m(y)f(sp)s
|
||||
(ecifying)g(the)g Ft(--enable-)150 3232 y(strict-posix-default)c
|
||||
(ecifying)g(the)g Ft(--enable-)150 3832 y(strict-posix-default)c
|
||||
Fu(to)27 b Ft(configure)e Fu(when)h(building)h(\(see)h(Section)g(10.8)g
|
||||
([Optional)g(F)-8 b(eatures],)150 3341 y(page)31 b(178\).)150
|
||||
3588 y Fs(6.12)68 b(Shell)46 b(Compatibilit)l(y)h(Mo)t(de)150
|
||||
3748 y Fu(Bash-4.0)33 b(in)m(tro)s(duced)f(the)f(concept)i(of)f(a)g
|
||||
([Optional)g(F)-8 b(eatures],)150 3942 y(page)31 b(178\).)150
|
||||
4174 y Fs(6.12)68 b(Shell)46 b(Compatibilit)l(y)h(Mo)t(de)150
|
||||
4333 y Fu(Bash-4.0)33 b(in)m(tro)s(duced)f(the)f(concept)i(of)f(a)g
|
||||
Fr(shell)g(compatibilit)m(y)i(lev)m(el)p Fu(,)g(sp)s(eci\014ed)d(as)h
|
||||
(a)g(set)h(of)f(options)150 3857 y(to)f(the)f(shopt)g(builtin)g(\()p
|
||||
(a)g(set)h(of)f(options)150 4443 y(to)f(the)f(shopt)g(builtin)g(\()p
|
||||
Ft(compat31)p Fu(,)e Ft(compat32)p Fu(,)h Ft(compat40)p
|
||||
Fu(,)f Ft(compat41)p Fu(,)g(and)i(so)g(on\).)41 b(There)30
|
||||
b(is)g(only)150 3967 y(one)f(curren)m(t)f(compatibilit)m(y)j(lev)m(el)f
|
||||
b(is)g(only)150 4552 y(one)f(curren)m(t)f(compatibilit)m(y)j(lev)m(el)f
|
||||
({)f(eac)m(h)h(option)f(is)g(m)m(utually)g(exclusiv)m(e.)41
|
||||
b(The)28 b(compatibilit)m(y)j(lev)m(el)150 4076 y(is)39
|
||||
b(The)28 b(compatibilit)m(y)j(lev)m(el)150 4662 y(is)39
|
||||
b(in)m(tended)g(to)h(allo)m(w)g(users)e(to)i(select)h(b)s(eha)m(vior)e
|
||||
(from)f(previous)h(v)m(ersions)g(that)h(is)f(incompatible)150
|
||||
4186 y(with)d(new)m(er)g(v)m(ersions)g(while)g(they)g(migrate)h
|
||||
4772 y(with)d(new)m(er)g(v)m(ersions)g(while)g(they)g(migrate)h
|
||||
(scripts)f(to)h(use)f(curren)m(t)f(features)i(and)e(b)s(eha)m(vior.)58
|
||||
b(It's)150 4296 y(in)m(tended)30 b(to)h(b)s(e)f(a)h(temp)s(orary)f
|
||||
(solution.)275 4434 y(This)k(section)j(do)s(es)e(not)h(men)m(tion)g(b)s
|
||||
b(It's)150 4881 y(in)m(tended)30 b(to)h(b)s(e)f(a)h(temp)s(orary)f
|
||||
(solution.)275 5011 y(This)k(section)j(do)s(es)e(not)h(men)m(tion)g(b)s
|
||||
(eha)m(vior)g(that)g(is)f(standard)g(for)g(a)h(particular)g(v)m(ersion)
|
||||
g(\(e.g.,)150 4544 y(setting)d Ft(compat32)c Fu(means)i(that)h(quoting)
|
||||
g(\(e.g.,)150 5121 y(setting)d Ft(compat32)c Fu(means)i(that)h(quoting)
|
||||
g(the)g(righ)m(t)g(hand)e(side)h(of)h(the)f(regexp)h(matc)m(hing)h(op)s
|
||||
(erator)150 4653 y(quotes)42 b(sp)s(ecial)f(regexp)h(c)m(haracters)g
|
||||
(erator)150 5230 y(quotes)42 b(sp)s(ecial)f(regexp)h(c)m(haracters)g
|
||||
(in)f(the)g(w)m(ord,)j(whic)m(h)c(is)i(default)f(b)s(eha)m(vior)g(in)g
|
||||
(bash-3.2)h(and)150 4763 y(subsequen)m(t)30 b(v)m(ersions\).)275
|
||||
4902 y(If)f(a)h(user)f(enables,)h(sa)m(y)-8 b(,)31 b
|
||||
Ft(compat32)p Fu(,)d(it)i(ma)m(y)g(a\013ect)h(the)f(b)s(eha)m(vior)g
|
||||
(of)g(other)g(compatibilit)m(y)h(lev)m(els)150 5011 y(up)23
|
||||
b(to)h(and)f(including)h(the)g(curren)m(t)f(compatibilit)m(y)j(lev)m
|
||||
(el.)41 b(The)23 b(idea)h(is)g(that)g(eac)m(h)h(compatibilit)m(y)h(lev)
|
||||
m(el)150 5121 y(con)m(trols)35 b(b)s(eha)m(vior)f(that)g(c)m(hanged)g
|
||||
(in)f(that)h(v)m(ersion)g(of)g(Bash,)h(but)e(that)h(b)s(eha)m(vior)g
|
||||
(ma)m(y)g(ha)m(v)m(e)h(b)s(een)150 5230 y(presen)m(t)f(in)g(earlier)g
|
||||
(v)m(ersions.)52 b(F)-8 b(or)35 b(instance,)g(the)f(c)m(hange)h(to)g
|
||||
(use)f(lo)s(cale-based)h(comparisons)f(with)150 5340
|
||||
y(the)e Ft([[)f Fu(command)g(came)h(in)g(bash-4.1,)h(and)d(earlier)j(v)
|
||||
m(ersions)f(used)f(ASCI)s(I-based)f(comparisons,)i(so)p
|
||||
(bash-3.2)h(and)150 5340 y(subsequen)m(t)30 b(v)m(ersions\).)p
|
||||
eop end
|
||||
%%Page: 122 128
|
||||
TeXDict begin 122 127 bop 150 -116 a Fu(Chapter)30 b(6:)41
|
||||
b(Bash)30 b(F)-8 b(eatures)2439 b(122)150 299 y(enabling)27
|
||||
b(Bash)30 b(F)-8 b(eatures)2439 b(122)275 299 y(If)29
|
||||
b(a)h(user)f(enables,)h(sa)m(y)-8 b(,)31 b Ft(compat32)p
|
||||
Fu(,)d(it)i(ma)m(y)g(a\013ect)h(the)f(b)s(eha)m(vior)g(of)g(other)g
|
||||
(compatibilit)m(y)h(lev)m(els)150 408 y(up)23 b(to)h(and)f(including)h
|
||||
(the)g(curren)m(t)f(compatibilit)m(y)j(lev)m(el.)41 b(The)23
|
||||
b(idea)h(is)g(that)g(eac)m(h)h(compatibilit)m(y)h(lev)m(el)150
|
||||
518 y(con)m(trols)35 b(b)s(eha)m(vior)f(that)g(c)m(hanged)g(in)f(that)h
|
||||
(v)m(ersion)g(of)g(Bash,)h(but)e(that)h(b)s(eha)m(vior)g(ma)m(y)g(ha)m
|
||||
(v)m(e)h(b)s(een)150 628 y(presen)m(t)f(in)g(earlier)g(v)m(ersions.)52
|
||||
b(F)-8 b(or)35 b(instance,)g(the)f(c)m(hange)h(to)g(use)f(lo)s
|
||||
(cale-based)h(comparisons)f(with)150 737 y(the)e Ft([[)f
|
||||
Fu(command)g(came)h(in)g(bash-4.1,)h(and)d(earlier)j(v)m(ersions)f
|
||||
(used)f(ASCI)s(I-based)f(comparisons,)i(so)150 847 y(enabling)27
|
||||
b Ft(compat32)e Fu(will)i(enable)g(ASCI)s(I-based)e(comparisons)i(as)g
|
||||
(w)m(ell.)41 b(That)26 b(gran)m(ularit)m(y)i(ma)m(y)g(not)150
|
||||
408 y(b)s(e)i(su\016cien)m(t)i(for)f(all)g(uses,)g(and)g(as)g(a)g
|
||||
956 y(b)s(e)i(su\016cien)m(t)i(for)f(all)g(uses,)g(and)g(as)g(a)g
|
||||
(result)g(users)f(should)g(emplo)m(y)i(compatibilit)m(y)h(lev)m(els)g
|
||||
(carefully)-8 b(.)150 518 y(Read)31 b(the)f(do)s(cumen)m(tation)h(for)g
|
||||
(a)f(particular)h(feature)g(to)g(\014nd)e(out)h(the)h(curren)m(t)f(b)s
|
||||
(eha)m(vior.)275 665 y(Bash-4.3)44 b(in)m(tro)s(duced)e(a)h(new)f
|
||||
(carefully)-8 b(.)150 1066 y(Read)31 b(the)f(do)s(cumen)m(tation)h(for)
|
||||
g(a)f(particular)h(feature)g(to)g(\014nd)e(out)h(the)h(curren)m(t)f(b)s
|
||||
(eha)m(vior.)275 1200 y(Bash-4.3)44 b(in)m(tro)s(duced)e(a)h(new)f
|
||||
(shell)h(v)-5 b(ariable:)65 b Ft(BASH_COMPAT)p Fu(.)75
|
||||
b(The)42 b(v)-5 b(alue)43 b(assigned)g(to)g(this)150
|
||||
775 y(v)-5 b(ariable)32 b(\(a)g(decimal)h(v)m(ersion)e(n)m(um)m(b)s(er)
|
||||
f(lik)m(e)j(4.2,)g(or)e(an)h(in)m(teger)g(corresp)s(onding)f(to)h(the)f
|
||||
Ft(compat)p Fr(NN)150 884 y Fu(option,)g(lik)m(e)h(42\))f(determines)g
|
||||
(the)f(compatibilit)m(y)j(lev)m(el.)275 1032 y(Starting)h(with)g
|
||||
(bash-4.4,)i(Bash)f(b)s(egan)f(deprecating)h(older)f(compatibilit)m(y)j
|
||||
(lev)m(els.)54 b(Ev)m(en)m(tually)-8 b(,)150 1141 y(the)31
|
||||
b(options)f(will)h(b)s(e)f(remo)m(v)m(ed)h(in)f(fa)m(v)m(or)i(of)e
|
||||
Ft(BASH_COMPAT)p Fu(.)275 1289 y(Bash-5.0)39 b(w)m(as)f(the)g(\014nal)g
|
||||
(v)m(ersion)g(for)g(whic)m(h)f(there)h(w)m(as)g(an)g(individual)f
|
||||
(shopt)h(option)g(for)g(the)150 1398 y(previous)31 b(v)m(ersion.)43
|
||||
b Ft(BASH_COMPAT)29 b Fu(is)i(the)g(only)g(mec)m(hanism)h(to)g(con)m
|
||||
(trol)h(the)e(compatibilit)m(y)i(lev)m(el)g(in)150 1508
|
||||
y(v)m(ersions)e(new)m(er)f(than)g(bash-5.0.)275 1655
|
||||
y(The)24 b(follo)m(wing)i(table)g(describ)s(es)e(the)i(b)s(eha)m(vior)f
|
||||
(c)m(hanges)h(con)m(trolled)g(b)m(y)f(eac)m(h)h(compatibilit)m(y)h(lev)
|
||||
m(el)150 1765 y(setting.)43 b(The)30 b Ft(compat)p Fr(NN)39
|
||||
b Fu(tag)32 b(is)f(used)f(as)h(shorthand)e(for)h(setting)i(the)f
|
||||
(compatibilit)m(y)i(lev)m(el)f(to)g Fr(NN)150 1874 y
|
||||
Fu(using)37 b(one)h(of)g(the)g(follo)m(wing)h(mec)m(hanisms.)63
|
||||
b(F)-8 b(or)39 b(v)m(ersions)f(prior)f(to)h(bash-5.0,)j(the)d
|
||||
(compatibilit)m(y)150 1984 y(lev)m(el)d(ma)m(y)f(b)s(e)e(set)i(using)e
|
||||
(the)i(corresp)s(onding)e Ft(compat)p Fr(NN)41 b Fu(shopt)33
|
||||
b(option.)50 b(F)-8 b(or)34 b(bash-4.3)f(and)g(later)150
|
||||
2093 y(v)m(ersions,)40 b(the)e Ft(BASH_COMPAT)d Fu(v)-5
|
||||
1310 y(v)-5 b(ariable)32 b(\(a)g(decimal)h(v)m(ersion)e(n)m(um)m(b)s
|
||||
(er)f(lik)m(e)j(4.2,)g(or)e(an)h(in)m(teger)g(corresp)s(onding)f(to)h
|
||||
(the)f Ft(compat)p Fr(NN)150 1419 y Fu(option,)g(lik)m(e)h(42\))f
|
||||
(determines)g(the)f(compatibilit)m(y)j(lev)m(el.)275
|
||||
1553 y(Starting)h(with)g(bash-4.4,)i(Bash)f(b)s(egan)f(deprecating)h
|
||||
(older)f(compatibilit)m(y)j(lev)m(els.)54 b(Ev)m(en)m(tually)-8
|
||||
b(,)150 1663 y(the)31 b(options)f(will)h(b)s(e)f(remo)m(v)m(ed)h(in)f
|
||||
(fa)m(v)m(or)i(of)e Ft(BASH_COMPAT)p Fu(.)275 1797 y(Bash-5.0)39
|
||||
b(w)m(as)f(the)g(\014nal)g(v)m(ersion)g(for)g(whic)m(h)f(there)h(w)m
|
||||
(as)g(an)g(individual)f(shopt)h(option)g(for)g(the)150
|
||||
1906 y(previous)31 b(v)m(ersion.)43 b Ft(BASH_COMPAT)29
|
||||
b Fu(is)i(the)g(only)g(mec)m(hanism)h(to)g(con)m(trol)h(the)e
|
||||
(compatibilit)m(y)i(lev)m(el)g(in)150 2016 y(v)m(ersions)e(new)m(er)f
|
||||
(than)g(bash-5.0.)275 2150 y(The)24 b(follo)m(wing)i(table)g(describ)s
|
||||
(es)e(the)i(b)s(eha)m(vior)f(c)m(hanges)h(con)m(trolled)g(b)m(y)f(eac)m
|
||||
(h)h(compatibilit)m(y)h(lev)m(el)150 2259 y(setting.)43
|
||||
b(The)30 b Ft(compat)p Fr(NN)39 b Fu(tag)32 b(is)f(used)f(as)h
|
||||
(shorthand)e(for)h(setting)i(the)f(compatibilit)m(y)i(lev)m(el)f(to)g
|
||||
Fr(NN)150 2369 y Fu(using)37 b(one)h(of)g(the)g(follo)m(wing)h(mec)m
|
||||
(hanisms.)63 b(F)-8 b(or)39 b(v)m(ersions)f(prior)f(to)h(bash-5.0,)j
|
||||
(the)d(compatibilit)m(y)150 2478 y(lev)m(el)d(ma)m(y)f(b)s(e)e(set)i
|
||||
(using)e(the)i(corresp)s(onding)e Ft(compat)p Fr(NN)41
|
||||
b Fu(shopt)33 b(option.)50 b(F)-8 b(or)34 b(bash-4.3)f(and)g(later)150
|
||||
2588 y(v)m(ersions,)40 b(the)e Ft(BASH_COMPAT)d Fu(v)-5
|
||||
b(ariable)39 b(is)e(preferred,)i(and)e(it)i(is)f(required)f(for)g
|
||||
(bash-5.1)i(and)e(later)150 2203 y(v)m(ersions.)150 2381
|
||||
y Ft(compat31)705 2522 y Fq(\017)60 b Fu(Quoting)32 b(the)f(rhs)g(of)g
|
||||
(bash-5.1)i(and)e(later)150 2698 y(v)m(ersions.)150 2856
|
||||
y Ft(compat31)705 2990 y Fq(\017)60 b Fu(Quoting)32 b(the)f(rhs)g(of)g
|
||||
(the)h Ft([[)e Fu(command's)i(regexp)f(matc)m(hing)i(op)s(erator)f(\(=)
|
||||
p Ft(~)p Fu(\))f(has)810 2632 y(no)f(sp)s(ecial)h(e\013ect)150
|
||||
2804 y Ft(compat40)705 2945 y Fq(\017)60 b Fu(The)32
|
||||
p Ft(~)p Fu(\))f(has)810 3099 y(no)f(sp)s(ecial)h(e\013ect)150
|
||||
3258 y Ft(compat40)705 3392 y Fq(\017)60 b Fu(The)32
|
||||
b(`)p Ft(<)p Fu(')g(and)g(`)p Ft(>)p Fu(')g(op)s(erators)h(to)g(the)f
|
||||
Ft([[)g Fu(command)g(do)g(not)g(consider)h(the)f(curren)m(t)810
|
||||
3055 y(lo)s(cale)41 b(when)d(comparing)i(strings;)k(they)c(use)f(ASCI)s
|
||||
(I)f(ordering.)67 b(Bash)40 b(v)m(ersions)810 3164 y(prior)f(to)i
|
||||
3501 y(lo)s(cale)41 b(when)d(comparing)i(strings;)k(they)c(use)f(ASCI)s
|
||||
(I)f(ordering.)67 b(Bash)40 b(v)m(ersions)810 3611 y(prior)f(to)i
|
||||
(bash-4.1)f(use)g(ASCI)s(I)e(collation)k(and)d(strcmp\(3\);)45
|
||||
b(bash-4.1)c(and)e(later)810 3274 y(use)30 b(the)h(curren)m(t)f(lo)s
|
||||
b(bash-4.1)c(and)e(later)810 3720 y(use)30 b(the)h(curren)m(t)f(lo)s
|
||||
(cale's)i(collation)h(sequence)d(and)g(strcoll\(3\).)150
|
||||
3446 y Ft(compat41)705 3587 y Fq(\017)60 b Fu(In)35 b
|
||||
3879 y Ft(compat41)705 4013 y Fq(\017)60 b Fu(In)35 b
|
||||
Fm(posix)f Fu(mo)s(de,)j Ft(time)d Fu(ma)m(y)i(b)s(e)f(follo)m(w)m(ed)i
|
||||
(b)m(y)f(options)g(and)e(still)j(b)s(e)e(recognized)810
|
||||
3696 y(as)c(a)f(reserv)m(ed)h(w)m(ord)f(\(this)h(is)f
|
||||
Fm(posix)g Fu(in)m(terpretation)h(267\).)705 3837 y Fq(\017)60
|
||||
4122 y(as)c(a)f(reserv)m(ed)h(w)m(ord)f(\(this)h(is)f
|
||||
Fm(posix)g Fu(in)m(terpretation)h(267\).)705 4256 y Fq(\017)60
|
||||
b Fu(In)33 b Fm(posix)h Fu(mo)s(de,)h(the)f(parser)g(requires)g(that)g
|
||||
(an)g(ev)m(en)h(n)m(um)m(b)s(er)e(of)i(single)f(quotes)810
|
||||
3947 y(o)s(ccur)28 b(in)g(the)h Fr(w)m(ord)i Fu(p)s(ortion)d(of)h(a)g
|
||||
4366 y(o)s(ccur)28 b(in)g(the)h Fr(w)m(ord)i Fu(p)s(ortion)d(of)h(a)g
|
||||
(double-quoted)f($)p Fi({)6 b Fu(.)23 b(.)f(.)11 b Fi(})29
|
||||
b Fu(parameter)g(expansion)810 4056 y(and)34 b(treats)h(them)f(sp)s
|
||||
b Fu(parameter)g(expansion)810 4475 y(and)34 b(treats)h(them)f(sp)s
|
||||
(ecially)-8 b(,)37 b(so)e(that)g(c)m(haracters)g(within)f(the)h(single)
|
||||
g(quotes)g(are)810 4166 y(considered)30 b(quoted)h(\(this)f(is)h
|
||||
Fm(posix)e Fu(in)m(terpretation)j(221\).)150 4338 y Ft(compat42)705
|
||||
4479 y Fq(\017)60 b Fu(The)45 b(replacemen)m(t)i(string)f(in)f
|
||||
g(quotes)g(are)810 4585 y(considered)30 b(quoted)h(\(this)f(is)h
|
||||
Fm(posix)e Fu(in)m(terpretation)j(221\).)150 4743 y Ft(compat42)705
|
||||
4877 y Fq(\017)60 b Fu(The)45 b(replacemen)m(t)i(string)f(in)f
|
||||
(double-quoted)h(pattern)f(substitution)g(do)s(es)h(not)810
|
||||
4589 y(undergo)30 b(quote)h(remo)m(v)-5 b(al,)32 b(as)e(it)h(do)s(es)f
|
||||
(in)g(v)m(ersions)h(after)g(bash-4.2.)705 4729 y Fq(\017)60
|
||||
4987 y(undergo)30 b(quote)h(remo)m(v)-5 b(al,)32 b(as)e(it)h(do)s(es)f
|
||||
(in)g(v)m(ersions)h(after)g(bash-4.2.)705 5121 y Fq(\017)60
|
||||
b Fu(In)36 b Fm(posix)f Fu(mo)s(de,)j(single)e(quotes)h(are)g
|
||||
(considered)f(sp)s(ecial)h(when)e(expanding)h(the)810
|
||||
4839 y Fr(w)m(ord)g Fu(p)s(ortion)c(of)g(a)h(double-quoted)g($)p
|
||||
5230 y Fr(w)m(ord)g Fu(p)s(ortion)c(of)g(a)h(double-quoted)g($)p
|
||||
Fi({)6 b Fu(.)22 b(.)h(.)11 b Fi(})33 b Fu(parameter)g(expansion)f(and)
|
||||
g(can)h(b)s(e)810 4949 y(used)40 b(to)i(quote)g(a)f(closing)h(brace)f
|
||||
(or)g(other)h(sp)s(ecial)f(c)m(haracter)i(\(this)e(is)g(part)g(of)810
|
||||
5058 y Fm(posix)36 b Fu(in)m(terpretation)h(221\);)42
|
||||
b(in)36 b(later)h(v)m(ersions,)h(single)f(quotes)g(are)g(not)f(sp)s
|
||||
(ecial)810 5168 y(within)30 b(double-quoted)g(w)m(ord)g(expansions.)150
|
||||
5340 y Ft(compat43)p eop end
|
||||
g(can)h(b)s(e)810 5340 y(used)40 b(to)i(quote)g(a)f(closing)h(brace)f
|
||||
(or)g(other)h(sp)s(ecial)f(c)m(haracter)i(\(this)e(is)g(part)g(of)p
|
||||
eop end
|
||||
%%Page: 123 129
|
||||
TeXDict begin 123 128 bop 150 -116 a Fu(Chapter)30 b(6:)41
|
||||
b(Bash)30 b(F)-8 b(eatures)2439 b(123)705 299 y Fq(\017)60
|
||||
b Fu(W)-8 b(ord)32 b(expansion)g(errors)g(are)g(considered)g(non-fatal)
|
||||
h(errors)e(that)i(cause)f(the)g(cur-)810 408 y(ren)m(t)26
|
||||
b(command)g(to)h(fail,)h(ev)m(en)f(in)f Fm(posix)f Fu(mo)s(de)h(\(the)g
|
||||
(default)h(b)s(eha)m(vior)f(is)g(to)h(mak)m(e)810 518
|
||||
y(them)j(fatal)i(errors)e(that)h(cause)g(the)f(shell)h(to)g(exit\).)705
|
||||
647 y Fq(\017)60 b Fu(When)36 b(executing)h(a)f(shell)g(function,)h
|
||||
(the)f(lo)s(op)g(state)h(\(while/un)m(til/etc.\))61 b(is)36
|
||||
b(not)810 757 y(reset,)e(so)g Ft(break)d Fu(or)i Ft(continue)e
|
||||
Fu(in)h(that)i(function)f(will)g(break)g(or)g(con)m(tin)m(ue)h(lo)s
|
||||
(ops)810 866 y(in)h(the)g(calling)h(con)m(text.)57 b(Bash-4.4)37
|
||||
b(and)d(later)i(reset)g(the)f(lo)s(op)g(state)i(to)e(prev)m(en)m(t)810
|
||||
976 y(this.)150 1124 y Ft(compat44)705 1253 y Fq(\017)60
|
||||
b Fu(The)38 b(shell)g(sets)g(up)g(the)g(v)-5 b(alues)38
|
||||
b(used)g(b)m(y)g Ft(BASH_ARGV)d Fu(and)j Ft(BASH_ARGC)d
|
||||
Fu(so)k(they)810 1363 y(can)26 b(expand)f(to)h(the)g(shell's)g(p)s
|
||||
b(Bash)30 b(F)-8 b(eatures)2439 b(123)810 299 y Fm(posix)36
|
||||
b Fu(in)m(terpretation)h(221\);)42 b(in)36 b(later)h(v)m(ersions,)h
|
||||
(single)f(quotes)g(are)g(not)f(sp)s(ecial)810 408 y(within)30
|
||||
b(double-quoted)g(w)m(ord)g(expansions.)150 579 y Ft(compat43)705
|
||||
719 y Fq(\017)60 b Fu(W)-8 b(ord)32 b(expansion)g(errors)g(are)g
|
||||
(considered)g(non-fatal)h(errors)e(that)i(cause)f(the)g(cur-)810
|
||||
829 y(ren)m(t)26 b(command)g(to)h(fail,)h(ev)m(en)f(in)f
|
||||
Fm(posix)f Fu(mo)s(de)h(\(the)g(default)h(b)s(eha)m(vior)f(is)g(to)h
|
||||
(mak)m(e)810 938 y(them)j(fatal)i(errors)e(that)h(cause)g(the)f(shell)h
|
||||
(to)g(exit\).)705 1078 y Fq(\017)60 b Fu(When)36 b(executing)h(a)f
|
||||
(shell)g(function,)h(the)f(lo)s(op)g(state)h(\(while/un)m(til/etc.\))61
|
||||
b(is)36 b(not)810 1188 y(reset,)e(so)g Ft(break)d Fu(or)i
|
||||
Ft(continue)e Fu(in)h(that)i(function)f(will)g(break)g(or)g(con)m(tin)m
|
||||
(ue)h(lo)s(ops)810 1297 y(in)h(the)g(calling)h(con)m(text.)57
|
||||
b(Bash-4.4)37 b(and)d(later)i(reset)g(the)f(lo)s(op)g(state)i(to)e
|
||||
(prev)m(en)m(t)810 1407 y(this.)150 1577 y Ft(compat44)705
|
||||
1717 y Fq(\017)60 b Fu(The)38 b(shell)g(sets)g(up)g(the)g(v)-5
|
||||
b(alues)38 b(used)g(b)m(y)g Ft(BASH_ARGV)d Fu(and)j Ft(BASH_ARGC)d
|
||||
Fu(so)k(they)810 1827 y(can)26 b(expand)f(to)h(the)g(shell's)g(p)s
|
||||
(ositional)g(parameters)g(ev)m(en)h(if)e(extended)h(debugging)810
|
||||
1472 y(mo)s(de)k(is)g(not)h(enabled.)705 1601 y Fq(\017)60
|
||||
1937 y(mo)s(de)k(is)g(not)h(enabled.)705 2077 y Fq(\017)60
|
||||
b Fu(A)38 b(subshell)f(inherits)g(lo)s(ops)h(from)f(its)h(paren)m(t)g
|
||||
(con)m(text,)k(so)c Ft(break)e Fu(or)i Ft(continue)810
|
||||
1711 y Fu(will)d(cause)g(the)f(subshell)f(to)i(exit.)54
|
||||
2186 y Fu(will)d(cause)g(the)f(subshell)f(to)i(exit.)54
|
||||
b(Bash-5.0)36 b(and)d(later)j(reset)f(the)f(lo)s(op)h(state)g(to)810
|
||||
1820 y(prev)m(en)m(t)c(the)g(exit.)705 1949 y Fq(\017)60
|
||||
2296 y(prev)m(en)m(t)c(the)g(exit.)705 2436 y Fq(\017)60
|
||||
b Fu(V)-8 b(ariable)27 b(assignmen)m(ts)g(preceding)e(builtins)g(lik)m
|
||||
(e)i Ft(export)d Fu(and)i Ft(readonly)d Fu(that)j(set)810
|
||||
2059 y(attributes)37 b(con)m(tin)m(ue)h(to)g(a\013ect)g(v)-5
|
||||
2545 y(attributes)37 b(con)m(tin)m(ue)h(to)g(a\013ect)g(v)-5
|
||||
b(ariables)37 b(with)g(the)f(same)h(name)g(in)g(the)f(calling)810
|
||||
2168 y(en)m(vironmen)m(t)31 b(ev)m(en)g(if)f(the)h(shell)g(is)f(not)h
|
||||
(in)f Fm(posix)f Fu(mo)s(de.)150 2317 y Ft(compat50)f(\(set)h(using)g
|
||||
(BASH_COMPAT\))705 2426 y Fq(\017)60 b Fu(Bash-5.1)29
|
||||
2655 y(en)m(vironmen)m(t)31 b(ev)m(en)g(if)f(the)h(shell)g(is)f(not)h
|
||||
(in)f Fm(posix)f Fu(mo)s(de.)150 2826 y Ft(compat50)f(\(set)h(using)g
|
||||
(BASH_COMPAT\))705 2935 y Fq(\017)60 b Fu(Bash-5.1)29
|
||||
b(c)m(hanged)g(the)f(w)m(a)m(y)g Ft($RANDOM)e Fu(is)i(generated)h(to)f
|
||||
(in)m(tro)s(duce)g(sligh)m(tly)h(more)810 2536 y(randomness.)39
|
||||
(in)m(tro)s(duce)g(sligh)m(tly)h(more)810 3045 y(randomness.)39
|
||||
b(If)30 b(the)f(shell)h(compatibilit)m(y)i(lev)m(el)f(is)f(set)g(to)h
|
||||
(50)f(or)g(lo)m(w)m(er,)h(it)f(rev)m(erts)810 2645 y(to)e(the)g(metho)s
|
||||
(50)f(or)g(lo)m(w)m(er,)h(it)f(rev)m(erts)810 3154 y(to)e(the)g(metho)s
|
||||
(d)f(from)g(bash-5.0)h(and)f(previous)g(v)m(ersions,)i(so)e(seeding)h
|
||||
(the)g(random)810 2755 y(n)m(um)m(b)s(er)36 b(generator)j(b)m(y)e
|
||||
(the)g(random)810 3264 y(n)m(um)m(b)s(er)36 b(generator)j(b)m(y)e
|
||||
(assigning)h(a)g(v)-5 b(alue)38 b(to)g Ft(RANDOM)e Fu(will)i(pro)s
|
||||
(duce)e(the)i(same)810 2865 y(sequence)31 b(as)f(in)g(bash-5.0.)705
|
||||
2993 y Fq(\017)60 b Fu(If)22 b(the)g(command)g(hash)f(table)i(is)f
|
||||
(duce)e(the)i(same)810 3373 y(sequence)31 b(as)f(in)g(bash-5.0.)705
|
||||
3513 y Fq(\017)60 b Fu(If)22 b(the)g(command)g(hash)f(table)i(is)f
|
||||
(empt)m(y)-8 b(,)25 b(Bash)d(v)m(ersions)g(prior)g(to)h(bash-5.1)f
|
||||
(prin)m(ted)810 3103 y(an)29 b(informational)i(message)g(to)f(that)g
|
||||
(prin)m(ted)810 3623 y(an)29 b(informational)i(message)g(to)f(that)g
|
||||
(e\013ect,)h(ev)m(en)g(when)d(pro)s(ducing)g(output)h(that)810
|
||||
3213 y(can)40 b(b)s(e)g(reused)f(as)h(input.)69 b(Bash-5.1)42
|
||||
3733 y(can)40 b(b)s(e)g(reused)f(as)h(input.)69 b(Bash-5.1)42
|
||||
b(suppresses)c(that)j(message)g(when)e(the)i Ft(-l)810
|
||||
3322 y Fu(option)31 b(is)f(supplied.)150 3471 y Ft(compat51)e(\(set)h
|
||||
(using)g(BASH_COMPAT\))705 3580 y Fq(\017)60 b Fu(The)38
|
||||
3842 y Fu(option)31 b(is)f(supplied.)150 4013 y Ft(compat51)e(\(set)h
|
||||
(using)g(BASH_COMPAT\))705 4122 y Fq(\017)60 b Fu(The)38
|
||||
b Ft(unset)g Fu(builtin)g(will)h(unset)f(the)h(arra)m(y)g
|
||||
Ft(a)g Fu(giv)m(en)g(an)g(argumen)m(t)g(lik)m(e)h(`)p
|
||||
Ft(a[@])p Fu('.)810 3690 y(Bash-5.2)32 b(will)f(unset)f(an)g(elemen)m
|
||||
Ft(a[@])p Fu('.)810 4232 y(Bash-5.2)32 b(will)f(unset)f(an)g(elemen)m
|
||||
(t)i(with)e(k)m(ey)i(`)p Ft(@)p Fu(')e(\(asso)s(ciativ)m(e)k(arra)m
|
||||
(ys\))d(or)f(remo)m(v)m(e)810 3799 y(all)h(the)g(elemen)m(ts)h(without)
|
||||
(ys\))d(or)f(remo)m(v)m(e)810 4341 y(all)h(the)g(elemen)m(ts)h(without)
|
||||
e(unsetting)g(the)h(arra)m(y)g(\(indexed)f(arra)m(ys\).)705
|
||||
3928 y Fq(\017)60 b Fu(Arithmetic)31 b(commands)f(\()h(\(\()6
|
||||
4482 y Fq(\017)60 b Fu(Arithmetic)31 b(commands)f(\()h(\(\()6
|
||||
b(.)23 b(.)f(.)11 b(\)\))31 b(\))g(and)f(the)g(expressions)g(in)g(an)h
|
||||
(arithmetic)g(for)810 4038 y(statemen)m(t)h(can)f(b)s(e)f(expanded)f
|
||||
(more)i(than)f(once.)705 4167 y Fq(\017)60 b Fu(Expressions)20
|
||||
(arithmetic)g(for)810 4591 y(statemen)m(t)h(can)f(b)s(e)f(expanded)f
|
||||
(more)i(than)f(once.)705 4731 y Fq(\017)60 b Fu(Expressions)20
|
||||
b(used)f(as)i(argumen)m(ts)g(to)g(arithmetic)h(op)s(erators)f(in)f(the)
|
||||
h Ft([[)f Fu(conditional)810 4276 y(command)30 b(can)h(b)s(e)f
|
||||
(expanded)f(more)i(than)f(once.)705 4405 y Fq(\017)60
|
||||
h Ft([[)f Fu(conditional)810 4841 y(command)30 b(can)h(b)s(e)f
|
||||
(expanded)f(more)i(than)f(once.)705 4981 y Fq(\017)60
|
||||
b Fu(The)31 b(expressions)g(in)h(substring)e(parameter)i(brace)g
|
||||
(expansion)g(can)g(b)s(e)f(expanded)810 4515 y(more)g(than)f(once.)705
|
||||
4644 y Fq(\017)60 b Fu(The)35 b(expressions)g(in)g(the)h($\(\()42
|
||||
(expansion)g(can)g(b)s(e)f(expanded)810 5090 y(more)g(than)f(once.)705
|
||||
5230 y Fq(\017)60 b Fu(The)35 b(expressions)g(in)g(the)h($\(\()42
|
||||
b(.)22 b(.)g(.)47 b(\)\))36 b(w)m(ord)f(expansion)h(can)f(b)s(e)g
|
||||
(expanded)g(more)810 4753 y(than)30 b(once.)705 4882
|
||||
y Fq(\017)60 b Fu(Arithmetic)33 b(expressions)f(used)g(as)h(indexed)e
|
||||
(arra)m(y)i(subscripts)e(can)i(b)s(e)f(expanded)810 4992
|
||||
y(more)f(than)f(once.)705 5121 y Fq(\017)60 b Ft(test)29
|
||||
b(-v)p Fu(,)35 b(when)f(giv)m(en)h(an)g(argumen)m(t)g(of)f(`)p
|
||||
Ft(A[@])p Fu(',)h(where)f Fr(A)h Fu(is)f(an)h(existing)g(asso-)810
|
||||
5230 y(ciativ)m(e)h(arra)m(y)-8 b(,)37 b(will)d(return)f(true)g(if)h
|
||||
(the)h(arra)m(y)f(has)g(an)m(y)g(set)g(elemen)m(ts.)53
|
||||
b(Bash-5.2)810 5340 y(will)31 b(lo)s(ok)g(for)f(and)g(rep)s(ort)f(on)i
|
||||
(a)f(k)m(ey)i(named)d(`)p Ft(@)p Fu('.)p eop end
|
||||
(expanded)g(more)810 5340 y(than)30 b(once.)p eop end
|
||||
%%Page: 124 130
|
||||
TeXDict begin 124 129 bop 150 -116 a Fu(Chapter)30 b(6:)41
|
||||
b(Bash)30 b(F)-8 b(eatures)2439 b(124)705 299 y Fq(\017)60
|
||||
b Fu(the)40 b($)p Fi({)p Fr(parameter)7 b Fu([:]=)p Fr(v)-5
|
||||
b(alue)5 b Fi(})42 b Fu(w)m(ord)e(expansion)f(will)i(return)d
|
||||
Fr(v)-5 b(alue)p Fu(,)43 b(b)s(efore)d(an)m(y)810 408
|
||||
y(v)-5 b(ariable-sp)s(eci\014c)34 b(transformations)f(ha)m(v)m(e)h(b)s
|
||||
(een)e(p)s(erformed)f(\(e.g.,)36 b(con)m(v)m(erting)e(to)810
|
||||
518 y(lo)m(w)m(ercase\).)43 b(Bash-5.2)32 b(will)f(return)e(the)i
|
||||
b Fu(Arithmetic)33 b(expressions)f(used)g(as)h(indexed)e(arra)m(y)i
|
||||
(subscripts)e(can)i(b)s(e)f(expanded)810 408 y(more)f(than)f(once.)705
|
||||
543 y Fq(\017)60 b Ft(test)29 b(-v)p Fu(,)35 b(when)f(giv)m(en)h(an)g
|
||||
(argumen)m(t)g(of)f(`)p Ft(A[@])p Fu(',)h(where)f Fr(A)h
|
||||
Fu(is)f(an)h(existing)g(asso-)810 653 y(ciativ)m(e)h(arra)m(y)-8
|
||||
b(,)37 b(will)d(return)f(true)g(if)h(the)h(arra)m(y)f(has)g(an)m(y)g
|
||||
(set)g(elemen)m(ts.)53 b(Bash-5.2)810 762 y(will)31 b(lo)s(ok)g(for)f
|
||||
(and)g(rep)s(ort)f(on)i(a)f(k)m(ey)i(named)d(`)p Ft(@)p
|
||||
Fu('.)705 897 y Fq(\017)60 b Fu(the)40 b($)p Fi({)p Fr(parameter)7
|
||||
b Fu([:]=)p Fr(v)-5 b(alue)5 b Fi(})42 b Fu(w)m(ord)e(expansion)f(will)
|
||||
i(return)d Fr(v)-5 b(alue)p Fu(,)43 b(b)s(efore)d(an)m(y)810
|
||||
1006 y(v)-5 b(ariable-sp)s(eci\014c)34 b(transformations)f(ha)m(v)m(e)h
|
||||
(b)s(een)e(p)s(erformed)f(\(e.g.,)36 b(con)m(v)m(erting)e(to)810
|
||||
1116 y(lo)m(w)m(ercase\).)43 b(Bash-5.2)32 b(will)f(return)e(the)i
|
||||
(\014nal)f(v)-5 b(alue)31 b(assigned)f(to)i(the)e(v)-5
|
||||
b(ariable.)705 653 y Fq(\017)60 b Fu(P)m(arsing)40 b(command)f
|
||||
b(ariable.)705 1250 y Fq(\017)60 b Fu(P)m(arsing)40 b(command)f
|
||||
(substitutions)f(will)i(b)s(eha)m(v)m(e)g(as)f(if)g(extended)g
|
||||
(globbing)h(\(see)810 762 y(Section)e(4.3.2)g([The)f(Shopt)f(Builtin],)
|
||||
j(page)f(78\))g(is)f(enabled,)i(so)e(that)g(parsing)g(a)810
|
||||
872 y(command)24 b(substitution)g(con)m(taining)h(an)f(extglob)i
|
||||
(globbing)h(\(see)810 1360 y(Section)e(4.3.2)g([The)f(Shopt)f
|
||||
(Builtin],)j(page)f(78\))g(is)f(enabled,)i(so)e(that)g(parsing)g(a)810
|
||||
1469 y(command)24 b(substitution)g(con)m(taining)h(an)f(extglob)i
|
||||
(pattern)e(\(sa)m(y)-8 b(,)27 b(as)d(part)g(of)g(a)h(shell)810
|
||||
981 y(function\))30 b(will)h(not)g(fail.)41 b(This)30
|
||||
1579 y(function\))30 b(will)h(not)g(fail.)41 b(This)30
|
||||
b(assumes)g(the)h(in)m(ten)m(t)g(is)g(to)g(enable)g(extglob)g(b)s
|
||||
(efore)810 1091 y(the)i(command)f(is)g(executed)h(and)f(w)m(ord)g
|
||||
(efore)810 1689 y(the)i(command)f(is)g(executed)h(and)f(w)m(ord)g
|
||||
(expansions)g(are)h(p)s(erformed.)45 b(It)33 b(will)f(fail)810
|
||||
1200 y(at)42 b(w)m(ord)f(expansion)h(time)g(if)f(extglob)i(hasn't)e(b)s
|
||||
(een)g(enabled)h(b)m(y)f(the)h(time)g(the)810 1310 y(command)30
|
||||
b(is)h(executed.)150 1469 y Ft(compat52)d(\(set)h(using)g
|
||||
(BASH_COMPAT\))705 1579 y Fq(\017)60 b Fu(The)23 b Ft(test)g
|
||||
1798 y(at)42 b(w)m(ord)f(expansion)h(time)g(if)f(extglob)i(hasn't)e(b)s
|
||||
(een)g(enabled)h(b)m(y)f(the)h(time)g(the)810 1908 y(command)30
|
||||
b(is)h(executed.)150 2067 y Ft(compat52)d(\(set)h(using)g
|
||||
(BASH_COMPAT\))705 2177 y Fq(\017)60 b Fu(The)23 b Ft(test)g
|
||||
Fu(builtin)g(uses)h(its)g(historical)h(algorithm)g(to)f(parse)g(paren)m
|
||||
(thesized)g(sub)s(ex-)810 1689 y(pressions)30 b(when)f(giv)m(en)i
|
||||
(\014v)m(e)g(or)f(more)h(argumen)m(ts.)705 1823 y Fq(\017)60
|
||||
(thesized)g(sub)s(ex-)810 2286 y(pressions)30 b(when)f(giv)m(en)i
|
||||
(\014v)m(e)g(or)f(more)h(argumen)m(ts.)705 2421 y Fq(\017)60
|
||||
b Fu(If)25 b(the)h Ft(-p)f Fu(or)h Ft(-P)f Fu(option)h(is)g(supplied)e
|
||||
(to)j(the)f Ft(bind)e Fu(builtin,)i Ft(bind)f Fu(treats)i(an)m(y)f
|
||||
(argu-)810 1933 y(men)m(ts)h(remaining)g(after)h(option)f(pro)s
|
||||
(argu-)810 2531 y(men)m(ts)h(remaining)g(after)h(option)f(pro)s
|
||||
(cessing)g(as)g(bindable)f(command)h(names,)h(and)810
|
||||
2042 y(displa)m(ys)k(an)m(y)f(k)m(ey)i(sequences)f(b)s(ound)d(to)j
|
||||
(those)g(commands,)g(instead)g(of)g(treating)810 2152
|
||||
2640 y(displa)m(ys)k(an)m(y)f(k)m(ey)i(sequences)f(b)s(ound)d(to)j
|
||||
(those)g(commands,)g(instead)g(of)g(treating)810 2750
|
||||
y(the)f(argumen)m(ts)f(as)h(k)m(ey)g(sequences)g(to)g(bind.)705
|
||||
2286 y Fq(\017)60 b Fu(In)m(teractiv)m(e)41 b(shells)d(will)h(notify)g
|
||||
2884 y Fq(\017)60 b Fu(In)m(teractiv)m(e)41 b(shells)d(will)h(notify)g
|
||||
(the)f(user)g(of)h(completed)g(jobs)f(while)g(sourcing)h(a)810
|
||||
2396 y(script.)i(New)m(er)31 b(v)m(ersions)f(defer)g(noti\014cation)i
|
||||
2994 y(script.)i(New)m(er)31 b(v)m(ersions)f(defer)g(noti\014cation)i
|
||||
(un)m(til)f(script)f(execution)i(completes.)p eop end
|
||||
%%Page: 125 131
|
||||
TeXDict begin 125 130 bop 3614 -116 a Fu(125)150 299
|
||||
|
||||
Binary file not shown.
+68
-64
@@ -143,9 +143,8 @@ getlist (char *arg, struct cutpos **opp)
|
||||
}
|
||||
|
||||
static int
|
||||
cutbytes (SHELL_VAR *v, char *line, struct cutop *ops)
|
||||
cutbytes (SHELL_VAR *v, arrayind_t ind, char *line, struct cutop *ops)
|
||||
{
|
||||
arrayind_t ind;
|
||||
char *buf, *bmap;
|
||||
size_t llen;
|
||||
int i, b, n, s, e;
|
||||
@@ -175,36 +174,31 @@ cutbytes (SHELL_VAR *v, char *line, struct cutop *ops)
|
||||
buf[b++] = line[i];
|
||||
buf[b] = 0;
|
||||
|
||||
if (v)
|
||||
{
|
||||
ind = 0;
|
||||
#if defined (ARRAY_VARS)
|
||||
bind_array_element (v, ind, buf, 0);
|
||||
#endif
|
||||
ind++;
|
||||
}
|
||||
if (v)
|
||||
bind_array_element (v, ind, buf, 0);
|
||||
else
|
||||
#endif
|
||||
printf ("%s\n", buf);
|
||||
|
||||
free (buf);
|
||||
free (bmap);
|
||||
|
||||
return ind;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
cutchars (SHELL_VAR *v, char *line, struct cutop *ops)
|
||||
cutchars (SHELL_VAR *v, arrayind_t ind, char *line, struct cutop *ops)
|
||||
{
|
||||
arrayind_t ind;
|
||||
char *buf, *bmap;
|
||||
wchar_t *wbuf, *wb2;
|
||||
size_t llen, wlen;
|
||||
int i, b, n, s, e;
|
||||
|
||||
if (MB_CUR_MAX == 1)
|
||||
return (cutbytes (v, line, ops));
|
||||
return (cutbytes (v, ind, line, ops));
|
||||
if (locale_utf8locale && utf8_mbsmbchar (line) == 0)
|
||||
return (cutbytes (v, line, ops));
|
||||
return (cutbytes (v, ind, line, ops));
|
||||
|
||||
llen = strlen (line);
|
||||
wbuf = (wchar_t *)xmalloc ((llen + 1) * sizeof (wchar_t));
|
||||
@@ -213,7 +207,7 @@ cutchars (SHELL_VAR *v, char *line, struct cutop *ops)
|
||||
if (MB_INVALIDCH (wlen))
|
||||
{
|
||||
free (wbuf);
|
||||
return (cutbytes (v, line, ops));
|
||||
return (cutbytes (v, ind, line, ops));
|
||||
}
|
||||
|
||||
bmap = xmalloc (llen + 1);
|
||||
@@ -245,21 +239,17 @@ cutchars (SHELL_VAR *v, char *line, struct cutop *ops)
|
||||
buf = bmap;
|
||||
n = wcstombs (buf, wb2, llen);
|
||||
|
||||
if (v)
|
||||
{
|
||||
ind = 0;
|
||||
#if defined (ARRAY_VARS)
|
||||
bind_array_element (v, ind, buf, 0);
|
||||
#endif
|
||||
ind++;
|
||||
}
|
||||
if (v)
|
||||
bind_array_element (v, ind, buf, 0);
|
||||
else
|
||||
#endif
|
||||
printf ("%s\n", buf);
|
||||
|
||||
free (buf);
|
||||
free (wb2);
|
||||
|
||||
return ind;
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* The basic strategy is to cut the line into fields using strsep, populate
|
||||
@@ -267,15 +257,12 @@ cutchars (SHELL_VAR *v, char *line, struct cutop *ops)
|
||||
bitmap approach as cut{bytes,chars} and assign them to the array variable
|
||||
V or print them on stdout. This function obeys SFLAG. */
|
||||
static int
|
||||
cutfields (SHELL_VAR *v, char *line, struct cutop *ops)
|
||||
cutfields (SHELL_VAR *v, arrayind_t ind, char *line, struct cutop *ops)
|
||||
{
|
||||
arrayind_t ind;
|
||||
char *buf, *bmap, *field, **fields, delim[2];
|
||||
size_t llen, fsize;
|
||||
int i, b, n, s, e, nf;
|
||||
|
||||
ind = 0;
|
||||
|
||||
delim[0] = ops->delim;
|
||||
delim[1] = '\0';
|
||||
|
||||
@@ -302,17 +289,15 @@ cutfields (SHELL_VAR *v, char *line, struct cutop *ops)
|
||||
{
|
||||
free (fields);
|
||||
if (ops->flags & SFLAG)
|
||||
return ind;
|
||||
if (v)
|
||||
{
|
||||
return 0;
|
||||
#if defined (ARRAY_VARS)
|
||||
bind_array_element (v, ind, line, 0);
|
||||
#endif
|
||||
ind++;
|
||||
}
|
||||
if (v)
|
||||
bind_array_element (v, ind, line, 0);
|
||||
else
|
||||
#endif
|
||||
printf ("%s\n", line);
|
||||
return ind;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
bmap = xmalloc (nf + 1);
|
||||
@@ -332,57 +317,61 @@ cutfields (SHELL_VAR *v, char *line, struct cutop *ops)
|
||||
bmap[i] = 1;
|
||||
}
|
||||
|
||||
for (i = 1, b = 0; b < nf; b++)
|
||||
/* build the string and assign or print it all at once */
|
||||
buf = xmalloc (strlen (line) + 1);
|
||||
|
||||
for (i = 1, n = b = 0; b < nf; b++)
|
||||
{
|
||||
if (bmap[b] == 0)
|
||||
continue;
|
||||
#if defined (ARRAY_VARS)
|
||||
if (v)
|
||||
{
|
||||
bind_array_element (v, ind, fields[b], 0);
|
||||
ind++;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
if (i == 0)
|
||||
putchar (ops->delim);
|
||||
printf ("%s", fields[b]);
|
||||
}
|
||||
if (i == 0)
|
||||
buf[n++] = ops->delim;
|
||||
strcpy (buf + n, fields[b]);
|
||||
n += STRLEN (fields[b]);
|
||||
i = 0;
|
||||
}
|
||||
if (v == 0)
|
||||
putchar ('\n');
|
||||
|
||||
return nf;
|
||||
#if defined (ARRAY_VARS)
|
||||
if (v)
|
||||
bind_array_element (v, ind, buf, 0);
|
||||
else
|
||||
#endif
|
||||
printf ("%s\n", buf);
|
||||
|
||||
free (bmap);
|
||||
free (buf);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int
|
||||
cutline (SHELL_VAR *v, char *line, struct cutop *ops)
|
||||
cutline (SHELL_VAR *v, arrayind_t ind, char *line, struct cutop *ops)
|
||||
{
|
||||
int rval;
|
||||
|
||||
if (ops->flags & BFLAG)
|
||||
rval = cutbytes (v, line, ops);
|
||||
rval = cutbytes (v, ind, line, ops);
|
||||
else if (ops->flags & CFLAG)
|
||||
rval = cutchars (v, line, ops);
|
||||
rval = cutchars (v, ind, line, ops);
|
||||
else
|
||||
rval = cutfields (v, line, ops);
|
||||
rval = cutfields (v, ind, line, ops);
|
||||
|
||||
return (rval >= 0 ? EXECUTION_SUCCESS : EXECUTION_FAILURE);
|
||||
return (rval);
|
||||
}
|
||||
|
||||
static int
|
||||
cutfile (SHELL_VAR *v, WORD_LIST *list, struct cutop *ops)
|
||||
{
|
||||
int fd, unbuffered_read;
|
||||
int fd, unbuffered_read, r;
|
||||
char *line, *b;
|
||||
size_t llen;
|
||||
WORD_LIST *l;
|
||||
ssize_t n;
|
||||
arrayind_t ind;
|
||||
|
||||
line = 0;
|
||||
llen = 0;
|
||||
ind = 0;
|
||||
|
||||
l = list;
|
||||
do
|
||||
@@ -409,7 +398,8 @@ cutfile (SHELL_VAR *v, WORD_LIST *list, struct cutop *ops)
|
||||
QUIT;
|
||||
if (line[n] == '\n')
|
||||
line[n] = '\0'; /* cutline expects no newline terminator */
|
||||
cutline (v, line, ops); /* can modify line */
|
||||
r = cutline (v, ind, line, ops); /* can modify line */
|
||||
ind += r;
|
||||
}
|
||||
if (fd > 0)
|
||||
close (fd);
|
||||
@@ -534,7 +524,8 @@ cut_internal (int which, WORD_LIST *list)
|
||||
|
||||
/* we implement cut as a builtin with a cutfile() function that opens each
|
||||
filename in LIST as a filename (or `-' for stdin) and runs cutline on
|
||||
every line in the file. */
|
||||
every line in the file. lcut just runs cutline on the first string in
|
||||
LIST. */
|
||||
if (which == 0)
|
||||
{
|
||||
cutstring = list->word->word;
|
||||
@@ -543,7 +534,9 @@ cut_internal (int which, WORD_LIST *list)
|
||||
free (poslist);
|
||||
return (EXECUTION_SUCCESS);
|
||||
}
|
||||
rval = cutline (v, cutstring, &op);
|
||||
rval = cutline (v, 0, cutstring, &op);
|
||||
/* Normalize rval, because cutline returns an increment for ind */
|
||||
rval = (rval >= 0 ? EXECUTION_SUCCESS : EXECUTION_FAILURE);
|
||||
}
|
||||
else
|
||||
rval = cutfile (v, list, &op);
|
||||
@@ -568,8 +561,8 @@ char *lcut_doc[] = {
|
||||
"Extract selected fields from a string.",
|
||||
"",
|
||||
"Select portions of LINE (as specified by LIST) and assign them to",
|
||||
"elements of the indexed array ARRAY starting at index 0, or write",
|
||||
"them to the standard output if -a is not specified.",
|
||||
"element 0 of the indexed array ARRAY, or write them to the standard",
|
||||
"output if -a is not specified.",
|
||||
"",
|
||||
"Items specified by LIST are either column positions or fields delimited",
|
||||
"by a special character, and are described more completely in cut(1).",
|
||||
@@ -577,6 +570,11 @@ char *lcut_doc[] = {
|
||||
"Columns correspond to bytes (-b), characters (-c), or fields (-f). The",
|
||||
"field delimiter is specified by -d (default TAB). Column numbering",
|
||||
"starts at 1.",
|
||||
"",
|
||||
"When -a is specified, lcut assigns the selected portions of LINE",
|
||||
"to index 0 of ARRAY. The string lcut assigns to ARRAY is identical",
|
||||
"to the string it would write to the standard output if -a were not",
|
||||
"supplied.",
|
||||
(char *)NULL
|
||||
};
|
||||
|
||||
@@ -593,7 +591,8 @@ char *cut_doc[] = {
|
||||
"Extract selected fields from each line of a file.",
|
||||
"",
|
||||
"Select portions of each line (as specified by LIST) from each FILE",
|
||||
"and write them to the standard output. cut reads from the standard",
|
||||
"and write them to the standard output, or assign them to the indexed",
|
||||
"array ARRAY starting at index 0. cut reads from the standard",
|
||||
"input if no FILE arguments are specified or if a FILE argument is a",
|
||||
"single hyphen.",
|
||||
"",
|
||||
@@ -603,6 +602,11 @@ char *cut_doc[] = {
|
||||
"Columns correspond to bytes (-b), characters (-c), or fields (-f). The",
|
||||
"field delimiter is specified by -d (default TAB). Column numbering",
|
||||
"starts at 1.",
|
||||
"",
|
||||
"When -a is specified, cut assigns the output from each line it",
|
||||
"processes to successive elements of ARRAY, beginning at 0. The",
|
||||
"strings cut assigns to ARRAY are identical to the strings it would",
|
||||
"write to the standard output if -a were not supplied.",
|
||||
(char *)NULL
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,616 @@
|
||||
/* cut,lcut - extract specified fields from a line and assign them to an array
|
||||
or print them to the standard output */
|
||||
|
||||
/*
|
||||
Copyright (C) 2020,2022,2023 Free Software Foundation, Inc.
|
||||
|
||||
Bash is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
Bash is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with Bash. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* See Makefile for compilation details. */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#if defined (HAVE_UNISTD_H)
|
||||
# include <unistd.h>
|
||||
#endif
|
||||
#include "bashansi.h"
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include <errno.h>
|
||||
|
||||
#include "loadables.h"
|
||||
#include "shmbutil.h"
|
||||
|
||||
#define CUT_ARRAY_DEFAULT "CUTFIELDS"
|
||||
|
||||
#define NOPOS -2 /* sentinel for unset startpos/endpos */
|
||||
|
||||
#define BOL 0
|
||||
#define EOL INT_MAX
|
||||
#define NORANGE -1 /* just a position, no range */
|
||||
|
||||
#define BFLAG (1 << 0)
|
||||
#define CFLAG (1 << 1)
|
||||
#define DFLAG (1 << 2)
|
||||
#define FFLAG (1 << 3)
|
||||
#define SFLAG (1 << 4)
|
||||
|
||||
struct cutpos
|
||||
{
|
||||
int startpos, endpos; /* zero-based, correction done in getlist() */
|
||||
};
|
||||
|
||||
struct cutop
|
||||
{
|
||||
int flags;
|
||||
int delim;
|
||||
int npos;
|
||||
struct cutpos *poslist;
|
||||
};
|
||||
|
||||
static int
|
||||
poscmp (const void *a, const void *b)
|
||||
{
|
||||
struct cutpos *p1, *p2;
|
||||
|
||||
p1 = (struct cutpos *)a;
|
||||
p2 = (struct cutpos *)b;
|
||||
return (p1->startpos - p2->startpos);
|
||||
}
|
||||
|
||||
static int
|
||||
getlist (char *arg, struct cutpos **opp)
|
||||
{
|
||||
char *ntok, *ltok, *larg;
|
||||
int s, e;
|
||||
intmax_t num;
|
||||
struct cutpos *poslist;
|
||||
int npos, nsize;
|
||||
|
||||
poslist = 0;
|
||||
nsize = npos = 0;
|
||||
s = e = 0;
|
||||
larg = arg;
|
||||
while (ltok = strsep (&larg, ","))
|
||||
{
|
||||
if (*ltok == 0)
|
||||
continue;
|
||||
|
||||
ntok = strsep (<ok, "-");
|
||||
if (*ntok == 0)
|
||||
s = BOL;
|
||||
else
|
||||
{
|
||||
if (valid_number (ntok, &num) == 0 || (int)num != num || num <= 0)
|
||||
{
|
||||
builtin_error ("%s: invalid list value", ntok);
|
||||
*opp = poslist;
|
||||
return -1;
|
||||
}
|
||||
s = num;
|
||||
s--; /* fields are 1-based */
|
||||
}
|
||||
if (ltok == 0)
|
||||
e = NORANGE;
|
||||
else if (*ltok == 0)
|
||||
e = EOL;
|
||||
else
|
||||
{
|
||||
if (valid_number (ltok, &num) == 0 || (int)num != num || num <= 0)
|
||||
{
|
||||
builtin_error ("%s: invalid list value", ltok);
|
||||
*opp = poslist;
|
||||
return -1;
|
||||
}
|
||||
e = num;
|
||||
e--;
|
||||
if (e == s)
|
||||
e = NORANGE;
|
||||
}
|
||||
|
||||
if (npos == nsize)
|
||||
{
|
||||
nsize += 4;
|
||||
poslist = (struct cutpos *)xrealloc (poslist, nsize * sizeof (struct cutpos));
|
||||
}
|
||||
poslist[npos].startpos = s;
|
||||
poslist[npos].endpos = e;
|
||||
npos++;
|
||||
}
|
||||
if (npos == 0)
|
||||
{
|
||||
builtin_error ("missing list of positions");
|
||||
*opp = poslist;
|
||||
return -1;
|
||||
}
|
||||
|
||||
qsort (poslist, npos, sizeof(poslist[0]), poscmp);
|
||||
*opp = poslist;
|
||||
|
||||
return npos;
|
||||
}
|
||||
|
||||
static int
|
||||
cutbytes (SHELL_VAR *v, char *line, struct cutop *ops)
|
||||
{
|
||||
arrayind_t ind;
|
||||
char *buf, *bmap;
|
||||
size_t llen;
|
||||
int i, b, n, s, e;
|
||||
|
||||
llen = strlen (line);
|
||||
buf = xmalloc (llen + 1);
|
||||
bmap = xmalloc (llen + 1);
|
||||
memset (bmap, 0, llen);
|
||||
|
||||
for (n = 0; n < ops->npos; n++)
|
||||
{
|
||||
s = ops->poslist[n].startpos; /* no translation needed yet */
|
||||
e = ops->poslist[n].endpos;
|
||||
if (e == NORANGE)
|
||||
e = s;
|
||||
else if (e == EOL || e >= llen)
|
||||
e = llen - 1;
|
||||
/* even if a column is specified multiple times, it will only be printed
|
||||
once */
|
||||
for (i = s; i <= e; i++)
|
||||
bmap[i] = 1;
|
||||
}
|
||||
|
||||
b = 0;
|
||||
for (i = 0; i < llen; i++)
|
||||
if (bmap[i])
|
||||
buf[b++] = line[i];
|
||||
buf[b] = 0;
|
||||
|
||||
if (v)
|
||||
{
|
||||
ind = 0;
|
||||
#if defined (ARRAY_VARS)
|
||||
bind_array_element (v, ind, buf, 0);
|
||||
#endif
|
||||
ind++;
|
||||
}
|
||||
else
|
||||
printf ("%s\n", buf);
|
||||
|
||||
free (buf);
|
||||
free (bmap);
|
||||
|
||||
return ind;
|
||||
}
|
||||
|
||||
static int
|
||||
cutchars (SHELL_VAR *v, char *line, struct cutop *ops)
|
||||
{
|
||||
arrayind_t ind;
|
||||
char *buf, *bmap;
|
||||
wchar_t *wbuf, *wb2;
|
||||
size_t llen, wlen;
|
||||
int i, b, n, s, e;
|
||||
|
||||
if (MB_CUR_MAX == 1)
|
||||
return (cutbytes (v, line, ops));
|
||||
if (locale_utf8locale && utf8_mbsmbchar (line) == 0)
|
||||
return (cutbytes (v, line, ops));
|
||||
|
||||
llen = strlen (line);
|
||||
wbuf = (wchar_t *)xmalloc ((llen + 1) * sizeof (wchar_t));
|
||||
|
||||
wlen = mbstowcs (wbuf, line, llen);
|
||||
if (MB_INVALIDCH (wlen))
|
||||
{
|
||||
free (wbuf);
|
||||
return (cutbytes (v, line, ops));
|
||||
}
|
||||
|
||||
bmap = xmalloc (llen + 1);
|
||||
memset (bmap, 0, llen);
|
||||
|
||||
for (n = 0; n < ops->npos; n++)
|
||||
{
|
||||
s = ops->poslist[n].startpos; /* no translation needed yet */
|
||||
e = ops->poslist[n].endpos;
|
||||
if (e == NORANGE)
|
||||
e = s;
|
||||
else if (e == EOL || e >= wlen)
|
||||
e = wlen - 1;
|
||||
/* even if a column is specified multiple times, it will only be printed
|
||||
once */
|
||||
for (i = s; i <= e; i++)
|
||||
bmap[i] = 1;
|
||||
}
|
||||
|
||||
wb2 = (wchar_t *)xmalloc ((wlen + 1) * sizeof (wchar_t));
|
||||
b = 0;
|
||||
for (i = 0; i < wlen; i++)
|
||||
if (bmap[i])
|
||||
wb2[b++] = wbuf[i];
|
||||
wb2[b] = 0;
|
||||
|
||||
free (wbuf);
|
||||
|
||||
buf = bmap;
|
||||
n = wcstombs (buf, wb2, llen);
|
||||
|
||||
if (v)
|
||||
{
|
||||
ind = 0;
|
||||
#if defined (ARRAY_VARS)
|
||||
bind_array_element (v, ind, buf, 0);
|
||||
#endif
|
||||
ind++;
|
||||
}
|
||||
else
|
||||
printf ("%s\n", buf);
|
||||
|
||||
free (buf);
|
||||
free (wb2);
|
||||
|
||||
return ind;
|
||||
}
|
||||
|
||||
/* The basic strategy is to cut the line into fields using strsep, populate
|
||||
an array of fields from 0..nf, then select those fields using the same
|
||||
bitmap approach as cut{bytes,chars} and assign them to the array variable
|
||||
V or print them on stdout. This function obeys SFLAG. */
|
||||
static int
|
||||
cutfields (SHELL_VAR *v, char *line, struct cutop *ops)
|
||||
{
|
||||
arrayind_t ind;
|
||||
char *buf, *bmap, *field, **fields, delim[2];
|
||||
size_t llen, fsize;
|
||||
int i, b, n, s, e, nf;
|
||||
|
||||
ind = 0;
|
||||
|
||||
delim[0] = ops->delim;
|
||||
delim[1] = '\0';
|
||||
|
||||
fields = 0;
|
||||
nf = 0;
|
||||
fsize = 0;
|
||||
|
||||
field = buf = line;
|
||||
do
|
||||
{
|
||||
field = strsep (&buf, delim); /* destructive */
|
||||
if (nf == fsize)
|
||||
{
|
||||
fsize += 8;
|
||||
fields = xrealloc (fields, fsize * sizeof (char *));
|
||||
}
|
||||
fields[nf] = field;
|
||||
if (field)
|
||||
nf++;
|
||||
}
|
||||
while (field);
|
||||
|
||||
if (nf == 1)
|
||||
{
|
||||
free (fields);
|
||||
if (ops->flags & SFLAG)
|
||||
return ind;
|
||||
if (v)
|
||||
{
|
||||
#if defined (ARRAY_VARS)
|
||||
bind_array_element (v, ind, line, 0);
|
||||
#endif
|
||||
ind++;
|
||||
}
|
||||
else
|
||||
printf ("%s\n", line);
|
||||
return ind;
|
||||
}
|
||||
|
||||
bmap = xmalloc (nf + 1);
|
||||
memset (bmap, 0, nf);
|
||||
|
||||
for (n = 0; n < ops->npos; n++)
|
||||
{
|
||||
s = ops->poslist[n].startpos; /* no translation needed yet */
|
||||
e = ops->poslist[n].endpos;
|
||||
if (e == NORANGE)
|
||||
e = s;
|
||||
else if (e == EOL || e >= nf)
|
||||
e = nf - 1;
|
||||
/* even if a column is specified multiple times, it will only be printed
|
||||
once */
|
||||
for (i = s; i <= e; i++)
|
||||
bmap[i] = 1;
|
||||
}
|
||||
|
||||
for (i = 1, b = 0; b < nf; b++)
|
||||
{
|
||||
if (bmap[b] == 0)
|
||||
continue;
|
||||
#if defined (ARRAY_VARS)
|
||||
if (v)
|
||||
{
|
||||
bind_array_element (v, ind, fields[b], 0);
|
||||
ind++;
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
if (i == 0)
|
||||
putchar (ops->delim);
|
||||
printf ("%s", fields[b]);
|
||||
}
|
||||
i = 0;
|
||||
}
|
||||
if (v == 0)
|
||||
putchar ('\n');
|
||||
|
||||
return nf;
|
||||
}
|
||||
|
||||
static int
|
||||
cutline (SHELL_VAR *v, char *line, struct cutop *ops)
|
||||
{
|
||||
int rval;
|
||||
|
||||
if (ops->flags & BFLAG)
|
||||
rval = cutbytes (v, line, ops);
|
||||
else if (ops->flags & CFLAG)
|
||||
rval = cutchars (v, line, ops);
|
||||
else
|
||||
rval = cutfields (v, line, ops);
|
||||
|
||||
return (rval >= 0 ? EXECUTION_SUCCESS : EXECUTION_FAILURE);
|
||||
}
|
||||
|
||||
static int
|
||||
cutfile (SHELL_VAR *v, WORD_LIST *list, struct cutop *ops)
|
||||
{
|
||||
int fd, unbuffered_read;
|
||||
char *line, *b;
|
||||
size_t llen;
|
||||
WORD_LIST *l;
|
||||
ssize_t n;
|
||||
|
||||
line = 0;
|
||||
llen = 0;
|
||||
|
||||
l = list;
|
||||
do
|
||||
{
|
||||
/* for each file */
|
||||
if (l == 0 || (l->word->word[0] == '-' && l->word->word[1] == '\0'))
|
||||
fd = 0;
|
||||
else
|
||||
fd = open (l->word->word, O_RDONLY);
|
||||
if (fd < 0)
|
||||
{
|
||||
file_error (l->word->word);
|
||||
return (EXECUTION_FAILURE);
|
||||
}
|
||||
|
||||
#ifndef __CYGWIN__
|
||||
unbuffered_read = (lseek (fd, 0L, SEEK_CUR) < 0) && (errno == ESPIPE);
|
||||
#else
|
||||
unbuffered_read = 1;
|
||||
#endif
|
||||
|
||||
while ((n = zgetline (fd, &line, &llen, '\n', unbuffered_read)) != -1)
|
||||
{
|
||||
QUIT;
|
||||
if (line[n] == '\n')
|
||||
line[n] = '\0'; /* cutline expects no newline terminator */
|
||||
cutline (v, line, ops); /* can modify line */
|
||||
}
|
||||
if (fd > 0)
|
||||
close (fd);
|
||||
|
||||
QUIT;
|
||||
if (l)
|
||||
l = l->next;
|
||||
}
|
||||
while (l);
|
||||
|
||||
free (line);
|
||||
return EXECUTION_SUCCESS;
|
||||
}
|
||||
|
||||
#define OPTSET(x) ((cutflags & (x)) ? 1 : 0)
|
||||
|
||||
static int
|
||||
cut_internal (int which, WORD_LIST *list)
|
||||
{
|
||||
int opt, rval, cutflags, delim, npos;
|
||||
char *array_name, *cutstring, *list_arg;
|
||||
SHELL_VAR *v;
|
||||
struct cutop op;
|
||||
struct cutpos *poslist;
|
||||
|
||||
v = 0;
|
||||
rval = EXECUTION_SUCCESS;
|
||||
|
||||
cutflags = 0;
|
||||
array_name = 0;
|
||||
list_arg = 0;
|
||||
delim = '\t';
|
||||
|
||||
reset_internal_getopt ();
|
||||
while ((opt = internal_getopt (list, "a:b:c:d:f:sn")) != -1)
|
||||
{
|
||||
switch (opt)
|
||||
{
|
||||
case 'a':
|
||||
#if defined (ARRAY_VARS)
|
||||
array_name = list_optarg;
|
||||
break;
|
||||
#else
|
||||
builtin_error ("arrays not available");
|
||||
return (EX_USAGE);
|
||||
#endif
|
||||
case 'b':
|
||||
cutflags |= BFLAG;
|
||||
list_arg = list_optarg;
|
||||
break;
|
||||
case 'c':
|
||||
cutflags |= CFLAG;
|
||||
list_arg = list_optarg;
|
||||
break;
|
||||
case 'd':
|
||||
cutflags |= DFLAG;
|
||||
delim = list_optarg[0];
|
||||
if (delim == 0 || list_optarg[1])
|
||||
{
|
||||
builtin_error ("delimiter must be a single non-null character");
|
||||
return (EX_USAGE);
|
||||
}
|
||||
break;
|
||||
case 'f':
|
||||
cutflags |= FFLAG;
|
||||
list_arg = list_optarg;
|
||||
break;
|
||||
case 'n':
|
||||
break;
|
||||
case 's':
|
||||
cutflags |= SFLAG;
|
||||
break;
|
||||
CASE_HELPOPT;
|
||||
default:
|
||||
builtin_usage ();
|
||||
return (EX_USAGE);
|
||||
}
|
||||
}
|
||||
list = loptend;
|
||||
|
||||
if (array_name && (valid_identifier (array_name) == 0))
|
||||
{
|
||||
sh_invalidid (array_name);
|
||||
return (EXECUTION_FAILURE);
|
||||
}
|
||||
|
||||
if (list == 0 && which == 0)
|
||||
{
|
||||
builtin_error ("string argument required");
|
||||
return (EX_USAGE);
|
||||
}
|
||||
|
||||
/* options are mutually exclusive and one is required */
|
||||
if ((OPTSET (BFLAG) + OPTSET (CFLAG) + OPTSET (FFLAG)) != 1)
|
||||
{
|
||||
builtin_usage ();
|
||||
return (EX_USAGE);
|
||||
}
|
||||
|
||||
if ((npos = getlist (list_arg, &poslist)) < 0)
|
||||
{
|
||||
free (poslist);
|
||||
return (EXECUTION_FAILURE);
|
||||
}
|
||||
|
||||
#if defined (ARRAY_VARS)
|
||||
if (array_name)
|
||||
{
|
||||
v = builtin_find_indexed_array (array_name, 1);
|
||||
if (v == 0)
|
||||
{
|
||||
free (poslist);
|
||||
return (EXECUTION_FAILURE);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
op.flags = cutflags;
|
||||
op.delim = delim;
|
||||
op.npos = npos;
|
||||
op.poslist = poslist;
|
||||
|
||||
/* we implement cut as a builtin with a cutfile() function that opens each
|
||||
filename in LIST as a filename (or `-' for stdin) and runs cutline on
|
||||
every line in the file. */
|
||||
if (which == 0)
|
||||
{
|
||||
cutstring = list->word->word;
|
||||
if (cutstring == 0 || *cutstring == 0)
|
||||
{
|
||||
free (poslist);
|
||||
return (EXECUTION_SUCCESS);
|
||||
}
|
||||
rval = cutline (v, cutstring, &op);
|
||||
}
|
||||
else
|
||||
rval = cutfile (v, list, &op);
|
||||
|
||||
free (poslist);
|
||||
return (rval);
|
||||
}
|
||||
|
||||
int
|
||||
lcut_builtin (WORD_LIST *list)
|
||||
{
|
||||
return (cut_internal (0, list));
|
||||
}
|
||||
|
||||
int
|
||||
cut_builtin (WORD_LIST *list)
|
||||
{
|
||||
return (cut_internal (1, list));
|
||||
}
|
||||
|
||||
char *lcut_doc[] = {
|
||||
"Extract selected fields from a string.",
|
||||
"",
|
||||
"Select portions of LINE (as specified by LIST) and assign them to",
|
||||
"elements of the indexed array ARRAY starting at index 0, or write",
|
||||
"them to the standard output if -a is not specified.",
|
||||
"",
|
||||
"Items specified by LIST are either column positions or fields delimited",
|
||||
"by a special character, and are described more completely in cut(1).",
|
||||
"",
|
||||
"Columns correspond to bytes (-b), characters (-c), or fields (-f). The",
|
||||
"field delimiter is specified by -d (default TAB). Column numbering",
|
||||
"starts at 1.",
|
||||
(char *)NULL
|
||||
};
|
||||
|
||||
struct builtin lcut_struct = {
|
||||
"lcut", /* builtin name */
|
||||
lcut_builtin, /* function implementing the builtin */
|
||||
BUILTIN_ENABLED, /* initial flags for builtin */
|
||||
lcut_doc, /* array of long documentation strings. */
|
||||
"lcut [-a ARRAY] [-b LIST] [-c LIST] [-f LIST] [-d CHAR] [-sn] line", /* usage synopsis; becomes short_doc */
|
||||
0 /* reserved for internal use */
|
||||
};
|
||||
|
||||
char *cut_doc[] = {
|
||||
"Extract selected fields from each line of a file.",
|
||||
"",
|
||||
"Select portions of each line (as specified by LIST) from each FILE",
|
||||
"and write them to the standard output. cut reads from the standard",
|
||||
"input if no FILE arguments are specified or if a FILE argument is a",
|
||||
"single hyphen.",
|
||||
"",
|
||||
"Items specified by LIST are either column positions or fields delimited",
|
||||
"by a special character, and are described more completely in cut(1).",
|
||||
"",
|
||||
"Columns correspond to bytes (-b), characters (-c), or fields (-f). The",
|
||||
"field delimiter is specified by -d (default TAB). Column numbering",
|
||||
"starts at 1.",
|
||||
(char *)NULL
|
||||
};
|
||||
|
||||
struct builtin cut_struct = {
|
||||
"cut", /* builtin name */
|
||||
cut_builtin, /* function implementing the builtin */
|
||||
BUILTIN_ENABLED, /* initial flags for builtin */
|
||||
cut_doc, /* array of long documentation strings. */
|
||||
"cut [-a ARRAY] [-b LIST] [-c LIST] [-f LIST] [-d CHAR] [-sn] [file ...]", /* usage synopsis; becomes short_doc */
|
||||
0 /* reserved for internal use */
|
||||
};
|
||||
@@ -5536,6 +5536,10 @@ execute_subshell_builtin_or_function (WORD_LIST *words, REDIRECT *redirects,
|
||||
|
||||
if (result == EXITPROG || result == EXITBLTIN)
|
||||
subshell_exit (last_command_exit_value);
|
||||
#if 0 /* TAG:bash-5.4 https://savannah.gnu.org/support/?109840 6/5/2025 */
|
||||
else if (result == ERREXIT)
|
||||
subshell_exit (last_command_exit_value ? last_command_exit_value : EXECUTION_FAILURE);
|
||||
#endif
|
||||
else if (result)
|
||||
subshell_exit (EXECUTION_FAILURE);
|
||||
else if (funcvalue)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* histexpand.c -- history expansion. */
|
||||
|
||||
/* Copyright (C) 1989-2021,2023-2024 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1989-2021,2023-2025 Free Software Foundation, Inc.
|
||||
|
||||
This file contains the GNU History Library (History), a set of
|
||||
routines for managing the text of previously typed lines.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* history.c -- standalone history library */
|
||||
|
||||
/* Copyright (C) 1989-2024 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1989-2025 Free Software Foundation, Inc.
|
||||
|
||||
This file contains the GNU History Library (History), a set of
|
||||
routines for managing the text of previously typed lines.
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
/* */
|
||||
/* **************************************************************** */
|
||||
|
||||
/* Copyright (C) 1987-2021,2023 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2021,2023,2025 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* readline.c -- a general facility for reading lines of input
|
||||
with emacs style editing and completion. */
|
||||
|
||||
/* Copyright (C) 1987-2024 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2025 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* rlmbutil.h -- utility functions for multibyte characters. */
|
||||
|
||||
/* Copyright (C) 2001-2024 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2001-2025 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* rltty.c -- functions to prepare and restore the terminal for readline's
|
||||
use. */
|
||||
|
||||
/* Copyright (C) 1992-2023 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1992-2025 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* rlwinsize.h -- an attempt to isolate some of the system-specific defines
|
||||
for `struct winsize' and TIOCGWINSZ. */
|
||||
|
||||
/* Copyright (C) 1997-2009 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1997-2025 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* search.c - code for non-incremental searching in emacs and vi modes. */
|
||||
|
||||
/* Copyright (C) 1992-2024 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1992-2025 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* shell.c -- readline utility functions that are normally provided by
|
||||
bash when readline is linked as part of the shell. */
|
||||
|
||||
/* Copyright (C) 1997-2009,2017,2021 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1997-2025 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/* terminal.c -- controlling the terminal with termcap. */
|
||||
|
||||
/* Copyright (C) 1996-2023 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1996-2025 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
/* util.c -- readline utility functions */
|
||||
|
||||
/* Copyright (C) 1987-2017 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 1987-2025 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of the GNU Readline Library (Readline), a library
|
||||
for reading lines of text with interactive input and history editing.
|
||||
|
||||
Binary file not shown.
+602
-1255
File diff suppressed because it is too large
Load Diff
Binary file not shown.
+168
-358
File diff suppressed because it is too large
Load Diff
+4
-4
@@ -574,13 +574,13 @@ declare -ai a=([0]="0" [1]="16")
|
||||
3
|
||||
3
|
||||
5
|
||||
/usr/local/build/bash/bash-current/bash: line 1: a[k]: unbound variable
|
||||
bash: line 1: a[k]: unbound variable
|
||||
ok 1
|
||||
/usr/local/build/bash/bash-current/bash: line 1: r0: unbound variable
|
||||
bash: line 1: r0: unbound variable
|
||||
ok 2
|
||||
/usr/local/build/bash/bash-current/bash: line 1: r: unbound variable
|
||||
bash: line 1: r: unbound variable
|
||||
ok 3
|
||||
/usr/local/build/bash/bash-current/bash: line 1: k: unbound variable
|
||||
bash: line 1: k: unbound variable
|
||||
ok 4
|
||||
ok 5
|
||||
ok 6
|
||||
|
||||
+21
-8
@@ -1,12 +1,25 @@
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# issues with nounset and references to nameref variables whose value
|
||||
# contains an unset variable
|
||||
|
||||
$THIS_SH -uc 'a=() k=; "${a[k]}"' || echo ok 1
|
||||
$THIS_SH -uc 'declare -n r0=b ; : "$r0"' || echo ok 2
|
||||
$THIS_SH -uc 'a=() k=; declare -n r='a[k]' ; : "$r"' || echo ok 3
|
||||
$THIS_SH -uc 'declare -n r='a[k]' ; : "$r"' || echo ok 4
|
||||
$THIS_SH -uc 'a=() k=; "${a[k]}"' bash || echo ok 1
|
||||
$THIS_SH -uc 'declare -n r0=b ; : "$r0"' bash || echo ok 2
|
||||
$THIS_SH -uc 'a=() k=; declare -n r='a[k]' ; : "$r"' bash || echo ok 3
|
||||
$THIS_SH -uc 'declare -n r='a[k]' ; : "$r"' bash || echo ok 4
|
||||
|
||||
$THIS_SH -uc 'a=() k=; declare -n r='a[@]' ; : "$r"' && echo ok 5
|
||||
$THIS_SH -uc 'declare -n r='a[@]' ; : "$r"' && echo ok 6
|
||||
$THIS_SH -uc 'a=() k=; declare -n r='a[*]' ; : "$r"' && echo ok 7
|
||||
$THIS_SH -uc 'declare -n r='a[*]' ; : "$r"' && echo ok 8
|
||||
$THIS_SH -uc 'a=() k=; declare -n r='a[@]' ; : "$r"' bash && echo ok 5
|
||||
$THIS_SH -uc 'declare -n r='a[@]' ; : "$r"' bash && echo ok 6
|
||||
$THIS_SH -uc 'a=() k=; declare -n r='a[*]' ; : "$r"' bash && echo ok 7
|
||||
$THIS_SH -uc 'declare -n r='a[*]' ; : "$r"' bash && echo ok 8
|
||||
|
||||
Reference in New Issue
Block a user