change redisplay to handle some cases where the line consumes more than the number of physical screen lines; add regerror() error messages if regular expression compilation fails; make sure active region readline variables are displayed with bind -v; partial fix for bind -x and commands containing quoting characters

This commit is contained in:
Chet Ramey
2023-07-19 15:33:45 -04:00
parent 7f7ee0e9c6
commit ad39c5c3d7
23 changed files with 2269 additions and 1996 deletions
+58
View File
@@ -7143,3 +7143,61 @@ lib/sh/unicode.c
nl_langinfo (CODESET) if HAVE_LANGINFO_CODESET is define, since
we no longer check for nl_langinfo. This is what locale.c does.
7/15
----
lib/readline/display.c
- rl_redisplay: rudimentary code to handle some cases where the line
buffer consumes more than the physical number of screen lines. It's
not a screen editor, but it handles some of the common cases.
From https://bugs.launchpad.net/ubuntu/+source/bash/+bug/2024628
7/17
----
builtins/printf.def
- getwidestr: make sure to force mbsrtowcs to convert the closing NULL
so the wide-character string is NULL-terminated.
From a report by Grisha Levit <grishalevit@gmail.com>
lib/sh/shmatch.c
- strregerror: new function to return regerror(3) error message text
in allocated memory
- sh_regmatch: add an additional argument to hold the error message
from regerror(3), in newly-allocated memory; generated by call to
strregerror() on regcomp(3) failure
From a patch by Grisha Levit <grishalevit@gmail.com>
externs.h
- sh_regmatch: update extern declaration
execute_cmd.c
- execute_cond_node: pass pointer to buffer to return any error
message; if sh_regmatch returns 2, use a non-NULL error buffer in
the error message.
lib/readline/bind.c
- _rl_get_string_variable_value: return the values for
active-region-start-color (_rl_active_region_start_color) and
active-region-end-color (_rl_active_region_end_color) if they
are set.
Fixes bind -v issue reported by Sebastian Carlos <sebaaa1754@gmail.com>
- _rl_get_string_variable_value: if the history is stifled, make
sure we report the history size as < 0 so the output of bind -v
can be reused as input.
Fixes bind -v issue reported by Sebastian Carlos <sebaaa1754@gmail.com>
7/19
----
lib/readline/bind.c
- _rl_macro_dumper_internal: if print_readably is < 0, don't
`untranslate' the macro value for an inputrc setting; leave it in
such a way that `bind' can use it. Print the value without the
enclosing double quotes.
From a report by Grisha Levit <grishalevit@gmail.com>
lib/readline/doc/rltech.texi
- rl_macro_dumper: document new semantics for print_readably
bashline.c
- print_unix_command_map: call rl_macro_dumper with an argument of -1
so we can use the output directly in another call to bind -x.
+1 -1
View File
@@ -4583,7 +4583,7 @@ print_unix_command_map (void)
save = rl_get_keymap ();
cmd_xmap = get_cmd_xmap_from_keymap (save);
rl_set_keymap (cmd_xmap);
rl_macro_dumper (1);
rl_macro_dumper (-1);
rl_set_keymap (save);
return 0;
}
+1 -1
View File
@@ -1493,7 +1493,7 @@ getwidestr (size_t *lenp)
mbs = garglist->word->word;
slen = strlen (mbs);
ws = (wchar_t *)xmalloc ((slen + 1) * sizeof (wchar_t));
mblength = mbsrtowcs (ws, &mbs, slen, &state);
mblength = mbsrtowcs (ws, &mbs, slen + 1, &state);
if (lenp)
*lenp = mblength;
+4
View File
@@ -141,6 +141,10 @@ Options:
- Assign any remaining arguments to the positional parameters.
The -x and -v options are turned off.
If -o is supplied with no option-name, set prints the current shell
option settings. If +o is supplied with no option-name, set prints a
series of set commands to recreate the current option settings.
Using + rather than - causes these flags to be turned off. The
flags can also be used upon invocation of the shell. The current
set of flags may be found in $-. The remaining n ARGs are positional
+1537 -1533
View File
File diff suppressed because it is too large Load Diff
+19 -10
View File
@@ -5,12 +5,12 @@
.\" Case Western Reserve University
.\" chet.ramey@case.edu
.\"
.\" Last Change: Fri Jul 7 15:07:53 EDT 2023
.\" Last Change: Wed Jul 19 14:23:20 EDT 2023
.\"
.\" bash_builtins, strip all but Built-Ins section
.if \n(zZ=1 .ig zZ
.if \n(zY=1 .ig zY
.TH BASH 1 "2023 July 7" "GNU Bash 5.3"
.TH BASH 1 "2023 July 19" "GNU Bash 5.3"
.\"
.\" There's some problem with having a `@'
.\" in a tagged paragraph with the BSD man macros.
@@ -6116,9 +6116,13 @@ If set to \fBnone\fP, readline never rings the bell. If set to
If set to \fBaudible\fP, readline attempts to ring the terminal's bell.
.TP
.B bind\-tty\-special\-chars (On)
If set to \fBOn\fP, readline attempts to bind the control characters
treated specially by the kernel's terminal driver to their readline
equivalents.
If set to \fBOn\fP (the default), readline attempts to bind the control
characters that are
treated specially by the kernel's terminal driver to their
readline equivalents.
These override the default readline bindings described here.
Type \f(CWstty -a\fP at a bash prompt to see your current terminal settings,
including the special control characters (usually \fBcchars\fP).
.TP
.B blink\-matching\-paren (Off)
If set to \fBOn\fP, readline attempts to briefly move the cursor to an
@@ -9954,6 +9958,10 @@ before execution resumes after the function or script.
.PD 0
.TP
\fBset\fP [\fB+abefhkmnptuvxBCEHPT\fP] [\fB+o\fP \fIoption\-name\fP] [\fB\-\-\fP] [\fB\-\fP] [\fIarg\fP ...]
.TP
\fBset \-o\fP
.TP
\fBset \+o\fP
.PD
Without options, display the name and value of each shell variable
in a format that can be reused as input
@@ -10201,14 +10209,15 @@ Same as
.PP
If
.B \-o
is supplied with no \fIoption\-name\fP, the values of the current options are
printed.
is supplied with no \fIoption\-name\fP,
\fBset\fP prints the current shell option settings.
If
.B +o
is supplied with no \fIoption\-name\fP, a series of
is supplied with no \fIoption\-name\fP,
\fBset\fP prints a series of
.B set
commands to recreate the current option settings is displayed on
the standard output.
commands to recreate the current option settings
on the standard output.
.RE
.TP 8
.B \-p
+210 -201
View File
@@ -1,9 +1,9 @@
This is bash.info, produced by makeinfo version 6.8 from bashref.texi.
This text is a brief description of the features that are present in the
Bash shell (version 5.3, 7 July 2023).
Bash shell (version 5.3, 19 July 2023).
This is Edition 5.3, last updated 7 July 2023, of 'The GNU Bash
This is Edition 5.3, last updated 19 July 2023, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.3.
Copyright (C) 1988-2023 Free Software Foundation, Inc.
@@ -26,10 +26,10 @@ Bash Features
*************
This text is a brief description of the features that are present in the
Bash shell (version 5.3, 7 July 2023). The Bash home page is
Bash shell (version 5.3, 19 July 2023). The Bash home page is
<http://www.gnu.org/software/bash/>.
This is Edition 5.3, last updated 7 July 2023, of 'The GNU Bash
This is Edition 5.3, last updated 19 July 2023, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.3.
Bash contains features that appear in other popular shells, and some
@@ -4537,6 +4537,8 @@ parameters, or to display the names and values of shell variables.
'set'
set [-abefhkmnptuvxBCEHPT] [-o OPTION-NAME] [--] [-] [ARGUMENT ...]
set [+abefhkmnptuvxBCEHPT] [+o OPTION-NAME] [--] [-] [ARGUMENT ...]
set -o
set +o
If no options or arguments are supplied, 'set' displays the names
and values of all shell variables and functions, sorted according
@@ -4612,7 +4614,12 @@ parameters, or to display the names and values of shell variables.
'-o OPTION-NAME'
Set the option corresponding to OPTION-NAME:
Set the option corresponding to OPTION-NAME. If '-o' is
supplied with no OPTION-NAME, 'set' prints the current shell
options settings. If '+o' is supplied with no OPTION-NAME,
'set' prints a series of 'set' commands to recreate the
current option settings on the standard output. Valid option
names are:
'allexport'
Same as '-a'.
@@ -8338,8 +8345,11 @@ Variable Settings
'bind-tty-special-chars'
If set to 'on' (the default), Readline attempts to bind the
control characters treated specially by the kernel's terminal
driver to their Readline equivalents.
control characters that are treated specially by the kernel's
terminal driver to their Readline equivalents. These override
the default Readline bindings described here. Type 'stty -a'
at a Bash prompt to see your current terminal settings,
including the special control characters (usually 'cchars').
'blink-matching-paren'
If set to 'on', Readline attempts to briefly move the cursor
@@ -9219,6 +9229,13 @@ File: bash.info, Node: Commands For Text, Next: Commands For Killing, Prev: C
past that word as well. If the insertion point is at the end of
the line, this transposes the last two words on the line.
'shell-transpose-words (M-C-t)'
Drag the word before point past the word after point, moving point
past that word as well. If the insertion point is at the end of
the line, this transposes the last two words on the line. Word
boundaries are the same as 'shell-forward-word' and
'shell-backward-word'.
'upcase-word (M-u)'
Uppercase the current (or following) word. With a negative
argument, uppercase the previous word, but do not move the cursor.
@@ -9286,13 +9303,6 @@ File: bash.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: C
Kill the word behind point. Word boundaries are the same as
'shell-backward-word'.
'shell-transpose-words (M-C-t)'
Drag the word before point past the word after point, moving point
past that word as well. If the insertion point is at the end of
the line, this transposes the last two words on the line. Word
boundaries are the same as 'shell-forward-word' and
'shell-backward-word'.
'unix-word-rubout (C-w)'
Kill the word behind point, using white space as a word boundary.
The killed text is saved on the kill-ring.
@@ -12247,27 +12257,27 @@ D.3 Parameter and Variable Index
* bind-tty-special-chars: Readline Init File Syntax.
(line 71)
* blink-matching-paren: Readline Init File Syntax.
(line 76)
(line 79)
* CDPATH: Bourne Shell Variables.
(line 9)
* CHILD_MAX: Bash Variables. (line 213)
* colored-completion-prefix: Readline Init File Syntax.
(line 81)
(line 84)
* colored-stats: Readline Init File Syntax.
(line 91)
(line 94)
* COLUMNS: Bash Variables. (line 220)
* comment-begin: Readline Init File Syntax.
(line 97)
(line 100)
* completion-display-width: Readline Init File Syntax.
(line 102)
(line 105)
* completion-ignore-case: Readline Init File Syntax.
(line 109)
(line 112)
* completion-map-case: Readline Init File Syntax.
(line 114)
(line 117)
* completion-prefix-display-length: Readline Init File Syntax.
(line 120)
(line 123)
* completion-query-items: Readline Init File Syntax.
(line 127)
(line 130)
* COMPREPLY: Bash Variables. (line 272)
* COMP_CWORD: Bash Variables. (line 226)
* COMP_KEY: Bash Variables. (line 255)
@@ -12277,31 +12287,31 @@ D.3 Parameter and Variable Index
* COMP_WORDBREAKS: Bash Variables. (line 259)
* COMP_WORDS: Bash Variables. (line 265)
* convert-meta: Readline Init File Syntax.
(line 138)
(line 141)
* COPROC: Bash Variables. (line 278)
* DIRSTACK: Bash Variables. (line 282)
* disable-completion: Readline Init File Syntax.
(line 148)
(line 151)
* echo-control-characters: Readline Init File Syntax.
(line 153)
(line 156)
* editing-mode: Readline Init File Syntax.
(line 158)
(line 161)
* EMACS: Bash Variables. (line 292)
* emacs-mode-string: Readline Init File Syntax.
(line 164)
(line 167)
* enable-active-region: Readline Init File Syntax.
(line 174)
(line 177)
* enable-bracketed-paste: Readline Init File Syntax.
(line 187)
(line 190)
* enable-keypad: Readline Init File Syntax.
(line 196)
(line 199)
* ENV: Bash Variables. (line 297)
* EPOCHREALTIME: Bash Variables. (line 302)
* EPOCHSECONDS: Bash Variables. (line 310)
* EUID: Bash Variables. (line 317)
* EXECIGNORE: Bash Variables. (line 321)
* expand-tilde: Readline Init File Syntax.
(line 207)
(line 210)
* FCEDIT: Bash Variables. (line 334)
* FIGNORE: Bash Variables. (line 338)
* FUNCNAME: Bash Variables. (line 344)
@@ -12316,15 +12326,15 @@ D.3 Parameter and Variable Index
* HISTFILESIZE: Bash Variables. (line 446)
* HISTIGNORE: Bash Variables. (line 457)
* history-preserve-point: Readline Init File Syntax.
(line 211)
(line 214)
* history-size: Readline Init File Syntax.
(line 217)
(line 220)
* HISTSIZE: Bash Variables. (line 477)
* HISTTIMEFORMAT: Bash Variables. (line 484)
* HOME: Bourne Shell Variables.
(line 13)
* horizontal-scroll-mode: Readline Init File Syntax.
(line 226)
(line 229)
* HOSTFILE: Bash Variables. (line 492)
* HOSTNAME: Bash Variables. (line 503)
* HOSTTYPE: Bash Variables. (line 506)
@@ -12332,13 +12342,13 @@ D.3 Parameter and Variable Index
(line 18)
* IGNOREEOF: Bash Variables. (line 509)
* input-meta: Readline Init File Syntax.
(line 235)
(line 238)
* INPUTRC: Bash Variables. (line 519)
* INSIDE_EMACS: Bash Variables. (line 523)
* isearch-terminators: Readline Init File Syntax.
(line 245)
(line 248)
* keymap: Readline Init File Syntax.
(line 252)
(line 255)
* LANG: Creating Internationalized Scripts.
(line 51)
* LANG <1>: Bash Variables. (line 529)
@@ -12360,15 +12370,15 @@ D.3 Parameter and Variable Index
(line 27)
* MAPFILE: Bash Variables. (line 584)
* mark-modified-lines: Readline Init File Syntax.
(line 282)
(line 285)
* mark-symlinked-directories: Readline Init File Syntax.
(line 287)
(line 290)
* match-hidden-files: Readline Init File Syntax.
(line 292)
(line 295)
* menu-complete-display-prefix: Readline Init File Syntax.
(line 299)
(line 302)
* meta-flag: Readline Init File Syntax.
(line 235)
(line 238)
* OLDPWD: Bash Variables. (line 588)
* OPTARG: Bourne Shell Variables.
(line 34)
@@ -12377,9 +12387,9 @@ D.3 Parameter and Variable Index
(line 38)
* OSTYPE: Bash Variables. (line 595)
* output-meta: Readline Init File Syntax.
(line 304)
(line 307)
* page-completions: Readline Init File Syntax.
(line 312)
(line 315)
* PATH: Bourne Shell Variables.
(line 42)
* PIPESTATUS: Bash Variables. (line 598)
@@ -12402,21 +12412,21 @@ D.3 Parameter and Variable Index
* READLINE_POINT: Bash Variables. (line 670)
* REPLY: Bash Variables. (line 674)
* revert-all-at-newline: Readline Init File Syntax.
(line 322)
(line 325)
* search-ignore-case: Readline Init File Syntax.
(line 329)
(line 332)
* SECONDS: Bash Variables. (line 677)
* SHELL: Bash Variables. (line 686)
* SHELLOPTS: Bash Variables. (line 691)
* SHLVL: Bash Variables. (line 700)
* show-all-if-ambiguous: Readline Init File Syntax.
(line 334)
(line 337)
* show-all-if-unmodified: Readline Init File Syntax.
(line 340)
(line 343)
* show-mode-in-prompt: Readline Init File Syntax.
(line 349)
(line 352)
* skip-completed-text: Readline Init File Syntax.
(line 355)
(line 358)
* SRANDOM: Bash Variables. (line 705)
* TEXTDOMAIN: Creating Internationalized Scripts.
(line 51)
@@ -12427,11 +12437,11 @@ D.3 Parameter and Variable Index
* TMPDIR: Bash Variables. (line 764)
* UID: Bash Variables. (line 768)
* vi-cmd-mode-string: Readline Init File Syntax.
(line 368)
(line 371)
* vi-ins-mode-string: Readline Init File Syntax.
(line 379)
(line 382)
* visible-stats: Readline Init File Syntax.
(line 390)
(line 393)

File: bash.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes
@@ -12460,7 +12470,7 @@ D.4 Function Index
* beginning-of-line (C-a): Commands For Moving. (line 6)
* bracketed-paste-begin (): Commands For Text. (line 33)
* call-last-kbd-macro (C-x e): Keyboard Macros. (line 13)
* capitalize-word (M-c): Commands For Text. (line 66)
* capitalize-word (M-c): Commands For Text. (line 73)
* character-search (C-]): Miscellaneous Commands.
(line 42)
* character-search-backward (M-C-]): Miscellaneous Commands.
@@ -12482,24 +12492,24 @@ D.4 Function Index
* complete-variable (M-$): Commands For Completion.
(line 64)
* copy-backward-word (): Commands For Killing.
(line 69)
(line 62)
* copy-forward-word (): Commands For Killing.
(line 74)
(line 67)
* copy-region-as-kill (): Commands For Killing.
(line 65)
(line 58)
* dabbrev-expand (): Commands For Completion.
(line 95)
* delete-char (C-d): Commands For Text. (line 12)
* delete-char-or-list (): Commands For Completion.
(line 43)
* delete-horizontal-space (): Commands For Killing.
(line 57)
(line 50)
* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6)
* display-shell-version (C-x C-v): Miscellaneous Commands.
(line 116)
* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands.
(line 14)
* downcase-word (M-l): Commands For Text. (line 62)
* downcase-word (M-l): Commands For Text. (line 69)
* dump-functions (): Miscellaneous Commands.
(line 74)
* dump-macros (): Miscellaneous Commands.
@@ -12551,7 +12561,7 @@ D.4 Function Index
* kill-line (C-k): Commands For Killing.
(line 6)
* kill-region (): Commands For Killing.
(line 61)
(line 54)
* kill-whole-line (): Commands For Killing.
(line 19)
* kill-word (M-d): Commands For Killing.
@@ -12571,7 +12581,7 @@ D.4 Function Index
(line 39)
* operate-and-get-next (C-o): Commands For History.
(line 96)
* overwrite-mode (): Commands For Text. (line 70)
* overwrite-mode (): Commands For Text. (line 77)
* possible-command-completions (C-x !): Commands For Completion.
(line 86)
* possible-completions (M-?): Commands For Completion.
@@ -12609,8 +12619,7 @@ D.4 Function Index
* shell-forward-word (M-C-f): Commands For Moving. (line 26)
* shell-kill-word (M-C-d): Commands For Killing.
(line 32)
* shell-transpose-words (M-C-t): Commands For Killing.
(line 41)
* shell-transpose-words (M-C-t): Commands For Text. (line 58)
* skip-csi-sequence (): Miscellaneous Commands.
(line 52)
* spell-correct-word (C-x s): Miscellaneous Commands.
@@ -12624,20 +12633,20 @@ D.4 Function Index
(line 23)
* universal-argument (): Numeric Arguments. (line 10)
* unix-filename-rubout (): Commands For Killing.
(line 52)
(line 45)
* unix-line-discard (C-u): Commands For Killing.
(line 16)
* unix-word-rubout (C-w): Commands For Killing.
(line 48)
* upcase-word (M-u): Commands For Text. (line 58)
(line 41)
* upcase-word (M-u): Commands For Text. (line 65)
* yank (C-y): Commands For Killing.
(line 79)
(line 72)
* yank-last-arg (M-. or M-_): Commands For History.
(line 84)
* yank-nth-arg (M-C-y): Commands For History.
(line 75)
* yank-pop (M-y): Commands For Killing.
(line 82)
(line 75)

