fix cosmetic error when printing if commands containing here-documents in the body; compiling -DSTRICT_POSIX now forces posix-mode shells to expand redirections before assignment statements preceding simple commands

This commit is contained in:
Chet Ramey
2026-03-03 11:14:10 -05:00
parent 044c1acc91
commit d0b41c2c5f
60 changed files with 526 additions and 7259 deletions
+145 -138
View File
@@ -1,9 +1,9 @@
This is bash.info, produced by makeinfo version 7.2 from bashref.texi.
This text is a brief description of the features that are present in the
Bash shell (version 5.3, 14 January 2026).
Bash shell (version 5.3, 27 February 2026).
This is Edition 5.3, last updated 14 January 2026, of The GNU Bash
This is Edition 5.3, last updated 27 February 2026, of The GNU Bash
Reference Manual, for Bash, Version 5.3.
Copyright © 1988-2026 Free Software Foundation, Inc.
@@ -26,10 +26,10 @@ Bash Features
*************
This text is a brief description of the features that are present in the
Bash shell (version 5.3, 14 January 2026). The Bash home page is
Bash shell (version 5.3, 27 February 2026). The Bash home page is
<http://www.gnu.org/software/bash/>.
This is Edition 5.3, last updated 14 January 2026, of The GNU Bash
This is Edition 5.3, last updated 27 February 2026, of The GNU Bash
Reference Manual, for Bash, Version 5.3.
Bash contains features that appear in other popular shells, and some
@@ -7774,7 +7774,8 @@ startup files.
builtins.
12. Tilde expansion is only performed on assignments preceding a
command name, rather than on all assignment statements on the line.
command name, rather than on all assignment statements on the line,
unless the command is a declaration command.
13. While variable indirection is available, it may not be applied to
the # and ? special parameters.
@@ -8062,7 +8063,13 @@ default even when in POSIX mode. Specifically:
entries if FCEDIT is unset, rather than defaulting directly to
ed. fc uses ed if EDITOR is unset.
3. As noted above, Bash requires the xpg_echo option to be enabled
3. Bash does not perform redirections before expanding variable
assignments preceding a simple command; it does not allow the
redirections access to the results of the variable assignments, but
any side effects of expanding the redirections take place first.
If compiled in strict posix mode, Bash performs redirections first.
4. 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
@@ -13728,138 +13735,138 @@ D.5 Concept Index

