Bash-5.1-rc1 release

This commit is contained in:
Chet Ramey
2020-10-05 18:18:34 -04:00
parent 3eb0018e75
commit 5f2b5d79e0
32 changed files with 4930 additions and 4460 deletions
+30
View File
@@ -1,3 +1,33 @@
This document details the changes between this version, bash-5.1-rc1, and
the previous version, bash-5.1-beta.
1. Changes to Bash
a. Fixed an inconsistency in the way HISTCMD is calculated when it's expanded
during a multi-line command.
b. Modified the change to here-document expansion containing backslash-quoted
double quotes.
c. Fixed a case where the shells's exit status could be greater than 255.
d. Modified changed to process substitution so the executed command has its
stdin redirected from /dev/null if it was previously interactive and
reading commands from the terminal.
2. New Features in Bash
a. There is a new contributed loadable builtin: asort.
3. Changes to Readline
a. Fixed a bug that could cause an application with an application-specific
redisplay function to crash if the line data structures had not been
initialized.
4. New Features in Readline
------------------------------------------------------------------------------
This document details the changes between this version, bash-5.1-beta, and
the previous version, bash-5.1-alpha.
+76
View File
@@ -8977,3 +8977,79 @@ eval.c
This protects against a command from PROMPT_COMMAND[n] unsetting the
corresponding element of PROMPT_COMMAND.
From a report from Koichi Murase <myoga.murase@gmail.com>
9/7
---
[bash-5.1-beta frozen]
9/8
---
lib/readline/display.c
- _rl_update_final: don't bother doing anything if the line structures
have not been initialized. Report and fix from gary@catalyst.net.nz
variables.c
- get_histcmd: perform the same adjustment as in prompt_history_number;
make sure to subtract one if we're doing this while executing a
command that has already been saved to the history list. Inspired
by a report from L A Walsh <bash@tlinx.org>
9/14
----
aclocal.m4
- BASH_STRUCT_WEXITSTATUS_OFFSET: fix typo in loop condition reported
by Andreas K. Hüttel <dilfridge@gentoo.org>
syntax.h
- slashify_in_here_document: restore previous value that doesn't
include double quote, since it's only special in certain cases
subst.c
- expand_word_internal: when processing backslash-double quote inside
a ${...} construct inside a here documemt, treat it the same as if
it were double-quoted, as posix says. Fixes report from
Andreas Schwab <schwab@linux-m68k.org>
9/15
----
support/signames.c
- added a number of more esoteric signal names from AIX and Solaris
parse.y
- report_syntax_error: make sure that the exit status is only set to
one of the special builtin exit statuses if we are really executing
a builtin here, not just if parse_and_execute_level > 0. Reported by
Rob Landley <rob@landley.net>
execute_cmd.c
- EX_BADSYNTAX: make sure that gets translated into EX_BADUSAGE (2)
- execute_simple_command: if a function returns a value greater than
EX_SHERRBASE, use builtin_status to translate it, as if a builtin
were being executed
- builtin_status: make sure a status > EX_SHERRBASE gets translated to
EXECUTION_FAILURE
9/21
----
subst.c
- process_substitute: set up input from /dev/null (standard for an
asynchronous process) only if the shell is interactive and reading
input from the terminal. This allows scripts to use process
substitution to filter stdin. From a report from
Andreas Schwab <schwab@linux-m68k.org>
9/23
----
doc/{bash.1,bashref.texi}
- ENV: a couple of changes clarifying that it's only used when an
interactive shell is started in posix mode. Report from
Reuben Thomas <rrt@sc3d.org>
examples/loadables/asort.c
- asort: loadable builtin to sort an array. Contributed by
Geir Hauge <geir.hauge@gmail.com>
10/1
----
[bash-5.1-beta frozen]
+2
View File
@@ -712,6 +712,7 @@ examples/loadables/Makefile.in f
examples/loadables/Makefile.inc.in f
examples/loadables/necho.c f
examples/loadables/hello.c f
examples/loadables/asort.c f
examples/loadables/accept.c f
examples/loadables/print.c f
examples/loadables/realpath.c f
@@ -1175,6 +1176,7 @@ tests/jobs3.sub f
tests/jobs4.sub f
tests/jobs5.sub f
tests/jobs6.sub f
tests/jobs7.sub f
tests/jobs.right f
tests/lastpipe.right f
tests/lastpipe.tests f
+2
View File
@@ -145,6 +145,8 @@ tt. The `fg' and `bg' builtins now return an error in a command substitution
uu. The shell now attempts to unlink all FIFOs on exit, whether a consuming
process has finished with them or not.
vv. There is a new contributed loadable builtin: asort.
2. New Features in Readline
a. If a second consecutive completion attempt produces matches where the first
Vendored
+1 -1
View File
@@ -2207,7 +2207,7 @@ main(c, v)
exit (255);
/* crack s */
for (i = 0; i < (sizeof(s) - 8); i++)
for (i = 0; i < (sizeof(s) * 8); i++)
{
n = (s >> i) & 0xff;
if (n == 42)
Vendored
+12 -12
View File
@@ -1,7 +1,7 @@
#! /bin/sh
# From configure.ac for Bash 5.1, version 5.021.
# From configure.ac for Bash 5.1, version 5.022.
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for bash 5.1-beta.
# Generated by GNU Autoconf 2.69 for bash 5.1-rc1.
#
# Report bugs to <bug-bash@gnu.org>.
#
@@ -581,8 +581,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='bash'
PACKAGE_TARNAME='bash'
PACKAGE_VERSION='5.1-beta'
PACKAGE_STRING='bash 5.1-beta'
PACKAGE_VERSION='5.1-rc1'
PACKAGE_STRING='bash 5.1-rc1'
PACKAGE_BUGREPORT='bug-bash@gnu.org'
PACKAGE_URL=''
@@ -1427,7 +1427,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures bash 5.1-beta to adapt to many kinds of systems.
\`configure' configures bash 5.1-rc1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -1492,7 +1492,7 @@ fi
if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of bash 5.1-beta:";;
short | recursive ) echo "Configuration of bash 5.1-rc1:";;
esac
cat <<\_ACEOF
@@ -1693,7 +1693,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
bash configure 5.1-beta
bash configure 5.1-rc1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2402,7 +2402,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.
It was created by bash $as_me 5.1-beta, which was
It was created by bash $as_me 5.1-rc1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -2800,7 +2800,7 @@ ac_config_headers="$ac_config_headers config.h"
BASHVERS=5.1
RELSTATUS=beta
RELSTATUS=rc1
case "$RELSTATUS" in
alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;;
@@ -18296,7 +18296,7 @@ main(c, v)
exit (255);
/* crack s */
for (i = 0; i < (sizeof(s) - 8); i++)
for (i = 0; i < (sizeof(s) * 8); i++)
{
n = (s >> i) & 0xff;
if (n == 42)
@@ -21057,7 +21057,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by bash $as_me 5.1-beta, which was
This file was extended by bash $as_me 5.1-rc1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -21123,7 +21123,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
bash config.status 5.1-beta
bash config.status 5.1-rc1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
+2 -2
View File
@@ -21,10 +21,10 @@ 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.1, version 5.021])dnl
AC_REVISION([for Bash 5.1, version 5.022])dnl
define(bashvers, 5.1)
define(relstatus, beta)
define(relstatus, rc1)
AC_INIT([bash], bashvers-relstatus, [bug-bash@gnu.org])
+3 -3
View File
@@ -1131,8 +1131,8 @@ PPAARRAAMMEETTEERRSS
EEMMAACCSS If bbaasshh finds this variable in the environment when the shell
starts with value "t", it assumes that the shell is running in
an Emacs shell buffer and disables line editing.
EENNVV Similar to BBAASSHH__EENNVV; used when the shell is invoked in _p_o_s_i_x
_m_o_d_e.
EENNVV Expanded and executed similarly to BBAASSHH__EENNVV (see IINNVVOOCCAATTIIOONN
above) when an interactive shell is invoked in _p_o_s_i_x _m_o_d_e.
EEXXEECCIIGGNNOORREE
A colon-separated list of shell patterns (see PPaatttteerrnn MMaattcchhiinngg)
defining the list of filenames to be ignored by command search
@@ -6401,4 +6401,4 @@ BBUUGGSS
GNU Bash 5.1 2020 August 25 BASH(1)
GNU Bash 5.1 2020 September 23 BASH(1)
+6 -5
View File
@@ -5,12 +5,12 @@
.\" Case Western Reserve University
.\" chet.ramey@case.edu
.\"
.\" Last Change: Tue Aug 25 09:58:55 EDT 2020
.\" Last Change: Wed Sep 23 09:28:31 EDT 2020
.\"
.\" bash_builtins, strip all but Built-Ins section
.if \n(zZ=1 .ig zZ
.if \n(zY=1 .ig zY
.TH BASH 1 "2020 August 25" "GNU Bash 5.1"
.TH BASH 1 "2020 September 23" "GNU Bash 5.1"
.\"
.\" There's some problem with having a `@'
.\" in a tagged paragraph with the BSD man macros.
@@ -2136,10 +2136,11 @@ it assumes that the shell is running in an Emacs shell buffer and disables
line editing.
.TP
.B ENV
Similar to
Expanded and executed similarly to
.SM
.BR BASH_ENV ;
used when the shell is invoked in \fIposix mode\fP.
.B BASH_ENV
(see \fBINVOCATION\fP above)
when an interactive shell is invoked in \fIposix mode\fP.
.TP
.B EXECIGNORE
A colon-separated list of shell patterns (see \fBPattern Matching\fP)
+7 -6
View File
@@ -3,7 +3,7 @@
</HEAD>
<BODY><TABLE WIDTH=100%>
<TR>
<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2020 August 25<TH ALIGN=RIGHT width=33%>BASH(1)
<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2020 September 23<TH ALIGN=RIGHT width=33%>BASH(1)
</TR>
</TABLE>
<BR><A HREF="#index">Index</A>
@@ -2708,11 +2708,12 @@ line editing.
<DT><B>ENV</B>
<DD>
Similar to
<FONT SIZE=-1><B>BASH_ENV</B>;
Expanded and executed similarly to
<FONT SIZE=-1><B>BASH_ENV</B>
</FONT>
used when the shell is invoked in <I>posix mode</I>.
(see <B>INVOCATION</B> above)
when an interactive shell is invoked in <I>posix mode</I>.
<DT><B>EXECIGNORE</B>
<DD>
@@ -14252,7 +14253,7 @@ There may be only one active coprocess at a time.
<HR>
<TABLE WIDTH=100%>
<TR>
<TH ALIGN=LEFT width=33%>GNU Bash 5.1<TH ALIGN=CENTER width=33%>2020 August 25<TH ALIGN=RIGHT width=33%>BASH(1)
<TH ALIGN=LEFT width=33%>GNU Bash 5.1<TH ALIGN=CENTER width=33%>2020 September 23<TH ALIGN=RIGHT width=33%>BASH(1)
</TR>
</TABLE>
<HR>
@@ -14359,6 +14360,6 @@ There may be only one active coprocess at a time.
</DL>
<HR>
This document was created by man2html from bash.1.<BR>
Time: 07 September 2020 09:52:27 EDT
Time: 01 October 2020 14:49:34 EDT
</BODY>
</HTML>
+200 -199
View File
@@ -2,9 +2,9 @@ This is bash.info, produced by makeinfo version 6.7 from
bashref.texi.
This text is a brief description of the features that are present in the
Bash shell (version 5.1, 25 August 2020).
Bash shell (version 5.1, 23 September 2020).
This is Edition 5.1, last updated 25 August 2020, of 'The GNU Bash
This is Edition 5.1, last updated 23 September 2020, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.1.
Copyright (C) 1988-2018 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.1, 25 August 2020). The Bash home page is
Bash shell (version 5.1, 23 September 2020). The Bash home page is
<http://www.gnu.org/software/bash/>.
This is Edition 5.1, last updated 25 August 2020, of 'The GNU Bash
This is Edition 5.1, last updated 23 September 2020, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.1.
Bash contains features that appear in other popular shells, and some
@@ -5130,8 +5130,9 @@ Variables::).
Emacs shell buffer and disables line editing.
'ENV'
Similar to 'BASH_ENV'; used when the shell is invoked in POSIX Mode
(*note Bash POSIX Mode::).
Expanded and executed similarlty to 'BASH_ENV' (*note Bash Startup
Files::) when an interactive shell is invoked in POSIX Mode (*note
Bash POSIX Mode::).
'EPOCHREALTIME'
Each time this parameter is referenced, it expands to the number of
@@ -11482,65 +11483,65 @@ D.3 Parameter and Variable Index
* enable-keypad: Readline Init File Syntax.
(line 150)
* ENV: Bash Variables. (line 279)
* EPOCHREALTIME: Bash Variables. (line 283)
* EPOCHSECONDS: Bash Variables. (line 291)
* EUID: Bash Variables. (line 298)
* EXECIGNORE: Bash Variables. (line 302)
* EPOCHREALTIME: Bash Variables. (line 284)
* EPOCHSECONDS: Bash Variables. (line 292)
* EUID: Bash Variables. (line 299)
* EXECIGNORE: Bash Variables. (line 303)
* expand-tilde: Readline Init File Syntax.
(line 161)
* FCEDIT: Bash Variables. (line 315)
* FIGNORE: Bash Variables. (line 319)
* FUNCNAME: Bash Variables. (line 325)
* FUNCNEST: Bash Variables. (line 342)
* GLOBIGNORE: Bash Variables. (line 347)
* GROUPS: Bash Variables. (line 354)
* histchars: Bash Variables. (line 360)
* HISTCMD: Bash Variables. (line 375)
* HISTCONTROL: Bash Variables. (line 381)
* HISTFILE: Bash Variables. (line 397)
* HISTFILESIZE: Bash Variables. (line 401)
* HISTIGNORE: Bash Variables. (line 412)
* FCEDIT: Bash Variables. (line 316)
* FIGNORE: Bash Variables. (line 320)
* FUNCNAME: Bash Variables. (line 326)
* FUNCNEST: Bash Variables. (line 343)
* GLOBIGNORE: Bash Variables. (line 348)
* GROUPS: Bash Variables. (line 355)
* histchars: Bash Variables. (line 361)
* HISTCMD: Bash Variables. (line 376)
* HISTCONTROL: Bash Variables. (line 382)
* HISTFILE: Bash Variables. (line 398)
* HISTFILESIZE: Bash Variables. (line 402)
* HISTIGNORE: Bash Variables. (line 413)
* history-preserve-point: Readline Init File Syntax.
(line 165)
* history-size: Readline Init File Syntax.
(line 171)
* HISTSIZE: Bash Variables. (line 432)
* HISTTIMEFORMAT: Bash Variables. (line 439)
* HISTSIZE: Bash Variables. (line 433)
* HISTTIMEFORMAT: Bash Variables. (line 440)
* HOME: Bourne Shell Variables.
(line 13)
* horizontal-scroll-mode: Readline Init File Syntax.
(line 180)
* HOSTFILE: Bash Variables. (line 447)
* HOSTNAME: Bash Variables. (line 458)
* HOSTTYPE: Bash Variables. (line 461)
* HOSTFILE: Bash Variables. (line 448)
* HOSTNAME: Bash Variables. (line 459)
* HOSTTYPE: Bash Variables. (line 462)
* IFS: Bourne Shell Variables.
(line 18)
* IGNOREEOF: Bash Variables. (line 464)
* IGNOREEOF: Bash Variables. (line 465)
* input-meta: Readline Init File Syntax.
(line 189)
* INPUTRC: Bash Variables. (line 474)
* INSIDE_EMACS: Bash Variables. (line 478)
* INPUTRC: Bash Variables. (line 475)
* INSIDE_EMACS: Bash Variables. (line 479)
* isearch-terminators: Readline Init File Syntax.
(line 197)
* keymap: Readline Init File Syntax.
(line 204)
* LANG: Bash Variables. (line 484)
* LC_ALL: Bash Variables. (line 488)
* LC_COLLATE: Bash Variables. (line 492)
* LC_CTYPE: Bash Variables. (line 499)
* LANG: Bash Variables. (line 485)
* LC_ALL: Bash Variables. (line 489)
* LC_COLLATE: Bash Variables. (line 493)
* LC_CTYPE: Bash Variables. (line 500)
* LC_MESSAGES: Locale Translation. (line 15)
* LC_MESSAGES <1>: Bash Variables. (line 504)
* LC_NUMERIC: Bash Variables. (line 508)
* LC_TIME: Bash Variables. (line 512)
* LINENO: Bash Variables. (line 516)
* LINES: Bash Variables. (line 521)
* MACHTYPE: Bash Variables. (line 527)
* LC_MESSAGES <1>: Bash Variables. (line 505)
* LC_NUMERIC: Bash Variables. (line 509)
* LC_TIME: Bash Variables. (line 513)
* LINENO: Bash Variables. (line 517)
* LINES: Bash Variables. (line 522)
* MACHTYPE: Bash Variables. (line 528)
* MAIL: Bourne Shell Variables.
(line 22)
* MAILCHECK: Bash Variables. (line 531)
* MAILCHECK: Bash Variables. (line 532)
* MAILPATH: Bourne Shell Variables.
(line 27)
* MAPFILE: Bash Variables. (line 539)
* MAPFILE: Bash Variables. (line 540)
* mark-modified-lines: Readline Init File Syntax.
(line 234)
* mark-symlinked-directories: Readline Init File Syntax.
@@ -11551,43 +11552,43 @@ D.3 Parameter and Variable Index
(line 251)
* meta-flag: Readline Init File Syntax.
(line 189)
* OLDPWD: Bash Variables. (line 543)
* OLDPWD: Bash Variables. (line 544)
* OPTARG: Bourne Shell Variables.
(line 34)
* OPTERR: Bash Variables. (line 546)
* OPTERR: Bash Variables. (line 547)
* OPTIND: Bourne Shell Variables.
(line 38)
* OSTYPE: Bash Variables. (line 550)
* OSTYPE: Bash Variables. (line 551)
* output-meta: Readline Init File Syntax.
(line 256)
* page-completions: Readline Init File Syntax.
(line 262)
* PATH: Bourne Shell Variables.
(line 42)
* PIPESTATUS: Bash Variables. (line 553)
* POSIXLY_CORRECT: Bash Variables. (line 558)
* PPID: Bash Variables. (line 568)
* PROMPT_COMMAND: Bash Variables. (line 572)
* PROMPT_DIRTRIM: Bash Variables. (line 578)
* PS0: Bash Variables. (line 584)
* PIPESTATUS: Bash Variables. (line 554)
* POSIXLY_CORRECT: Bash Variables. (line 559)
* PPID: Bash Variables. (line 569)
* PROMPT_COMMAND: Bash Variables. (line 573)
* PROMPT_DIRTRIM: Bash Variables. (line 579)
* PS0: Bash Variables. (line 585)
* PS1: Bourne Shell Variables.
(line 48)
* PS2: Bourne Shell Variables.
(line 53)
* PS3: Bash Variables. (line 589)
* PS4: Bash Variables. (line 594)
* PWD: Bash Variables. (line 602)
* RANDOM: Bash Variables. (line 605)
* READLINE_LINE: Bash Variables. (line 611)
* READLINE_MARK: Bash Variables. (line 615)
* READLINE_POINT: Bash Variables. (line 621)
* REPLY: Bash Variables. (line 625)
* PS3: Bash Variables. (line 590)
* PS4: Bash Variables. (line 595)
* PWD: Bash Variables. (line 603)
* RANDOM: Bash Variables. (line 606)
* READLINE_LINE: Bash Variables. (line 612)
* READLINE_MARK: Bash Variables. (line 616)
* READLINE_POINT: Bash Variables. (line 622)
* REPLY: Bash Variables. (line 626)
* revert-all-at-newline: Readline Init File Syntax.
(line 272)
* SECONDS: Bash Variables. (line 628)
* SHELL: Bash Variables. (line 637)
* SHELLOPTS: Bash Variables. (line 642)
* SHLVL: Bash Variables. (line 651)
* SECONDS: Bash Variables. (line 629)
* SHELL: Bash Variables. (line 638)
* SHELLOPTS: Bash Variables. (line 643)
* SHLVL: Bash Variables. (line 652)
* show-all-if-ambiguous: Readline Init File Syntax.
(line 278)
* show-all-if-unmodified: Readline Init File Syntax.
@@ -11596,13 +11597,13 @@ D.3 Parameter and Variable Index
(line 293)
* skip-completed-text: Readline Init File Syntax.
(line 299)
* SRANDOM: Bash Variables. (line 656)
* SRANDOM: Bash Variables. (line 657)
* TEXTDOMAIN: Locale Translation. (line 15)
* TEXTDOMAINDIR: Locale Translation. (line 15)
* TIMEFORMAT: Bash Variables. (line 665)
* TMOUT: Bash Variables. (line 703)
* TMPDIR: Bash Variables. (line 715)
* UID: Bash Variables. (line 719)
* TIMEFORMAT: Bash Variables. (line 666)
* TMOUT: Bash Variables. (line 704)
* TMPDIR: Bash Variables. (line 716)
* UID: Bash Variables. (line 720)
* vi-cmd-mode-string: Readline Init File Syntax.
(line 312)
* vi-ins-mode-string: Readline Init File Syntax.
@@ -11979,137 +11980,137 @@ D.5 Concept Index