File: bash.info, Node: Concept Index, Prev: Function Index, Up: Indexes
@@ -12816,138 +12825,138 @@ D.5 Concept Index

Tag Table:
Node: Top884
Node: Introduction2791
Node: What is Bash?3004
Node: What is a shell?4115
Node: Definitions6650
Node: Basic Shell Features9598
Node: Shell Syntax10814
Node: Shell Operation11837
Node: Quoting13127
Node: Escape Character14428
Node: Single Quotes14910
Node: Double Quotes15255
Node: ANSI-C Quoting16530
Node: Locale Translation17839
Node: Creating Internationalized Scripts19147
Node: Comments23261
Node: Shell Commands23876
Node: Reserved Words24811
Node: Simple Commands25564
Node: Pipelines26215
Node: Lists29198
Node: Compound Commands30990
Node: Looping Constructs31999
Node: Conditional Constructs34491
Node: Command Grouping48976
Node: Coprocesses50451
Node: GNU Parallel53111
Node: Shell Functions54025
Node: Shell Parameters61907
Node: Positional Parameters66292
Node: Special Parameters67191
Node: Shell Expansions70402
Node: Brace Expansion72487
Node: Tilde Expansion75218
Node: Shell Parameter Expansion77836
Node: Command Substitution96235
Node: Arithmetic Expansion99696
Node: Process Substitution100661
Node: Word Splitting101778
Node: Filename Expansion103823
Node: Pattern Matching106753
Node: Quote Removal111752
Node: Redirections112044
Node: Executing Commands121734
Node: Simple Command Expansion122401
Node: Command Search and Execution124508
Node: Command Execution Environment126892
Node: Environment129924
Node: Exit Status131584
Node: Signals133365
Node: Shell Scripts136811
Node: Shell Builtin Commands139835
Node: Bourne Shell Builtins141870
Node: Bash Builtins165003
Node: Modifying Shell Behavior196999
Node: The Set Builtin197341
Node: The Shopt Builtin207936
Node: Special Builtins223940
Node: Shell Variables224916
Node: Bourne Shell Variables225350
Node: Bash Variables227451
Node: Bash Features262405
Node: Invoking Bash263415
Node: Bash Startup Files269425
Node: Interactive Shells274553
Node: What is an Interactive Shell?274961
Node: Is this Shell Interactive?275607
Node: Interactive Shell Behavior276419
Node: Bash Conditional Expressions280045
Node: Shell Arithmetic284684
Node: Aliases287642
Node: Arrays290533
Node: The Directory Stack297093
Node: Directory Stack Builtins297874
Node: Controlling the Prompt302131
Node: The Restricted Shell305093
Node: Bash POSIX Mode307700
Node: Shell Compatibility Mode323840
Node: Job Control332081
Node: Job Control Basics332538
Node: Job Control Builtins337537
Node: Job Control Variables343329
Node: Command Line Editing344482
Node: Introduction and Notation346150
Node: Readline Interaction347770
Node: Readline Bare Essentials348958
Node: Readline Movement Commands350744
Node: Readline Killing Commands351701
Node: Readline Arguments353619
Node: Searching354660
Node: Readline Init File356843
Node: Readline Init File Syntax358101
Node: Conditional Init Constructs381889
Node: Sample Init File386082
Node: Bindable Readline Commands389203
Node: Commands For Moving390404
Node: Commands For History392452
Node: Commands For Text397443
Node: Commands For Killing401089
Node: Numeric Arguments404119
Node: Commands For Completion405255
Node: Keyboard Macros409443
Node: Miscellaneous Commands410128
Node: Readline vi Mode416163
Node: Programmable Completion417067
Node: Programmable Completion Builtins424844
Node: A Programmable Completion Example435961
Node: Using History Interactively441206
Node: Bash History Facilities441887
Node: Bash History Builtins444889
Node: History Interaction449910
Node: Event Designators453527
Node: Word Designators454878
Node: Modifiers456635
Node: Installing Bash458440
Node: Basic Installation459574
Node: Compilers and Options463293
Node: Compiling For Multiple Architectures464031
Node: Installation Names465720
Node: Specifying the System Type467826
Node: Sharing Defaults468540
Node: Operation Controls469210
Node: Optional Features470165
Node: Reporting Bugs481381
Node: Major Differences From The Bourne Shell482712
Node: GNU Free Documentation License499558
Node: Indexes524732
Node: Builtin Index525183
Node: Reserved Word Index532281
Node: Variable Index534726
Node: Function Index551857
Node: Concept Index565638
Node: Top886
Node: Introduction2795
Node: What is Bash?3008
Node: What is a shell?4119
Node: Definitions6654
Node: Basic Shell Features9602
Node: Shell Syntax10818
Node: Shell Operation11841
Node: Quoting13131
Node: Escape Character14432
Node: Single Quotes14914
Node: Double Quotes15259
Node: ANSI-C Quoting16534
Node: Locale Translation17843
Node: Creating Internationalized Scripts19151
Node: Comments23265
Node: Shell Commands23880
Node: Reserved Words24815
Node: Simple Commands25568
Node: Pipelines26219
Node: Lists29202
Node: Compound Commands30994
Node: Looping Constructs32003
Node: Conditional Constructs34495
Node: Command Grouping48980
Node: Coprocesses50455
Node: GNU Parallel53115
Node: Shell Functions54029
Node: Shell Parameters61911
Node: Positional Parameters66296
Node: Special Parameters67195
Node: Shell Expansions70406
Node: Brace Expansion72491
Node: Tilde Expansion75222
Node: Shell Parameter Expansion77840
Node: Command Substitution96239
Node: Arithmetic Expansion99700
Node: Process Substitution100665
Node: Word Splitting101782
Node: Filename Expansion103827
Node: Pattern Matching106757
Node: Quote Removal111756
Node: Redirections112048
Node: Executing Commands121738
Node: Simple Command Expansion122405
Node: Command Search and Execution124512
Node: Command Execution Environment126896
Node: Environment129928
Node: Exit Status131588
Node: Signals133369
Node: Shell Scripts136815
Node: Shell Builtin Commands139839
Node: Bourne Shell Builtins141874
Node: Bash Builtins165007
Node: Modifying Shell Behavior197003
Node: The Set Builtin197345
Node: The Shopt Builtin208286
Node: Special Builtins224290
Node: Shell Variables225266
Node: Bourne Shell Variables225700
Node: Bash Variables227801
Node: Bash Features262755
Node: Invoking Bash263765
Node: Bash Startup Files269775
Node: Interactive Shells274903
Node: What is an Interactive Shell?275311
Node: Is this Shell Interactive?275957
Node: Interactive Shell Behavior276769
Node: Bash Conditional Expressions280395
Node: Shell Arithmetic285034
Node: Aliases287992
Node: Arrays290883
Node: The Directory Stack297443
Node: Directory Stack Builtins298224
Node: Controlling the Prompt302481
Node: The Restricted Shell305443
Node: Bash POSIX Mode308050
Node: Shell Compatibility Mode324190
Node: Job Control332431
Node: Job Control Basics332888
Node: Job Control Builtins337887
Node: Job Control Variables343679
Node: Command Line Editing344832
Node: Introduction and Notation346500
Node: Readline Interaction348120
Node: Readline Bare Essentials349308
Node: Readline Movement Commands351094
Node: Readline Killing Commands352051
Node: Readline Arguments353969
Node: Searching355010
Node: Readline Init File357193
Node: Readline Init File Syntax358451
Node: Conditional Init Constructs382473
Node: Sample Init File386666
Node: Bindable Readline Commands389787
Node: Commands For Moving390988
Node: Commands For History393036
Node: Commands For Text398027
Node: Commands For Killing402002
Node: Numeric Arguments404703
Node: Commands For Completion405839
Node: Keyboard Macros410027
Node: Miscellaneous Commands410712
Node: Readline vi Mode416747
Node: Programmable Completion417651
Node: Programmable Completion Builtins425428
Node: A Programmable Completion Example436545
Node: Using History Interactively441790
Node: Bash History Facilities442471
Node: Bash History Builtins445473
Node: History Interaction450494
Node: Event Designators454111
Node: Word Designators455462
Node: Modifiers457219
Node: Installing Bash459024
Node: Basic Installation460158
Node: Compilers and Options463877
Node: Compiling For Multiple Architectures464615
Node: Installation Names466304
Node: Specifying the System Type468410
Node: Sharing Defaults469124
Node: Operation Controls469794
Node: Optional Features470749
Node: Reporting Bugs481965
Node: Major Differences From The Bourne Shell483296
Node: GNU Free Documentation License500142
Node: Indexes525316
Node: Builtin Index525767
Node: Reserved Word Index532865
Node: Variable Index535310
Node: Function Index552441
Node: Concept Index566159