Tag Table:
Node: Top899
Node: Introduction2838
Node: What is Bash?3051
Node: What is a shell?4184
Node: Definitions6794
Node: Basic Shell Features10121
Node: Shell Syntax11345
Node: Shell Operation12372
Node: Quoting13663
Node: Escape Character15001
Node: Single Quotes15536
Node: Double Quotes15885
Node: ANSI-C Quoting17230
Node: Locale Translation18624
Node: Creating Internationalized Scripts20027
Node: Comments24225
Node: Shell Commands24992
Node: Reserved Words25931
Node: Simple Commands27074
Node: Pipelines27736
Node: Lists30992
Node: Compound Commands32941
Node: Looping Constructs33950
Node: Conditional Constructs36499
Node: Command Grouping51636
Node: Coprocesses53128
Node: GNU Parallel55814
Node: Shell Functions56732
Node: Shell Parameters65180
Node: Positional Parameters70081
Node: Special Parameters71171
Node: Shell Expansions74632
Node: Brace Expansion76821
Node: Tilde Expansion80157
Node: Shell Parameter Expansion83112
Node: Command Substitution103759
Node: Arithmetic Expansion107610
Node: Process Substitution108786
Node: Word Splitting109894
Node: Filename Expansion112338
Node: Pattern Matching115562
Node: Quote Removal121328
Node: Redirections121632
Node: Executing Commands131888
Node: Simple Command Expansion132555
Node: Command Search and Execution134663
Node: Command Execution Environment137107
Node: Environment140633
Node: Exit Status142536
Node: Signals144595
Node: Shell Scripts149543
Node: Shell Builtin Commands152841
Node: Bourne Shell Builtins155182
Node: Bash Builtins181901
Node: Modifying Shell Behavior219637
Node: The Set Builtin219979
Node: The Shopt Builtin231973
Node: Special Builtins249026
Node: Shell Variables250015
Node: Bourne Shell Variables250449
Node: Bash Variables252957
Node: Bash Features292241
Node: Invoking Bash293255
Node: Bash Startup Files299839
Node: Interactive Shells305081
Node: What is an Interactive Shell?305489
Node: Is this Shell Interactive?306151
Node: Interactive Shell Behavior306975
Node: Bash Conditional Expressions310736
Node: Shell Arithmetic316153
Node: Aliases319480
Node: Arrays322614
Node: The Directory Stack330317
Node: Directory Stack Builtins331114
Node: Controlling the Prompt335559
Node: The Restricted Shell338443
Node: Bash POSIX Mode341536
Node: Shell Compatibility Mode360952
Node: Job Control369959
Node: Job Control Basics370416
Node: Job Control Builtins376784
Node: Job Control Variables383572
Node: Command Line Editing384803
Node: Introduction and Notation386506
Node: Readline Interaction388858
Node: Readline Bare Essentials390046
Node: Readline Movement Commands391854
Node: Readline Killing Commands392850
Node: Readline Arguments394873
Node: Searching395963
Node: Readline Init File398206
Node: Readline Init File Syntax399509
Node: Conditional Init Constructs426460
Node: Sample Init File430845
Node: Bindable Readline Commands433965
Node: Commands For Moving435503
Node: Commands For History437967
Node: Commands For Text443358
Node: Commands For Killing447483
Node: Numeric Arguments450271
Node: Commands For Completion451423
Node: Keyboard Macros457119
Node: Miscellaneous Commands457820
Node: Readline vi Mode465363
Node: Programmable Completion466340
Node: Programmable Completion Builtins476076
Node: A Programmable Completion Example487813
Node: Using History Interactively493158
Node: Bash History Facilities493839
Node: Bash History Builtins497574
Node: History Interaction505169
Node: Event Designators510119
Node: Word Designators511697
Node: Modifiers514089
Node: Installing Bash516026
Node: Basic Installation517142
Node: Compilers and Options521018
Node: Compiling For Multiple Architectures521768
Node: Installation Names523521
Node: Specifying the System Type525755
Node: Sharing Defaults526501
Node: Operation Controls527215
Node: Optional Features528234
Node: Reporting Bugs540957
Node: Major Differences From The Bourne Shell542314
Node: GNU Free Documentation License563741
Node: Indexes588918
Node: Builtin Index589369
Node: Reserved Word Index596467
Node: Variable Index598912
Node: Function Index616325
Node: Concept Index630458
Node: Top901
Node: Introduction2842
Node: What is Bash?3055
Node: What is a shell?4188
Node: Definitions6798
Node: Basic Shell Features10125
Node: Shell Syntax11349
Node: Shell Operation12376
Node: Quoting13667
Node: Escape Character15005
Node: Single Quotes15540
Node: Double Quotes15889
Node: ANSI-C Quoting17234
Node: Locale Translation18628
Node: Creating Internationalized Scripts20031
Node: Comments24229
Node: Shell Commands24996
Node: Reserved Words25935
Node: Simple Commands27078
Node: Pipelines27740
Node: Lists30996
Node: Compound Commands32945
Node: Looping Constructs33954
Node: Conditional Constructs36503
Node: Command Grouping51640
Node: Coprocesses53132
Node: GNU Parallel55818
Node: Shell Functions56736
Node: Shell Parameters65184
Node: Positional Parameters70085
Node: Special Parameters71175
Node: Shell Expansions74636
Node: Brace Expansion76825
Node: Tilde Expansion80161
Node: Shell Parameter Expansion83116
Node: Command Substitution103763
Node: Arithmetic Expansion107614
Node: Process Substitution108790
Node: Word Splitting109898
Node: Filename Expansion112342
Node: Pattern Matching115566
Node: Quote Removal121332
Node: Redirections121636
Node: Executing Commands131892
Node: Simple Command Expansion132559
Node: Command Search and Execution134667
Node: Command Execution Environment137111
Node: Environment140637
Node: Exit Status142540
Node: Signals144599
Node: Shell Scripts149547
Node: Shell Builtin Commands152845
Node: Bourne Shell Builtins155186
Node: Bash Builtins181905
Node: Modifying Shell Behavior219641
Node: The Set Builtin219983
Node: The Shopt Builtin231977
Node: Special Builtins249030
Node: Shell Variables250019
Node: Bourne Shell Variables250453
Node: Bash Variables252961
Node: Bash Features292245
Node: Invoking Bash293259
Node: Bash Startup Files299843
Node: Interactive Shells305085
Node: What is an Interactive Shell?305493
Node: Is this Shell Interactive?306155
Node: Interactive Shell Behavior306979
Node: Bash Conditional Expressions310740
Node: Shell Arithmetic316157
Node: Aliases319484
Node: Arrays322618
Node: The Directory Stack330321
Node: Directory Stack Builtins331118
Node: Controlling the Prompt335563
Node: The Restricted Shell338447
Node: Bash POSIX Mode341540
Node: Shell Compatibility Mode361356
Node: Job Control370363
Node: Job Control Basics370820
Node: Job Control Builtins377188
Node: Job Control Variables383976
Node: Command Line Editing385207
Node: Introduction and Notation386910
Node: Readline Interaction389262
Node: Readline Bare Essentials390450
Node: Readline Movement Commands392258
Node: Readline Killing Commands393254
Node: Readline Arguments395277
Node: Searching396367
Node: Readline Init File398610
Node: Readline Init File Syntax399913
Node: Conditional Init Constructs426864
Node: Sample Init File431249
Node: Bindable Readline Commands434369
Node: Commands For Moving435907
Node: Commands For History438371
Node: Commands For Text443762
Node: Commands For Killing447887
Node: Numeric Arguments450675
Node: Commands For Completion451827
Node: Keyboard Macros457523
Node: Miscellaneous Commands458224
Node: Readline vi Mode465767
Node: Programmable Completion466744
Node: Programmable Completion Builtins476480
Node: A Programmable Completion Example488217
Node: Using History Interactively493562
Node: Bash History Facilities494243
Node: Bash History Builtins497978
Node: History Interaction505573
Node: Event Designators510523
Node: Word Designators512101
Node: Modifiers514493
Node: Installing Bash516430
Node: Basic Installation517546
Node: Compilers and Options521422
Node: Compiling For Multiple Architectures522172
Node: Installation Names523925
Node: Specifying the System Type526159
Node: Sharing Defaults526905
Node: Operation Controls527619
Node: Optional Features528638
Node: Reporting Bugs541361
Node: Major Differences From The Bourne Shell542718
Node: GNU Free Documentation License564145
Node: Indexes589322
Node: Builtin Index589773
Node: Reserved Word Index596871
Node: Variable Index599316
Node: Function Index616729
Node: Concept Index630862

