forked from chaitan94/bash
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCHANGES
More file actions
11793 lines (7902 loc) · 462 KB
/
CHANGES
File metadata and controls
11793 lines (7902 loc) · 462 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
This document details the changes between this version, bash-5.3-rc2, and
the previous version, bash-5.3-rc1.
1. Changes to Bash
a. Fixed a problem with invoking the correct programmable completion compspec
if the line contains a quoted command separator before point.
b. Fixed a bug in the `read' builtin that caused it to skip the delimiter if
it appeared in an invalid multibyte character.
c. Fixed a bug with parsing command substitutions that caused a syntax error
to pop too many input sources.
d. Fixed an issue with recursive parsing that caused the parser to reset and
pop all the delimiters off the stack; the caller needs to check for that
possibility.
e. Fixed an issue with interactive input that caused EOF not to exit the
shell if it was read as part of a here-document.
f. Fixed an issue with a backslash-newline appearing after a right paren in
a nested subshell command.
g. Fixed an issue with invalid sequence expressions in brace expansions.
h. Fixed an issue with a nameref variable referencing an unset array element
when the nounset option is enabled.
2. Changes to Readline
a. The history library no longer skips blank lines while it is reading a
multiline history entry from a history file.
3. New Features in Bash
a. The `install-strip' and `strip' Makefile targets now deal with cross-
compiling.
4. New Features in Readline
------------------------------------------------------------------------------
This document details the changes between this version, bash-5.3-rc1, and
the previous version, bash-5.3-beta.
1. Changes to Bash
a. Fixed a bug where backslash did not quote multibyte characters in some
cases.
b. Requesting the length of an element of an unset array is a fatal error
when `set -u' is enabled and the subscript is not `@' or `*'.
c. Prompt expansion now quotes the results of \U.
d. Changes to `set -e' exit behavior in posix mode, since POSIX now says to
exit as if executing the `exit builtin with no arguments'.
e. Fixes to the `exec' builtin to undo redirections if it is given a command
name to execute and the exection fails, but the shell does not exit. This
is POSIX interp 1896.
f. Fixed a bug that resulted in `wait' setting $? to 255 in some cases when
waiting for a specific PID.
g. Fixed a bug involving redirections to the file descriptor bash is using to
read a script.
h. In POSIX mode, `kill' returns a failure status if any of the PID/job
arguments are not found or if sending the signal fails.
i. Fixed a bug that caused an invalid brace sequence expression to mess up
expansion of an enclosing brace expansion.
j. Fixed a bug in command printing that output the wrong default file
descriptor for the <> redirection.
k. User-specified subshells (`(...)') now update BASH_COMMAND in the subshell.
l. Fixed a display bug with the `help -m' and loadable builtins.
m. Fixed a potential file descriptor leak when trying to use a pipe for a
here document.
n. Fix a bug with multiple assignment statements preceding a simple command
containing nofork comsubs.
o. Fix a potential bug that could result in a NULL buffered stream even with
a valid input file descriptor.
2. Changes to Readline
a. Fixed a bug that allowed a history search to change the current history
list position.
b. Fixed a bug that allowed ^G to retain a saved command to execute.
c. Updates to new export-completions command to allow filename suffixes.
d. Fixed a redisplay bug with prompts containing multiple sequences of
invisible characters that are longer than the screen width.
3. New Features in Bash
a. There is a new `fltexpr' loadable builtin to perform floating-point
arithmetic similarly to `let'.
4. New Features in Readline
a. Readline can reset its idea of the screen dimensions when executing after
a SIGCONT.
------------------------------------------------------------------------------
This document details the changes between this version, bash-5.3-beta, and
the previous version, bash-5.3-alpha.
1. Changes to Bash
a. Per POSIX, a null pathname argument to `cd' is now an error.
b. Fixes for command completion when the directory portion of the pathname
contains characters that require quoting.
c. Fix to prevent redirections from undergoing word expansion twice.
d. Fix for rare parsing issue with for loops where a newline appears before
`in'.
e. The bash build process now assumes a C90 compilation environment and a
POSIX.1-1990 execution environment.
f. Fixed a bug where bash's internal redirection flags could collide with
the system's open/fcntl flags.
g. Fixed a problem with `jobs' run from a trap or `bind -x' command printing
the status of terminated foreground jobs.
h. Bash works around a macOS gettext bug with translating the `command not
found' message by caching the translated string.
i. Bash does not try to set the tty state after a process finishes if it is
running a trap, running a readline key binding (bind -x), or executing a
programmable completion.
j. Restricted shells are not allowed to run `enable -f', even when it's
shorthand from `enable f'.
k. Work around an android problem with file descriptors if the read builtin
gets both -u and -e.
l. Fixed some small memory leaks in bash completion and command parsing and
execution.
m. Fix for crash when timed commands jump back to the top level after SIGINT.
n. Minor fixes for command substitution parsing in the foreground.
o. Fix to reset read builtin buffer after SIGINT.
p. Fix for inconsistency between arrays and scalar variables when declaring
local variables and using values from previous variable contexts.
q. Bash doesn't try to give the terminal back to the original process group
after running a trap unless job control is enabled.
r. Fix to inhibit fork optimizations in functions that set a RETURN trap.
s. Fixes for parsing commands within process substitutions where they should
behave differently than command substitutions, including prohibiting the
special case for redirections that is only available for command
substitutions.
t. Restrict the effect of force_fignore to the cases where FIGNORE should
affect completions.
u. Fix for `read' builtin and invalid multibyte characters that contain the
delimiter character, so the delimiter acts as intended.
v. Fix for `read -e' so it restores the correct completion function if it's
interrupted.
w. Fix an off-by-one error when parsing an improperly-formed printf time
specification.
x. Fix for return status for commands whose return status is being inverted
when set -e is ignored.
y. Fix for checking `read' builtin timeouts after we check for having read
the delimiter.
z. Fixes for integer overflows and size_t variables.
aa. Fixes for the Makefiles to simplify, remove some unused variables, and
clean up what `git' sees after running the various clean targets.
bb. Fix for the `exec' builtin to avoid duplicate error messages.
cc. `printf' now warns if there are no valid characters at all in an integer
argument.
2. Changes to Readline
a. Make sure the bracketed-paste input buffer is null-terminated when read
returns an error.
b. Fixed a small memory leak in execute-named-command if the command doesn't
exist or the function doesn't return.
c. Fix for attempting to change case of invalid multibyte characters.
d. Fix for possible completions that compare identically when using case-
insensitive completion but have different byte lengths.
e. Fix to make non-incremental searches use undo lists and set the history
position the same way as incremental searches.
f. Don't check for signals when handling a received signal.
g. Fix off-by-one error when tokenizing words like $((expr)) while performing
history expansion.
h. Fixes for incremental searches and redisplay in the C locale.
i. Fixes for some use-after-free of the undo list errors when stacking multiple
commands that use rl_maybe_replace_line to save changes to a history entry.
j. Fixes to ensure that completion-prefix-display-length and
colored-completion-prefix are mutually exclusive.
3. New Features in Bash
a. MULTIPLE_COPROCS is now enabled by default.
b. The `bind' builtin interprets additional non-option arguments after -p or
-P as bindable command names and restricts output to the bindings for
those names.
c. Bash now uses the login shell for $BASH if the shell is named `su' or `-su'.
d. Bash now prints job notifications if an interactive shell is running a trap,
even though the shell is not interactive at that moment.
e. Programmable completion allows a new compspec loaded after a completion
function returns 124 to be used in more cases.
f. ./source has a new -p PATH option, which makes it use the PATH argument
instead of $PATH to look for the file.
g. GLOBSORT has a new `numeric' sort specifier, which sorts all-digit strings
as numbers.
h. Documentation has been significantly updated.
i. `wait -n' can now return terminated process substitutions, jobs about
which the user has already been notified (like `wait' without options),
j. `wait -n' removes jobs from the jobs table or list of terminated children
when in posix mode.
k. Changed the `wait' builtin behavior regarding process substitutions to
match the documentation.
l. There is a new `bash_source_fullpath' shopt option, which makes bash put
full pathnames into BASH_SOURCE, and a way to set a default value for it
at configure time.
m. Posix mode now forces job notifications to occur when the new edition of
POSIX specifies (since it now specifies them).
n. Interactive shells don't print job notifications while sourcing scripts.
o. The parser prints more information about the command it's trying to parse
when it encounters EOF before completing the command.
p. Posix mode no longer requires function names to be valid shell identifiers.
q. If `exit' is run in a trap and not supplied an exit status argument, it
uses the value of $? from before the trap only if it's run at the trap's
`top level' and would cause the trap to end (that is, not in a subshell).
This is from Posix interp 1602.
4. New Features in Readline
a. Documentation has been significantly updated.
b. New `force-meta-prefix' bindable variable, which forces the use of ESC as
the meta prefix when using "\M-" in key bindings instead of overloading
convert-meta.
c. The default value for `readline-colored-completion-prefix' no longer has a
leading `.'; the original report was based on a misunderstanding.
d. There is a new bindable command, `export-completions', which writes the
possible completions for a word to the standard output in a defined format.
------------------------------------------------------------------------------
This document details the changes between this version, bash-5.3-alpha, and
the previous version, bash-5.2-release.
1. Changes to Bash
a. Stop checking for new mail if an interactive shell is in the middle of
programmable completion or readline command dispatching.
b. Changes to multibyte character translation to handle shift states better.
c. Fixed a bug with subshell command execution that caused it to set LINENO
incorrectly.
d. Fixed a bug that caused some array subscript references in arithmetic
expansions to seg fault.
e. Don't report on foreground jobs that we won't notify the user about if
jobs is run from a trap handler or a `bind -x' command.
f. Fixed a bug where temporarily turning on `extglob' while parsing a command
substitution in compatibility mode could leave it set.
g. Fixed a bug where nested word expansions confused the state parser and
resulted in quotes being required where they should not have been.
h. Fixed a bug where nested function definitions resulted in `display -F'
printing incorrect line numbers.
i. Fixed the message printed when the shell gets ENOENT from execve: specific
message about a bad interpreter before the generic error message.
j. Fixed a spurious debug message when errexit is set and the shell is
exiting from an eval command in a shell function.
k. Fixed a bug where a pending signal would cause pattern matching to fail in
an exit trap.
l. Fixed a crash caused by a null replacement string in pattern replacement.
m. Fixed a bug in interactive shells where a SIGINT received while parsing a
command substitution would leave the expand_aliases option disabled.
n. Fixed a bug with command printing when printing multiple shell functions
with here-documents inside a command substitution.
o. Fixed a bug with expanding aliases while parsing command substitutions
inside another word expansion.
p. Fixed a bug with alias expansion in posix mode in an eval command inside a
command substitution.
q. Fixed a bug that caused the parser not to reset correctly if it encountered
a syntax error while trying to read a WORD token.
r. Fixed a bug that caused `<(' and `>(' to trigger process substitution inside
an arithmetic expression.
s. Fixed a bug that caused the shell to unlink FIFOs used for process
substitution before a compound command completes.
t. Fixed a bug that caused the read builtin to not recognize some negative
fractional arguments.
u. Fixed a bug that caused subshells not to run the EXIT trap if a signal
arrived after the command and before returning to the caller.
v. Fixed a bug where `wait' without arguments could wait for inherited
process substitutions, which are not children of this shell.
w. Fixed a bug with expanding $* in a here-document body.
x. Fixed a bug where `declare -p' in a shell function would show the wrong
command for `local -'.
y. Change for POSIX interpretation 1602 about the default return status for
`return' in a trap command.
z. Fixed a bug that caused double evaluation of a dynamic variable like
$RANDOM when using certain parameter expansions.
aa. Fixed a bug where `read -e -t' would cause an interactive shell to exit.
bb. Fixed a number of bugs with pathname expansion/pattern matching and
slashes in bracket expressions.
cc. Fixed several bugs with optimizing out forks.
dd. Fixed a memory leak when referencing unset associative array elements.
ee. System-specific changes for: WIN32
ff. Perform more cleanup if the shell exceeds maximum function nesting level.
gg. Fixed a bug that caused `eval' to run the ERR trap in commands where it
should not.
hh. Fixed nameref expansion where nameref values are valid length expansion
expressions but invalid identifiers.
ii. Fixed an error that caused syntax errors when expanding nested word
expansions inside a here-document.
jj. POSIX special builtins now exit the shell in posix mode on more failure
cases.
kk. Brace expansion is interruptible at more spots, so long expansions can
be interrupted more quickly.
ll. Fixed a crash caused by running `set -o emacs' in `bash -c command'.
mm. Fixed a bug that caused bash to reset the terminal process group before
a command exited if it received a SIGINT in a non-interactive shell.
nn. Significant changes to the source code to make it C23-conformant, including
C23 undefined behavior.
oo. Treat read(2) errors while reading input as immediately fatal errors
instead of the traditional EOF; POSIX interp 1629
pp. Fix to allow asynchronous commands to use `trap' to reset signals that
are ignored during the command; POSIX interp 751.
qq. Fix a posix-mode bug with alias expansion when checking for reserved
words and the previous alias expansion ends with a space.
rr. Programmable completion now creates empty elements in COMP_WORDS if the
cursor is on whitespace just preceding a word.
ss. Fixed a bug that prevented aliases ending with a space from alias
expanding the next word if more than two aliases are expanded from a
single word.
tt. Fixed a bug that caused the shell to give the terminal to the shell's
process group when reaping a background job.
uu. Command printing is more consistent when to print `function' before a
shell function name.
vv. Fixed a bug that caused unset not to remove a function named a[b] if
there was no array variable a.
ww. Posix mode doesn't perform function lookup for function names containing
a slash.
xx. <( and >( can now be used in function names. [CHANGE REMOVED]
yy. Fixed a bug that caused tilde expansion not to be performed on some
array subscripts.
zz. Fixed key-value pair associative array assignment to be more consistent
with compound array assignment, and indexed array assignment (a=(zero one))
to be more consistent with explicitly assigning indices one by one.
aaa. In posix mode, extra arguments to `fc' are now an error.
bbb. The bash readline commands that perform history and alias expansion try
to place point closer to where it was in the unexpanded line.
ccc. Fixed multiple invocations of `local -' in the same shell function to
have the same effect as one.
ddd. Don't export $_ if allexport is set.
eee. Don't add extra newlines to the history if parsing a delimited construct.
fff. Dynamically-loaded builtins cannot have slashes in their names, since
they'll never be called.
ggg. Fixed a bug that could cause reading EOF while parsing a quoted string
to terminate the shell.
hhh. Fixed a bug that caused local variables with the same name as variables
in `declare's temporary environment to be propagated back to the caller.
iii. Don't try to perform brace expansion on assignment statements in compound
assignments.
jjj. Fixed a bug that could cause a crash while evaluating an arithmetic for
command if one of the expressions expands to NULL.
kkk. In posix mode, cd tries to change to what the user typed if the
canonicalized version of that pathname is longer than PATH_MAX.
lll. Fixes for some errors revealed by address sanitizer.
mmm. If fork(2) fails, kill the current pipeline processes with SIGKILL after
SIGTERM, in case they're ignoring SIGTERM.
nnn. Fix to adding command substitutions to history to avoid adding semicolons
where they shouldn't be.
ooo. Programmable completion and compgen honor the setting of `dotglob'.
ppp. Use gettimeofday(2) to get time information instead of using time(3).
qqq. Save and restore readline variables affecting filename completions in
case someone runs `compgen' in the foreground.
rrr. Treat the failure to open file in $(<file) as a non-fatal expansion
error instead of a fatal redirection error.
sss. In posix mode, command substitution doesn't affect $? except when
specified for commands consisting solely of assignment statements.
ttt. Fix {var}>&- so it doesn't silently close stdin if var is not a number.
uuu. Follow namerefs in ${name=word} so the shell can implement the POSIX
semantics of returning "the final value of parameter."
vvv. Bash performs better nameref loop detection in several lookup cases.
www. SIGINT will now break out of loops if a process executed in the loop dies
due to SIGINT, not just if the loop body is a list. This is no longer
dependent on the compatibility level.
xxx. FIGNORE suffixes can now match the entire pathname, like tcsh, instead
of requiring a non-empty prefix.
yyy. Fix bug that caused FUNCNAME not to be reset after a parse error with
compound assignments to local variables.
zzz. Fix bug that caused `jobs' not to remove jobs from the list in a SIGCHLD
trap.
aaaa. Fix bug that caused `ignoreeof' to be ignored if EOF is read at a
secondary prompt or while parsing a command substitution.
bbbb. Fixes to removing jobs from the jobs table when the user isn't notified;
has effects of fixing issues with `wait -n' not finding jobs.
cccc. Fixes to loadable builtin processing so that we never pass a null
pathname or try to load a builtin that's not found if the -n option is
supplied.
dddd. Work around system-specific problems (macOS) where isblank(3) returns
true for characters >= 0x80 in a UTF-8 locale.
eeee. Fix for crash while parsing alias expansions that include compound
assignments.
ffff. Fixe for non-interactive shells reading a script file that ends with
backslash preceding EOF.
gggg. Fix to command printing when here-documents are attached to compound
commands in lists.
hhhh. Fix bug with sourcing `files' created by process substitutions inside
a `.' script.
iiii. Fixes to declare builtin to treat arguments to declare -f that look like
assignment statements or array references as function names.
jjjj. Fixed a variable conversion problem when exporting a variable in the
temporary environment back to the calling scope.
kkkk. BASH_REMATCH can now be a local variable.
llll. Subshell commands clear process substitutions so anything created by a
redirection doesn't affect the subshell.
mmmm. Fixes for several small memory leaks.
nnnn. The shell simply ignores attempts to assign to `noassign' variables
instead of treating them as an assignment error and possibly causing
the shell to exit.
oooo. If the cd builtin uses $OLDPWD, allow it to use $CDPATH if the user has
set it to something that's not a full pathname.
pppp. The test builtin only supports the optional argument to -t if parsing
an expression with more than four arguments and not in posix mode.
qqqq. Changes to filename quoting and rewriting to deal with NFC and NFD
Unicode forms (primarily for macOS).
rrrr. Send SIGCONT to a job we've just restarted with fg or bg, even if we
think it's already running.
ssss. Fixes for setting the line number associated with a simple command.
tttt. Many changes for integer overflow and out-of-range arguments to printf.
uuuu. Fixes for the read builtin and unescaped backslashes preceding NULs or
the end of the input.
vvvv. The -[anrw] options to the history builtin should have no effect if
HISTFILE is unset or null.
wwww. If programmable completion uses something different than what the user
typed as the command name (full pathname, alias, etc.), display what's
actually used in `compopt' output.
xxxx. Fix bug with closing /dev/fd process substitutions in shell functions.
yyyy. Fix bug with `declare -g' trying to convert a global associative array
to an indexed array.
zzzz. Fix bash history expansion characters so we don't get empty history
events.
aaaaa. Allow `time' and `!' reserved words to be followed by `&', which POSIX
interp 267 says is required.
bbbbb. Upgrade intl library to the one from gettext-0.21.1.
ccccc. Fix line number in the event that a simple command jumps back to the
top level on error.
ddddd. Make the order of setting BASH_COMMAND, running the DEBUG trap, and
printing PS4 consistent across all command types.
eeeee. Rely on child processes to set the terminal process group instead of
having the parent do it as well.
fffff. Fix `printf' to consume entire multibyte characters in the format string,
in case the encoding contains `/' or `%'.
ggggg. Fix `hash' to return 1 if -d is supplied and the hash table is empty.
hhhhh. Fix `select' command to be like `for' in that an invalid selection
variable is a fatal error in posix mode.
iiiii. Fix to parameter length expansion to avoid expanding dynamic variables
(e.g., RANDOM) more than once.
jjjjj. Fix to `shift', `break', and `continue' to skip over a `--' when
printing an invalid argument error message.
kkkkk. Fix bug that caused an invalid arithmetic expression in an arithmetic
`for' command to leave the loop level set to the wrong value, preventing
`break' and `continue' from working.
lllll. Fix problem with removing escapes in the `E' variable transformation.
mmmmm. Fix bug with word splitting if `read' assigns to IFS.
nnnnn. Fix posix-mode cases where failure of special builtins did not cause
the shell to exit.
ooooo. Some fixes to cases where the shell quotes characters that are special
internally.
ppppp. Fix error with read builtin trying to assign to a readonly variable.
qqqqq. Fix a slight race condition when bash receives a SIGINT while waiting
for a foreground job.
rrrrr. Fix integer parsing to accept more whitespace characters after the
digit string -- the same ones we accept before the digits.
sssss. Fix a crash when attempting to brace-expand a very large list of
strings fails.
ttttt. Fix dynamic loading of builtins not to look in the current directory
if looking in BASH_LOADABLES_PATH is not successful, like $PATH
searching.
uuuuu. Fix `bind -x' commands to understand negative argument counts.
vvvvv. Disable fork optimization if the shell is running startup files because
SSH_SOURCE_BASHRC was enabled; prevents infinite recursion.
wwwww. Fix `unset' builtin to implement POSIX interp 1009, which says that
unsetting a variable in the temporary environment unsets the variable
in the enclosing scope also, in posix mode.
xxxxx. Fix parser to read here-document body from the current alias, if that's
where input is being read from.
yyyyy. Fix an off-by-one error that caused completion to fail for certain
pathnames containing backslash-quoted single-quotes.
zzzzz. Fix command printing to print a coproc name only if the coproc command
is not a simple command.
aaaaaa. Fix prompt string decoding to preserve the value of $_.
bbbbbb. In posix mode, supplying a non-identifier as a function name to `export'
or `readonly' should cause the shell to exit, since these are special
builtins.
cccccc. Fix a crash that happens due to accessing freed memory if the parser
encounters a syntax error while parsing an alias or a compound
assignment.
dddddd. Fix a bug that could cause errors while executing a DEBUG trap in a
pipeline.
eeeeee. Fix a bug where exiting a subshell should not try to restore the
terminal settings if that subshell didn't reinitialize them.
ffffff. Remove long-lived workaround for old AFS bug that causes problems with
modern implementations.
gggggg. Fix a bug that caused an assignment error to BASHOPTS or SHELLOPTS to
remove the variable's readonly attribute.
hhhhhh. Fix for a crash if a pathname argument to `cd' is NULL and the current
directory has been removed.
iiiiii. Fix a bug with shell-expand-line readline command that caused it to
interpret quoted single quotes incorrectly when inside $'...'.
jjjjjj. Fix to the declare builtin to catch more invalid option combinations.
kkkkkk. Fix to avoid unsafe execution of the EXIT trap if a terminating signal
arrives while bash is waiting for a foreground process.
llllll. Fixed a bug that allowed attribute changes to readonly variables that
changed the effects of attempted assignments.
mmmmmm. Fix bug that caused quoting errors if $* was expanded in a context
where word splitting was not performed.
oooooo. Fix bug that caused declare commands with `-' and `+' options and an
assignment statement to be misinterpreted.
pppppp. Retry opening startup files if the open is interrupted by a signal
and is not automatically restarted.
qqqqqq. Fix printing a case command where one of the case command lists begins
with the word `esac'.
rrrrrr. Fix for history and command number expansion when expanding a prompt
string that contains the @P variable transformation.
ssssss. Fix a bug that could cause the shell to hang if a script used multiple
coprocesses without manually closing file descriptors associated with
existing coprocesses.
2. Changes to Readline
a. Fixed a bug in clearing the visible line structure before redisplay.
b. Fix a bug where setlocale(3) returning NULL caused a crash.
c. Fixed signal checking in callback mode to handle signals that arrive before
readline restores the application's signal handlers.
d. Fixed a bug with word completion where the directory name needs to be
dequoted and tilde-expanded.
e. Fixed a bug that caused compilation to fail on systems with select but not
pselect.
f. System-specific changes for: WIN32, z/OS, Cygwin, MSYS
g. Fixed a bug that caused word completion mismatches if the quoted text the
user typed was longer than the unquoted match.
h. Fixes for freeing undo lists that might appear in history list entries
after non-incremental searches.
i. Fixes for some errors revealed by address sanitizer.
j. In vi mode, if an `f' or `F' move command associated with a `c' or `C'
command fails, don't enter insert mode.
k. Fixed bug with truncating a history file containing timestamps that caused
the timestamp associated with the first history entry not to be written.
l. Fix vi-mode so that a motion command attached to d/D, y/Y, or t/T must
consume or delete at least one character.
m. Fix a redisplay error when displaying meta characters as octal sequences
and other C locale issues.
n. Fix error that caused characters composing an incomplete multibyte
character not to be inserted into the line.
o. In callback mode, let the application echo the signal characters (e.g., ^C)
when the application's signal handlers are installed.
p. Added some support for lines that consume more than the physical number of
screen lines.
q. Make sure dump-variables returns the string values for active-region-start-color
and active-region-end-color if they're set.
r. Fixes to how characters between 128 and 159 are printed when displaying
macro values (use symbolic notation instead of directly printing the
character).
s. Don't convert meta characters that contain NULL (\M-\C-@) to actual NULs,
which prematurely terminates the macro value.
t. Fix typo in the readline color prefix extension that it uses for coloring
filename prefixes when displaying possible completions.
u. Call the filename rewrite hook on the word being completed before comparing
it against possible completions from the file system to get consistent
strings.
v. Fix infinite recursion that can happen if someone binds a key that doesn't
have a different upper and lower case representation to do-lowercase-version.
w. Check for non-ANSI (dumb) terminals a little more thoroughly.
x. Don't attempt to history-expand the `quick substitution' character at the
beginning of a line if the application has set the quoting state to single
quotes.
y. Fix small memory leak if non-incremental or incremental search is
interrupted by a signal.
z. Loading very large history files should be much faster.
aa. Retry opening startup files if the open is interrupted by a signal
and is not automatically restarted.
3. New Features in Bash
a. When checking whether a script file argument is a binary file, check the
first two lines of a script if the first line begins with `#!'.
b. Bash does a better job of preserving user-supplied quotes around a word
completion, instead of requoting it.
c. Bash reports the starting line number in an error message about an
unterminated compound command like `if' without a `fi'.
d. Implement the POSIX requirement that running the `jobs' builtin removes
jobs from the jobs list.
f. Call bash signal handlers while executing programmable completion commands,
instead of readline's.
g. Print an error message if a regular expression used with [[ fails to compile.
h. The `umask' builtin now has additional features for full POSIX conformance.
i. `type -a -P' reports both hashed pathnames and the result of a $PATH search.
j. `trap' has a new -P option that prints the trap action associated with each
signal argument.
k. The `command' builtin preceding a declaration builtin (e.g., `declare')
preserves the special assignment statement parsing for the declation
builtin. This is a new POSIX requirement.
l. `printf' uses the `alternate form' for %q and %Q to force single quoting.
m. `printf' now interprets %ls (%S) and %lc (%C) as referring to wide strings
and characters, respectively, when in a multibyte locale.
n. The shell can be compiled with a different default value for the
patsub_replacement option.
o. Check for window size changes during trap commands, `bind -x' commands,
and programmable completion.
p. Treat a NULL value for $PATH as equivalent to ".".
p. New loadable builtins: kv, strptime
q. GLOBSORT: new variable to specify how to sort the results of pathname
expansion (name, size, blocks, mtime, atime, ctime, none) in ascending
or descending order.
r. `compgen' has a new option: -V varname. If supplied, it stores the generated
completions into VARNAME instead of printing them on stdout.
s. New form of command substitution: ${ command; } or ${|command;} to capture
the output of COMMAND without forking a child process and using pipes.
t. array_expand_once: new shopt option, replaces assoc_expand_once
u. complete/compopt new option: fullquote; sets rl_full_quoting_desired so all
possible completions are quoted as if they were filenames.
v. Command timing now allows precisions up to 6 digits instead of 3 in
$TIMEFORMAT.
w. BASH_MONOSECONDS: new dynamic variable that returns the value of the
system's monotonic clock, if one is available.
x. BASH_TRAPSIG: new variable, set to the numeric signal number of the trap
being executed while it's running.
y. The checkwinsize option can be used in subshell commands started from
interactive shells.
z. In posix mode, the test command < and > binary primaries compare strings
using the current locale.
aa. bind -x allows new key binding syntax: separate the key sequence and the
command string with whitespace, but require the command string to be
double-quoted if this is used. This allows different quoting options for
the command string.
bb. Print commands bound to key sequences using `bind -x' with the new key
binding syntax it allows.
cc. `read' has a new `-E' option to use readline but with the default bash
completion (including programmable completion).
dd. New bindable readline command name: `bash-vi-complete'.
ee. New test builtin behavior when parsing a parenthesized subexpression and
test was given more than 4 arguments: scan forward for a closing paren and
call posixtest() if there are 4 or fewer arguments between the parentheses.
Added for compatibility with coreutils test, dependent on the shell
compatibility level. Such expressions remain ambiguous.
4. New Features in Readline
a. Output a newline if there is no prompt and readline reads an empty line.
b. The history library falls back to stdio when writing the history list if
mmap fails.
c. New bindable variable `search-ignore-case', causes readline to perform
case-insensitive incremental and non-incremental history searches.
d. rl_full_quoting_desired: new application-settable variable, causes all
completions to be quoted as if they were filenames.
e. rl_macro_display_hook: new application-settable function pointer, used if
the application wants to print macro values itself instead of letting
readline do it
f. rl_reparse_colors: new application-callable function, reparses $LS_COLORS
(presumably after the user changes it)
g. rl_completion_rewrite_hook: new application-settable function pointer,
called to modify the word being completed before comparing it against
pathnames from the file system.
h. execute-named-command: a new bindable command that reads the name of a
readline command from the standard input and executes it. Bound to M-x
in emacs mode by default.
i. Incremental and non-incremental searches now allow ^V/^Q (or, in the former
case, anything bound to quoted-insert) to quote characters in the search
string.
j. There is a new rl_print_keybinding function that prints the key bindings
for a single bindable function specified by name.
------------------------------------------------------------------------------
This document details the changes between this version, bash-5.2-release, and
the previous version, bash-5.2-rc4.
1. Changes to Bash
2. Changes to Readline
a. When replacing a history entry, make sure the existing entry has a non-NULL
timestamp before copying it; it may have been added by the application, not
the history library.
3. New Features in Bash
4. New Features in Readline
------------------------------------------------------------------------------
This document details the changes between this version, bash-5.2-rc4, and
the previous version, bash-5.2-rc3.
1. Changes to Bash
a. Changed how the compatibility mode enabling of extglob works in conjunction
with parsing conditional commands.
b. Fixed a problem with aliases containing command substitutions.
2. Changes to Readline
3. New Features in Bash
4. New Features in Readline
------------------------------------------------------------------------------
This document details the changes between this version, bash-5.2-rc3, and
the previous version, bash-5.2-rc2.
1. Changes to Bash
a. Added a compatibility mode feature that causes the parser to parse command
substitutions as if extglob were enabled. If it is enabled before execution,
parse at execution will succeed. If not, the subsequent execution parse will
fail.
b. Fixed an issue with handling a `return' executed in a trap action if the
trap is executed while running in a shell function.
2. Changes to Readline
3. New Features in Bash
4. New Features in Readline
a. Readline now checks for changes to locale settings (LC_ALL/LC_CTYPE/LANG)
each time it is called, and modifies the appropriate locale-specific display
and key binding variables when the locale changes.
------------------------------------------------------------------------------
This document details the changes between this version, bash-5.2-rc2, and
the previous version, bash-5.2-rc1.
1. Changes to Bash
a. Fixed a bug that could disable history saving after a compound array
assignment in an interactive shell.