Tag Table:
Node: Top893
Node: Introduction2809
Node: What is Bash?3025
Node: What is a shell?4139
Node: Definitions6677
Node: Basic Shell Features9628
Node: Shell Syntax10847
Node: Shell Operation11873
Node: Quoting13166
Node: Escape Character14466
Node: Single Quotes14951
Node: Double Quotes15299
Node: ANSI-C Quoting16577
Node: Locale Translation17836
Node: Comments18989
Node: Shell Commands19607
Node: Reserved Words20545
Node: Simple Commands21301
Node: Pipelines21955
Node: Lists24887
Node: Compound Commands26678
Node: Looping Constructs27690
Node: Conditional Constructs30185
Node: Command Grouping41756
Node: Coprocesses43235
Node: GNU Parallel45138
Node: Shell Functions49439
Node: Shell Parameters56646
Node: Positional Parameters61059
Node: Special Parameters61959
Node: Shell Expansions65183
Node: Brace Expansion67306
Node: Tilde Expansion70029
Node: Shell Parameter Expansion72646
Node: Command Substitution87775
Node: Arithmetic Expansion89130
Node: Process Substitution90062
Node: Word Splitting91182
Node: Filename Expansion93126
Node: Pattern Matching95675
Node: Quote Removal99661
Node: Redirections99956
Node: Executing Commands109526
Node: Simple Command Expansion110196
Node: Command Search and Execution112150
Node: Command Execution Environment114526
Node: Environment117510
Node: Exit Status119169
Node: Signals120839
Node: Shell Scripts122806
Node: Shell Builtin Commands125818
Node: Bourne Shell Builtins127856
Node: Bash Builtins148785
Node: Modifying Shell Behavior178720
Node: The Set Builtin179065
Node: The Shopt Builtin189478
Node: Special Builtins204388
Node: Shell Variables205367
Node: Bourne Shell Variables205804
Node: Bash Variables207908
Node: Bash Features240478
Node: Invoking Bash241491
Node: Bash Startup Files247504
Node: Interactive Shells252607
Node: What is an Interactive Shell?253017
Node: Is this Shell Interactive?253666
Node: Interactive Shell Behavior254481
Node: Bash Conditional Expressions257995
Node: Shell Arithmetic262572
Node: Aliases265512
Node: Arrays268132
Node: The Directory Stack274141
Node: Directory Stack Builtins274925
Node: Controlling the Prompt277893
Node: The Restricted Shell280843
Node: Bash POSIX Mode283437
Node: Shell Compatibility Mode294473
Node: Job Control301129
Node: Job Control Basics301589
Node: Job Control Builtins306585
Node: Job Control Variables311985
Node: Command Line Editing313141
Node: Introduction and Notation314812
Node: Readline Interaction316435
Node: Readline Bare Essentials317626
Node: Readline Movement Commands319409
Node: Readline Killing Commands320369
Node: Readline Arguments322287
Node: Searching323331
Node: Readline Init File325517
Node: Readline Init File Syntax326776
Node: Conditional Init Constructs347315
Node: Sample Init File351511
Node: Bindable Readline Commands354635
Node: Commands For Moving355839
Node: Commands For History357890
Node: Commands For Text362683
Node: Commands For Killing366332
Node: Numeric Arguments369365
Node: Commands For Completion370504
Node: Keyboard Macros374695
Node: Miscellaneous Commands375382
Node: Readline vi Mode381066
Node: Programmable Completion381973
Node: Programmable Completion Builtins389753
Node: A Programmable Completion Example400448
Node: Using History Interactively405695
Node: Bash History Facilities406379
Node: Bash History Builtins409384
Node: History Interaction414113
Node: Event Designators417733
Node: Word Designators419087
Node: Modifiers420847
Node: Installing Bash422658
Node: Basic Installation423795
Node: Compilers and Options427053
Node: Compiling For Multiple Architectures427794
Node: Installation Names429487
Node: Specifying the System Type430305
Node: Sharing Defaults431021
Node: Operation Controls431694
Node: Optional Features432652
Node: Reporting Bugs443170
Node: Major Differences From The Bourne Shell444364
Node: GNU Free Documentation License461216
Node: Indexes486393
Node: Builtin Index486847
Node: Reserved Word Index493674
Node: Variable Index496122
Node: Function Index512019
Node: Concept Index525529
Node: Top899
Node: Introduction2821
Node: What is Bash?3037
Node: What is a shell?4151
Node: Definitions6689
Node: Basic Shell Features9640
Node: Shell Syntax10859
Node: Shell Operation11885
Node: Quoting13178
Node: Escape Character14478
Node: Single Quotes14963
Node: Double Quotes15311
Node: ANSI-C Quoting16589
Node: Locale Translation17848
Node: Comments19001
Node: Shell Commands19619
Node: Reserved Words20557
Node: Simple Commands21313
Node: Pipelines21967
Node: Lists24899
Node: Compound Commands26690
Node: Looping Constructs27702
Node: Conditional Constructs30197
Node: Command Grouping41768
Node: Coprocesses43247
Node: GNU Parallel45150
Node: Shell Functions49451
Node: Shell Parameters56658
Node: Positional Parameters61071
Node: Special Parameters61971
Node: Shell Expansions65195
Node: Brace Expansion67318
Node: Tilde Expansion70041
Node: Shell Parameter Expansion72658
Node: Command Substitution87787
Node: Arithmetic Expansion89142
Node: Process Substitution90074
Node: Word Splitting91194
Node: Filename Expansion93138
Node: Pattern Matching95687
Node: Quote Removal99673
Node: Redirections99968
Node: Executing Commands109538
Node: Simple Command Expansion110208
Node: Command Search and Execution112162
Node: Command Execution Environment114538
Node: Environment117522
Node: Exit Status119181
Node: Signals120851
Node: Shell Scripts122818
Node: Shell Builtin Commands125830
Node: Bourne Shell Builtins127868
Node: Bash Builtins148797
Node: Modifying Shell Behavior178732
Node: The Set Builtin179077
Node: The Shopt Builtin189490
Node: Special Builtins204400
Node: Shell Variables205379
Node: Bourne Shell Variables205816
Node: Bash Variables207920
Node: Bash Features240554
Node: Invoking Bash241567
Node: Bash Startup Files247580
Node: Interactive Shells252683
Node: What is an Interactive Shell?253093
Node: Is this Shell Interactive?253742
Node: Interactive Shell Behavior254557
Node: Bash Conditional Expressions258071
Node: Shell Arithmetic262648
Node: Aliases265588
Node: Arrays268208
Node: The Directory Stack274217
Node: Directory Stack Builtins275001
Node: Controlling the Prompt277969
Node: The Restricted Shell280919
Node: Bash POSIX Mode283513
Node: Shell Compatibility Mode294549
Node: Job Control301205
Node: Job Control Basics301665
Node: Job Control Builtins306661
Node: Job Control Variables312061
Node: Command Line Editing313217
Node: Introduction and Notation314888
Node: Readline Interaction316511
Node: Readline Bare Essentials317702
Node: Readline Movement Commands319485
Node: Readline Killing Commands320445
Node: Readline Arguments322363
Node: Searching323407
Node: Readline Init File325593
Node: Readline Init File Syntax326852
Node: Conditional Init Constructs347391
Node: Sample Init File351587
Node: Bindable Readline Commands354711
Node: Commands For Moving355915
Node: Commands For History357966
Node: Commands For Text362759
Node: Commands For Killing366408
Node: Numeric Arguments369441
Node: Commands For Completion370580
Node: Keyboard Macros374771
Node: Miscellaneous Commands375458
Node: Readline vi Mode381142
Node: Programmable Completion382049
Node: Programmable Completion Builtins389829
Node: A Programmable Completion Example400524
Node: Using History Interactively405771
Node: Bash History Facilities406455
Node: Bash History Builtins409460
Node: History Interaction414189
Node: Event Designators417809
Node: Word Designators419163
Node: Modifiers420923
Node: Installing Bash422734
Node: Basic Installation423871
Node: Compilers and Options427129
Node: Compiling For Multiple Architectures427870
Node: Installation Names429563
Node: Specifying the System Type430381
Node: Sharing Defaults431097
Node: Operation Controls431770
Node: Optional Features432728
Node: Reporting Bugs443246
Node: Major Differences From The Bourne Shell444440
Node: GNU Free Documentation License461292
Node: Indexes486469
Node: Builtin Index486923
Node: Reserved Word Index493750
Node: Variable Index496198
Node: Function Index512095
Node: Concept Index525605