End Tag Table
+210 -201
View File
@@ -2,9 +2,9 @@ This is bashref.info, produced by makeinfo version 6.8 from
bashref.texi.
This text is a brief description of the features that are present in the
Bash shell (version 5.3, 7 July 2023).
Bash shell (version 5.3, 19 July 2023).
This is Edition 5.3, last updated 7 July 2023, of 'The GNU Bash
This is Edition 5.3, last updated 19 July 2023, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.3.
Copyright (C) 1988-2023 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, 7 July 2023). The Bash home page is
Bash shell (version 5.3, 19 July 2023). The Bash home page is
<http://www.gnu.org/software/bash/>.
This is Edition 5.3, last updated 7 July 2023, of 'The GNU Bash
This is Edition 5.3, last updated 19 July 2023, of 'The GNU Bash
Reference Manual', for 'Bash', Version 5.3.
Bash contains features that appear in other popular shells, and some
@@ -4538,6 +4538,8 @@ parameters, or to display the names and values of shell variables.
'set'
set [-abefhkmnptuvxBCEHPT] [-o OPTION-NAME] [--] [-] [ARGUMENT ...]
set [+abefhkmnptuvxBCEHPT] [+o OPTION-NAME] [--] [-] [ARGUMENT ...]
set -o
set +o
If no options or arguments are supplied, 'set' displays the names
and values of all shell variables and functions, sorted according
@@ -4613,7 +4615,12 @@ parameters, or to display the names and values of shell variables.
'-o OPTION-NAME'
Set the option corresponding to OPTION-NAME:
Set the option corresponding to OPTION-NAME. If '-o' is
supplied with no OPTION-NAME, 'set' prints the current shell
options settings. If '+o' is supplied with no OPTION-NAME,
'set' prints a series of 'set' commands to recreate the
current option settings on the standard output. Valid option
names are:
'allexport'
Same as '-a'.
@@ -8339,8 +8346,11 @@ Variable Settings
'bind-tty-special-chars'
If set to 'on' (the default), Readline attempts to bind the
control characters treated specially by the kernel's terminal
driver to their Readline equivalents.
control characters that are treated specially by the kernel's
terminal driver to their Readline equivalents. These override
the default Readline bindings described here. Type 'stty -a'
at a Bash prompt to see your current terminal settings,
including the special control characters (usually 'cchars').
'blink-matching-paren'
If set to 'on', Readline attempts to briefly move the cursor
@@ -9220,6 +9230,13 @@ File: bashref.info, Node: Commands For Text, Next: Commands For Killing, Prev
past that word as well. If the insertion point is at the end of
the line, this transposes the last two words on the line.
'shell-transpose-words (M-C-t)'
Drag the word before point past the word after point, moving point
past that word as well. If the insertion point is at the end of
the line, this transposes the last two words on the line. Word
boundaries are the same as 'shell-forward-word' and
'shell-backward-word'.
'upcase-word (M-u)'
Uppercase the current (or following) word. With a negative
argument, uppercase the previous word, but do not move the cursor.
@@ -9287,13 +9304,6 @@ File: bashref.info, Node: Commands For Killing, Next: Numeric Arguments, Prev
Kill the word behind point. Word boundaries are the same as
'shell-backward-word'.
'shell-transpose-words (M-C-t)'
Drag the word before point past the word after point, moving point
past that word as well. If the insertion point is at the end of
the line, this transposes the last two words on the line. Word
boundaries are the same as 'shell-forward-word' and
'shell-backward-word'.
'unix-word-rubout (C-w)'
Kill the word behind point, using white space as a word boundary.
The killed text is saved on the kill-ring.
@@ -12248,27 +12258,27 @@ D.3 Parameter and Variable Index
* bind-tty-special-chars: Readline Init File Syntax.
(line 71)
* blink-matching-paren: Readline Init File Syntax.
(line 76)
(line 79)
* CDPATH: Bourne Shell Variables.
(line 9)
* CHILD_MAX: Bash Variables. (line 213)
* colored-completion-prefix: Readline Init File Syntax.
(line 81)
(line 84)
* colored-stats: Readline Init File Syntax.
(line 91)
(line 94)
* COLUMNS: Bash Variables. (line 220)
* comment-begin: Readline Init File Syntax.
(line 97)
(line 100)
* completion-display-width: Readline Init File Syntax.
(line 102)
(line 105)
* completion-ignore-case: Readline Init File Syntax.
(line 109)
(line 112)
* completion-map-case: Readline Init File Syntax.
(line 114)
(line 117)
* completion-prefix-display-length: Readline Init File Syntax.
(line 120)
(line 123)
* completion-query-items: Readline Init File Syntax.
(line 127)
(line 130)
* COMPREPLY: Bash Variables. (line 272)
* COMP_CWORD: Bash Variables. (line 226)
* COMP_KEY: Bash Variables. (line 255)
@@ -12278,31 +12288,31 @@ D.3 Parameter and Variable Index
* COMP_WORDBREAKS: Bash Variables. (line 259)
* COMP_WORDS: Bash Variables. (line 265)
* convert-meta: Readline Init File Syntax.
(line 138)
(line 141)
* COPROC: Bash Variables. (line 278)
* DIRSTACK: Bash Variables. (line 282)
* disable-completion: Readline Init File Syntax.
(line 148)
(line 151)
* echo-control-characters: Readline Init File Syntax.
(line 153)
(line 156)
* editing-mode: Readline Init File Syntax.
(line 158)
(line 161)
* EMACS: Bash Variables. (line 292)
* emacs-mode-string: Readline Init File Syntax.
(line 164)
(line 167)
* enable-active-region: Readline Init File Syntax.
(line 174)
(line 177)
* enable-bracketed-paste: Readline Init File Syntax.
(line 187)
(line 190)
* enable-keypad: Readline Init File Syntax.
(line 196)
(line 199)
* ENV: Bash Variables. (line 297)
* EPOCHREALTIME: Bash Variables. (line 302)
* EPOCHSECONDS: Bash Variables. (line 310)
* EUID: Bash Variables. (line 317)
* EXECIGNORE: Bash Variables. (line 321)
* expand-tilde: Readline Init File Syntax.
(line 207)
(line 210)
* FCEDIT: Bash Variables. (line 334)
* FIGNORE: Bash Variables. (line 338)
* FUNCNAME: Bash Variables. (line 344)
@@ -12317,15 +12327,15 @@ D.3 Parameter and Variable Index
* HISTFILESIZE: Bash Variables. (line 446)
* HISTIGNORE: Bash Variables. (line 457)
* history-preserve-point: Readline Init File Syntax.
(line 211)
(line 214)
* history-size: Readline Init File Syntax.
(line 217)
(line 220)
* HISTSIZE: Bash Variables. (line 477)
* HISTTIMEFORMAT: Bash Variables. (line 484)
* HOME: Bourne Shell Variables.
(line 13)
* horizontal-scroll-mode: Readline Init File Syntax.
(line 226)
(line 229)
* HOSTFILE: Bash Variables. (line 492)
* HOSTNAME: Bash Variables. (line 503)
* HOSTTYPE: Bash Variables. (line 506)
@@ -12333,13 +12343,13 @@ D.3 Parameter and Variable Index
(line 18)
* IGNOREEOF: Bash Variables. (line 509)
* input-meta: Readline Init File Syntax.
(line 235)
(line 238)
* INPUTRC: Bash Variables. (line 519)
* INSIDE_EMACS: Bash Variables. (line 523)
* isearch-terminators: Readline Init File Syntax.
(line 245)
(line 248)
* keymap: Readline Init File Syntax.
(line 252)
(line 255)
* LANG: Creating Internationalized Scripts.
(line 51)
* LANG <1>: Bash Variables. (line 529)
@@ -12361,15 +12371,15 @@ D.3 Parameter and Variable Index
(line 27)
* MAPFILE: Bash Variables. (line 584)
* mark-modified-lines: Readline Init File Syntax.
(line 282)
(line 285)
* mark-symlinked-directories: Readline Init File Syntax.
(line 287)
(line 290)
* match-hidden-files: Readline Init File Syntax.
(line 292)
(line 295)
* menu-complete-display-prefix: Readline Init File Syntax.
(line 299)
(line 302)
* meta-flag: Readline Init File Syntax.
(line 235)
(line 238)
* OLDPWD: Bash Variables. (line 588)
* OPTARG: Bourne Shell Variables.
(line 34)
@@ -12378,9 +12388,9 @@ D.3 Parameter and Variable Index
(line 38)
* OSTYPE: Bash Variables. (line 595)
* output-meta: Readline Init File Syntax.
(line 304)
(line 307)
* page-completions: Readline Init File Syntax.
(line 312)
(line 315)
* PATH: Bourne Shell Variables.
(line 42)
* PIPESTATUS: Bash Variables. (line 598)
@@ -12403,21 +12413,21 @@ D.3 Parameter and Variable Index
* READLINE_POINT: Bash Variables. (line 670)
* REPLY: Bash Variables. (line 674)
* revert-all-at-newline: Readline Init File Syntax.
(line 322)
(line 325)
* search-ignore-case: Readline Init File Syntax.
(line 329)
(line 332)
* SECONDS: Bash Variables. (line 677)
* SHELL: Bash Variables. (line 686)
* SHELLOPTS: Bash Variables. (line 691)
* SHLVL: Bash Variables. (line 700)
* show-all-if-ambiguous: Readline Init File Syntax.
(line 334)
(line 337)
* show-all-if-unmodified: Readline Init File Syntax.
(line 340)
(line 343)
* show-mode-in-prompt: Readline Init File Syntax.
(line 349)
(line 352)
* skip-completed-text: Readline Init File Syntax.
(line 355)
(line 358)
* SRANDOM: Bash Variables. (line 705)
* TEXTDOMAIN: Creating Internationalized Scripts.
(line 51)
@@ -12428,11 +12438,11 @@ D.3 Parameter and Variable Index
* TMPDIR: Bash Variables. (line 764)
* UID: Bash Variables. (line 768)
* vi-cmd-mode-string: Readline Init File Syntax.
(line 368)
(line 371)
* vi-ins-mode-string: Readline Init File Syntax.
(line 379)
(line 382)
* visible-stats: Readline Init File Syntax.
(line 390)
(line 393)

