allow the --with-curses configure argument to specify a library name; fix for case pattern lists containing both null and non-null strings; fix for bug with PS1 expansion containing an arithmetic syntax error

This commit is contained in:
Chet Ramey
2025-08-08 12:11:17 -04:00
parent e9053f2a3a
commit ff6cfb1464
14 changed files with 2226 additions and 2105 deletions
+48
View File
@@ -11515,3 +11515,51 @@ execute_cmd.c
- execute_subshell_builtin_or_function: fix to propagate exit statuses
of builtins run in subshells back to the calling shell
From https://savannah.gnu.org/support/?109840
configure.ac
- make sure an installed version of readline is version 8.3 or newer
before using it
aclocal.m4
- if --with-curses=LIBNAME is supplied, skip the search and use
LIBNAME as the name of the library where we can find the termcap
definitions
doc/bashref.texi
- --with-curses: updated description
8/4
---
general.h
- RESIZE_MALLOCED_BUFFER: replace loop with a single statement (using
multiplication and integer division) to calculate the new size
From a report and patch by Koichi Murase <myoga.murase@gmail.com>
back in 6/2021
subst.c
- parameter_brace_expand: if we are performing parameter transformation
(c == '@') and we only want the variable's attributes (want_attributes == 1),
don't throw an unbound variable error. Tagged for bash-5.4.
Based on a report from konsolebox <konsolebox@gmail.com> in 10/2024
8/5
---
pathexp.c
- quote_string_for_globbing: if we have an unescaped CTLNUL in a
quoted string, we want to remove it. This can happen when a pattern
contains a quoted null string adjacent to non-null characters.
From a report by Takaaki Konno <re_c25@yahoo.co.jp> in 6/2025
8/7
---
subst.c
- call_expand_word_internal: honor no_longjmp_on_fatal_error: if it's
set, pass through return values of &expand_word_error and
&expand_word_fatal
- cond_expand_word,expand_subscript_string,expand_arith_string: if
call_expand_word_internal returns an error, return a NULL string
- expand_word,expand_string_internal,expand_string_assignment,
expand_string_for_rhs,expand_string_for_pat,
expand_word_leave_quoted: if call_expand_word_internal returns an
error, return a NULL WORD_LIST *
Fixes bug with PS1 expansion reported by smart.outfit080@8shield.net
+9 -4
View File
@@ -248,10 +248,15 @@ the Bash configure recognizes.
systems for which this should be turned off, and configure
disables this option automatically for a number of systems.
--with-curses
Use the curses library instead of the termcap library. configure
usually chooses this automatically, since most systems include the
termcap functions in the curses library.
--with-curses[=LIBNAME]
Use the curses library instead of the termcap library as the
library where the linker can find the termcap functions.
configure usually chooses this automatically, since most systems
include the termcap functions in the curses library. If LIBNAME is
supplied, configure does not search for an appropriate library
and uses LIBNAME instead. LIBNAME should be either an argument for
the linker (e.g., -lLIBNAME) or a filename (e.g.,
/opt/local/lib/libncursesw.so).
--with-gnu-malloc
A synonym for --with-bash-malloc.
Vendored
+9 -4
View File
@@ -943,19 +943,24 @@ if test "X$_bash_needmsg" = "Xyes"; then
AC_MSG_CHECKING(which library has the termcap functions)
fi
AC_MSG_RESULT(using $bash_cv_termcap_lib)
if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
# we assume that anyone specifying --with-curses=library is savvy enough to
# put it in a place that the linker can find it without a special -L option
if test "$opt_curses" != "no" && test "$opt_curses" != "yes" ; then
TERMCAP_LIB="$opt_curses"
TERMCAP_DEP=
elif test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
LDFLAGS="$LDFLAGS -L./lib/termcap"
TERMCAP_LIB="./lib/termcap/libtermcap.a"
TERMCAP_DEP="./lib/termcap/libtermcap.a"
elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then
TERMCAP_LIB=-ltermcap
TERMCAP_DEP=
elif test $bash_cv_termcap_lib = libtinfo; then
TERMCAP_LIB=-ltinfo
TERMCAP_DEP=
elif test $bash_cv_termcap_lib = libtinfow; then
TERMCAP_LIB=-ltinfow
TERMCAP_DEP=
elif test $bash_cv_termcap_lib = libtinfo; then
TERMCAP_LIB=-ltinfo
TERMCAP_DEP=
elif test $bash_cv_termcap_lib = libncursesw; then
TERMCAP_LIB=-lncursesw
TERMCAP_DEP=
Vendored
+29 -19
View File
@@ -1,5 +1,5 @@
#! /bin/sh
# From configure.ac for Bash 5.3, version 5.080.
# From configure.ac for Bash 5.3, version 5.082.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.72 for bash 5.3-maint.
#
@@ -3414,7 +3414,7 @@ if test "$opt_afs" = yes; then
fi
if test "$opt_curses" = yes; then
if test "$opt_curses" != "no" ; then
prefer_curses=yes
fi
@@ -5790,19 +5790,24 @@ printf %s "checking which library has the termcap functions... " >&6; }
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5
printf "%s\n" "using $bash_cv_termcap_lib" >&6; }
if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
# we assume that anyone specifying --with-curses=library is savvy enough to
# put it in a place that the linker can find it without a special -L option
if test "$opt_curses" != "no" && test "$opt_curses" != "yes" ; then
TERMCAP_LIB="$opt_curses"
TERMCAP_DEP=
elif test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
LDFLAGS="$LDFLAGS -L./lib/termcap"
TERMCAP_LIB="./lib/termcap/libtermcap.a"
TERMCAP_DEP="./lib/termcap/libtermcap.a"
elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then
TERMCAP_LIB=-ltermcap
TERMCAP_DEP=
elif test $bash_cv_termcap_lib = libtinfo; then
TERMCAP_LIB=-ltinfo
TERMCAP_DEP=
elif test $bash_cv_termcap_lib = libtinfow; then
TERMCAP_LIB=-ltinfow
TERMCAP_DEP=
elif test $bash_cv_termcap_lib = libtinfo; then
TERMCAP_LIB=-ltinfo
TERMCAP_DEP=
elif test $bash_cv_termcap_lib = libncursesw; then
TERMCAP_LIB=-lncursesw
TERMCAP_DEP=
@@ -5970,7 +5975,7 @@ fi
case "$ac_cv_rl_version" in
8*|9*) ;;
8.3*|9*) ;;
*) opt_with_installed_readline=no
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: installed readline library is too old to be linked with bash" >&5
printf "%s\n" "$as_me: WARNING: installed readline library is too old to be linked with bash" >&2;}
@@ -9410,8 +9415,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
LIBS=$save_LIBS
test $gl_pthread_api = yes && break
done
echo "$as_me:9413: gl_pthread_api=$gl_pthread_api" >&5
echo "$as_me:9414: LIBPTHREAD=$LIBPTHREAD" >&5
echo "$as_me:9418: gl_pthread_api=$gl_pthread_api" >&5
echo "$as_me:9419: LIBPTHREAD=$LIBPTHREAD" >&5
gl_pthread_in_glibc=no
# On Linux with glibc >= 2.34, libc contains the fully functional
@@ -9437,7 +9442,7 @@ rm -rf conftest*
;;
esac
echo "$as_me:9440: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5
echo "$as_me:9445: 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.)
@@ -9615,7 +9620,7 @@ fi
fi
fi
echo "$as_me:9618: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5
echo "$as_me:9623: 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; }
@@ -9862,8 +9867,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.beam \
LIBS=$save_LIBS
test $gl_pthread_api = yes && break
done
echo "$as_me:9865: gl_pthread_api=$gl_pthread_api" >&5
echo "$as_me:9866: LIBPTHREAD=$LIBPTHREAD" >&5
echo "$as_me:9870: gl_pthread_api=$gl_pthread_api" >&5
echo "$as_me:9871: LIBPTHREAD=$LIBPTHREAD" >&5
gl_pthread_in_glibc=no
# On Linux with glibc >= 2.34, libc contains the fully functional
@@ -9889,7 +9894,7 @@ rm -rf conftest*
;;
esac
echo "$as_me:9892: gl_pthread_in_glibc=$gl_pthread_in_glibc" >&5
echo "$as_me:9897: 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.)
@@ -10067,7 +10072,7 @@ fi
fi
fi
echo "$as_me:10070: LIBPMULTITHREAD=$LIBPMULTITHREAD" >&5
echo "$as_me:10075: 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; }
@@ -23077,19 +23082,24 @@ printf %s "checking which library has the termcap functions... " >&6; }
fi
{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: using $bash_cv_termcap_lib" >&5
printf "%s\n" "using $bash_cv_termcap_lib" >&6; }
if test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
# we assume that anyone specifying --with-curses=library is savvy enough to
# put it in a place that the linker can find it without a special -L option
if test "$opt_curses" != "no" && test "$opt_curses" != "yes" ; then
TERMCAP_LIB="$opt_curses"
TERMCAP_DEP=
elif test $bash_cv_termcap_lib = gnutermcap && test -z "$prefer_curses"; then
LDFLAGS="$LDFLAGS -L./lib/termcap"
TERMCAP_LIB="./lib/termcap/libtermcap.a"
TERMCAP_DEP="./lib/termcap/libtermcap.a"
elif test $bash_cv_termcap_lib = libtermcap && test -z "$prefer_curses"; then
TERMCAP_LIB=-ltermcap
TERMCAP_DEP=
elif test $bash_cv_termcap_lib = libtinfo; then
TERMCAP_LIB=-ltinfo
TERMCAP_DEP=
elif test $bash_cv_termcap_lib = libtinfow; then
TERMCAP_LIB=-ltinfow
TERMCAP_DEP=
elif test $bash_cv_termcap_lib = libtinfo; then
TERMCAP_LIB=-ltinfo
TERMCAP_DEP=
elif test $bash_cv_termcap_lib = libncursesw; then
TERMCAP_LIB=-lncursesw
TERMCAP_DEP=
+3 -3
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.080])dnl
AC_REVISION([for Bash 5.3, version 5.082])dnl
define(bashvers, 5.3)
define(relstatus, maint)
@@ -137,7 +137,7 @@ if test "$opt_afs" = yes; then
AC_DEFINE(AFS)
fi
if test "$opt_curses" = yes; then
if test "$opt_curses" != "no" ; then
prefer_curses=yes
fi
@@ -588,7 +588,7 @@ then
RL_LIB_READLINE_VERSION
case "$ac_cv_rl_version" in
8*|9*) ;;
8.3*|9*) ;;
*) opt_with_installed_readline=no
AC_MSG_WARN([installed readline library is too old to be linked with bash])
AC_MSG_WARN([using private bash version])
-4
View File
@@ -270,11 +270,7 @@ dispose_words (WORD_LIST *list)
t = list;
list = list->next;
dispose_word (t->word);
#if 0
free (t);
#else
ocache_free (wlcache, WORD_LIST, t);
#endif
}
}
+1623 -1621
View File
File diff suppressed because it is too large Load Diff
+222 -214
View File
@@ -1,9 +1,9 @@
This is bash.info, produced by makeinfo version 7.2 from bashref.texi.
This text is a brief description of the features that are present in the
Bash shell (version 5.3, 18 May 2025).
Bash shell (version 5.3, 7 August 2025).
This is Edition 5.3, last updated 18 May 2025, of The GNU Bash
This is Edition 5.3, last updated 7 August 2025, of The GNU Bash
Reference Manual, for Bash, Version 5.3.
Copyright © 1988-2025 Free Software Foundation, Inc.
@@ -26,10 +26,10 @@ Bash Features
*************
This text is a brief description of the features that are present in the
Bash shell (version 5.3, 18 May 2025). The Bash home page is
Bash shell (version 5.3, 7 August 2025). The Bash home page is
<http://www.gnu.org/software/bash/>.
This is Edition 5.3, last updated 18 May 2025, of The GNU Bash
This is Edition 5.3, last updated 7 August 2025, of The GNU Bash
Reference Manual, for Bash, Version 5.3.
Bash contains features that appear in other popular shells, and some
@@ -3237,7 +3237,7 @@ parameter $? (*note Special Parameters::).
Bash itself returns the exit status of the last command executed,
unless a syntax error occurs, in which case it exits with a non-zero
value. See also the exit builtin command (*note Bourne Shell
Builtins::.
Builtins::).