End Tag Table
BIN
View File
Binary file not shown.
+3912 -3912
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+7 -5
View File
@@ -1,9 +1,9 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This text is a brief description of the features that are present in
the Bash shell (version 5.1, 25 August 2020).
the Bash shell (version 5.1, 23 September 2020).
This is Edition 5.1, last updated 25 August 2020,
This is Edition 5.1, last updated 23 September 2020,
of The GNU Bash Reference Manual,
for Bash, Version 5.1.
@@ -275,10 +275,10 @@ Next: <a href="#Introduction" accesskey="n" rel="next">Introduction</a>, Previou
<span id="Bash-Features-1"></span><h1 class="top">Bash Features</h1>
<p>This text is a brief description of the features that are present in
the Bash shell (version 5.1, 25 August 2020).
the Bash shell (version 5.1, 23 September 2020).
The Bash home page is <a href="http://www.gnu.org/software/bash/">http://www.gnu.org/software/bash/</a>.
</p>
<p>This is Edition 5.1, last updated 25 August 2020,
<p>This is Edition 5.1, last updated 23 September 2020,
of <cite>The GNU Bash Reference Manual</cite>,
for <code>Bash</code>, Version 5.1.
</p>
@@ -6872,7 +6872,9 @@ Emacs shell buffer and disables line editing.
<dt><code>ENV</code>
<span id="index-ENV"></span>
</dt>
<dd><p>Similar to <code>BASH_ENV</code>; used when the shell is invoked in
<dd><p>Expanded and executed similarlty to <code>BASH_ENV</code>
(see <a href="#Bash-Startup-Files">Bash Startup Files</a>)
when an interactive shell is invoked in
<small>POSIX</small> Mode (see <a href="#Bash-POSIX-Mode">Bash POSIX Mode</a>).
</p>
</dd>
+200 -199
View File
@@ -2,9 +2,9 @@ This is bashref.info, produced by makeinfo version 6.7 from
bashref.texi.
This text is a brief description of the features that are present in the
Bash shell (version 5.1, 25 August 2020).
Bash shell (version 5.1, 23 September 2020).
This is Edition 5.1, last updated 25 August 2020, of 'The GNU Bash
This is Edition 5.1, last updated 23 September 2020, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.1.
Copyright (C) 1988-2018 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.1, 25 August 2020). The Bash home page is
Bash shell (version 5.1, 23 September 2020). The Bash home page is
<http://www.gnu.org/software/bash/>.
This is Edition 5.1, last updated 25 August 2020, of 'The GNU Bash
This is Edition 5.1, last updated 23 September 2020, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.1.
Bash contains features that appear in other popular shells, and some
@@ -5130,8 +5130,9 @@ Variables::).
Emacs shell buffer and disables line editing.
'ENV'
Similar to 'BASH_ENV'; used when the shell is invoked in POSIX Mode
(*note Bash POSIX Mode::).
Expanded and executed similarlty to 'BASH_ENV' (*note Bash Startup
Files::) when an interactive shell is invoked in POSIX Mode (*note
Bash POSIX Mode::).
'EPOCHREALTIME'
Each time this parameter is referenced, it expands to the number of
@@ -11482,65 +11483,65 @@ D.3 Parameter and Variable Index
* enable-keypad: Readline Init File Syntax.
(line 150)
* ENV: Bash Variables. (line 279)
* EPOCHREALTIME: Bash Variables. (line 283)
* EPOCHSECONDS: Bash Variables. (line 291)
* EUID: Bash Variables. (line 298)
* EXECIGNORE: Bash Variables. (line 302)
* EPOCHREALTIME: Bash Variables. (line 284)
* EPOCHSECONDS: Bash Variables. (line 292)
* EUID: Bash Variables. (line 299)
* EXECIGNORE: Bash Variables. (line 303)
* expand-tilde: Readline Init File Syntax.
(line 161)
* FCEDIT: Bash Variables. (line 315)
* FIGNORE: Bash Variables. (line 319)
* FUNCNAME: Bash Variables. (line 325)
* FUNCNEST: Bash Variables. (line 342)
* GLOBIGNORE: Bash Variables. (line 347)
* GROUPS: Bash Variables. (line 354)
* histchars: Bash Variables. (line 360)
* HISTCMD: Bash Variables. (line 375)
* HISTCONTROL: Bash Variables. (line 381)
* HISTFILE: Bash Variables. (line 397)
* HISTFILESIZE: Bash Variables. (line 401)
* HISTIGNORE: Bash Variables. (line 412)
* FCEDIT: Bash Variables. (line 316)
* FIGNORE: Bash Variables. (line 320)
* FUNCNAME: Bash Variables. (line 326)
* FUNCNEST: Bash Variables. (line 343)
* GLOBIGNORE: Bash Variables. (line 348)
* GROUPS: Bash Variables. (line 355)
* histchars: Bash Variables. (line 361)
* HISTCMD: Bash Variables. (line 376)
* HISTCONTROL: Bash Variables. (line 382)
* HISTFILE: Bash Variables. (line 398)
* HISTFILESIZE: Bash Variables. (line 402)
* HISTIGNORE: Bash Variables. (line 413)
* history-preserve-point: Readline Init File Syntax.
(line 165)
* history-size: Readline Init File Syntax.
(line 171)
* HISTSIZE: Bash Variables. (line 432)
* HISTTIMEFORMAT: Bash Variables. (line 439)
* HISTSIZE: Bash Variables. (line 433)
* HISTTIMEFORMAT: Bash Variables. (line 440)
* HOME: Bourne Shell Variables.
(line 13)
* horizontal-scroll-mode: Readline Init File Syntax.
(line 180)
* HOSTFILE: Bash Variables. (line 447)
* HOSTNAME: Bash Variables. (line 458)
* HOSTTYPE: Bash Variables. (line 461)
* HOSTFILE: Bash Variables. (line 448)
* HOSTNAME: Bash Variables. (line 459)
* HOSTTYPE: Bash Variables. (line 462)
* IFS: Bourne Shell Variables.
(line 18)
* IGNOREEOF: Bash Variables. (line 464)
* IGNOREEOF: Bash Variables. (line 465)
* input-meta: Readline Init File Syntax.
(line 189)
* INPUTRC: Bash Variables. (line 474)
* INSIDE_EMACS: Bash Variables. (line 478)
* INPUTRC: Bash Variables. (line 475)
* INSIDE_EMACS: Bash Variables. (line 479)
* isearch-terminators: Readline Init File Syntax.
(line 197)
* keymap: Readline Init File Syntax.
(line 204)
* LANG: Bash Variables. (line 484)
* LC_ALL: Bash Variables. (line 488)
* LC_COLLATE: Bash Variables. (line 492)
* LC_CTYPE: Bash Variables. (line 499)
* LANG: Bash Variables. (line 485)
* LC_ALL: Bash Variables. (line 489)
* LC_COLLATE: Bash Variables. (line 493)
* LC_CTYPE: Bash Variables. (line 500)
* LC_MESSAGES: Locale Translation. (line 15)
* LC_MESSAGES <1>: Bash Variables. (line 504)
* LC_NUMERIC: Bash Variables. (line 508)
* LC_TIME: Bash Variables. (line 512)
* LINENO: Bash Variables. (line 516)
* LINES: Bash Variables. (line 521)
* MACHTYPE: Bash Variables. (line 527)
* LC_MESSAGES <1>: Bash Variables. (line 505)
* LC_NUMERIC: Bash Variables. (line 509)
* LC_TIME: Bash Variables. (line 513)
* LINENO: Bash Variables. (line 517)
* LINES: Bash Variables. (line 522)
* MACHTYPE: Bash Variables. (line 528)
* MAIL: Bourne Shell Variables.
(line 22)
* MAILCHECK: Bash Variables. (line 531)
* MAILCHECK: Bash Variables. (line 532)
* MAILPATH: Bourne Shell Variables.
(line 27)
* MAPFILE: Bash Variables. (line 539)
* MAPFILE: Bash Variables. (line 540)
* mark-modified-lines: Readline Init File Syntax.
(line 234)
* mark-symlinked-directories: Readline Init File Syntax.
@@ -11551,43 +11552,43 @@ D.3 Parameter and Variable Index
(line 251)
* meta-flag: Readline Init File Syntax.
(line 189)
* OLDPWD: Bash Variables. (line 543)
* OLDPWD: Bash Variables. (line 544)
* OPTARG: Bourne Shell Variables.
(line 34)
* OPTERR: Bash Variables. (line 546)
* OPTERR: Bash Variables. (line 547)
* OPTIND: Bourne Shell Variables.
(line 38)
* OSTYPE: Bash Variables. (line 550)
* OSTYPE: Bash Variables. (line 551)
* output-meta: Readline Init File Syntax.
(line 256)
* page-completions: Readline Init File Syntax.
(line 262)
* PATH: Bourne Shell Variables.
(line 42)
* PIPESTATUS: Bash Variables. (line 553)
* POSIXLY_CORRECT: Bash Variables. (line 558)
* PPID: Bash Variables. (line 568)
* PROMPT_COMMAND: Bash Variables. (line 572)
* PROMPT_DIRTRIM: Bash Variables. (line 578)
* PS0: Bash Variables. (line 584)
* PIPESTATUS: Bash Variables. (line 554)
* POSIXLY_CORRECT: Bash Variables. (line 559)
* PPID: Bash Variables. (line 569)
* PROMPT_COMMAND: Bash Variables. (line 573)
* PROMPT_DIRTRIM: Bash Variables. (line 579)
* PS0: Bash Variables. (line 585)
* PS1: Bourne Shell Variables.
(line 48)
* PS2: Bourne Shell Variables.
(line 53)
* PS3: Bash Variables. (line 589)
* PS4: Bash Variables. (line 594)
* PWD: Bash Variables. (line 602)
* RANDOM: Bash Variables. (line 605)
* READLINE_LINE: Bash Variables. (line 611)
* READLINE_MARK: Bash Variables. (line 615)
* READLINE_POINT: Bash Variables. (line 621)
* REPLY: Bash Variables. (line 625)
* PS3: Bash Variables. (line 590)
* PS4: Bash Variables. (line 595)
* PWD: Bash Variables. (line 603)
* RANDOM: Bash Variables. (line 606)
* READLINE_LINE: Bash Variables. (line 612)
* READLINE_MARK: Bash Variables. (line 616)
* READLINE_POINT: Bash Variables. (line 622)
* REPLY: Bash Variables. (line 626)
* revert-all-at-newline: Readline Init File Syntax.
(line 272)
* SECONDS: Bash Variables. (line 628)
* SHELL: Bash Variables. (line 637)
* SHELLOPTS: Bash Variables. (line 642)
* SHLVL: Bash Variables. (line 651)
* SECONDS: Bash Variables. (line 629)
* SHELL: Bash Variables. (line 638)
* SHELLOPTS: Bash Variables. (line 643)
* SHLVL: Bash Variables. (line 652)
* show-all-if-ambiguous: Readline Init File Syntax.
(line 278)
* show-all-if-unmodified: Readline Init File Syntax.
@@ -11596,13 +11597,13 @@ D.3 Parameter and Variable Index
(line 293)
* skip-completed-text: Readline Init File Syntax.
(line 299)
* SRANDOM: Bash Variables. (line 656)
* SRANDOM: Bash Variables. (line 657)
* TEXTDOMAIN: Locale Translation. (line 15)
* TEXTDOMAINDIR: Locale Translation. (line 15)
* TIMEFORMAT: Bash Variables. (line 665)
* TMOUT: Bash Variables. (line 703)
* TMPDIR: Bash Variables. (line 715)
* UID: Bash Variables. (line 719)
* TIMEFORMAT: Bash Variables. (line 666)
* TMOUT: Bash Variables. (line 704)
* TMPDIR: Bash Variables. (line 716)
* UID: Bash Variables. (line 720)
* vi-cmd-mode-string: Readline Init File Syntax.
(line 312)
* vi-ins-mode-string: Readline Init File Syntax.
@@ -11979,137 +11980,137 @@ D.5 Concept Index

