-
Notifications
You must be signed in to change notification settings - Fork 1
/
CHANGES
7829 lines (5269 loc) · 308 KB
/
CHANGES
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-4.3-release, and
the previous version, bash-4.3-rc2.
1. Changes to Bash
a. Only Posix-mode shells should exit on an assignment failure in the
temporary environment preceding a special builtin. This is how it's been
documented.
b. Fixed a bug that caused a failed special builtin to not exit a posix-mode
shell if the failing builtin was on the LHS of a && or ||.
c. Changed the handling of unquoted backslashes in regular expressions to be
closer to bash-4.2.
d. globstar (**) no longer traverses symbolic links that resolve to
directories. This eliminates some duplicate entries.
e. Fixed a bug that caused a SIGCHLD trap handler to not be able to change the
SIGCHLD disposition.
f. Fixed a bug that caused a crash when -x was enabled and a command
contained a printable multibyte (wide) character.
g. Fixed a bug that caused an interactive shell without line editing enabled
to read invalid data after receiving a SIGINT.
h. Fixed a bug that caused command word completion to fail if the directory in
$PATH where the completion would be found contained single or double quotes.
i. Fixed a bug that caused a shell with -v enabled to print commands in $()
multiple times.
2. Changes to Readline
a. Fixed a bug that caused `undo' to reference freed memory or null pointers.
3. New Features in Bash
a. The [[ -v ]] option now understands array references (foo[1]) and returns
success if the referenced element has a value.
------------------------------------------------------------------------------
This document details the changes between this version, bash-4.3-rc2, and the
previous version, bash-4.3-rc1.
1. Changes to Bash
a. Fixed a bug that left variables set by printf -v marked as invisible.
b. Fixed an off-by-one error in a job control warning message.
c. Fixed a bug that caused the shell to crash after declaring a nameref variable
without a value.
d. Fixed a bug that caused asynchronous commands to not set $? correctly.
e. Fixed a bug that caused out-of-order execution when executing aliases with
embedded newlines containing `.' commands.
f. Fixed a bug that caused error messages generated by expansion errors in
`for' commands to have the wrong line number.
g. Fixed a bug that caused the `wait' builtin to not be interruptible in an
interactive shell with job control enabled.
h. Fixed a bug that caused SIGINT and SIGQUIT to not be trappable in
asynchronous subshell commands.
i. Bash now requires that the value assigned to a nameref variable be a valid
shell identifier (variable name or array reference).
j. Converting an existing variable to a nameref variable now turns off the
-i/-l/-u/-c attributes.
k. Displaying a nameref variable with `declare -p' now displays the nameref
variable and its value rather than following the nameref chain.
l. Fixed a problem with interrupt handling that caused a second and subsequent
SIGINT to be ignored by interactive shells.
m. Fixed a bug that caused certain positional parameter and array expansions
to mishandle (discard) null positional parameters and array elements.
n. The shell no longer blocks receipt of signals while running trap handlers
for those signals, and allows most trap handlers to be run recursively
(running trap handlers while a trap handler is executing).
o. The shell now handles backslashes in regular expression arguments to the
[[ command's =~ operator slightly differently, resulting in more
consistent behavior.
2. Changes to Readline
a. Fixed a bug that could cause readline to crash and seg fault attempting to
expand an empty history entry.
b. Fixed a bug that caused a bad entry in the $LS_COLORS variable to abort all
color processing but leave color enabled.
c. Fixed a bug that caused display problems with multi-line prompts containing
invisible characters on multiple lines.
d. Fixed a bug that caused effects made by undoing changes to a history line to
be discarded.
3. New Features in Bash
4. New Features in Readline
a. When creating shared libraries on Mac OS X, the pathname written into the
library (install_name) no longer includes the minor version number.
------------------------------------------------------------------------------
This document details the changes between this version, bash-4.3-rc1, and the
previous version, bash-4.3-beta2.
1. Changes to Bash
a. Fixed a bug in bash completion that caused a tilde to be expanded even if
the `direxpand' option was not enabled.
b. Fixed a potential bug that could cause corrupted input in interactive shells
running without line editing and with `ignoreeof' enabled.
c. Fixed a bug that could cause failures when opening pipes back to shells
created to run process substitutions.
d. Fixed a bug that caused an assignment to TEXTDOMAIN to require TEXTDOMAINDIR
to be set in order to actually change the current text domain.
e. Changed the way redirections are printed to avoid confusion when the target
of an output redirection is a process substitution beginning with `>'.
2. Changes to Readline
a. Shared library building is now supported on Mac OS X 10.9 (Darwin 13).
3. New Features in Bash
a. `cd' has a new `-@' option to browse a file's extended attributes on
systems that support O_XATTR.
4. New Features in Readline
a. There are additional default key bindings for MinGW32
------------------------------------------------------------------------------
This document details the changes between this version, bash-4.3-beta2, and the
previous version, bash-4.3-beta.
1. Changes to Bash
a. Fixed a bug that caused assignment to an unset variable using a negative
subscript to result in a segmentation fault.
b. Fixed a bug that caused assignment to a string variable using a negative
subscript to use the incorrect index.
c. Fixed a bug that caused some strings to be interpreted as invalid
extended globbing expressions when used with the help builtin.
d. Fixed a bug that caused an attempt to trap a signal whose disposition
cannot be changed to reference uninitialized memory.
e. Command completion now skips assignment statements preceding a command
name and completes the command.
f. Fixed a bug that caused `compgen -f' in a non-interactive shell to dump
core under certain circumstances.
g. Fixed a bug that caused the `read -N' to misbehave when the input stream
contains 0xff.
2. Changes to Readline
a. Changed message when an incremental search fails to include "failed" in
the prompt and display the entire search string instead of just the last
matching portion.
b. Fixed a bug that caused an arrow key typed to an incremental search prompt
to process the key sequence incorrectly.
c. Additional key bindings for arrow keys on MinGW.
3. New Features in Bash
a. The help builtin now attempts substring matching (as it did through
bash-4.2) if exact string matching fails.
b. The fc builtin now interprets -0 as the current command line.
c. Completing directory names containing shell variables now adds a trailing
slash if the expanded result is a directory.
4. New Features in Readline
a. rl_change_environment: new application-settable variable that controls
whether or not Readline modifies the environment (currently readline
modifies only LINES and COLUMNS).
------------------------------------------------------------------------------
This document details the changes between this version, bash-4.3-beta, and the
previous version, bash-4.3-alpha.
1. Changes to Bash
a. Fixed a bug in the prompt directory name "trimming" code that caused
memory corruption and garbled the results.
b. Fixed a bug that caused single quotes that resulted from $'...' quoting
in the replacement portion of a double-quoted ${word/pat/rep} expansion
to be treated as quote characters.
c. Fixed a bug that caused assignment statements preceding a command word to
result in assignment statements following a declaration command to not be
expanded like assignment statements.
d. Fixed a bug with variable search order in the presence of local variables
with the same name as variables in the temporary environment supplied to
a shell function.
e. Fixed a bug that caused constructs like 1<(2) to be interpreted as process
substitutions even in an arithmetic context.
f. Fixed several cases where `invisible' variables (variables with attributes
but no values, which are technically unset) were treated incorrectly.
g. Fixed a bug that caused group commands in pipelines that were not the
last element to not run the EXIT trap.
h. Fixed a bug that caused `unset -n' to not unset a nameref variable in
certain cases.
i. Fixed the nameref circular reference checking to be less strict and only
disallow a nameref variable with the same value as its name at the global
scope.
j. Fixed a bug that caused trap handlers to be executed recursively,
corrupting internal data structures.
k. Fixed a bug that could result in bash not compiling if certain options were
not enabled.
l. Fixed a bug that caused the arithmetic expansion code to attempt variable
assignments when operator precedence prohibited them.
m. Word expansions like ${foo##bar} now understand indirect variable references.
n. Fixed a bug that caused `declare -fp name' to not display a function
definition.
o. Fixed a bug that caused asynchronous child processes to modify the stdin
file pointer when bash was using it to read a script, which modified the
parent's value as well.
2. Changes to Readline
a. Fixed a bug in vi mode that caused the arrow keys to set the saved last
vi-mode command to the wrong value.
b. Fixed a bug that caused double-quoted strings to be scanned incorrectly
when being used as the value of a readline variable assignment.
c. Fixed a bug with vi mode that prevented `.' from repeating a command
entered on a previous line (command).
d. Fixed a bug that could cause completion to core dump if it was interrupted
by a signal.
e. Readline now sends the meta-key enable string to the terminal if the
terminal has been successfully initialized.
f. Readline now calls the signal hook after resizing the terminal when it
receives a SIGWINCH.
g. Fixed a bug that could cause the history list code to perform an out-of-
bounds array reference if the history list is empty.
3. New Features in Bash
a. Shells started to run process substitutions now run any trap set on EXIT.
b. There is now a configure-time option to enable the globasciiranges option
by default.
c. The read builtin now checks its first variable argument for validity before
trying to read any input.
------------------------------------------------------------------------------
This document details the changes between this version, bash-4.3-alpha,
and the previous version, bash-4.2-release.
1. Changes to Bash
a. Fixed several bugs concerning incomplete bracket expressions in filename
generation (globbing) patterns.
b. Fixed a bug with single quotes and WORD in ${param op WORD} when running
in Posix mode.
c. Fixed a bug that caused the pattern removal and pattern substitution word
expansions and case statement word expansion to not match the empty string.
d. Fixed a bug that caused the tzset() function to not work after changing
the TZ enviroment variable.
e. Fixed a bug that caused the RHS of an assignment statement to undergo
word splitting when it contained an unquoted $@.
f. Fixed bugs that caused the shell to not react to a SIGINT sent while
waiting for a child process to exit.
g. Bash doesn't try to run things in a signal handler context when it gets a
signal (SIGINT/SIGHUP/etc) while reading input using readline but still
be responsive to terminating signals.
h. Fixed a bug that caused bash to go into an infinite loop if a filename
to be matched contained an invalid multibyte character.
i. Fixed a bug that caused PS4 to end up being truncated if it is longer
than 128 bytes.
j. Fixed a bug that caused brace expansion to not skip over double-quoted
command substitution.
k. System-specific updates for: DJGPP, HP/UX, Mac OS X
l. Fixed a bug in displaying commands that caused redirections to be associated
with the wrong part of the command.
m. Fixed the coproc cleanup to unset the appropriate shell variables when a
coproc terminates.
n. Fixed a bug that caused `fc' to dump core due to incorrect calculation of
the last history entry.
o. Added workarounds for FreeBSD's implementation of faccessat/eaccess and
`test -x'.
p. Fixed a bug that caused the shell to not match patterns containing
control-A.
q. Fixed a bug that could result in doubled error messages when the `printf'
builtin got a write error.
r. Fixed a bug that caused the shell to not correctly expand words containing
multiple consecutive quoted empty strings (""""""aa).
s. Fixed a bug that caused the shell to not correctly parse multi-line
process substitutions containing comments and quoted strings.
t. Fixed a problem with the bash malloc's internal idea of the top of the
memory heap that resulted in incorrect decisions to try to reduce the
break and give memory back to the kernel.
u. There are changes to the expansions peformed on compound array assignments,
in an effort to make foo=( [ind1]=bar [ind2]=baz ) identical to
foo[ind1]=bar foo[ind2]=baz.
v. Bash now reports an error if `read -a name' is used when `name' is an
existing associative array.
w. Fixed a bug that allowed an attempted assignment to a readonly variable
in an arithmetic expression to not return failure.
x. Fixed several bugs that caused completion functions to be invoked even when
the cursor was before the first word in the command.
y. Fixed a bug that caused parsing a command substitution to overwrite the
parsing state associated with the complete input line.
z. Fixed several bugs with the built-in snprintf replacement and field widths
and floating point.
aa. Fixed a bug that caused incorrect offset calculations and input buffer
corruption when reading files longer than 2^31 bytes.
bb. Fixed several bugs where bash performed arithmetic evaluation in contexts
where evaluation is suppressed.
cc. Fixed a bug that caused bash to close FIFOs used for process substitution
too early when a shell function was executing, but protect against using
all file descriptors when the shell functions are invoked inside loops.
dd. Added checks for printable (and non-printable) multibyte characters for
use in error messages.
ee. Fixed a bug that caused ^O (operate-and-get-next) to not work correctly
at the end of the history list.
ff. Fixed a bug that caused command-oriented history to incorrectly combine
here documents into one line.
gg. Fixed a bug that caused importing SHELLOPTS from the environment into a
Posix-mode shell to print an error message and refuse to parse it.
hh. Fixed a bug that caused the shell to delete an extra history entry when
using `history -s'.
ii. Fixed a bug that caused floating-point exceptions and overflow errors
for the / and % arithmetic operators when using INTMAX_MIN and -1.
jj. Fixed a bug that caused parsing errors when reading an arithmetic for
loop inside a command substitution.
kk. Fixed a bug that caused a readonly function to be unset when unset was
called without the -f or -v option.
ll. Fixed several bugs in the code that quotes characters special to regular
expressions when used in a quoted string on the RHS of the =~ operator
to the [[ command.
mm. Fixed a bug that caused redirections to fail because the file descriptor
limit was set to a value less than 10.
nn. Fixed a bug that caused the `read' builtin to execute code in a signal
handler context if read timed out.
oo. Fixed a bug that caused extended globbing patterns to not match files
beginning with `.' correctly when a `.' was explicitly supplied in the
pattern.
pp. Fixed a bug that caused key sequences longer than two characters to not
work when used with `bind -x'.
qq. Fixed a bug that resulted in redefined functions having the wrong source
file names in BASH_SOURCE.
rr. Fixed a bug that caused the read builtin to assign null strings to variables
when using `read -N', which caused core dumps when referenced
ss. Fixed a bug that caused `bash -m script' to not enable job control while
running the script.
tt. Fixed a bug that caused `printf -v var' to dump core when used with the
%b format code.
uu. Fixed a bug that caused the shell to exit with the wrong status if -e was
active and the shell exited on a substitution error.
vv. Fixed a bug that caused the shell to seg fault if an array variable with
the same name as an existing associative array was implicitly created by
an assignment (declare a[n]=b).
ww. Fixed a bug that caused a redirection to misbehave if the number specified
for a file descriptor overflows an intmax_t.
xx. Fixed several bugs with the handling of valid and invalid unicode character
values when used with the \u and \U escape sequences to printf and $'...'.
yy. Fixed a bug that caused tildes to not be escaped in expanded filenames,
making them subject to later expansion.
zz. When using the pattern substitution word expansion, bash now runs the
replacement string through quote removal, since it allows quotes in that
string to act as escape characters. This is not backwards compatible, so
it can be disabled by setting the bash compatibility mode to 4.2.
aaa. Fixed the rest of the cases where the shell runs non-allowed code in a
signal handler context.
bbb. Fixed a bug that caused spurious DEL characters (\177) to appear in
double-quoted expansion where the RHS is evaluated to the empty string.
ccc. Fixed a bug that caused the use of the shell's internal random number
generator for temporary file names to perturb the random number
sequence.
ddd. Fixed several bugs that caused `declare -g' to not set the right global
variables or to misbehave when declaring global indexed arrays.
eee. Fixed a logic bug that caused extended globbing in a multibyte locale to
cause failures when using the pattern substititution word expansions.
fff. Fixed a bug that caused the `lastpipe' option to corrupt the file
descriptor used to read the script.
ggg. Fixed a bug that causes the shell to delete DEL characters in the
expanded value of variables used in the same quoted string as variables
that expand to nothing.
hhh. Fixed a bug that caused the shell to assign the wrong value from an
assignment like (( x=7 )) when `x' was an existing array variable.
iii. Fixed a bug that caused the shell to misbehave when generating sequences
and the boundary values overflow an intmax_t.
jjj. Fixed a bug caused expansion errors if an expansion of "$@" appeared
next to another expansion (e.g.. "${@}${x}").
kkk. Fixed a potential buffer overflow bug when performing /dev/fd expansion.
lll. Fixed a bug that resulted in an extra semicolon being added to compound
assignments when they were added to the history list.
mmm. Fixed a bug that caused mapfile to read one extra line from the input.
nnn. Fixed a bug that caused the mail checking code to use uninitialized
values.
ooo. Fixed a bug that prevented history timestamps from being saved if the
history comment character is unset.
ppp. Fixed a bug that caused the case-modifying expansions to not work with
multibyte characters.
qqq. Fixed a bug that caused the edit-and-execute bindable readline command
to see the wrong data if invoked in the middle of a multi-line quoted
string.
rrr. Fixed a bug that resulted in the shell returning the wrong exit status
for a background command on systems that recycle PIDs very quickly.
sss. Fixed a bug that caused asynchronous group commands to not run any EXIT
trap defined in the body of the command.
ttt. Fixed a bug that caused `eval "... ; return"' to not clean up properly.
uuu. Fixed a bug that caused the shell to dump core if `read' reads an escaped
IFS whitespace character.
vvv. Fixed a bug that caused BASH_COMMAND to be set to an incorrect value when
executing a (...) subshell.
www. Fixed a couple of pointer aliasing bugs with the token string in arithmetic
evaluation.
xxx. Fixed a bug with parsing multi-line command substitutions when reading
the `do' keyword followed by whitespace.
yyy. Fixed a bug that caused the shell to seg fault if the time given to the
printf %(...)T format overflowed the value accepted by localtime(3).
zzz. Fixed a problem with displaying help topics in two columns when the
translated text contained multibyte characters.
aaaa. Fixed a bug with the extended globbing pattern matcher where a `*' was
followed by a negated extended glob pattern.
bbbb. Fixed a race condition with short-lived coproc creation and reaping that
caused the child process to be reaped before the various coproc shell
variables were initialized.
cccc. Fixed a bug where turning off `errexit' in command substitution subshells
was not reflected in $SHELLOPTS.
dddd. Partially fixed an inconsistency in how the shell treated shell
functions run from an EXIT trap.
eeee. Fixed a bug in how the shell invalidated FIFOs used for process
substitution when executing a pipeline (once rather than in every child).
ffff. Fixed a bug that occurred when expanding a special variable ($@, $*)
within double quotes and the expansion resulted in an empty string.
gggg. Fixed bugs with executing a SIGCHLD trap handler to make sure that it's
executed once per exited child.
hhhh. Fixed a bug that caused `declare' and `test' to find variables that
had been given attributes but not assigned values. Such variables are
not set.
iiii. Fixed a bug that caused commands in process substitutions to not look in
the local temporary environment when performing word expansions.
jjjj. Fixed several problems with globstar expansions (**/**) returning null
filenames and multiple instances of the same pathname.
kkkk. Fixed an oversight that did not allow the exit status of `coproc' to
be inverted using `!'.
llll. Fixed a bug that caused the -e option to be re-enabled using `set -e'
even when executing in a context where -e is ignored.
mmmm. Fixed a (mostly theoretical) bug with input lines longer than SIZE_MAX.
nnnn. Fixed a bug that could result in double evaluation of command
substitutions when they appear in failed redirections.
oooo. Fixed a bug that could cause seg faults during `mapfile' callbacks if
the callback unsets the array variable mapfile is using.
pppp. Fixed several problems with variable assignments using ${var:=value}
when the variable assignment is supposed to have side effects.
qqqq. Fixed a bug that caused a failure of an assignment statement preceding a
builtin caused the next invocation of a special builtin to exit the shell.
rrrr. Fixed several problems with IFS when it appears in the temporary environment
and is used in redirections.
ssss. Fixed a problem that caused IFS changes using ${IFS:=value} to modify
how preceding expansions were split.
tttt. Fixed a problem that caused subshells to not run an EXIT trap they set.
uuuu. Fixed a problem that caused shells started in posix mode to attempt to
import shell functions with invalid names from the environment. We now
print a warning.
vvvv. Worked around a kernel problem that caused SIGCHLD to interrupt open(2)
on a FIFO used for process substitution, even if the SIGCHLD handler was
installed with the SA_RESTART flag.
wwww. Fixed a problem that resulted in inconsistent expansion of $* and ${a[*]}.
xxxx. Fixed a problem that caused `read -t' to crash when interrupted by
SIGINT.
yyyy. Fixed a problem that caused pattern removal to fail randomly because the
pattern matcher read beyond the end of a string.
zzzz. Fixed a bug that caused core dumps when shell functions tried to create
local shadow copies of special variables like GROUPS.
aaaaa. Fixed a bug that caused SIGTERM to be occasionally lost by children of
interactive shells when it arrived before the child process reset the
handler from SIG_DFL.
bbbbb. Fixed a bug that caused redirections like <&n- to leave file descriptor
n closed if executed with a builtin command.
ccccc. Fixed a bug that caused incorrect completion quoting when completing a
word containing a globbing character with `show-all-if-ambiguous' set.
ddddd. Fixed a bug that caused printf's %q format specifier not to quote a
tilde even if it appeared in a location where it would be subject to
tilde expansion.
2. Changes to Readline
a. Fixed a bug that did not allow the `dd', `cc', or `yy' vi editing mode
commands to work on the entire line.
b. Fixed a bug that caused redisplay problems with prompts longer than 128
characters and history searches.
c. Fixed a bug that caused readline to try and run code to modify its idea
of the screen size in a signal handler context upon receiving a SIGWINCH.
d. Fixed a bug that caused the `meta' key to be enabled beyond the duration
of an individual call top readline().
e. Added a workaround for a wcwidth bug in Mac OS X that caused readline's
redisplay to mishandle zero-width combining characters.
f. Fixed a bug that caused readline to `forget' part of a key sequence when
a multiple-key sequence caused it to break out of an incremental search.
g. Fixed bugs that caused readline to execute code in a signal handler
context if interrupted while reading from the file system during completion.
h. Fixed a bug that caused readline to `forget' part of a key sequence when
reading an unbound multi-character key sequence.
i. Fixed a bug that caused Readline's signal handlers to be installed beyond
the bounds of a single call to readline().
j. Fixed a bug that caused the `.' command to not redo the most recent `R'
command in vi mode.
k. Fixed a bug that caused ignoring case in completion matches to result in
readline using the wrong match.
l. Paren matching now works in vi insert mode.
m. Fix menu-completion to make show-all-if-ambiguous and menu-complete-display-prefix
work together.
n. Fixed a bug that didn't allow the `cc', `dd', or `yy' commands to be redone
in vi editing mode.
o. Fixed a bug that caused the filename comparison code to not compare
multibyte characters correctly when using case-sensitive or case-mapping
comparisons.
p. Fixed the input reading loop to call the input hook function only when there
is no terminal input available.
q. Fixed a bug that caused binding a macro to a multi-character key sequence
where the sequence and macro value share a common prefix to not perform
the macro replacement.
r. Fixed several redisplay errors with multibyte characters and prompts
containing invisible characters when using horizontal scrolling.
s. Fixed a bug that caused redisplay errors when trying to overwrite
existing characters using multibyte characters.
3. New Features in Bash
a. The `helptopic' completion action now maps to all the help topics, not just
the shell builtins.
b. The `help' builtin no longer does prefix substring matching, so `help read'
does not match `readonly'.
c. The shell can be compiled to not display a message about processes that
terminate due to SIGTERM.
d. Non-interactive shells now react to the setting of checkwinsize and set
LINES and COLUMNS after a foreground job exits.
e. There is a new shell option, `globasciiranges', which, when set to on,
forces globbing range comparisons to use character ordering as if they
were run in the C locale.
f. There is a new shell option, `direxpand', which makes filename completion
expand variables in directory names in the way bash-4.1 did.
g. In Posix mode, the `command' builtin does not change whether or not a
builtin it shadows is treated as an assignment builtin.
h. The `return' and `exit' builtins accept negative exit status arguments.
i. The word completion code checks whether or not a filename containing a
shell variable expands to a directory name and appends `/' to the word
as appropriate. The same code expands shell variables in command names
when performing command completion.
j. In Posix mode, it is now an error to attempt to define a shell function
with the same name as a Posix special builtin.
k. When compiled for strict Posix conformance, history expansion is disabled
by default.
l. The history expansion character (!) does not cause history expansion when
followed by the closing quote in a double-quoted string.
m. `complete' and its siblings compgen/compopt now takes a new `-o noquote'
option to inhibit quoting of the completions.
n. Setting HISTSIZE to a value less than zero causes the history list to be
unlimited (setting it 0 zero disables the history list).
o. Setting HISTFILESIZE to a value less than zero causes the history file size
to be unlimited (setting it to 0 causes the history file to be truncated
to zero size).
p. The `read' builtin now skips NUL bytes in the input.
q. There is a new `bind -X' option to print all key sequences bound to Unix
commands.
r. When in Posix mode, `read' is interruptible by a trapped signal. After
running the trap handler, read returns 128+signal and throws away any
partially-read input.
s. The command completion code skips whitespace and assignment statements
before looking for the command name word to be completed.
t. The build process has a new mechanism for constructing separate help files
that better reflects the current set of compilation options.
u. The -nt and -ot options to test now work with files with nanosecond
timestamp resolution.
v. The shell saves the command history in any shell for which history is
enabled and HISTFILE is set, not just interactive shells.
w. The shell has `nameref' variables and new -n(/+n) options to declare and
unset to use them, and a `test -R' option to test for them.
x. The shell now allows assigning, referencing, and unsetting elements of
indexed arrays using negative subscripts (a[-1]=2, echo ${a[-1]}) which
count back from the last element of the array.
y. The {x}<word redirection feature now allows words like {array[ind]} and
can use variables with special meanings to the shell (e.g., BASH_XTRACEFD).
z. There is a new CHILD_MAX special shell variable; its value controls the
number of exited child statues the shell remembers.
aa. There is a new configuration option (--enable-direxpand-default) that
causes the `direxpand' shell option to be enabled by default.
bb. Bash does not do anything special to ensure that the file descriptor
assigned to X in {x}<foo remains open after the block containing it
completes.
cc. The `wait' builtin has a new `-n' option to wait for the next child to
change status.
dd. The `printf' %(...)T format specifier now uses the current time if no
argument is supplied.
ee. There is a new variable, BASH_COMPAT, that controls the current shell
compatibility level.
ff. The `popd' builtin now treats additional arguments as errors.
gg. The brace expansion code now treats a failed sequence expansion as a
simple string and will continue to expand brace terms in the remainder
of the word.
4. New Features in Readline
a. Readline is now more responsive to SIGHUP and other fatal signals when
reading input from the terminal or performing word completion but no
longer attempts to run any not-allowable functions from a signal handler
context.
b. There are new bindable commands to search the history for the string of
characters between the beginning of the line and the point
(history-substring-search-forward, history-substring-search-backward)
c. Readline allows quoted strings as the values of variables when setting
them with `set'. As a side effect, trailing spaces and tabs are ignored
when setting a string variable's value.
d. The history library creates a backup of the history file when writing it
and restores the backup on a write error.
e. New application-settable variable: rl_filename_stat_hook: a function called
with a filename before using it in a call to stat(2). Bash uses it to
expand shell variables so things like $HOME/Downloads have a slash
appended.
f. New bindable function `print-last-kbd-macro', prints the most-recently-
defined keyboard macro in a reusable format.
g. New user-settable variable `colored-stats', enables use of colored text
to denote file types when displaying possible completions (colored analog
of visible-stats).
h. New user-settable variable `keyseq-timout', acts as an inter-character
timeout when reading input or incremental search strings.
i. New application-callable function: rl_clear_history. Clears the history list
and frees all readline-associated private data.
j. New user-settable variable, show-mode-in-prompt, adds a characters to the
beginning of the prompt indicating the current editing mode.
k. New application-settable variable: rl_input_available_hook; function to be
called when readline needs to check whether there is data available on its
input source. The default hook checks rl_instream.
l. Readline calls an application-set event hook (rl_signal_event_hook) after
it gets a signal while reading input (read returns -1/EINTR but readline
does not handle the signal immediately) to allow the application to handle
or otherwise note it. Not currently called for SIGHUP or SIGTERM.
m. If the user-settable variable `history-size' is set to a value less than
0, the history list size is unlimited.
------------------------------------------------------------------------------
This document details the changes between this version, bash-4.2-release,
and the previous version, bash-4.2-rc2.
1. Changes to Bash
a. Fixed a bug that caused some variables to be clobbered by a longjmp,
resulting in stack corruption.
------------------------------------------------------------------------------
This document details the changes between this version, bash-4.2-rc2,
and the previous version, bash-4.2-rc1.
1. Changes to Bash
a. Changes to bash_directory_completion_hook so that it's assigned to the
readline rl_directory_rewrite_hook variable, which modifies the directory
name passed to opendir without modifying the directory name the user
typed.
b. Fixed bug in select builtin that caused it to not terminate correctly if
the read timed out due to $TMOUT.
c. Fixed a problem that resulted in non-repeatable sequences of random
numbers when RANDOM=0.
------------------------------------------------------------------------------
This document details the changes between this version, bash-4.2-rc1,
and the previous version, bash-4.2-beta.
1. Changes to Bash
a. Fixed a bug that caused some redirection errors to leak file descriptors.
b. Fixed a bug that caused unary `+' and `-' arithmetic operators to have a
higher precedence than unary `!' and `~'.
c. Fixed a bug that caused simple commands in a pipeline to affect the exit
status ($?) seen by subsequent pipeline commands.
d. A number of cygwin-specific changes to avoid the use of text-mode files
and file access, and to make sure that \r is handled correctly.
e. Fixed a bug that caused the read builtin to not return failure if an
attempt is made to assign to a readonly variable.
f. Fixed a bug that caused some builtin usage messages to not be translated.
g. Fixed a bug that caused the getopts builtin to not return failure if an
attempt is made to assign to a readonly variable. Now it returns 2.
h. Fixed the cd and pwd builtins to return failure if PWD is readonly and
cannot be assigned to.
i. Added code to check the return value of access(2) on Solaris systems,
since it returns success for executable tests (e.g., `test -x') when
run by root, even if the file permissions don't allow execution.
2. Changes to Readline
a. Fixed a bug that caused directory names in words to be completed to not
be dequoted correctly.
3. New Features in Bash
4. New Features in Readline
------------------------------------------------------------------------------
This document details the changes between this version, bash-4.2-beta,
and the previous version, bash-4.2-alpha.
1. Changes to Bash
a. Fixed a bug that caused the \W prompt string escape to not add a closing
NULL.
b. Fixed a bug that caused partially-quoted words that were not subject to
word splitting to retained quoted NULLs.
c. Added considerable efficiency speedups when pattern matching in multibyte
locales by skipping multibyte character functions where possible.
d. Added considerable speedups to variable expansion when in multibyte locales.
e. Fixed a bug that caused the expansion of $* when there are no positional
parameters to cause the shell to dump core when used in a pattern
matching context.
f. Fixed a bug that caused variable expansions preceding regular builtins to
not change the shell environment during their execution.
2. Changes to Readline
a. Fixed a bug that made an explicit argument of 0 to yank-last-arg behave
as if it were a negative argument.
------------------------------------------------------------------------------
This document details the changes between this version, bash-4.2-alpha,
and the previous version, bash-4.1-release.
1. Changes to Bash
a. Fixed a bug in the parser when processing alias expansions containing
quoted newlines.
b. Fixed a memory leak in associative array expansion.
c. Fixed a bug that caused quoted here-strings to be requoted when printed.
d. Fixed a bug in arithmetic expansion that caused the index in an array
expansion to be evaluated twice under certain circumstances.
e. Fixed several bugs with the expansion and display of variables that have
been given attributes but not values and are technically unset.
f. Fixed a bug that caused core dumps when using filename completion that
expands to a filename containing a globbing character.
g. Fixed a bug that caused assignment statements preceding a special builtin
when running in Posix mode to not persist after the builtin completed
when the special builtin was executed in a shell function without any
local variables.
h. Fixed a bug that caused a command to remain in the hash table even after
`hash command' did not find anything if there was already an existing
hashed pathname.
i. Fixed several bugs caused by executing unsafe functions from a signal
handler in the cases where a signal handler is executed immediately
rather than setting a flag for later execution.
j. Fixed a bug that caused some internal flag variables to be set
incorrectly if `read -t' timed out.
k. Fixed a Posix compatibility issue by making sure that a backslash escaping
a `}' within a double-quoted ${...} parameter expansion is removed as part
of the parameter expansion.
l. Fixed a bug that caused execution of a trap to overwrite PIPESTATUS.
m. Fixed a bug that caused here documents to not be displayed correctly
when attached to commands inside compound commands.
n. Fixed a bug that caused the printf builtin to use the wrong precision
when using the `*' modifier.
o. Fixed a bug that caused an arriving SIGCHLD to interrupt output functions
like those invoked by echo or printf.
p. Changed to use a more robust mechanism than eaccess(2) when test is
checking filenames for execution permission.
q. Fixed a bug that caused spurious semicolons to be added into the command
history in certain cases.