File: bashref.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes
@@ -12461,7 +12471,7 @@ D.4 Function Index
* beginning-of-line (C-a): Commands For Moving. (line 6)
* bracketed-paste-begin (): Commands For Text. (line 33)
* call-last-kbd-macro (C-x e): Keyboard Macros. (line 13)
* capitalize-word (M-c): Commands For Text. (line 66)
* capitalize-word (M-c): Commands For Text. (line 73)
* character-search (C-]): Miscellaneous Commands.
(line 42)
* character-search-backward (M-C-]): Miscellaneous Commands.
@@ -12483,24 +12493,24 @@ D.4 Function Index
* complete-variable (M-$): Commands For Completion.
(line 64)
* copy-backward-word (): Commands For Killing.
(line 69)
(line 62)
* copy-forward-word (): Commands For Killing.
(line 74)
(line 67)
* copy-region-as-kill (): Commands For Killing.
(line 65)
(line 58)
* dabbrev-expand (): Commands For Completion.
(line 95)
* delete-char (C-d): Commands For Text. (line 12)
* delete-char-or-list (): Commands For Completion.
(line 43)
* delete-horizontal-space (): Commands For Killing.
(line 57)
(line 50)
* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6)
* display-shell-version (C-x C-v): Miscellaneous Commands.
(line 116)
* do-lowercase-version (M-A, M-B, M-X, ...): Miscellaneous Commands.
(line 14)
* downcase-word (M-l): Commands For Text. (line 62)
* downcase-word (M-l): Commands For Text. (line 69)
* dump-functions (): Miscellaneous Commands.
(line 74)
* dump-macros (): Miscellaneous Commands.
@@ -12552,7 +12562,7 @@ D.4 Function Index
* kill-line (C-k): Commands For Killing.
(line 6)
* kill-region (): Commands For Killing.
(line 61)
(line 54)
* kill-whole-line (): Commands For Killing.
(line 19)
* kill-word (M-d): Commands For Killing.
@@ -12572,7 +12582,7 @@ D.4 Function Index
(line 39)
* operate-and-get-next (C-o): Commands For History.
(line 96)
* overwrite-mode (): Commands For Text. (line 70)
* overwrite-mode (): Commands For Text. (line 77)
* possible-command-completions (C-x !): Commands For Completion.
(line 86)
* possible-completions (M-?): Commands For Completion.
@@ -12610,8 +12620,7 @@ D.4 Function Index
* shell-forward-word (M-C-f): Commands For Moving. (line 26)
* shell-kill-word (M-C-d): Commands For Killing.
(line 32)
* shell-transpose-words (M-C-t): Commands For Killing.
(line 41)
* shell-transpose-words (M-C-t): Commands For Text. (line 58)
* skip-csi-sequence (): Miscellaneous Commands.
(line 52)
* spell-correct-word (C-x s): Miscellaneous Commands.
@@ -12625,20 +12634,20 @@ D.4 Function Index
(line 23)
* universal-argument (): Numeric Arguments. (line 10)
* unix-filename-rubout (): Commands For Killing.
(line 52)
(line 45)
* unix-line-discard (C-u): Commands For Killing.
(line 16)
* unix-word-rubout (C-w): Commands For Killing.
(line 48)
* upcase-word (M-u): Commands For Text. (line 58)
(line 41)
* upcase-word (M-u): Commands For Text. (line 65)
* yank (C-y): Commands For Killing.
(line 79)
(line 72)
* yank-last-arg (M-. or M-_): Commands For History.
(line 84)
* yank-nth-arg (M-C-y): Commands For History.
(line 75)
* yank-pop (M-y): Commands For Killing.
(line 82)
(line 75)