Tag Table:
Node: Top893
Node: Introduction2809
Node: What is Bash?3025
Node: What is a shell?4139
Node: Definitions6677
Node: Basic Shell Features9628
Node: Shell Syntax10847
Node: Shell Operation11873
Node: Quoting13166
Node: Escape Character14466
Node: Single Quotes14951
Node: Double Quotes15299
Node: ANSI-C Quoting16577
Node: Locale Translation17836
Node: Comments18989
Node: Shell Commands19607
Node: Reserved Words20545
Node: Simple Commands21301
Node: Pipelines21955
Node: Lists24887
Node: Compound Commands26678
Node: Looping Constructs27690
Node: Conditional Constructs30185
Node: Command Grouping41756
Node: Coprocesses43235
Node: GNU Parallel45138
Node: Shell Functions49439
Node: Shell Parameters56646
Node: Positional Parameters61059
Node: Special Parameters61959
Node: Shell Expansions65183
Node: Brace Expansion67306
Node: Tilde Expansion70029
Node: Shell Parameter Expansion72646
Node: Command Substitution87775
Node: Arithmetic Expansion89130
Node: Process Substitution90062
Node: Word Splitting91182
Node: Filename Expansion93126
Node: Pattern Matching95675
Node: Quote Removal99661
Node: Redirections99956
Node: Executing Commands109526
Node: Simple Command Expansion110196
Node: Command Search and Execution112150
Node: Command Execution Environment114526
Node: Environment117510
Node: Exit Status119169
Node: Signals120839
Node: Shell Scripts122806
Node: Shell Builtin Commands125818
Node: Bourne Shell Builtins127856
Node: Bash Builtins148785
Node: Modifying Shell Behavior178720
Node: The Set Builtin179065
Node: The Shopt Builtin189478
Node: Special Builtins204388
Node: Shell Variables205367
Node: Bourne Shell Variables205804
Node: Bash Variables207908
Node: Bash Features240478
Node: Invoking Bash241491
Node: Bash Startup Files247504
Node: Interactive Shells252607
Node: What is an Interactive Shell?253017
Node: Is this Shell Interactive?253666
Node: Interactive Shell Behavior254481
Node: Bash Conditional Expressions257995
Node: Shell Arithmetic262572
Node: Aliases265512
Node: Arrays268132
Node: The Directory Stack274141
Node: Directory Stack Builtins274925
Node: Controlling the Prompt277893
Node: The Restricted Shell280843
Node: Bash POSIX Mode283437
Node: Shell Compatibility Mode294473
Node: Job Control301129
Node: Job Control Basics301589
Node: Job Control Builtins306585
Node: Job Control Variables311985
Node: Command Line Editing313141
Node: Introduction and Notation314812
Node: Readline Interaction316435
Node: Readline Bare Essentials317626
Node: Readline Movement Commands319409
Node: Readline Killing Commands320369
Node: Readline Arguments322287
Node: Searching323331
Node: Readline Init File325517
Node: Readline Init File Syntax326776
Node: Conditional Init Constructs347315
Node: Sample Init File351511
Node: Bindable Readline Commands354635
Node: Commands For Moving355839
Node: Commands For History357890
Node: Commands For Text362683
Node: Commands For Killing366332
Node: Numeric Arguments369365
Node: Commands For Completion370504
Node: Keyboard Macros374695
Node: Miscellaneous Commands375382
Node: Readline vi Mode381066
Node: Programmable Completion381973
Node: Programmable Completion Builtins389753
Node: A Programmable Completion Example400448
Node: Using History Interactively405695
Node: Bash History Facilities406379
Node: Bash History Builtins409384
Node: History Interaction414113
Node: Event Designators417733
Node: Word Designators419087
Node: Modifiers420847
Node: Installing Bash422658
Node: Basic Installation423795
Node: Compilers and Options427053
Node: Compiling For Multiple Architectures427794
Node: Installation Names429487
Node: Specifying the System Type430305
Node: Sharing Defaults431021
Node: Operation Controls431694
Node: Optional Features432652
Node: Reporting Bugs443170
Node: Major Differences From The Bourne Shell444364
Node: GNU Free Documentation License461216
Node: Indexes486393
Node: Builtin Index486847
Node: Reserved Word Index493674
Node: Variable Index496122
Node: Function Index512019
Node: Concept Index525529
Node: Top899
Node: Introduction2821
Node: What is Bash?3037
Node: What is a shell?4151
Node: Definitions6689
Node: Basic Shell Features9640
Node: Shell Syntax10859
Node: Shell Operation11885
Node: Quoting13178
Node: Escape Character14478
Node: Single Quotes14963
Node: Double Quotes15311
Node: ANSI-C Quoting16589
Node: Locale Translation17848
Node: Comments19001
Node: Shell Commands19619
Node: Reserved Words20557
Node: Simple Commands21313
Node: Pipelines21967
Node: Lists24899
Node: Compound Commands26690
Node: Looping Constructs27702
Node: Conditional Constructs30197
Node: Command Grouping41768
Node: Coprocesses43247
Node: GNU Parallel45150
Node: Shell Functions49451
Node: Shell Parameters56658
Node: Positional Parameters61071
Node: Special Parameters61971
Node: Shell Expansions65195
Node: Brace Expansion67318
Node: Tilde Expansion70041
Node: Shell Parameter Expansion72658
Node: Command Substitution87787
Node: Arithmetic Expansion89142
Node: Process Substitution90074
Node: Word Splitting91194
Node: Filename Expansion93138
Node: Pattern Matching95687
Node: Quote Removal99673
Node: Redirections99968
Node: Executing Commands109538
Node: Simple Command Expansion110208
Node: Command Search and Execution112162
Node: Command Execution Environment114538
Node: Environment117522
Node: Exit Status119181
Node: Signals120851
Node: Shell Scripts122818
Node: Shell Builtin Commands125830
Node: Bourne Shell Builtins127868
Node: Bash Builtins148797
Node: Modifying Shell Behavior178732
Node: The Set Builtin179077
Node: The Shopt Builtin189490
Node: Special Builtins204400
Node: Shell Variables205379
Node: Bourne Shell Variables205816
Node: Bash Variables207920
Node: Bash Features240554
Node: Invoking Bash241567
Node: Bash Startup Files247580
Node: Interactive Shells252683
Node: What is an Interactive Shell?253093
Node: Is this Shell Interactive?253742
Node: Interactive Shell Behavior254557
Node: Bash Conditional Expressions258071
Node: Shell Arithmetic262648
Node: Aliases265588
Node: Arrays268208
Node: The Directory Stack274217
Node: Directory Stack Builtins275001
Node: Controlling the Prompt277969
Node: The Restricted Shell280919
Node: Bash POSIX Mode283513
Node: Shell Compatibility Mode294549
Node: Job Control301205
Node: Job Control Basics301665
Node: Job Control Builtins306661
Node: Job Control Variables312061
Node: Command Line Editing313217
Node: Introduction and Notation314888
Node: Readline Interaction316511
Node: Readline Bare Essentials317702
Node: Readline Movement Commands319485
Node: Readline Killing Commands320445
Node: Readline Arguments322363
Node: Searching323407
Node: Readline Init File325593
Node: Readline Init File Syntax326852
Node: Conditional Init Constructs347391
Node: Sample Init File351587
Node: Bindable Readline Commands354711
Node: Commands For Moving355915
Node: Commands For History357966
Node: Commands For Text362759
Node: Commands For Killing366408
Node: Numeric Arguments369441
Node: Commands For Completion370580
Node: Keyboard Macros374771
Node: Miscellaneous Commands375458
Node: Readline vi Mode381142
Node: Programmable Completion382049
Node: Programmable Completion Builtins389829
Node: A Programmable Completion Example400524
Node: Using History Interactively405771
Node: Bash History Facilities406455
Node: Bash History Builtins409460
Node: History Interaction414189
Node: Event Designators417809
Node: Word Designators419163
Node: Modifiers420923
Node: Installing Bash422734
Node: Basic Installation423871
Node: Compilers and Options427129
Node: Compiling For Multiple Architectures427870
Node: Installation Names429563
Node: Specifying the System Type430381
Node: Sharing Defaults431097
Node: Operation Controls431770
Node: Optional Features432728
Node: Reporting Bugs443246
Node: Major Differences From The Bourne Shell444440
Node: GNU Free Documentation License461292
Node: Indexes486469
Node: Builtin Index486923
Node: Reserved Word Index493750
Node: Variable Index496198
Node: Function Index512095
Node: Concept Index525605

