fix for heuristic to detect case statements when parsing $() command substitutions to find history expansion; fix for history not being saved if a SIGHUP arrives during $PROMPT_COMMAND execution; workaround for Cygwin bug that results in bash incorrectly calculating the system pipe size

This commit is contained in:
Chet Ramey
2026-03-09 14:54:45 -04:00
parent d0b41c2c5f
commit 1f292e433e
16 changed files with 6183 additions and 366 deletions
+161 -158
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, 27 February 2026).
Bash shell (version 5.3, 3 March 2026).
This is Edition 5.3, last updated 27 February 2026, of The GNU Bash
This is Edition 5.3, last updated 3 March 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, 27 February 2026). The Bash home page is
Bash shell (version 5.3, 3 March 2026). The Bash home page is
<http://www.gnu.org/software/bash/>.
This is Edition 5.3, last updated 27 February 2026, of The GNU Bash
This is Edition 5.3, last updated 3 March 2026, of The GNU Bash
Reference Manual, for Bash, Version 5.3.
Bash contains features that appear in other popular shells, and some
@@ -1896,16 +1896,17 @@ introduce indirection.
In each of the cases below, WORD is subject to tilde expansion,
parameter expansion, command substitution, and arithmetic expansion.
When not performing substring expansion, using the forms described
below (e.g., :), Bash tests for a parameter that is unset or null.
Omitting the colon results in a test only for a parameter that is unset.
Put another way, if the colon is included, the operator tests for both
PARAMETER's existence and that its value is not null; if the colon is
omitted, the operator tests only for existence.
When performing the first four expansions documented below (:-,
:=, :?, and :+), including the colon, Bash tests for a parameter
that is unset or null. Omitting the colon results in a test only for a
parameter that is unset. Put another way, if the colon is included, the
operator tests for both PARAMETER's existence and that its value is not
null; if the colon is omitted, the operator tests only for existence.
${PARAMETER:WORD}
If PARAMETER is unset or null, the expansion of WORD is
substituted. Otherwise, the value of PARAMETER is substituted.
If PARAMETER is unset or null, or unset if the colon is not
present, the expansion of WORD is substituted. Otherwise, the
value of PARAMETER is substituted.
$ v=123
$ echo ${v-unset}
@@ -1922,10 +1923,11 @@ omitted, the operator tests only for existence.
unset-or-null
${PARAMETER:=WORD}
If PARAMETER is unset or null, the expansion of WORD is assigned to
PARAMETER, and the result of the expansion is the final value of
PARAMETER. Positional parameters and special parameters may not be
assigned in this way.
If PARAMETER is unset or null, or unset if the colon is not
present, the expansion of WORD is assigned to PARAMETER, and the
result of the expansion is the final value of PARAMETER.
Positional parameters and special parameters may not be assigned in
this way.
$ unset var
$ : ${var=DEFAULT}
@@ -1945,12 +1947,13 @@ omitted, the operator tests only for existence.
DEFAULT
${PARAMETER:?WORD}
If PARAMETER is null or unset, the shell writes the expansion of
WORD (or a message to that effect if WORD is not present) to the
standard error and, if it is not interactive, exits with a non-zero
status. An interactive shell does not exit, but does not execute
the command associated with the expansion. Otherwise, the value of
PARAMETER is substituted.
If PARAMETER is unset or null, or unset if the colon is not
present, the shell writes the expansion of WORD (or a message to
that effect if WORD is not present) to the standard error and, if
it is not interactive, exits with a non-zero status. An
interactive shell does not exit, but does not execute the command
associated with the expansion. Otherwise, the value of PARAMETER
is substituted.
$ var=
$ : ${var:?var is unset or null}
@@ -1967,9 +1970,9 @@ omitted, the operator tests only for existence.
123
${PARAMETER:+WORD}
If PARAMETER is null or unset, nothing is substituted, otherwise
the expansion of WORD is substituted. The value of PARAMETER is
not used.
If PARAMETER is unset or null, or unset if the colon is not
present, nothing is substituted, otherwise the expansion of WORD is
substituted. The value of PARAMETER is not used.
$ var=123
$ echo ${var:+var is set and not null}
@@ -7163,7 +7166,7 @@ shell variables may also be referenced by name without using the
parameter expansion syntax. This means you can use X, where X is a
shell variable name, in an arithmetic expression, and the shell will
evaluate its value as an expression and use the result. A shell
variable that is null or unset evaluates to 0 when referenced by name in
variable that is unset or null evaluates to 0 when referenced by name in
an expression.
The value of a variable is evaluated as an arithmetic expression when
@@ -13735,138 +13738,138 @@ D.5 Concept Index