File: bashref.info, Node: Concept Index, Prev: Function Index, Up: Indexes
@@ -12817,138 +12826,138 @@ D.5 Concept Index

Tag Table:
Node: Top887
Node: Introduction2797
Node: What is Bash?3013
Node: What is a shell?4127
Node: Definitions6665
Node: Basic Shell Features9616
Node: Shell Syntax10835
Node: Shell Operation11861
Node: Quoting13154
Node: Escape Character14458
Node: Single Quotes14943
Node: Double Quotes15291
Node: ANSI-C Quoting16569
Node: Locale Translation17881
Node: Creating Internationalized Scripts19192
Node: Comments23309
Node: Shell Commands23927
Node: Reserved Words24865
Node: Simple Commands25621
Node: Pipelines26275
Node: Lists29261
Node: Compound Commands31056
Node: Looping Constructs32068
Node: Conditional Constructs34563
Node: Command Grouping49051
Node: Coprocesses50529
Node: GNU Parallel53192
Node: Shell Functions54109
Node: Shell Parameters61994
Node: Positional Parameters66382
Node: Special Parameters67284
Node: Shell Expansions70498
Node: Brace Expansion72586
Node: Tilde Expansion75320
Node: Shell Parameter Expansion77941
Node: Command Substitution96343
Node: Arithmetic Expansion99807
Node: Process Substitution100775
Node: Word Splitting101895
Node: Filename Expansion103943
Node: Pattern Matching106876
Node: Quote Removal111878
Node: Redirections112173
Node: Executing Commands121866
Node: Simple Command Expansion122536
Node: Command Search and Execution124646
Node: Command Execution Environment127033
Node: Environment130068
Node: Exit Status131731
Node: Signals133515
Node: Shell Scripts136964
Node: Shell Builtin Commands139991
Node: Bourne Shell Builtins142029
Node: Bash Builtins165165
Node: Modifying Shell Behavior197164
Node: The Set Builtin197509
Node: The Shopt Builtin208107
Node: Special Builtins224114
Node: Shell Variables225093
Node: Bourne Shell Variables225530
Node: Bash Variables227634
Node: Bash Features262591
Node: Invoking Bash263604
Node: Bash Startup Files269617
Node: Interactive Shells274748
Node: What is an Interactive Shell?275159
Node: Is this Shell Interactive?275808
Node: Interactive Shell Behavior276623
Node: Bash Conditional Expressions280252
Node: Shell Arithmetic284894
Node: Aliases287855
Node: Arrays290749
Node: The Directory Stack297312
Node: Directory Stack Builtins298096
Node: Controlling the Prompt302356
Node: The Restricted Shell305321
Node: Bash POSIX Mode307931
Node: Shell Compatibility Mode324074
Node: Job Control332318
Node: Job Control Basics332778
Node: Job Control Builtins337780
Node: Job Control Variables343575
Node: Command Line Editing344731
Node: Introduction and Notation346402
Node: Readline Interaction348025
Node: Readline Bare Essentials349216
Node: Readline Movement Commands351005
Node: Readline Killing Commands351965
Node: Readline Arguments353886
Node: Searching354930
Node: Readline Init File357116
Node: Readline Init File Syntax358377
Node: Conditional Init Constructs382168
Node: Sample Init File386364
Node: Bindable Readline Commands389488
Node: Commands For Moving390692
Node: Commands For History392743
Node: Commands For Text397737
Node: Commands For Killing401386
Node: Numeric Arguments404419
Node: Commands For Completion405558
Node: Keyboard Macros409749
Node: Miscellaneous Commands410437
Node: Readline vi Mode416475
Node: Programmable Completion417382
Node: Programmable Completion Builtins425162
Node: A Programmable Completion Example436282
Node: Using History Interactively441530
Node: Bash History Facilities442214
Node: Bash History Builtins445219
Node: History Interaction450243
Node: Event Designators453863
Node: Word Designators455217
Node: Modifiers456977
Node: Installing Bash458785
Node: Basic Installation459922
Node: Compilers and Options463644
Node: Compiling For Multiple Architectures464385
Node: Installation Names466077
Node: Specifying the System Type468186
Node: Sharing Defaults468903
Node: Operation Controls469576
Node: Optional Features470534
Node: Reporting Bugs481753
Node: Major Differences From The Bourne Shell483087
Node: GNU Free Documentation License499936
Node: Indexes525113
Node: Builtin Index525567
Node: Reserved Word Index532668
Node: Variable Index535116
Node: Function Index552250
Node: Concept Index566034
Node: Top889
Node: Introduction2801
Node: What is Bash?3017
Node: What is a shell?4131
Node: Definitions6669
Node: Basic Shell Features9620
Node: Shell Syntax10839
Node: Shell Operation11865
Node: Quoting13158
Node: Escape Character14462
Node: Single Quotes14947
Node: Double Quotes15295
Node: ANSI-C Quoting16573
Node: Locale Translation17885
Node: Creating Internationalized Scripts19196
Node: Comments23313
Node: Shell Commands23931
Node: Reserved Words24869
Node: Simple Commands25625
Node: Pipelines26279
Node: Lists29265
Node: Compound Commands31060
Node: Looping Constructs32072
Node: Conditional Constructs34567
Node: Command Grouping49055
Node: Coprocesses50533
Node: GNU Parallel53196
Node: Shell Functions54113
Node: Shell Parameters61998
Node: Positional Parameters66386
Node: Special Parameters67288
Node: Shell Expansions70502
Node: Brace Expansion72590
Node: Tilde Expansion75324
Node: Shell Parameter Expansion77945
Node: Command Substitution96347
Node: Arithmetic Expansion99811
Node: Process Substitution100779
Node: Word Splitting101899
Node: Filename Expansion103947
Node: Pattern Matching106880
Node: Quote Removal111882
Node: Redirections112177
Node: Executing Commands121870
Node: Simple Command Expansion122540
Node: Command Search and Execution124650
Node: Command Execution Environment127037
Node: Environment130072
Node: Exit Status131735
Node: Signals133519
Node: Shell Scripts136968
Node: Shell Builtin Commands139995
Node: Bourne Shell Builtins142033
Node: Bash Builtins165169
Node: Modifying Shell Behavior197168
Node: The Set Builtin197513
Node: The Shopt Builtin208457
Node: Special Builtins224464
Node: Shell Variables225443
Node: Bourne Shell Variables225880
Node: Bash Variables227984
Node: Bash Features262941
Node: Invoking Bash263954
Node: Bash Startup Files269967
Node: Interactive Shells275098
Node: What is an Interactive Shell?275509
Node: Is this Shell Interactive?276158
Node: Interactive Shell Behavior276973
Node: Bash Conditional Expressions280602
Node: Shell Arithmetic285244
Node: Aliases288205
Node: Arrays291099
Node: The Directory Stack297662
Node: Directory Stack Builtins298446
Node: Controlling the Prompt302706
Node: The Restricted Shell305671
Node: Bash POSIX Mode308281
Node: Shell Compatibility Mode324424
Node: Job Control332668
Node: Job Control Basics333128
Node: Job Control Builtins338130
Node: Job Control Variables343925
Node: Command Line Editing345081
Node: Introduction and Notation346752
Node: Readline Interaction348375
Node: Readline Bare Essentials349566
Node: Readline Movement Commands351355
Node: Readline Killing Commands352315
Node: Readline Arguments354236
Node: Searching355280
Node: Readline Init File357466
Node: Readline Init File Syntax358727
Node: Conditional Init Constructs382752
Node: Sample Init File386948
Node: Bindable Readline Commands390072
Node: Commands For Moving391276
Node: Commands For History393327
Node: Commands For Text398321
Node: Commands For Killing402299
Node: Numeric Arguments405003
Node: Commands For Completion406142
Node: Keyboard Macros410333
Node: Miscellaneous Commands411021
Node: Readline vi Mode417059
Node: Programmable Completion417966
Node: Programmable Completion Builtins425746
Node: A Programmable Completion Example436866
Node: Using History Interactively442114
Node: Bash History Facilities442798
Node: Bash History Builtins445803
Node: History Interaction450827
Node: Event Designators454447
Node: Word Designators455801
Node: Modifiers457561
Node: Installing Bash459369
Node: Basic Installation460506
Node: Compilers and Options464228
Node: Compiling For Multiple Architectures464969
Node: Installation Names466661
Node: Specifying the System Type468770
Node: Sharing Defaults469487
Node: Operation Controls470160
Node: Optional Features471118
Node: Reporting Bugs482337
Node: Major Differences From The Bourne Shell483671
Node: GNU Free Documentation License500520
Node: Indexes525697
Node: Builtin Index526151
Node: Reserved Word Index533252
Node: Variable Index535700
Node: Function Index552834
Node: Concept Index566555