End Tag Table
BIN
View File
Binary file not shown.
+98 -95
View File
@@ -1,7 +1,7 @@
%!PS-Adobe-2.0
%%Creator: dvips(k) 5.999 Copyright 2019 Radical Eye Software
%%Title: bashref.dvi
%%CreationDate: Mon Sep 7 13:52:24 2020
%%CreationDate: Thu Oct 1 18:49:31 2020
%%Pages: 189
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
@@ -12,7 +12,7 @@
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi
%DVIPSParameters: dpi=600
%DVIPSSource: TeX output 2020.09.07:0952
%DVIPSSource: TeX output 2020.10.01:1449
%%BeginProcSet: tex.pro 0 0
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
@@ -7614,23 +7614,24 @@ ifelse
TeXDict begin 1 0 bop 150 1318 a Fv(Bash)64 b(Reference)j(Man)-5
b(ual)p 150 1385 3600 34 v 2361 1481 a Fu(Reference)31
b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(5.1,)g(for)f
Ft(Bash)g Fu(V)-8 b(ersion)31 b(5.1.)3252 1697 y(August)f(2020)150
4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46
b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11
b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11
Ft(Bash)g Fu(V)-8 b(ersion)31 b(5.1.)3118 1697 y(Septem)m(b)s(er)f
(2020)150 4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11
b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068
y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11
b(oundation)p 150 5141 3600 17 v eop end
%%Page: 2 2
TeXDict begin 2 1 bop 150 4279 a Fu(This)35 b(text)h(is)g(a)g(brief)f
(description)h(of)f(the)h(features)g(that)g(are)g(presen)m(t)g(in)f
(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(5.1,)c(25)f(August)f
(2020\).)150 4523 y(This)e(is)g(Edition)h(5.1,)h(last)f(up)s(dated)e
(25)i(August)f(2020,)j(of)e Fr(The)f(GNU)h(Bash)f(Reference)h(Man)m
(ual)p Fu(,)h(for)150 4633 y Ft(Bash)p Fu(,)f(V)-8 b(ersion)31
b(5.1.)150 4767 y(Cop)m(yrigh)m(t)602 4764 y(c)577 4767
y Fq(\015)f Fu(1988{2018)35 b(F)-8 b(ree)31 b(Soft)m(w)m(are)h(F)-8
b(oundation,)31 b(Inc.)390 4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h
(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s
(cumen)m(t)f(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8
(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(5.1,)c(23)f(Septem)m(b)s
(er)f(2020\).)150 4523 y(This)e(is)h(Edition)f(5.1,)j(last)e(up)s
(dated)f(23)h(Septem)m(b)s(er)f(2020,)j(of)e Fr(The)f(GNU)i(Bash)e
(Reference)i(Man)m(ual)p Fu(,)150 4633 y(for)g Ft(Bash)p
Fu(,)g(V)-8 b(ersion)31 b(5.1.)150 4767 y(Cop)m(yrigh)m(t)602
4764 y(c)577 4767 y Fq(\015)f Fu(1988{2018)35 b(F)-8
b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390
4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8
b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f
(under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8
b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26
b(1.3)g(or)f(an)m(y)h(later)g(v)m(ersion)390 5121 y(published)43
b(b)m(y)h(the)h(F)-8 b(ree)46 b(Soft)m(w)m(are)g(F)-8
@@ -13762,124 +13763,126 @@ b(in)f(the)h(en)m(vironmen)m(t)g(when)e(the)i(shell)f(starts)h(with)f
(v)-5 b(alue)630 2466 y(`)p Ft(t)p Fu(',)36 b(it)f(assumes)f(that)h
(the)g(shell)f(is)h(running)e(in)h(an)g(Emacs)h(shell)g(bu\013er)e(and)
h(disables)630 2576 y(line)d(editing.)150 2734 y Ft(ENV)336
b Fu(Similar)35 b(to)g Ft(BASH_ENV)p Fu(;)h(used)e(when)g(the)h(shell)g
(is)g(in)m(v)m(ok)m(ed)h(in)e Fm(posix)h Fu(Mo)s(de)g(\(see)g(Sec-)630
2844 y(tion)c(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(101\).)150
3002 y Ft(EPOCHREALTIME)630 3112 y Fu(Eac)m(h)38 b(time)f(this)g
b Fu(Expanded)30 b(and)h(executed)h(similarlt)m(y)g(to)g
Ft(BASH_ENV)d Fu(\(see)k(Section)f(6.2)g([Bash)g(Startup)630
2844 y(Files],)39 b(page)e(88\))h(when)d(an)h(in)m(teractiv)m(e)j
(shell)d(is)h(in)m(v)m(ok)m(ed)g(in)f Fm(posix)g Fu(Mo)s(de)g(\(see)h
(Sec-)630 2953 y(tion)31 b(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g
(101\).)150 3112 y Ft(EPOCHREALTIME)630 3221 y Fu(Eac)m(h)38
b(time)f(this)g(parameter)h(is)f(referenced,)i(it)f(expands)e(to)i(the)
f(n)m(um)m(b)s(er)f(of)h(seconds)630 3331 y(since)f(the)g(Unix)f(Ep)s
(o)s(c)m(h)g(as)h(a)g(\015oating)h(p)s(oin)m(t)f(v)-5
b(alue)36 b(with)f(micro-second)i(gran)m(ularit)m(y)630
3440 y(\(see)42 b(the)g(do)s(cumen)m(tation)g(for)f(the)g(C)g(library)g
(function)g Fr(time)47 b Fu(for)41 b(the)h(de\014nition)f(of)630
3550 y(Ep)s(o)s(c)m(h\).)82 b(Assignmen)m(ts)44 b(to)h
Ft(EPOCHREALTIME)c Fu(are)j(ignored.)83 b(If)43 b Ft(EPOCHREALTIME)e
Fu(is)630 3660 y(unset,)30 b(it)h(loses)g(its)g(sp)s(ecial)g(prop)s
(erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)150
3818 y Ft(EPOCHSECONDS)630 3927 y Fu(Eac)m(h)38 b(time)f(this)g
(parameter)h(is)f(referenced,)i(it)f(expands)e(to)i(the)f(n)m(um)m(b)s
(er)f(of)h(seconds)630 3221 y(since)f(the)g(Unix)f(Ep)s(o)s(c)m(h)g(as)
h(a)g(\015oating)h(p)s(oin)m(t)f(v)-5 b(alue)36 b(with)f(micro-second)i
(gran)m(ularit)m(y)630 3331 y(\(see)42 b(the)g(do)s(cumen)m(tation)g
(for)f(the)g(C)g(library)g(function)g Fr(time)47 b Fu(for)41
b(the)h(de\014nition)f(of)630 3440 y(Ep)s(o)s(c)m(h\).)82
b(Assignmen)m(ts)44 b(to)h Ft(EPOCHREALTIME)c Fu(are)j(ignored.)83
b(If)43 b Ft(EPOCHREALTIME)e Fu(is)630 3550 y(unset,)30
b(it)h(loses)g(its)g(sp)s(ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h
(is)g(subsequen)m(tly)f(reset.)150 3708 y Ft(EPOCHSECONDS)630
3818 y Fu(Eac)m(h)38 b(time)f(this)g(parameter)h(is)f(referenced,)i(it)
f(expands)e(to)i(the)f(n)m(um)m(b)s(er)f(of)h(seconds)630
3927 y(since)e(the)g(Unix)f(Ep)s(o)s(c)m(h)g(\(see)i(the)f(do)s(cumen)m
(tation)g(for)g(the)f(C)h(library)f(function)g Fr(time)630
4037 y Fu(for)41 b(the)g(de\014nition)g(of)h(Ep)s(o)s(c)m(h\).)73
b(Assignmen)m(ts)41 b(to)h Ft(EPOCHSECONDS)c Fu(are)k(ignored.)73
b(If)630 4147 y Ft(EPOCHSECONDS)27 b Fu(is)j(unset,)g(it)g(loses)h(its)
g(sp)s(ecial)f(prop)s(erties,)g(ev)m(en)h(if)f(it)g(is)g(subsequen)m
(tly)630 4256 y(reset.)150 4415 y Ft(EUID)288 b Fu(The)30
b(n)m(umeric)g(e\013ectiv)m(e)j(user)d(id)g(of)g(the)h(curren)m(t)f
(user.)40 b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8
b(.)150 4573 y Ft(EXECIGNORE)630 4682 y Fu(A)29 b(colon-separated)h
(list)f(of)g(shell)g(patterns)f(\(see)i(Section)f(3.5.8.1)i([P)m
(attern)f(Matc)m(hing],)630 4792 y(page)j(33\))g(de\014ning)e(the)h
(list)g(of)g(\014lenames)g(to)g(b)s(e)g(ignored)g(b)m(y)f(command)h
(searc)m(h)g(using)630 4902 y Ft(PATH)p Fu(.)k(Files)22
b(whose)f(full)g(pathnames)g(matc)m(h)h(one)f(of)g(these)h(patterns)e
(are)i(not)f(considered)630 5011 y(executable)j(\014les)e(for)g(the)h
(purp)s(oses)d(of)j(completion)h(and)d(command)i(execution)g(via)g
Ft(PATH)630 5121 y Fu(lo)s(okup.)56 b(This)35 b(do)s(es)g(not)h
(a\013ect)i(the)d(b)s(eha)m(vior)h(of)g(the)g Ft([)p
Fu(,)h Ft(test)p Fu(,)f(and)f Ft([[)g Fu(commands.)630
5230 y(F)-8 b(ull)42 b(pathnames)e(in)h(the)g(command)g(hash)f(table)i
(are)g(not)f(sub)5 b(ject)41 b(to)g Ft(EXECIGNORE)p Fu(.)630
5340 y(Use)30 b(this)f(v)-5 b(ariable)30 b(to)g(ignore)g(shared)f
(library)g(\014les)g(that)h(ha)m(v)m(e)h(the)f(executable)h(bit)e(set,)
p eop end
(er)f(of)h(seconds)630 4037 y(since)e(the)g(Unix)f(Ep)s(o)s(c)m(h)g
(\(see)i(the)f(do)s(cumen)m(tation)g(for)g(the)f(C)h(library)f
(function)g Fr(time)630 4147 y Fu(for)41 b(the)g(de\014nition)g(of)h
(Ep)s(o)s(c)m(h\).)73 b(Assignmen)m(ts)41 b(to)h Ft(EPOCHSECONDS)c
Fu(are)k(ignored.)73 b(If)630 4256 y Ft(EPOCHSECONDS)27
b Fu(is)j(unset,)g(it)g(loses)h(its)g(sp)s(ecial)f(prop)s(erties,)g(ev)
m(en)h(if)f(it)g(is)g(subsequen)m(tly)630 4366 y(reset.)150
4524 y Ft(EUID)288 b Fu(The)30 b(n)m(umeric)g(e\013ectiv)m(e)j(user)d
(id)g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5
b(ariable)31 b(is)f(readonly)-8 b(.)150 4682 y Ft(EXECIGNORE)630
4792 y Fu(A)29 b(colon-separated)h(list)f(of)g(shell)g(patterns)f
(\(see)i(Section)f(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)630
4902 y(page)j(33\))g(de\014ning)e(the)h(list)g(of)g(\014lenames)g(to)g
(b)s(e)g(ignored)g(b)m(y)f(command)h(searc)m(h)g(using)630
5011 y Ft(PATH)p Fu(.)k(Files)22 b(whose)f(full)g(pathnames)g(matc)m(h)
h(one)f(of)g(these)h(patterns)e(are)i(not)f(considered)630
5121 y(executable)j(\014les)e(for)g(the)h(purp)s(oses)d(of)j
(completion)h(and)d(command)i(execution)g(via)g Ft(PATH)630
5230 y Fu(lo)s(okup.)56 b(This)35 b(do)s(es)g(not)h(a\013ect)i(the)d(b)
s(eha)m(vior)h(of)g(the)g Ft([)p Fu(,)h Ft(test)p Fu(,)f(and)f
Ft([[)g Fu(commands.)630 5340 y(F)-8 b(ull)42 b(pathnames)e(in)h(the)g
(command)g(hash)f(table)i(are)g(not)f(sub)5 b(ject)41
b(to)g Ft(EXECIGNORE)p Fu(.)p eop end
%%Page: 79 85
TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41
b(Shell)30 b(V)-8 b(ariables)2459 b(79)630 299 y(but)36
b(are)h(not)g(executable)i(\014les.)60 b(The)36 b(pattern)h(matc)m
(hing)h(honors)e(the)h(setting)h(of)f(the)630 408 y Ft(extglob)28
b Fu(shell)j(option.)150 583 y Ft(FCEDIT)192 b Fu(The)30
b(editor)h(used)e(as)i(a)g(default)f(b)m(y)h(the)f Ft(-e)g
Fu(option)h(to)g(the)f Ft(fc)g Fu(builtin)g(command.)150
757 y Ft(FIGNORE)144 b Fu(A)35 b(colon-separated)i(list)f(of)g
b(Shell)30 b(V)-8 b(ariables)2459 b(79)630 299 y(Use)30
b(this)f(v)-5 b(ariable)30 b(to)g(ignore)g(shared)f(library)g(\014les)g
(that)h(ha)m(v)m(e)h(the)f(executable)h(bit)e(set,)630
408 y(but)36 b(are)h(not)g(executable)i(\014les.)60 b(The)36
b(pattern)h(matc)m(hing)h(honors)e(the)h(setting)h(of)f(the)630
518 y Ft(extglob)28 b Fu(shell)j(option.)150 679 y Ft(FCEDIT)192
b Fu(The)30 b(editor)h(used)e(as)i(a)g(default)f(b)m(y)h(the)f
Ft(-e)g Fu(option)h(to)g(the)f Ft(fc)g Fu(builtin)g(command.)150
840 y Ft(FIGNORE)144 b Fu(A)35 b(colon-separated)i(list)f(of)g
(su\016xes)e(to)i(ignore)g(when)e(p)s(erforming)g(\014lename)i(comple-)
630 866 y(tion.)k(A)27 b(\014lename)g(whose)f(su\016x)g(matc)m(hes)i
630 950 y(tion.)k(A)27 b(\014lename)g(whose)f(su\016x)g(matc)m(hes)i
(one)f(of)g(the)g(en)m(tries)g(in)g Ft(FIGNORE)d Fu(is)j(excluded)630
976 y(from)j(the)g(list)h(of)g(matc)m(hed)g(\014lenames.)41
1060 y(from)j(the)g(list)h(of)g(matc)m(hed)g(\014lenames.)41
b(A)30 b(sample)h(v)-5 b(alue)31 b(is)f(`)p Ft(.o:~)p
Fu(')150 1150 y Ft(FUNCNAME)96 b Fu(An)35 b(arra)m(y)i(v)-5
Fu(')150 1221 y Ft(FUNCNAME)96 b Fu(An)35 b(arra)m(y)i(v)-5
b(ariable)36 b(con)m(taining)h(the)f(names)g(of)g(all)g(shell)g
(functions)g(curren)m(tly)f(in)h(the)630 1259 y(execution)g(call)h
(functions)g(curren)m(tly)f(in)h(the)630 1330 y(execution)g(call)h
(stac)m(k.)57 b(The)34 b(elemen)m(t)j(with)e(index)g(0)h(is)f(the)g
(name)h(of)f(an)m(y)h(curren)m(tly-)630 1369 y(executing)f(shell)f
(name)h(of)f(an)m(y)h(curren)m(tly-)630 1440 y(executing)f(shell)f
(function.)51 b(The)34 b(b)s(ottom-most)h(elemen)m(t)g(\(the)g(one)f
(with)g(the)g(highest)630 1479 y(index\))e(is)h Ft("main")p
(with)g(the)g(highest)630 1549 y(index\))e(is)h Ft("main")p
Fu(.)44 b(This)32 b(v)-5 b(ariable)33 b(exists)g(only)g(when)e(a)i
(shell)f(function)g(is)g(executing.)630 1588 y(Assignmen)m(ts)23
(shell)f(function)g(is)g(executing.)630 1659 y(Assignmen)m(ts)23
b(to)f Ft(FUNCNAME)e Fu(ha)m(v)m(e)k(no)e(e\013ect.)39
b(If)22 b Ft(FUNCNAME)e Fu(is)i(unset,)h(it)g(loses)g(its)f(sp)s(ecial)
630 1698 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g(subsequen)m
(tly)f(reset.)630 1840 y(This)h(v)-5 b(ariable)32 b(can)f(b)s(e)g(used)
630 1769 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g(subsequen)m
(tly)f(reset.)630 1904 y(This)h(v)-5 b(ariable)32 b(can)f(b)s(e)g(used)
g(with)g Ft(BASH_LINENO)d Fu(and)j Ft(BASH_SOURCE)p Fu(.)40
b(Eac)m(h)32 b(elemen)m(t)630 1949 y(of)g Ft(FUNCNAME)d
b(Eac)m(h)32 b(elemen)m(t)630 2014 y(of)g Ft(FUNCNAME)d
Fu(has)j(corresp)s(onding)e(elemen)m(ts)j(in)f Ft(BASH_LINENO)c
Fu(and)k Ft(BASH_SOURCE)c Fu(to)630 2059 y(describ)s(e)39
Fu(and)k Ft(BASH_SOURCE)c Fu(to)630 2123 y(describ)s(e)39
b(the)h(call)h(stac)m(k.)70 b(F)-8 b(or)41 b(instance,)i
Ft(${FUNCNAME[$i]})35 b Fu(w)m(as)41 b(called)f(from)g(the)630
2168 y(\014le)27 b Ft(${BASH_SOURCE[$i+1]})21 b Fu(at)27
2233 y(\014le)27 b Ft(${BASH_SOURCE[$i+1]})21 b Fu(at)27
b(line)h(n)m(um)m(b)s(er)d Ft(${BASH_LINENO[$i]})p Fu(.)34
b(The)27 b Ft(caller)630 2278 y Fu(builtin)j(displa)m(ys)g(the)h
b(The)27 b Ft(caller)630 2342 y Fu(builtin)j(displa)m(ys)g(the)h
(curren)m(t)f(call)i(stac)m(k)g(using)d(this)i(information.)150
2452 y Ft(FUNCNEST)96 b Fu(If)34 b(set)i(to)f(a)h(n)m(umeric)e(v)-5
2504 y Ft(FUNCNEST)96 b Fu(If)34 b(set)i(to)f(a)h(n)m(umeric)e(v)-5
b(alue)36 b(greater)g(than)e(0,)j(de\014nes)d(a)h(maxim)m(um)g
(function)g(nesting)630 2562 y(lev)m(el.)42 b(F)-8 b(unction)29
(function)g(nesting)630 2613 y(lev)m(el.)42 b(F)-8 b(unction)29
b(in)m(v)m(o)s(cations)h(that)f(exceed)h(this)e(nesting)h(lev)m(el)h
(will)f(cause)g(the)f(curren)m(t)630 2671 y(command)i(to)h(ab)s(ort.)
150 2845 y Ft(GLOBIGNORE)630 2955 y Fu(A)k(colon-separated)i(list)f(of)
(will)f(cause)g(the)f(curren)m(t)630 2723 y(command)i(to)h(ab)s(ort.)
150 2884 y Ft(GLOBIGNORE)630 2993 y Fu(A)k(colon-separated)i(list)f(of)
f(patterns)g(de\014ning)f(the)i(set)f(of)g(\014le)h(names)f(to)g(b)s(e)
g(ignored)630 3064 y(b)m(y)28 b(\014lename)h(expansion.)40
g(ignored)630 3103 y(b)m(y)28 b(\014lename)h(expansion.)40
b(If)28 b(a)h(\014le)g(name)g(matc)m(hed)g(b)m(y)g(a)g(\014lename)f
(expansion)h(pattern)630 3174 y(also)k(matc)m(hes)g(one)f(of)g(the)g
(expansion)h(pattern)630 3213 y(also)k(matc)m(hes)g(one)f(of)g(the)g
(patterns)g(in)f Ft(GLOBIGNORE)p Fu(,)f(it)i(is)g(remo)m(v)m(ed)h(from)
e(the)h(list)h(of)630 3284 y(matc)m(hes.)41 b(The)27
e(the)h(list)h(of)630 3322 y(matc)m(hes.)41 b(The)27
b(pattern)g(matc)m(hing)h(honors)f(the)g(setting)i(of)e(the)h
Ft(extglob)d Fu(shell)i(option.)150 3458 y Ft(GROUPS)192
Ft(extglob)d Fu(shell)i(option.)150 3483 y Ft(GROUPS)192
b Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(con)m(taining)g(the)f(list)
h(of)f(groups)g(of)g(whic)m(h)f(the)i(curren)m(t)e(user)h(is)g(a)630
3567 y(mem)m(b)s(er.)41 b(Assignmen)m(ts)30 b(to)i Ft(GROUPS)d
3593 y(mem)m(b)s(er.)41 b(Assignmen)m(ts)30 b(to)i Ft(GROUPS)d
Fu(ha)m(v)m(e)i(no)g(e\013ect.)42 b(If)30 b Ft(GROUPS)f
Fu(is)i(unset,)f(it)h(loses)h(its)630 3677 y(sp)s(ecial)f(prop)s
Fu(is)i(unset,)f(it)h(loses)h(its)630 3703 y(sp)s(ecial)f(prop)s
(erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)150
3851 y Ft(histchars)630 3960 y Fu(Up)c(to)g(three)g(c)m(haracters)i
3864 y Ft(histchars)630 3973 y Fu(Up)c(to)g(three)g(c)m(haracters)i
(whic)m(h)d(con)m(trol)j(history)d(expansion,)i(quic)m(k)g
(substitution,)g(and)630 4070 y(tok)m(enization)k(\(see)f(Section)f
(substitution,)g(and)630 4083 y(tok)m(enization)k(\(see)f(Section)f
(9.3)h([History)f(In)m(teraction],)i(page)f(148\).)41
b(The)29 b(\014rst)e(c)m(harac-)630 4180 y(ter)j(is)f(the)g
b(The)29 b(\014rst)e(c)m(harac-)630 4193 y(ter)j(is)f(the)g
Fr(history)g(expansion)g Fu(c)m(haracter,)j(that)e(is,)f(the)h(c)m
(haracter)h(whic)m(h)d(signi\014es)i(the)630 4289 y(start)25
(haracter)h(whic)m(h)d(signi\014es)i(the)630 4302 y(start)25
b(of)f(a)h(history)f(expansion,)i(normally)e(`)p Ft(!)p
Fu('.)39 b(The)24 b(second)g(c)m(haracter)i(is)e(the)g(c)m(haracter)630
4399 y(whic)m(h)36 b(signi\014es)g(`quic)m(k)h(substitution')f(when)f
4412 y(whic)m(h)36 b(signi\014es)g(`quic)m(k)h(substitution')f(when)f
(seen)h(as)g(the)g(\014rst)f(c)m(haracter)j(on)e(a)g(line,)630
4508 y(normally)27 b(`)p Ft(^)p Fu('.)39 b(The)26 b(optional)i(third)d
4521 y(normally)27 b(`)p Ft(^)p Fu('.)39 b(The)26 b(optional)i(third)d
(c)m(haracter)j(is)e(the)h(c)m(haracter)h(whic)m(h)e(indicates)h(that)
630 4618 y(the)34 b(remainder)f(of)h(the)g(line)g(is)f(a)h(commen)m(t)h
630 4631 y(the)34 b(remainder)f(of)h(the)g(line)g(is)f(a)h(commen)m(t)h
(when)e(found)f(as)i(the)g(\014rst)f(c)m(haracter)i(of)f(a)630
4728 y(w)m(ord,)i(usually)f(`)p Ft(#)p Fu('.)55 b(The)34
4740 y(w)m(ord,)i(usually)f(`)p Ft(#)p Fu('.)55 b(The)34
b(history)h(commen)m(t)h(c)m(haracter)h(causes)e(history)g
(substitution)630 4837 y(to)27 b(b)s(e)f(skipp)s(ed)f(for)i(the)f
(substitution)630 4850 y(to)27 b(b)s(e)f(skipp)s(ed)f(for)i(the)f
(remaining)h(w)m(ords)f(on)h(the)f(line.)40 b(It)27 b(do)s(es)f(not)h
(necessarily)g(cause)630 4947 y(the)k(shell)f(parser)g(to)h(treat)g
(necessarily)g(cause)630 4960 y(the)k(shell)f(parser)g(to)h(treat)g
(the)g(rest)g(of)f(the)h(line)f(as)h(a)g(commen)m(t.)150
5121 y Ft(HISTCMD)144 b Fu(The)44 b(history)h(n)m(um)m(b)s(er,)j(or)d
(index)g(in)f(the)h(history)g(list,)50 b(of)45 b(the)g(curren)m(t)g
+3 -1
View File
@@ -5959,7 +5959,9 @@ starts with value @samp{t}, it assumes that the shell is running in an
Emacs shell buffer and disables line editing.
@item ENV
Similar to @code{BASH_ENV}; used when the shell is invoked in
Expanded and executed similarlty to @code{BASH_ENV}
(@pxref{Bash Startup Files})
when an interactive shell is invoked in
@sc{posix} Mode (@pxref{Bash POSIX Mode}).
@item EPOCHREALTIME
+1 -1
View File
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.22.4
%%CreationDate: Mon Sep 7 09:52:16 2020
%%CreationDate: Thu Oct 1 14:49:24 2020
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%+ font Times-Italic
+1 -1
View File
@@ -1,6 +1,6 @@
%!PS-Adobe-3.0
%%Creator: groff version 1.22.4
%%CreationDate: Mon Sep 7 09:52:16 2020
%%CreationDate: Thu Oct 1 14:49:24 2020
%%DocumentNeededResources: font Times-Roman
%%+ font Times-Bold
%%DocumentSuppliedResources: procset grops 1.22 4
+3 -3
View File
@@ -2,10 +2,10 @@
Copyright (C) 1988-2020 Free Software Foundation, Inc.
@end ignore
@set LASTCHANGE Tue Aug 25 09:58:38 EDT 2020
@set LASTCHANGE Wed Sep 23 09:28:04 EDT 2020
@set EDITION 5.1
@set VERSION 5.1
@set UPDATED 25 August 2020
@set UPDATED-MONTH August 2020
@set UPDATED 23 September 2020
@set UPDATED-MONTH September 2020
+5 -1
View File
@@ -104,7 +104,7 @@ ALLPROG = print truefalse sleep finfo logname basename dirname fdflags \
tty pathchk tee head mkdir rmdir mkfifo mktemp printenv id whoami \
uname sync push ln unlink realpath strftime mypid setpgid seq rm \
accept csv cut
OTHERPROG = necho hello cat pushd stat
OTHERPROG = necho hello cat pushd stat asort
all: $(SHOBJ_STATUS)
@@ -233,6 +233,9 @@ setpgid: setpgid.o
stat: stat.o
$(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ stat.o $(SHOBJ_LIBS)
asort: asort.o
$(SHOBJ_LD) $(SHOBJ_LDFLAGS) $(SHOBJ_XLDFLAGS) -o $@ asort.o $(SHOBJ_LIBS)
# pushd is a special case. We use the same source that the builtin version
# uses, with special compilation options.
#
@@ -318,3 +321,4 @@ setpgid.o: setpgid.c
stat.o: stat.c
fdflags.o: fdflags.c
seq.o: seq.c
asort.o: asort.c
+279
View File
@@ -0,0 +1,279 @@
/*
Copyright (C) 2020 Free Software Foundation, Inc.
Bash is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Bash is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Bash. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdlib.h>
#include <string.h>
#include <inttypes.h>
#include "bashtypes.h"
#include "shell.h"
#include "builtins.h"
#include "common.h"
#include "xmalloc.h"
#include "bashgetopt.h"
typedef struct sort_element {
ARRAY_ELEMENT *v; // used when sorting array in-place
char *key; // used when sorting assoc array
char *value; // points to value of array element or assoc entry
double num; // used for numeric sort
} sort_element;
static int reverse_flag;
static int numeric_flag;
static int
compare(const void *p1, const void *p2) {
const sort_element e1 = *(sort_element *) p1;
const sort_element e2 = *(sort_element *) p2;
if (numeric_flag) {
if (reverse_flag)
return (e2.num > e1.num) ? 1 : (e2.num < e1.num) ? -1 : 0;
else
return (e1.num > e2.num) ? 1 : (e1.num < e2.num) ? -1 : 0;
}
else {
if (reverse_flag)
return strcoll(e2.value, e1.value);
else
return strcoll(e1.value, e2.value);
}
}
static int
sort_index(SHELL_VAR *dest, SHELL_VAR *source) {
HASH_TABLE *hash;
BUCKET_CONTENTS *bucket;
sort_element *sa;
ARRAY *array, *dest_array;
ARRAY_ELEMENT *ae;
size_t i, j, n;
char ibuf[INT_STRLEN_BOUND (intmax_t) + 1]; // used by fmtulong
char *key;
dest_array = array_cell(dest);
if (assoc_p(source)) {
hash = assoc_cell(source);
n = hash->nentries;
sa = xmalloc(n * sizeof(sort_element));
i = 0;
for ( j = 0; j < hash->nbuckets; ++j ) {
bucket = hash->bucket_array[j];
while ( bucket ) {
sa[i].v = NULL;
sa[i].key = bucket->key;
if ( numeric_flag )
sa[i].num = strtod(bucket->data, NULL);
else
sa[i].value = bucket->data;
i++;
bucket = bucket->next;
}
}
}
else {
array = array_cell(source);
n = array_num_elements(array);
sa = xmalloc(n * sizeof(sort_element));
i = 0;
for (ae = element_forw(array->head); ae != array->head; ae = element_forw(ae)) {
sa[i].v = ae;
if (numeric_flag)
sa[i].num = strtod(element_value(ae), NULL);
else
sa[i].value = element_value(ae);
i++;
}
}
// sanity check
if ( i != n ) {
builtin_error("%s: corrupt array", source->name);
return EXECUTION_FAILURE;
}
qsort(sa, n, sizeof(sort_element), compare);
array_flush(dest_array);
for ( i = 0; i < n; ++i ) {
if ( assoc_p(source) )
key = sa[i].key;
else
key = fmtulong((long unsigned)sa[i].v->ind, 10, ibuf, sizeof(ibuf), 0);
array_insert(dest_array, i, key);
}
return EXECUTION_SUCCESS;
}
static int
sort_inplace(SHELL_VAR *var) {
size_t i, n;
ARRAY *a;
ARRAY_ELEMENT *ae;
sort_element *sa = 0;
a = array_cell(var);
n = array_num_elements(a);
if ( n == 0 )
return EXECUTION_SUCCESS;
sa = xmalloc(n * sizeof(sort_element));
i = 0;
for (ae = element_forw(a->head); ae != a->head; ae = element_forw(ae)) {
sa[i].v = ae;
if (numeric_flag)
sa[i].num = strtod(element_value(ae), NULL);
else
sa[i].value = element_value(ae);
i++;
}
// sanity check
if ( i != n ) {
builtin_error("%s: corrupt array", var->name);
return EXECUTION_FAILURE;
}
qsort(sa, n, sizeof(sort_element), compare);
// for in-place sort, simply "rewire" the array elements
sa[0].v->prev = sa[n-1].v->next = a->head;
a->head->next = sa[0].v;
a->head->prev = sa[n-1].v;
a->max_index = n - 1;
for (i = 0; i < n; i++) {
sa[i].v->ind = i;
if (i > 0)
sa[i].v->prev = sa[i-1].v;
if (i < n - 1)
sa[i].v->next = sa[i+1].v;
}
xfree(sa);
return EXECUTION_SUCCESS;
}
int
asort_builtin(WORD_LIST *list) {
SHELL_VAR *var, *var2;
char *word;
int opt, ret;
int index_flag = 0;
numeric_flag = 0;
reverse_flag = 0;
reset_internal_getopt();
while ((opt = internal_getopt(list, "inr")) != -1) {
switch (opt) {
case 'i': index_flag = 1; break;
case 'n': numeric_flag = 1; break;
case 'r': reverse_flag = 1; break;
CASE_HELPOPT;
default:
builtin_usage();
return (EX_USAGE);
}
}
list = loptend;
if (list == 0) {
builtin_usage();
return EX_USAGE;
}
if (legal_identifier (list->word->word) == 0) {
sh_invalidid (list->word->word);
return EXECUTION_FAILURE;
}
if ( index_flag ) {
if ( list->next == 0 || list->next->next ) {
builtin_usage();
return EX_USAGE;
}
if (legal_identifier (list->next->word->word) == 0) {
sh_invalidid (list->next->word->word);
return EXECUTION_FAILURE;
}
var = find_or_make_array_variable(list->word->word, 1);
if (var == 0)
return EXECUTION_FAILURE;
var2 = find_variable(list->next->word->word);
if ( !var2 || ( !array_p(var2) && !assoc_p(var2) ) ) {
builtin_error("%s: Not an array", list->next->word->word);
return EXECUTION_FAILURE;
}
return sort_index(var, var2);
}
while (list) {
word = list->word->word;
var = find_variable(word);
list = list->next;
if (var == 0 || array_p(var) == 0) {
builtin_error("%s: Not an array", word);
continue;
}
if (readonly_p(var) || noassign_p(var)) {
if (readonly_p(var))
err_readonly(word);
continue;
}
if ( (ret = sort_inplace(var)) != EXECUTION_SUCCESS )
return ret;
}
return EXECUTION_SUCCESS;
}
char *asort_doc[] = {
"Sort arrays in-place.",
"",
"Options:",
" -n compare according to string numerical value",
" -r reverse the result of comparisons",
" -i sort using indices/keys",
"",
"If -i is supplied, SOURCE is not sorted in-place, but the indices (or keys",
"if associative) of SOURCE, after sorting it by its values, are placed as",
"values in the indexed array DEST",
"",
"Associative arrays may not be sorted in-place.",
"",
"Exit status:",
"Return value is zero unless an error happened (like invalid variable name",
"or readonly array).",
(char *)NULL
};
struct builtin asort_struct = {
"asort",
asort_builtin,
BUILTIN_ENABLED,
asort_doc,
"asort [-nr] array ... or asort [-nr] -i dest source",
0
};
+4 -3
View File
@@ -4636,7 +4636,7 @@ run_builtin:
if (result == EX_USAGE)
result = EX_BADUSAGE;
else if (result > EX_SHERRBASE)
result = EXECUTION_FAILURE;
result = builtin_status (result);
}
set_pipestatus_from_exit (result);
@@ -4694,16 +4694,17 @@ builtin_status (result)
switch (result)
{
case EX_USAGE:
case EX_BADSYNTAX:
r = EX_BADUSAGE;
break;
case EX_REDIRFAIL:
case EX_BADSYNTAX:
case EX_BADASSIGN:
case EX_EXPFAIL:
r = EXECUTION_FAILURE;
break;
default:
r = EXECUTION_SUCCESS;
/* other special exit statuses not yet defined */
r = (result > EX_SHERRBASE) ? EXECUTION_FAILURE : EXECUTION_SUCCESS;
break;
}
return (r);
+3
View File
@@ -3271,6 +3271,9 @@ _rl_update_final (void)
{
int full_lines, woff, botline_length;
if (line_structures_initialized == 0)
return;
full_lines = 0;
/* If the cursor is the only thing on an otherwise-blank last line,
compensate so we don't print an extra CRLF. */
+3 -3
View File
@@ -6316,7 +6316,7 @@ report_syntax_error (message)
parser_error (line_number, "%s", message);
if (interactive && EOF_Reached)
EOF_Reached = 0;
last_command_exit_value = parse_and_execute_level ? EX_BADSYNTAX : EX_BADUSAGE;
last_command_exit_value = (executing_builtin && parse_and_execute_level) ? EX_BADSYNTAX : EX_BADUSAGE;
set_pipestatus_from_exit (last_command_exit_value);
return;
}
@@ -6338,7 +6338,7 @@ report_syntax_error (message)
if (interactive == 0)
print_offending_line ();
last_command_exit_value = parse_and_execute_level ? EX_BADSYNTAX : EX_BADUSAGE;
last_command_exit_value = (executing_builtin && parse_and_execute_level) ? EX_BADSYNTAX : EX_BADUSAGE;
set_pipestatus_from_exit (last_command_exit_value);
return;
}
@@ -6370,7 +6370,7 @@ report_syntax_error (message)
EOF_Reached = 0;
}
last_command_exit_value = parse_and_execute_level ? EX_BADSYNTAX : EX_BADUSAGE;
last_command_exit_value = (executing_builtin && parse_and_execute_level) ? EX_BADSYNTAX : EX_BADUSAGE;
set_pipestatus_from_exit (last_command_exit_value);
}
+10 -2
View File
@@ -5939,6 +5939,9 @@ process_substitute (string, open_for_read_in_child)
pid = make_child ((char *)NULL, FORK_ASYNC);
if (pid == 0)
{
int old_interactive;
old_interactive = interactive;
/* The currently-executing shell is not interactive */
interactive = 0;
@@ -5948,7 +5951,7 @@ process_substitute (string, open_for_read_in_child)
restore_original_signals (); /* XXX - what about special builtins? bash-4.2 */
QUIT; /* catch any interrupts we got post-fork */
setup_async_signals ();
if (open_for_read_in_child == 0)
if (open_for_read_in_child == 0 && old_interactive && (bash_input.type == st_stdin || bash_input.type == st_stream))
async_redirect_stdin ();
subshell_environment |= SUBSHELL_COMSUB|SUBSHELL_PROCSUB|SUBSHELL_ASYNC;
@@ -10383,7 +10386,12 @@ add_string:
c = string[++sindex];
if (quoted & Q_HERE_DOCUMENT)
/* "However, the double-quote character ( '"' ) shall not be treated
specially within a here-document, except when the double-quote
appears within "$()", "``", or "${}"." */
if ((quoted & Q_HERE_DOCUMENT) && (quoted & Q_DOLBRACE) && c == '"')
tflag = CBSDQUOTE; /* special case */
else if (quoted & Q_HERE_DOCUMENT)
tflag = CBSHDOC;
else if (quoted & Q_DOUBLE_QUOTES)
tflag = CBSDQUOTE;
+46 -1
View File
@@ -1,6 +1,6 @@
/* signames.c -- Create an array of signal names. */
/* Copyright (C) 2006 Free Software Foundation, Inc.
/* Copyright (C) 2006-2020 Free Software Foundation, Inc.
This file is part of GNU Bash, the Bourne Again SHell.
@@ -159,10 +159,18 @@ initialize_signames ()
signal_names[SIGPRE] = "SIGPRE";
#endif
#if defined (SIGPHONE) /* Phone interrupt */
signal_names[SIGPHONE] = "SIGPHONE";
#endif
#if defined (SIGVIRT) /* AIX virtual time alarm */
signal_names[SIGVIRT] = "SIGVIRT";
#endif
#if defined (SIGTINT) /* Interrupt */
signal_names[SIGTINT] = "SIGTINT";
#endif
#if defined (SIGALRM1) /* m:n condition variables */
signal_names[SIGALRM1] = "SIGALRM1";
#endif
@@ -191,6 +199,18 @@ initialize_signames ()
signal_names[SIGSAK] = "SIGSAK";
#endif
#if defined (SIGCPUFAIL) /* Predictive processor deconfiguration */
signal_names[SIGCPUFAIL] = "SIGCPUFAIL";
#endif
#if defined (SIGAIO) /* Asynchronous I/O */
signal_names[SIGAIO] = "SIGAIO";
#endif
#if defined (SIGLAB) /* Security label changed */
signal_names[SIGLAB] = "SIGLAB";
#endif
/* SunOS5 */
#if defined (SIGLWP) /* Solaris: special signal used by thread library */
signal_names[SIGLWP] = "SIGLWP";
@@ -220,6 +240,31 @@ initialize_signames ()
signal_names[SIGJVM2] = "SIGJVM2";
#endif
#if defined (SIGDGTIMER1)
signal_names[SIGDGTIMER1] = "SIGDGTIMER1";
#endif
#if defined (SIGDGTIMER2)
signal_names[SIGDGTIMER2] = "SIGDGTIMER2";
#endif
#if defined (SIGDGTIMER3)
signal_names[SIGDGTIMER3] = "SIGDGTIMER3";
#endif
#if defined (SIGDGTIMER4)
signal_names[SIGDGTIMER4] = "SIGDGTIMER4";
#endif
#if defined (SIGDGNOTIFY)
signal_names[SIGDGNOTIFY] = "SIGDGNOTIFY";
#endif
/* Apollo */
#if defined (SIGAPOLLO)
signal_names[SIGAPOLLO] = "SIGAPOLLO";
#endif
/* HP-UX */
#if defined (SIGDIL) /* DIL signal (?) */
signal_names[SIGDIL] = "SIGDIL";
+1 -1
View File
@@ -24,7 +24,7 @@
/* Defines for use by mksyntax.c */
#define slashify_in_quotes "\\`$\"\n"
#define slashify_in_here_document "\\`$\""
#define slashify_in_here_document "\\`$"
#define shell_meta_chars "()<>;&|"
#define shell_break_chars "()<>;&| \t\n"
+10 -1
View File
@@ -1592,8 +1592,17 @@ get_histcmd (var)
SHELL_VAR *var;
{
char *p;
int n;
p = itos (history_number ());
/* Do the same adjustment here we do in parse.y:prompt_history_number,
assuming that we are in one of two states: decoding this as part of
the prompt string, in which case we do not want to assume that the
command has been saved to the history and the history number incremented,
or the expansion is part of the current command being executed and has
already been saved to history and the history number incremented.
Right now we use EXECUTING as the determinant. */
n = history_number () - executing;
p = itos (n);
FREE (value_cell (var));
var_setvalue (var, p);
return (var);
+3 -3
View File
@@ -8610,7 +8610,7 @@ report_syntax_error (message)
parser_error (line_number, "%s", message);
if (interactive && EOF_Reached)
EOF_Reached = 0;
last_command_exit_value = parse_and_execute_level ? EX_BADSYNTAX : EX_BADUSAGE;
last_command_exit_value = (executing_builtin && parse_and_execute_level) ? EX_BADSYNTAX : EX_BADUSAGE;
set_pipestatus_from_exit (last_command_exit_value);
return;
}
@@ -8632,7 +8632,7 @@ report_syntax_error (message)
if (interactive == 0)
print_offending_line ();
last_command_exit_value = parse_and_execute_level ? EX_BADSYNTAX : EX_BADUSAGE;
last_command_exit_value = (executing_builtin && parse_and_execute_level) ? EX_BADSYNTAX : EX_BADUSAGE;
set_pipestatus_from_exit (last_command_exit_value);
return;
}
@@ -8664,7 +8664,7 @@ report_syntax_error (message)
EOF_Reached = 0;
}
last_command_exit_value = parse_and_execute_level ? EX_BADSYNTAX : EX_BADUSAGE;
last_command_exit_value = (executing_builtin && parse_and_execute_level) ? EX_BADSYNTAX : EX_BADUSAGE;
set_pipestatus_from_exit (last_command_exit_value);
}