fix obscure macOS issue where the Apple locale is set to something setlocale(3) doesn't understand; don't source .bash_logout if the shell is running setuid; fix for macOS issue with pipe size throttling and here-documents

This commit is contained in:
Chet Ramey
2026-07-14 09:29:04 -04:00
parent 0e16a4e4b1
commit 03e7298d1e
24 changed files with 2806 additions and 2336 deletions
+129 -126
View File
@@ -2,9 +2,9 @@ This is bashref.info, produced by makeinfo version 7.3 from
bashref.texi.
This text is a brief description of the features that are present in the
Bash shell (version 5.3, 18 May 2026).
Bash shell (version 5.3, 1 July 2026).
This is Edition 5.3, last updated 18 May 2026, of The GNU Bash
This is Edition 5.3, last updated 1 July 2026, of The GNU Bash
Reference Manual, for Bash, Version 5.3.
Copyright © 1988-2026 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 2026). The Bash home page is
Bash shell (version 5.3, 1 July 2026). The Bash home page is
<http://www.gnu.org/software/bash/>.
This is Edition 5.3, last updated 18 May 2026, of The GNU Bash
This is Edition 5.3, last updated 1 July 2026, of The GNU Bash
Reference Manual, for Bash, Version 5.3.
Bash contains features that appear in other popular shells, and some
@@ -5084,18 +5084,18 @@ parameters, or to display the names and values of shell variables.
Same as -x.
-p
Turn on privileged mode. In this mode, the $BASH_ENV and
$ENV files are not processed, shell functions are not
inherited from the environment, and the SHELLOPTS,
Turn on privileged mode. In this mode, Bash does not process
the $BASH_ENV and $ENV files, does not inherit shell
functions from the environment, and ignores the SHELLOPTS,
BASHOPTS, CDPATH and GLOBIGNORE variables, if they
appear in the environment, are ignored. If the shell is
started with the effective user (group) id not equal to the
real user (group) id, and the -p option is not supplied,
these actions are taken and the effective user id is set to
the real user id. If the -p option is supplied at startup,
the effective user id is not reset. Turning this option off
causes the effective user and group ids to be set to the real
user and group ids.
appear in the environment. If the shell is started with the
effective user (group) id not equal to the real user (group)
id, and the -p option is not supplied, these actions are
taken and the effective user id is set to the real user id
(*note Bash Startup Files:: for details). If the -p option
is supplied at startup, the effective user id is not reset.
Turning this option off causes the effective user and group
ids to be set to the real user and group ids.
-r
Enable restricted shell mode (*note The Restricted Shell::).
@@ -6809,13 +6809,13 @@ Invoked with unequal effective and real UID/GIDs
................................................
If Bash is started with the effective user (group) id not equal to the
real user (group) id, and the -p option is not supplied, no startup
files are read, shell functions are not inherited from the environment,
the SHELLOPTS, BASHOPTS, CDPATH, and GLOBIGNORE variables, if
they appear in the environment, are ignored, and the effective user id
is set to the real user id. If the -p option is supplied at
invocation, the startup behavior is the same, but Bash does not reset
the effective user id.
real user (group) id, and the -p option is not supplied, Bash does not
attempt to read any startup files or ~/.bash_logout, does not inherit
shell functions from the environment, ignores the SHELLOPTS,
BASHOPTS, CDPATH, and GLOBIGNORE variables, if they appear in the
environment, and sets the effective user id to the real user id. If the
-p option is supplied at invocation, the startup behavior is the same,
but Bash does not reset the effective user id.