End Tag Table
+145 -138
View File
@@ -2,9 +2,9 @@ This is bashref.info, produced by makeinfo version 7.2 from
bashref.texi.
This text is a brief description of the features that are present in the
Bash shell (version 5.3, 14 January 2026).
Bash shell (version 5.3, 27 February 2026).
This is Edition 5.3, last updated 14 January 2026, of The GNU Bash
This is Edition 5.3, last updated 27 February 2026, of The GNU Bash
Reference Manual, for Bash, Version 5.3.
Copyright © 1988-2026 Free Software Foundation, Inc.
@@ -27,10 +27,10 @@ Bash Features
*************
This text is a brief description of the features that are present in the
Bash shell (version 5.3, 14 January 2026). The Bash home page is
Bash shell (version 5.3, 27 February 2026). The Bash home page is
<http://www.gnu.org/software/bash/>.
This is Edition 5.3, last updated 14 January 2026, of The GNU Bash
This is Edition 5.3, last updated 27 February 2026, of The GNU Bash
Reference Manual, for Bash, Version 5.3.
Bash contains features that appear in other popular shells, and some
@@ -7775,7 +7775,8 @@ startup files.
builtins.
12. Tilde expansion is only performed on assignments preceding a
command name, rather than on all assignment statements on the line.
command name, rather than on all assignment statements on the line,
unless the command is a declaration command.
13. While variable indirection is available, it may not be applied to
the # and ? special parameters.
@@ -8063,7 +8064,13 @@ default even when in POSIX mode. Specifically:
entries if FCEDIT is unset, rather than defaulting directly to
ed. fc uses ed if EDITOR is unset.
3. As noted above, Bash requires the xpg_echo option to be enabled
3. Bash does not perform redirections before expanding variable
assignments preceding a simple command; it does not allow the
redirections access to the results of the variable assignments, but
any side effects of expanding the redirections take place first.
If compiled in strict posix mode, Bash performs redirections first.
4. 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
@@ -13729,138 +13736,138 @@ D.5 Concept Index