Tag Table:
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
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 Commands27062
Node: Pipelines27724
Node: Lists30980
Node: Compound Commands32929
Node: Looping Constructs33938
Node: Conditional Constructs36487
Node: Command Grouping51624
Node: Coprocesses53116
Node: GNU Parallel55802
Node: Shell Functions56720
Node: Shell Parameters65168
Node: Positional Parameters70069
Node: Special Parameters71159
Node: Shell Expansions74620
Node: Brace Expansion76809
Node: Tilde Expansion80145
Node: Shell Parameter Expansion83100
Node: Command Substitution103948
Node: Arithmetic Expansion107799
Node: Process Substitution108975
Node: Word Splitting110083
Node: Filename Expansion112527
Node: Pattern Matching115751
Node: Quote Removal121517
Node: Redirections121821
Node: Executing Commands132077
Node: Simple Command Expansion132744
Node: Command Search and Execution134852
Node: Command Execution Environment137296
Node: Environment140822
Node: Exit Status142725
Node: Signals144784
Node: Shell Scripts149732
Node: Shell Builtin Commands153030
Node: Bourne Shell Builtins155371
Node: Bash Builtins182090
Node: Modifying Shell Behavior219826
Node: The Set Builtin220168
Node: The Shopt Builtin232162
Node: Special Builtins249215
Node: Shell Variables250204
Node: Bourne Shell Variables250638
Node: Bash Variables253146
Node: Bash Features292430
Node: Invoking Bash293444
Node: Bash Startup Files300028
Node: Interactive Shells305270
Node: What is an Interactive Shell?305678
Node: Is this Shell Interactive?306340
Node: Interactive Shell Behavior307164
Node: Bash Conditional Expressions310925
Node: Shell Arithmetic316342
Node: Aliases319669
Node: Arrays322803
Node: The Directory Stack330506
Node: Directory Stack Builtins331303
Node: Controlling the Prompt335748
Node: The Restricted Shell338632
Node: Bash POSIX Mode341725
Node: Shell Compatibility Mode361541
Node: Job Control370548
Node: Job Control Basics371005
Node: Job Control Builtins377373
Node: Job Control Variables384161
Node: Command Line Editing385392
Node: Introduction and Notation387095
Node: Readline Interaction389447
Node: Readline Bare Essentials390635
Node: Readline Movement Commands392443
Node: Readline Killing Commands393439
Node: Readline Arguments395462
Node: Searching396552
Node: Readline Init File398795
Node: Readline Init File Syntax400098
Node: Conditional Init Constructs427049
Node: Sample Init File431434
Node: Bindable Readline Commands434554
Node: Commands For Moving436092
Node: Commands For History438556
Node: Commands For Text443947
Node: Commands For Killing448072
Node: Numeric Arguments450860
Node: Commands For Completion452012
Node: Keyboard Macros457708
Node: Miscellaneous Commands458409
Node: Readline vi Mode465952
Node: Programmable Completion466929
Node: Programmable Completion Builtins476665
Node: A Programmable Completion Example488402
Node: Using History Interactively493747
Node: Bash History Facilities494428
Node: Bash History Builtins498163
Node: History Interaction505758
Node: Event Designators510708
Node: Word Designators512286
Node: Modifiers514678
Node: Installing Bash516615
Node: Basic Installation517731
Node: Compilers and Options521607
Node: Compiling For Multiple Architectures522357
Node: Installation Names524110
Node: Specifying the System Type526344
Node: Sharing Defaults527090
Node: Operation Controls527804
Node: Optional Features528823
Node: Reporting Bugs541546
Node: Major Differences From The Bourne Shell542903
Node: GNU Free Documentation License564330
Node: Indexes589507
Node: Builtin Index589958
Node: Reserved Word Index597056
Node: Variable Index599501
Node: Function Index616914
Node: Concept Index631047

End Tag Table