End Tag Table
+11 -1
View File
@@ -5376,6 +5376,8 @@ parameters, or to display the names and values of shell variables.
@example
set [-abefhkmnptuvxBCEHPT] [-o @var{option-name}] [--] [-] [@var{argument} @dots{}]
set [+abefhkmnptuvxBCEHPT] [+o @var{option-name}] [--] [-] [@var{argument} @dots{}]
set -o
set +o
@end example
If no options or arguments are supplied, @code{set} displays the names
@@ -5456,7 +5458,15 @@ This option is ignored by interactive shells.
@item -o @var{option-name}
Set the option corresponding to @var{option-name}:
Set the option corresponding to @var{option-name}.
If @option{-o} is supplied with no @var{option-name},
@code{set} prints the current shell options settings.
If @option{+o} is supplied with no @var{option-name},
@code{set} prints a series of
@code{set}
commands to recreate the current option settings
on the standard output.
Valid option names are:
@table @code
@item allexport
+10 -7
View File
@@ -1155,7 +1155,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
sseett [--aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [----] [--] [_a_r_g ...]
sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [----] [--] [_a_r_g ...]
Without options, display the name and value of each shell vari-
sseett --oo
sseett ++oo Without options, display the name and value of each shell vari-
able in a format that can be reused as input for setting or re-
setting the currently-set variables. Read-only variables cannot
be reset. In _p_o_s_i_x _m_o_d_e, only shell variables are listed. The
@@ -1270,10 +1271,10 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
This also affects the editing interface used for
rreeaadd --ee.
xxttrraaccee Same as --xx.
If --oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, the values of the
current options are printed. If ++oo is supplied with no
_o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the
current option settings is displayed on the standard
If --oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, sseett prints the
current shell option settings. If ++oo is supplied with
no _o_p_t_i_o_n_-_n_a_m_e, sseett prints a series of sseett commands to
recreate the current option settings on the standard
output.
--pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and
$$BBAASSHH__EENNVV files are not processed, shell functions are
@@ -1779,8 +1780,10 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS
The expression is parsed and evaluated according to
precedence using the rules listed above.
When used with tteesstt or [[, the << and >> operators sort lexico-
graphically using ASCII ordering.
If the shell is not in _p_o_s_i_x _m_o_d_e, when used with tteesstt or [[, the
<< and >> operators sort lexicographically using ASCII ordering.
When the shell is in _p_o_s_i_x _m_o_d_e, these operators sort using the
current locale.
ttiimmeess Print the accumulated user and system times for the shell and
for processes run from the shell. The return status is 0.
+2 -2
View File
@@ -2,10 +2,10 @@
Copyright (C) 1988-2023 Free Software Foundation, Inc.
@end ignore
@set LASTCHANGE Fri Jul 7 15:07:53 EDT 2023
@set LASTCHANGE Wed Jul 19 14:23:20 EDT 2023
@set EDITION 5.3
@set VERSION 5.3
@set UPDATED 7 July 2023
@set UPDATED 19 July 2023
@set UPDATED-MONTH July 2023
+11 -2
View File
@@ -3975,6 +3975,8 @@ execute_cond_node (COND_COM *cond)
#if defined (COND_REGEXP)
if (rmatch)
{
char *errstr;
mflags = SHMAT_PWARN;
#if defined (ARRAY_VARS)
mflags |= SHMAT_SUBEXP;
@@ -3988,9 +3990,16 @@ execute_cond_node (COND_COM *cond)
free(t2);
#endif
result = sh_regmatch (arg1, arg2, mflags);
errstr = NULL;
result = sh_regmatch (arg1, arg2, mflags, &errstr);
if (result == 2)
builtin_error (_("invalid regular expression `%s'"), arg2);
{
if (errstr && *errstr)
builtin_error (_("invalid regular expression `%s': %s"), arg2, errstr);
else
builtin_error (_("invalid regular expression `%s'"), arg2);
free (errstr);
}
}
else
#endif /* COND_REGEXP */
+1 -1
View File
@@ -339,7 +339,7 @@ extern int sh_setlinebuf (FILE *);
extern int sh_eaccess (const char *, int);
/* declarations for functions defined in lib/sh/shmatch.c */
extern int sh_regmatch (const char *, const char *, int);
extern int sh_regmatch (const char *, const char *, int, char **);
/* defines for flags argument to sh_regmatch. */
#define SHMAT_SUBEXP 0x001 /* save subexpressions in SH_REMATCH */
+15
View File
@@ -71,6 +71,21 @@ is_basic (char c)
& 1;
}
#if 0
/* XXX - FUTURE */
/* All locale encodings (see localcharset.h) map the characters 0x00..0x7F
to U+0000..U+007F, like ASCII, except for
CP864 different mapping of '%'
SHIFT_JIS different mappings of 0x5C, 0x7E
JOHAB different mapping of 0x5C
However, these characters in the range 0x20..0x7E are in the ISO C
"basic character set" and in the POSIX "portable character set", which
ISO C and POSIX guarantee to be single-byte. Thus, locales with these
encodings are not POSIX compliant. And they are most likely not in use
any more (as of 2023). */
#define is_basic(c) ((unsigned char) (c) < 0x80)
#endif
#else
static inline int
+42 -5
View File
@@ -2861,9 +2861,16 @@ _rl_macro_dumper_internal (int print_readably, Keymap map, char *prefix)
{
case ISMACR:
keyname = _rl_get_keyname (key);
out = _rl_untranslate_macro_value ((char *)map[key].function, 0);
if (print_readably < 0)
out = savestring ((char *)map[key].function);
else
out = _rl_untranslate_macro_value ((char *)map[key].function, 0);
if (print_readably)
if (print_readably < 0)
fprintf (rl_outstream, "\"%s%s\": %s\n", prefix ? prefix : "",
keyname,
out ? out : "");
else if (print_readably > 0)
fprintf (rl_outstream, "\"%s%s\": \"%s\"\n", prefix ? prefix : "",
keyname,
out ? out : "");
@@ -2926,10 +2933,40 @@ rl_dump_macros (int count, int key)
static char *
_rl_get_string_variable_value (const char *name)
{
static char numbuf[32];
static char numbuf[64];
char *ret;
if (_rl_stricmp (name, "bell-style") == 0)
if (_rl_stricmp (name, "active-region-start-color") == 0)
{
if (_rl_active_region_start_color == 0)
return 0;
ret = _rl_untranslate_macro_value (_rl_active_region_start_color, 0);
if (ret)
{
strncpy (numbuf, ret, sizeof (numbuf) - 1);
xfree (ret);
numbuf[sizeof(numbuf) - 1] = '\0';
}
else
numbuf[0] = '\0';
return numbuf;
}
else if (_rl_stricmp (name, "active-region-end-color") == 0)
{
if (_rl_active_region_end_color == 0)
return 0;
ret = _rl_untranslate_macro_value (_rl_active_region_end_color, 0);
if (ret)
{
strncpy (numbuf, ret, sizeof (numbuf) - 1);
xfree (ret);
numbuf[sizeof(numbuf) - 1] = '\0';
}
else
numbuf[0] = '\0';
return numbuf;
}
else if (_rl_stricmp (name, "bell-style") == 0)
{
switch (_rl_bell_preference)
{
@@ -2963,7 +3000,7 @@ _rl_get_string_variable_value (const char *name)
return (rl_get_keymap_name_from_edit_mode ());
else if (_rl_stricmp (name, "history-size") == 0)
{
sprintf (numbuf, "%d", history_is_stifled() ? history_max_entries : 0);
sprintf (numbuf, "%d", history_is_stifled() ? history_max_entries : -1);
return (numbuf);
}
else if (_rl_stricmp (name, "isearch-terminators") == 0)
+64 -4
View File
@@ -813,6 +813,7 @@ rl_redisplay (void)
char *prompt_this_line;
char cur_face;
int hl_begin, hl_end;
int short_circuit;
int mb_cur_max = MB_CUR_MAX;
#if defined (HANDLE_MULTIBYTE)
WCHAR_T wc;
@@ -1311,9 +1312,54 @@ rl_redisplay (void)
norm_face (INV_LINE_FACE(linenum), INV_LLEN (linenum));
}
/* XXX - experimental new code */
/* Now that _rl_last_v_pos is a logical count, not bounded by the
number of physical screen lines, this is a start at being able
to redisplay lines that consume more than the number of physical
screen lines in more than a simple `move-to-the-next-line' way.
If the new line has more lines than there are physical screen
lines, and the cursor would be off the top of the screen if we
displayed all the new lines, clear the screen without killing
the scrollback buffer, clear out the visible line so we do a
complete redraw, and make the loop break when we have displayed
a physical screen full of lines. Do the same if we are going to
move the cursor to a line that's greater than the number of
physical screen lines when we weren't before.
SHORT_CIRCUIT says where to break the loop. Pretty simple right now. */
short_circuit = -1;
if (inv_botlin >= _rl_screenheight)
{
int extra;
extra = inv_botlin - _rl_screenheight; /* lines off the top */
/* cursor in portion of line that would be off screen or in
the lines that exceed the number of physical screen lines. */
if (cursor_linenum <= extra ||
(cursor_linenum >= _rl_screenheight && _rl_vis_botlin <= _rl_screenheight))
{
if (cursor_linenum <= extra)
short_circuit = _rl_screenheight;
_rl_clear_screen (0);
if (visible_line)
memset (visible_line, 0, line_size);
rl_on_new_line ();
}
/* The cursor is beyond the number of lines that would be off
the top, but we still want to display only the first
_RL_SCREENHEIGHT lines starting at the beginning of the line. */
else if (cursor_linenum > extra && cursor_linenum <= _rl_screenheight &&
_rl_vis_botlin <= _rl_screenheight)
short_circuit = _rl_screenheight;
}
/* For each line in the buffer, do the updating display. */
for (linenum = 0; linenum <= inv_botlin; linenum++)
{
if (short_circuit >= 0 && linenum == short_circuit)
break;
/* This can lead us astray if we execute a program that changes
the locale from a non-multibyte to a multibyte one. */
o_cpos = _rl_last_c_pos;
@@ -1417,7 +1463,7 @@ rl_redisplay (void)
((linenum == _rl_vis_botlin) ? strlen (tt) : _rl_screenwidth);
}
}
_rl_vis_botlin = inv_botlin;
_rl_vis_botlin = (short_circuit >= 0) ? short_circuit : inv_botlin;
/* CHANGED_SCREEN_LINE is set to 1 if we have moved to a
different screen line during this redisplay. */
@@ -2748,8 +2794,6 @@ rl_on_new_line_with_prompt (void)
int
rl_forced_update_display (void)
{
register char *temp;
if (visible_line)
memset (visible_line, 0, line_size);
@@ -2934,9 +2978,25 @@ _rl_move_vert (int to)
{
register int delta, i;
if (_rl_last_v_pos == to || to > _rl_screenheight)
if (_rl_last_v_pos == to)
return;
#if 0
/* If we're being asked to move to a line beyond the screen height, and
we're currently at the last physical line, issue a newline and let the
terminal take care of scrolling the display. */
if (to >= _rl_screenheight)
{
if (_rl_last_v_pos == _rl_screenheight)
{
putc ('\n', rl_outstream);
_rl_cr ();
_rl_last_c_pos = 0;
}
return;
}
#endif
if ((delta = to - _rl_last_v_pos) > 0)
{
for (i = 0; i < delta; i++)
+7 -3
View File
@@ -6,9 +6,9 @@
.\" Case Western Reserve University
.\" chet.ramey@case.edu
.\"
.\" Last Change: Fri Feb 17 10:59:58 EST 2023
.\" Last Change: Mon Jul 17 16:46:23 EDT 2023
.\"
.TH READLINE 3 "2023 February 17" "GNU Readline 8.2"
.TH READLINE 3 "2023 July 17" "GNU Readline 8.3"
.\"
.\" File Name macro. This used to be `.PN', for Path Name,
.\" but Sun doesn't seem to like that very much.
@@ -371,8 +371,12 @@ If set to \fBaudible\fP, readline attempts to ring the terminal's bell.
.TP
.B bind\-tty\-special\-chars (On)
If set to \fBOn\fP (the default), readline attempts to bind the control
characters treated specially by the kernel's terminal driver to their
characters that are
treated specially by the kernel's terminal driver to their
readline equivalents.
These override the default readline bindings described here.
Type \f(CWstty -a\fP at a bash prompt to see your current terminal settings,
including the special control characters (usually \fBcchars\fP).
.TP
.B blink\-matching\-paren (Off)
If set to \fBOn\fP, readline attempts to briefly move the cursor to an
+7 -2
View File
@@ -1348,14 +1348,19 @@ If @var{c} is a number, return the value it represents.
Bind the key sequence @var{keyseq} to invoke the macro @var{macro}.
The binding is performed in @var{map}. When @var{keyseq} is invoked, the
@var{macro} will be inserted into the line. This function is deprecated;
use @code{rl_generic_bind()} instead.
use @code{rl_generic_bind} instead.
@end deftypefun
@deftypefun void rl_macro_dumper (int readable)
Print the key sequences bound to macros and their values, using
the current keymap, to @code{rl_outstream}.
If @var{readable} is non-zero, the list is formatted in such a way
If @var{readable} is greater than zero, the list is formatted in such a way
that it can be made part of an @code{inputrc} file and re-read.
If @var{readable} is less than zero, the list is printed in a
"translated" form that can be used by applications that wish to bind
key sequences directly without calling @code{rl_parse_and_bind}
(e.g., by calling @code{rl_generic_bind}).
@end deftypefun
@deftypefun int rl_variable_bind (const char *variable, const char *value)
+15 -9
View File
@@ -456,8 +456,12 @@ the terminal's bell.
@item bind-tty-special-chars
@vindex bind-tty-special-chars
If set to @samp{on} (the default), Readline attempts to bind the control
characters treated specially by the kernel's terminal driver to their
characters that are
treated specially by the kernel's terminal driver to their
Readline equivalents.
These override the default Readline bindings described here.
Type @samp{stty -a} at a Bash prompt to see your current terminal settings,
including the special control characters (usually @code{cchars}).
@item blink-matching-paren
@vindex blink-matching-paren
@@ -1464,6 +1468,16 @@ moving point past that word as well.
If the insertion point is at the end of the line, this transposes
the last two words on the line.
@ifset BashFeatures
@item shell-transpose-words (M-C-t)
Drag the word before point past the word after point,
moving point past that word as well.
If the insertion point is at the end of the line, this transposes
the last two words on the line.
Word boundaries are the same as @code{shell-forward-word} and
@code{shell-backward-word}.
@end ifset
@item upcase-word (M-u)
Uppercase the current (or following) word. With a negative argument,
uppercase the previous word, but do not move the cursor.
@@ -1534,14 +1548,6 @@ Kill the word behind point.
Word boundaries are the same as @code{shell-backward-word}.
@end ifset
@item shell-transpose-words (M-C-t)
Drag the word before point past the word after point,
moving point past that word as well.
If the insertion point is at the end of the line, this transposes
the last two words on the line.
Word boundaries are the same as @code{shell-forward-word} and
@code{shell-backward-word}.
@item unix-word-rubout (C-w)
Kill the word behind point, using white space as a word boundary.
The killed text is saved on the kill-ring.
+5 -5
View File
@@ -2,10 +2,10 @@
Copyright (C) 1988-2023 Free Software Foundation, Inc.
@end ignore
@set EDITION 8.2
@set VERSION 8.2
@set EDITION 8.3
@set VERSION 8.3
@set UPDATED 15 June 2023
@set UPDATED-MONTH June 2023
@set UPDATED 17 July 2023
@set UPDATED-MONTH July 2023
@set LASTCHANGE Thu Jun 15 14:37:40 EDT 2023
@set LASTCHANGE Mon Jul 17 16:47:01 EDT 2023
+24 -7
View File
@@ -39,24 +39,36 @@
#include "variables.h"
#include "externs.h"
extern int glob_ignore_case, match_ignore_case;
extern int match_ignore_case;
#if defined (ARRAY_VARS)
extern SHELL_VAR *builtin_find_indexed_array (char *, int);
#endif
static char *
strregerror (int err, const regex_t *regex_p)
{
char *str;
size_t size;
size = regerror (err, regex_p, (char *)0, 0);
str = xmalloc (size);
(void)regerror (err, regex_p, str, size);
return str;
}
int
sh_regmatch (const char *string, const char *pattern, int flags)
sh_regmatch (const char *string, const char *pattern, int flags, char **errbuf)
{
regex_t regex = { 0 };
regmatch_t *matches;
int rflags;
int rflags, reg_err;
#if defined (ARRAY_VARS)
SHELL_VAR *rematch;
ARRAY *amatch;
int subexp_ind;
size_t subexp_ind, subexp_len;
char *subexp_str;
int subexp_len;
#endif
int result;
@@ -71,8 +83,12 @@ sh_regmatch (const char *string, const char *pattern, int flags)
rflags |= REG_NOSUB;
#endif
if (regcomp (&regex, pattern, rflags))
return 2; /* flag for printing a warning here. */
if (reg_err = regcomp (&regex, pattern, rflags))
{
if (errbuf)
*errbuf = strregerror (reg_err, &regex);
return 2; /* flag for printing a warning here. */
}
#if defined (ARRAY_VARS)
matches = (regmatch_t *)malloc (sizeof (regmatch_t) * (regex.re_nsub + 1));
@@ -82,6 +98,7 @@ sh_regmatch (const char *string, const char *pattern, int flags)
/* man regexec: NULL PMATCH ignored if NMATCH == 0 */
if (regexec (&regex, string, matches ? regex.re_nsub + 1 : 0, matches, 0))
/* XXX - catch errors and fill in *errbuf here? */
result = EXECUTION_FAILURE;
else
result = EXECUTION_SUCCESS; /* match */
+10
View File
@@ -21,6 +21,16 @@
[[ "\\" =~ [\\] ]] || echo bad 5
[[ x =~ [z-a] ]] && echo bad 6
[[ x =~ [[:invalid:]abc] ]] && echo bad 7
exp='x\'
[[ x =~ $exp ]] && echo bad 8
exp='a(xb'
[[ x =~ $exp ]] && echo bad 9
[[ dog =~ [[=d=]].. ]] && echo ok 1
[[ d.. =~ [[=d=]]\.\. ]] && echo ok 2
[[ dog =~ ['[=d=]'].. ]] && echo ok 3 # dubious
+5 -1
View File
@@ -76,7 +76,11 @@ match control-a 2
match control-a 3
match control-a 4
match control-a 5
./cond-regexp2.sub: line 18: [[: invalid regular expression `[\.'
./cond-regexp2.sub: line 18: [[: invalid regular expression `[\.': brackets ([ ]) not balanced
./cond-regexp2.sub: line 24: [[: invalid regular expression `[z-a]': invalid character range
./cond-regexp2.sub: line 26: [[: invalid regular expression `[[:invalid:]abc]': invalid character class
./cond-regexp2.sub: line 29: [[: invalid regular expression `x\': trailing backslash (\)
./cond-regexp2.sub: line 32: [[: invalid regular expression `a(xb': parentheses not balanced
ok 1
ok 2
ok 3