Tag Table:
Node: Top902
Node: Introduction2844
Node: What is Bash?3060
Node: What is a shell?4196
Node: Definitions6809
Node: Basic Shell Features10139
Node: Shell Syntax11366
Node: Shell Operation12396
Node: Quoting13690
Node: Escape Character15031
Node: Single Quotes15569
Node: Double Quotes15921
Node: ANSI-C Quoting17269
Node: Locale Translation18666
Node: Creating Internationalized Scripts20072
Node: Comments24273
Node: Shell Commands25043
Node: Reserved Words25985
Node: Simple Commands27131
Node: Pipelines27796
Node: Lists31055
Node: Compound Commands33007
Node: Looping Constructs34019
Node: Conditional Constructs36571
Node: Command Grouping51711
Node: Coprocesses53206
Node: GNU Parallel55895
Node: Shell Functions56816
Node: Shell Parameters65267
Node: Positional Parameters70171
Node: Special Parameters71264
Node: Shell Expansions74728
Node: Brace Expansion76920
Node: Tilde Expansion80259
Node: Shell Parameter Expansion83217
Node: Command Substitution103867
Node: Arithmetic Expansion107721
Node: Process Substitution108900
Node: Word Splitting110011
Node: Filename Expansion112458
Node: Pattern Matching115685
Node: Quote Removal121454
Node: Redirections121761
Node: Executing Commands132020
Node: Simple Command Expansion132690
Node: Command Search and Execution134801
Node: Command Execution Environment137248
Node: Environment140777
Node: Exit Status142683
Node: Signals144745
Node: Shell Scripts149696
Node: Shell Builtin Commands152997
Node: Bourne Shell Builtins155341
Node: Bash Builtins182063
Node: Modifying Shell Behavior219802
Node: The Set Builtin220147
Node: The Shopt Builtin232144
Node: Special Builtins249200
Node: Shell Variables250192
Node: Bourne Shell Variables250629
Node: Bash Variables253140
Node: Bash Features292427
Node: Invoking Bash293444
Node: Bash Startup Files300031
Node: Interactive Shells305276
Node: What is an Interactive Shell?305687
Node: Is this Shell Interactive?306352
Node: Interactive Shell Behavior307179
Node: Bash Conditional Expressions310943
Node: Shell Arithmetic316363
Node: Aliases319693
Node: Arrays322830
Node: The Directory Stack330536
Node: Directory Stack Builtins331336
Node: Controlling the Prompt335784
Node: The Restricted Shell338671
Node: Bash POSIX Mode341767
Node: Shell Compatibility Mode361186
Node: Job Control370196
Node: Job Control Basics370656
Node: Job Control Builtins377027
Node: Job Control Variables383818
Node: Command Line Editing385052
Node: Introduction and Notation386758
Node: Readline Interaction389113
Node: Readline Bare Essentials390304
Node: Readline Movement Commands392115
Node: Readline Killing Commands393114
Node: Readline Arguments395140
Node: Searching396233
Node: Readline Init File398479
Node: Readline Init File Syntax399785
Node: Conditional Init Constructs426739
Node: Sample Init File431127
Node: Bindable Readline Commands434250
Node: Commands For Moving435791
Node: Commands For History438258
Node: Commands For Text443652
Node: Commands For Killing447780
Node: Numeric Arguments450571
Node: Commands For Completion451726
Node: Keyboard Macros457425
Node: Miscellaneous Commands458129
Node: Readline vi Mode465675
Node: Programmable Completion466655
Node: Programmable Completion Builtins476394
Node: A Programmable Completion Example488134
Node: Using History Interactively493482
Node: Bash History Facilities494166
Node: Bash History Builtins497904
Node: History Interaction505502
Node: Event Designators510455
Node: Word Designators512036
Node: Modifiers514431
Node: Installing Bash516371
Node: Basic Installation517490
Node: Compilers and Options521369
Node: Compiling For Multiple Architectures522122
Node: Installation Names523878
Node: Specifying the System Type526115
Node: Sharing Defaults526864
Node: Operation Controls527581
Node: Optional Features528603
Node: Reporting Bugs541329
Node: Major Differences From The Bourne Shell542689
Node: GNU Free Documentation License564119
Node: Indexes589299
Node: Builtin Index589753
Node: Reserved Word Index596854
Node: Variable Index599302
Node: Function Index616718
Node: Concept Index630854
Node: Top904
Node: Introduction2848
Node: What is Bash?3064
Node: What is a shell?4200
Node: Definitions6813
Node: Basic Shell Features10143
Node: Shell Syntax11370
Node: Shell Operation12400
Node: Quoting13694
Node: Escape Character15035
Node: Single Quotes15573
Node: Double Quotes15925
Node: ANSI-C Quoting17273
Node: Locale Translation18670
Node: Creating Internationalized Scripts20076
Node: Comments24277
Node: Shell Commands25047
Node: Reserved Words25989
Node: Simple Commands27135
Node: Pipelines27800
Node: Lists31059
Node: Compound Commands33011
Node: Looping Constructs34023
Node: Conditional Constructs36575
Node: Command Grouping51715
Node: Coprocesses53210
Node: GNU Parallel55899
Node: Shell Functions56820
Node: Shell Parameters65271
Node: Positional Parameters70175
Node: Special Parameters71268
Node: Shell Expansions74732
Node: Brace Expansion76924
Node: Tilde Expansion80263
Node: Shell Parameter Expansion83221
Node: Command Substitution103871
Node: Arithmetic Expansion107725
Node: Process Substitution108904
Node: Word Splitting110015
Node: Filename Expansion112462
Node: Pattern Matching115689
Node: Quote Removal121458
Node: Redirections121765
Node: Executing Commands132024
Node: Simple Command Expansion132694
Node: Command Search and Execution134805
Node: Command Execution Environment137252
Node: Environment140781
Node: Exit Status142687
Node: Signals144749
Node: Shell Scripts149700
Node: Shell Builtin Commands153001
Node: Bourne Shell Builtins155345
Node: Bash Builtins182067
Node: Modifying Shell Behavior219806
Node: The Set Builtin220151
Node: The Shopt Builtin232148
Node: Special Builtins249204
Node: Shell Variables250196
Node: Bourne Shell Variables250633
Node: Bash Variables253144
Node: Bash Features292431
Node: Invoking Bash293448
Node: Bash Startup Files300035
Node: Interactive Shells305280
Node: What is an Interactive Shell?305691
Node: Is this Shell Interactive?306356
Node: Interactive Shell Behavior307183
Node: Bash Conditional Expressions310947
Node: Shell Arithmetic316367
Node: Aliases319697
Node: Arrays322834
Node: The Directory Stack330540
Node: Directory Stack Builtins331340
Node: Controlling the Prompt335788
Node: The Restricted Shell338675
Node: Bash POSIX Mode341771
Node: Shell Compatibility Mode361590
Node: Job Control370600
Node: Job Control Basics371060
Node: Job Control Builtins377431
Node: Job Control Variables384222
Node: Command Line Editing385456
Node: Introduction and Notation387162
Node: Readline Interaction389517
Node: Readline Bare Essentials390708
Node: Readline Movement Commands392519
Node: Readline Killing Commands393518
Node: Readline Arguments395544
Node: Searching396637
Node: Readline Init File398883
Node: Readline Init File Syntax400189
Node: Conditional Init Constructs427143
Node: Sample Init File431531
Node: Bindable Readline Commands434654
Node: Commands For Moving436195
Node: Commands For History438662
Node: Commands For Text444056
Node: Commands For Killing448184
Node: Numeric Arguments450975
Node: Commands For Completion452130
Node: Keyboard Macros457829
Node: Miscellaneous Commands458533
Node: Readline vi Mode466079
Node: Programmable Completion467059
Node: Programmable Completion Builtins476798
Node: A Programmable Completion Example488538
Node: Using History Interactively493886
Node: Bash History Facilities494570
Node: Bash History Builtins498308
Node: History Interaction505906
Node: Event Designators510859
Node: Word Designators512440
Node: Modifiers514835
Node: Installing Bash516775
Node: Basic Installation517894
Node: Compilers and Options521773
Node: Compiling For Multiple Architectures522526
Node: Installation Names524282
Node: Specifying the System Type526519
Node: Sharing Defaults527268
Node: Operation Controls527985
Node: Optional Features529007
Node: Reporting Bugs541733
Node: Major Differences From The Bourne Shell543093
Node: GNU Free Documentation License564523
Node: Indexes589703
Node: Builtin Index590157
Node: Reserved Word Index597258
Node: Variable Index599706
Node: Function Index617122
Node: Concept Index631258

End Tag Table
+7
View File
@@ -9707,6 +9707,13 @@ the @code{command} builtin or another non-special builtin fails.
There is ambiguity in @sc{posix} about this.
@end ignore
@item
Bash does not perform redirections before expanding variable assignments
preceding a simple command; it does not allow the redirections access to
the results of the variable assignments, but any side effects of expanding
the redirections take place first.
If compiled in @i{strict posix} mode, Bash performs redirections first.
@item
As noted above, Bash requires the @code{xpg_echo} option to be enabled for
the @code{echo} builtin to be fully conformant.
+3 -3
View File
@@ -2,10 +2,10 @@
Copyright (C) 1988-2026 Free Software Foundation, Inc.
@end ignore
@set LASTCHANGE Wed Jan 14 15:46:16 EST 2026
@set LASTCHANGE Fri Feb 27 12:23:35 EST 2026
@set EDITION 5.3
@set VERSION 5.3
@set UPDATED 14 January 2026
@set UPDATED-MONTH January 2026
@set UPDATED 27 February 2026
@set UPDATED-MONTH February 2026