More Makefile updates; updates for bash-5.3-beta

This commit is contained in:
Chet Ramey
2024-11-15 11:15:23 -05:00
parent b116cfe57d
commit fa68e6da80
22 changed files with 1018 additions and 492 deletions
+169
View File
@@ -1,3 +1,172 @@
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.
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.
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.
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 specifes (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.
------------------------------------------------------------------------------
This document details the changes between this version, bash-5.3-alpha, and
the previous version, bash-5.2-release.
+169
View File
@@ -1,3 +1,172 @@
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.
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.
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.
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 specifes (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.
------------------------------------------------------------------------------
This document details the changes between this version, bash-5.3-alpha, and
the previous version, bash-5.2-release.
+22 -3
View File
@@ -9140,7 +9140,7 @@ bashline.c
to dequote the entire pathname
- command_word_completion_function: since the directory name from $PATH
is not quoted, use the dequoted hint to construct the full pathname
to pass to rl_filename_completion_function (possibly after quoting it
to pass to rl_filename_completion_function (possibly after quoting it)
From https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=306043
4/10
@@ -10483,7 +10483,7 @@ builtins/common.c
POSIX interp 1602, in POSIX.1-2024
stringlib.c
- find_token_in_alist: if FLAGS is non-zero, do *no* allocate new
- find_token_in_alist: if FLAGS is non-zero, do *not* allocate new
memory for the token. The existing behavior is to allocate memory
and return a copy of the token, and all callers pass 0
@@ -10620,7 +10620,7 @@ lib/termcap/termcap.c
Makefile.in
- y.tab.h: move from CREATED_HEADERS to INSTALLED_HEADERS so we don't
clean it
- maybe-clean: slightly chnage the syntax of the recipe
- maybe-clean: slightly change the syntax of the recipe
doc/Makefile.in
- PSFILES: split into CREATED_PS and ps files from the distro
@@ -10631,3 +10631,22 @@ doc/Makefile.in
- mostlyclean: don't remove Makefile
- maybe-clean: use realpath equivalent like in top-level Makefile.in
Report from Mike Jonkmans <bashbug@jonkmans.nl>
11/11
-----
Makefile.in,doc/Makefile.in,lib/glob/Makefile.in,lib/readline/Makefile.in
lib/malloc/Makefile.in.,lib/tilde/Makefile.in
- mostlyclean: swap with clean where appropriate
- add .PHONY target for clean targets where appropriate
Makefile.in,configure.ac
- STDCKDINT_H: variable for possibly-created file stdckdint.h, for
dependencies; add dependencies where appropriate
Makefile.in,doc/Makefile.in
- add various gnu-standard install targets that do nothing
11/14
-----
CHANGES,NEWS
- updated for bash-5.3-beta
+2 -2
View File
@@ -692,8 +692,8 @@ doc/fdl.txt f
#
doc/article.ps f
doc/rose94.ps f
doc/bash.ps f
doc/bashref.ps f
#doc/bash.ps f
#doc/bashref.ps f
doc/bashref.dvi f
doc/bash.0 f
doc/bashbug.0 f
+31 -7
View File
@@ -439,6 +439,8 @@ $(MALLOC_LIBRARY): ${MALLOC_SOURCE} ${ALLOC_HEADERS} config.h
$(MAKE) $(BASH_MAKEFLAGS) \
MALLOC_CFLAGS="$(MALLOC_CFLAGS)" ${MALLOC_TARGET} ) || exit 1
STDCKDINT_H = @STDCKDINT_H@
BASHINCDIR = ${srcdir}/include
BASHINCFILES = $(BASHINCDIR)/posixstat.h $(BASHINCDIR)/ansi_stdlib.h \
$(BASHINCDIR)/filecntl.h $(BASHINCDIR)/posixdir.h \
@@ -500,7 +502,7 @@ INSTALLED_HEADERS = shell.h bashjmp.h command.h syntax.h general.h error.h \
conftypes.h unwind_prot.h jobs.h siglist.h \
execute_cmd.h y.tab.h
INSTALLED_BUILTINS_HEADERS = bashgetopt.h common.h getopt.h
INSTALLED_INCFILES = posixstat.h ansi_stdlib.h filecntl.h posixdir.h \
INSTALLED_INCLUDE_HEADERS = posixstat.h ansi_stdlib.h filecntl.h posixdir.h \
memalloc.h stdc.h posixjmp.h posixwait.h posixtime.h systimes.h \
unionwait.h maxpath.h shtty.h typemax.h ocache.h chartypes.h gettext.h \
posixstat.h shmbchar.h shmbutil.h stat-time.h posixselect.h \
@@ -607,6 +609,7 @@ CREATED_MAKEFILES = Makefile builtins/Makefile doc/Makefile \
lib/intl/Makefile po/Makefile po/Makefile.in
CREATED_HEADERS = signames.h config.h pathnames.h version.h \
${DEFDIR}/builtext.h
CREATED_SUBDIR_HEADERS = ${LIBINTL_H}
OTHER_DOCS = $(srcdir)/CHANGES $(srcdir)/COMPAT $(srcdir)/NEWS $(srcdir)/POSIX \
$(srcdir)/RBASH $(srcdir)/README
@@ -798,7 +801,7 @@ syntax.c: mksyntax${EXEEXT} $(srcdir)/syntax.h
$(RM) $@
./mksyntax$(EXEEXT) -o $@
$(BUILTINS_LIBRARY): $(DEFDIR)/builtext.h $(BUILTIN_DEFS) $(BUILTIN_C_SRC) config.h ${BASHINCDIR}/memalloc.h
$(BUILTINS_LIBRARY): $(DEFDIR)/builtext.h $(BUILTIN_DEFS) $(BUILTIN_C_SRC) config.h ${BASHINCDIR}/memalloc.h pathnames.h
@(cd $(DEFDIR) && $(MAKE) $(BASH_MAKEFLAGS) DEBUG=${DEBUG} targets ) || exit 1
# these require special rules to circumvent make builtin rules
@@ -872,7 +875,7 @@ loadables: .made
doc documentation: force
@(cd $(DOCDIR) ; $(MAKE) $(BASH_MAKEFLAGS) )
info dvi ps: force
info dvi ps pdf html: force
@(cd $(DOCDIR) ; $(MAKE) $(BASH_MAKEFLAGS) CFLAGS='$(CCFLAGS)' $@ )
force:
@@ -886,6 +889,16 @@ tags: $(SOURCES) $(BUILTIN_C_SRC) $(LIBRARY_SOURCE)
# Targets that actually do things not part of the build
install-html:
@(cd $(DOCDIR) ; $(MAKE) $(BASH_MAKEFLAGS) CFLAGS='$(CCFLAGS)' $@ )
install-info:
install-dvi:
install-pdf:
install-ps:
installcheck:
installdirs:
@${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(bindir)
@${SHELL} $(SUPPORT_SRC)mkinstalldirs $(DESTDIR)$(man1dir)
@@ -920,7 +933,7 @@ install-headers: install-headers-dirs
@for hf in $(INSTALLED_HEADERS) ; do \
${INSTALL_DATA} $(srcdir)/"$$hf" $(DESTDIR)$(headersdir)/$$hf || exit 1; \
done
@for hf in $(INSTALLED_INCFILES) ; do \
@for hf in $(INSTALLED_INCLUDE_HEADERS) ; do \
${INSTALL_DATA} $(BASHINCDIR)/"$$hf" $(DESTDIR)$(headersdir)/include/$$hf || exit 1; \
done
@for hf in $(INSTALLED_BUILTINS_HEADERS) ; do \
@@ -933,13 +946,21 @@ install-headers: install-headers-dirs
${INSTALL_DATA} $(srcdir)/"$$hf" $(DESTDIR)$(headersdir)/$$hf || exit 1; \
fi ; \
done
@SDH=${CREATED_SUBDIR_HEADERS} ; \
for hf in $${SDH} ; do \
$(INSTALL_DATA) "$$hf" $(DESTDIR)$(headersdir)/ ; \
done
-$(INSTALL_DATA) $(SUPPORT_DIR)/bash.pc $(DESTDIR)$(pkgconfigdir)/bash.pc
uninstall-headers:
-( cd $(DESTDIR)$(headersdir) && $(RM) $(INSTALLED_HEADERS) )
-( cd $(DESTDIR)$(headersdir)/include && $(RM) $(INSTALLED_INCFILES) )
-( cd $(DESTDIR)$(headersdir)/include && $(RM) $(INSTALLED_INCLUDE_HEADERS) )
-( cd $(DESTDIR)$(headersdir)/builtins && $(RM) $(INSTALLED_BUILTINS_HEADERS) )
-( cd $(DESTDIR)$(headersdir) && $(RM) $(CREATED_HEADERS) )
-@SDH=${CREATED_SUBDIR_HEADERS} ; \
for hf in $${SDH} ; do \
( cd $(DESTDIR)$(headersdir) && $(RM) `basename "$$hf"` )
done
-( $(RM) $(DESTDIR)$(pkgconfigdir)/bash.pc )
uninstall: .made
@@ -1332,6 +1353,7 @@ nojobs.o: sig.h error.h ${BASHINCDIR}/shtty.h input.h parser.h
nojobs.o: $(DEFDIR)/builtext.h
nojobs.o: $(BASHINCDIR)/ocache.h $(BASHINCDIR)/chartypes.h $(BASHINCDIR)/typemax.h
nojobs.o: $(BASHINCDIR)/unlocked-io.h
nojobs.o: shell.h pathnames.h
# shell features that may be compiled in
@@ -1373,7 +1395,8 @@ braces.o: general.h xmalloc.h bashtypes.h variables.h arrayfunc.h conftypes.h ar
braces.o: quit.h ${BASHINCDIR}/maxpath.h unwind_prot.h dispose_cmd.h
braces.o: make_cmd.h subst.h sig.h pathnames.h externs.h
braces.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h
braces.o: ${BASHINCDIR}/typemax.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h
braces.o: ${BASHINCDIR}/typemax.h ${BASHINCDIR}/ocache.h ${BASHINCDIR}/chartypes.h
braces.o: ${STDCKDINT_H} ${BASHINCDIR}/intprops-internal.h
alias.o: config.h bashansi.h ${BASHINCDIR}/ansi_stdlib.h command.h ${BASHINCDIR}/stdc.h
alias.o: general.h xmalloc.h bashtypes.h externs.h alias.h
alias.o: pcomplete.h hashlib.h
@@ -1520,6 +1543,7 @@ unwind_prot.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
variables.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
version.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
xmalloc.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
xmalloc.o: ${STDCKDINT_H} ${BASHINCDIR}/intprops-internal.h
# XXX
$(MALLOC_SOURCE): bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
@@ -1627,7 +1651,6 @@ $(DEFDIR)/exec.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h
$(DEFDIR)/exec.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h
$(DEFDIR)/exec.o: dispose_cmd.h make_cmd.h subst.h externs.h execute_cmd.h
$(DEFDIR)/exec.o: findcmd.h flags.h quit.h $(DEFSRC)/common.h ${BASHINCDIR}/stdc.h
$(DEFDIR)/exec.o: pathnames.h
$(DEFDIR)/exit.o: bashtypes.h
$(DEFDIR)/exit.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
$(DEFDIR)/exit.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h quit.h
@@ -1695,6 +1718,7 @@ $(DEFDIR)/printf.o: variables.h arrayfunc.h conftypes.h ${BASHINCDIR}/stdc.h $(D
$(DEFDIR)/printf.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h
$(DEFDIR)/printf.o: ${BASHINCDIR}/chartypes.h
$(DEFDIR)/printf.o: $(BASHINCDIR)/unlocked-io.h
$(DEFDIR)/printf.o: ${STDCKDINT_H} ${BASHINCDIR}/intprops-internal.h
$(DEFDIR)/pushd.o: command.h config.h ${BASHINCDIR}/memalloc.h error.h general.h xmalloc.h ${BASHINCDIR}/maxpath.h
$(DEFDIR)/pushd.o: quit.h dispose_cmd.h make_cmd.h subst.h externs.h ${BASHINCDIR}/stdc.h
$(DEFDIR)/pushd.o: shell.h syntax.h bashjmp.h ${BASHINCDIR}/posixjmp.h sig.h unwind_prot.h variables.h arrayfunc.h conftypes.h
+57 -2
View File
@@ -48,8 +48,8 @@ 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.
expansion (name, size, blocks, mtime, atime, ctime, numeric, 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.
@@ -96,6 +96,53 @@ ee. New test builtin behavior when parsing a parenthesized subexpression and
Added for compatibility with coreutils test, dependent on the shell
compatibility level. Such expressions remain ambiguous.
ff. MULTIPLE_COPROCS is now enabled by default.
gg. 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.
hh. Bash now uses the login shell for $BASH if the shell is named `su' or `-su'.
ii. Bash now prints job notifications if an interactive shell is running a trap,
even though the shell is not interactive at that moment.
jj. Programmable completion allows a new compspec loaded after a completion
function returns 124 to be used in more cases.
kk. ./source has a new -p PATH option, which makes it use the PATH argument
instead of $PATH to look for the file.
ll. Documentation has been significantly updated.
mm. `wait -n' can now return terminated process substitutions, jobs about
which the user has already been notified (like `wait' without options),
nn. `wait -n' removes jobs from the jobs table or list of terminated children
when in posix mode.
oo. Changed the `wait' builtin behavior regarding process substitutions to
match the documentation.
pp. 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.
qq. Posix mode now forces job notifications to occur when the new edition of
POSIX specifes (since it now specifies them).
rr. Interactive shells don't print job notifications while sourcing scripts.
ss. The parser prints more information about the command it's trying to parse
when it encounters EOF before completing the command.
tt. Posix mode no longer requires function names to be valid shell identifiers.
uu. 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.
2. New Features in Readline
a. Output a newline if there is no prompt and readline reads an empty line.
@@ -128,6 +175,14 @@ 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. Documentation has been significantly updated.
k. 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.
l. The default value for `readline-colored-completion-prefix' no longer has a
leading `.'; the original report was based on a misunderstanding.
-------------------------------------------------------------------------------
This is a terse description of the new features added to bash-5.2 since
+56
View File
@@ -96,6 +96,53 @@ ee. New test builtin behavior when parsing a parenthesized subexpression and
Added for compatibility with coreutils test, dependent on the shell
compatibility level. Such expressions remain ambiguous.
ff. MULTIPLE_COPROCS is now enabled by default.
gg. 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.
hh. Bash now uses the login shell for $BASH if the shell is named `su' or `-su'.
ii. Bash now prints job notifications if an interactive shell is running a trap,
even though the shell is not interactive at that moment.
jj. Programmable completion allows a new compspec loaded after a completion
function returns 124 to be used in more cases.
kk. ./source has a new -p PATH option, which makes it use the PATH argument
instead of $PATH to look for the file.
ll. Documentation has been significantly updated.
mm. `wait -n' can now return terminated process substitutions, jobs about
which the user has already been notified (like `wait' without options),
nn. `wait -n' removes jobs from the jobs table or list of terminated children
when in posix mode.
oo. Changed the `wait' builtin behavior regarding process substitutions to
match the documentation.
pp. 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.
qq. Posix mode now forces job notifications to occur when the new edition of
POSIX specifes (since it now specifies them).
rr. Interactive shells don't print job notifications while sourcing scripts.
ss. The parser prints more information about the command it's trying to parse
when it encounters EOF before completing the command.
tt. Posix mode no longer requires function names to be valid shell identifiers.
uu. 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.
2. New Features in Readline
a. Output a newline if there is no prompt and readline reads an empty line.
@@ -127,3 +174,12 @@ h. execute-named-command: a new bindable command that reads the name of a
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. Documentation has been significantly updated.
k. 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.
l. The default value for `readline-colored-completion-prefix' no longer has a
leading `.'; the original report was based on a misunderstanding.
+12 -11
View File
@@ -7,16 +7,16 @@ but also with interactive command line editing, job control on
architectures that support it, csh-like features such as history
substitution and brace expansion, and a slew of other features.
For more information on the features of Bash that are new to this
type of shell, see the file `doc/bashref.texi'. There is also a
large Unix-style man page. The man page is the definitive description
of the shell's features.
type of shell, see the file `doc/bashref.info'. There is also a
large Unix-style man page. If the info fie and the man page conflict,
the man page is the definitive description of the shell's features.
See the file POSIX for a discussion of how the Bash defaults differ
from the POSIX spec and a description of the Bash `posix mode'.
There are some user-visible incompatibilities between this version
of Bash and previous widely-distributed versions, bash-4.4, bash-5.0,
and bash-5.1. For details, see the file COMPAT. The NEWS file tersely
of Bash and previous widely-distributed versions, bash-5.0, bash-5.1,
and bash-5.2. For details, see the file COMPAT. The NEWS file tersely
lists features that are new in this release.
Bash is free software, distributed under the terms of the [GNU] General
@@ -28,7 +28,7 @@ A number of frequently-asked questions are answered in the file
`doc/FAQ'. (That file is no longer updated.)
To compile Bash, type `./configure', then `make'. Bash auto-configures
the build process, so no further intervention should be necessary. Bash
the build process, so no further intervention should be necessary. Bash
builds with `gcc' by default if it is available. If you want to use `cc'
instead, type
@@ -40,13 +40,14 @@ may work:
env CC=cc ./configure
Read the file INSTALL in this directory for more information about how
to customize and control the build process. The file NOTES contains
to customize and control the build process, including how to build in a
directory different from the source directory. The file NOTES contains
platform-specific installation and configuration information.
If you are a csh user and wish to convert your csh aliases to Bash
aliases, you may wish to use the script `examples/misc/alias-conv.sh'
as a starting point. The script `examples/misc/cshtobash' is a
more ambitious script that attempts to do a more complete job.
as a starting point. The script `examples/misc/cshtobash' is a more
ambitious script that attempts to do a more complete job.
Reporting Bugs
==============
@@ -64,8 +65,8 @@ changes that people would like. This mailing list is also available
as a usenet newsgroup: gnu.bash.bug.
When you send a bug report, please use the `bashbug' program that is
built at the same time as bash. If bash fails to build, try building
bashbug directly with `make bashbug'. If you cannot build `bashbug',
built at the same time as bash. If bash fails to build, try building
bashbug directly with `make bashbug'. If you cannot build `bashbug',
please send mail to bug-bash@gnu.org with the following information:
* the version number and release status of Bash (e.g., 2.05a-release)
+5
View File
@@ -114,6 +114,8 @@ DIRECTDEFINE = -D $(srcdir)
HELPDIRDEFINE = @HELPDIRDEFINE@
HELPSTRINGS = @HELPSTRINGS@
STDCKDINT_H = @STDCKDINT_H@
# xxx this is bad style
RL_LIBSRC = $(topdir)/lib/readline
@@ -258,6 +260,8 @@ documentation: builtins.texi
builtins.texi: $(MKBUILTINS)
./$(MKBUILTINS) -documentonly $(DEFSRC)
.PHONY: basic-clean clean maintainer-clean distclean mostlyclean maybe-clean
clean:
$(RM) $(OFILES) $(CREATED_FILES) libbuiltins.a
$(RM) $(MKBUILTINS) gen-helpfiles $(CREATED_OBJECTS)
@@ -563,6 +567,7 @@ printf.o: $(topdir)/bashtypes.h ${srcdir}/common.h $(BASHINCDIR)/chartypes.h
printf.o: ${BASHINCDIR}/shmbutil.h ${BASHINCDIR}/shmbchar.h
printf.o: ../pathnames.h
printf.o: $(BASHINCDIR)/unlocked-io.h
printf.o: ${STDCKDINT_H} ${BASHINCDIR}/intprops-internal.h
pushd.o: $(topdir)/command.h ../config.h $(BASHINCDIR)/memalloc.h
pushd.o: $(topdir)/error.h $(topdir)/general.h $(topdir)/xmalloc.h
pushd.o: $(topdir)/quit.h $(topdir)/dispose_cmd.h $(topdir)/make_cmd.h
Vendored
+15 -10
View File
@@ -1,5 +1,5 @@
#! /bin/sh
# From configure.ac for Bash 5.3, version 5.073.
# From configure.ac for Bash 5.3, version 5.074.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.72 for bash 5.3-beta.
#
@@ -649,6 +649,7 @@ gl_use_threads_default=
gl_use_winpthreads_default=
enable_year2038=no
ac_subst_vars='LTLIBOBJS
STDCKDINT_H
LOCAL_DEFS
LOCAL_LDFLAGS
LOCAL_CFLAGS
@@ -9221,8 +9222,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
LIBS=$save_LIBS
test $gl_pthread_api = yes && break
done
echo "$as_me:9224: gl_pthread_api=$gl_pthread_api" >&5
echo "$as_me:9225: LIBPTHREAD=$LIBPTHREAD" >&5
echo "$as_me:9225: gl_pthread_api=$gl_pthread_api" >&5
echo "$as_me:9226: LIBPTHREAD=$LIBPTHREAD" >&5
gl_pthread_in_glibc=no
# On Linux with glibc >= 2.34, libc contains the fully functional
@@ -9248,7 +9249,7 @@ rm -rf conftest*
;;
esac
echo "$as_me:9251: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5
echo "$as_me:9252: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5
# Test for libpthread by looking for pthread_kill. (Not pthread_self,
# since it is defined as a macro on OSF/1.)
@@ -9426,7 +9427,7 @@ fi
fi
fi
echo "$as_me:9429: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5
echo "$as_me:9430: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether POSIX threads API is available" >&5
printf %s "checking whether POSIX threads API is available... " >&6; }
@@ -9673,8 +9674,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
LIBS=$save_LIBS
test $gl_pthread_api = yes && break
done
echo "$as_me:9676: gl_pthread_api=$gl_pthread_api" >&5
echo "$as_me:9677: LIBPTHREAD=$LIBPTHREAD" >&5
echo "$as_me:9677: gl_pthread_api=$gl_pthread_api" >&5
echo "$as_me:9678: LIBPTHREAD=$LIBPTHREAD" >&5
gl_pthread_in_glibc=no
# On Linux with glibc >= 2.34, libc contains the fully functional
@@ -9700,7 +9701,7 @@ rm -rf conftest*
;;
esac
echo "$as_me:9703: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5
echo "$as_me:9704: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5
# Test for libpthread by looking for pthread_kill. (Not pthread_self,
# since it is defined as a macro on OSF/1.)
@@ -9878,7 +9879,7 @@ fi
fi
fi
echo "$as_me:9881: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5
echo "$as_me:9882: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether POSIX threads API is available" >&5
printf %s "checking whether POSIX threads API is available... " >&6; }
@@ -16938,7 +16939,7 @@ INTL_DEP= INTL_INC= LIBINTL_H=
if test "x$USE_INCLUDED_LIBINTL" = "xyes"; then
INTL_DEP='${INTL_LIBDIR}/libintl.a'
INTL_INC='-I${INTL_LIBSRC} -I${INTL_BUILDDIR}'
LIBINTL_H='${INTL_BUILDDIR}/libintl.h'
LIBINTL_H='${INTL_LIBDIR}/libintl.h'
printf "%s\n" "#define HAVE_LOCALE_CHARSET 1" >>confdefs.h
@@ -23069,12 +23070,16 @@ ac_config_commands="$ac_config_commands stamp-h"
if test "$ac_cv_header_stdckdint_h" = yes; then
rm -f stdckdint.h
STDCKDINT_H=
elif cmp ${srcdir}/include/stdckdint.in.h stdckdint.h 2>/dev/null; then
:
STDCKDINT_H='${BUILD_DIR}/stdckdint.h'
else
cp ${srcdir}/include/stdckdint.in.h stdckdint.h
STDCKDINT_H='${BUILD_DIR}/stdckdint.h'
fi
cat >confcache <<\_ACEOF
# This file is a shell script that caches the results of configure
# tests run on this system so they can be shared between configure
+5 -1
View File
@@ -21,7 +21,7 @@ dnl Process this file with autoconf to produce a configure script.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
AC_REVISION([for Bash 5.3, version 5.073])dnl
AC_REVISION([for Bash 5.3, version 5.074])dnl
define(bashvers, 5.3)
define(relstatus, beta)
@@ -1370,10 +1370,14 @@ AC_CONFIG_COMMANDS([stamp-h], [echo timestamp > stamp-h])
if test "$ac_cv_header_stdckdint_h" = yes; then
rm -f stdckdint.h
STDCKDINT_H=
elif cmp ${srcdir}/include/stdckdint.in.h stdckdint.h 2>/dev/null; then
:
STDCKDINT_H='${BUILD_DIR}/stdckdint.h'
else
cp ${srcdir}/include/stdckdint.in.h stdckdint.h
STDCKDINT_H='${BUILD_DIR}/stdckdint.h'
fi
AC_SUBST(STDCKDINT_H)
AC_OUTPUT
+12
View File
@@ -222,6 +222,8 @@ OTHER_INSTALLED_DOCS = FAQ INTRO
$(MAN2HTML): ${topdir}/support/man2html.c
-( cd ${BUILD_DIR}/support ; ${MAKE} ${BASH_MAKEFLAGS} man2html)
.PHONY: clean maintainer-clean distclean mostlyclean maybe-clean
mostlyclean:
$(RM) *.aux *.bak *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps \
*.pgs *.bt *.bts *.rw *.rws *.fns *.kys *.tps *.vrs *.o
@@ -287,6 +289,16 @@ install-html: html
$(INSTALL_DATA) $(srcdir)/bashref.html $(DESTDIR)$(htmldir) ; \
fi
install-dvi:
install-pdf:
install-ps:
uninstall-html:
-if test -n "$(htmldir)" ; then \
$(RM) $(DESTDIR)$(htmldir)/bash.html ; \
$(RM) $(DESTDIR)$(htmldir)/bashref.html ; \
fi
uninstall:
-$(RM) $(DESTDIR)$(man1dir)/bash${man1ext} $(DESTDIR)$(man1dir)/bashbug${man1ext}
-$(RM) $(DESTDIR)$(man1dir)/bash_builtins${man1ext}
-2
View File
@@ -21,8 +21,6 @@
#include <unistd.h>
#include <errno.h>
#include <error.h>
#include <gettext.h>
#include <locale.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
+7 -2
View File
@@ -68,8 +68,11 @@ LIBRARY_NAME = libglob.a
# The C code source files for this library.
CSOURCES = $(srcdir)/glob.c $(srcdir)/strmatch.c $(srcdir)/smatch.c \
$(srcdir)/gmisc.c \
$(srcdir)/xmbsrtowcs.c
LOOP_FILES = $(srcdir)/glob_loop.c $(srcdir)/gm_loop.c $(srcdir)/sm_loop.c
# The header files for this library.
HSOURCES = $(srcdir)/strmatch.h
@@ -110,7 +113,9 @@ force:
# include files.
install:
clean:
.PHONY: clean maintainer-clean distclean mostlyclean
mostlyclean:
rm -f $(OBJECTS) $(LIBRARY_NAME)
-(cd doc && $(MAKE) $(BASH_MAKEFLAGS) $@ )
@@ -118,7 +123,7 @@ realclean distclean maintainer-clean: clean
-( cd doc && $(MAKE) $(BASH_MAKEFLAGS) $@ )
$(RM) -f Makefile
mostlyclean: clean
clean: mostlyclean
-( cd doc && $(MAKE) $(BASH_MAKEFLAGS) $@ )
${BUILD_DIR}/pathnames.h: ${BUILD_DIR}/config.h ${BUILD_DIR}/Makefile Makefile
+5 -1
View File
@@ -102,9 +102,13 @@ alloca.o: $(srcdir)/$(ALLOCA_SOURCE)
mv $(ALLOCA_OBJECT) alloca.o >/dev/null 2>&1 ; \
fi
mostlyclean clean:
.PHONY: clean maintainer-clean distclean mostlyclean
mostlyclean:
$(RM) *.o libmalloc.a
clean: mostlyclean
distclean realclean maintainer-clean: clean
$(RM) Makefile
+4 -2
View File
@@ -161,11 +161,13 @@ TAGS: force
tags: force
$(CTAGS) $(CSOURCES) $(HSOURCES)
clean: force
.PHONY: clean maintainer-clean distclean mostlyclean
mostlyclean: force
$(RM) $(OBJECTS) *.a
-( cd doc && $(MAKE) $(BASH_MAKEFLAGS) $@ )
mostlyclean: clean
clean: mostlyclean
-( cd doc && $(MAKE) $(BASH_MAKEFLAGS) $@ )
distclean maintainer-clean: clean
+4 -2
View File
@@ -178,7 +178,9 @@ html: $(HTMLOBJ)
text: $(TEXTOBJ)
pdf: $(PDFOBJ)
clean:
.PHONY: clean maintainer-clean distclean mostlyclean
mostlyclean:
$(RM) *.aux *.cp *.fn *.ky *.log *.pg *.toc *.tp *.vr *.cps *.pgs \
*.fns *.kys *.tps *.vrs *.bt *.bts *.o core *.core
@@ -186,7 +188,7 @@ distclean: clean
$(RM) $(CREATED_DOCS)
$(RM) $(INTERMEDIATE_OBJ)
mostlyclean: clean
clean: mostlyclean
maintainer-clean: distclean
$(RM) Makefile
+5 -2
View File
@@ -35,6 +35,7 @@ LIBBUILD = ${BUILD_DIR}/lib
BASHINCDIR = ${topdir}/include
INTL_LIBSRC = ${topdir}/lib/intl
INTL_LIBDIR = ${LIBBUILD}/intl
INTL_BUILDDIR = ${LIBBUILD}/intl
INTL_INC = @INTL_INC@
LIBINTL_H = @LIBINTL_H@
@@ -134,13 +135,15 @@ force:
# include files.
install:
clean:
.PHONY: clean maintainer-clean distclean mostlyclean
mostlyclean:
$(RM) $(OBJECTS) $(LIBRARY_NAME)
realclean distclean maintainer-clean: clean
$(RM) Makefile
mostlyclean: clean
clean: mostlyclean
# Dependencies
+1 -1
View File
@@ -270,7 +270,7 @@ sh_mktmpfd (const char *nameroot, int flags, char **namep)
}
while (fd < 0 && errno == EEXIST);
if ((flags & MT_UNLINK) && (tmpunlink (filename) < 0)
if ((flags & MT_UNLINK) && (tmpunlink (filename) < 0))
{
int e = errno;
close (fd);
+4 -2
View File
@@ -106,7 +106,9 @@ install:
$(INSTALL_DATA) -c -m 644 $(LIBRARY_NAME) $(libdir)/$(LIBRARY_NAME)
-test -n "$(RANLIB)" && $(RANLIB) -t $(libdir)/$(LIBRARY_NAME)
clean:
.PHONY: clean maintainer-clean distclean mostlyclean
mostlyclean:
$(RM) -f $(OBJECTS) $(LIBRARY_NAME)
-( cd doc && $(MAKE) $(BASH_MAKEFLAGS) $@ )
@@ -114,7 +116,7 @@ realclean distclean maintainer-clean: clean
-( cd doc && $(MAKE) $(BASH_MAKEFLAGS) $@ )
$(RM) -f Makefile
mostlyclean: clean
clean: mostlyclean
-( cd doc && $(MAKE) $(BASH_MAKEFLAGS) $@ )
######################################################################
+430 -440
View File
File diff suppressed because it is too large Load Diff
+3 -2
View File
@@ -8,9 +8,10 @@ libdir=@libdir@
loadablesdir=@loadablesdir@
headersdir=${includedir}/@PACKAGE_NAME@
LOCAL_CFLAGS = @LOCAL_CFLAGS@
DEFS = @DEFS@
LOCAL_DEFS = @LOCAL_DEFS@
CCFLAGS = ${LOCAL_DEFS} ${LOCAL_CFLAGS}
LOCAL_CFLAGS = @LOCAL_CFLAGS@
CCFLAGS = ${DEFS} ${LOCAL_DEFS} ${LOCAL_CFLAGS}
CC = @CC@
SHOBJ_CC = @SHOBJ_CC@