changes for quoting special and multibyte characters in glob patterns; changes to filename unicode normalization on macOS for globbing and filename completion; send SIGCONT unconditionally to just-restarted job in fg/bg

This commit is contained in:
Chet Ramey
2023-07-25 10:18:35 -04:00
parent ad39c5c3d7
commit 8418224f32
27 changed files with 624 additions and 462 deletions
+54
View File
@@ -7201,3 +7201,57 @@ 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.
7/20
----
pathexp.c
- quote_string_for_globbing: don't bother backslash-quoting multibyte
characters. It matters for macOS and doesn't make a difference for
other systems, and those aren't going to be special globbing chars.
From a report by Grisha Levit <grishalevit@gmail.com>
lib/glob/glob.c
- glob_vector: normalize the pattern with fnx_fromfs so we make sure
it's also in NFC on macOS (other systems don't care). This is a
POSIX violation, but part of correcting the longtime HFS+ (and Finder)
misfeature
lib/readline/complete.c
- rl_filename_completion_function: if the application sets a filename
rewrite hook, use it to rewrite the filename we're matching as well
as filenames read with readdir().
From a report by Grisha Levit <grishalevit@gmail.com>
7/21
----
pathexp.c
- quote_string_for_globbing: see if we can get away without backslash-
quoting single-byte characters that aren't CTLESC or characters
that are special to EREs or BREs, even if they're quoted
bashline.c
- bashline_set_filename_hooks: convenience function to set the
directory hook and the filename rewrite and stat hooks; call from
other places in the file so these are set consistently
bashline.h
- bashline_set_filename_hooks: extern declaration
builtins/complete.def
- compgen_builtin: make sure to set the directory and filename hooks
so compgen called from a script works more like compgen called
from a word completion context.
Inspired by a report by Grisha Levit <grishalevit@gmail.com>
doc/Makefile.in
- bash.pdf: use groff -T pdf to create, instead of creating postscript
and then using ghostscript
7/24
----
jobs.c
- start_job: unconditionally send SIGCONT to the job we just started,
even if we think it was already running, to reduce the window for a
potential race condition, and only change the state to RUNNING if
the SIGCONT succeeds or if the process has terminated so we can
clean it up later.
Report from Earl Chew <earl_chew@yahoo.com>
+1
View File
@@ -1441,6 +1441,7 @@ siglist.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
subst.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
test.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
trap.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
unwind_prot.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
variables.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
version.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
xmalloc.o: bashintl.h ${LIBINTL_H} $(BASHINCDIR)/gettext.h
+16 -11
View File
@@ -593,13 +593,7 @@ initialize_readline (void)
/* Tell the completer that we want a crack first. */
rl_attempted_completion_function = attempt_shell_completion;
/* Tell the completer that we might want to follow symbolic links or
do other expansion on directory names. */
set_directory_hook ();
rl_filename_rewrite_hook = bash_filename_rewrite_hook;
rl_filename_stat_hook = bash_filename_stat_hook;
bashline_set_filename_hooks ();
/* Tell the filename completer we want a chance to ignore some names. */
rl_ignore_some_completions_function = filename_completion_ignore;
@@ -688,8 +682,7 @@ bashline_reset (void)
rl_filename_quoting_function = bash_quote_filename;
set_directory_hook ();
rl_filename_stat_hook = bash_filename_stat_hook;
bashline_set_filename_hooks ();
bashline_reset_event_hook ();
@@ -1564,8 +1557,7 @@ attempt_shell_completion (const char *text, int start, int end)
complete_fullquote = 1; /* full filename quoting by default */
rl_filename_quote_characters = default_filename_quote_characters;
set_filename_bstab (rl_filename_quote_characters);
set_directory_hook ();
rl_filename_stat_hook = bash_filename_stat_hook;
bashline_set_filename_hooks ();
rl_sort_completion_matches = 1; /* sort by default */
@@ -3336,6 +3328,19 @@ restore_directory_hook (rl_icppfunc_t *hookf)
rl_directory_rewrite_hook = hookf;
}
/* Set the readline hooks that affect how directories and filenames are
converted. Extern so other parts of the shell can use. */
void
bashline_set_filename_hooks (void)
{
/* Tell the completer that we might want to follow symbolic links or
do other expansion on directory names. */
set_directory_hook ();
rl_filename_rewrite_hook = bash_filename_rewrite_hook;
rl_filename_stat_hook = bash_filename_stat_hook;
}
/* Check whether not DIRNAME, with any trailing slash removed, exists. If
SHOULD_DEQUOTE is non-zero, we dequote the directory name first. */
static int
+1
View File
@@ -56,6 +56,7 @@ extern int unbind_unix_command (char *);
extern char **bash_default_completion (const char *, int, int, int, int);
extern void bashline_set_filename_hooks (void);
extern void set_directory_hook (void);
/* Used by programmable completion code. */
+7 -3
View File
@@ -109,6 +109,10 @@ BASHREF_FILES = $(srcdir)/bashref.texi $(srcdir)/fdl.texi $(srcdir)/version.texi
$(RM) $@
-${GROFF} -I${srcdir} -man $< > $@
.1.pdf:
$(RM) $@
-${GROFF} -I${srcdir} -man -T pdf $< > $@
.1.0:
$(RM) $@
-${NROFF} -I${srcdir} -man $< > $@
@@ -207,11 +211,11 @@ article.ps: article.ms
bashref.ps: bashref.dvi
article.pdf: article.ps
#bashref.pdf: bashref.dvi
# experimental
bashref.pdf: bashref.texi
bash.pdf: bash.ps
bash.pdf: bash.1
article.pdf: article.ps
rose94.pdf: rose94.ps
OTHER_DOCS = $(srcdir)/FAQ $(srcdir)/INTRO
+19 -12
View File
@@ -3,7 +3,7 @@
</HEAD>
<BODY><TABLE WIDTH=100%>
<TR>
<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2023 July 7<TH ALIGN=RIGHT width=33%>BASH(1)
<TH ALIGN=LEFT width=33%>BASH(1)<TH ALIGN=CENTER width=33%>2023 July 19<TH ALIGN=RIGHT width=33%>BASH(1)
</TR>
</TABLE>
<BR><A HREF="#index">Index</A>
@@ -7778,9 +7778,13 @@ If set to <B>audible</B>, readline attempts to ring the terminal's bell.
<DT><B>bind-tty-special-chars (On)</B>
<DD>
If set to <B>On</B>, readline attempts to bind the control characters
treated specially by the kernel's terminal driver to their readline
equivalents.
If set to <B>On</B> (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 <TT>stty -a</TT> at a bash prompt to see your current terminal settings,
including the special control characters (usually <B>cchars</B>).
<DT><B>blink-matching-paren (Off)</B>
<DD>
@@ -12493,6 +12497,8 @@ before execution resumes after the function or script.
<DT><B>set</B> [<B>-abefhkmnptuvxBCEHPT</B>] [<B>-o</B> <I>option-name</I>] [<B>--</B>] [<B>-</B>] [<I>arg</I> ...]<DD>
<DT><B>set</B> [<B>+abefhkmnptuvxBCEHPT</B>] [<B>+o</B> <I>option-name</I>] [<B>--</B>] [<B>-</B>] [<I>arg</I> ...]<DD>
<DT><B>set -o</B><DD>
<DT><B>set +o</B><DD>
Without options, display the name and value of each shell variable
in a format that can be reused as input
@@ -12819,16 +12825,17 @@ Same as
If
<B>-o</B>
is supplied with no <I>option-name</I>, the values of the current options are
printed.
is supplied with no <I>option-name</I>,
<B>set</B> prints the current shell option settings.
If
<B>+o</B>
is supplied with no <I>option-name</I>, a series of
is supplied with no <I>option-name</I>,
<B>set</B> prints a series of
<B>set</B>
commands to recreate the current option settings is displayed on
the standard output.
commands to recreate the current option settings
on the standard output.
</DL>
<DT><B>-p</B>
@@ -15057,7 +15064,7 @@ There may be only one active coprocess at a time.
<HR>
<TABLE WIDTH=100%>
<TR>
<TH ALIGN=LEFT width=33%>GNU Bash 5.3<TH ALIGN=CENTER width=33%>2023 July 7<TH ALIGN=RIGHT width=33%>BASH(1)
<TH ALIGN=LEFT width=33%>GNU Bash 5.3<TH ALIGN=CENTER width=33%>2023 July 19<TH ALIGN=RIGHT width=33%>BASH(1)
</TR>
</TABLE>
<HR>
@@ -15163,7 +15170,7 @@ There may be only one active coprocess at a time.
<DT><A HREF="#lbDI">BUGS</A><DD>
</DL>
<HR>
This document was created by man2html from /usr/local/src/bash/bash-20230705/doc/bash.1.<BR>
Time: 07 July 2023 16:22:29 EDT
This document was created by man2html from /usr/local/src/bash/bash-20230719/doc/bash.1.<BR>
Time: 23 July 2023 18:17:35 EDT
</BODY>
</HTML>
BIN
View File
Binary file not shown.
+40 -40
View File
@@ -162,7 +162,7 @@
@xrdef{The Set Builtin-pg}{68}
@xrdef{The Shopt Builtin-title}{The Shopt Builtin}
@xrdef{The Shopt Builtin-snt}{Section@tie 4.3.2}
@xrdef{The Shopt Builtin-pg}{72}
@xrdef{The Shopt Builtin-pg}{73}
@xrdef{Special Builtins-title}{Special Builtins}
@xrdef{Special Builtins-snt}{Section@tie 4.4}
@xrdef{Special Builtins-pg}{79}
@@ -273,118 +273,118 @@
@xrdef{Conditional Init Constructs-pg}{133}
@xrdef{Sample Init File-title}{Sample Init File}
@xrdef{Sample Init File-snt}{Section@tie 8.3.3}
@xrdef{Sample Init File-pg}{134}
@xrdef{Sample Init File-pg}{135}
@xrdef{Bindable Readline Commands-title}{Bindable Readline Commands}
@xrdef{Bindable Readline Commands-snt}{Section@tie 8.4}
@xrdef{Commands For Moving-title}{Commands For Moving}
@xrdef{Commands For Moving-snt}{Section@tie 8.4.1}
@xrdef{Bindable Readline Commands-pg}{137}
@xrdef{Commands For Moving-pg}{137}
@xrdef{Bindable Readline Commands-pg}{138}
@xrdef{Commands For Moving-pg}{138}
@xrdef{Commands For History-title}{Commands For Manipulating The History}
@xrdef{Commands For History-snt}{Section@tie 8.4.2}
@xrdef{Commands For History-pg}{138}
@xrdef{Commands For History-pg}{139}
@xrdef{Commands For Text-title}{Commands For Changing Text}
@xrdef{Commands For Text-snt}{Section@tie 8.4.3}
@xrdef{Commands For Text-pg}{140}
@xrdef{Commands For Text-pg}{141}
@xrdef{Commands For Killing-title}{Killing And Yanking}
@xrdef{Commands For Killing-snt}{Section@tie 8.4.4}
@xrdef{Commands For Killing-pg}{141}
@xrdef{Commands For Killing-pg}{142}
@xrdef{Numeric Arguments-title}{Specifying Numeric Arguments}
@xrdef{Numeric Arguments-snt}{Section@tie 8.4.5}
@xrdef{Numeric Arguments-pg}{142}
@xrdef{Numeric Arguments-pg}{143}
@xrdef{Commands For Completion-title}{Letting Readline Type For You}
@xrdef{Commands For Completion-snt}{Section@tie 8.4.6}
@xrdef{Commands For Completion-pg}{143}
@xrdef{Commands For Completion-pg}{144}
@xrdef{Keyboard Macros-title}{Keyboard Macros}
@xrdef{Keyboard Macros-snt}{Section@tie 8.4.7}
@xrdef{Keyboard Macros-pg}{144}
@xrdef{Keyboard Macros-pg}{145}
@xrdef{Miscellaneous Commands-title}{Some Miscellaneous Commands}
@xrdef{Miscellaneous Commands-snt}{Section@tie 8.4.8}
@xrdef{Miscellaneous Commands-pg}{145}
@xrdef{Miscellaneous Commands-pg}{146}
@xrdef{Readline vi Mode-title}{Readline vi Mode}
@xrdef{Readline vi Mode-snt}{Section@tie 8.5}
@xrdef{Programmable Completion-title}{Programmable Completion}
@xrdef{Programmable Completion-snt}{Section@tie 8.6}
@xrdef{Readline vi Mode-pg}{147}
@xrdef{Programmable Completion-pg}{147}
@xrdef{Readline vi Mode-pg}{148}
@xrdef{Programmable Completion-pg}{148}
@xrdef{Programmable Completion Builtins-title}{Programmable Completion Builtins}
@xrdef{Programmable Completion Builtins-snt}{Section@tie 8.7}
@xrdef{Programmable Completion Builtins-pg}{150}
@xrdef{Programmable Completion Builtins-pg}{151}
@xrdef{A Programmable Completion Example-title}{A Programmable Completion Example}
@xrdef{A Programmable Completion Example-snt}{Section@tie 8.8}
@xrdef{A Programmable Completion Example-pg}{154}
@xrdef{A Programmable Completion Example-pg}{155}
@xrdef{Using History Interactively-title}{Using History Interactively}
@xrdef{Using History Interactively-snt}{Chapter@tie 9}
@xrdef{Bash History Facilities-title}{Bash History Facilities}
@xrdef{Bash History Facilities-snt}{Section@tie 9.1}
@xrdef{Bash History Builtins-title}{Bash History Builtins}
@xrdef{Bash History Builtins-snt}{Section@tie 9.2}
@xrdef{Using History Interactively-pg}{157}
@xrdef{Bash History Facilities-pg}{157}
@xrdef{Bash History Builtins-pg}{157}
@xrdef{Using History Interactively-pg}{158}
@xrdef{Bash History Facilities-pg}{158}
@xrdef{Bash History Builtins-pg}{158}
@xrdef{History Interaction-title}{History Expansion}
@xrdef{History Interaction-snt}{Section@tie 9.3}
@xrdef{History Interaction-pg}{159}
@xrdef{History Interaction-pg}{160}
@xrdef{Event Designators-title}{Event Designators}
@xrdef{Event Designators-snt}{Section@tie 9.3.1}
@xrdef{Event Designators-pg}{160}
@xrdef{Event Designators-pg}{161}
@xrdef{Word Designators-title}{Word Designators}
@xrdef{Word Designators-snt}{Section@tie 9.3.2}
@xrdef{Modifiers-title}{Modifiers}
@xrdef{Modifiers-snt}{Section@tie 9.3.3}
@xrdef{Word Designators-pg}{161}
@xrdef{Modifiers-pg}{161}
@xrdef{Word Designators-pg}{162}
@xrdef{Modifiers-pg}{162}
@xrdef{Installing Bash-title}{Installing Bash}
@xrdef{Installing Bash-snt}{Chapter@tie 10}
@xrdef{Basic Installation-title}{Basic Installation}
@xrdef{Basic Installation-snt}{Section@tie 10.1}
@xrdef{Installing Bash-pg}{163}
@xrdef{Basic Installation-pg}{163}
@xrdef{Installing Bash-pg}{164}
@xrdef{Basic Installation-pg}{164}
@xrdef{Compilers and Options-title}{Compilers and Options}
@xrdef{Compilers and Options-snt}{Section@tie 10.2}
@xrdef{Compiling For Multiple Architectures-title}{Compiling For Multiple Architectures}
@xrdef{Compiling For Multiple Architectures-snt}{Section@tie 10.3}
@xrdef{Installation Names-title}{Installation Names}
@xrdef{Installation Names-snt}{Section@tie 10.4}
@xrdef{Compilers and Options-pg}{164}
@xrdef{Compiling For Multiple Architectures-pg}{164}
@xrdef{Compilers and Options-pg}{165}
@xrdef{Compiling For Multiple Architectures-pg}{165}
@xrdef{Specifying the System Type-title}{Specifying the System Type}
@xrdef{Specifying the System Type-snt}{Section@tie 10.5}
@xrdef{Sharing Defaults-title}{Sharing Defaults}
@xrdef{Sharing Defaults-snt}{Section@tie 10.6}
@xrdef{Operation Controls-title}{Operation Controls}
@xrdef{Operation Controls-snt}{Section@tie 10.7}
@xrdef{Installation Names-pg}{165}
@xrdef{Specifying the System Type-pg}{165}
@xrdef{Sharing Defaults-pg}{165}
@xrdef{Installation Names-pg}{166}
@xrdef{Specifying the System Type-pg}{166}
@xrdef{Sharing Defaults-pg}{166}
@xrdef{Optional Features-title}{Optional Features}
@xrdef{Optional Features-snt}{Section@tie 10.8}
@xrdef{Operation Controls-pg}{166}
@xrdef{Optional Features-pg}{166}
@xrdef{Operation Controls-pg}{167}
@xrdef{Optional Features-pg}{167}
@xrdef{Reporting Bugs-title}{Reporting Bugs}
@xrdef{Reporting Bugs-snt}{Appendix@tie @char65{}}
@xrdef{Reporting Bugs-pg}{172}
@xrdef{Reporting Bugs-pg}{173}
@xrdef{Major Differences From The Bourne Shell-title}{Major Differences From The Bourne Shell}
@xrdef{Major Differences From The Bourne Shell-snt}{Appendix@tie @char66{}}
@xrdef{Major Differences From The Bourne Shell-pg}{173}
@xrdef{Major Differences From The Bourne Shell-pg}{174}
@xrdef{GNU Free Documentation License-title}{GNU Free Documentation License}
@xrdef{GNU Free Documentation License-snt}{Appendix@tie @char67{}}
@xrdef{GNU Free Documentation License-pg}{179}
@xrdef{GNU Free Documentation License-pg}{180}
@xrdef{Indexes-title}{Indexes}
@xrdef{Indexes-snt}{Appendix@tie @char68{}}
@xrdef{Builtin Index-title}{Index of Shell Builtin Commands}
@xrdef{Builtin Index-snt}{Section@tie @char68.1}
@xrdef{Indexes-pg}{187}
@xrdef{Builtin Index-pg}{187}
@xrdef{Indexes-pg}{188}
@xrdef{Builtin Index-pg}{188}
@xrdef{Reserved Word Index-title}{Index of Shell Reserved Words}
@xrdef{Reserved Word Index-snt}{Section@tie @char68.2}
@xrdef{Variable Index-title}{Parameter and Variable Index}
@xrdef{Variable Index-snt}{Section@tie @char68.3}
@xrdef{Reserved Word Index-pg}{188}
@xrdef{Variable Index-pg}{189}
@xrdef{Reserved Word Index-pg}{189}
@xrdef{Variable Index-pg}{190}
@xrdef{Function Index-title}{Function Index}
@xrdef{Function Index-snt}{Section@tie @char68.4}
@xrdef{Function Index-pg}{191}
@xrdef{Function Index-pg}{192}
@xrdef{Concept Index-title}{Concept Index}
@xrdef{Concept Index-snt}{Section@tie @char68.5}
@xrdef{Concept Index-pg}{193}
@xrdef{Concept Index-pg}{194}
+13 -13
View File
@@ -20,22 +20,22 @@
\entry{trap}{55}{\code {trap}}
\entry{true}{56}{\code {true}}
\entry{umask}{56}{\code {umask}}
\entry{unset}{56}{\code {unset}}
\entry{unset}{57}{\code {unset}}
\entry{alias}{57}{\code {alias}}
\entry{bind}{57}{\code {bind}}
\entry{builtin}{58}{\code {builtin}}
\entry{caller}{58}{\code {caller}}
\entry{caller}{59}{\code {caller}}
\entry{command}{59}{\code {command}}
\entry{declare}{59}{\code {declare}}
\entry{echo}{60}{\code {echo}}
\entry{enable}{61}{\code {enable}}
\entry{echo}{61}{\code {echo}}
\entry{enable}{62}{\code {enable}}
\entry{help}{62}{\code {help}}
\entry{let}{62}{\code {let}}
\entry{local}{62}{\code {local}}
\entry{local}{63}{\code {local}}
\entry{logout}{63}{\code {logout}}
\entry{mapfile}{63}{\code {mapfile}}
\entry{printf}{63}{\code {printf}}
\entry{read}{64}{\code {read}}
\entry{printf}{64}{\code {printf}}
\entry{read}{65}{\code {read}}
\entry{readarray}{66}{\code {readarray}}
\entry{source}{66}{\code {source}}
\entry{type}{66}{\code {type}}
@@ -43,7 +43,7 @@
\entry{ulimit}{67}{\code {ulimit}}
\entry{unalias}{68}{\code {unalias}}
\entry{set}{68}{\code {set}}
\entry{shopt}{72}{\code {shopt}}
\entry{shopt}{73}{\code {shopt}}
\entry{dirs}{105}{\code {dirs}}
\entry{popd}{105}{\code {popd}}
\entry{pushd}{105}{\code {pushd}}
@@ -54,8 +54,8 @@
\entry{wait}{119}{\code {wait}}
\entry{disown}{120}{\code {disown}}
\entry{suspend}{120}{\code {suspend}}
\entry{compgen}{150}{\code {compgen}}
\entry{complete}{150}{\code {complete}}
\entry{compopt}{153}{\code {compopt}}
\entry{fc}{158}{\code {fc}}
\entry{history}{158}{\code {history}}
\entry{compgen}{151}{\code {compgen}}
\entry{complete}{151}{\code {complete}}
\entry{compopt}{154}{\code {compopt}}
\entry{fc}{159}{\code {fc}}
\entry{history}{159}{\code {history}}
+13 -13
View File
@@ -12,58 +12,58 @@
\entry{\code {break}}{50}
\entry{\code {builtin}}{58}
\initial {C}
\entry{\code {caller}}{58}
\entry{\code {caller}}{59}
\entry{\code {cd}}{50}
\entry{\code {command}}{59}
\entry{\code {compgen}}{150}
\entry{\code {complete}}{150}
\entry{\code {compopt}}{153}
\entry{\code {compgen}}{151}
\entry{\code {complete}}{151}
\entry{\code {compopt}}{154}
\entry{\code {continue}}{50}
\initial {D}
\entry{\code {declare}}{59}
\entry{\code {dirs}}{105}
\entry{\code {disown}}{120}
\initial {E}
\entry{\code {echo}}{60}
\entry{\code {enable}}{61}
\entry{\code {echo}}{61}
\entry{\code {enable}}{62}
\entry{\code {eval}}{50}
\entry{\code {exec}}{51}
\entry{\code {exit}}{51}
\entry{\code {export}}{51}
\initial {F}
\entry{\code {false}}{51}
\entry{\code {fc}}{158}
\entry{\code {fc}}{159}
\entry{\code {fg}}{118}
\initial {G}
\entry{\code {getopts}}{51}
\initial {H}
\entry{\code {hash}}{52}
\entry{\code {help}}{62}
\entry{\code {history}}{158}
\entry{\code {history}}{159}
\initial {J}
\entry{\code {jobs}}{118}
\initial {K}
\entry{\code {kill}}{119}
\initial {L}
\entry{\code {let}}{62}
\entry{\code {local}}{62}
\entry{\code {local}}{63}
\entry{\code {logout}}{63}
\initial {M}
\entry{\code {mapfile}}{63}
\initial {P}
\entry{\code {popd}}{105}
\entry{\code {printf}}{63}
\entry{\code {printf}}{64}
\entry{\code {pushd}}{105}
\entry{\code {pwd}}{52}
\initial {R}
\entry{\code {read}}{64}
\entry{\code {read}}{65}
\entry{\code {readarray}}{66}
\entry{\code {readonly}}{53}
\entry{\code {return}}{53}
\initial {S}
\entry{\code {set}}{68}
\entry{\code {shift}}{53}
\entry{\code {shopt}}{72}
\entry{\code {shopt}}{73}
\entry{\code {source}}{66}
\entry{\code {suspend}}{120}
\initial {T}
@@ -77,6 +77,6 @@
\entry{\code {ulimit}}{67}
\entry{\code {umask}}{56}
\entry{\code {unalias}}{68}
\entry{\code {unset}}{56}
\entry{\code {unset}}{57}
\initial {W}
\entry{\code {wait}}{119}
+13 -13
View File
@@ -114,16 +114,16 @@
\entry{kill ring}{123}{kill ring}
\entry{initialization file, readline}{124}{initialization file, readline}
\entry{variables, readline}{125}{variables, readline}
\entry{programmable completion}{147}{programmable completion}
\entry{completion builtins}{150}{completion builtins}
\entry{History, how to use}{156}{History, how to use}
\entry{command history}{157}{command history}
\entry{history list}{157}{history list}
\entry{history builtins}{157}{history builtins}
\entry{history expansion}{159}{history expansion}
\entry{event designators}{160}{event designators}
\entry{history events}{160}{history events}
\entry{installation}{163}{installation}
\entry{configuration}{163}{configuration}
\entry{Bash installation}{163}{Bash installation}
\entry{Bash configuration}{163}{Bash configuration}
\entry{programmable completion}{148}{programmable completion}
\entry{completion builtins}{151}{completion builtins}
\entry{History, how to use}{157}{History, how to use}
\entry{command history}{158}{command history}
\entry{history list}{158}{history list}
\entry{history builtins}{158}{history builtins}
\entry{history expansion}{160}{history expansion}
\entry{event designators}{161}{event designators}
\entry{history events}{161}{history events}
\entry{installation}{164}{installation}
\entry{configuration}{164}{configuration}
\entry{Bash installation}{164}{Bash installation}
\entry{Bash configuration}{164}{Bash configuration}
+13 -13
View File
@@ -7,8 +7,8 @@
\entry{arrays}{102}
\initial {B}
\entry{background}{117}
\entry{Bash configuration}{163}
\entry{Bash installation}{163}
\entry{Bash configuration}{164}
\entry{Bash installation}{164}
\entry{binary arithmetic operators}{100}
\entry{bitwise arithmetic operators}{100}
\entry{Bourne shell}{5}
@@ -18,7 +18,7 @@
\entry{command editing}{122}
\entry{command execution}{43}
\entry{command expansion}{43}
\entry{command history}{157}
\entry{command history}{158}
\entry{command search}{43}
\entry{command substitution}{34}
\entry{command timing}{10}
@@ -33,9 +33,9 @@
\entry{comments, shell}{9}
\entry{Compatibility Level}{113}
\entry{Compatibility Mode}{113}
\entry{completion builtins}{150}
\entry{completion builtins}{151}
\entry{conditional arithmetic operator}{100}
\entry{configuration}{163}
\entry{configuration}{164}
\entry{control operator}{3}
\entry{coprocess}{18}
\initial {D}
@@ -44,7 +44,7 @@
\entry{editing command lines}{122}
\entry{environment}{45}
\entry{evaluation, arithmetic}{100}
\entry{event designators}{160}
\entry{event designators}{161}
\entry{execution environment}{44}
\entry{exit status}{3, 45}
\entry{expansion}{24}
@@ -63,15 +63,15 @@
\entry{foreground}{117}
\entry{functions, shell}{19}
\initial {H}
\entry{history builtins}{157}
\entry{history events}{160}
\entry{history expansion}{159}
\entry{history list}{157}
\entry{History, how to use}{156}
\entry{history builtins}{158}
\entry{history events}{161}
\entry{history expansion}{160}
\entry{history list}{158}
\entry{History, how to use}{157}
\initial {I}
\entry{identifier}{3}
\entry{initialization file, readline}{124}
\entry{installation}{163}
\entry{installation}{164}
\entry{interaction, readline}{121}
\entry{interactive shell}{95, 96}
\entry{internationalization}{7}
@@ -108,7 +108,7 @@
\entry{process group}{3}
\entry{process group ID}{3}
\entry{process substitution}{35}
\entry{programmable completion}{147}
\entry{programmable completion}{148}
\entry{prompting}{106}
\initial {Q}
\entry{quoting}{6}
BIN
View File
Binary file not shown.
+113 -113
View File
@@ -1,114 +1,114 @@
\entry{beginning-of-line (C-a)}{137}{\code {beginning-of-line (C-a)}}
\entry{end-of-line (C-e)}{137}{\code {end-of-line (C-e)}}
\entry{forward-char (C-f)}{137}{\code {forward-char (C-f)}}
\entry{backward-char (C-b)}{137}{\code {backward-char (C-b)}}
\entry{forward-word (M-f)}{137}{\code {forward-word (M-f)}}
\entry{backward-word (M-b)}{137}{\code {backward-word (M-b)}}
\entry{shell-forward-word (M-C-f)}{137}{\code {shell-forward-word (M-C-f)}}
\entry{shell-backward-word (M-C-b)}{137}{\code {shell-backward-word (M-C-b)}}
\entry{previous-screen-line ()}{137}{\code {previous-screen-line ()}}
\entry{next-screen-line ()}{138}{\code {next-screen-line ()}}
\entry{clear-display (M-C-l)}{138}{\code {clear-display (M-C-l)}}
\entry{clear-screen (C-l)}{138}{\code {clear-screen (C-l)}}
\entry{redraw-current-line ()}{138}{\code {redraw-current-line ()}}
\entry{accept-line (Newline or Return)}{138}{\code {accept-line (Newline or Return)}}
\entry{previous-history (C-p)}{138}{\code {previous-history (C-p)}}
\entry{next-history (C-n)}{138}{\code {next-history (C-n)}}
\entry{beginning-of-history (M-<)}{138}{\code {beginning-of-history (M-<)}}
\entry{end-of-history (M->)}{138}{\code {end-of-history (M->)}}
\entry{reverse-search-history (C-r)}{138}{\code {reverse-search-history (C-r)}}
\entry{forward-search-history (C-s)}{138}{\code {forward-search-history (C-s)}}
\entry{non-incremental-reverse-search-history (M-p)}{138}{\code {non-incremental-reverse-search-history (M-p)}}
\entry{non-incremental-forward-search-history (M-n)}{139}{\code {non-incremental-forward-search-history (M-n)}}
\entry{history-search-forward ()}{139}{\code {history-search-forward ()}}
\entry{history-search-backward ()}{139}{\code {history-search-backward ()}}
\entry{history-substring-search-forward ()}{139}{\code {history-substring-search-forward ()}}
\entry{history-substring-search-backward ()}{139}{\code {history-substring-search-backward ()}}
\entry{yank-nth-arg (M-C-y)}{139}{\code {yank-nth-arg (M-C-y)}}
\entry{yank-last-arg (M-. or M-_)}{139}{\code {yank-last-arg (M-. or M-_)}}
\entry{operate-and-get-next (C-o)}{139}{\code {operate-and-get-next (C-o)}}
\entry{fetch-history ()}{140}{\code {fetch-history ()}}
\entry{end-of-file (usually C-d)}{140}{\code {\i {end-of-file} (usually C-d)}}
\entry{delete-char (C-d)}{140}{\code {delete-char (C-d)}}
\entry{backward-delete-char (Rubout)}{140}{\code {backward-delete-char (Rubout)}}
\entry{forward-backward-delete-char ()}{140}{\code {forward-backward-delete-char ()}}
\entry{quoted-insert (C-q or C-v)}{140}{\code {quoted-insert (C-q or C-v)}}
\entry{self-insert (a, b, A, 1, !, ...{})}{140}{\code {self-insert (a, b, A, 1, !, \dots {})}}
\entry{bracketed-paste-begin ()}{140}{\code {bracketed-paste-begin ()}}
\entry{transpose-chars (C-t)}{140}{\code {transpose-chars (C-t)}}
\entry{transpose-words (M-t)}{141}{\code {transpose-words (M-t)}}
\entry{upcase-word (M-u)}{141}{\code {upcase-word (M-u)}}
\entry{downcase-word (M-l)}{141}{\code {downcase-word (M-l)}}
\entry{capitalize-word (M-c)}{141}{\code {capitalize-word (M-c)}}
\entry{overwrite-mode ()}{141}{\code {overwrite-mode ()}}
\entry{kill-line (C-k)}{141}{\code {kill-line (C-k)}}
\entry{backward-kill-line (C-x Rubout)}{141}{\code {backward-kill-line (C-x Rubout)}}
\entry{unix-line-discard (C-u)}{141}{\code {unix-line-discard (C-u)}}
\entry{kill-whole-line ()}{141}{\code {kill-whole-line ()}}
\entry{kill-word (M-d)}{141}{\code {kill-word (M-d)}}
\entry{backward-kill-word (M-DEL)}{141}{\code {backward-kill-word (M-\key {DEL})}}
\entry{shell-kill-word (M-C-d)}{142}{\code {shell-kill-word (M-C-d)}}
\entry{shell-backward-kill-word ()}{142}{\code {shell-backward-kill-word ()}}
\entry{beginning-of-line (C-a)}{138}{\code {beginning-of-line (C-a)}}
\entry{end-of-line (C-e)}{138}{\code {end-of-line (C-e)}}
\entry{forward-char (C-f)}{138}{\code {forward-char (C-f)}}
\entry{backward-char (C-b)}{138}{\code {backward-char (C-b)}}
\entry{forward-word (M-f)}{138}{\code {forward-word (M-f)}}
\entry{backward-word (M-b)}{138}{\code {backward-word (M-b)}}
\entry{shell-forward-word (M-C-f)}{138}{\code {shell-forward-word (M-C-f)}}
\entry{shell-backward-word (M-C-b)}{138}{\code {shell-backward-word (M-C-b)}}
\entry{previous-screen-line ()}{138}{\code {previous-screen-line ()}}
\entry{next-screen-line ()}{139}{\code {next-screen-line ()}}
\entry{clear-display (M-C-l)}{139}{\code {clear-display (M-C-l)}}
\entry{clear-screen (C-l)}{139}{\code {clear-screen (C-l)}}
\entry{redraw-current-line ()}{139}{\code {redraw-current-line ()}}
\entry{accept-line (Newline or Return)}{139}{\code {accept-line (Newline or Return)}}
\entry{previous-history (C-p)}{139}{\code {previous-history (C-p)}}
\entry{next-history (C-n)}{139}{\code {next-history (C-n)}}
\entry{beginning-of-history (M-<)}{139}{\code {beginning-of-history (M-<)}}
\entry{end-of-history (M->)}{139}{\code {end-of-history (M->)}}
\entry{reverse-search-history (C-r)}{139}{\code {reverse-search-history (C-r)}}
\entry{forward-search-history (C-s)}{139}{\code {forward-search-history (C-s)}}
\entry{non-incremental-reverse-search-history (M-p)}{139}{\code {non-incremental-reverse-search-history (M-p)}}
\entry{non-incremental-forward-search-history (M-n)}{140}{\code {non-incremental-forward-search-history (M-n)}}
\entry{history-search-forward ()}{140}{\code {history-search-forward ()}}
\entry{history-search-backward ()}{140}{\code {history-search-backward ()}}
\entry{history-substring-search-forward ()}{140}{\code {history-substring-search-forward ()}}
\entry{history-substring-search-backward ()}{140}{\code {history-substring-search-backward ()}}
\entry{yank-nth-arg (M-C-y)}{140}{\code {yank-nth-arg (M-C-y)}}
\entry{yank-last-arg (M-. or M-_)}{140}{\code {yank-last-arg (M-. or M-_)}}
\entry{operate-and-get-next (C-o)}{140}{\code {operate-and-get-next (C-o)}}
\entry{fetch-history ()}{141}{\code {fetch-history ()}}
\entry{end-of-file (usually C-d)}{141}{\code {\i {end-of-file} (usually C-d)}}
\entry{delete-char (C-d)}{141}{\code {delete-char (C-d)}}
\entry{backward-delete-char (Rubout)}{141}{\code {backward-delete-char (Rubout)}}
\entry{forward-backward-delete-char ()}{141}{\code {forward-backward-delete-char ()}}
\entry{quoted-insert (C-q or C-v)}{141}{\code {quoted-insert (C-q or C-v)}}
\entry{self-insert (a, b, A, 1, !, ...{})}{141}{\code {self-insert (a, b, A, 1, !, \dots {})}}
\entry{bracketed-paste-begin ()}{141}{\code {bracketed-paste-begin ()}}
\entry{transpose-chars (C-t)}{141}{\code {transpose-chars (C-t)}}
\entry{transpose-words (M-t)}{142}{\code {transpose-words (M-t)}}
\entry{shell-transpose-words (M-C-t)}{142}{\code {shell-transpose-words (M-C-t)}}
\entry{unix-word-rubout (C-w)}{142}{\code {unix-word-rubout (C-w)}}
\entry{unix-filename-rubout ()}{142}{\code {unix-filename-rubout ()}}
\entry{delete-horizontal-space ()}{142}{\code {delete-horizontal-space ()}}
\entry{kill-region ()}{142}{\code {kill-region ()}}
\entry{copy-region-as-kill ()}{142}{\code {copy-region-as-kill ()}}
\entry{copy-backward-word ()}{142}{\code {copy-backward-word ()}}
\entry{copy-forward-word ()}{142}{\code {copy-forward-word ()}}
\entry{yank (C-y)}{142}{\code {yank (C-y)}}
\entry{yank-pop (M-y)}{142}{\code {yank-pop (M-y)}}
\entry{digit-argument (M-0, M-1, ...{} M--)}{142}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
\entry{universal-argument ()}{143}{\code {universal-argument ()}}
\entry{complete (TAB)}{143}{\code {complete (\key {TAB})}}
\entry{possible-completions (M-?)}{143}{\code {possible-completions (M-?)}}
\entry{insert-completions (M-*)}{143}{\code {insert-completions (M-*)}}
\entry{menu-complete ()}{143}{\code {menu-complete ()}}
\entry{menu-complete-backward ()}{143}{\code {menu-complete-backward ()}}
\entry{delete-char-or-list ()}{143}{\code {delete-char-or-list ()}}
\entry{complete-filename (M-/)}{143}{\code {complete-filename (M-/)}}
\entry{possible-filename-completions (C-x /)}{144}{\code {possible-filename-completions (C-x /)}}
\entry{complete-username (M-~)}{144}{\code {complete-username (M-~)}}
\entry{possible-username-completions (C-x ~)}{144}{\code {possible-username-completions (C-x ~)}}
\entry{complete-variable (M-$)}{144}{\code {complete-variable (M-$)}}
\entry{possible-variable-completions (C-x $)}{144}{\code {possible-variable-completions (C-x $)}}
\entry{complete-hostname (M-@)}{144}{\code {complete-hostname (M-@)}}
\entry{possible-hostname-completions (C-x @)}{144}{\code {possible-hostname-completions (C-x @)}}
\entry{complete-command (M-!)}{144}{\code {complete-command (M-!)}}
\entry{possible-command-completions (C-x !)}{144}{\code {possible-command-completions (C-x !)}}
\entry{dynamic-complete-history (M-TAB)}{144}{\code {dynamic-complete-history (M-\key {TAB})}}
\entry{dabbrev-expand ()}{144}{\code {dabbrev-expand ()}}
\entry{complete-into-braces (M-{\indexlbrace })}{144}{\code {complete-into-braces (M-{\tt \char 123})}}
\entry{start-kbd-macro (C-x ()}{144}{\code {start-kbd-macro (C-x ()}}
\entry{end-kbd-macro (C-x ))}{144}{\code {end-kbd-macro (C-x ))}}
\entry{call-last-kbd-macro (C-x e)}{145}{\code {call-last-kbd-macro (C-x e)}}
\entry{print-last-kbd-macro ()}{145}{\code {print-last-kbd-macro ()}}
\entry{re-read-init-file (C-x C-r)}{145}{\code {re-read-init-file (C-x C-r)}}
\entry{abort (C-g)}{145}{\code {abort (C-g)}}
\entry{do-lowercase-version (M-A, M-B, M-x, ...{})}{145}{\code {do-lowercase-version (M-A, M-B, M-\var {x}, \dots {})}}
\entry{prefix-meta (ESC)}{145}{\code {prefix-meta (\key {ESC})}}
\entry{undo (C-_ or C-x C-u)}{145}{\code {undo (C-_ or C-x C-u)}}
\entry{revert-line (M-r)}{145}{\code {revert-line (M-r)}}
\entry{tilde-expand (M-&)}{145}{\code {tilde-expand (M-&)}}
\entry{set-mark (C-@)}{145}{\code {set-mark (C-@)}}
\entry{exchange-point-and-mark (C-x C-x)}{145}{\code {exchange-point-and-mark (C-x C-x)}}
\entry{character-search (C-])}{145}{\code {character-search (C-])}}
\entry{character-search-backward (M-C-])}{145}{\code {character-search-backward (M-C-])}}
\entry{skip-csi-sequence ()}{145}{\code {skip-csi-sequence ()}}
\entry{insert-comment (M-#)}{146}{\code {insert-comment (M-#)}}
\entry{dump-functions ()}{146}{\code {dump-functions ()}}
\entry{dump-variables ()}{146}{\code {dump-variables ()}}
\entry{dump-macros ()}{146}{\code {dump-macros ()}}
\entry{spell-correct-word (C-x s)}{146}{\code {spell-correct-word (C-x s)}}
\entry{glob-complete-word (M-g)}{146}{\code {glob-complete-word (M-g)}}
\entry{glob-expand-word (C-x *)}{146}{\code {glob-expand-word (C-x *)}}
\entry{glob-list-expansions (C-x g)}{146}{\code {glob-list-expansions (C-x g)}}
\entry{display-shell-version (C-x C-v)}{147}{\code {display-shell-version (C-x C-v)}}
\entry{shell-expand-line (M-C-e)}{147}{\code {shell-expand-line (M-C-e)}}
\entry{history-expand-line (M-^)}{147}{\code {history-expand-line (M-^)}}
\entry{magic-space ()}{147}{\code {magic-space ()}}
\entry{alias-expand-line ()}{147}{\code {alias-expand-line ()}}
\entry{history-and-alias-expand-line ()}{147}{\code {history-and-alias-expand-line ()}}
\entry{insert-last-argument (M-. or M-_)}{147}{\code {insert-last-argument (M-. or M-_)}}
\entry{edit-and-execute-command (C-x C-e)}{147}{\code {edit-and-execute-command (C-x C-e)}}
\entry{upcase-word (M-u)}{142}{\code {upcase-word (M-u)}}
\entry{downcase-word (M-l)}{142}{\code {downcase-word (M-l)}}
\entry{capitalize-word (M-c)}{142}{\code {capitalize-word (M-c)}}
\entry{overwrite-mode ()}{142}{\code {overwrite-mode ()}}
\entry{kill-line (C-k)}{142}{\code {kill-line (C-k)}}
\entry{backward-kill-line (C-x Rubout)}{142}{\code {backward-kill-line (C-x Rubout)}}
\entry{unix-line-discard (C-u)}{142}{\code {unix-line-discard (C-u)}}
\entry{kill-whole-line ()}{142}{\code {kill-whole-line ()}}
\entry{kill-word (M-d)}{143}{\code {kill-word (M-d)}}
\entry{backward-kill-word (M-DEL)}{143}{\code {backward-kill-word (M-\key {DEL})}}
\entry{shell-kill-word (M-C-d)}{143}{\code {shell-kill-word (M-C-d)}}
\entry{shell-backward-kill-word ()}{143}{\code {shell-backward-kill-word ()}}
\entry{unix-word-rubout (C-w)}{143}{\code {unix-word-rubout (C-w)}}
\entry{unix-filename-rubout ()}{143}{\code {unix-filename-rubout ()}}
\entry{delete-horizontal-space ()}{143}{\code {delete-horizontal-space ()}}
\entry{kill-region ()}{143}{\code {kill-region ()}}
\entry{copy-region-as-kill ()}{143}{\code {copy-region-as-kill ()}}
\entry{copy-backward-word ()}{143}{\code {copy-backward-word ()}}
\entry{copy-forward-word ()}{143}{\code {copy-forward-word ()}}
\entry{yank (C-y)}{143}{\code {yank (C-y)}}
\entry{yank-pop (M-y)}{143}{\code {yank-pop (M-y)}}
\entry{digit-argument (M-0, M-1, ...{} M--)}{143}{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}
\entry{universal-argument ()}{144}{\code {universal-argument ()}}
\entry{complete (TAB)}{144}{\code {complete (\key {TAB})}}
\entry{possible-completions (M-?)}{144}{\code {possible-completions (M-?)}}
\entry{insert-completions (M-*)}{144}{\code {insert-completions (M-*)}}
\entry{menu-complete ()}{144}{\code {menu-complete ()}}
\entry{menu-complete-backward ()}{144}{\code {menu-complete-backward ()}}
\entry{delete-char-or-list ()}{144}{\code {delete-char-or-list ()}}
\entry{complete-filename (M-/)}{144}{\code {complete-filename (M-/)}}
\entry{possible-filename-completions (C-x /)}{145}{\code {possible-filename-completions (C-x /)}}
\entry{complete-username (M-~)}{145}{\code {complete-username (M-~)}}
\entry{possible-username-completions (C-x ~)}{145}{\code {possible-username-completions (C-x ~)}}
\entry{complete-variable (M-$)}{145}{\code {complete-variable (M-$)}}
\entry{possible-variable-completions (C-x $)}{145}{\code {possible-variable-completions (C-x $)}}
\entry{complete-hostname (M-@)}{145}{\code {complete-hostname (M-@)}}
\entry{possible-hostname-completions (C-x @)}{145}{\code {possible-hostname-completions (C-x @)}}
\entry{complete-command (M-!)}{145}{\code {complete-command (M-!)}}
\entry{possible-command-completions (C-x !)}{145}{\code {possible-command-completions (C-x !)}}
\entry{dynamic-complete-history (M-TAB)}{145}{\code {dynamic-complete-history (M-\key {TAB})}}
\entry{dabbrev-expand ()}{145}{\code {dabbrev-expand ()}}
\entry{complete-into-braces (M-{\indexlbrace })}{145}{\code {complete-into-braces (M-{\tt \char 123})}}
\entry{start-kbd-macro (C-x ()}{145}{\code {start-kbd-macro (C-x ()}}
\entry{end-kbd-macro (C-x ))}{145}{\code {end-kbd-macro (C-x ))}}
\entry{call-last-kbd-macro (C-x e)}{146}{\code {call-last-kbd-macro (C-x e)}}
\entry{print-last-kbd-macro ()}{146}{\code {print-last-kbd-macro ()}}
\entry{re-read-init-file (C-x C-r)}{146}{\code {re-read-init-file (C-x C-r)}}
\entry{abort (C-g)}{146}{\code {abort (C-g)}}
\entry{do-lowercase-version (M-A, M-B, M-x, ...{})}{146}{\code {do-lowercase-version (M-A, M-B, M-\var {x}, \dots {})}}
\entry{prefix-meta (ESC)}{146}{\code {prefix-meta (\key {ESC})}}
\entry{undo (C-_ or C-x C-u)}{146}{\code {undo (C-_ or C-x C-u)}}
\entry{revert-line (M-r)}{146}{\code {revert-line (M-r)}}
\entry{tilde-expand (M-&)}{146}{\code {tilde-expand (M-&)}}
\entry{set-mark (C-@)}{146}{\code {set-mark (C-@)}}
\entry{exchange-point-and-mark (C-x C-x)}{146}{\code {exchange-point-and-mark (C-x C-x)}}
\entry{character-search (C-])}{146}{\code {character-search (C-])}}
\entry{character-search-backward (M-C-])}{146}{\code {character-search-backward (M-C-])}}
\entry{skip-csi-sequence ()}{146}{\code {skip-csi-sequence ()}}
\entry{insert-comment (M-#)}{147}{\code {insert-comment (M-#)}}
\entry{dump-functions ()}{147}{\code {dump-functions ()}}
\entry{dump-variables ()}{147}{\code {dump-variables ()}}
\entry{dump-macros ()}{147}{\code {dump-macros ()}}
\entry{spell-correct-word (C-x s)}{147}{\code {spell-correct-word (C-x s)}}
\entry{glob-complete-word (M-g)}{147}{\code {glob-complete-word (M-g)}}
\entry{glob-expand-word (C-x *)}{147}{\code {glob-expand-word (C-x *)}}
\entry{glob-list-expansions (C-x g)}{147}{\code {glob-list-expansions (C-x g)}}
\entry{display-shell-version (C-x C-v)}{148}{\code {display-shell-version (C-x C-v)}}
\entry{shell-expand-line (M-C-e)}{148}{\code {shell-expand-line (M-C-e)}}
\entry{history-expand-line (M-^)}{148}{\code {history-expand-line (M-^)}}
\entry{magic-space ()}{148}{\code {magic-space ()}}
\entry{alias-expand-line ()}{148}{\code {alias-expand-line ()}}
\entry{history-and-alias-expand-line ()}{148}{\code {history-and-alias-expand-line ()}}
\entry{insert-last-argument (M-. or M-_)}{148}{\code {insert-last-argument (M-. or M-_)}}
\entry{edit-and-execute-command (C-x C-e)}{148}{\code {edit-and-execute-command (C-x C-e)}}
+113 -113
View File
@@ -1,134 +1,134 @@
\initial {A}
\entry{\code {abort (C-g)}}{145}
\entry{\code {accept-line (Newline or Return)}}{138}
\entry{\code {alias-expand-line ()}}{147}
\entry{\code {abort (C-g)}}{146}
\entry{\code {accept-line (Newline or Return)}}{139}
\entry{\code {alias-expand-line ()}}{148}
\initial {B}
\entry{\code {backward-char (C-b)}}{137}
\entry{\code {backward-delete-char (Rubout)}}{140}
\entry{\code {backward-kill-line (C-x Rubout)}}{141}
\entry{\code {backward-kill-word (M-\key {DEL})}}{141}
\entry{\code {backward-word (M-b)}}{137}
\entry{\code {beginning-of-history (M-<)}}{138}
\entry{\code {beginning-of-line (C-a)}}{137}
\entry{\code {bracketed-paste-begin ()}}{140}
\entry{\code {backward-char (C-b)}}{138}
\entry{\code {backward-delete-char (Rubout)}}{141}
\entry{\code {backward-kill-line (C-x Rubout)}}{142}
\entry{\code {backward-kill-word (M-\key {DEL})}}{143}
\entry{\code {backward-word (M-b)}}{138}
\entry{\code {beginning-of-history (M-<)}}{139}
\entry{\code {beginning-of-line (C-a)}}{138}
\entry{\code {bracketed-paste-begin ()}}{141}
\initial {C}
\entry{\code {call-last-kbd-macro (C-x e)}}{145}
\entry{\code {capitalize-word (M-c)}}{141}
\entry{\code {character-search (C-])}}{145}
\entry{\code {character-search-backward (M-C-])}}{145}
\entry{\code {clear-display (M-C-l)}}{138}
\entry{\code {clear-screen (C-l)}}{138}
\entry{\code {complete (\key {TAB})}}{143}
\entry{\code {complete-command (M-!)}}{144}
\entry{\code {complete-filename (M-/)}}{143}
\entry{\code {complete-hostname (M-@)}}{144}
\entry{\code {complete-into-braces (M-{\tt \char 123})}}{144}
\entry{\code {complete-username (M-~)}}{144}
\entry{\code {complete-variable (M-$)}}{144}
\entry{\code {copy-backward-word ()}}{142}
\entry{\code {copy-forward-word ()}}{142}
\entry{\code {copy-region-as-kill ()}}{142}
\entry{\code {call-last-kbd-macro (C-x e)}}{146}
\entry{\code {capitalize-word (M-c)}}{142}
\entry{\code {character-search (C-])}}{146}
\entry{\code {character-search-backward (M-C-])}}{146}
\entry{\code {clear-display (M-C-l)}}{139}
\entry{\code {clear-screen (C-l)}}{139}
\entry{\code {complete (\key {TAB})}}{144}
\entry{\code {complete-command (M-!)}}{145}
\entry{\code {complete-filename (M-/)}}{144}
\entry{\code {complete-hostname (M-@)}}{145}
\entry{\code {complete-into-braces (M-{\tt \char 123})}}{145}
\entry{\code {complete-username (M-~)}}{145}
\entry{\code {complete-variable (M-$)}}{145}
\entry{\code {copy-backward-word ()}}{143}
\entry{\code {copy-forward-word ()}}{143}
\entry{\code {copy-region-as-kill ()}}{143}
\initial {D}
\entry{\code {dabbrev-expand ()}}{144}
\entry{\code {delete-char (C-d)}}{140}
\entry{\code {delete-char-or-list ()}}{143}
\entry{\code {delete-horizontal-space ()}}{142}
\entry{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{142}
\entry{\code {display-shell-version (C-x C-v)}}{147}
\entry{\code {do-lowercase-version (M-A, M-B, M-\var {x}, \dots {})}}{145}
\entry{\code {downcase-word (M-l)}}{141}
\entry{\code {dump-functions ()}}{146}
\entry{\code {dump-macros ()}}{146}
\entry{\code {dump-variables ()}}{146}
\entry{\code {dynamic-complete-history (M-\key {TAB})}}{144}
\entry{\code {dabbrev-expand ()}}{145}
\entry{\code {delete-char (C-d)}}{141}
\entry{\code {delete-char-or-list ()}}{144}
\entry{\code {delete-horizontal-space ()}}{143}
\entry{\code {digit-argument (\kbd {M-0}, \kbd {M-1}, \dots {} \kbd {M--})}}{143}
\entry{\code {display-shell-version (C-x C-v)}}{148}
\entry{\code {do-lowercase-version (M-A, M-B, M-\var {x}, \dots {})}}{146}
\entry{\code {downcase-word (M-l)}}{142}
\entry{\code {dump-functions ()}}{147}
\entry{\code {dump-macros ()}}{147}
\entry{\code {dump-variables ()}}{147}
\entry{\code {dynamic-complete-history (M-\key {TAB})}}{145}
\initial {E}
\entry{\code {edit-and-execute-command (C-x C-e)}}{147}
\entry{\code {end-kbd-macro (C-x ))}}{144}
\entry{\code {\i {end-of-file} (usually C-d)}}{140}
\entry{\code {end-of-history (M->)}}{138}
\entry{\code {end-of-line (C-e)}}{137}
\entry{\code {exchange-point-and-mark (C-x C-x)}}{145}
\entry{\code {edit-and-execute-command (C-x C-e)}}{148}
\entry{\code {end-kbd-macro (C-x ))}}{145}
\entry{\code {\i {end-of-file} (usually C-d)}}{141}
\entry{\code {end-of-history (M->)}}{139}
\entry{\code {end-of-line (C-e)}}{138}
\entry{\code {exchange-point-and-mark (C-x C-x)}}{146}
\initial {F}
\entry{\code {fetch-history ()}}{140}
\entry{\code {forward-backward-delete-char ()}}{140}
\entry{\code {forward-char (C-f)}}{137}
\entry{\code {forward-search-history (C-s)}}{138}
\entry{\code {forward-word (M-f)}}{137}
\entry{\code {fetch-history ()}}{141}
\entry{\code {forward-backward-delete-char ()}}{141}
\entry{\code {forward-char (C-f)}}{138}
\entry{\code {forward-search-history (C-s)}}{139}
\entry{\code {forward-word (M-f)}}{138}
\initial {G}
\entry{\code {glob-complete-word (M-g)}}{146}
\entry{\code {glob-expand-word (C-x *)}}{146}
\entry{\code {glob-list-expansions (C-x g)}}{146}
\entry{\code {glob-complete-word (M-g)}}{147}
\entry{\code {glob-expand-word (C-x *)}}{147}
\entry{\code {glob-list-expansions (C-x g)}}{147}
\initial {H}
\entry{\code {history-and-alias-expand-line ()}}{147}
\entry{\code {history-expand-line (M-^)}}{147}
\entry{\code {history-search-backward ()}}{139}
\entry{\code {history-search-forward ()}}{139}
\entry{\code {history-substring-search-backward ()}}{139}
\entry{\code {history-substring-search-forward ()}}{139}
\entry{\code {history-and-alias-expand-line ()}}{148}
\entry{\code {history-expand-line (M-^)}}{148}
\entry{\code {history-search-backward ()}}{140}
\entry{\code {history-search-forward ()}}{140}
\entry{\code {history-substring-search-backward ()}}{140}
\entry{\code {history-substring-search-forward ()}}{140}
\initial {I}
\entry{\code {insert-comment (M-#)}}{146}
\entry{\code {insert-completions (M-*)}}{143}
\entry{\code {insert-last-argument (M-. or M-_)}}{147}
\entry{\code {insert-comment (M-#)}}{147}
\entry{\code {insert-completions (M-*)}}{144}
\entry{\code {insert-last-argument (M-. or M-_)}}{148}
\initial {K}
\entry{\code {kill-line (C-k)}}{141}
\entry{\code {kill-region ()}}{142}
\entry{\code {kill-whole-line ()}}{141}
\entry{\code {kill-word (M-d)}}{141}
\entry{\code {kill-line (C-k)}}{142}
\entry{\code {kill-region ()}}{143}
\entry{\code {kill-whole-line ()}}{142}
\entry{\code {kill-word (M-d)}}{143}
\initial {M}
\entry{\code {magic-space ()}}{147}
\entry{\code {menu-complete ()}}{143}
\entry{\code {menu-complete-backward ()}}{143}
\entry{\code {magic-space ()}}{148}
\entry{\code {menu-complete ()}}{144}
\entry{\code {menu-complete-backward ()}}{144}
\initial {N}
\entry{\code {next-history (C-n)}}{138}
\entry{\code {next-screen-line ()}}{138}
\entry{\code {non-incremental-forward-search-history (M-n)}}{139}
\entry{\code {non-incremental-reverse-search-history (M-p)}}{138}
\entry{\code {next-history (C-n)}}{139}
\entry{\code {next-screen-line ()}}{139}
\entry{\code {non-incremental-forward-search-history (M-n)}}{140}
\entry{\code {non-incremental-reverse-search-history (M-p)}}{139}
\initial {O}
\entry{\code {operate-and-get-next (C-o)}}{139}
\entry{\code {overwrite-mode ()}}{141}
\entry{\code {operate-and-get-next (C-o)}}{140}
\entry{\code {overwrite-mode ()}}{142}
\initial {P}
\entry{\code {possible-command-completions (C-x !)}}{144}
\entry{\code {possible-completions (M-?)}}{143}
\entry{\code {possible-filename-completions (C-x /)}}{144}
\entry{\code {possible-hostname-completions (C-x @)}}{144}
\entry{\code {possible-username-completions (C-x ~)}}{144}
\entry{\code {possible-variable-completions (C-x $)}}{144}
\entry{\code {prefix-meta (\key {ESC})}}{145}
\entry{\code {previous-history (C-p)}}{138}
\entry{\code {previous-screen-line ()}}{137}
\entry{\code {print-last-kbd-macro ()}}{145}
\entry{\code {possible-command-completions (C-x !)}}{145}
\entry{\code {possible-completions (M-?)}}{144}
\entry{\code {possible-filename-completions (C-x /)}}{145}
\entry{\code {possible-hostname-completions (C-x @)}}{145}
\entry{\code {possible-username-completions (C-x ~)}}{145}
\entry{\code {possible-variable-completions (C-x $)}}{145}
\entry{\code {prefix-meta (\key {ESC})}}{146}
\entry{\code {previous-history (C-p)}}{139}
\entry{\code {previous-screen-line ()}}{138}
\entry{\code {print-last-kbd-macro ()}}{146}
\initial {Q}
\entry{\code {quoted-insert (C-q or C-v)}}{140}
\entry{\code {quoted-insert (C-q or C-v)}}{141}
\initial {R}
\entry{\code {re-read-init-file (C-x C-r)}}{145}
\entry{\code {redraw-current-line ()}}{138}
\entry{\code {reverse-search-history (C-r)}}{138}
\entry{\code {revert-line (M-r)}}{145}
\entry{\code {re-read-init-file (C-x C-r)}}{146}
\entry{\code {redraw-current-line ()}}{139}
\entry{\code {reverse-search-history (C-r)}}{139}
\entry{\code {revert-line (M-r)}}{146}
\initial {S}
\entry{\code {self-insert (a, b, A, 1, !, \dots {})}}{140}
\entry{\code {set-mark (C-@)}}{145}
\entry{\code {shell-backward-kill-word ()}}{142}
\entry{\code {shell-backward-word (M-C-b)}}{137}
\entry{\code {shell-expand-line (M-C-e)}}{147}
\entry{\code {shell-forward-word (M-C-f)}}{137}
\entry{\code {shell-kill-word (M-C-d)}}{142}
\entry{\code {self-insert (a, b, A, 1, !, \dots {})}}{141}
\entry{\code {set-mark (C-@)}}{146}
\entry{\code {shell-backward-kill-word ()}}{143}
\entry{\code {shell-backward-word (M-C-b)}}{138}
\entry{\code {shell-expand-line (M-C-e)}}{148}
\entry{\code {shell-forward-word (M-C-f)}}{138}
\entry{\code {shell-kill-word (M-C-d)}}{143}
\entry{\code {shell-transpose-words (M-C-t)}}{142}
\entry{\code {skip-csi-sequence ()}}{145}
\entry{\code {spell-correct-word (C-x s)}}{146}
\entry{\code {start-kbd-macro (C-x ()}}{144}
\entry{\code {skip-csi-sequence ()}}{146}
\entry{\code {spell-correct-word (C-x s)}}{147}
\entry{\code {start-kbd-macro (C-x ()}}{145}
\initial {T}
\entry{\code {tilde-expand (M-&)}}{145}
\entry{\code {transpose-chars (C-t)}}{140}
\entry{\code {transpose-words (M-t)}}{141}
\entry{\code {tilde-expand (M-&)}}{146}
\entry{\code {transpose-chars (C-t)}}{141}
\entry{\code {transpose-words (M-t)}}{142}
\initial {U}
\entry{\code {undo (C-_ or C-x C-u)}}{145}
\entry{\code {universal-argument ()}}{143}
\entry{\code {unix-filename-rubout ()}}{142}
\entry{\code {unix-line-discard (C-u)}}{141}
\entry{\code {unix-word-rubout (C-w)}}{142}
\entry{\code {upcase-word (M-u)}}{141}
\entry{\code {undo (C-_ or C-x C-u)}}{146}
\entry{\code {universal-argument ()}}{144}
\entry{\code {unix-filename-rubout ()}}{143}
\entry{\code {unix-line-discard (C-u)}}{142}
\entry{\code {unix-word-rubout (C-w)}}{143}
\entry{\code {upcase-word (M-u)}}{142}
\initial {Y}
\entry{\code {yank (C-y)}}{142}
\entry{\code {yank-last-arg (M-. or M-_)}}{139}
\entry{\code {yank-nth-arg (M-C-y)}}{139}
\entry{\code {yank-pop (M-y)}}{142}
\entry{\code {yank (C-y)}}{143}
\entry{\code {yank-last-arg (M-. or M-_)}}{140}
\entry{\code {yank-nth-arg (M-C-y)}}{140}
\entry{\code {yank-pop (M-y)}}{143}
+67 -23
View File
@@ -4,9 +4,9 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<!-- This text is a brief description of the features that are present in
the Bash shell (version 5.3, 16 June 2023).
the Bash shell (version 5.3, 19 July 2023).
This is Edition 5.3, last updated 16 June 2023,
This is Edition 5.3, last updated 19 July 2023,
of The GNU Bash Reference Manual,
for Bash, Version 5.3.
@@ -77,10 +77,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.3, 16 June 2023).
the Bash shell (version 5.3, 19 July 2023).
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.3, last updated 16 June 2023,
<p>This is Edition 5.3, last updated 19 July 2023,
of <cite>The GNU Bash Reference Manual</cite>,
for <code>Bash</code>, Version 5.3.
</p>
@@ -2319,7 +2319,7 @@ command substitution.
</p>
<p>After these expansions are performed, quote characters present in the
original word are removed unless they have been quoted themselves
(<em>quote removal</em>).
(<em>quote removal</em>). See <a href="#Quote-Removal">Quote Removal</a> for more details.
</p>
<p>Only brace expansion, word splitting, and filename expansion
can increase the number of words of the expansion; other expansions
@@ -2329,9 +2329,6 @@ The only exceptions to this are the expansions of
<code>&quot;${<var>name</var>[@]}&quot;</code> and <code>${<var>name</var>[*]}</code>
(see <a href="#Arrays">Arrays</a>).
</p>
<p>After all expansions, <code>quote removal</code> (see <a href="#Quote-Removal">Quote Removal</a>)
is performed.
</p>
<ul class="section-toc">
<li><a href="#Brace-Expansion" accesskey="1">Brace Expansion</a></li>
<li><a href="#Tilde-Expansion" accesskey="2">Tilde Expansion</a></li>
@@ -4595,15 +4592,16 @@ If <code>getopts</code> is silent, then a colon (&lsquo;<samp>:</samp>&rsquo;) i
<pre class="example">hash [-r] [-p <var>filename</var>] [-dt] [<var>name</var>]
</pre></div>
<p>Each time <code>hash</code> is invoked, it remembers the full pathnames of the
<p>Each time <code>hash</code> is invoked, it remembers the full filenames of the
commands specified as <var>name</var> arguments,
so they need not be searched for on subsequent invocations.
The commands are found by searching through the directories listed in
<code>$PATH</code>.
Any previously-remembered pathname is discarded.
Any previously-remembered filename is discarded.
The <samp>-p</samp> option inhibits the path search, and <var>filename</var> is
used as the location of <var>name</var>.
The <samp>-r</samp> option causes the shell to forget all remembered locations.
Assigning to the <code>PATH</code> variable also clears all hashed filenames.
The <samp>-d</samp> option causes the shell to forget the remembered location
of each <var>name</var>.
If the <samp>-t</samp> option is supplied, the full pathname to which each
@@ -4808,9 +4806,30 @@ using the rules listed above.
</p></dd>
</dl>
<p>When used with <code>test</code> or &lsquo;<samp>[</samp>&rsquo;, the &lsquo;<samp>&lt;</samp>&rsquo; and &lsquo;<samp>&gt;</samp>&rsquo;
<p>If the shell is not in <small>POSIX</small> mode,
when used with <code>test</code> or &lsquo;<samp>[</samp>&rsquo;, the &lsquo;<samp>&lt;</samp>&rsquo; and &lsquo;<samp>&gt;</samp>&rsquo;
operators sort lexicographically using ASCII ordering.
If the shell is in <small>POSIX</small> mode, these operators use the current locale.
</p>
<p>The historical operator-precedence parsing with 4 or more arguments can
lead to ambiguities when it encounters strings that look like primaries.
The <small>POSIX</small> standard has deprecated the <samp>-a</samp> and <samp>-o</samp>
primaries and enclosing expressions within parentheses.
Scripts should no longer use them.
It&rsquo;s much more reliable to restrict test invocations to a single primary,
and to replace uses of <samp>-a</samp> and <samp>-o</samp> with the shell&rsquo;s
<code>&amp;&amp;</code> and <code>||</code> list operators. For example, use
</p>
<div class="example">
<pre class="example">test -n string1 &amp;&amp; test -n string2
</pre></div>
<p>instead of
</p>
<div class="example">
<pre class="example">test -n string1 -a -n string2
</pre></div>
</dd>
<dt id='index-times'><span><code>times</code><a href='#index-times' class='copiable-anchor'> &para;</a></span></dt>
<dd><div class="example">
@@ -5974,6 +5993,8 @@ parameters, or to display the names and values of shell variables.
<dd><div class="example">
<pre class="example">set [-abefhkmnptuvxBCEHPT] [-o <var>option-name</var>] [--] [-] [<var>argument</var> &hellip;]
set [+abefhkmnptuvxBCEHPT] [+o <var>option-name</var>] [--] [-] [<var>argument</var> &hellip;]
set -o
set +o
</pre></div>
<p>If no options or arguments are supplied, <code>set</code> displays the names
@@ -6062,7 +6083,15 @@ This option is ignored by interactive shells.
</dd>
<dt><span><code>-o <var>option-name</var></code></span></dt>
<dd>
<p>Set the option corresponding to <var>option-name</var>:
<p>Set the option corresponding to <var>option-name</var>.
If <samp>-o</samp> is supplied with no <var>option-name</var>,
<code>set</code> prints the current shell options settings.
If <samp>+o</samp> is supplied with no <var>option-name</var>,
<code>set</code> prints a series of
<code>set</code>
commands to recreate the current option settings
on the standard output.
Valid option names are:
</p>
<dl compact="compact">
<dt><span><code>allexport</code></span></dt>
@@ -6972,6 +7001,7 @@ builtin).
Setting <code>extdebug</code> after the shell has started to execute a script,
or referencing this variable when <code>extdebug</code> is not set,
may result in inconsistent values.
Assignments to <code>BASH_ARGC</code> have no effect, and it may not be unset.
</p>
</dd>
<dt id='index-BASH_005fARGV'><span><code>BASH_ARGV</code><a href='#index-BASH_005fARGV' class='copiable-anchor'> &para;</a></span></dt>
@@ -6987,6 +7017,7 @@ builtin).
Setting <code>extdebug</code> after the shell has started to execute a script,
or referencing this variable when <code>extdebug</code> is not set,
may result in inconsistent values.
Assignments to <code>BASH_ARGV</code> have no effect, and it may not be unset.
</p>
</dd>
<dt id='index-BASH_005fARGV0'><span><code>BASH_ARGV0</code><a href='#index-BASH_005fARGV0' class='copiable-anchor'> &para;</a></span></dt>
@@ -7058,6 +7089,7 @@ where each corresponding member of <code>FUNCNAME</code> was invoked.
<code>${FUNCNAME[$i]}</code> was called (or <code>${BASH_LINENO[$i-1]}</code> if
referenced within another shell function).
Use <code>LINENO</code> to obtain the current line number.
Assignments to <code>BASH_LINENO</code> have no effect, and it may not be unset.
</p>
</dd>
<dt id='index-BASH_005fLOADABLES_005fPATH'><span><code>BASH_LOADABLES_PATH</code><a href='#index-BASH_005fLOADABLES_005fPATH' class='copiable-anchor'> &para;</a></span></dt>
@@ -7091,6 +7123,7 @@ corresponding shell function names in the <code>FUNCNAME</code> array
variable are defined.
The shell function <code>${FUNCNAME[$i]}</code> is defined in the file
<code>${BASH_SOURCE[$i]}</code> and called from <code>${BASH_SOURCE[$i+1]}</code>
Assignments to <code>BASH_SOURCE</code> have no effect, and it may not be unset.
</p>
</dd>
<dt id='index-BASH_005fSUBSHELL'><span><code>BASH_SUBSHELL</code><a href='#index-BASH_005fSUBSHELL' class='copiable-anchor'> &para;</a></span></dt>
@@ -9652,6 +9685,13 @@ undergoes expansion.
That means, for example, that a backslash preceding a double quote
character will escape it and the backslash will be removed.
</li><li> The <code>test</code> builtin compares strings using the current locale when
processing the &lsquo;<samp>&lt;</samp>&rsquo; and &lsquo;<samp>&gt;</samp>&rsquo; binary operators.
</li><li> The <code>test</code> builtin&rsquo;s <samp>-t</samp> unary primary requires an argument.
Historical versions of <code>test</code> made the argument optional in certain
cases, and bash attempts to accommodate those for backwards compatibility.
</li><li> Command substitutions don&rsquo;t set the &lsquo;<samp>?</samp>&rsquo; special parameter. The exit
status of a simple command without a command word is still the exit status
of the last command substitution that occurred while evaluating the variable
@@ -10694,8 +10734,12 @@ the terminal&rsquo;s bell.
</dd>
<dt id='index-bind_002dtty_002dspecial_002dchars'><span><code>bind-tty-special-chars</code><a href='#index-bind_002dtty_002dspecial_002dchars' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>If set to &lsquo;<samp>on</samp>&rsquo; (the default), Readline attempts to bind the control
characters treated specially by the kernel&rsquo;s terminal driver to their
characters that are
treated specially by the kernel&rsquo;s terminal driver to their
Readline equivalents.
These override the default Readline bindings described here.
Type &lsquo;<samp>stty -a</samp>&rsquo; at a Bash prompt to see your current terminal settings,
including the special control characters (usually <code>cchars</code>).
</p>
</dd>
<dt id='index-blink_002dmatching_002dparen'><span><code>blink-matching-paren</code><a href='#index-blink_002dmatching_002dparen' class='copiable-anchor'> &para;</a></span></dt>
@@ -11789,6 +11833,15 @@ If the insertion point is at the end of the line, this transposes
the last two words on the line.
</p>
</dd>
<dt id='index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029'><span><code>shell-transpose-words (M-C-t)</code><a href='#index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>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</code> and
<code>shell-backward-word</code>.
</p>
</dd>
<dt id='index-upcase_002dword-_0028M_002du_0029'><span><code>upcase-word (M-u)</code><a href='#index-upcase_002dword-_0028M_002du_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Uppercase the current (or following) word. With a negative argument,
uppercase the previous word, but do not move the cursor.
@@ -11874,15 +11927,6 @@ Word boundaries are the same as <code>shell-forward-word</code>.
Word boundaries are the same as <code>shell-backward-word</code>.
</p>
</dd>
<dt id='index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029'><span><code>shell-transpose-words (M-C-t)</code><a href='#index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>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</code> and
<code>shell-backward-word</code>.
</p>
</dd>
<dt id='index-unix_002dword_002drubout-_0028C_002dw_0029'><span><code>unix-word-rubout (C-w)</code><a href='#index-unix_002dword_002drubout-_0028C_002dw_0029' class='copiable-anchor'> &para;</a></span></dt>
<dd><p>Kill the word behind point, using white space as a word boundary.
The killed text is saved on the kill-ring.
@@ -16003,7 +16047,7 @@ Next: <a href="#Concept-Index" accesskey="n" rel="next">Concept Index</a>, Previ
<tr><td></td><td valign="top"><a href="#index-shell_002dexpand_002dline-_0028M_002dC_002de_0029"><code>shell-expand-line (M-C-e)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-shell_002dforward_002dword-_0028M_002dC_002df_0029"><code>shell-forward-word (M-C-f)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Moving">Commands For Moving</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-shell_002dkill_002dword-_0028M_002dC_002dd_0029"><code>shell-kill-word (M-C-d)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029"><code>shell-transpose-words (M-C-t)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Killing">Commands For Killing</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-shell_002dtranspose_002dwords-_0028M_002dC_002dt_0029"><code>shell-transpose-words (M-C-t)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Commands-For-Text">Commands For Text</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-skip_002dcsi_002dsequence-_0028_0029"><code>skip-csi-sequence ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-spell_002dcorrect_002dword-_0028C_002dx-s_0029"><code>spell-correct-word (C-x s)</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Miscellaneous-Commands">Miscellaneous Commands</a></td></tr>
<tr><td></td><td valign="top"><a href="#index-start_002dkbd_002dmacro-_0028C_002dx-_0028_0029"><code>start-kbd-macro (C-x ()</code></a>:</td><td>&nbsp;</td><td valign="top"><a href="#Keyboard-Macros">Keyboard Macros</a></td></tr>
+36 -36
View File
@@ -1,12 +1,12 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021/MacPorts 2021.58693_0) (preloaded format=pdfetex 2021.8.30) 5 JUL 2023 11:27
This is pdfTeX, Version 3.141592653-2.6-1.40.22 (TeX Live 2021/MacPorts 2021.58693_0) (preloaded format=pdfetex 2021.8.30) 23 JUL 2023 18:18
entering extended mode
restricted \write18 enabled.
file:line:error style messages enabled.
%&-line parsing enabled.
**\input /usr/local/src/bash/bash-20230703/doc/bashref.texi \input /usr/local/s
rc/bash/bash-20230703/doc/bashref.texi
(/usr/local/src/bash/bash-20230703/doc/bashref.texi
(/usr/local/src/bash/bash-20230703/doc/texinfo.tex
**\input /usr/local/src/bash/bash-20230719/doc/bashref.texi \input /usr/local/s
rc/bash/bash-20230719/doc/bashref.texi
(/usr/local/src/bash/bash-20230719/doc/bashref.texi
(/usr/local/src/bash/bash-20230719/doc/texinfo.tex
Loading texinfo [version 2015-11-22.14]:
\outerhsize=\dimen16
\outervsize=\dimen17
@@ -162,15 +162,15 @@ This is `epsf.tex' v2.7.4 <14 February 2011>
texinfo.tex: doing @include of version.texi
(/usr/local/src/bash/bash-20230703/doc/version.texi) [1{/opt/local/var/db/texmf
(/usr/local/src/bash/bash-20230719/doc/version.texi) [1{/opt/local/var/db/texmf
/fonts/map/pdftex/updmap/pdftex.map}] [2]
(/usr/local/build/bash/bash-20230703/doc/bashref.toc [-1] [-2] [-3]) [-4]
(/usr/local/build/bash/bash-20230703/doc/bashref.toc)
(/usr/local/build/bash/bash-20230703/doc/bashref.toc) Chapter 1
(/usr/local/build/bash/bash-20230719/doc/bashref.toc [-1] [-2] [-3]) [-4]
(/usr/local/build/bash/bash-20230719/doc/bashref.toc)
(/usr/local/build/bash/bash-20230719/doc/bashref.toc) Chapter 1
\openout0 = `bashref.toc'.
(/usr/local/build/bash/bash-20230703/doc/bashref.aux)
(/usr/local/build/bash/bash-20230719/doc/bashref.aux)
\openout1 = `bashref.aux'.
Chapter 2 [1] [2]
@@ -230,7 +230,7 @@ Overfull \hbox (5.95723pt too wide) in paragraph at lines 724--725
[49] [50] [51]
[52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66]
[67]
Overfull \hbox (38.26585pt too wide) in paragraph at lines 5355--5355
Overfull \hbox (38.26585pt too wide) in paragraph at lines 5377--5377
[]@texttt set [-abefhkmnptuvxBCEHPT] [-o @textttsl option-name@texttt ] [--] [
-] [@textttsl ar-gu-ment []@texttt ][]
@@ -243,7 +243,7 @@ Overfull \hbox (38.26585pt too wide) in paragraph at lines 5355--5355
.etc.
Overfull \hbox (38.26585pt too wide) in paragraph at lines 5356--5356
Overfull \hbox (38.26585pt too wide) in paragraph at lines 5378--5378
[]@texttt set [+abefhkmnptuvxBCEHPT] [+o @textttsl option-name@texttt ] [--] [
-] [@textttsl ar-gu-ment []@texttt ][]
@@ -262,10 +262,10 @@ Overfull \hbox (38.26585pt too wide) in paragraph at lines 5356--5356
[118] [119]
texinfo.tex: doing @include of rluser.texi
(/usr/local/src/bash/bash-20230703/lib/readline/doc/rluser.texi
(/usr/local/src/bash/bash-20230719/lib/readline/doc/rluser.texi
Chapter 8 [120] [121] [122] [123] [124] [125] [126] [127] [128] [129] [130]
[131]
Underfull \hbox (badness 7540) in paragraph at lines 874--880
Underfull \hbox (badness 7540) in paragraph at lines 878--884
[]@textrm In the ex-am-ple above, @textttsl C-u[] @textrm is bound to the func
-tion
@@ -278,7 +278,7 @@ Underfull \hbox (badness 7540) in paragraph at lines 874--880
.etc.
Underfull \hbox (badness 10000) in paragraph at lines 874--880
Underfull \hbox (badness 10000) in paragraph at lines 878--884
@texttt universal-argument[]@textrm , @textttsl M-DEL[] @textrm is bound to th
e func-tion
@@ -290,8 +290,8 @@ e func-tion
.@texttt v
.etc.
[132] [133] [134]
Overfull \hbox (26.43913pt too wide) in paragraph at lines 1108--1108
[132] [133] [134] [135]
Overfull \hbox (26.43913pt too wide) in paragraph at lines 1112--1112
[]@texttt Meta-Control-h: backward-kill-word Text after the function name is i
gnored[]
@@ -303,19 +303,19 @@ gnored[]
.@texttt t
.etc.
[135] [136]
[136] [137]
@fnindfile=@write6
\openout6 = `bashref.fn'.
[137] [138] [139] [140] [141] [142] [143] [144] [145] [146]
[147] [148] [149] [150] [151] [152] [153] [154] [155])
[138] [139] [140] [141] [142] [143] [144] [145] [146] [147]
[148] [149] [150] [151] [152] [153] [154] [155] [156])
texinfo.tex: doing @include of hsuser.texi
(/usr/local/src/bash/bash-20230703/lib/readline/doc/hsuser.texi Chapter 9
[156] [157] [158] [159] [160] [161]) Chapter 10 [162] [163] [164] [165]
[166]
Underfull \hbox (badness 10000) in paragraph at lines 9662--9671
(/usr/local/src/bash/bash-20230719/lib/readline/doc/hsuser.texi Chapter 9
[157] [158] [159] [160] [161] [162]) Chapter 10 [163] [164] [165] [166]
[167]
Underfull \hbox (badness 10000) in paragraph at lines 9699--9708
[]@textrm All of the fol-low-ing op-tions ex-cept for `@texttt alt-array-implem
entation[]@textrm '[],
@@ -328,7 +328,7 @@ entation[]@textrm '[],
.etc.
Underfull \hbox (badness 10000) in paragraph at lines 9662--9671
Underfull \hbox (badness 10000) in paragraph at lines 9699--9708
@textrm `@texttt disabled-builtins[]@textrm '[], `@texttt direxpand-default[]@t
extrm '[], `@texttt strict-posix-default[]@textrm '[], and
@@ -340,16 +340,16 @@ extrm '[], `@texttt strict-posix-default[]@textrm '[], and
.@texttt a
.etc.
[167] [168] [169] [170] Appendix A [171] Appendix B [172] [173] [174] [175]
[176] [177] Appendix C [178]
[168] [169] [170] [171] Appendix A [172] Appendix B [173] [174] [175] [176]
[177] [178] Appendix C [179]
texinfo.tex: doing @include of fdl.texi
(/usr/local/src/bash/bash-20230703/doc/fdl.texi
[179] [180] [181] [182] [183] [184] [185]) Appendix D [186] [187] [188]
[189] [190] [191] [192] [193] [194] [195] )
(/usr/local/src/bash/bash-20230719/doc/fdl.texi
[180] [181] [182] [183] [184] [185] [186]) Appendix D [187] [188] [189]
[190] [191] [192] [193] [194] [195] [196] )
Here is how much of TeX's memory you used:
4102 strings out of 497086
47608 string characters out of 6206517
4103 strings out of 497086
47611 string characters out of 6206517
142074 words of memory out of 5000000
4869 multiletter control sequences out of 15000+600000
34315 words of font info for 116 fonts, out of 8000000 for 9000
@@ -372,10 +372,10 @@ texlive/fonts/type1/public/amsfonts/cm/cmtt12.pfb></opt/local/share/texmf-texli
ve/fonts/type1/public/amsfonts/cm/cmtt9.pfb></opt/local/share/texmf-texlive/fon
ts/type1/public/cm-super/sfrm1095.pfb></opt/local/share/texmf-texlive/fonts/typ
e1/public/cm-super/sfrm1440.pfb>
Output written on bashref.pdf (201 pages, 809290 bytes).
Output written on bashref.pdf (202 pages, 810875 bytes).
PDF statistics:
2808 PDF objects out of 2984 (max. 8388607)
2560 compressed objects within 26 object streams
329 named destinations out of 1000 (max. 500000)
2812 PDF objects out of 2984 (max. 8388607)
2563 compressed objects within 26 object streams
330 named destinations out of 1000 (max. 500000)
1157 words of extra memory for PDF output out of 10000 (max. 10000000)
BIN
View File
Binary file not shown.
+8
View File
@@ -2177,6 +2177,14 @@ If @var{parameter} is unset or null, the expansion of
$ v=123
$ echo $@{v-unset@}
123
$ echo $@{v:-unset-or-null@}
123
$ unset v
$ echo $@{v-unset@}
unset
$ v=
$ echo $@{v:-unset-or-null@}
unset-or-null
@end example
@item $@{@var{parameter}:=@var{word}@}
+41 -41
View File
@@ -62,7 +62,7 @@
@numsecentry{Bash Builtin Commands}{4.2}{Bash Builtins}{57}
@numsecentry{Modifying Shell Behavior}{4.3}{Modifying Shell Behavior}{68}
@numsubsecentry{The Set Builtin}{4.3.1}{The Set Builtin}{68}
@numsubsecentry{The Shopt Builtin}{4.3.2}{The Shopt Builtin}{72}
@numsubsecentry{The Shopt Builtin}{4.3.2}{The Shopt Builtin}{73}
@numsecentry{Special Builtins}{4.4}{Special Builtins}{79}
@numchapentry{Shell Variables}{5}{Shell Variables}{80}
@numsecentry{Bourne Shell Variables}{5.1}{Bourne Shell Variables}{80}
@@ -101,43 +101,43 @@
@numsecentry{Readline Init File}{8.3}{Readline Init File}{124}
@numsubsecentry{Readline Init File Syntax}{8.3.1}{Readline Init File Syntax}{124}
@numsubsecentry{Conditional Init Constructs}{8.3.2}{Conditional Init Constructs}{133}
@numsubsecentry{Sample Init File}{8.3.3}{Sample Init File}{134}
@numsecentry{Bindable Readline Commands}{8.4}{Bindable Readline Commands}{137}
@numsubsecentry{Commands For Moving}{8.4.1}{Commands For Moving}{137}
@numsubsecentry{Commands For Manipulating The History}{8.4.2}{Commands For History}{138}
@numsubsecentry{Commands For Changing Text}{8.4.3}{Commands For Text}{140}
@numsubsecentry{Killing And Yanking}{8.4.4}{Commands For Killing}{141}
@numsubsecentry{Specifying Numeric Arguments}{8.4.5}{Numeric Arguments}{142}
@numsubsecentry{Letting Readline Type For You}{8.4.6}{Commands For Completion}{143}
@numsubsecentry{Keyboard Macros}{8.4.7}{Keyboard Macros}{144}
@numsubsecentry{Some Miscellaneous Commands}{8.4.8}{Miscellaneous Commands}{145}
@numsecentry{Readline vi Mode}{8.5}{Readline vi Mode}{147}
@numsecentry{Programmable Completion}{8.6}{Programmable Completion}{147}
@numsecentry{Programmable Completion Builtins}{8.7}{Programmable Completion Builtins}{150}
@numsecentry{A Programmable Completion Example}{8.8}{A Programmable Completion Example}{154}
@numchapentry{Using History Interactively}{9}{Using History Interactively}{157}
@numsecentry{Bash History Facilities}{9.1}{Bash History Facilities}{157}
@numsecentry{Bash History Builtins}{9.2}{Bash History Builtins}{157}
@numsecentry{History Expansion}{9.3}{History Interaction}{159}
@numsubsecentry{Event Designators}{9.3.1}{Event Designators}{160}
@numsubsecentry{Word Designators}{9.3.2}{Word Designators}{161}
@numsubsecentry{Modifiers}{9.3.3}{Modifiers}{161}
@numchapentry{Installing Bash}{10}{Installing Bash}{163}
@numsecentry{Basic Installation}{10.1}{Basic Installation}{163}
@numsecentry{Compilers and Options}{10.2}{Compilers and Options}{164}
@numsecentry{Compiling For Multiple Architectures}{10.3}{Compiling For Multiple Architectures}{164}
@numsecentry{Installation Names}{10.4}{Installation Names}{165}
@numsecentry{Specifying the System Type}{10.5}{Specifying the System Type}{165}
@numsecentry{Sharing Defaults}{10.6}{Sharing Defaults}{165}
@numsecentry{Operation Controls}{10.7}{Operation Controls}{166}
@numsecentry{Optional Features}{10.8}{Optional Features}{166}
@appentry{Reporting Bugs}{A}{Reporting Bugs}{172}
@appentry{Major Differences From The Bourne Shell}{B}{Major Differences From The Bourne Shell}{173}
@appsecentry{Implementation Differences From The SVR4.2 Shell}{B.1}{}{177}
@appentry{GNU Free Documentation License}{C}{GNU Free Documentation License}{179}
@appentry{Indexes}{D}{Indexes}{187}
@appsecentry{Index of Shell Builtin Commands}{D.1}{Builtin Index}{187}
@appsecentry{Index of Shell Reserved Words}{D.2}{Reserved Word Index}{188}
@appsecentry{Parameter and Variable Index}{D.3}{Variable Index}{189}
@appsecentry{Function Index}{D.4}{Function Index}{191}
@appsecentry{Concept Index}{D.5}{Concept Index}{193}
@numsubsecentry{Sample Init File}{8.3.3}{Sample Init File}{135}
@numsecentry{Bindable Readline Commands}{8.4}{Bindable Readline Commands}{138}
@numsubsecentry{Commands For Moving}{8.4.1}{Commands For Moving}{138}
@numsubsecentry{Commands For Manipulating The History}{8.4.2}{Commands For History}{139}
@numsubsecentry{Commands For Changing Text}{8.4.3}{Commands For Text}{141}
@numsubsecentry{Killing And Yanking}{8.4.4}{Commands For Killing}{142}
@numsubsecentry{Specifying Numeric Arguments}{8.4.5}{Numeric Arguments}{143}
@numsubsecentry{Letting Readline Type For You}{8.4.6}{Commands For Completion}{144}
@numsubsecentry{Keyboard Macros}{8.4.7}{Keyboard Macros}{145}
@numsubsecentry{Some Miscellaneous Commands}{8.4.8}{Miscellaneous Commands}{146}
@numsecentry{Readline vi Mode}{8.5}{Readline vi Mode}{148}
@numsecentry{Programmable Completion}{8.6}{Programmable Completion}{148}
@numsecentry{Programmable Completion Builtins}{8.7}{Programmable Completion Builtins}{151}
@numsecentry{A Programmable Completion Example}{8.8}{A Programmable Completion Example}{155}
@numchapentry{Using History Interactively}{9}{Using History Interactively}{158}
@numsecentry{Bash History Facilities}{9.1}{Bash History Facilities}{158}
@numsecentry{Bash History Builtins}{9.2}{Bash History Builtins}{158}
@numsecentry{History Expansion}{9.3}{History Interaction}{160}
@numsubsecentry{Event Designators}{9.3.1}{Event Designators}{161}
@numsubsecentry{Word Designators}{9.3.2}{Word Designators}{162}
@numsubsecentry{Modifiers}{9.3.3}{Modifiers}{162}
@numchapentry{Installing Bash}{10}{Installing Bash}{164}
@numsecentry{Basic Installation}{10.1}{Basic Installation}{164}
@numsecentry{Compilers and Options}{10.2}{Compilers and Options}{165}
@numsecentry{Compiling For Multiple Architectures}{10.3}{Compiling For Multiple Architectures}{165}
@numsecentry{Installation Names}{10.4}{Installation Names}{166}
@numsecentry{Specifying the System Type}{10.5}{Specifying the System Type}{166}
@numsecentry{Sharing Defaults}{10.6}{Sharing Defaults}{166}
@numsecentry{Operation Controls}{10.7}{Operation Controls}{167}
@numsecentry{Optional Features}{10.8}{Optional Features}{167}
@appentry{Reporting Bugs}{A}{Reporting Bugs}{173}
@appentry{Major Differences From The Bourne Shell}{B}{Major Differences From The Bourne Shell}{174}
@appsecentry{Implementation Differences From The SVR4.2 Shell}{B.1}{}{178}
@appentry{GNU Free Documentation License}{C}{GNU Free Documentation License}{180}
@appentry{Indexes}{D}{Indexes}{188}
@appsecentry{Index of Shell Builtin Commands}{D.1}{Builtin Index}{188}
@appsecentry{Index of Shell Reserved Words}{D.2}{Reserved Word Index}{189}
@appsecentry{Parameter and Variable Index}{D.3}{Variable Index}{190}
@appsecentry{Function Index}{D.4}{Function Index}{192}
@appsecentry{Concept Index}{D.5}{Concept Index}{194}
+4 -4
View File
@@ -156,13 +156,13 @@
\entry{history-preserve-point}{128}{\code {history-preserve-point}}
\entry{history-size}{128}{\code {history-size}}
\entry{horizontal-scroll-mode}{128}{\code {horizontal-scroll-mode}}
\entry{input-meta}{128}{\code {input-meta}}
\entry{meta-flag}{128}{\code {meta-flag}}
\entry{input-meta}{129}{\code {input-meta}}
\entry{meta-flag}{129}{\code {meta-flag}}
\entry{isearch-terminators}{129}{\code {isearch-terminators}}
\entry{keymap}{129}{\code {keymap}}
\entry{mark-modified-lines}{129}{\code {mark-modified-lines}}
\entry{mark-symlinked-directories}{129}{\code {mark-symlinked-directories}}
\entry{match-hidden-files}{129}{\code {match-hidden-files}}
\entry{match-hidden-files}{130}{\code {match-hidden-files}}
\entry{menu-complete-display-prefix}{130}{\code {menu-complete-display-prefix}}
\entry{output-meta}{130}{\code {output-meta}}
\entry{page-completions}{130}{\code {page-completions}}
@@ -170,7 +170,7 @@
\entry{search-ignore-case}{130}{\code {search-ignore-case}}
\entry{show-all-if-ambiguous}{130}{\code {show-all-if-ambiguous}}
\entry{show-all-if-unmodified}{130}{\code {show-all-if-unmodified}}
\entry{show-mode-in-prompt}{130}{\code {show-mode-in-prompt}}
\entry{show-mode-in-prompt}{131}{\code {show-mode-in-prompt}}
\entry{skip-completed-text}{131}{\code {skip-completed-text}}
\entry{vi-cmd-mode-string}{131}{\code {vi-cmd-mode-string}}
\entry{vi-ins-mode-string}{131}{\code {vi-ins-mode-string}}
+4 -4
View File
@@ -122,7 +122,7 @@
\initial {I}
\entry{\code {IFS}}{80}
\entry{\code {IGNOREEOF}}{89}
\entry{\code {input-meta}}{128}
\entry{\code {input-meta}}{129}
\entry{\code {INPUTRC}}{89}
\entry{\code {INSIDE_EMACS}}{89}
\entry{\code {isearch-terminators}}{129}
@@ -146,9 +146,9 @@
\entry{\code {MAPFILE}}{90}
\entry{\code {mark-modified-lines}}{129}
\entry{\code {mark-symlinked-directories}}{129}
\entry{\code {match-hidden-files}}{129}
\entry{\code {match-hidden-files}}{130}
\entry{\code {menu-complete-display-prefix}}{130}
\entry{\code {meta-flag}}{128}
\entry{\code {meta-flag}}{129}
\initial {O}
\entry{\code {OLDPWD}}{90}
\entry{\code {OPTARG}}{80}
@@ -186,7 +186,7 @@
\entry{\code {SHLVL}}{91}
\entry{\code {show-all-if-ambiguous}}{130}
\entry{\code {show-all-if-unmodified}}{130}
\entry{\code {show-mode-in-prompt}}{130}
\entry{\code {show-mode-in-prompt}}{131}
\entry{\code {skip-completed-text}}{131}
\entry{\code {SRANDOM}}{91}
\initial {T}
+5 -7
View File
@@ -3580,7 +3580,7 @@ start_job (int job, int foreground)
/* Run the job. */
if (already_running == 0)
set_job_running (job);
jobs[job]->flags |= J_NOTIFIED;
/* Save the tty settings before we start the job in the foreground. */
if (foreground)
@@ -3598,12 +3598,10 @@ start_job (int job, int foreground)
jobs[job]->flags |= J_ASYNC; /* running in background now */
}
/* If the job is already running, then don't bother jump-starting it. */
if (already_running == 0)
{
jobs[job]->flags |= J_NOTIFIED;
killpg (jobs[job]->pgrp, SIGCONT);
}
/* Change job state to running only if the kill SIGCONT succeeds or if kill
says the process has terminated so we clean it up later. */
if (killpg (jobs[job]->pgrp, SIGCONT) >= 0 || errno == ESRCH)
set_job_running (job);
if (foreground)
{
+9 -2
View File
@@ -653,7 +653,7 @@ glob_vector (char *pat, char *dir, int flags)
int hasglob; /* return value from glob_pattern_p */
int nalloca;
struct globval *firstmalloc, *tmplink;
char *convfn;
char *convfn, *convpat;
lastlink = 0;
count = 0;
@@ -765,6 +765,10 @@ glob_vector (char *pat, char *dir, int flags)
if (d == NULL)
return ((char **) &glob_error_return);
convpat = fnx_fromfs (pat, patlen);
if (convpat != pat)
convpat = savestring (convpat);
/* Compute the flags that will be passed to strmatch(). We don't
need to do this every time through the loop. */
mflags = (noglob_dot_filenames ? FNM_PERIOD : FNM_DOTDOT) | FNM_PATHNAME;
@@ -882,7 +886,7 @@ glob_vector (char *pat, char *dir, int flags)
free (subdir);
convfn = fnx_fromfs (dp->d_name, D_NAMLEN (dp));
if (strmatch (pat, convfn, mflags) != FNM_NOMATCH)
if (strmatch (convpat, convfn, mflags) != FNM_NOMATCH)
{
if (nalloca < ALLOCA_MAX)
{
@@ -924,6 +928,9 @@ glob_vector (char *pat, char *dir, int flags)
}
(void) closedir (d);
if (convpat != pat)
free (convpat);
}
/* compat: if GX_ADDCURDIR, add the passed directory also. Add an empty
+12
View File
@@ -2536,6 +2536,18 @@ rl_filename_completion_function (const char *text, int state)
}
filename_len = strlen (filename);
/* Normalize the filename if the application has set a rewrite hook. */
if (*filename && rl_filename_rewrite_hook)
{
temp = (*rl_filename_rewrite_hook) (filename, filename_len);
if (temp != filename)
{
xfree (filename);
filename = temp;
filename_len = strlen (filename);
}
}
rl_filename_completion_desired = 1;
}
+20 -1
View File
@@ -211,6 +211,7 @@ quote_string_for_globbing (const char *pathname, int qflags)
register int i, j;
int cclass, collsym, equiv, c, last_was_backslash;
int savei, savej;
unsigned char cc;
temp = (char *)xmalloc (2 * strlen (pathname) + 1);
@@ -240,11 +241,29 @@ quote_string_for_globbing (const char *pathname, int qflags)
else if (pathname[i] == CTLESC)
{
convert_to_backslash:
cc = pathname[i+1];
if ((qflags & QGLOB_FILENAME) && pathname[i+1] == '/')
continue;
/* What to do if preceding char is backslash? */
if (pathname[i+1] != CTLESC && (qflags & QGLOB_REGEXP) && ere_char (pathname[i+1]) == 0)
/* We don't have to backslash-quote non-special ERE characters if
we're quoting a regexp. */
if (cc != CTLESC && (qflags & QGLOB_REGEXP) && ere_char (cc) == 0)
continue;
/* We don't have to backslash-quote non-special BRE characters if
we're quoting a glob pattern. */
if (cc != CTLESC && (qflags & QGLOB_REGEXP) == 0 && glob_char_p (pathname+i+1) == 0)
continue;
/* If we're in a multibyte locale, don't bother quoting multibyte
characters. It matters if we're going to convert NFD to NFC on
macOS, and doesn't make a difference on other systems. */
if (cc != CTLESC && locale_utf8locale && UTF8_SINGLEBYTE (cc) == 0)
continue; /* probably don't need to check for UTF-8 locale */
temp[j++] = '\\';
i++;
if (pathname[i] == '\0')
+2
View File
@@ -2,6 +2,8 @@ echo "warning: all of these tests will fail if the conditional command has not"
echo "warning: been compiled into the shell" >&2
echo "warning: some of these tests will fail if extended pattern matching has not" >&2
echo "warning: been compiled into the shell" >&2
echo "warning: the text of system error messages may vary between systems and" >&2
echo "warning: produce diff output." >&2
${THIS_SH} ./cond.tests > ${BASH_TSTOUT} 2>&1
diff ${BASH_TSTOUT} cond.right && rm -f ${BASH_TSTOUT}