File: bashref.info, Node: Interactive Shells, Next: Bash Conditional Expressions, Prev: Bash Startup Files, Up: Bash Features
@@ -7624,9 +7624,9 @@ can appear in the prompt variables PS0, PS1, PS2, and PS4
\[
Begin a sequence of non-printing characters. This could be used to
embed a terminal control sequence into the prompt. This escape is
only useful when the prompt will be supplied to Readline, so it
shouldn't be used in PS0 or PS4, or when line editing is not
enabled.
only useful when the prompt will be supplied to Readline, and is
ignored and removed otherwise, so it shouldn't be used in PS0 or
PS4, or when line editing is not enabled.
\]
End a sequence of non-printing characters begun with \[
@@ -7985,100 +7985,103 @@ startup files.
supplied as an argument exceeds PATH_MAX when canonicalized, cd
will attempt to use the supplied directory name.
52. When the xpg_echo option is enabled, Bash does not attempt to
52. The command builtin prints command name arguments containing a
slash as full pathnames when the -v option is supplied.
53. When the xpg_echo option is enabled, Bash does not attempt to
interpret any arguments to echo as options. echo displays each
argument after converting escape sequences.
53. The export and readonly builtin commands display their output
54. The export and readonly builtin commands display their output
in the format required by POSIX.
54. When listing the history, the fc builtin does not include an
55. When listing the history, the fc builtin does not include an
indication of whether or not a history entry has been modified.
55. The default editor used by fc is ed.
56. The default editor used by fc is ed.
56. fc treats extra arguments as an error instead of ignoring them.
57. fc treats extra arguments as an error instead of ignoring them.
57. If there are too many arguments supplied to fc -s, fc prints
58. If there are too many arguments supplied to fc -s, fc prints
an error message and returns failure.
58. The output of kill -l prints all the signal names on a single
59. The output of kill -l prints all the signal names on a single
line, separated by spaces, without the SIG prefix.
59. The kill builtin does not accept signal names with a SIG
60. The kill builtin does not accept signal names with a SIG
prefix.
60. The kill builtin returns a failure status if any of the pid or
61. The kill builtin returns a failure status if any of the pid or
job arguments are invalid or if sending the specified signal to any
of them fails. In default mode, kill returns success if the
signal was successfully sent to any of the specified processes.
61. The printf builtin uses double (via strtod) to convert
62. The printf builtin uses double (via strtod) to convert
arguments corresponding to floating point conversion specifiers,
instead of long double if it's available. The L length
modifier forces printf to use long double if it's available.
62. The pwd builtin verifies that the value it prints is the same as
63. The pwd builtin verifies that the value it prints is the same as
the current directory, even if it is not asked to check the file
system with the -P option.
63. The read builtin may be interrupted by a signal for which a trap
64. The read builtin may be interrupted by a signal for which a trap
has been set. If Bash receives a trapped signal while executing
read, the trap handler executes and read returns an exit status
greater than 128.
64. When the set builtin is invoked without options, it does not
65. When the set builtin is invoked without options, it does not
display shell function names and definitions.
65. When the set builtin is invoked without options, it displays
66. When the set builtin is invoked without options, it displays
variable values without quotes, unless they contain shell
metacharacters, even if the result contains nonprinting characters.
66. The test builtin compares strings using the current locale when
67. The test builtin compares strings using the current locale when
evaluating the < and > binary operators.
67. The test builtin's -t unary primary requires an argument.
68. The test builtin's -t unary primary requires an argument.
Historical versions of test made the argument optional in certain
cases, and Bash attempts to accommodate those for backwards
compatibility.
68. The trap builtin displays signal names without the leading
69. The trap builtin displays signal names without the leading
SIG.
69. The trap builtin doesn't check the first argument for a possible
70. The trap builtin doesn't check the first argument for a possible
signal specification and revert the signal handling to the original
disposition if it is, unless that argument consists solely of
digits and is a valid signal number. If users want to reset the
handler for a given signal to the original disposition, they should
use - as the first argument.
70. trap -p without arguments displays signals whose dispositions
71. trap -p without arguments displays signals whose dispositions
are set to SIG_DFL and those that were ignored when the shell
started, not just trapped signals.
71. The type and command builtins will not report a non-executable
72. The type and command builtins will not report a non-executable
file as having been found, though the shell will attempt to execute
such a file if it is the only so-named file found in $PATH.
72. The ulimit builtin uses a block size of 512 bytes for the -c
73. The ulimit builtin uses a block size of 512 bytes for the -c
and -f options.
73. The unset builtin with the -v option specified returns a fatal
74. The unset builtin with the -v option specified returns a fatal
error if it attempts to unset a readonly or non-unsettable
variable, which causes a non-interactive shell to exit.
74. When asked to unset a variable that appears in an assignment
75. When asked to unset a variable that appears in an assignment
statement preceding the command, the unset builtin attempts to
unset a variable of the same name in the current or previous scope
as well. This implements the required "if an assigned variable is
further modified by the utility, the modifications made by the
utility shall persist" behavior.
75. The arrival of SIGCHLD when a trap is set on SIGCHLD does not
76. The arrival of SIGCHLD when a trap is set on SIGCHLD does not
interrupt the wait builtin and cause it to return immediately.
The trap command is run once for each child that exits.
76. Bash removes an exited background process's status from the list
77. Bash removes an exited background process's status from the list
of such statuses after the wait builtin returns it.
There is additional POSIX behavior that Bash does not implement by
@@ -13825,82 +13828,82 @@ Node: Bourne Shell Builtins155772
Node: Bash Builtins182494
Node: Modifying Shell Behavior220232
Node: The Set Builtin220577
Node: The Shopt Builtin232574
Node: Special Builtins249630
Node: Shell Variables250622
Node: Bourne Shell Variables251059
Node: Bash Variables253570
Node: Bash Features292857
Node: Invoking Bash293874
Node: Bash Startup Files301107
Node: Interactive Shells306432
Node: What is an Interactive Shell?306843
Node: Is this Shell Interactive?307508
Node: Interactive Shell Behavior308335
Node: Bash Conditional Expressions312099
Node: Shell Arithmetic317519
Node: Aliases320849
Node: Arrays323986
Node: The Directory Stack331691
Node: Directory Stack Builtins332491
Node: Controlling the Prompt336939
Node: The Restricted Shell340023
Node: Bash POSIX Mode343119
Node: Shell Compatibility Mode362938
Node: Job Control371948
Node: Job Control Basics372408
Node: Job Control Builtins378779
Node: Job Control Variables385570
Node: Command Line Editing386804
Node: Introduction and Notation388510
Node: Readline Interaction390865
Node: Readline Bare Essentials392056
Node: Readline Movement Commands393867
Node: Readline Killing Commands394866
Node: Readline Arguments396892
Node: Searching397985
Node: Readline Init File400231
Node: Readline Init File Syntax401537
Node: Conditional Init Constructs428491
Node: Sample Init File432879
Node: Bindable Readline Commands436002
Node: Commands For Moving437543
Node: Commands For History440010
Node: Commands For Text445404
Node: Commands For Killing449532
Node: Numeric Arguments452323
Node: Commands For Completion453478
Node: Keyboard Macros459177
Node: Miscellaneous Commands459881
Node: Readline vi Mode467427
Node: Programmable Completion468407
Node: Programmable Completion Builtins478146
Node: A Programmable Completion Example489886
Node: Using History Interactively495234
Node: Bash History Facilities495918
Node: Bash History Builtins499656
Node: History Interaction507254
Node: Event Designators512207
Node: Word Designators513788
Node: Modifiers516183
Node: Installing Bash518123
Node: Basic Installation519242
Node: Compilers and Options523121
Node: Compiling For Multiple Architectures523874
Node: Installation Names525630
Node: Specifying the System Type527867
Node: Sharing Defaults528616
Node: Operation Controls529333
Node: Optional Features530355
Node: Reporting Bugs543081
Node: Major Differences From The Bourne Shell544441
Node: GNU Free Documentation License565871
Node: Indexes591051
Node: Builtin Index591505
Node: Reserved Word Index598606
Node: Variable Index601054
Node: Function Index618470
Node: Concept Index632606
Node: The Shopt Builtin232612
Node: Special Builtins249668
Node: Shell Variables250660
Node: Bourne Shell Variables251097
Node: Bash Variables253608
Node: Bash Features292895
Node: Invoking Bash293912
Node: Bash Startup Files301145
Node: Interactive Shells306508
Node: What is an Interactive Shell?306919
Node: Is this Shell Interactive?307584
Node: Interactive Shell Behavior308411
Node: Bash Conditional Expressions312175
Node: Shell Arithmetic317595
Node: Aliases320925
Node: Arrays324062
Node: The Directory Stack331767
Node: Directory Stack Builtins332567
Node: Controlling the Prompt337015
Node: The Restricted Shell340137
Node: Bash POSIX Mode343233
Node: Shell Compatibility Mode363195
Node: Job Control372205
Node: Job Control Basics372665
Node: Job Control Builtins379036
Node: Job Control Variables385827
Node: Command Line Editing387061
Node: Introduction and Notation388767
Node: Readline Interaction391122
Node: Readline Bare Essentials392313
Node: Readline Movement Commands394124
Node: Readline Killing Commands395123
Node: Readline Arguments397149
Node: Searching398242
Node: Readline Init File400488
Node: Readline Init File Syntax401794
Node: Conditional Init Constructs428748
Node: Sample Init File433136
Node: Bindable Readline Commands436259
Node: Commands For Moving437800
Node: Commands For History440267
Node: Commands For Text445661
Node: Commands For Killing449789
Node: Numeric Arguments452580
Node: Commands For Completion453735
Node: Keyboard Macros459434
Node: Miscellaneous Commands460138
Node: Readline vi Mode467684
Node: Programmable Completion468664
Node: Programmable Completion Builtins478403
Node: A Programmable Completion Example490143
Node: Using History Interactively495491
Node: Bash History Facilities496175
Node: Bash History Builtins499913
Node: History Interaction507511
Node: Event Designators512464
Node: Word Designators514045
Node: Modifiers516440
Node: Installing Bash518380
Node: Basic Installation519499
Node: Compilers and Options523378
Node: Compiling For Multiple Architectures524131
Node: Installation Names525887
Node: Specifying the System Type528124
Node: Sharing Defaults528873
Node: Operation Controls529590
Node: Optional Features530612
Node: Reporting Bugs543338
Node: Major Differences From The Bourne Shell544698
Node: GNU Free Documentation License566128
Node: Indexes591308
Node: Builtin Index591762
Node: Reserved Word Index598863
Node: Variable Index601311
Node: Function Index618727
Node: Concept Index632863

End Tag Table