File: bash.info, Node: Signals, Prev: Exit Status, Up: Executing Commands
@@ -3254,7 +3254,7 @@ is in effect (*note Job Control::), Bash ignores SIGTTIN, SIGTTOU,
and SIGTSTP.
The trap builtin modifies the shell's signal handling, as described
below (*note Bourne Shell Builtins::.
below (*note Bourne Shell Builtins::).
Non-builtin commands Bash executes have signal handlers set to the
values inherited by the shell from its parent, unless trap sets them
@@ -3498,8 +3498,9 @@ standard.
Change the current working directory to DIRECTORY. If DIRECTORY is
not supplied, the value of the HOME shell variable is used as
DIRECTORY. If the shell variable CDPATH exists, and DIRECTORY
does not begin with a slash, cd uses it as a search path: cd
DIRECTORY. If DIRECTORY is the empty string, cd treats it as an
error. If the shell variable CDPATH exists, and DIRECTORY does
not begin with a slash, cd uses it as a search path: cd
searches each directory name in CDPATH for DIRECTORY, with
alternative directory names in CDPATH separated by a colon (:).
A null directory name in CDPATH means the same thing as the
@@ -5461,7 +5462,7 @@ This builtin allows you to change additional optional shell behavior.
nocasematch
If set, Bash matches patterns in a case-insensitive fashion
when performing matching while executing case or [[
conditional commands (*note Conditional Constructs::, when
conditional commands (*note Conditional Constructs::), when
performing pattern substitution word expansions, or when
filtering possible completions as part of programmable
completion.
@@ -6331,7 +6332,7 @@ Variables::).
READLINE_ARGUMENT
Any numeric argument given to a Readline command that was defined
using bind -x (*note Bash Builtins:: when it was invoked.
using bind -x (*note Bash Builtins::) when it was invoked.
READLINE_LINE
The contents of the Readline line buffer, for use with bind -x
@@ -7128,7 +7129,7 @@ an expression.
it is referenced, or when a variable which has been given the integer
attribute using declare -i is assigned a value. A null value
evaluates to 0. A shell variable need not have its integer attribute
turned on to be used in an expression.
enabled to be used in an expression.
Integer constants follow the C language definition, without suffixes
or character constants. Constants with a leading 0 are interpreted as
@@ -7688,7 +7689,7 @@ startup files.
1. Bash ensures that the POSIXLY_CORRECT variable is set.
2. Bash reads and executes the POSIX startup files ($ENV) rather
than the normal Bash files (*note Bash Startup Files::.
than the normal Bash files (*note Bash Startup Files::).
3. Alias expansion is always enabled, even in non-interactive shells.
@@ -8880,6 +8881,8 @@ Variable Settings
the default Readline bindings described here. Type stty -a
at a Bash prompt to see your current terminal settings,
including the special control characters (usually cchars).
This binding takes place on each call to readline(), so
changes made by stty can take effect.
blink-matching-paren
If set to on, Readline attempts to briefly move the cursor
@@ -11605,10 +11608,15 @@ the Bash configure recognizes.
systems for which this should be turned off, and configure
disables this option automatically for a number of systems.
--with-curses
Use the curses library instead of the termcap library. configure
usually chooses this automatically, since most systems include the
termcap functions in the curses library.
--with-curses[=LIBNAME]
Use the curses library instead of the termcap library as the
library where the linker can find the termcap functions.
configure usually chooses this automatically, since most systems
include the termcap functions in the curses library. If LIBNAME is
supplied, configure does not search for an appropriate library
and uses LIBNAME instead. LIBNAME should be either an argument for
the linker (e.g., -lLIBNAME) or a filename (e.g.,
/opt/local/lib/libncursesw.so).
--with-gnu-malloc
A synonym for --with-bash-malloc.
@@ -12168,11 +12176,11 @@ historical Bourne shell) as the baseline reference.
using export -f (*note Shell Functions::).
• The Bash export and readonly builtins (*note Bourne Shell
Builtins:: can take a -f option to act on shell functions, a -p
option to display variables with various attributes set in a format
that can be used as shell input, a -n option to remove various
variable attributes, and name=value arguments to set variable
attributes and values simultaneously.
Builtins::) can take a -f option to act on shell functions, a
-p option to display variables with various attributes set in a
format that can be used as shell input, a -n option to remove
various variable attributes, and name=value arguments to set
variable attributes and values simultaneously.
• The Bash hash builtin allows a name to be associated with an
arbitrary filename, even when that filename cannot be found by
@@ -12838,7 +12846,7 @@ D.1 Index of Shell Builtin Commands
* .: Bourne Shell Builtins.
(line 17)
* [: Bourne Shell Builtins.
(line 339)
(line 340)
* alias: Bash Builtins. (line 11)
* bg: Job Control Builtins.
(line 7)
@@ -12857,7 +12865,7 @@ D.1 Index of Shell Builtin Commands
* compopt: Programmable Completion Builtins.
(line 258)
* continue: Bourne Shell Builtins.
(line 106)
(line 107)
* declare: Bash Builtins. (line 179)
* dirs: Directory Stack Builtins.
(line 7)
@@ -12866,23 +12874,23 @@ D.1 Index of Shell Builtin Commands
* echo: Bash Builtins. (line 284)
* enable: Bash Builtins. (line 337)
* eval: Bourne Shell Builtins.
(line 115)
(line 116)
* exec: Bourne Shell Builtins.
(line 123)
(line 124)
* exit: Bourne Shell Builtins.
(line 145)
(line 146)
* export: Bourne Shell Builtins.
(line 152)
(line 153)
* false: Bourne Shell Builtins.
(line 175)
(line 176)
* fc: Bash History Builtins.
(line 10)
* fg: Job Control Builtins.
(line 17)
* getopts: Bourne Shell Builtins.
(line 180)
(line 181)
* hash: Bourne Shell Builtins.
(line 232)
(line 233)
* help: Bash Builtins. (line 375)
* history: Bash History Builtins.
(line 59)
@@ -12900,36 +12908,36 @@ D.1 Index of Shell Builtin Commands
* pushd: Directory Stack Builtins.
(line 71)
* pwd: Bourne Shell Builtins.
(line 264)
(line 265)
* read: Bash Builtins. (line 558)
* readarray: Bash Builtins. (line 669)
* readonly: Bourne Shell Builtins.
(line 276)
(line 277)
* return: Bourne Shell Builtins.
(line 301)
(line 302)
* set: The Set Builtin. (line 11)
* shift: Bourne Shell Builtins.
(line 326)
(line 327)
* shopt: The Shopt Builtin. (line 9)
* source: Bash Builtins. (line 678)
* suspend: Job Control Builtins.
(line 139)
* test: Bourne Shell Builtins.
(line 339)
(line 340)
* times: Bourne Shell Builtins.
(line 439)
(line 440)
* trap: Bourne Shell Builtins.
(line 445)
(line 446)
* true: Bourne Shell Builtins.
(line 511)
(line 512)
* type: Bash Builtins. (line 683)
* typeset: Bash Builtins. (line 720)
* ulimit: Bash Builtins. (line 726)
* umask: Bourne Shell Builtins.
(line 516)
(line 517)
* unalias: Bash Builtins. (line 834)
* unset: Bourne Shell Builtins.
(line 534)
(line 535)
* wait: Job Control Builtins.
(line 86)
@@ -13035,17 +13043,17 @@ D.3 Parameter and Variable Index
* bind-tty-special-chars: Readline Init File Syntax.
(line 71)
* blink-matching-paren: Readline Init File Syntax.
(line 79)
(line 81)
* CDPATH: Bourne Shell Variables.
(line 9)
* CHILD_MAX: Bash Variables. (line 217)
* colored-completion-prefix: Readline Init File Syntax.
(line 84)
(line 86)
* colored-stats: Readline Init File Syntax.
(line 94)
(line 96)
* COLUMNS: Bash Variables. (line 224)
* comment-begin: Readline Init File Syntax.
(line 100)
(line 102)
* COMP_CWORD: Bash Variables. (line 230)
* COMP_KEY: Bash Variables. (line 236)
* COMP_LINE: Bash Variables. (line 242)
@@ -13054,48 +13062,48 @@ D.3 Parameter and Variable Index
* COMP_WORDBREAKS: Bash Variables. (line 265)
* COMP_WORDS: Bash Variables. (line 271)
* completion-display-width: Readline Init File Syntax.
(line 104)
(line 106)
* completion-ignore-case: Readline Init File Syntax.
(line 111)
(line 113)
* completion-map-case: Readline Init File Syntax.
(line 116)
(line 118)
* completion-prefix-display-length: Readline Init File Syntax.
(line 122)
(line 124)
* completion-query-items: Readline Init File Syntax.
(line 131)
(line 133)
* COMPREPLY: Bash Variables. (line 278)
* convert-meta: Readline Init File Syntax.
(line 142)
(line 144)
* COPROC: Bash Variables. (line 284)
* DIRSTACK: Bash Variables. (line 288)
* disable-completion: Readline Init File Syntax.
(line 154)
(line 156)
* echo-control-characters: Readline Init File Syntax.
(line 159)
(line 161)
* editing-mode: Readline Init File Syntax.
(line 164)
(line 166)
* EMACS: Bash Variables. (line 298)
* emacs-mode-string: Readline Init File Syntax.
(line 170)
(line 172)
* enable-active-region The: Readline Init File Syntax.
(line 180)
(line 182)
* enable-bracketed-paste: Readline Init File Syntax.
(line 193)
(line 195)
* enable-keypad: Readline Init File Syntax.
(line 202)
(line 204)
* enable-meta-key: Readline Init File Syntax.
(line 207)
(line 209)
* ENV: Bash Variables. (line 303)
* EPOCHREALTIME: Bash Variables. (line 308)
* EPOCHSECONDS: Bash Variables. (line 316)
* EUID: Bash Variables. (line 323)
* EXECIGNORE: Bash Variables. (line 327)
* expand-tilde: Readline Init File Syntax.
(line 217)
(line 219)
* FCEDIT: Bash Variables. (line 339)
* FIGNORE: Bash Variables. (line 342)
* force-meta-prefix: Readline Init File Syntax.
(line 221)
(line 223)
* FUNCNAME: Bash Variables. (line 348)
* FUNCNEST: Bash Variables. (line 365)
* GLOBIGNORE: Bash Variables. (line 370)
@@ -13108,15 +13116,15 @@ D.3 Parameter and Variable Index
* HISTFILESIZE: Bash Variables. (line 467)
* HISTIGNORE: Bash Variables. (line 481)
* history-preserve-point: Readline Init File Syntax.
(line 234)
(line 236)
* history-size: Readline Init File Syntax.
(line 240)
(line 242)
* HISTSIZE: Bash Variables. (line 505)
* HISTTIMEFORMAT: Bash Variables. (line 512)
* HOME: Bourne Shell Variables.
(line 13)
* horizontal-scroll-mode: Readline Init File Syntax.
(line 250)
(line 252)
* HOSTFILE: Bash Variables. (line 521)
* HOSTNAME: Bash Variables. (line 532)
* HOSTTYPE: Bash Variables. (line 535)
@@ -13124,13 +13132,13 @@ D.3 Parameter and Variable Index
(line 18)
* IGNOREEOF: Bash Variables. (line 538)
* input-meta: Readline Init File Syntax.
(line 258)
(line 260)
* INPUTRC: Bash Variables. (line 547)
* INSIDE_EMACS: Bash Variables. (line 551)
* isearch-terminators: Readline Init File Syntax.
(line 269)
(line 271)
* keymap: Readline Init File Syntax.
(line 276)
(line 278)
* LANG: Creating Internationalized Scripts.
(line 51)
* LANG <1>: Bash Variables. (line 557)
@@ -13152,15 +13160,15 @@ D.3 Parameter and Variable Index
(line 29)
* MAPFILE: Bash Variables. (line 614)
* mark-modified-lines: Readline Init File Syntax.
(line 306)
(line 308)
* mark-symlinked-directories: Readline Init File Syntax.
(line 311)
(line 313)
* match-hidden-files: Readline Init File Syntax.
(line 316)
(line 318)
* menu-complete-display-prefix: Readline Init File Syntax.
(line 323)
(line 325)
* meta-flag: Readline Init File Syntax.
(line 258)
(line 260)
* OLDPWD: Bash Variables. (line 618)
* OPTARG: Bourne Shell Variables.
(line 36)
@@ -13169,9 +13177,9 @@ D.3 Parameter and Variable Index
(line 40)
* OSTYPE: Bash Variables. (line 626)
* output-meta: Readline Init File Syntax.
(line 328)
(line 330)
* page-completions: Readline Init File Syntax.
(line 337)
(line 339)
* PATH: Bourne Shell Variables.
(line 44)
* PIPESTATUS: Bash Variables. (line 629)
@@ -13194,21 +13202,21 @@ D.3 Parameter and Variable Index
* READLINE_POINT: Bash Variables. (line 708)
* REPLY: Bash Variables. (line 712)
* revert-all-at-newline: Readline Init File Syntax.
(line 350)
(line 352)
* search-ignore-case: Readline Init File Syntax.
(line 357)
(line 359)
* SECONDS: Bash Variables. (line 716)
* SHELL: Bash Variables. (line 726)
* SHELLOPTS: Bash Variables. (line 731)
* SHLVL: Bash Variables. (line 741)
* show-all-if-ambiguous: Readline Init File Syntax.
(line 362)
(line 364)
* show-all-if-unmodified: Readline Init File Syntax.
(line 368)
(line 370)
* show-mode-in-prompt: Readline Init File Syntax.
(line 377)
(line 379)
* skip-completed-text: Readline Init File Syntax.
(line 383)
(line 385)
* SRANDOM: Bash Variables. (line 746)
* TEXTDOMAIN: Creating Internationalized Scripts.
(line 51)
@@ -13219,11 +13227,11 @@ D.3 Parameter and Variable Index
* TMPDIR: Bash Variables. (line 806)
* UID: Bash Variables. (line 810)
* vi-cmd-mode-string: Readline Init File Syntax.
(line 396)
(line 398)
* vi-ins-mode-string: Readline Init File Syntax.
(line 407)
(line 409)
* visible-stats: Readline Init File Syntax.
(line 418)
(line 420)

File: bash.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes
@@ -13611,138 +13619,138 @@ D.5 Concept Index

Tag Table:
Node: Top891
Node: Introduction2822
Node: What is Bash?3035
Node: What is a shell?4168
Node: Definitions6778
Node: Basic Shell Features10105
Node: Shell Syntax11329
Node: Shell Operation12356
Node: Quoting13647
Node: Escape Character14985
Node: Single Quotes15520
Node: Double Quotes15869
Node: ANSI-C Quoting17214
Node: Locale Translation18608
Node: Creating Internationalized Scripts20011
Node: Comments24209
Node: Shell Commands24976
Node: Reserved Words25915
Node: Simple Commands26780
Node: Pipelines27442
Node: Lists30698
Node: Compound Commands32570
Node: Looping Constructs33579
Node: Conditional Constructs36128
Node: Command Grouping51198
Node: Coprocesses52690
Node: GNU Parallel55376
Node: Shell Functions56294
Node: Shell Parameters64742
Node: Positional Parameters69643
Node: Special Parameters70733
Node: Shell Expansions74194
Node: Brace Expansion76383
Node: Tilde Expansion79719
Node: Shell Parameter Expansion82674
Node: Command Substitution103317
Node: Arithmetic Expansion106846
Node: Process Substitution108022
Node: Word Splitting109130
Node: Filename Expansion111574
Node: Pattern Matching114798
Node: Quote Removal120521
Node: Redirections120825
Node: Executing Commands131088
Node: Simple Command Expansion131755
Node: Command Search and Execution133863
Node: Command Execution Environment136307
Node: Environment139755
Node: Exit Status141658
Node: Signals143716
Node: Shell Scripts148645
Node: Shell Builtin Commands151943
Node: Bourne Shell Builtins154054
Node: Bash Builtins180701
Node: Modifying Shell Behavior217625
Node: The Set Builtin217967
Node: The Shopt Builtin229961
Node: Special Builtins247013
Node: Shell Variables248002
Node: Bourne Shell Variables248436
Node: Bash Variables250944
Node: Bash Features290068
Node: Invoking Bash291082
Node: Bash Startup Files297666
Node: Interactive Shells302908
Node: What is an Interactive Shell?303316
Node: Is this Shell Interactive?303978
Node: Interactive Shell Behavior304802
Node: Bash Conditional Expressions308563
Node: Shell Arithmetic313980
Node: Aliases317309
Node: Arrays320443
Node: The Directory Stack328031
Node: Directory Stack Builtins328828
Node: Controlling the Prompt333273
Node: The Restricted Shell336158
Node: Bash POSIX Mode339040
Node: Shell Compatibility Mode357986
Node: Job Control366993
Node: Job Control Basics367450
Node: Job Control Builtins373818
Node: Job Control Variables380500
Node: Command Line Editing381731
Node: Introduction and Notation383434
Node: Readline Interaction385786
Node: Readline Bare Essentials386974
Node: Readline Movement Commands388782
Node: Readline Killing Commands389778
Node: Readline Arguments391801
Node: Searching392858
Node: Readline Init File395101
Node: Readline Init File Syntax396404
Node: Conditional Init Constructs423229
Node: Sample Init File427614
Node: Bindable Readline Commands430734
Node: Commands For Moving432272
Node: Commands For History434736
Node: Commands For Text440126
Node: Commands For Killing444251
Node: Numeric Arguments447039
Node: Commands For Completion448191
Node: Keyboard Macros453887
Node: Miscellaneous Commands454588
Node: Readline vi Mode461155
Node: Programmable Completion462132
Node: Programmable Completion Builtins470869
Node: A Programmable Completion Example482606
Node: Using History Interactively487951
Node: Bash History Facilities488632
Node: Bash History Builtins492367
Node: History Interaction498838
Node: Event Designators503788
Node: Word Designators505366
Node: Modifiers507758
Node: Installing Bash509695
Node: Basic Installation510811
Node: Compilers and Options514687
Node: Compiling For Multiple Architectures515437
Node: Installation Names517190
Node: Specifying the System Type519424
Node: Sharing Defaults520170
Node: Operation Controls520884
Node: Optional Features521903
Node: Reporting Bugs534283
Node: Major Differences From The Bourne Shell535640
Node: GNU Free Documentation License557066
Node: Indexes582243
Node: Builtin Index582694
Node: Reserved Word Index589792
Node: Variable Index592237
Node: Function Index609650
Node: Concept Index623645
Node: Top895
Node: Introduction2830
Node: What is Bash?3043
Node: What is a shell?4176
Node: Definitions6786
Node: Basic Shell Features10113
Node: Shell Syntax11337
Node: Shell Operation12364
Node: Quoting13655
Node: Escape Character14993
Node: Single Quotes15528
Node: Double Quotes15877
Node: ANSI-C Quoting17222
Node: Locale Translation18616
Node: Creating Internationalized Scripts20019
Node: Comments24217
Node: Shell Commands24984
Node: Reserved Words25923
Node: Simple Commands26788
Node: Pipelines27450
Node: Lists30706
Node: Compound Commands32578
Node: Looping Constructs33587
Node: Conditional Constructs36136
Node: Command Grouping51206
Node: Coprocesses52698
Node: GNU Parallel55384
Node: Shell Functions56302
Node: Shell Parameters64750
Node: Positional Parameters69651
Node: Special Parameters70741
Node: Shell Expansions74202
Node: Brace Expansion76391
Node: Tilde Expansion79727
Node: Shell Parameter Expansion82682
Node: Command Substitution103325
Node: Arithmetic Expansion106854
Node: Process Substitution108030
Node: Word Splitting109138
Node: Filename Expansion111582
Node: Pattern Matching114806
Node: Quote Removal120529
Node: Redirections120833
Node: Executing Commands131096
Node: Simple Command Expansion131763
Node: Command Search and Execution133871
Node: Command Execution Environment136315
Node: Environment139763
Node: Exit Status141666
Node: Signals143725
Node: Shell Scripts148655
Node: Shell Builtin Commands151953
Node: Bourne Shell Builtins154064
Node: Bash Builtins180783
Node: Modifying Shell Behavior217707
Node: The Set Builtin218049
Node: The Shopt Builtin230043
Node: Special Builtins247096
Node: Shell Variables248085
Node: Bourne Shell Variables248519
Node: Bash Variables251027
Node: Bash Features290152
Node: Invoking Bash291166
Node: Bash Startup Files297750
Node: Interactive Shells302992
Node: What is an Interactive Shell?303400
Node: Is this Shell Interactive?304062
Node: Interactive Shell Behavior304886
Node: Bash Conditional Expressions308647
Node: Shell Arithmetic314064
Node: Aliases317391
Node: Arrays320525
Node: The Directory Stack328113
Node: Directory Stack Builtins328910
Node: Controlling the Prompt333355
Node: The Restricted Shell336240
Node: Bash POSIX Mode339122
Node: Shell Compatibility Mode358069
Node: Job Control367076
Node: Job Control Basics367533
Node: Job Control Builtins373901
Node: Job Control Variables380583
Node: Command Line Editing381814
Node: Introduction and Notation383517
Node: Readline Interaction385869
Node: Readline Bare Essentials387057
Node: Readline Movement Commands388865
Node: Readline Killing Commands389861
Node: Readline Arguments391884
Node: Searching392941
Node: Readline Init File395184
Node: Readline Init File Syntax396487
Node: Conditional Init Constructs423438
Node: Sample Init File427823
Node: Bindable Readline Commands430943
Node: Commands For Moving432481
Node: Commands For History434945
Node: Commands For Text440335
Node: Commands For Killing444460
Node: Numeric Arguments447248
Node: Commands For Completion448400
Node: Keyboard Macros454096
Node: Miscellaneous Commands454797
Node: Readline vi Mode461364
Node: Programmable Completion462341
Node: Programmable Completion Builtins471078
Node: A Programmable Completion Example482815
Node: Using History Interactively488160
Node: Bash History Facilities488841
Node: Bash History Builtins492576
Node: History Interaction499047
Node: Event Designators503997
Node: Word Designators505575
Node: Modifiers507967
Node: Installing Bash509904
Node: Basic Installation511020
Node: Compilers and Options514896
Node: Compiling For Multiple Architectures515646
Node: Installation Names517399
Node: Specifying the System Type519633
Node: Sharing Defaults520379
Node: Operation Controls521093
Node: Optional Features522112
Node: Reporting Bugs534835
Node: Major Differences From The Bourne Shell536192
Node: GNU Free Documentation License557619
Node: Indexes582796
Node: Builtin Index583247
Node: Reserved Word Index590345
Node: Variable Index592790
Node: Function Index610203
Node: Concept Index624198

End Tag Table
+222 -214
View File
@@ -2,9 +2,9 @@ This is bashref.info, produced by makeinfo version 7.2 from
bashref.texi.
This text is a brief description of the features that are present in the
Bash shell (version 5.3, 18 May 2025).
Bash shell (version 5.3, 7 August 2025).
This is Edition 5.3, last updated 18 May 2025, of The GNU Bash
This is Edition 5.3, last updated 7 August 2025, of The GNU Bash
Reference Manual, for Bash, Version 5.3.
Copyright © 1988-2025 Free Software Foundation, Inc.
@@ -27,10 +27,10 @@ Bash Features
*************
This text is a brief description of the features that are present in the
Bash shell (version 5.3, 18 May 2025). The Bash home page is
Bash shell (version 5.3, 7 August 2025). The Bash home page is
<http://www.gnu.org/software/bash/>.
This is Edition 5.3, last updated 18 May 2025, of The GNU Bash
This is Edition 5.3, last updated 7 August 2025, of The GNU Bash
Reference Manual, for Bash, Version 5.3.
Bash contains features that appear in other popular shells, and some
@@ -3238,7 +3238,7 @@ parameter $? (*note Special Parameters::).
Bash itself returns the exit status of the last command executed,
unless a syntax error occurs, in which case it exits with a non-zero
value. See also the exit builtin command (*note Bourne Shell
Builtins::.
Builtins::).

File: bashref.info, Node: Signals, Prev: Exit Status, Up: Executing Commands
@@ -3255,7 +3255,7 @@ is in effect (*note Job Control::), Bash ignores SIGTTIN, SIGTTOU,
and SIGTSTP.
The trap builtin modifies the shell's signal handling, as described
below (*note Bourne Shell Builtins::.
below (*note Bourne Shell Builtins::).
Non-builtin commands Bash executes have signal handlers set to the
values inherited by the shell from its parent, unless trap sets them
@@ -3499,8 +3499,9 @@ standard.
Change the current working directory to DIRECTORY. If DIRECTORY is
not supplied, the value of the HOME shell variable is used as
DIRECTORY. If the shell variable CDPATH exists, and DIRECTORY
does not begin with a slash, cd uses it as a search path: cd
DIRECTORY. If DIRECTORY is the empty string, cd treats it as an
error. If the shell variable CDPATH exists, and DIRECTORY does
not begin with a slash, cd uses it as a search path: cd
searches each directory name in CDPATH for DIRECTORY, with
alternative directory names in CDPATH separated by a colon (:).
A null directory name in CDPATH means the same thing as the
@@ -5462,7 +5463,7 @@ This builtin allows you to change additional optional shell behavior.
nocasematch
If set, Bash matches patterns in a case-insensitive fashion
when performing matching while executing case or [[
conditional commands (*note Conditional Constructs::, when
conditional commands (*note Conditional Constructs::), when
performing pattern substitution word expansions, or when
filtering possible completions as part of programmable
completion.
@@ -6332,7 +6333,7 @@ Variables::).
READLINE_ARGUMENT
Any numeric argument given to a Readline command that was defined
using bind -x (*note Bash Builtins:: when it was invoked.
using bind -x (*note Bash Builtins::) when it was invoked.
READLINE_LINE
The contents of the Readline line buffer, for use with bind -x
@@ -7129,7 +7130,7 @@ an expression.
it is referenced, or when a variable which has been given the integer
attribute using declare -i is assigned a value. A null value
evaluates to 0. A shell variable need not have its integer attribute
turned on to be used in an expression.
enabled to be used in an expression.
Integer constants follow the C language definition, without suffixes
or character constants. Constants with a leading 0 are interpreted as
@@ -7689,7 +7690,7 @@ startup files.
1. Bash ensures that the POSIXLY_CORRECT variable is set.
2. Bash reads and executes the POSIX startup files ($ENV) rather
than the normal Bash files (*note Bash Startup Files::.
than the normal Bash files (*note Bash Startup Files::).
3. Alias expansion is always enabled, even in non-interactive shells.
@@ -8881,6 +8882,8 @@ Variable Settings
the default Readline bindings described here. Type stty -a
at a Bash prompt to see your current terminal settings,
including the special control characters (usually cchars).
This binding takes place on each call to readline(), so
changes made by stty can take effect.
blink-matching-paren
If set to on, Readline attempts to briefly move the cursor
@@ -11606,10 +11609,15 @@ the Bash configure recognizes.
systems for which this should be turned off, and configure
disables this option automatically for a number of systems.
--with-curses
Use the curses library instead of the termcap library. configure
usually chooses this automatically, since most systems include the
termcap functions in the curses library.
--with-curses[=LIBNAME]
Use the curses library instead of the termcap library as the
library where the linker can find the termcap functions.
configure usually chooses this automatically, since most systems
include the termcap functions in the curses library. If LIBNAME is
supplied, configure does not search for an appropriate library
and uses LIBNAME instead. LIBNAME should be either an argument for
the linker (e.g., -lLIBNAME) or a filename (e.g.,
/opt/local/lib/libncursesw.so).
--with-gnu-malloc
A synonym for --with-bash-malloc.
@@ -12169,11 +12177,11 @@ historical Bourne shell) as the baseline reference.
using export -f (*note Shell Functions::).
• The Bash export and readonly builtins (*note Bourne Shell
Builtins:: can take a -f option to act on shell functions, a -p
option to display variables with various attributes set in a format
that can be used as shell input, a -n option to remove various
variable attributes, and name=value arguments to set variable
attributes and values simultaneously.
Builtins::) can take a -f option to act on shell functions, a
-p option to display variables with various attributes set in a
format that can be used as shell input, a -n option to remove
various variable attributes, and name=value arguments to set
variable attributes and values simultaneously.
• The Bash hash builtin allows a name to be associated with an
arbitrary filename, even when that filename cannot be found by
@@ -12839,7 +12847,7 @@ D.1 Index of Shell Builtin Commands
* .: Bourne Shell Builtins.
(line 17)
* [: Bourne Shell Builtins.
(line 339)
(line 340)
* alias: Bash Builtins. (line 11)
* bg: Job Control Builtins.
(line 7)
@@ -12858,7 +12866,7 @@ D.1 Index of Shell Builtin Commands
* compopt: Programmable Completion Builtins.
(line 258)
* continue: Bourne Shell Builtins.
(line 106)
(line 107)
* declare: Bash Builtins. (line 179)
* dirs: Directory Stack Builtins.
(line 7)
@@ -12867,23 +12875,23 @@ D.1 Index of Shell Builtin Commands
* echo: Bash Builtins. (line 284)
* enable: Bash Builtins. (line 337)
* eval: Bourne Shell Builtins.
(line 115)
(line 116)
* exec: Bourne Shell Builtins.
(line 123)
(line 124)
* exit: Bourne Shell Builtins.
(line 145)
(line 146)
* export: Bourne Shell Builtins.
(line 152)
(line 153)
* false: Bourne Shell Builtins.
(line 175)
(line 176)
* fc: Bash History Builtins.
(line 10)
* fg: Job Control Builtins.
(line 17)
* getopts: Bourne Shell Builtins.
(line 180)
(line 181)
* hash: Bourne Shell Builtins.
(line 232)
(line 233)
* help: Bash Builtins. (line 375)
* history: Bash History Builtins.
(line 59)
@@ -12901,36 +12909,36 @@ D.1 Index of Shell Builtin Commands
* pushd: Directory Stack Builtins.
(line 71)
* pwd: Bourne Shell Builtins.
(line 264)
(line 265)
* read: Bash Builtins. (line 558)
* readarray: Bash Builtins. (line 669)
* readonly: Bourne Shell Builtins.
(line 276)
(line 277)
* return: Bourne Shell Builtins.
(line 301)
(line 302)
* set: The Set Builtin. (line 11)
* shift: Bourne Shell Builtins.
(line 326)
(line 327)
* shopt: The Shopt Builtin. (line 9)
* source: Bash Builtins. (line 678)
* suspend: Job Control Builtins.
(line 139)
* test: Bourne Shell Builtins.
(line 339)
(line 340)
* times: Bourne Shell Builtins.
(line 439)
(line 440)
* trap: Bourne Shell Builtins.
(line 445)
(line 446)
* true: Bourne Shell Builtins.
(line 511)
(line 512)
* type: Bash Builtins. (line 683)
* typeset: Bash Builtins. (line 720)
* ulimit: Bash Builtins. (line 726)
* umask: Bourne Shell Builtins.
(line 516)
(line 517)
* unalias: Bash Builtins. (line 834)
* unset: Bourne Shell Builtins.
(line 534)
(line 535)
* wait: Job Control Builtins.
(line 86)
@@ -13036,17 +13044,17 @@ D.3 Parameter and Variable Index
* bind-tty-special-chars: Readline Init File Syntax.
(line 71)
* blink-matching-paren: Readline Init File Syntax.
(line 79)
(line 81)
* CDPATH: Bourne Shell Variables.
(line 9)
* CHILD_MAX: Bash Variables. (line 217)
* colored-completion-prefix: Readline Init File Syntax.
(line 84)
(line 86)
* colored-stats: Readline Init File Syntax.
(line 94)
(line 96)
* COLUMNS: Bash Variables. (line 224)
* comment-begin: Readline Init File Syntax.
(line 100)
(line 102)
* COMP_CWORD: Bash Variables. (line 230)
* COMP_KEY: Bash Variables. (line 236)
* COMP_LINE: Bash Variables. (line 242)
@@ -13055,48 +13063,48 @@ D.3 Parameter and Variable Index
* COMP_WORDBREAKS: Bash Variables. (line 265)
* COMP_WORDS: Bash Variables. (line 271)
* completion-display-width: Readline Init File Syntax.
(line 104)
(line 106)
* completion-ignore-case: Readline Init File Syntax.
(line 111)
(line 113)
* completion-map-case: Readline Init File Syntax.
(line 116)
(line 118)
* completion-prefix-display-length: Readline Init File Syntax.
(line 122)
(line 124)
* completion-query-items: Readline Init File Syntax.
(line 131)
(line 133)
* COMPREPLY: Bash Variables. (line 278)
* convert-meta: Readline Init File Syntax.
(line 142)
(line 144)
* COPROC: Bash Variables. (line 284)
* DIRSTACK: Bash Variables. (line 288)
* disable-completion: Readline Init File Syntax.
(line 154)
(line 156)
* echo-control-characters: Readline Init File Syntax.
(line 159)
(line 161)
* editing-mode: Readline Init File Syntax.
(line 164)
(line 166)
* EMACS: Bash Variables. (line 298)
* emacs-mode-string: Readline Init File Syntax.
(line 170)
(line 172)
* enable-active-region The: Readline Init File Syntax.
(line 180)
(line 182)
* enable-bracketed-paste: Readline Init File Syntax.
(line 193)
(line 195)
* enable-keypad: Readline Init File Syntax.
(line 202)
(line 204)
* enable-meta-key: Readline Init File Syntax.
(line 207)
(line 209)
* ENV: Bash Variables. (line 303)
* EPOCHREALTIME: Bash Variables. (line 308)
* EPOCHSECONDS: Bash Variables. (line 316)
* EUID: Bash Variables. (line 323)
* EXECIGNORE: Bash Variables. (line 327)
* expand-tilde: Readline Init File Syntax.
(line 217)
(line 219)
* FCEDIT: Bash Variables. (line 339)
* FIGNORE: Bash Variables. (line 342)
* force-meta-prefix: Readline Init File Syntax.
(line 221)
(line 223)
* FUNCNAME: Bash Variables. (line 348)
* FUNCNEST: Bash Variables. (line 365)
* GLOBIGNORE: Bash Variables. (line 370)
@@ -13109,15 +13117,15 @@ D.3 Parameter and Variable Index
* HISTFILESIZE: Bash Variables. (line 467)
* HISTIGNORE: Bash Variables. (line 481)
* history-preserve-point: Readline Init File Syntax.
(line 234)
(line 236)
* history-size: Readline Init File Syntax.
(line 240)
(line 242)
* HISTSIZE: Bash Variables. (line 505)
* HISTTIMEFORMAT: Bash Variables. (line 512)
* HOME: Bourne Shell Variables.
(line 13)
* horizontal-scroll-mode: Readline Init File Syntax.
(line 250)
(line 252)
* HOSTFILE: Bash Variables. (line 521)
* HOSTNAME: Bash Variables. (line 532)
* HOSTTYPE: Bash Variables. (line 535)
@@ -13125,13 +13133,13 @@ D.3 Parameter and Variable Index
(line 18)
* IGNOREEOF: Bash Variables. (line 538)
* input-meta: Readline Init File Syntax.
(line 258)
(line 260)
* INPUTRC: Bash Variables. (line 547)
* INSIDE_EMACS: Bash Variables. (line 551)
* isearch-terminators: Readline Init File Syntax.
(line 269)
(line 271)
* keymap: Readline Init File Syntax.
(line 276)
(line 278)
* LANG: Creating Internationalized Scripts.
(line 51)
* LANG <1>: Bash Variables. (line 557)
@@ -13153,15 +13161,15 @@ D.3 Parameter and Variable Index
(line 29)
* MAPFILE: Bash Variables. (line 614)
* mark-modified-lines: Readline Init File Syntax.
(line 306)
(line 308)
* mark-symlinked-directories: Readline Init File Syntax.
(line 311)
(line 313)
* match-hidden-files: Readline Init File Syntax.
(line 316)
(line 318)
* menu-complete-display-prefix: Readline Init File Syntax.
(line 323)
(line 325)
* meta-flag: Readline Init File Syntax.
(line 258)
(line 260)
* OLDPWD: Bash Variables. (line 618)
* OPTARG: Bourne Shell Variables.
(line 36)
@@ -13170,9 +13178,9 @@ D.3 Parameter and Variable Index
(line 40)
* OSTYPE: Bash Variables. (line 626)
* output-meta: Readline Init File Syntax.
(line 328)
(line 330)
* page-completions: Readline Init File Syntax.
(line 337)
(line 339)
* PATH: Bourne Shell Variables.
(line 44)
* PIPESTATUS: Bash Variables. (line 629)
@@ -13195,21 +13203,21 @@ D.3 Parameter and Variable Index
* READLINE_POINT: Bash Variables. (line 708)
* REPLY: Bash Variables. (line 712)
* revert-all-at-newline: Readline Init File Syntax.
(line 350)
(line 352)
* search-ignore-case: Readline Init File Syntax.
(line 357)
(line 359)
* SECONDS: Bash Variables. (line 716)
* SHELL: Bash Variables. (line 726)
* SHELLOPTS: Bash Variables. (line 731)
* SHLVL: Bash Variables. (line 741)
* show-all-if-ambiguous: Readline Init File Syntax.
(line 362)
(line 364)
* show-all-if-unmodified: Readline Init File Syntax.
(line 368)
(line 370)
* show-mode-in-prompt: Readline Init File Syntax.
(line 377)
(line 379)
* skip-completed-text: Readline Init File Syntax.
(line 383)
(line 385)
* SRANDOM: Bash Variables. (line 746)
* TEXTDOMAIN: Creating Internationalized Scripts.
(line 51)
@@ -13220,11 +13228,11 @@ D.3 Parameter and Variable Index
* TMPDIR: Bash Variables. (line 806)
* UID: Bash Variables. (line 810)
* vi-cmd-mode-string: Readline Init File Syntax.
(line 396)
(line 398)
* vi-ins-mode-string: Readline Init File Syntax.
(line 407)
(line 409)
* visible-stats: Readline Init File Syntax.
(line 418)
(line 420)

File: bashref.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes
@@ -13612,138 +13620,138 @@ D.5 Concept Index

Tag Table:
Node: Top894
Node: Introduction2828
Node: What is Bash?3044
Node: What is a shell?4180
Node: Definitions6793
Node: Basic Shell Features10123
Node: Shell Syntax11350
Node: Shell Operation12380
Node: Quoting13674
Node: Escape Character15015
Node: Single Quotes15553
Node: Double Quotes15905
Node: ANSI-C Quoting17253
Node: Locale Translation18650
Node: Creating Internationalized Scripts20056
Node: Comments24257
Node: Shell Commands25027
Node: Reserved Words25969
Node: Simple Commands26837
Node: Pipelines27502
Node: Lists30761
Node: Compound Commands32636
Node: Looping Constructs33648
Node: Conditional Constructs36200
Node: Command Grouping51273
Node: Coprocesses52768
Node: GNU Parallel55457
Node: Shell Functions56378
Node: Shell Parameters64829
Node: Positional Parameters69733
Node: Special Parameters70826
Node: Shell Expansions74290
Node: Brace Expansion76482
Node: Tilde Expansion79821
Node: Shell Parameter Expansion82779
Node: Command Substitution103425
Node: Arithmetic Expansion106957
Node: Process Substitution108136
Node: Word Splitting109247
Node: Filename Expansion111694
Node: Pattern Matching114921
Node: Quote Removal120647
Node: Redirections120954
Node: Executing Commands131220
Node: Simple Command Expansion131890
Node: Command Search and Execution134001
Node: Command Execution Environment136448
Node: Environment139899
Node: Exit Status141805
Node: Signals143866
Node: Shell Scripts148798
Node: Shell Builtin Commands152099
Node: Bourne Shell Builtins154213
Node: Bash Builtins180863
Node: Modifying Shell Behavior217790
Node: The Set Builtin218135
Node: The Shopt Builtin230132
Node: Special Builtins247187
Node: Shell Variables248179
Node: Bourne Shell Variables248616
Node: Bash Variables251127
Node: Bash Features290254
Node: Invoking Bash291271
Node: Bash Startup Files297858
Node: Interactive Shells303103
Node: What is an Interactive Shell?303514
Node: Is this Shell Interactive?304179
Node: Interactive Shell Behavior305006
Node: Bash Conditional Expressions308770
Node: Shell Arithmetic314190
Node: Aliases317522
Node: Arrays320659
Node: The Directory Stack328250
Node: Directory Stack Builtins329050
Node: Controlling the Prompt333498
Node: The Restricted Shell336386
Node: Bash POSIX Mode339271
Node: Shell Compatibility Mode358220
Node: Job Control367230
Node: Job Control Basics367690
Node: Job Control Builtins374061
Node: Job Control Variables380746
Node: Command Line Editing381980
Node: Introduction and Notation383686
Node: Readline Interaction386041
Node: Readline Bare Essentials387232
Node: Readline Movement Commands389043
Node: Readline Killing Commands390042
Node: Readline Arguments392068
Node: Searching393128
Node: Readline Init File395374
Node: Readline Init File Syntax396680
Node: Conditional Init Constructs423508
Node: Sample Init File427896
Node: Bindable Readline Commands431019
Node: Commands For Moving432560
Node: Commands For History435027
Node: Commands For Text440420
Node: Commands For Killing444548
Node: Numeric Arguments447339
Node: Commands For Completion448494
Node: Keyboard Macros454193
Node: Miscellaneous Commands454897
Node: Readline vi Mode461467
Node: Programmable Completion462447
Node: Programmable Completion Builtins471187
Node: A Programmable Completion Example482927
Node: Using History Interactively488275
Node: Bash History Facilities488959
Node: Bash History Builtins492697
Node: History Interaction499171
Node: Event Designators504124
Node: Word Designators505705
Node: Modifiers508100
Node: Installing Bash510040
Node: Basic Installation511159
Node: Compilers and Options515038
Node: Compiling For Multiple Architectures515791
Node: Installation Names517547
Node: Specifying the System Type519784
Node: Sharing Defaults520533
Node: Operation Controls521250
Node: Optional Features522272
Node: Reporting Bugs534655
Node: Major Differences From The Bourne Shell536015
Node: GNU Free Documentation License557444
Node: Indexes582624
Node: Builtin Index583078
Node: Reserved Word Index590179
Node: Variable Index592627
Node: Function Index610043
Node: Concept Index624041
Node: Top898
Node: Introduction2836
Node: What is Bash?3052
Node: What is a shell?4188
Node: Definitions6801
Node: Basic Shell Features10131
Node: Shell Syntax11358
Node: Shell Operation12388
Node: Quoting13682
Node: Escape Character15023
Node: Single Quotes15561
Node: Double Quotes15913
Node: ANSI-C Quoting17261
Node: Locale Translation18658
Node: Creating Internationalized Scripts20064
Node: Comments24265
Node: Shell Commands25035
Node: Reserved Words25977
Node: Simple Commands26845
Node: Pipelines27510
Node: Lists30769
Node: Compound Commands32644
Node: Looping Constructs33656
Node: Conditional Constructs36208
Node: Command Grouping51281
Node: Coprocesses52776
Node: GNU Parallel55465
Node: Shell Functions56386
Node: Shell Parameters64837
Node: Positional Parameters69741
Node: Special Parameters70834
Node: Shell Expansions74298
Node: Brace Expansion76490
Node: Tilde Expansion79829
Node: Shell Parameter Expansion82787
Node: Command Substitution103433
Node: Arithmetic Expansion106965
Node: Process Substitution108144
Node: Word Splitting109255
Node: Filename Expansion111702
Node: Pattern Matching114929
Node: Quote Removal120655
Node: Redirections120962
Node: Executing Commands131228
Node: Simple Command Expansion131898
Node: Command Search and Execution134009
Node: Command Execution Environment136456
Node: Environment139907
Node: Exit Status141813
Node: Signals143875
Node: Shell Scripts148808
Node: Shell Builtin Commands152109
Node: Bourne Shell Builtins154223
Node: Bash Builtins180945
Node: Modifying Shell Behavior217872
Node: The Set Builtin218217
Node: The Shopt Builtin230214
Node: Special Builtins247270
Node: Shell Variables248262
Node: Bourne Shell Variables248699
Node: Bash Variables251210
Node: Bash Features290338
Node: Invoking Bash291355
Node: Bash Startup Files297942
Node: Interactive Shells303187
Node: What is an Interactive Shell?303598
Node: Is this Shell Interactive?304263
Node: Interactive Shell Behavior305090
Node: Bash Conditional Expressions308854
Node: Shell Arithmetic314274
Node: Aliases317604
Node: Arrays320741
Node: The Directory Stack328332
Node: Directory Stack Builtins329132
Node: Controlling the Prompt333580
Node: The Restricted Shell336468
Node: Bash POSIX Mode339353
Node: Shell Compatibility Mode358303
Node: Job Control367313
Node: Job Control Basics367773
Node: Job Control Builtins374144
Node: Job Control Variables380829
Node: Command Line Editing382063
Node: Introduction and Notation383769
Node: Readline Interaction386124
Node: Readline Bare Essentials387315
Node: Readline Movement Commands389126
Node: Readline Killing Commands390125
Node: Readline Arguments392151
Node: Searching393211
Node: Readline Init File395457
Node: Readline Init File Syntax396763
Node: Conditional Init Constructs423717
Node: Sample Init File428105
Node: Bindable Readline Commands431228
Node: Commands For Moving432769
Node: Commands For History435236
Node: Commands For Text440629
Node: Commands For Killing444757
Node: Numeric Arguments447548
Node: Commands For Completion448703
Node: Keyboard Macros454402
Node: Miscellaneous Commands455106
Node: Readline vi Mode461676
Node: Programmable Completion462656
Node: Programmable Completion Builtins471396
Node: A Programmable Completion Example483136
Node: Using History Interactively488484
Node: Bash History Facilities489168
Node: Bash History Builtins492906
Node: History Interaction499380
Node: Event Designators504333
Node: Word Designators505914
Node: Modifiers508309
Node: Installing Bash510249
Node: Basic Installation511368
Node: Compilers and Options515247
Node: Compiling For Multiple Architectures516000
Node: Installation Names517756
Node: Specifying the System Type519993
Node: Sharing Defaults520742
Node: Operation Controls521459
Node: Optional Features522481
Node: Reporting Bugs535207
Node: Major Differences From The Bourne Shell536567
Node: GNU Free Documentation License557997
Node: Indexes583177
Node: Builtin Index583631
Node: Reserved Word Index590732
Node: Variable Index593180
Node: Function Index610596
Node: Concept Index624594

End Tag Table
+15 -8
View File
@@ -3934,7 +3934,7 @@ parameter $? (@pxref{Special Parameters}).
Bash itself returns the exit status of the last command
executed, unless a syntax error occurs, in which case it exits
with a non-zero value.
See also the @code{exit} builtin command (@pxref{Bourne Shell Builtins}.
See also the @code{exit} builtin command (@pxref{Bourne Shell Builtins}).
@node Signals
@subsection Signals
@@ -3951,7 +3951,7 @@ If job control is in effect (@pxref{Job Control}), Bash
ignores @code{SIGTTIN}, @code{SIGTTOU}, and @code{SIGTSTP}.
The @code{trap} builtin modifies the shell's signal handling, as
described below (@pxref{Bourne Shell Builtins}.
described below (@pxref{Bourne Shell Builtins}).
Non-builtin commands Bash executes have signal handlers set to the
values inherited by the shell from its parent,
@@ -6546,7 +6546,7 @@ performing filename expansion.
@item nocasematch
If set, Bash matches patterns in a case-insensitive fashion when
performing matching while executing @code{case} or @code{[[}
conditional commands (@pxref{Conditional Constructs},
conditional commands (@pxref{Conditional Constructs}),
when performing pattern substitution word expansions,
or when filtering possible completions as part of programmable completion.
@@ -7574,7 +7574,7 @@ subsequently reset.
@item READLINE_ARGUMENT
Any numeric argument given to a Readline
command that was defined using
@samp{bind -x} (@pxref{Bash Builtins}
@samp{bind -x} (@pxref{Bash Builtins})
when it was invoked.
@item READLINE_LINE
@@ -9195,7 +9195,7 @@ Bash ensures that the @env{POSIXLY_CORRECT} variable is set.
@item
Bash reads and executes the @sc{posix} startup files
(@env{$ENV}) rather than
the normal Bash files (@pxref{Bash Startup Files}.
the normal Bash files (@pxref{Bash Startup Files}).
@item
Alias expansion is always enabled, even in non-interactive shells.
@@ -10623,10 +10623,17 @@ The @file{NOTES} file contains a list of systems for
which this should be turned off, and @code{configure} disables this
option automatically for a number of systems.
@item --with-curses
Use the curses library instead of the termcap library.
@item --with-curses[=@var{LIBNAME}]
Use the curses library instead of the termcap library as the library
where the linker can find the termcap functions.
@code{configure} usually chooses this automatically, since most systems
include the termcap functions in the curses library.
If @var{LIBNAME} is supplied, @code{configure} does not search for an
appropriate library and uses @var{LIBNAME} instead.
@var{LIBNAME} should be either an argument for the linker
(e.g., @option{-l@var{libname}})
or a filename
(e.g., @file{/opt/local/lib/libncursesw.so}).
@item --with-gnu-malloc
A synonym for @code{--with-bash-malloc}.
@@ -11306,7 +11313,7 @@ using @code{export -f} (@pxref{Shell Functions}).
@item
The Bash @code{export} and @code{readonly} builtins
(@pxref{Bourne Shell Builtins} can
(@pxref{Bourne Shell Builtins}) can
take a @option{-f} option to act on shell functions, a @option{-p} option to
display variables with various attributes set in a format that can be
used as shell input, a @option{-n} option to remove various variable
+3 -3
View File
@@ -2,10 +2,10 @@
Copyright (C) 1988-2025 Free Software Foundation, Inc.
@end ignore
@set LASTCHANGE Wed Jul 30 14:47:36 EDT 2025
@set LASTCHANGE Thu Aug 7 12:59:18 EDT 2025
@set EDITION 5.3
@set VERSION 5.3
@set UPDATED 30 July 2025
@set UPDATED-MONTH July 2025
@set UPDATED 7 August 2025
@set UPDATED-MONTH August 2025
+5 -2
View File
@@ -178,12 +178,15 @@ STREQN(const char *a, const char *b, size_t n)
CSIZE is the currently-allocated size of STR (int)
SINCR is how much to increment CSIZE before calling xrealloc (int) */
/* old code used to use a loop:
while ((cind) + (room) >= csize) \
csize += (sincr); \
*/
#define RESIZE_MALLOCED_BUFFER(str, cind, room, csize, sincr) \
do { \
if ((cind) + (room) >= csize) \
{ \
while ((cind) + (room) >= csize) \
csize += (sincr); \
csize += ((cind) + (room) - csize + (sincr)) / (sincr) * (sincr); \
str = xrealloc (str, csize); \
} \
} while (0)
-3
View File
@@ -391,8 +391,6 @@ convert_to_backslash:
}
else if (pathname[i] == '\\' && (qflags & QGLOB_REGEXP))
last_was_backslash = 1;
#if 0
/* TAG:bash-5.4 Takaaki Konno <re_c25@yahoo.co.jp> 6/23/2025 */
else if (pathname[i] == CTLNUL && (qflags & QGLOB_CVTNULL)
&& (qflags & QGLOB_CTLESC))
/* If we have an unescaped CTLNUL in the string, and QFLAGS says
@@ -401,7 +399,6 @@ convert_to_backslash:
happen when the pattern contains a quoted null string adjacent
to non-null characters, and it is not removed by quote removal. */
continue;
#endif
temp[j++] = pathname[i];
}
+38 -6
View File
@@ -4008,6 +4008,11 @@ expand_arith_string (char *string, int quoted)
#endif
td.word = savestring (string);
list = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
/* If call_expand_word_internal returns one of these errors, we know
that no_longjmp_on_fatal_error is set and td.word was freed */
if (list == &expand_word_error || list == &expand_word_fatal)
return ((char *)NULL); /* XXX for now */
/* This takes care of the calls from expand_string_leave_quoted and
expand_string */
if (list)
@@ -4086,6 +4091,10 @@ cond_expand_word (WORD_DESC *w, int special)
qflags = (special == 3) ? Q_ARITH : 0;
l = call_expand_word_internal (w, qflags, 0, (int *)0, (int *)0);
expand_no_split_dollar_star = 0;
if (l == &expand_word_error || l == &expand_word_fatal)
return ((char *)NULL); /* XXX for now */
if (l)
{
if (special == 0) /* LHS */
@@ -4291,9 +4300,9 @@ call_expand_word_internal (WORD_DESC *w, int q, int i, int *c, int *e)
to exit in most cases). */
w->word = (char *)NULL;
last_command_exit_value = EXECUTION_FAILURE;
exp_jump_to_top_level ((result == &expand_word_error) ? DISCARD : FORCE_EOF);
/* NOTREACHED */
return (NULL);
if (no_longjmp_on_fatal_error == 0)
exp_jump_to_top_level ((result == &expand_word_error) ? DISCARD : FORCE_EOF);
return (result);
}
else
return (result);
@@ -4316,6 +4325,8 @@ expand_string_internal (const char *string, int quoted)
td.word = savestring (string);
tresult = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
if (tresult == &expand_word_error || tresult == &expand_word_fatal)
return ((WORD_LIST *)NULL); /* XXX for now */
FREE (td.word);
return (tresult);
@@ -4379,6 +4390,9 @@ expand_string_assignment (const char *string, int quoted)
expand_no_split_dollar_star = 0;
if (value == &expand_word_error || value == &expand_word_fatal)
return ((WORD_LIST *)NULL); /* XXX for now */
if (value)
{
if (value->word)
@@ -4496,6 +4510,8 @@ expand_string_for_rhs (const char *string, int quoted, int op, int pflags, int *
td.word = savestring (string);
tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p);
expand_no_split_dollar_star = old_nosplit;
if (tresult == &expand_word_error || tresult == &expand_word_fatal)
return ((WORD_LIST *)NULL); /* XXX for now */
free (td.word);
return (tresult);
@@ -4519,6 +4535,8 @@ expand_string_for_pat (const char *string, int quoted, int *dollar_at_p, int *ex
td.word = savestring (string);
tresult = call_expand_word_internal (&td, quoted, 1, dollar_at_p, expanded_p);
expand_no_split_dollar_star = oexp;
if (tresult == &expand_word_error || tresult == &expand_word_fatal)
return ((WORD_LIST *)NULL); /* XXX for now */
free (td.word);
return (tresult);
@@ -4557,6 +4575,9 @@ expand_word (WORD_DESC *word, int quoted)
WORD_LIST *result, *tresult;
tresult = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL);
if (tresult == &expand_word_error || tresult == &expand_word_fatal)
return ((WORD_LIST *)NULL); /* XXX for now */
result = word_list_split (tresult);
dispose_words (tresult);
return (result ? dequote_list (result) : result);
@@ -4575,8 +4596,7 @@ expand_word_unsplit (WORD_DESC *word, int quoted)
}
/* Perform shell expansions on WORD, but do not perform word splitting or
quote removal on the result. Virtually identical to expand_word_unsplit;
could be combined if implementations don't diverge. */
quote removal on the result. */
WORD_LIST *
expand_word_leave_quoted (WORD_DESC *word, int quoted)
{
@@ -4588,6 +4608,8 @@ expand_word_leave_quoted (WORD_DESC *word, int quoted)
word->flags |= W_NOSPLIT2;
result = call_expand_word_internal (word, quoted, 0, (int *)NULL, (int *)NULL);
expand_no_split_dollar_star = 0;
if (result == &expand_word_error || result == &expand_word_fatal)
return ((WORD_LIST *)NULL); /* XXX for now */
return result;
}
@@ -10153,9 +10175,16 @@ parameter_brace_expand (char *string, size_t *indexp, int quoted, int pflags, in
/* All the cases where an expansion can possibly generate an unbound
variable error. */
#if 0 /* TAG:bash-5.4 konsolebox <konsolebox@gmail.com> 10/1/2024 */
if (want_substring || want_patsub || want_casemod ||
(c == '@' && want_attributes == 0) || c == '#' || c == '%' || c == RBRACE)
#else
if (want_substring || want_patsub || want_casemod || c == '@' || c == '#' || c == '%' || c == RBRACE)
#endif
{
if (var_is_set == 0 && unbound_vars_is_error && ((name[0] != '@' && name[0] != '*') || name[1]) && all_element_arrayref == 0)
if (var_is_set == 0 && unbound_vars_is_error &&
((name[0] != '@' && name[0] != '*') || name[1]) &&
all_element_arrayref == 0)
{
set_exit_status (EXECUTION_FAILURE);
err_unboundvar (name);
@@ -11077,6 +11106,9 @@ expand_subscript_string (const char *string, int quoted)
tlist = call_expand_word_internal (&td, quoted, 0, (int *)NULL, (int *)NULL);
expand_no_split_dollar_star = oe;
if (tlist == &expand_word_error || tlist == &expand_word_fatal)
return ((char *)NULL); /* XXX for now */
if (tlist)
{
if (tlist->word)