From 967625cd5bce6f826bcff634e1a42b44f8069b12 Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Mon, 21 Dec 2015 10:38:53 -0500 Subject: [PATCH] commit bash-20151204 snapshot --- CWRU/CWRU.chlog | 92 + MANIFEST | 5 + Makefile.in | 5 +- aclocal.m4 | 2 +- bashhist.c | 2 +- builtins.h | 1 + builtins/mkbuiltins.c | 21 +- builtins/setattr.def | 22 +- configure | 2 +- doc/Makefile.in | 24 +- doc/bash.0 | 931 +- doc/bash.html | 94 +- doc/bash.info | 9271 +++++++------- doc/bash.ps | 10172 +++++++-------- doc/bashref.aux | 2 +- doc/bashref.cp | 2 +- doc/bashref.cps | 2 +- doc/bashref.dvi | Bin 737512 -> 739900 bytes doc/bashref.html | 25596 +++++++++++++++++-------------------- doc/bashref.info | 702 +- doc/bashref.log | 81 +- doc/bashref.ps | 5940 ++++----- doc/bashref.texi | 3 +- doc/bashref.toc | 2 +- doc/bashref.vr | 31 +- doc/bashref.vrs | 31 +- doc/builtins.0 | 162 +- doc/builtins.ps | 835 +- doc/rbash.ps | 2 +- doc/texinfo.tex.20131227 | 10145 +++++++++++++++ execute_cmd.c | 31 +- lib/sh/tmpfile.c | 5 + make_cmd.c | 4 + parse.y | 11 +- shell.h | 1 + subst.c | 48 +- tests/attr.right | 37 + tests/attr.tests | 41 + tests/attr1.sub | 55 + tests/attr2.sub | 24 + tests/cond.right | 5 + tests/cond.tests | 11 + tests/histexp.right | 2 + tests/histexp2.sub | 3 + tests/run-attr | 2 + 45 files changed, 36434 insertions(+), 28026 deletions(-) create mode 100644 doc/texinfo.tex.20131227 create mode 100644 tests/attr.right create mode 100644 tests/attr.tests create mode 100644 tests/attr1.sub create mode 100644 tests/attr2.sub create mode 100644 tests/run-attr diff --git a/CWRU/CWRU.chlog b/CWRU/CWRU.chlog index 060b3777..a7a557c9 100644 --- a/CWRU/CWRU.chlog +++ b/CWRU/CWRU.chlog @@ -10026,3 +10026,95 @@ lib/readline/display.c vs. physical screen position). These fix bug with prompts with multibyte characters and invisible characters that are longer than the screen width reported by Ryo Furue + + 12/1 + ---- +parse.y,make_cmd.c + - here_doc_first_line: new variable, set to non-zero to indicate the + first line of possibly multiple here documents associated with the + current command. Set in parse.y:gather_here_documents() before + reading any here documents, set to 0 after reading the first line + of any here document in make_cmd.c:make_here_document(). + +parse.y + - history_delimiting_chars: if parser_state indicates we are reading + a here document, don't use current_command_line_count to see whether + or not we're on the first line of a here document -- it can be fooled + by multi-line commands (or even backslash-escaped newlines). Use + here_doc_first_line to check that directly. Fixes bug reported by + Geoffrey Allott + +shell.h,parse.y + - save and restore here_doc_first_line as part of the shell's parser + state + +lib/sh/tmpfile.c + - use ANSI-C rand() interface if random() not available. Fixes problem + with linking on (ancient) Solaris 2.4 reported by Klaus Ziegler + + + 12/2 + ---- +aclocal.m4 + - RL_LIB_READLINE_VERSION: if cross-compiling, assume current version + of readline if cross-compiling bash while using an external readline + library. Fix from Barry Davis + +execute_cmd.c + - execute_builtin: save and restore value of builtin_ignoring_errexit + instead of assuming we can set it back to 0 -- the ignore-errexit + cases might be nested + - execute_builtin: after a builtin executes and eval_unwind is set, + set exit_immediately_on_error to 0 if builtin_ignoring_errexit is + set, and back to the value of errexit otherwise, just like the + code that sets -e does. Fixes short-circuiting bug reported by + Marcin Swigon + + 12/5 + ---- +builtins/setattr.def + - set_or_show_attributes: instead of using a fixed string for the + options argument to `declare', which results in export adding the + readonly attribute, build the option string dynamically like in + subst.c:shell_expand_word_list() + - set_or_show_attributes: don't add the -r option to declare if the + attribute passed as an argument doesn't include att_readonly; add + -x if the attribute includes att_exported + - set_or_show_attributes: add the -g option to declare so readonly + and export in functions that go through this code path don't create + local variables. Part of fix for bug reported by ziyunfei + <446240525@qq.com> + +execute_cmd.c + - make_internal_declare: if we have an assignment builtin that isn't + supposed to create local variables (export/readonly), make sure to + add the W_ASSNGLOBAL flag to each assignment statement word. + Part of fix for bug reported by ziyunfei <446240525@qq.com> where + readonly can create local variables when invoked with a compound + array assignment as an argument within a shell function + +subst.c + - make_internal_declare: added third argument: command name. Not used + in any useful way yet + - do_compound_assignment: handle attempted assignments to readonly + variables and print error messages, like bind_variable does and the + callers expect. This means that assignments to readonly array + variables can't go through a code path that allows them to fail + silently + +doc/Makefile.in + - uninstall: run install-info --delete after removing the installed + info file to update the directory file + +execute_cmd.c + - execute_disk_command: since we still (and have always) perform + redirections in child processes, we need to mark that state so + we know that we're in a child process. subshell_performing_redirections + is the new variable; non-zero when executing do_redirections() + +subst.c + - process_substitute: if we are executing process substitution in a + redirection expansion context (expanding_redir == 1), the child + process should not have access to any temporary environment the + parent has. Call flush_tempenv() in the child process to get rid + of it. Fix for bug reported by Clint Hepner diff --git a/MANIFEST b/MANIFEST index 0a173e88..772257fb 100644 --- a/MANIFEST +++ b/MANIFEST @@ -856,6 +856,10 @@ tests/assoc5.sub f tests/assoc6.sub f tests/assoc7.sub f tests/assoc8.sub f +tests/attr.tests f +tests/attr.right f +tests/attr1.sub f +tests/attr2.sub f tests/braces.tests f tests/braces.right f tests/builtins.tests f @@ -1160,6 +1164,7 @@ tests/run-arith f tests/run-array f tests/run-array2 f tests/run-assoc f +tests/run-attr f tests/run-braces f tests/run-builtins f tests/run-case f diff --git a/Makefile.in b/Makefile.in index a9b0ddfe..cffc6745 100644 --- a/Makefile.in +++ b/Makefile.in @@ -567,7 +567,7 @@ LOADABLES_DIR = ${top_builddir}/examples/loadables # Keep GNU Make from exporting the entire environment for small machines. .NOEXPORT: -.made: $(Program) bashbug +.made: $(Program) bashbug $(SDIR)/man2html$(EXEEXT) @echo "$(Program) last made for a $(Machine) running $(OS)" >.made $(Program): .build $(OBJECTS) $(BUILTINS_DEP) $(LIBDEP) @@ -719,6 +719,9 @@ ${DEFDIR}/bashgetopt.o: $(BUILTIN_SRCDIR)/bashgetopt.c ${DEFDIR}/builtext.h: $(BUILTIN_DEFS) @(cd $(DEFDIR) && $(MAKE) $(MFLAGS) builtext.h ) || exit 1 +$(SDIR)/man2html$(EXEEXT): ${SUPPORT_SRC}/man2html.c + @(cd $(SDIR) && $(MAKE) $(MFLAGS) all ) || exit 1 + # For the justification of the following Makefile rules, see node # `Automatic Remaking' in GNU Autoconf documentation. diff --git a/aclocal.m4 b/aclocal.m4 index 7730d2d9..d3bac077 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1856,7 +1856,7 @@ main() ], ac_cv_rl_version=`cat conftest.rlv`, ac_cv_rl_version='0.0', -ac_cv_rl_version='4.2')]) +ac_cv_rl_version='6.3')]) CFLAGS="$_save_CFLAGS" LDFLAGS="$_save_LDFLAGS" diff --git a/bashhist.c b/bashhist.c index b744c86e..d0f022e3 100644 --- a/bashhist.c +++ b/bashhist.c @@ -1,6 +1,6 @@ /* bashhist.c -- bash interface to the GNU history library. */ -/* Copyright (C) 1993-2012 Free Software Foundation, Inc. +/* Copyright (C) 1993-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. diff --git a/builtins.h b/builtins.h index cc0c79c0..0cfea189 100644 --- a/builtins.h +++ b/builtins.h @@ -41,6 +41,7 @@ #define SPECIAL_BUILTIN 0x08 /* This is a Posix `special' builtin. */ #define ASSIGNMENT_BUILTIN 0x10 /* This builtin takes assignment statements. */ #define POSIX_BUILTIN 0x20 /* This builtins is special in the Posix command search order. */ +#define LOCALVAR_BUILTIN 0x40 /* This builtin creates local variables */ #define BASE_INDENT 4 diff --git a/builtins/mkbuiltins.c b/builtins/mkbuiltins.c index 26cf8293..0a762663 100644 --- a/builtins/mkbuiltins.c +++ b/builtins/mkbuiltins.c @@ -71,7 +71,8 @@ extern char *strcpy (); /* Flag values that builtins can have. */ #define BUILTIN_FLAG_SPECIAL 0x01 #define BUILTIN_FLAG_ASSIGNMENT 0x02 -#define BUILTIN_FLAG_POSIX_BUILTIN 0x04 +#define BUILTIN_FLAG_LOCALVAR 0x04 +#define BUILTIN_FLAG_POSIX_BUILTIN 0x08 #define BASE_INDENT 4 @@ -159,6 +160,11 @@ char *assignment_builtins[] = (char *)NULL }; +char *localvar_builtins[] = +{ + "declare", "local", "typeset", (char *)NULL +}; + /* The builtin commands that are special to the POSIX search order. */ char *posix_builtins[] = { @@ -170,6 +176,7 @@ char *posix_builtins[] = /* Forward declarations. */ static int is_special_builtin (); static int is_assignment_builtin (); +static int is_localvar_builtin (); static int is_posix_builtin (); #if !defined (HAVE_RENAME) @@ -820,6 +827,8 @@ builtin_handler (self, defs, arg) new->flags |= BUILTIN_FLAG_SPECIAL; if (is_assignment_builtin (name)) new->flags |= BUILTIN_FLAG_ASSIGNMENT; + if (is_localvar_builtin (name)) + new->flags |= BUILTIN_FLAG_LOCALVAR; if (is_posix_builtin (name)) new->flags |= BUILTIN_FLAG_POSIX_BUILTIN; @@ -1241,10 +1250,11 @@ write_builtins (defs, structfile, externfile) else fprintf (structfile, "(sh_builtin_func_t *)0x0, "); - fprintf (structfile, "%s%s%s%s, %s_doc,\n", + fprintf (structfile, "%s%s%s%s%s, %s_doc,\n", "BUILTIN_ENABLED | STATIC_BUILTIN", (builtin->flags & BUILTIN_FLAG_SPECIAL) ? " | SPECIAL_BUILTIN" : "", (builtin->flags & BUILTIN_FLAG_ASSIGNMENT) ? " | ASSIGNMENT_BUILTIN" : "", + (builtin->flags & BUILTIN_FLAG_LOCALVAR) ? " | LOCALVAR_BUILTIN" : "", (builtin->flags & BUILTIN_FLAG_POSIX_BUILTIN) ? " | POSIX_BUILTIN" : "", document_name (builtin)); @@ -1609,6 +1619,13 @@ is_assignment_builtin (name) return (_find_in_table (name, assignment_builtins)); } +static int +is_localvar_builtin (name) + char *name; +{ + return (_find_in_table (name, localvar_builtins)); +} + static int is_posix_builtin (name) char *name; diff --git a/builtins/setattr.def b/builtins/setattr.def index 04c0701f..9e9309ff 100644 --- a/builtins/setattr.def +++ b/builtins/setattr.def @@ -1,7 +1,7 @@ This file is setattr.def, from which is created setattr.c. It implements the builtins "export" and "readonly", in Bash. -Copyright (C) 1987-2014 Free Software Foundation, Inc. +Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -134,6 +134,8 @@ set_or_show_attributes (list, attribute, nodefs) #if defined (ARRAY_VARS) WORD_LIST *nlist, *tlist; WORD_DESC *w; + char optw[8]; + int opti; #endif functions_only = arrays_only = assoc_only = 0; @@ -238,8 +240,24 @@ set_or_show_attributes (list, attribute, nodefs) { tlist = list->next; list->next = (WORD_LIST *)NULL; - w = arrays_only ? make_word ("-ra") : make_word ("-rA"); + /* Add -g to avoid readonly/export creating local variables: + only local/declare/typeset create local variables */ + opti = 0; + optw[opti++] = '-'; + optw[opti++] = 'g'; + if (attribute & att_readonly) + optw[opti++] = 'r'; + if (attribute & att_exported) + optw[opti++] = 'x'; + if (arrays_only) + optw[opti++] = 'a'; + else + optw[opti++] = 'A'; + optw[opti] = '\0'; + + w = make_word (optw); nlist = make_word_list (w, list); + opt = declare_builtin (nlist); if (opt != EXECUTION_SUCCESS) assign_error++; diff --git a/configure b/configure index 52f6f5c1..b7ed931f 100755 --- a/configure +++ b/configure @@ -5299,7 +5299,7 @@ if ${ac_cv_rl_version+:} false; then : $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; then : - ac_cv_rl_version='4.2' + ac_cv_rl_version='6.3' else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ diff --git a/doc/Makefile.in b/doc/Makefile.in index 8b187a2f..5f0756c4 100644 --- a/doc/Makefile.in +++ b/doc/Makefile.in @@ -1,6 +1,6 @@ # This Makefile is for the Bash/documentation directory -*- text -*-. # -# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# Copyright (C) 2003-2015 Free Software Foundation, Inc. # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -154,13 +154,13 @@ BASHREF_FILES = $(srcdir)/bashref.texi $(srcdir)/fdl.texi $(srcdir)/version.texi # $(RM) $@ # -${TEXI2PDF} $< -all: ps info dvi text html +all: ps info dvi text html $(MAN2HTML) nodvi: ps info text html everything: all pdf PSFILES = bash.ps bashbug.ps article.ps builtins.ps rbash.ps DVIFILES = bashref.dvi bashref.ps -INFOFILES = bashref.info +INFOFILES = bashref.info bash.info MAN0FILES = bash.0 bashbug.0 builtins.0 rbash.0 HTMLFILES = bashref.html bash.html PDFFILES = bash.pdf bashref.pdf article.pdf rose94.pdf @@ -184,16 +184,16 @@ bashref.pdf: $(BASHREF_FILES) $(HSUSER) $(RLUSER) # can also use: -# $(MAKEINFO) --html --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi +# $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER) - $(TEXI2HTML) -menu -monolithic -I $(TEXINPUTDIR) $(srcdir)/bashref.texi + $(MAKEINFO) --html --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi bash.info: bashref.info ${SHELL} ${INFOPOST} < $(srcdir)/bashref.info > $@ ; \ bash.txt: bash.1 bash.ps: bash.1 -bash.html: bash.1 $(MAN2HTML) +bash.html: bash.1 bashbug.ps: bashbug.1 builtins.ps: builtins.1 bash.1 rbash.ps: rbash.1 bash.1 @@ -247,7 +247,7 @@ installdirs: $(SHELL) $(SUPPORT_SRCDIR)/mkinstalldirs $(DESTDIR)$(htmldir) ; \ fi -install: info installdirs bash.info +install: info installdirs -$(INSTALL_DATA) $(srcdir)/bash.1 $(DESTDIR)$(man1dir)/bash${man1ext} -$(INSTALL_DATA) $(srcdir)/bashbug.1 $(DESTDIR)$(man1dir)/bashbug${man1ext} -$(INSTALL_DATA) $(OTHER_DOCS) $(DESTDIR)$(docdir) @@ -274,10 +274,20 @@ install_builtins: installdirs install_everything: install install_builtins +install-html: html + -if test -n "${htmldir}" ; then \ + $(INSTALL_DATA) $(srcdir)/bash.html $(DESTDIR)$(htmldir) ; \ + $(INSTALL_DATA) $(srcdir)/bashref.html $(DESTDIR)$(htmldir) ; \ + fi + uninstall: -$(RM) $(DESTDIR)$(man1dir)/bash${man1ext} $(DESTDIR)$(man1dir)/bashbug${man1ext} -$(RM) $(DESTDIR)$(man1dir)/bash_builtins${man1ext} $(RM) $(DESTDIR)$(infodir)/bash.info +# run install-info if it is present to update the info directory + if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \ + install-info --delete --dir-file=$(DESTDIR)$(infodir)/dir $(DESTDIR)$(infodir)/bash.info; \ + else true; fi -( cd $(DESTDIR)$(docdir) && $(RM) $(OTHER_INSTALLED_DOCS) ) -if test -n "$(htmldir)" ; then \ $(RM) $(DESTDIR)$(htmldir)/bash.html ; \ diff --git a/doc/bash.0 b/doc/bash.0 index 92d5f4b6..a02ba502 100644 --- a/doc/bash.0 +++ b/doc/bash.0 @@ -586,13 +586,15 @@ QQUUOOTTIINNGG Enclosing characters in double quotes preserves the literal value of all characters within the quotes, with the exception of $$, ``, \\, and, - when history expansion is enabled, !!. The characters $$ and `` retain - their special meaning within double quotes. The backslash retains its - special meaning only when followed by one of the following characters: - $$, ``, "", \\, or <>. A double quote may be quoted within double - quotes by preceding it with a backslash. If enabled, history expansion - will be performed unless an !! appearing in double quotes is escaped - using a backslash. The backslash preceding the !! is not removed. + when history expansion is enabled, !!. When the shell is in _p_o_s_i_x _m_o_d_e, + the !! has no special meaning within double quotes, even when history + expansion is enabled. The characters $$ and `` retain their special + meaning within double quotes. The backslash retains its special mean- + ing only when followed by one of the following characters: $$, ``, "", \\, + or <>. A double quote may be quoted within double quotes by + preceding it with a backslash. If enabled, history expansion will be + performed unless an !! appearing in double quotes is escaped using a + backslash. The backslash preceding the !! is not removed. The special parameters ** and @@ have special meaning when in double quotes (see PPAARRAAMMEETTEERRSS below). @@ -785,8 +787,10 @@ PPAARRAAMMEETTEERRSS BBAASSHH__AALLIIAASSEESS An associative array variable whose members correspond to the internal list of aliases as maintained by the aalliiaass builtin. - Elements added to this array appear in the alias list; unsetting - array elements cause aliases to be removed from the alias list. + Elements added to this array appear in the alias list; however, + unsetting array elements currently does not cause aliases to be + removed from the alias list. If BBAASSHH__AALLIIAASSEESS is unset, it loses + its special properties, even if it is subsequently reset. BBAASSHH__AARRGGCC An array variable whose values are the number of parameters in each frame of the current bbaasshh execution call stack. The number @@ -809,8 +813,10 @@ PPAARRAAMMEETTEERRSS An associative array variable whose members correspond to the internal hash table of commands as maintained by the hhaasshh builtin. Elements added to this array appear in the hash table; - unsetting array elements cause commands to be removed from the - hash table. + however, unsetting array elements currently does not cause com- + mand names to be removed from the hash table. If BBAASSHH__CCMMDDSS is + unset, it loses its special properties, even if it is subse- + quently reset. BBAASSHH__CCOOMMMMAANNDD The command currently being executed or about to be executed, unless the shell is executing a command as the result of a trap, @@ -1065,70 +1071,72 @@ PPAARRAAMMEETTEERRSS EENNVV Similar to BBAASSHH__EENNVV; used when the shell is invoked in POSIX mode. EEXXEECCIIGGNNOORREE - A colon-separated list of extended glob patterns (see PPaatttteerrnn - MMaattcchhiinngg) defining the list of filenames to be ignored by com- - mand search. Files whose full pathnames match one of these pat- - terns are not considered executable files for the purposes of - completion and command execution. This does not affect the - behavior of the [[, tteesstt, and [[[[ commands. Use this variable to - ignore shared library files that have the executable bit set, - but are not executable files. + A colon-separated list of shell patterns (see PPaatttteerrnn MMaattcchhiinngg) + defining the list of filenames to be ignored by command search. + Files whose full pathnames match one of these patterns are not + considered executable files for the purposes of completion and + command execution. This does not affect the behavior of the [[, + tteesstt, and [[[[ commands. Use this variable to ignore shared + library files that have the executable bit set, but are not exe- + cutable files. The pattern matching honors the setting of the + eexxttgglloobb shell option. FFCCEEDDIITT The default editor for the ffcc builtin command. FFIIGGNNOORREE - A colon-separated list of suffixes to ignore when performing + A colon-separated list of suffixes to ignore when performing filename completion (see RREEAADDLLIINNEE below). A filename whose suf- - fix matches one of the entries in FFIIGGNNOORREE is excluded from the + fix matches one of the entries in FFIIGGNNOORREE is excluded from the list of matched filenames. A sample value is ".o:~". FFUUNNCCNNEESSTT - If set to a numeric value greater than 0, defines a maximum - function nesting level. Function invocations that exceed this + If set to a numeric value greater than 0, defines a maximum + function nesting level. Function invocations that exceed this nesting level will cause the current command to abort. GGLLOOBBIIGGNNOORREE A colon-separated list of patterns defining the set of filenames to be ignored by pathname expansion. If a filename matched by a - pathname expansion pattern also matches one of the patterns in + pathname expansion pattern also matches one of the patterns in GGLLOOBBIIGGNNOORREE, it is removed from the list of matches. HHIISSTTCCOONNTTRROOLL - A colon-separated list of values controlling how commands are - saved on the history list. If the list of values includes - _i_g_n_o_r_e_s_p_a_c_e, lines which begin with a ssppaaccee character are not - saved in the history list. A value of _i_g_n_o_r_e_d_u_p_s causes lines + A colon-separated list of values controlling how commands are + saved on the history list. If the list of values includes + _i_g_n_o_r_e_s_p_a_c_e, lines which begin with a ssppaaccee character are not + saved in the history list. A value of _i_g_n_o_r_e_d_u_p_s causes lines matching the previous history entry to not be saved. A value of _i_g_n_o_r_e_b_o_t_h is shorthand for _i_g_n_o_r_e_s_p_a_c_e and _i_g_n_o_r_e_d_u_p_s. A value of _e_r_a_s_e_d_u_p_s causes all previous lines matching the current line - to be removed from the history list before that line is saved. - Any value not in the above list is ignored. If HHIISSTTCCOONNTTRROOLL is - unset, or does not include a valid value, all lines read by the + to be removed from the history list before that line is saved. + Any value not in the above list is ignored. If HHIISSTTCCOONNTTRROOLL is + unset, or does not include a valid value, all lines read by the shell parser are saved on the history list, subject to the value - of HHIISSTTIIGGNNOORREE. The second and subsequent lines of a multi-line - compound command are not tested, and are added to the history + of HHIISSTTIIGGNNOORREE. The second and subsequent lines of a multi-line + compound command are not tested, and are added to the history regardless of the value of HHIISSTTCCOONNTTRROOLL. HHIISSTTFFIILLEE The name of the file in which command history is saved (see HHIISS-- - TTOORRYY below). The default value is _~_/_._b_a_s_h___h_i_s_t_o_r_y. If unset, + TTOORRYY below). The default value is _~_/_._b_a_s_h___h_i_s_t_o_r_y. If unset, the command history is not saved when a shell exits. HHIISSTTFFIILLEESSIIZZEE The maximum number of lines contained in the history file. When - this variable is assigned a value, the history file is trun- - cated, if necessary, to contain no more than that number of - lines by removing the oldest entries. The history file is also - truncated to this size after writing it when a shell exits. If - the value is 0, the history file is truncated to zero size. - Non-numeric values and numeric values less than zero inhibit - truncation. The shell sets the default value to the value of + this variable is assigned a value, the history file is trun- + cated, if necessary, to contain no more than that number of + lines by removing the oldest entries. The history file is also + truncated to this size after writing it when a shell exits. If + the value is 0, the history file is truncated to zero size. + Non-numeric values and numeric values less than zero inhibit + truncation. The shell sets the default value to the value of HHIISSTTSSIIZZEE after reading any startup files. HHIISSTTIIGGNNOORREE - A colon-separated list of patterns used to decide which command - lines should be saved on the history list. Each pattern is - anchored at the beginning of the line and must match the com- - plete line (no implicit `**' is appended). Each pattern is - tested against the line after the checks specified by HHIISSTTCCOONN-- - TTRROOLL are applied. In addition to the normal shell pattern + A colon-separated list of patterns used to decide which command + lines should be saved on the history list. Each pattern is + anchored at the beginning of the line and must match the com- + plete line (no implicit `**' is appended). Each pattern is + tested against the line after the checks specified by HHIISSTTCCOONN-- + TTRROOLL are applied. In addition to the normal shell pattern matching characters, `&&' matches the previous history line. `&&' - may be escaped using a backslash; the backslash is removed + may be escaped using a backslash; the backslash is removed before attempting a match. The second and subsequent lines of a multi-line compound command are not tested, and are added to the - history regardless of the value of HHIISSTTIIGGNNOORREE. + history regardless of the value of HHIISSTTIIGGNNOORREE. The pattern + matching honors the setting of the eexxttgglloobb shell option. HHIISSTTSSIIZZEE The number of commands to remember in the command history (see HHIISSTTOORRYY below). If the value is 0, commands are not saved in @@ -1245,6 +1253,9 @@ PPAARRAAMMEETTEERRSS number of trailing directory components to retain when expanding the \\ww and \\WW prompt string escapes (see PPRROOMMPPTTIINNGG below). Characters removed are replaced with an ellipsis. + PPSS00 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) + and displayed by interactive shells after reading a command and + before the command is executed. PPSS11 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) and used as the primary prompt string. The default value is ``\\ss--\\vv\\$$ ''. @@ -1760,116 +1771,118 @@ EEXXPPAANNSSIIOONN or ``_c_o_m_m_a_n_d`` - BBaasshh performs the expansion by executing _c_o_m_m_a_n_d and replacing the com- - mand substitution with the standard output of the command, with any - trailing newlines deleted. Embedded newlines are not deleted, but they - may be removed during word splitting. The command substitution $$((ccaatt - _f_i_l_e)) can be replaced by the equivalent but faster $$((<< _f_i_l_e)). + BBaasshh performs the expansion by executing _c_o_m_m_a_n_d in a subshell environ- + ment and replacing the command substitution with the standard output of + the command, with any trailing newlines deleted. Embedded newlines are + not deleted, but they may be removed during word splitting. The com- + mand substitution $$((ccaatt _f_i_l_e)) can be replaced by the equivalent but + faster $$((<< _f_i_l_e)). - When the old-style backquote form of substitution is used, backslash - retains its literal meaning except when followed by $$, ``, or \\. The + When the old-style backquote form of substitution is used, backslash + retains its literal meaning except when followed by $$, ``, or \\. The first backquote not preceded by a backslash terminates the command sub- - stitution. When using the $(_c_o_m_m_a_n_d) form, all characters between the + stitution. When using the $(_c_o_m_m_a_n_d) form, all characters between the parentheses make up the command; none are treated specially. Command substitutions may be nested. To nest when using the backquoted form, escape the inner backquotes with backslashes. - If the substitution appears within double quotes, word splitting and + If the substitution appears within double quotes, word splitting and pathname expansion are not performed on the results. AArriitthhmmeettiicc EExxppaannssiioonn - Arithmetic expansion allows the evaluation of an arithmetic expression - and the substitution of the result. The format for arithmetic expan- + Arithmetic expansion allows the evaluation of an arithmetic expression + and the substitution of the result. The format for arithmetic expan- sion is: $$((((_e_x_p_r_e_s_s_i_o_n)))) - The _e_x_p_r_e_s_s_i_o_n is treated as if it were within double quotes, but a - double quote inside the parentheses is not treated specially. All + The _e_x_p_r_e_s_s_i_o_n is treated as if it were within double quotes, but a + double quote inside the parentheses is not treated specially. All tokens in the expression undergo parameter and variable expansion, com- - mand substitution, and quote removal. The result is treated as the - arithmetic expression to be evaluated. Arithmetic expansions may be + mand substitution, and quote removal. The result is treated as the + arithmetic expression to be evaluated. Arithmetic expansions may be nested. - The evaluation is performed according to the rules listed below under + The evaluation is performed according to the rules listed below under AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN. If _e_x_p_r_e_s_s_i_o_n is invalid, bbaasshh prints a message indicating failure and no substitution occurs. PPrroocceessss SSuubbssttiittuuttiioonn - _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n allows a process's input or output to be referred - to using a filename. It takes the form of <<((_l_i_s_t)) or >>((_l_i_s_t)). The - process _l_i_s_t is run asynchronously, and its input or output appears as + _P_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n allows a process's input or output to be referred + to using a filename. It takes the form of <<((_l_i_s_t)) or >>((_l_i_s_t)). The + process _l_i_s_t is run asynchronously, and its input or output appears as a filename. This filename is passed as an argument to the current com- - mand as the result of the expansion. If the >>((_l_i_s_t)) form is used, - writing to the file will provide input for _l_i_s_t. If the <<((_l_i_s_t)) form - is used, the file passed as an argument should be read to obtain the + mand as the result of the expansion. If the >>((_l_i_s_t)) form is used, + writing to the file will provide input for _l_i_s_t. If the <<((_l_i_s_t)) form + is used, the file passed as an argument should be read to obtain the output of _l_i_s_t. Process substitution is supported on systems that sup- port named pipes (_F_I_F_O_s) or the //ddeevv//ffdd method of naming open files. - When available, process substitution is performed simultaneously with - parameter and variable expansion, command substitution, and arithmetic + When available, process substitution is performed simultaneously with + parameter and variable expansion, command substitution, and arithmetic expansion. WWoorrdd SSpplliittttiinngg - The shell scans the results of parameter expansion, command substitu- - tion, and arithmetic expansion that did not occur within double quotes + The shell scans the results of parameter expansion, command substitu- + tion, and arithmetic expansion that did not occur within double quotes for _w_o_r_d _s_p_l_i_t_t_i_n_g. - The shell treats each character of IIFFSS as a delimiter, and splits the - results of the other expansions into words using these characters as - field terminators. If IIFFSS is unset, or its value is exactly - <><><>, the default, then sequences of <>, <>, - and <> at the beginning and end of the results of the previous - expansions are ignored, and any sequence of IIFFSS characters not at the - beginning or end serves to delimit words. If IIFFSS has a value other - than the default, then sequences of the whitespace characters ssppaaccee and - ttaabb are ignored at the beginning and end of the word, as long as the - whitespace character is in the value of IIFFSS (an IIFFSS whitespace charac- - ter). Any character in IIFFSS that is not IIFFSS whitespace, along with any - adjacent IIFFSS whitespace characters, delimits a field. A sequence of - IIFFSS whitespace characters is also treated as a delimiter. If the value - of IIFFSS is null, no word splitting occurs. + The shell treats each character of IIFFSS as a delimiter, and splits the + results of the other expansions into words using these characters as + field terminators. If IIFFSS is unset, or its value is exactly + <><><>, the default, then sequences of <>, <>, + and <> at the beginning and end of the results of the previous + expansions are ignored, and any sequence of IIFFSS characters not at the + beginning or end serves to delimit words. If IIFFSS has a value other + than the default, then sequences of the whitespace characters ssppaaccee, + ttaabb, and nneewwlliinnee are ignored at the beginning and end of the word, as + long as the whitespace character is in the value of IIFFSS (an IIFFSS white- + space character). Any character in IIFFSS that is not IIFFSS whitespace, + along with any adjacent IIFFSS whitespace characters, delimits a field. A + sequence of IIFFSS whitespace characters is also treated as a delimiter. + If the value of IIFFSS is null, no word splitting occurs. - Explicit null arguments ("""" or '''') are retained. Unquoted implicit + Explicit null arguments ("""" or '''') are retained. Unquoted implicit null arguments, resulting from the expansion of parameters that have no - values, are removed. If a parameter with no value is expanded within + values, are removed. If a parameter with no value is expanded within double quotes, a null argument results and is retained. Note that if no expansion occurs, no splitting is performed. PPaatthhnnaammee EExxppaannssiioonn - After word splitting, unless the --ff option has been set, bbaasshh scans - each word for the characters **, ??, and [[. If one of these characters - appears, then the word is regarded as a _p_a_t_t_e_r_n, and replaced with an - alphabetically sorted list of filenames matching the pattern (see PPaatt-- - tteerrnn MMaattcchhiinngg below). If no matching filenames are found, and the - shell option nnuullllgglloobb is not enabled, the word is left unchanged. If - the nnuullllgglloobb option is set, and no matches are found, the word is - removed. If the ffaaiillgglloobb shell option is set, and no matches are + After word splitting, unless the --ff option has been set, bbaasshh scans + each word for the characters **, ??, and [[. If one of these characters + appears, then the word is regarded as a _p_a_t_t_e_r_n, and replaced with an + alphabetically sorted list of filenames matching the pattern (see PPaatt-- + tteerrnn MMaattcchhiinngg below). If no matching filenames are found, and the + shell option nnuullllgglloobb is not enabled, the word is left unchanged. If + the nnuullllgglloobb option is set, and no matches are found, the word is + removed. If the ffaaiillgglloobb shell option is set, and no matches are found, an error message is printed and the command is not executed. If - the shell option nnooccaasseegglloobb is enabled, the match is performed without - regard to the case of alphabetic characters. When a pattern is used - for pathname expansion, the character ````..'''' at the start of a name or - immediately following a slash must be matched explicitly, unless the + the shell option nnooccaasseegglloobb is enabled, the match is performed without + regard to the case of alphabetic characters. When a pattern is used + for pathname expansion, the character ````..'''' at the start of a name or + immediately following a slash must be matched explicitly, unless the shell option ddoottgglloobb is set. When matching a pathname, the slash char- - acter must always be matched explicitly. In other cases, the ````..'''' + acter must always be matched explicitly. In other cases, the ````..'''' character is not treated specially. See the description of sshhoopptt below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS for a description of the nnooccaasseegglloobb, nnuullll-- gglloobb, ffaaiillgglloobb, and ddoottgglloobb shell options. - The GGLLOOBBIIGGNNOORREE shell variable may be used to restrict the set of file- + The GGLLOOBBIIGGNNOORREE shell variable may be used to restrict the set of file- names matching a _p_a_t_t_e_r_n. If GGLLOOBBIIGGNNOORREE is set, each matching filename that also matches one of the patterns in GGLLOOBBIIGGNNOORREE is removed from the list of matches. If the nnooccaasseegglloobb option is set, the matching against - the patterns in GGLLOOBBIIGGNNOORREE is performed without regard to case. The - filenames ````..'''' and ````....'''' are always ignored when GGLLOOBBIIGGNNOORREE is set - and not null. However, setting GGLLOOBBIIGGNNOORREE to a non-null value has the - effect of enabling the ddoottgglloobb shell option, so all other filenames - beginning with a ````..'''' will match. To get the old behavior of ignor- - ing filenames beginning with a ````..'''', make ````..**'''' one of the patterns - in GGLLOOBBIIGGNNOORREE. The ddoottgglloobb option is disabled when GGLLOOBBIIGGNNOORREE is - unset. + the patterns in GGLLOOBBIIGGNNOORREE is performed without regard to case. The + filenames ````..'''' and ````....'''' are always ignored when GGLLOOBBIIGGNNOORREE is set + and not null. However, setting GGLLOOBBIIGGNNOORREE to a non-null value has the + effect of enabling the ddoottgglloobb shell option, so all other filenames + beginning with a ````..'''' will match. To get the old behavior of ignor- + ing filenames beginning with a ````..'''', make ````..**'''' one of the patterns + in GGLLOOBBIIGGNNOORREE. The ddoottgglloobb option is disabled when GGLLOOBBIIGGNNOORREE is + unset. The pattern matching honors the setting of the eexxttgglloobb shell + option. PPaatttteerrnn MMaattcchhiinngg @@ -2124,8 +2137,9 @@ RREEDDIIRREECCTTIIOONN The _w_o_r_d undergoes brace expansion, tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote removal. Pathname expansion and word splitting are not per- - formed. The result is supplied as a single string to the command on - its standard input (or file descriptor _n if _n is specified). + formed. The result is supplied as a single string, with a newline + appended, to the command on its standard input (or file descriptor _n if + _n is specified). DDuupplliiccaattiinngg FFiillee DDeessccrriippttoorrss The redirection operator @@ -2133,22 +2147,22 @@ RREEDDIIRREECCTTIIOONN [_n]<<&&_w_o_r_d is used to duplicate input file descriptors. If _w_o_r_d expands to one or - more digits, the file descriptor denoted by _n is made to be a copy of - that file descriptor. If the digits in _w_o_r_d do not specify a file - descriptor open for input, a redirection error occurs. If _w_o_r_d evalu- - ates to --, file descriptor _n is closed. If _n is not specified, the + more digits, the file descriptor denoted by _n is made to be a copy of + that file descriptor. If the digits in _w_o_r_d do not specify a file + descriptor open for input, a redirection error occurs. If _w_o_r_d evalu- + ates to --, file descriptor _n is closed. If _n is not specified, the standard input (file descriptor 0) is used. The operator [_n]>>&&_w_o_r_d - is used similarly to duplicate output file descriptors. If _n is not - specified, the standard output (file descriptor 1) is used. If the - digits in _w_o_r_d do not specify a file descriptor open for output, a re- - direction error occurs. If _w_o_r_d evaluates to --, file descriptor _n is - closed. As a special case, if _n is omitted, and _w_o_r_d does not expand - to one or more digits or --, the standard output and standard error are + is used similarly to duplicate output file descriptors. If _n is not + specified, the standard output (file descriptor 1) is used. If the + digits in _w_o_r_d do not specify a file descriptor open for output, a re- + direction error occurs. If _w_o_r_d evaluates to --, file descriptor _n is + closed. As a special case, if _n is omitted, and _w_o_r_d does not expand + to one or more digits or --, the standard output and standard error are redirected as described previously. MMoovviinngg FFiillee DDeessccrriippttoorrss @@ -2156,7 +2170,7 @@ RREEDDIIRREECCTTIIOONN [_n]<<&&_d_i_g_i_t-- - moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard + moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard input (file descriptor 0) if _n is not specified. _d_i_g_i_t is closed after being duplicated to _n. @@ -2164,7 +2178,7 @@ RREEDDIIRREECCTTIIOONN [_n]>>&&_d_i_g_i_t-- - moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard + moves the file descriptor _d_i_g_i_t to file descriptor _n, or the standard output (file descriptor 1) if _n is not specified. OOppeenniinngg FFiillee DDeessccrriippttoorrss ffoorr RReeaaddiinngg aanndd WWrriittiinngg @@ -2172,117 +2186,117 @@ RREEDDIIRREECCTTIIOONN [_n]<<>>_w_o_r_d - causes the file whose name is the expansion of _w_o_r_d to be opened for - both reading and writing on file descriptor _n, or on file descriptor 0 + causes the file whose name is the expansion of _w_o_r_d to be opened for + both reading and writing on file descriptor _n, or on file descriptor 0 if _n is not specified. If the file does not exist, it is created. AALLIIAASSEESS - _A_l_i_a_s_e_s allow a string to be substituted for a word when it is used as - the first word of a simple command. The shell maintains a list of - aliases that may be set and unset with the aalliiaass and uunnaalliiaass builtin - commands (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The first word of each - simple command, if unquoted, is checked to see if it has an alias. If - so, that word is replaced by the text of the alias. The characters //, - $$, ``, and == and any of the shell _m_e_t_a_c_h_a_r_a_c_t_e_r_s or quoting characters + _A_l_i_a_s_e_s allow a string to be substituted for a word when it is used as + the first word of a simple command. The shell maintains a list of + aliases that may be set and unset with the aalliiaass and uunnaalliiaass builtin + commands (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The first word of each + simple command, if unquoted, is checked to see if it has an alias. If + so, that word is replaced by the text of the alias. The characters //, + $$, ``, and == and any of the shell _m_e_t_a_c_h_a_r_a_c_t_e_r_s or quoting characters listed above may not appear in an alias name. The replacement text may - contain any valid shell input, including shell metacharacters. The - first word of the replacement text is tested for aliases, but a word - that is identical to an alias being expanded is not expanded a second - time. This means that one may alias llss to llss --FF, for instance, and - bbaasshh does not try to recursively expand the replacement text. If the - last character of the alias value is a _b_l_a_n_k, then the next command + contain any valid shell input, including shell metacharacters. The + first word of the replacement text is tested for aliases, but a word + that is identical to an alias being expanded is not expanded a second + time. This means that one may alias llss to llss --FF, for instance, and + bbaasshh does not try to recursively expand the replacement text. If the + last character of the alias value is a _b_l_a_n_k, then the next command word following the alias is also checked for alias expansion. Aliases are created and listed with the aalliiaass command, and removed with the uunnaalliiaass command. - There is no mechanism for using arguments in the replacement text. If - arguments are needed, a shell function should be used (see FFUUNNCCTTIIOONNSS + There is no mechanism for using arguments in the replacement text. If + arguments are needed, a shell function should be used (see FFUUNNCCTTIIOONNSS below). - Aliases are not expanded when the shell is not interactive, unless the - eexxppaanndd__aalliiaasseess shell option is set using sshhoopptt (see the description of + Aliases are not expanded when the shell is not interactive, unless the + eexxppaanndd__aalliiaasseess shell option is set using sshhoopptt (see the description of sshhoopptt under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - The rules concerning the definition and use of aliases are somewhat - confusing. BBaasshh always reads at least one complete line of input - before executing any of the commands on that line. Aliases are - expanded when a command is read, not when it is executed. Therefore, - an alias definition appearing on the same line as another command does - not take effect until the next line of input is read. The commands + The rules concerning the definition and use of aliases are somewhat + confusing. BBaasshh always reads at least one complete line of input + before executing any of the commands on that line. Aliases are + expanded when a command is read, not when it is executed. Therefore, + an alias definition appearing on the same line as another command does + not take effect until the next line of input is read. The commands following the alias definition on that line are not affected by the new - alias. This behavior is also an issue when functions are executed. - Aliases are expanded when a function definition is read, not when the - function is executed, because a function definition is itself a com- - mand. As a consequence, aliases defined in a function are not avail- - able until after that function is executed. To be safe, always put - alias definitions on a separate line, and do not use aalliiaass in compound + alias. This behavior is also an issue when functions are executed. + Aliases are expanded when a function definition is read, not when the + function is executed, because a function definition is itself a com- + mand. As a consequence, aliases defined in a function are not avail- + able until after that function is executed. To be safe, always put + alias definitions on a separate line, and do not use aalliiaass in compound commands. For almost every purpose, aliases are superseded by shell functions. FFUUNNCCTTIIOONNSS - A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR, - stores a series of commands for later execution. When the name of a - shell function is used as a simple command name, the list of commands + A shell function, defined as described above under SSHHEELLLL GGRRAAMMMMAARR, + stores a series of commands for later execution. When the name of a + shell function is used as a simple command name, the list of commands associated with that function name is executed. Functions are executed - in the context of the current shell; no new process is created to - interpret them (contrast this with the execution of a shell script). - When a function is executed, the arguments to the function become the + in the context of the current shell; no new process is created to + interpret them (contrast this with the execution of a shell script). + When a function is executed, the arguments to the function become the positional parameters during its execution. The special parameter ## is - updated to reflect the change. Special parameter 00 is unchanged. The - first element of the FFUUNNCCNNAAMMEE variable is set to the name of the func- + updated to reflect the change. Special parameter 00 is unchanged. The + first element of the FFUUNNCCNNAAMMEE variable is set to the name of the func- tion while the function is executing. - All other aspects of the shell execution environment are identical - between a function and its caller with these exceptions: the DDEEBBUUGG and - RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been - given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin - below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett - builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN - traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell + All other aspects of the shell execution environment are identical + between a function and its caller with these exceptions: the DDEEBBUUGG and + RREETTUURRNN traps (see the description of the ttrraapp builtin under SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below) are not inherited unless the function has been + given the ttrraaccee attribute (see the description of the ddeeccllaarree builtin + below) or the --oo ffuunnccttrraaccee shell option has been enabled with the sseett + builtin (in which case all functions inherit the DDEEBBUUGG and RREETTUURRNN + traps), and the EERRRR trap is not inherited unless the --oo eerrrrttrraaccee shell option has been enabled. - Variables local to the function may be declared with the llooccaall builtin + Variables local to the function may be declared with the llooccaall builtin command. Ordinarily, variables and their values are shared between the function and its caller. - The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, - defines a maximum function nesting level. Function invocations that + The FFUUNNCCNNEESSTT variable, if set to a numeric value greater than 0, + defines a maximum function nesting level. Function invocations that exceed the limit cause the entire command to abort. - If the builtin command rreettuurrnn is executed in a function, the function - completes and execution resumes with the next command after the func- - tion call. Any command associated with the RREETTUURRNN trap is executed + If the builtin command rreettuurrnn is executed in a function, the function + completes and execution resumes with the next command after the func- + tion call. Any command associated with the RREETTUURRNN trap is executed before execution resumes. When a function completes, the values of the - positional parameters and the special parameter ## are restored to the + positional parameters and the special parameter ## are restored to the values they had prior to the function's execution. - Function names and definitions may be listed with the --ff option to the + Function names and definitions may be listed with the --ff option to the ddeeccllaarree or ttyyppeesseett builtin commands. The --FF option to ddeeccllaarree or ttyyppee-- - sseett will list the function names only (and optionally the source file - and line number, if the eexxttddeebbuugg shell option is enabled). Functions - may be exported so that subshells automatically have them defined with - the --ff option to the eexxppoorrtt builtin. A function definition may be - deleted using the --ff option to the uunnsseett builtin. Note that shell + sseett will list the function names only (and optionally the source file + and line number, if the eexxttddeebbuugg shell option is enabled). Functions + may be exported so that subshells automatically have them defined with + the --ff option to the eexxppoorrtt builtin. A function definition may be + deleted using the --ff option to the uunnsseett builtin. Note that shell functions and variables with the same name may result in multiple iden- - tically-named entries in the environment passed to the shell's chil- + tically-named entries in the environment passed to the shell's chil- dren. Care should be taken in cases where this may cause a problem. Functions may be recursive. The FFUUNNCCNNEESSTT variable may be used to limit - the depth of the function call stack and restrict the number of func- - tion invocations. By default, no limit is imposed on the number of + the depth of the function call stack and restrict the number of func- + tion invocations. By default, no limit is imposed on the number of recursive calls. AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN - The shell allows arithmetic expressions to be evaluated, under certain - circumstances (see the lleett and ddeeccllaarree builtin commands and AArriitthhmmeettiicc - EExxppaannssiioonn). Evaluation is done in fixed-width integers with no check - for overflow, though division by 0 is trapped and flagged as an error. - The operators and their precedence, associativity, and values are the - same as in the C language. The following list of operators is grouped - into levels of equal-precedence operators. The levels are listed in + The shell allows arithmetic expressions to be evaluated, under certain + circumstances (see the lleett and ddeeccllaarree builtin commands and AArriitthhmmeettiicc + EExxppaannssiioonn). Evaluation is done in fixed-width integers with no check + for overflow, though division by 0 is trapped and flagged as an error. + The operators and their precedence, associativity, and values are the + same as in the C language. The following list of operators is grouped + into levels of equal-precedence operators. The levels are listed in order of decreasing precedence. _i_d++++ _i_d---- @@ -2310,46 +2324,46 @@ AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN _e_x_p_r_1 ,, _e_x_p_r_2 comma - Shell variables are allowed as operands; parameter expansion is per- + Shell variables are allowed as operands; parameter expansion is per- formed before the expression is evaluated. Within an expression, shell - variables may also be referenced by name without using the parameter - expansion syntax. A shell variable that is null or unset evaluates to + variables may also be referenced by name without using the parameter + expansion syntax. A shell variable that is null or unset evaluates to 0 when referenced by name without using the parameter expansion syntax. - The value of a variable is evaluated as an arithmetic expression when - it is referenced, or when a variable which has been given the _i_n_t_e_g_e_r + The value of a variable is evaluated as an arithmetic expression when + it is referenced, or when a variable which has been given the _i_n_t_e_g_e_r attribute using ddeeccllaarree --ii is assigned a value. A null value evaluates - to 0. A shell variable need not have its _i_n_t_e_g_e_r attribute turned on + to 0. A shell variable need not have its _i_n_t_e_g_e_r attribute turned on to be used in an expression. Constants with a leading 0 are interpreted as octal numbers. A leading - 0x or 0X denotes hexadecimal. Otherwise, numbers take the form - [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal number between 2 and 64 - representing the arithmetic base, and _n is a number in that base. If - _b_a_s_e_# is omitted, then base 10 is used. When specifying _n, the digits - greater than 9 are represented by the lowercase letters, the uppercase + 0x or 0X denotes hexadecimal. Otherwise, numbers take the form + [_b_a_s_e_#]n, where the optional _b_a_s_e is a decimal number between 2 and 64 + representing the arithmetic base, and _n is a number in that base. If + _b_a_s_e_# is omitted, then base 10 is used. When specifying _n, the digits + greater than 9 are represented by the lowercase letters, the uppercase letters, @, and _, in that order. If _b_a_s_e is less than or equal to 36, - lowercase and uppercase letters may be used interchangeably to repre- + lowercase and uppercase letters may be used interchangeably to repre- sent numbers between 10 and 35. - Operators are evaluated in order of precedence. Sub-expressions in - parentheses are evaluated first and may override the precedence rules + Operators are evaluated in order of precedence. Sub-expressions in + parentheses are evaluated first and may override the precedence rules above. CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS - Conditional expressions are used by the [[[[ compound command and the - tteesstt and [[ builtin commands to test file attributes and perform string - and arithmetic comparisons. Expressions are formed from the following - unary or binary primaries. If any _f_i_l_e argument to one of the pri- + Conditional expressions are used by the [[[[ compound command and the + tteesstt and [[ builtin commands to test file attributes and perform string + and arithmetic comparisons. Expressions are formed from the following + unary or binary primaries. If any _f_i_l_e argument to one of the pri- maries is of the form _/_d_e_v_/_f_d_/_n, then file descriptor _n is checked. If - the _f_i_l_e argument to one of the primaries is one of _/_d_e_v_/_s_t_d_i_n, - _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, 1, or 2, respectively, + the _f_i_l_e argument to one of the primaries is one of _/_d_e_v_/_s_t_d_i_n, + _/_d_e_v_/_s_t_d_o_u_t, or _/_d_e_v_/_s_t_d_e_r_r, file descriptor 0, 1, or 2, respectively, is checked. Unless otherwise specified, primaries that operate on files follow sym- bolic links and operate on the target of the link, rather than the link itself. - When used with [[[[, the << and >> operators sort lexicographically using + When used with [[[[, the << and >> operators sort lexicographically using the current locale. The tteesstt command sorts using ASCII ordering. --aa _f_i_l_e @@ -2388,30 +2402,30 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS --LL _f_i_l_e True if _f_i_l_e exists and is a symbolic link. --NN _f_i_l_e - True if _f_i_l_e exists and has been modified since it was last + True if _f_i_l_e exists and has been modified since it was last read. --OO _f_i_l_e True if _f_i_l_e exists and is owned by the effective user id. --SS _f_i_l_e True if _f_i_l_e exists and is a socket. _f_i_l_e_1 --eeff _f_i_l_e_2 - True if _f_i_l_e_1 and _f_i_l_e_2 refer to the same device and inode num- + True if _f_i_l_e_1 and _f_i_l_e_2 refer to the same device and inode num- bers. _f_i_l_e_1 -nntt _f_i_l_e_2 - True if _f_i_l_e_1 is newer (according to modification date) than + True if _f_i_l_e_1 is newer (according to modification date) than _f_i_l_e_2, or if _f_i_l_e_1 exists and _f_i_l_e_2 does not. _f_i_l_e_1 -oott _f_i_l_e_2 - True if _f_i_l_e_1 is older than _f_i_l_e_2, or if _f_i_l_e_2 exists and _f_i_l_e_1 + True if _f_i_l_e_1 is older than _f_i_l_e_2, or if _f_i_l_e_2 exists and _f_i_l_e_1 does not. --oo _o_p_t_n_a_m_e - True if the shell option _o_p_t_n_a_m_e is enabled. See the list of - options under the description of the --oo option to the sseett + True if the shell option _o_p_t_n_a_m_e is enabled. See the list of + options under the description of the --oo option to the sseett builtin below. --vv _v_a_r_n_a_m_e - True if the shell variable _v_a_r_n_a_m_e is set (has been assigned a + True if the shell variable _v_a_r_n_a_m_e is set (has been assigned a value). --RR _v_a_r_n_a_m_e - True if the shell variable _v_a_r_n_a_m_e is set and is a name refer- + True if the shell variable _v_a_r_n_a_m_e is set and is a name refer- ence. --zz _s_t_r_i_n_g True if the length of _s_t_r_i_n_g is zero. @@ -2421,8 +2435,8 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS _s_t_r_i_n_g_1 ==== _s_t_r_i_n_g_2 _s_t_r_i_n_g_1 == _s_t_r_i_n_g_2 - True if the strings are equal. == should be used with the tteesstt - command for POSIX conformance. When used with the [[[[ command, + True if the strings are equal. == should be used with the tteesstt + command for POSIX conformance. When used with the [[[[ command, this performs pattern matching as described above (CCoommppoouunndd CCoomm-- mmaannddss). @@ -2436,106 +2450,106 @@ CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS True if _s_t_r_i_n_g_1 sorts after _s_t_r_i_n_g_2 lexicographically. _a_r_g_1 OOPP _a_r_g_2 - OOPP is one of --eeqq, --nnee, --lltt, --llee, --ggtt, or --ggee. These arithmetic - binary operators return true if _a_r_g_1 is equal to, not equal to, - less than, less than or equal to, greater than, or greater than - or equal to _a_r_g_2, respectively. _A_r_g_1 and _a_r_g_2 may be positive + OOPP is one of --eeqq, --nnee, --lltt, --llee, --ggtt, or --ggee. These arithmetic + binary operators return true if _a_r_g_1 is equal to, not equal to, + less than, less than or equal to, greater than, or greater than + or equal to _a_r_g_2, respectively. _A_r_g_1 and _a_r_g_2 may be positive or negative integers. SSIIMMPPLLEE CCOOMMMMAANNDD EEXXPPAANNSSIIOONN - When a simple command is executed, the shell performs the following + When a simple command is executed, the shell performs the following expansions, assignments, and redirections, from left to right. - 1. The words that the parser has marked as variable assignments - (those preceding the command name) and redirections are saved + 1. The words that the parser has marked as variable assignments + (those preceding the command name) and redirections are saved for later processing. - 2. The words that are not variable assignments or redirections are - expanded. If any words remain after expansion, the first word - is taken to be the name of the command and the remaining words + 2. The words that are not variable assignments or redirections are + expanded. If any words remain after expansion, the first word + is taken to be the name of the command and the remaining words are the arguments. 3. Redirections are performed as described above under RREEDDIIRREECCTTIIOONN. 4. The text after the == in each variable assignment undergoes tilde expansion, parameter expansion, command substitution, arithmetic - expansion, and quote removal before being assigned to the vari- + expansion, and quote removal before being assigned to the vari- able. If no command name results, the variable assignments affect the current - shell environment. Otherwise, the variables are added to the environ- - ment of the executed command and do not affect the current shell envi- - ronment. If any of the assignments attempts to assign a value to a - readonly variable, an error occurs, and the command exits with a non- + shell environment. Otherwise, the variables are added to the environ- + ment of the executed command and do not affect the current shell envi- + ronment. If any of the assignments attempts to assign a value to a + readonly variable, an error occurs, and the command exits with a non- zero status. - If no command name results, redirections are performed, but do not - affect the current shell environment. A redirection error causes the + If no command name results, redirections are performed, but do not + affect the current shell environment. A redirection error causes the command to exit with a non-zero status. - If there is a command name left after expansion, execution proceeds as - described below. Otherwise, the command exits. If one of the expan- - sions contained a command substitution, the exit status of the command - is the exit status of the last command substitution performed. If + If there is a command name left after expansion, execution proceeds as + described below. Otherwise, the command exits. If one of the expan- + sions contained a command substitution, the exit status of the command + is the exit status of the last command substitution performed. If there were no command substitutions, the command exits with a status of zero. CCOOMMMMAANNDD EEXXEECCUUTTIIOONN - After a command has been split into words, if it results in a simple - command and an optional list of arguments, the following actions are + After a command has been split into words, if it results in a simple + command and an optional list of arguments, the following actions are taken. - If the command name contains no slashes, the shell attempts to locate - it. If there exists a shell function by that name, that function is - invoked as described above in FFUUNNCCTTIIOONNSS. If the name does not match a - function, the shell searches for it in the list of shell builtins. If + If the command name contains no slashes, the shell attempts to locate + it. If there exists a shell function by that name, that function is + invoked as described above in FFUUNNCCTTIIOONNSS. If the name does not match a + function, the shell searches for it in the list of shell builtins. If a match is found, that builtin is invoked. - If the name is neither a shell function nor a builtin, and contains no - slashes, bbaasshh searches each element of the PPAATTHH for a directory con- - taining an executable file by that name. BBaasshh uses a hash table to - remember the full pathnames of executable files (see hhaasshh under SSHHEELLLL - BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A full search of the directories in PPAATTHH is - performed only if the command is not found in the hash table. If the + If the name is neither a shell function nor a builtin, and contains no + slashes, bbaasshh searches each element of the PPAATTHH for a directory con- + taining an executable file by that name. BBaasshh uses a hash table to + remember the full pathnames of executable files (see hhaasshh under SSHHEELLLL + BBUUIILLTTIINN CCOOMMMMAANNDDSS below). A full search of the directories in PPAATTHH is + performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell function named ccoommmmaanndd__nnoott__ffoouunndd__hhaannddllee. If that function exists, it is invoked - with the original command and the original command's arguments as its - arguments, and the function's exit status becomes the exit status of - the shell. If that function is not defined, the shell prints an error + with the original command and the original command's arguments as its + arguments, and the function's exit status becomes the exit status of + the shell. If that function is not defined, the shell prints an error message and returns an exit status of 127. - If the search is successful, or if the command name contains one or + If the search is successful, or if the command name contains one or more slashes, the shell executes the named program in a separate execu- tion environment. Argument 0 is set to the name given, and the remain- ing arguments to the command are set to the arguments given, if any. - If this execution fails because the file is not in executable format, - and the file is not a directory, it is assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a - file containing shell commands. A subshell is spawned to execute it. - This subshell reinitializes itself, so that the effect is as if a new - shell had been invoked to handle the script, with the exception that - the locations of commands remembered by the parent (see hhaasshh below + If this execution fails because the file is not in executable format, + and the file is not a directory, it is assumed to be a _s_h_e_l_l _s_c_r_i_p_t, a + file containing shell commands. A subshell is spawned to execute it. + This subshell reinitializes itself, so that the effect is as if a new + shell had been invoked to handle the script, with the exception that + the locations of commands remembered by the parent (see hhaasshh below under SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS) are retained by the child. - If the program is a file beginning with ##!!, the remainder of the first - line specifies an interpreter for the program. The shell executes the + If the program is a file beginning with ##!!, the remainder of the first + line specifies an interpreter for the program. The shell executes the specified interpreter on operating systems that do not handle this exe- cutable format themselves. The arguments to the interpreter consist of - a single optional argument following the interpreter name on the first - line of the program, followed by the name of the program, followed by + a single optional argument following the interpreter name on the first + line of the program, followed by the name of the program, followed by the command arguments, if any. CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT - The shell has an _e_x_e_c_u_t_i_o_n _e_n_v_i_r_o_n_m_e_n_t, which consists of the follow- + The shell has an _e_x_e_c_u_t_i_o_n _e_n_v_i_r_o_n_m_e_n_t, which consists of the follow- ing: - +o open files inherited by the shell at invocation, as modified by + +o open files inherited by the shell at invocation, as modified by redirections supplied to the eexxeecc builtin - +o the current working directory as set by ccdd, ppuusshhdd, or ppooppdd, or + +o the current working directory as set by ccdd, ppuusshhdd, or ppooppdd, or inherited by the shell at invocation - +o the file creation mode mask as set by uummaasskk or inherited from + +o the file creation mode mask as set by uummaasskk or inherited from the shell's parent +o current traps set by ttrraapp @@ -2543,235 +2557,236 @@ CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENN +o shell parameters that are set by variable assignment or with sseett or inherited from the shell's parent in the environment - +o shell functions defined during execution or inherited from the + +o shell functions defined during execution or inherited from the shell's parent in the environment - +o options enabled at invocation (either by default or with com- + +o options enabled at invocation (either by default or with com- mand-line arguments) or by sseett +o options enabled by sshhoopptt +o shell aliases defined with aalliiaass - +o various process IDs, including those of background jobs, the + +o various process IDs, including those of background jobs, the value of $$$$, and the value of PPPPIIDD - When a simple command other than a builtin or shell function is to be - executed, it is invoked in a separate execution environment that con- - sists of the following. Unless otherwise noted, the values are inher- + When a simple command other than a builtin or shell function is to be + executed, it is invoked in a separate execution environment that con- + sists of the following. Unless otherwise noted, the values are inher- ited from the shell. - +o the shell's open files, plus any modifications and additions + +o the shell's open files, plus any modifications and additions specified by redirections to the command +o the current working directory +o the file creation mode mask - +o shell variables and functions marked for export, along with + +o shell variables and functions marked for export, along with variables exported for the command, passed in the environment +o traps caught by the shell are reset to the values inherited from the shell's parent, and traps ignored by the shell are ignored - A command invoked in this separate environment cannot affect the + A command invoked in this separate environment cannot affect the shell's execution environment. - Command substitution, commands grouped with parentheses, and asynchro- + Command substitution, commands grouped with parentheses, and asynchro- nous commands are invoked in a subshell environment that is a duplicate - of the shell environment, except that traps caught by the shell are + of the shell environment, except that traps caught by the shell are reset to the values that the shell inherited from its parent at invoca- tion. Builtin commands that are invoked as part of a pipeline are also executed in a subshell environment. Changes made to the subshell envi- ronment cannot affect the shell's execution environment. Subshells spawned to execute command substitutions inherit the value of - the --ee option from the parent shell. When not in _p_o_s_i_x mode, bbaasshh + the --ee option from the parent shell. When not in _p_o_s_i_x mode, bbaasshh clears the --ee option in such subshells. - If a command is followed by a && and job control is not active, the - default standard input for the command is the empty file _/_d_e_v_/_n_u_l_l. - Otherwise, the invoked command inherits the file descriptors of the + If a command is followed by a && and job control is not active, the + default standard input for the command is the empty file _/_d_e_v_/_n_u_l_l. + Otherwise, the invoked command inherits the file descriptors of the calling shell as modified by redirections. EENNVVIIRROONNMMEENNTT - When a program is invoked it is given an array of strings called the + When a program is invoked it is given an array of strings called the _e_n_v_i_r_o_n_m_e_n_t. This is a list of _n_a_m_e-_v_a_l_u_e pairs, of the form _n_a_m_e=_v_a_l_u_e. - The shell provides several ways to manipulate the environment. On + The shell provides several ways to manipulate the environment. On invocation, the shell scans its own environment and creates a parameter - for each name found, automatically marking it for _e_x_p_o_r_t to child pro- - cesses. Executed commands inherit the environment. The eexxppoorrtt and - ddeeccllaarree --xx commands allow parameters and functions to be added to and + for each name found, automatically marking it for _e_x_p_o_r_t to child pro- + cesses. Executed commands inherit the environment. The eexxppoorrtt and + ddeeccllaarree --xx commands allow parameters and functions to be added to and deleted from the environment. If the value of a parameter in the envi- - ronment is modified, the new value becomes part of the environment, - replacing the old. The environment inherited by any executed command - consists of the shell's initial environment, whose values may be modi- - fied in the shell, less any pairs removed by the uunnsseett command, plus + ronment is modified, the new value becomes part of the environment, + replacing the old. The environment inherited by any executed command + consists of the shell's initial environment, whose values may be modi- + fied in the shell, less any pairs removed by the uunnsseett command, plus any additions via the eexxppoorrtt and ddeeccllaarree --xx commands. - The environment for any _s_i_m_p_l_e _c_o_m_m_a_n_d or function may be augmented - temporarily by prefixing it with parameter assignments, as described + The environment for any _s_i_m_p_l_e _c_o_m_m_a_n_d or function may be augmented + temporarily by prefixing it with parameter assignments, as described above in PPAARRAAMMEETTEERRSS. These assignment statements affect only the envi- ronment seen by that command. - If the --kk option is set (see the sseett builtin command below), then _a_l_l - parameter assignments are placed in the environment for a command, not + If the --kk option is set (see the sseett builtin command below), then _a_l_l + parameter assignments are placed in the environment for a command, not just those that precede the command name. - When bbaasshh invokes an external command, the variable __ is set to the + When bbaasshh invokes an external command, the variable __ is set to the full filename of the command and passed to that command in its environ- ment. EEXXIITT SSTTAATTUUSS - The exit status of an executed command is the value returned by the + The exit status of an executed command is the value returned by the _w_a_i_t_p_i_d system call or equivalent function. Exit statuses fall between - 0 and 255, though, as explained below, the shell may use values above + 0 and 255, though, as explained below, the shell may use values above 125 specially. Exit statuses from shell builtins and compound commands are also limited to this range. Under certain circumstances, the shell will use special values to indicate specific failure modes. For the shell's purposes, a command which exits with a zero exit status - has succeeded. An exit status of zero indicates success. A non-zero - exit status indicates failure. When a command terminates on a fatal + has succeeded. An exit status of zero indicates success. A non-zero + exit status indicates failure. When a command terminates on a fatal signal _N, bbaasshh uses the value of 128+_N as the exit status. - If a command is not found, the child process created to execute it - returns a status of 127. If a command is found but is not executable, + If a command is not found, the child process created to execute it + returns a status of 127. If a command is found but is not executable, the return status is 126. If a command fails because of an error during expansion or redirection, the exit status is greater than zero. - Shell builtin commands return a status of 0 (_t_r_u_e) if successful, and - non-zero (_f_a_l_s_e) if an error occurs while they execute. All builtins - return an exit status of 2 to indicate incorrect usage, generally + Shell builtin commands return a status of 0 (_t_r_u_e) if successful, and + non-zero (_f_a_l_s_e) if an error occurs while they execute. All builtins + return an exit status of 2 to indicate incorrect usage, generally invalid options or missing arguments. - BBaasshh itself returns the exit status of the last command executed, - unless a syntax error occurs, in which case it exits with a non-zero + BBaasshh itself returns the exit status of the last command executed, + unless a syntax error occurs, in which case it exits with a non-zero value. See also the eexxiitt builtin command below. SSIIGGNNAALLSS - When bbaasshh is interactive, in the absence of any traps, it ignores + When bbaasshh is interactive, in the absence of any traps, it ignores SSIIGGTTEERRMM (so that kkiillll 00 does not kill an interactive shell), and SSIIGGIINNTT - is caught and handled (so that the wwaaiitt builtin is interruptible). In - all cases, bbaasshh ignores SSIIGGQQUUIITT. If job control is in effect, bbaasshh + is caught and handled (so that the wwaaiitt builtin is interruptible). In + all cases, bbaasshh ignores SSIIGGQQUUIITT. If job control is in effect, bbaasshh ignores SSIIGGTTTTIINN, SSIIGGTTTTOOUU, and SSIIGGTTSSTTPP. Non-builtin commands run by bbaasshh have signal handlers set to the values - inherited by the shell from its parent. When job control is not in - effect, asynchronous commands ignore SSIIGGIINNTT and SSIIGGQQUUIITT in addition to - these inherited handlers. Commands run as a result of command substi- + inherited by the shell from its parent. When job control is not in + effect, asynchronous commands ignore SSIIGGIINNTT and SSIIGGQQUUIITT in addition to + these inherited handlers. Commands run as a result of command substi- tution ignore the keyboard-generated job control signals SSIIGGTTTTIINN, SSIIGGTT-- TTOOUU, and SSIIGGTTSSTTPP. - The shell exits by default upon receipt of a SSIIGGHHUUPP. Before exiting, - an interactive shell resends the SSIIGGHHUUPP to all jobs, running or + The shell exits by default upon receipt of a SSIIGGHHUUPP. Before exiting, + an interactive shell resends the SSIIGGHHUUPP to all jobs, running or stopped. Stopped jobs are sent SSIIGGCCOONNTT to ensure that they receive the - SSIIGGHHUUPP. To prevent the shell from sending the signal to a particular - job, it should be removed from the jobs table with the ddiissoowwnn builtin - (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) or marked to not receive SSIIGGHHUUPP + SSIIGGHHUUPP. To prevent the shell from sending the signal to a particular + job, it should be removed from the jobs table with the ddiissoowwnn builtin + (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below) or marked to not receive SSIIGGHHUUPP using ddiissoowwnn --hh. - If the hhuuppoonneexxiitt shell option has been set with sshhoopptt, bbaasshh sends a + If the hhuuppoonneexxiitt shell option has been set with sshhoopptt, bbaasshh sends a SSIIGGHHUUPP to all jobs when an interactive login shell exits. - If bbaasshh is waiting for a command to complete and receives a signal for + If bbaasshh is waiting for a command to complete and receives a signal for which a trap has been set, the trap will not be executed until the com- - mand completes. When bbaasshh is waiting for an asynchronous command via - the wwaaiitt builtin, the reception of a signal for which a trap has been + mand completes. When bbaasshh is waiting for an asynchronous command via + the wwaaiitt builtin, the reception of a signal for which a trap has been set will cause the wwaaiitt builtin to return immediately with an exit sta- tus greater than 128, immediately after which the trap is executed. JJOOBB CCOONNTTRROOLL - _J_o_b _c_o_n_t_r_o_l refers to the ability to selectively stop (_s_u_s_p_e_n_d) the + _J_o_b _c_o_n_t_r_o_l refers to the ability to selectively stop (_s_u_s_p_e_n_d) the execution of processes and continue (_r_e_s_u_m_e) their execution at a later - point. A user typically employs this facility via an interactive - interface supplied jointly by the operating system kernel's terminal + point. A user typically employs this facility via an interactive + interface supplied jointly by the operating system kernel's terminal driver and bbaasshh. - The shell associates a _j_o_b with each pipeline. It keeps a table of - currently executing jobs, which may be listed with the jjoobbss command. - When bbaasshh starts a job asynchronously (in the _b_a_c_k_g_r_o_u_n_d), it prints a + The shell associates a _j_o_b with each pipeline. It keeps a table of + currently executing jobs, which may be listed with the jjoobbss command. + When bbaasshh starts a job asynchronously (in the _b_a_c_k_g_r_o_u_n_d), it prints a line that looks like: [1] 25647 indicating that this job is job number 1 and that the process ID of the last process in the pipeline associated with this job is 25647. All of - the processes in a single pipeline are members of the same job. BBaasshh + the processes in a single pipeline are members of the same job. BBaasshh uses the _j_o_b abstraction as the basis for job control. - To facilitate the implementation of the user interface to job control, + To facilitate the implementation of the user interface to job control, the operating system maintains the notion of a _c_u_r_r_e_n_t _t_e_r_m_i_n_a_l _p_r_o_c_e_s_s _g_r_o_u_p _I_D. Members of this process group (processes whose process group ID is equal to the current terminal process group ID) receive keyboard- - generated signals such as SSIIGGIINNTT. These processes are said to be in - the _f_o_r_e_g_r_o_u_n_d. _B_a_c_k_g_r_o_u_n_d processes are those whose process group ID + generated signals such as SSIIGGIINNTT. These processes are said to be in + the _f_o_r_e_g_r_o_u_n_d. _B_a_c_k_g_r_o_u_n_d processes are those whose process group ID differs from the terminal's; such processes are immune to keyboard-gen- erated signals. Only foreground processes are allowed to read from or, - if the user so specifies with stty tostop, write to the terminal. - Background processes which attempt to read from (write to when stty - tostop is in effect) the terminal are sent a SSIIGGTTTTIINN ((SSIIGGTTTTOOUU)) signal - by the kernel's terminal driver, which, unless caught, suspends the + if the user so specifies with stty tostop, write to the terminal. + Background processes which attempt to read from (write to when stty + tostop is in effect) the terminal are sent a SSIIGGTTTTIINN ((SSIIGGTTTTOOUU)) signal + by the kernel's terminal driver, which, unless caught, suspends the process. - If the operating system on which bbaasshh is running supports job control, + If the operating system on which bbaasshh is running supports job control, bbaasshh contains facilities to use it. Typing the _s_u_s_p_e_n_d character (typ- ically ^^ZZ, Control-Z) while a process is running causes that process to - be stopped and returns control to bbaasshh. Typing the _d_e_l_a_y_e_d _s_u_s_p_e_n_d - character (typically ^^YY, Control-Y) causes the process to be stopped - when it attempts to read input from the terminal, and control to be - returned to bbaasshh. The user may then manipulate the state of this job, - using the bbgg command to continue it in the background, the ffgg command + be stopped and returns control to bbaasshh. Typing the _d_e_l_a_y_e_d _s_u_s_p_e_n_d + character (typically ^^YY, Control-Y) causes the process to be stopped + when it attempts to read input from the terminal, and control to be + returned to bbaasshh. The user may then manipulate the state of this job, + using the bbgg command to continue it in the background, the ffgg command to continue it in the foreground, or the kkiillll command to kill it. A ^^ZZ takes effect immediately, and has the additional side effect of causing pending output and typeahead to be discarded. There are a number of ways to refer to a job in the shell. The charac- - ter %% introduces a job specification (_j_o_b_s_p_e_c). Job number _n may be + ter %% introduces a job specification (_j_o_b_s_p_e_c). Job number _n may be referred to as %%nn. A job may also be referred to using a prefix of the name used to start it, or using a substring that appears in its command - line. For example, %%ccee refers to a stopped ccee job. If a prefix - matches more than one job, bbaasshh reports an error. Using %%??ccee, on the - other hand, refers to any job containing the string ccee in its command - line. If the substring matches more than one job, bbaasshh reports an - error. The symbols %%%% and %%++ refer to the shell's notion of the _c_u_r_- - _r_e_n_t _j_o_b, which is the last job stopped while it was in the foreground + line. For example, %%ccee refers to a stopped ccee job. If a prefix + matches more than one job, bbaasshh reports an error. Using %%??ccee, on the + other hand, refers to any job containing the string ccee in its command + line. If the substring matches more than one job, bbaasshh reports an + error. The symbols %%%% and %%++ refer to the shell's notion of the _c_u_r_- + _r_e_n_t _j_o_b, which is the last job stopped while it was in the foreground or started in the background. The _p_r_e_v_i_o_u_s _j_o_b may be referenced using %%--. If there is only a single job, %%++ and %%-- can both be used to refer - to that job. In output pertaining to jobs (e.g., the output of the + to that job. In output pertaining to jobs (e.g., the output of the jjoobbss command), the current job is always flagged with a ++, and the pre- - vious job with a --. A single % (with no accompanying job specifica- + vious job with a --. A single % (with no accompanying job specifica- tion) also refers to the current job. - Simply naming a job can be used to bring it into the foreground: %%11 is - a synonym for ````ffgg %%11'''', bringing job 1 from the background into the - foreground. Similarly, ````%%11 &&'''' resumes job 1 in the background, + Simply naming a job can be used to bring it into the foreground: %%11 is + a synonym for ````ffgg %%11'''', bringing job 1 from the background into the + foreground. Similarly, ````%%11 &&'''' resumes job 1 in the background, equivalent to ````bbgg %%11''''. - The shell learns immediately whenever a job changes state. Normally, + The shell learns immediately whenever a job changes state. Normally, bbaasshh waits until it is about to print a prompt before reporting changes - in a job's status so as to not interrupt any other output. If the --bb + in a job's status so as to not interrupt any other output. If the --bb option to the sseett builtin command is enabled, bbaasshh reports such changes - immediately. Any trap on SSIIGGCCHHLLDD is executed for each child that + immediately. Any trap on SSIIGGCCHHLLDD is executed for each child that exits. - If an attempt to exit bbaasshh is made while jobs are stopped (or, if the - cchheecckkjjoobbss shell option has been enabled using the sshhoopptt builtin, run- + If an attempt to exit bbaasshh is made while jobs are stopped (or, if the + cchheecckkjjoobbss shell option has been enabled using the sshhoopptt builtin, run- ning), the shell prints a warning message, and, if the cchheecckkjjoobbss option - is enabled, lists the jobs and their statuses. The jjoobbss command may - then be used to inspect their status. If a second attempt to exit is - made without an intervening command, the shell does not print another + is enabled, lists the jobs and their statuses. The jjoobbss command may + then be used to inspect their status. If a second attempt to exit is + made without an intervening command, the shell does not print another warning, and any stopped jobs are terminated. PPRROOMMPPTTIINNGG When executing interactively, bbaasshh displays the primary prompt PPSS11 when - it is ready to read a command, and the secondary prompt PPSS22 when it - needs more input to complete a command. BBaasshh allows these prompt + it is ready to read a command, and the secondary prompt PPSS22 when it + needs more input to complete a command. BBaasshh displays PPSS00 after it + reads a command but before executing it. BBaasshh allows these prompt strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows: \\aa an ASCII bell character (07) @@ -4444,7 +4459,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS The return value is 0 unless an invalid option is supplied or _n indexes beyond the end of the directory stack. - ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ...] + ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ... | _p_i_d ... ] Without options, remove each _j_o_b_s_p_e_c from the table of active jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option @@ -5294,148 +5309,156 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS If set, bbaasshh changes its behavior to that of version 3.2 with respect to locale-specific string comparison when using the [[[[ conditional command's << and >> operators - (see previous item). + (see previous item) and the effect of interrupting a + command list. Bash versions 3.2 and earlier continue + with the next command in the list after one terminates + due to an interrupt. ccoommppaatt4400 If set, bbaasshh changes its behavior to that of version 4.0 - with respect to locale-specific string comparison when - using the [[[[ conditional command's << and >> operators - (see description of ccoommppaatt3311) and the effect of inter- - rupting a command list. Bash versions 4.0 and later - interrupt the list as if the shell received the inter- - rupt; previous versions continue with the next command + with respect to locale-specific string comparison when + using the [[[[ conditional command's << and >> operators + (see description of ccoommppaatt3311) and the effect of inter- + rupting a command list. Bash versions 4.0 and later + interrupt the list as if the shell received the inter- + rupt; previous versions continue with the next command in the list. ccoommppaatt4411 - If set, bbaasshh, when in _p_o_s_i_x mode, treats a single quote - in a double-quoted parameter expansion as a special - character. The single quotes must match (an even num- - ber) and the characters between the single quotes are - considered quoted. This is the behavior of posix mode - through version 4.1. The default bash behavior remains + If set, bbaasshh, when in _p_o_s_i_x mode, treats a single quote + in a double-quoted parameter expansion as a special + character. The single quotes must match (an even num- + ber) and the characters between the single quotes are + considered quoted. This is the behavior of posix mode + through version 4.1. The default bash behavior remains as in previous versions. ccoommppaatt4422 - If set, bbaasshh does not process the replacement string in - the pattern substitution word expansion using quote + If set, bbaasshh does not process the replacement string in + the pattern substitution word expansion using quote removal. ccoommppaatt4433 - If set, bbaasshh does not print a warning message if an - attempt is made to use a quoted compound array assign- - ment as an argument to ddeeccllaarree, makes word expansion - errors non-fatal errors that cause the current command - to fail (the default behavior is to make them fatal + If set, bbaasshh does not print a warning message if an + attempt is made to use a quoted compound array assign- + ment as an argument to ddeeccllaarree, makes word expansion + errors non-fatal errors that cause the current command + to fail (the default behavior is to make them fatal errors that cause the shell to exit), and does not reset - the loop state when a shell function is executed (this - allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect + the loop state when a shell function is executed (this + allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect loops in the caller's context). ccoommpplleettee__ffuullllqquuoottee - If set, bbaasshh quotes all shell metacharacters in file- - names and directory names when performing completion. + If set, bbaasshh quotes all shell metacharacters in file- + names and directory names when performing completion. If not set, bbaasshh removes metacharacters such as the dol- - lar sign from the set of characters that will be quoted - in completed filenames when these metacharacters appear - in shell variable references in words to be completed. - This means that dollar signs in variable names that - expand to directories will not be quoted; however, any - dollar signs appearing in filenames will not be quoted, - either. This is active only when bash is using back- - slashes to quote completed filenames. This variable is - set by default, which is the default bash behavior in + lar sign from the set of characters that will be quoted + in completed filenames when these metacharacters appear + in shell variable references in words to be completed. + This means that dollar signs in variable names that + expand to directories will not be quoted; however, any + dollar signs appearing in filenames will not be quoted, + either. This is active only when bash is using back- + slashes to quote completed filenames. This variable is + set by default, which is the default bash behavior in versions through 4.2. ddiirreexxppaanndd - If set, bbaasshh replaces directory names with the results - of word expansion when performing filename completion. - This changes the contents of the readline editing buf- - fer. If not set, bbaasshh attempts to preserve what the + If set, bbaasshh replaces directory names with the results + of word expansion when performing filename completion. + This changes the contents of the readline editing buf- + fer. If not set, bbaasshh attempts to preserve what the user typed. ddiirrssppeellll - If set, bbaasshh attempts spelling correction on directory - names during word completion if the directory name ini- + If set, bbaasshh attempts spelling correction on directory + names during word completion if the directory name ini- tially supplied does not exist. - ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in + ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in the results of pathname expansion. eexxeeccffaaiill If set, a non-interactive shell will not exit if it can- - not execute the file specified as an argument to the - eexxeecc builtin command. An interactive shell does not + not execute the file specified as an argument to the + eexxeecc builtin command. An interactive shell does not exit if eexxeecc fails. eexxppaanndd__aalliiaasseess - If set, aliases are expanded as described above under + If set, aliases are expanded as described above under AALLIIAASSEESS. This option is enabled by default for interac- tive shells. eexxttddeebbuugg - If set, behavior intended for use by debuggers is + If set, behavior intended for use by debuggers is enabled: 11.. The --FF option to the ddeeccllaarree builtin displays the source file name and line number corresponding to each function name supplied as an argument. - 22.. If the command run by the DDEEBBUUGG trap returns a - non-zero value, the next command is skipped and + 22.. If the command run by the DDEEBBUUGG trap returns a + non-zero value, the next command is skipped and not executed. - 33.. If the command run by the DDEEBBUUGG trap returns a - value of 2, and the shell is executing in a sub- - routine (a shell function or a shell script exe- - cuted by the .. or ssoouurrccee builtins), the shell + 33.. If the command run by the DDEEBBUUGG trap returns a + value of 2, and the shell is executing in a sub- + routine (a shell function or a shell script exe- + cuted by the .. or ssoouurrccee builtins), the shell simulates a call to rreettuurrnn. - 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described + 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described in their descriptions above. - 55.. Function tracing is enabled: command substitu- + 55.. Function tracing is enabled: command substitu- tion, shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the DDEEBBUUGG and RREETTUURRNN traps. - 66.. Error tracing is enabled: command substitution, - shell functions, and subshells invoked with (( + 66.. Error tracing is enabled: command substitution, + shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the EERRRR trap. eexxttgglloobb If set, the extended pattern matching features described above under PPaatthhnnaammee EExxppaannssiioonn are enabled. eexxttqquuoottee - If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed - within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double + If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed + within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double quotes. This option is enabled by default. ffaaiillgglloobb - If set, patterns which fail to match filenames during + If set, patterns which fail to match filenames during pathname expansion result in an expansion error. ffoorrccee__ffiiggnnoorree - If set, the suffixes specified by the FFIIGGNNOORREE shell - variable cause words to be ignored when performing word + If set, the suffixes specified by the FFIIGGNNOORREE shell + variable cause words to be ignored when performing word completion even if the ignored words are the only possi- ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a - description of FFIIGGNNOORREE. This option is enabled by + description of FFIIGGNNOORREE. This option is enabled by default. gglloobbaasscciiiirraannggeess - If set, range expressions used in pattern matching - bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave - as if in the traditional C locale when performing com- + If set, range expressions used in pattern matching + bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave + as if in the traditional C locale when performing com- parisons. That is, the current locale's collating - sequence is not taken into account, so bb will not col- - late between AA and BB, and upper-case and lower-case + sequence is not taken into account, so bb will not col- + late between AA and BB, and upper-case and lower-case ASCII characters will collate together. gglloobbssttaarr If set, the pattern **** used in a pathname expansion con- - text will match all files and zero or more directories - and subdirectories. If the pattern is followed by a //, + text will match all files and zero or more directories + and subdirectories. If the pattern is followed by a //, only directories and subdirectories match. ggnnuu__eerrrrffmmtt If set, shell error messages are written in the standard GNU error message format. hhiissttaappppeenndd - If set, the history list is appended to the file named - by the value of the HHIISSTTFFIILLEE variable when the shell + If set, the history list is appended to the file named + by the value of the HHIISSTTFFIILLEE variable when the shell exits, rather than overwriting the file. hhiissttrreeeeddiitt - If set, and rreeaaddlliinnee is being used, a user is given the + If set, and rreeaaddlliinnee is being used, a user is given the opportunity to re-edit a failed history substitution. hhiissttvveerriiffyy - If set, and rreeaaddlliinnee is being used, the results of his- - tory substitution are not immediately passed to the - shell parser. Instead, the resulting line is loaded + If set, and rreeaaddlliinnee is being used, the results of his- + tory substitution are not immediately passed to the + shell parser. Instead, the resulting line is loaded into the rreeaaddlliinnee editing buffer, allowing further modi- fication. hhoossttccoommpplleettee If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to - perform hostname completion when a word containing a @@ - is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE + perform hostname completion when a word containing a @@ + is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE above). This is enabled by default. hhuuppoonneexxiitt If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an inter- active login shell exits. + iinnhheerriitt__eerrrreexxiitt + If set, command substitution inherits the value of the + eerrrreexxiitt option, instead of unsetting it in the subshell + environment. This option is enabled when _p_o_s_i_x _m_o_d_e is + enabled. iinntteerraaccttiivvee__ccoommmmeennttss If set, allow a word beginning with ## to cause that word and all remaining characters on that line to be ignored @@ -5603,7 +5626,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS function or a script executed with the .. or ssoouurrccee builtins fin- ishes executing. - If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a a + If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a pipeline (which may consist of a single simple command), a list, or a compound command returns a non-zero exit status, subject to the following conditions. The EERRRR trap is not executed if the @@ -5870,4 +5893,4 @@ BBUUGGSS -GNU Bash 4.4 2015 October 11 BASH(1) +GNU Bash 4.4 2015 November 16 BASH(1) diff --git a/doc/bash.html b/doc/bash.html index e1d65791..28dd1c4f 100644 --- a/doc/bash.html +++ b/doc/bash.html @@ -3,7 +3,7 @@ -
BASH(1)2015 October 11BASH(1) +BASH(1)2015 November 16BASH(1)

Index @@ -1354,6 +1354,8 @@ of all characters within the quotes, with the exception of and, when history expansion is enabled, !. +When the shell is in posix mode, the ! has no special meaning +within double quotes, even when history expansion is enabled. The characters $ @@ -1870,8 +1872,14 @@ that do not require bash to be re-initialized.
An associative array variable whose members correspond to the internal list of aliases as maintained by the alias builtin. -Elements added to this array appear in the alias list; unsetting array -elements cause aliases to be removed from the alias list. +Elements added to this array appear in the alias list; however, +unsetting array elements currently does not cause aliases to be removed +from the alias list. +If +BASH_ALIASES + +is unset, it loses its special properties, even if it is +subsequently reset.
BASH_ARGC
@@ -1923,8 +1931,14 @@ builtin below)
An associative array variable whose members correspond to the internal hash table of commands as maintained by the hash builtin. -Elements added to this array appear in the hash table; unsetting array -elements cause commands to be removed from the hash table. +Elements added to this array appear in the hash table; however, +unsetting array elements currently does not cause command names to be removed +from the hash table. +If +BASH_CMDS + +is unset, it loses its special properties, even if it is +subsequently reset.
BASH_COMMAND
@@ -2551,7 +2565,7 @@ used when the shell is invoked in POSIX mode.
EXECIGNORE
-A colon-separated list of extended glob patterns (see Pattern Matching) +A colon-separated list of shell patterns (see Pattern Matching) defining the list of filenames to be ignored by command search. Files whose full pathnames match one of these patterns are not considered executable files for the purposes of completion and command execution. @@ -2559,6 +2573,8 @@ This does not affect the behavior of the [, test, and [[ commands. Use this variable to ignore shared library files that have the executable bit set, but are not executable files. +The pattern matching honors the setting of the extglob shell +option.
FCEDIT
@@ -2683,6 +2699,8 @@ not tested, and are added to the history regardless of the value of HISTIGNORE. +The pattern matching honors the setting of the extglob shell +option.
HISTSIZE
@@ -2960,6 +2978,15 @@ trailing directory components to retain when expanding the \w and below). Characters removed are replaced with an ellipsis. +
PS0 + +
+The value of this parameter is expanded (see +PROMPTING + + +below) and displayed by interactive shells after reading a command +and before the command is executed.
PS1
@@ -4049,8 +4076,8 @@ or Bash -performs the expansion by executing command and -replacing the command substitution with the standard output of the +performs the expansion by executing command in a subshell environment +and replacing the command substitution with the standard output of the command, with any trailing newlines deleted. Embedded newlines are not deleted, but they may be removed during word splitting. @@ -4121,19 +4148,23 @@ prints a message indicating failure and no substitution occurs.

-Process substitution is supported on systems that support named -pipes (FIFOs) or the /dev/fd method of naming open files. +Process substitution allows a process's input or output to be +referred to using a filename. It takes the form of <(list) or >(list). -The process list is run with its input or output connected to a -FIFO or some file in /dev/fd. The name of this file is +The process list is run asynchronously, and its input or output +appears as a filename. +This filename is passed as an argument to the current command as the result of the -expansion. If the >(list) form is used, writing to +expansion. +If the >(list) form is used, writing to the file will provide input for list. If the <(list) form is used, the file passed as an argument should be read to obtain the output of list. +Process substitution is supported on systems that support named +pipes (FIFOs) or the /dev/fd method of naming open files.

When available, process substitution is performed @@ -4191,10 +4222,12 @@ If has a value other than the default, then sequences of the whitespace characters -space +space, + +tab, and -tab +newline are ignored at the beginning and end of the word, as long as the whitespace character is in the @@ -4387,6 +4420,8 @@ option is disabled when is unset. +The pattern matching honors the setting of the extglob shell +option.

Pattern Matching @@ -4980,12 +5015,12 @@ The word undergoes brace expansion, tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote removal. Pathname expansion and word splitting are not performed. -The result is supplied as a single string to the command on its +The result is supplied as a single string, with a newline appended, +to the command on its standard input (or file descriptor n if n is specified).  

Duplicating File Descriptors

-

The redirection operator @@ -6381,6 +6416,12 @@ when it is ready to read a command, and the secondary prompt when it needs more input to complete a command. Bash +displays +PS0 + +after it reads a command but before executing it. +Bash + allows these prompt strings to be customized by inserting a number of backslash-escaped special characters that are decoded as follows:

@@ -9881,7 +9922,7 @@ invalid option is supplied or n indexes beyond the end of the directory stack.
-
disown [-ar] [-h] [jobspec ...]
+
disown [-ar] [-h] [jobspec ... | pid ... ]
Without options, remove each jobspec @@ -12023,7 +12064,10 @@ If set, changes its behavior to that of version 3.2 with respect to locale-specific string comparison when using the [[ -conditional command's < and > operators (see previous item). +conditional command's < and > operators (see previous item) +and the effect of interrupting a command list. +Bash versions 3.2 and earlier continue with the next command in the list +after one terminates due to an interrupt.
compat40
@@ -12303,6 +12347,12 @@ If set, bash will send to all jobs when an interactive login shell exits. +
inherit_errexit + +
+If set, command substitution inherits the value of the errexit option, +instead of unsetting it in the subshell environment. +This option is enabled when posix mode is enabled.
interactive_comments
@@ -12690,7 +12740,7 @@ is the command arg -is executed whenever a +is executed whenever a pipeline (which may consist of a single simple command), a list, or a compound command returns a non-zero exit status, @@ -13416,7 +13466,7 @@ There may be only one active coprocess at a time.
-
GNU Bash 4.42015 October 11BASH(1) +GNU Bash 4.42015 November 16BASH(1)

@@ -13522,6 +13572,6 @@ There may be only one active coprocess at a time.
This document was created by man2html from bash.1.
-Time: 15 October 2015 10:10:58 EDT +Time: 03 December 2015 13:58:28 EST diff --git a/doc/bash.info b/doc/bash.info index 474636a9..9c952d19 100644 --- a/doc/bash.info +++ b/doc/bash.info @@ -1,13 +1,13 @@ -This is bash.info, produced by makeinfo version 4.13 from -/usr/homes/chet/src/bash/src/doc/bashref.texi. +This is bash.info, produced by makeinfo version 6.0 from +bashref.texi. -This text is a brief description of the features that are present in -the Bash shell (version 4.3, 6 September 2014). +This text is a brief description of the features that are present in the +Bash shell (version 4.4, 16 November 2015). - This is Edition 4.3, last updated 6 September 2014, of `The GNU Bash -Reference Manual', for `Bash', Version 4.3. + This is Edition 4.4, last updated 16 November 2015, of 'The GNU Bash +Reference Manual', for 'Bash', Version 4.4. - Copyright (C) 1988-2014 Free Software Foundation, Inc. + Copyright (C) 1988-2015 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -15,7 +15,6 @@ Reference Manual', for `Bash', Version 4.3. Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". - INFO-DIR-SECTION Basics START-INFO-DIR-ENTRY * Bash: (bash). The GNU Bourne-Again SHell. @@ -27,17 +26,17 @@ File: bash.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir) Bash Features ************* -This text is a brief description of the features that are present in -the Bash shell (version 4.3, 6 September 2014). The Bash home page is -`http://www.gnu.org/software/bash/'. +This text is a brief description of the features that are present in the +Bash shell (version 4.4, 16 November 2015). The Bash home page is +. - This is Edition 4.3, last updated 6 September 2014, of `The GNU Bash -Reference Manual', for `Bash', Version 4.3. + This is Edition 4.4, last updated 16 November 2015, of 'The GNU Bash +Reference Manual', for 'Bash', Version 4.4. Bash contains features that appear in other popular shells, and some features that only appear in Bash. Some of the shells that Bash has -borrowed concepts from are the Bourne Shell (`sh'), the Korn Shell -(`ksh'), and the C-shell (`csh' and its successor, `tcsh'). The +borrowed concepts from are the Bourne Shell ('sh'), the Korn Shell +('ksh'), and the C-shell ('csh' and its successor, 'tcsh'). The following menu breaks the features up into categories, noting which features were inspired by other shells and which are specific to Bash. @@ -68,7 +67,7 @@ on shell behavior. * Indexes:: Various indexes for this manual.  -File: bash.info, Node: Introduction, Next: Definitions, Prev: Top, Up: Top +File: bash.info, Node: Introduction, Next: Definitions, Up: Top 1 Introduction ************** @@ -85,20 +84,20 @@ File: bash.info, Node: What is Bash?, Next: What is a shell?, Up: Introductio ================= Bash is the shell, or command language interpreter, for the GNU -operating system. The name is an acronym for the `Bourne-Again SHell', +operating system. The name is an acronym for the 'Bourne-Again SHell', a pun on Stephen Bourne, the author of the direct ancestor of the -current Unix shell `sh', which appeared in the Seventh Edition Bell -Labs Research version of Unix. +current Unix shell 'sh', which appeared in the Seventh Edition Bell Labs +Research version of Unix. - Bash is largely compatible with `sh' and incorporates useful -features from the Korn shell `ksh' and the C shell `csh'. It is -intended to be a conformant implementation of the IEEE POSIX Shell and -Tools portion of the IEEE POSIX specification (IEEE Standard 1003.1). -It offers functional improvements over `sh' for both interactive and -programming use. + Bash is largely compatible with 'sh' and incorporates useful features +from the Korn shell 'ksh' and the C shell 'csh'. It is intended to be a +conformant implementation of the IEEE POSIX Shell and Tools portion of +the IEEE POSIX specification (IEEE Standard 1003.1). It offers +functional improvements over 'sh' for both interactive and programming +use. While the GNU operating system provides other shells, including a -version of `csh', Bash is the default shell. Like other GNU software, +version of 'csh', Bash is the default shell. Like other GNU software, Bash is quite portable. It currently runs on nearly every version of Unix and a few other operating systems - independently-supported ports exist for MS-DOS, OS/2, and Windows platforms. @@ -109,9 +108,9 @@ File: bash.info, Node: What is a shell?, Prev: What is Bash?, Up: Introductio 1.2 What is a shell? ==================== -At its base, a shell is simply a macro processor that executes -commands. The term macro processor means functionality where text and -symbols are expanded to create larger expressions. +At its base, a shell is simply a macro processor that executes commands. +The term macro processor means functionality where text and symbols are +expanded to create larger expressions. A Unix shell is both a command interpreter and a programming language. As a command interpreter, the shell provides the user @@ -119,7 +118,7 @@ interface to the rich set of GNU utilities. The programming language features allow these utilities to be combined. Files containing commands can be created, and become commands themselves. These new commands have the same status as system commands in directories such as -`/bin', allowing users or groups to establish custom environments to +'/bin', allowing users or groups to establish custom environments to automate their common tasks. Shells may be used interactively or non-interactively. In @@ -136,17 +135,17 @@ control over the contents of commands' environments. Shells also provide a small set of built-in commands ("builtins") implementing functionality impossible or inconvenient to obtain via -separate utilities. For example, `cd', `break', `continue', and `exec' +separate utilities. For example, 'cd', 'break', 'continue', and 'exec' cannot be implemented outside of the shell because they directly -manipulate the shell itself. The `history', `getopts', `kill', or `pwd' +manipulate the shell itself. The 'history', 'getopts', 'kill', or 'pwd' builtins, among others, could be implemented in separate utilities, but they are more convenient to use as builtin commands. All of the shell builtins are described in subsequent sections. While executing commands is essential, most of the power (and complexity) of shells is due to their embedded programming languages. -Like any high-level language, the shell provides variables, flow -control constructs, quoting, and functions. +Like any high-level language, the shell provides variables, flow control +constructs, quoting, and functions. Shells offer features geared specifically for interactive use rather than to augment the programming language. These interactive features @@ -161,90 +160,90 @@ File: bash.info, Node: Definitions, Next: Basic Shell Features, Prev: Introdu These definitions are used throughout the remainder of this manual. -`POSIX' - A family of open system standards based on Unix. Bash is - primarily concerned with the Shell and Utilities portion of the - POSIX 1003.1 standard. +'POSIX' + A family of open system standards based on Unix. Bash is primarily + concerned with the Shell and Utilities portion of the POSIX 1003.1 + standard. -`blank' +'blank' A space or tab character. -`builtin' +'builtin' A command that is implemented internally by the shell itself, rather than by an executable program somewhere in the file system. -`control operator' - A `token' that performs a control function. It is a `newline' or - one of the following: `||', `&&', `&', `;', `;;', `|', `|&', `(', - or `)'. +'control operator' + A 'token' that performs a control function. It is a 'newline' or + one of the following: '||', '&&', '&', ';', ';;', '|', '|&', '(', + or ')'. -`exit status' +'exit status' The value returned by a command to its caller. The value is restricted to eight bits, so the maximum value is 255. -`field' +'field' A unit of text that is the result of one of the shell expansions. - After expansion, when executing a command, the resulting fields - are used as the command name and arguments. + After expansion, when executing a command, the resulting fields are + used as the command name and arguments. -`filename' +'filename' A string of characters used to identify a file. -`job' +'job' A set of processes comprising a pipeline, and any processes descended from it, that are all in the same process group. -`job control' +'job control' A mechanism by which users can selectively stop (suspend) and restart (resume) execution of processes. -`metacharacter' +'metacharacter' A character that, when unquoted, separates words. A metacharacter - is a `blank' or one of the following characters: `|', `&', `;', - `(', `)', `<', or `>'. + is a 'space', 'tab', 'newline', or one of the following characters: + '|', '&', ';', '(', ')', '<', or '>'. -`name' - A `word' consisting solely of letters, numbers, and underscores, - and beginning with a letter or underscore. `Name's are used as +'name' + A 'word' consisting solely of letters, numbers, and underscores, + and beginning with a letter or underscore. 'Name's are used as shell variable and function names. Also referred to as an - `identifier'. + 'identifier'. -`operator' - A `control operator' or a `redirection operator'. *Note +'operator' + A 'control operator' or a 'redirection operator'. *Note Redirections::, for a list of redirection operators. Operators - contain at least one unquoted `metacharacter'. + contain at least one unquoted 'metacharacter'. -`process group' +'process group' A collection of related processes each having the same process group ID. -`process group ID' - A unique identifier that represents a `process group' during its +'process group ID' + A unique identifier that represents a 'process group' during its lifetime. -`reserved word' - A `word' that has a special meaning to the shell. Most reserved - words introduce shell flow control constructs, such as `for' and - `while'. +'reserved word' + A 'word' that has a special meaning to the shell. Most reserved + words introduce shell flow control constructs, such as 'for' and + 'while'. -`return status' - A synonym for `exit status'. +'return status' + A synonym for 'exit status'. -`signal' +'signal' A mechanism by which a process may be notified by the kernel of an event occurring in the system. -`special builtin' +'special builtin' A shell builtin command that has been classified as special by the POSIX standard. -`token' - A sequence of characters considered a single unit by the shell. - It is either a `word' or an `operator'. +'token' + A sequence of characters considered a single unit by the shell. It + is either a 'word' or an 'operator'. -`word' - A sequence of characters treated as a unit by the shell. Words - may not include unquoted `metacharacters'. +'word' + A sequence of characters treated as a unit by the shell. Words may + not include unquoted 'metacharacters'.  File: bash.info, Node: Basic Shell Features, Next: Shell Builtin Commands, Prev: Definitions, Up: Top @@ -252,13 +251,13 @@ File: bash.info, Node: Basic Shell Features, Next: Shell Builtin Commands, Pr 3 Basic Shell Features ********************** -Bash is an acronym for `Bourne-Again SHell'. The Bourne shell is the -traditional Unix shell originally written by Stephen Bourne. All of -the Bourne shell builtin commands are available in Bash, The rules for +Bash is an acronym for 'Bourne-Again SHell'. The Bourne shell is the +traditional Unix shell originally written by Stephen Bourne. All of the +Bourne shell builtin commands are available in Bash, The rules for evaluation and quoting are taken from the POSIX specification for the -`standard' Unix shell. +'standard' Unix shell. - This chapter briefly summarizes the shell's `building blocks': + This chapter briefly summarizes the shell's 'building blocks': commands, control structures, shell functions, shell parameters, shell expansions, redirections, which are a way to direct input and output from and to named files, and how the shell executes commands. @@ -287,11 +286,11 @@ File: bash.info, Node: Shell Syntax, Next: Shell Commands, Up: Basic Shell Fe * Quoting:: How to remove the special meaning from characters. * Comments:: How to specify comments. - When the shell reads input, it proceeds through a sequence of +When the shell reads input, it proceeds through a sequence of operations. If the input indicates the beginning of a comment, the -shell ignores the comment symbol (`#'), and the rest of that line. +shell ignores the comment symbol ('#'), and the rest of that line. - Otherwise, roughly speaking, the shell reads its input and divides + Otherwise, roughly speaking, the shell reads its input and divides the input into words and operators, employing the quoting rules to select which meanings to assign various words and characters. @@ -311,13 +310,13 @@ The following is a brief description of the shell's operation when it reads and executes a command. Basically, the shell does the following: 1. Reads its input from a file (*note Shell Scripts::), from a string - supplied as an argument to the `-c' invocation option (*note + supplied as an argument to the '-c' invocation option (*note Invoking Bash::), or from the user's terminal. 2. Breaks the input into words and operators, obeying the quoting rules described in *note Quoting::. These tokens are separated by - `metacharacters'. Alias expansion is performed by this step - (*note Aliases::). + 'metacharacters'. Alias expansion is performed by this step (*note + Aliases::). 3. Parses the tokens into simple and compound commands (*note Shell Commands::). @@ -335,7 +334,6 @@ reads and executes a command. Basically, the shell does the following: 7. Optionally waits for the command to complete and collects its exit status (*note Exit Status::). -  File: bash.info, Node: Quoting, Next: Comments, Prev: Shell Operation, Up: Shell Syntax @@ -353,15 +351,15 @@ File: bash.info, Node: Quoting, Next: Comments, Prev: Shell Operation, Up: S * ANSI-C Quoting:: How to expand ANSI-C sequences in quoted strings. * Locale Translation:: How to translate strings into different languages. - Quoting is used to remove the special meaning of certain characters -or words to the shell. Quoting can be used to disable special -treatment for special characters, to prevent reserved words from being -recognized as such, and to prevent parameter expansion. +Quoting is used to remove the special meaning of certain characters or +words to the shell. Quoting can be used to disable special treatment +for special characters, to prevent reserved words from being recognized +as such, and to prevent parameter expansion. Each of the shell metacharacters (*note Definitions::) has special meaning to the shell and must be quoted if it is to represent itself. When the command history expansion facilities are being used (*note -History Interaction::), the HISTORY EXPANSION character, usually `!', +History Interaction::), the HISTORY EXPANSION character, usually '!', must be quoted to prevent history expansion. *Note Bash History Facilities::, for more details concerning history expansion. @@ -374,12 +372,11 @@ File: bash.info, Node: Escape Character, Next: Single Quotes, Up: Quoting 3.1.2.1 Escape Character ........................ -A non-quoted backslash `\' is the Bash escape character. It preserves -the literal value of the next character that follows, with the -exception of `newline'. If a `\newline' pair appears, and the -backslash itself is not quoted, the `\newline' is treated as a line -continuation (that is, it is removed from the input stream and -effectively ignored). +A non-quoted backslash '\' is the Bash escape character. It preserves +the literal value of the next character that follows, with the exception +of 'newline'. If a '\newline' pair appears, and the backslash itself is +not quoted, the '\newline' is treated as a line continuation (that is, +it is removed from the input stream and effectively ignored).  File: bash.info, Node: Single Quotes, Next: Double Quotes, Prev: Escape Character, Up: Quoting @@ -387,7 +384,7 @@ File: bash.info, Node: Single Quotes, Next: Double Quotes, Prev: Escape Chara 3.1.2.2 Single Quotes ..................... -Enclosing characters in single quotes (`'') preserves the literal value +Enclosing characters in single quotes (''') preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash. @@ -397,21 +394,23 @@ File: bash.info, Node: Double Quotes, Next: ANSI-C Quoting, Prev: Single Quot 3.1.2.3 Double Quotes ..................... -Enclosing characters in double quotes (`"') preserves the literal value -of all characters within the quotes, with the exception of `$', ``', -`\', and, when history expansion is enabled, `!'. The characters `$' -and ``' retain their special meaning within double quotes (*note Shell -Expansions::). The backslash retains its special meaning only when -followed by one of the following characters: `$', ``', `"', `\', or -`newline'. Within double quotes, backslashes that are followed by one -of these characters are removed. Backslashes preceding characters -without a special meaning are left unmodified. A double quote may be -quoted within double quotes by preceding it with a backslash. If -enabled, history expansion will be performed unless an `!' appearing in -double quotes is escaped using a backslash. The backslash preceding -the `!' is not removed. +Enclosing characters in double quotes ('"') preserves the literal value +of all characters within the quotes, with the exception of '$', '`', +'\', and, when history expansion is enabled, '!'. When the shell is in +POSIX mode (*note Bash POSIX Mode::), the '!' has no special meaning +within double quotes, even when history expansion is enabled. The +characters '$' and '`' retain their special meaning within double quotes +(*note Shell Expansions::). The backslash retains its special meaning +only when followed by one of the following characters: '$', '`', '"', +'\', or 'newline'. Within double quotes, backslashes that are followed +by one of these characters are removed. Backslashes preceding +characters without a special meaning are left unmodified. A double +quote may be quoted within double quotes by preceding it with a +backslash. If enabled, history expansion will be performed unless an +'!' appearing in double quotes is escaped using a backslash. The +backslash preceding the '!' is not removed. - The special parameters `*' and `@' have special meaning when in + The special parameters '*' and '@' have special meaning when in double quotes (*note Shell Parameter Expansion::).  @@ -420,66 +419,53 @@ File: bash.info, Node: ANSI-C Quoting, Next: Locale Translation, Prev: Double 3.1.2.4 ANSI-C Quoting ...................... -Words of the form `$'STRING'' are treated specially. The word expands +Words of the form '$'STRING'' are treated specially. The word expands to STRING, with backslash-escaped characters replaced as specified by the ANSI C standard. Backslash escape sequences, if present, are decoded as follows: -`\a' +'\a' alert (bell) - -`\b' +'\b' backspace - -`\e' -`\E' +'\e' +'\E' an escape character (not ANSI C) - -`\f' +'\f' form feed - -`\n' +'\n' newline - -`\r' +'\r' carriage return - -`\t' +'\t' horizontal tab - -`\v' +'\v' vertical tab - -`\\' +'\\' backslash - -`\'' +'\'' single quote - -`\"' +'\"' double quote - -`\NNN' +'\?' + question mark +'\NNN' the eight-bit character whose value is the octal value NNN (one to three digits) - -`\xHH' +'\xHH' the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) - -`\uHHHH' +'\uHHHH' the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits) - -`\UHHHHHHHH' +'\UHHHHHHHH' the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits) - -`\cX' +'\cX' a control-X character -The expanded result is single-quoted, as if the dollar sign had not -been present. +The expanded result is single-quoted, as if the dollar sign had not been +present.  File: bash.info, Node: Locale Translation, Prev: ANSI-C Quoting, Up: Quoting @@ -487,18 +473,18 @@ File: bash.info, Node: Locale Translation, Prev: ANSI-C Quoting, Up: Quoting 3.1.2.5 Locale-Specific Translation ................................... -A double-quoted string preceded by a dollar sign (`$') will cause the -string to be translated according to the current locale. If the -current locale is `C' or `POSIX', the dollar sign is ignored. If the -string is translated and replaced, the replacement is double-quoted. +A double-quoted string preceded by a dollar sign ('$') will cause the +string to be translated according to the current locale. If the current +locale is 'C' or 'POSIX', the dollar sign is ignored. If the string is +translated and replaced, the replacement is double-quoted. - Some systems use the message catalog selected by the `LC_MESSAGES' + Some systems use the message catalog selected by the 'LC_MESSAGES' shell variable. Others create the name of the message catalog from the -value of the `TEXTDOMAIN' shell variable, possibly adding a suffix of -`.mo'. If you use the `TEXTDOMAIN' variable, you may need to set the -`TEXTDOMAINDIR' variable to the location of the message catalog files. +value of the 'TEXTDOMAIN' shell variable, possibly adding a suffix of +'.mo'. If you use the 'TEXTDOMAIN' variable, you may need to set the +'TEXTDOMAINDIR' variable to the location of the message catalog files. Still others use both variables in this fashion: -`TEXTDOMAINDIR'/`LC_MESSAGES'/LC_MESSAGES/`TEXTDOMAIN'.mo. +'TEXTDOMAINDIR'/'LC_MESSAGES'/LC_MESSAGES/'TEXTDOMAIN'.mo.  File: bash.info, Node: Comments, Prev: Quoting, Up: Shell Syntax @@ -507,11 +493,11 @@ File: bash.info, Node: Comments, Prev: Quoting, Up: Shell Syntax -------------- In a non-interactive shell, or an interactive shell in which the -`interactive_comments' option to the `shopt' builtin is enabled (*note -The Shopt Builtin::), a word beginning with `#' causes that word and -all remaining characters on that line to be ignored. An interactive -shell without the `interactive_comments' option enabled does not allow -comments. The `interactive_comments' option is on by default in +'interactive_comments' option to the 'shopt' builtin is enabled (*note +The Shopt Builtin::), a word beginning with '#' causes that word and all +remaining characters on that line to be ignored. An interactive shell +without the 'interactive_comments' option enabled does not allow +comments. The 'interactive_comments' option is on by default in interactive shells. *Note Interactive Shells::, for a description of what makes a shell interactive. @@ -521,7 +507,7 @@ File: bash.info, Node: Shell Commands, Next: Shell Functions, Prev: Shell Syn 3.2 Shell Commands ================== -A simple shell command such as `echo a b c' consists of the command +A simple shell command such as 'echo a b c' consists of the command itself followed by arguments, separated by spaces. More complex shell commands are composed of simple commands arranged @@ -546,14 +532,14 @@ File: bash.info, Node: Simple Commands, Next: Pipelines, Up: Shell Commands --------------------- A simple command is the kind of command encountered most often. It's -just a sequence of words separated by `blank's, terminated by one of -the shell's control operators (*note Definitions::). The first word -generally specifies a command to be executed, with the rest of the -words being that command's arguments. +just a sequence of words separated by 'blank's, terminated by one of the +shell's control operators (*note Definitions::). The first word +generally specifies a command to be executed, with the rest of the words +being that command's arguments. The return status (*note Exit Status::) of a simple command is its -exit status as provided by the POSIX 1003.1 `waitpid' function, or -128+N if the command was terminated by signal N. +exit status as provided by the POSIX 1003.1 'waitpid' function, or 128+N +if the command was terminated by signal N.  File: bash.info, Node: Pipelines, Next: Lists, Prev: Simple Commands, Up: Shell Commands @@ -561,40 +547,40 @@ File: bash.info, Node: Pipelines, Next: Lists, Prev: Simple Commands, Up: Sh 3.2.2 Pipelines --------------- -A `pipeline' is a sequence of one or more commands separated by one of -the control operators `|' or `|&'. +A 'pipeline' is a sequence of one or more commands separated by one of +the control operators '|' or '|&'. The format for a pipeline is [time [-p]] [!] COMMAND1 [ | or |& COMMAND2 ] ... The output of each command in the pipeline is connected via a pipe to -the input of the next command. That is, each command reads the -previous command's output. This connection is performed before any -redirections specified by the command. +the input of the next command. That is, each command reads the previous +command's output. This connection is performed before any redirections +specified by the command. - If `|&' is used, COMMAND1's standard error, in addition to its + If '|&' is used, COMMAND1's standard error, in addition to its standard output, is connected to COMMAND2's standard input through the -pipe; it is shorthand for `2>&1 |'. This implicit redirection of the +pipe; it is shorthand for '2>&1 |'. This implicit redirection of the standard error to the standard output is performed after any redirections specified by the command. - The reserved word `time' causes timing statistics to be printed for + The reserved word 'time' causes timing statistics to be printed for the pipeline once it finishes. The statistics currently consist of elapsed (wall-clock) time and user and system time consumed by the -command's execution. The `-p' option changes the output format to that +command's execution. The '-p' option changes the output format to that specified by POSIX. When the shell is in POSIX mode (*note Bash POSIX -Mode::), it does not recognize `time' as a reserved word if the next -token begins with a `-'. The `TIMEFORMAT' variable may be set to a +Mode::), it does not recognize 'time' as a reserved word if the next +token begins with a '-'. The 'TIMEFORMAT' variable may be set to a format string that specifies how the timing information should be displayed. *Note Bash Variables::, for a description of the available -formats. The use of `time' as a reserved word permits the timing of -shell builtins, shell functions, and pipelines. An external `time' +formats. The use of 'time' as a reserved word permits the timing of +shell builtins, shell functions, and pipelines. An external 'time' command cannot time these easily. - When the shell is in POSIX mode (*note Bash POSIX Mode::), `time' -may be followed by a newline. In this case, the shell displays the -total user and system time consumed by the shell and its children. The -`TIMEFORMAT' variable may be used to specify the format of the time + When the shell is in POSIX mode (*note Bash POSIX Mode::), 'time' may +be followed by a newline. In this case, the shell displays the total +user and system time consumed by the shell and its children. The +'TIMEFORMAT' variable may be used to specify the format of the time information. If the pipeline is not executed asynchronously (*note Lists::), the @@ -602,11 +588,11 @@ shell waits for all commands in the pipeline to complete. Each command in a pipeline is executed in its own subshell (*note Command Execution Environment::). The exit status of a pipeline is the -exit status of the last command in the pipeline, unless the `pipefail' -option is enabled (*note The Set Builtin::). If `pipefail' is enabled, +exit status of the last command in the pipeline, unless the 'pipefail' +option is enabled (*note The Set Builtin::). If 'pipefail' is enabled, the pipeline's return status is the value of the last (rightmost) command to exit with a non-zero status, or zero if all commands exit -successfully. If the reserved word `!' precedes the pipeline, the exit +successfully. If the reserved word '!' precedes the pipeline, the exit status is the logical negation of the exit status as described above. The shell waits for all commands in the pipeline to terminate before returning a value. @@ -617,37 +603,37 @@ File: bash.info, Node: Lists, Next: Compound Commands, Prev: Pipelines, Up: 3.2.3 Lists of Commands ----------------------- -A `list' is a sequence of one or more pipelines separated by one of the -operators `;', `&', `&&', or `||', and optionally terminated by one of -`;', `&', or a `newline'. +A 'list' is a sequence of one or more pipelines separated by one of the +operators ';', '&', '&&', or '||', and optionally terminated by one of +';', '&', or a 'newline'. - Of these list operators, `&&' and `||' have equal precedence, -followed by `;' and `&', which have equal precedence. + Of these list operators, '&&' and '||' have equal precedence, +followed by ';' and '&', which have equal precedence. - A sequence of one or more newlines may appear in a `list' to delimit + A sequence of one or more newlines may appear in a 'list' to delimit commands, equivalent to a semicolon. - If a command is terminated by the control operator `&', the shell + If a command is terminated by the control operator '&', the shell executes the command asynchronously in a subshell. This is known as executing the command in the BACKGROUND. The shell does not wait for the command to finish, and the return status is 0 (true). When job control is not active (*note Job Control::), the standard input for asynchronous commands, in the absence of any explicit redirections, is -redirected from `/dev/null'. +redirected from '/dev/null'. - Commands separated by a `;' are executed sequentially; the shell + Commands separated by a ';' are executed sequentially; the shell waits for each command to terminate in turn. The return status is the exit status of the last command executed. AND and OR lists are sequences of one or more pipelines separated by -the control operators `&&' and `||', respectively. AND and OR lists -are executed with left associativity. +the control operators '&&' and '||', respectively. AND and OR lists are +executed with left associativity. An AND list has the form COMMAND1 && COMMAND2 -COMMAND2 is executed if, and only if, COMMAND1 returns an exit status -of zero. +COMMAND2 is executed if, and only if, COMMAND1 returns an exit status of +zero. An OR list has the form COMMAND1 || COMMAND2 @@ -670,12 +656,11 @@ File: bash.info, Node: Compound Commands, Next: Coprocesses, Prev: Lists, Up * Conditional Constructs:: Shell commands for conditional execution. * Command Grouping:: Ways to group commands. - Compound commands are the shell programming constructs. Each -construct begins with a reserved word or control operator and is -terminated by a corresponding reserved word or operator. Any -redirections (*note Redirections::) associated with a compound command -apply to all commands within that compound command unless explicitly -overridden. +Compound commands are the shell programming constructs. Each construct +begins with a reserved word or control operator and is terminated by a +corresponding reserved word or operator. Any redirections (*note +Redirections::) associated with a compound command apply to all commands +within that compound command unless explicitly overridden. In most cases a list of commands in a compound command's description may be separated from the rest of the command by one or more newlines, @@ -692,11 +677,11 @@ File: bash.info, Node: Looping Constructs, Next: Conditional Constructs, Up: Bash supports the following looping constructs. - Note that wherever a `;' appears in the description of a command's + Note that wherever a ';' appears in the description of a command's syntax, it may be replaced with one or more newlines. -`until' - The syntax of the `until' command is: +'until' + The syntax of the 'until' command is: until TEST-COMMANDS; do CONSEQUENT-COMMANDS; done @@ -705,8 +690,8 @@ syntax, it may be replaced with one or more newlines. the last command executed in CONSEQUENT-COMMANDS, or zero if none was executed. -`while' - The syntax of the `while' command is: +'while' + The syntax of the 'while' command is: while TEST-COMMANDS; do CONSEQUENT-COMMANDS; done @@ -715,21 +700,21 @@ syntax, it may be replaced with one or more newlines. command executed in CONSEQUENT-COMMANDS, or zero if none was executed. -`for' - The syntax of the `for' command is: +'for' + The syntax of the 'for' command is: for NAME [ [in [WORDS ...] ] ; ] do COMMANDS; done Expand WORDS, and execute COMMANDS once for each member in the - resultant list, with NAME bound to the current member. If `in - WORDS' is not present, the `for' command executes the COMMANDS - once for each positional parameter that is set, as if `in "$@"' - had been specified (*note Special Parameters::). The return - status is the exit status of the last command that executes. If - there are no items in the expansion of WORDS, no commands are - executed, and the return status is zero. + resultant list, with NAME bound to the current member. If 'in + WORDS' is not present, the 'for' command executes the COMMANDS once + for each positional parameter that is set, as if 'in "$@"' had been + specified (*note Special Parameters::). The return status is the + exit status of the last command that executes. If there are no + items in the expansion of WORDS, no commands are executed, and the + return status is zero. - An alternate form of the `for' command is also supported: + An alternate form of the 'for' command is also supported: for (( EXPR1 ; EXPR2 ; EXPR3 )) ; do COMMANDS ; done @@ -743,7 +728,7 @@ syntax, it may be replaced with one or more newlines. command in COMMANDS that is executed, or false if any of the expressions is invalid. - The `break' and `continue' builtins (*note Bourne Shell Builtins::) + The 'break' and 'continue' builtins (*note Bourne Shell Builtins::) may be used to control loop execution.  @@ -752,8 +737,8 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: 3.2.4.2 Conditional Constructs .............................. -`if' - The syntax of the `if' command is: +'if' + The syntax of the 'if' command is: if TEST-COMMANDS; then CONSEQUENT-COMMANDS; @@ -764,43 +749,43 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: The TEST-COMMANDS list is executed, and if its return status is zero, the CONSEQUENT-COMMANDS list is executed. If TEST-COMMANDS - returns a non-zero status, each `elif' list is executed in turn, + returns a non-zero status, each 'elif' list is executed in turn, and if its exit status is zero, the corresponding MORE-CONSEQUENTS - is executed and the command completes. If `else + is executed and the command completes. If 'else ALTERNATE-CONSEQUENTS' is present, and the final command in the - final `if' or `elif' clause has a non-zero exit status, then + final 'if' or 'elif' clause has a non-zero exit status, then ALTERNATE-CONSEQUENTS is executed. The return status is the exit - status of the last command executed, or zero if no condition - tested true. + status of the last command executed, or zero if no condition tested + true. -`case' - The syntax of the `case' command is: +'case' + The syntax of the 'case' command is: case WORD in [ [(] PATTERN [| PATTERN]...) COMMAND-LIST ;;]... esac - `case' will selectively execute the COMMAND-LIST corresponding to - the first PATTERN that matches WORD. If the shell option - `nocasematch' (see the description of `shopt' in *note The Shopt - Builtin::) is enabled, the match is performed without regard to - the case of alphabetic characters. The `|' is used to separate - multiple patterns, and the `)' operator terminates a pattern list. + 'case' will selectively execute the COMMAND-LIST corresponding to + the first PATTERN that matches WORD. If the 'nocasematch' shell + option (see the description of 'shopt' in *note The Shopt + Builtin::) is enabled, the match is performed without regard to the + case of alphabetic characters. The '|' is used to separate + multiple patterns, and the ')' operator terminates a pattern list. A list of patterns and an associated command-list is known as a CLAUSE. - Each clause must be terminated with `;;', `;&', or `;;&'. The - WORD undergoes tilde expansion, parameter expansion, command + Each clause must be terminated with ';;', ';&', or ';;&'. The WORD + undergoes tilde expansion, parameter expansion, command substitution, arithmetic expansion, and quote removal before matching is attempted. Each PATTERN undergoes tilde expansion, parameter expansion, command substitution, and arithmetic expansion. - There may be an arbitrary number of `case' clauses, each terminated - by a `;;', `;&', or `;;&'. The first pattern that matches + There may be an arbitrary number of 'case' clauses, each terminated + by a ';;', ';&', or ';;&'. The first pattern that matches determines the command-list that is executed. It's a common idiom - to use `*' as the final pattern to define the default case, since + to use '*' as the final pattern to define the default case, since that pattern will always match. - Here is an example using `case' in a script that could be used to + Here is an example using 'case' in a script that could be used to describe one interesting feature of an animal: echo -n "Enter the name of an animal: " @@ -813,36 +798,37 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: esac echo " legs." - If the `;;' operator is used, no subsequent matches are attempted - after the first pattern match. Using `;&' in place of `;;' - causes execution to continue with the COMMAND-LIST associated with - the next clause, if any. Using `;;&' in place of `;;' causes the - shell to test the patterns in the next clause, if any, and execute - any associated COMMAND-LIST on a successful match. + If the ';;' operator is used, no subsequent matches are attempted + after the first pattern match. Using ';&' in place of ';;' causes + execution to continue with the COMMAND-LIST associated with the + next clause, if any. Using ';;&' in place of ';;' causes the shell + to test the patterns in the next clause, if any, and execute any + associated COMMAND-LIST on a successful match. The return status is zero if no PATTERN is matched. Otherwise, the return status is the exit status of the COMMAND-LIST executed. -`select' - The `select' construct allows the easy generation of menus. It - has almost the same syntax as the `for' command: +'select' + + The 'select' construct allows the easy generation of menus. It has + almost the same syntax as the 'for' command: select NAME [in WORDS ...]; do COMMANDS; done - The list of words following `in' is expanded, generating a list of + The list of words following 'in' is expanded, generating a list of items. The set of expanded words is printed on the standard error - output stream, each preceded by a number. If the `in WORDS' is - omitted, the positional parameters are printed, as if `in "$@"' - had been specified. The `PS3' prompt is then displayed and a line - is read from the standard input. If the line consists of a number - corresponding to one of the displayed words, then the value of - NAME is set to that word. If the line is empty, the words and - prompt are displayed again. If `EOF' is read, the `select' - command completes. Any other value read causes NAME to be set to - null. The line read is saved in the variable `REPLY'. + output stream, each preceded by a number. If the 'in WORDS' is + omitted, the positional parameters are printed, as if 'in "$@"' had + been specified. The 'PS3' prompt is then displayed and a line is + read from the standard input. If the line consists of a number + corresponding to one of the displayed words, then the value of NAME + is set to that word. If the line is empty, the words and prompt + are displayed again. If 'EOF' is read, the 'select' command + completes. Any other value read causes NAME to be set to null. + The line read is saved in the variable 'REPLY'. - The COMMANDS are executed after each selection until a `break' - command is executed, at which point the `select' command completes. + The COMMANDS are executed after each selection until a 'break' + command is executed, at which point the 'select' command completes. Here is an example that allows the user to pick a filename from the current directory, and displays the name and index of the file @@ -854,7 +840,7 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: break; done -`((...))' +'((...))' (( EXPRESSION )) The arithmetic EXPRESSION is evaluated according to the rules @@ -862,88 +848,86 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: expression is non-zero, the return status is 0; otherwise the return status is 1. This is exactly equivalent to let "EXPRESSION" - *Note Bash Builtins::, for a full description of the `let' builtin. + *Note Bash Builtins::, for a full description of the 'let' builtin. -`[[...]]' +'[[...]]' [[ EXPRESSION ]] Return a status of 0 or 1 depending on the evaluation of the - conditional expression EXPRESSION. Expressions are composed of - the primaries described below in *note Bash Conditional - Expressions::. Word splitting and filename expansion are not - performed on the words between the `[[' and `]]'; tilde expansion, - parameter and variable expansion, arithmetic expansion, command - substitution, process substitution, and quote removal are - performed. Conditional operators such as `-f' must be unquoted to - be recognized as primaries. + conditional expression EXPRESSION. Expressions are composed of the + primaries described below in *note Bash Conditional Expressions::. + Word splitting and filename expansion are not performed on the + words between the '[[' and ']]'; tilde expansion, parameter and + variable expansion, arithmetic expansion, command substitution, + process substitution, and quote removal are performed. Conditional + operators such as '-f' must be unquoted to be recognized as + primaries. - When used with `[[', the `<' and `>' operators sort + When used with '[[', the '<' and '>' operators sort lexicographically using the current locale. - When the `==' and `!=' operators are used, the string to the right + When the '==' and '!=' operators are used, the string to the right of the operator is considered a pattern and matched according to the rules described below in *note Pattern Matching::, as if the - `extglob' shell option were enabled. The `=' operator is - identical to `=='. If the shell option `nocasematch' (see the - description of `shopt' in *note The Shopt Builtin::) is enabled, - the match is performed without regard to the case of alphabetic - characters. The return value is 0 if the string matches (`==') or - does not match (`!=')the pattern, and 1 otherwise. Any part of - the pattern may be quoted to force the quoted portion to be - matched as a string. + 'extglob' shell option were enabled. The '=' operator is identical + to '=='. If the 'nocasematch' shell option (see the description of + 'shopt' in *note The Shopt Builtin::) is enabled, the match is + performed without regard to the case of alphabetic characters. The + return value is 0 if the string matches ('==') or does not match + ('!=')the pattern, and 1 otherwise. Any part of the pattern may be + quoted to force the quoted portion to be matched as a string. - An additional binary operator, `=~', is available, with the same - precedence as `==' and `!='. When it is used, the string to the + An additional binary operator, '=~', is available, with the same + precedence as '==' and '!='. When it is used, the string to the right of the operator is considered an extended regular expression and matched accordingly (as in regex3)). The return value is 0 if the string matches the pattern, and 1 otherwise. If the regular - expression is syntactically incorrect, the conditional - expression's return value is 2. If the shell option `nocasematch' - (see the description of `shopt' in *note The Shopt Builtin::) is - enabled, the match is performed without regard to the case of - alphabetic characters. Any part of the pattern may be quoted to - force the quoted portion to be matched as a string. Bracket - expressions in regular expressions must be treated carefully, - since normal quoting characters lose their meanings between - brackets. If the pattern is stored in a shell variable, quoting - the variable expansion forces the entire pattern to be matched as - a string. Substrings matched by parenthesized subexpressions - within the regular expression are saved in the array variable - `BASH_REMATCH'. The element of `BASH_REMATCH' with index 0 is the - portion of the string matching the entire regular expression. The - element of `BASH_REMATCH' with index N is the portion of the - string matching the Nth parenthesized subexpression. + expression is syntactically incorrect, the conditional expression's + return value is 2. If the 'nocasematch' shell option (see the + description of 'shopt' in *note The Shopt Builtin::) is enabled, + the match is performed without regard to the case of alphabetic + characters. Any part of the pattern may be quoted to force the + quoted portion to be matched as a string. Bracket expressions in + regular expressions must be treated carefully, since normal quoting + characters lose their meanings between brackets. If the pattern is + stored in a shell variable, quoting the variable expansion forces + the entire pattern to be matched as a string. Substrings matched + by parenthesized subexpressions within the regular expression are + saved in the array variable 'BASH_REMATCH'. The element of + 'BASH_REMATCH' with index 0 is the portion of the string matching + the entire regular expression. The element of 'BASH_REMATCH' with + index N is the portion of the string matching the Nth parenthesized + subexpression. For example, the following will match a line (stored in the shell variable LINE) if there is a sequence of characters in the value - consisting of any number, including zero, of space characters, - zero or one instances of `a', then a `b': + consisting of any number, including zero, of space characters, zero + or one instances of 'a', then a 'b': [[ $line =~ [[:space:]]*(a)?b ]] - That means values like `aab' and ` aaaaaab' will match, as will a - line containing a `b' anywhere in its value. + That means values like 'aab' and ' aaaaaab' will match, as will a + line containing a 'b' anywhere in its value. Storing the regular expression in a shell variable is often a useful way to avoid problems with quoting characters that are special to the shell. It is sometimes difficult to specify a - regular expression literally without using quotes, or to keep - track of the quoting used by regular expressions while paying - attention to the shell's quote removal. Using a shell variable to - store the pattern decreases these problems. For example, the - following is equivalent to the above: + regular expression literally without using quotes, or to keep track + of the quoting used by regular expressions while paying attention + to the shell's quote removal. Using a shell variable to store the + pattern decreases these problems. For example, the following is + equivalent to the above: pattern='[[:space:]]*(a)?b' [[ $line =~ $pattern ]] If you want to match a character that's special to the regular expression grammar, it has to be quoted to remove its special - meaning. This means that in the pattern `xxx.txt', the `.' - matches any character in the string (its usual regular expression - meaning), but in the pattern `"xxx.txt"' it can only match a - literal `.'. Shell programmers should take special care with - backslashes, since backslashes are used both by the shell and - regular expressions to remove the special meaning from the - following character. The following two sets of commands are _not_ - equivalent: + meaning. This means that in the pattern 'xxx.txt', the '.' matches + any character in the string (its usual regular expression meaning), + but in the pattern '"xxx.txt"' it can only match a literal '.'. + Shell programmers should take special care with backslashes, since + backslashes are used both by the shell and regular expressions to + remove the special meaning from the following character. The + following two sets of commands are _not_ equivalent: pattern='\.' [[ . =~ $pattern ]] @@ -953,32 +937,32 @@ File: bash.info, Node: Conditional Constructs, Next: Command Grouping, Prev: [[ . =~ '\.' ]] The first two matches will succeed, but the second two will not, - because in the second two the backslash will be part of the - pattern to be matched. In the first two examples, the backslash - removes the special meaning from `.', so the literal `.' matches. - If the string in the first examples were anything other than `.', - say `a', the pattern would not match, because the quoted `.' in the - pattern loses its special meaning of matching any single character. + because in the second two the backslash will be part of the pattern + to be matched. In the first two examples, the backslash removes + the special meaning from '.', so the literal '.' matches. If the + string in the first examples were anything other than '.', say 'a', + the pattern would not match, because the quoted '.' in the pattern + loses its special meaning of matching any single character. Expressions may be combined using the following operators, listed in decreasing order of precedence: - `( EXPRESSION )' - Returns the value of EXPRESSION. This may be used to - override the normal precedence of operators. + '( EXPRESSION )' + Returns the value of EXPRESSION. This may be used to override + the normal precedence of operators. - `! EXPRESSION' + '! EXPRESSION' True if EXPRESSION is false. - `EXPRESSION1 && EXPRESSION2' + 'EXPRESSION1 && EXPRESSION2' True if both EXPRESSION1 and EXPRESSION2 are true. - `EXPRESSION1 || EXPRESSION2' + 'EXPRESSION1 || EXPRESSION2' True if either EXPRESSION1 or EXPRESSION2 is true. - The `&&' and `||' operators do not evaluate EXPRESSION2 if the - value of EXPRESSION1 is sufficient to determine the return value - of the entire conditional expression. + The '&&' and '||' operators do not evaluate EXPRESSION2 if the + value of EXPRESSION1 is sufficient to determine the return value of + the entire conditional expression.  File: bash.info, Node: Command Grouping, Prev: Conditional Constructs, Up: Compound Commands @@ -988,10 +972,10 @@ File: bash.info, Node: Command Grouping, Prev: Conditional Constructs, Up: Co Bash provides two ways to group a list of commands to be executed as a unit. When commands are grouped, redirections may be applied to the -entire command list. For example, the output of all the commands in -the list may be redirected to a single stream. +entire command list. For example, the output of all the commands in the +list may be redirected to a single stream. -`()' +'()' ( LIST ) Placing a list of commands between parentheses causes a subshell @@ -1000,7 +984,7 @@ the list may be redirected to a single stream. Since the LIST is executed in a subshell, variable assignments do not remain in effect after the subshell completes. -`{}' +'{}' { LIST; } Placing a list of commands between curly braces causes the list to @@ -1009,9 +993,9 @@ the list may be redirected to a single stream. In addition to the creation of a subshell, there is a subtle difference between these two constructs due to historical reasons. The -braces are `reserved words', so they must be separated from the LIST by -`blank's or other shell metacharacters. The parentheses are -`operators', and are recognized as separate tokens by the shell even if +braces are 'reserved words', so they must be separated from the LIST by +'blank's or other shell metacharacters. The parentheses are +'operators', and are recognized as separate tokens by the shell even if they are not separated from the LIST by whitespace. The exit status of both of these constructs is the exit status of @@ -1023,9 +1007,9 @@ File: bash.info, Node: Coprocesses, Next: GNU Parallel, Prev: Compound Comman 3.2.5 Coprocesses ----------------- -A `coprocess' is a shell command preceded by the `coproc' reserved word. +A 'coprocess' is a shell command preceded by the 'coproc' reserved word. A coprocess is executed asynchronously in a subshell, as if the command -had been terminated with the `&' control operator, with a two-way pipe +had been terminated with the '&' control operator, with a two-way pipe established between the executing shell and the coprocess. The format for a coprocess is: @@ -1037,23 +1021,23 @@ simple command (*note Simple Commands::); otherwise, it is interpreted as the first word of the simple command. When the coprocess is executed, the shell creates an array variable -(*note Arrays::) named `NAME' in the context of the executing shell. +(*note Arrays::) named 'NAME' in the context of the executing shell. The standard output of COMMAND is connected via a pipe to a file descriptor in the executing shell, and that file descriptor is assigned -to `NAME'[0]. The standard input of COMMAND is connected via a pipe to +to 'NAME'[0]. The standard input of COMMAND is connected via a pipe to a file descriptor in the executing shell, and that file descriptor is -assigned to `NAME'[1]. This pipe is established before any -redirections specified by the command (*note Redirections::). The file -descriptors can be utilized as arguments to shell commands and -redirections using standard word expansions. The file descriptors are -not available in subshells. +assigned to 'NAME'[1]. This pipe is established before any redirections +specified by the command (*note Redirections::). The file descriptors +can be utilized as arguments to shell commands and redirections using +standard word expansions. The file descriptors are not available in +subshells. The process ID of the shell spawned to execute the coprocess is -available as the value of the variable `NAME'_PID. The `wait' builtin +available as the value of the variable 'NAME'_PID. The 'wait' builtin command may be used to wait for the coprocess to terminate. Since the coprocess is created as an asynchronous command, the -`coproc' command always returns success. The return status of a +'coproc' command always returns success. The return status of a coprocess is the exit status of COMMAND.  @@ -1071,24 +1055,24 @@ arguments, whether they are filenames, usernames, hostnames, or lines read from files. GNU Parallel provides shorthand references to many of the most common operations (input lines, various portions of the input line, different ways to specify the input source, and so on). Parallel -can replace `xargs' or feed commands from its input sources to several +can replace 'xargs' or feed commands from its input sources to several different instances of Bash. For a complete description, refer to the GNU Parallel documentation. A few examples should provide a brief introduction to its use. - For example, it is easy to replace `xargs' to gzip all html files in + For example, it is easy to replace 'xargs' to gzip all html files in the current directory and its subdirectories: find . -type f -name '*.html' -print | parallel gzip - If you need to protect special characters such as newlines in file -names, use find's `-print0' option and parallel's `-0' option. +If you need to protect special characters such as newlines in file +names, use find's '-print0' option and parallel's '-0' option. You can use Parallel to move files from the current directory when -the number of files is too large to process with one `mv' invocation: +the number of files is too large to process with one 'mv' invocation: ls | parallel mv {} destdir As you can see, the {} is replaced with each line read from standard -input. While using `ls' will work in most instances, it is not +input. While using 'ls' will work in most instances, it is not sufficient to deal with all filenames. If you need to accommodate special characters in filenames, you can use @@ -1096,8 +1080,8 @@ special characters in filenames, you can use as alluded to above. - This will run as many `mv' commands as there are files in the current -directory. You can emulate a parallel `xargs' by adding the `-X' + This will run as many 'mv' commands as there are files in the current +directory. You can emulate a parallel 'xargs' by adding the '-X' option: find . -depth 1 \! -name '.*' -print0 | parallel -0 -X mv {} destdir @@ -1111,13 +1095,12 @@ read from a file (in this case, filenames listed one per line): with a more compact syntax reminiscent of lambdas: cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | process-output - Parallel provides a built-in mechanism to remove filename -extensions, which lends itself to batch file transformations or -renaming: + Parallel provides a built-in mechanism to remove filename extensions, +which lends itself to batch file transformations or renaming: ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}" - This will recompress all files in the current directory with names +This will recompress all files in the current directory with names ending in .gz using bzip2, running one job per CPU (-j+0) in parallel. -(We use `ls' for brevity here; using `find' as above is more robust in +(We use 'ls' for brevity here; using 'find' as above is more robust in the face of filenames containing unexpected characters.) Parallel can take arguments from the command line; the above can also be written as @@ -1126,18 +1109,17 @@ take arguments from the command line; the above can also be written as If a command generates output, you may want to preserve the input order in the output. For instance, the following command { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel traceroute - will display as output the traceroute invocation that finishes first. -Adding the `-k' option +will display as output the traceroute invocation that finishes first. +Adding the '-k' option { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel -k traceroute - will ensure that the output of `traceroute foss.org.my' is displayed +will ensure that the output of 'traceroute foss.org.my' is displayed first. Finally, Parallel can be used to run a sequence of shell commands in -parallel, similar to `cat file | bash'. It is not uncommon to take a -list of filenames, create a series of shell commands to operate on -them, and feed that list of commnds to a shell. Parallel can speed -this up. Assuming that `file' contains a list of shell commands, one -per line, +parallel, similar to 'cat file | bash'. It is not uncommon to take a +list of filenames, create a series of shell commands to operate on them, +and feed that list of commnds to a shell. Parallel can speed this up. +Assuming that 'file' contains a list of shell commands, one per line, parallel -j 10 < file @@ -1154,10 +1136,10 @@ Shell functions are a way to group commands for later execution using a single name for the group. They are executed just like a "regular" command. When the name of a shell function is used as a simple command name, the list of commands associated with that function name is -executed. Shell functions are executed in the current shell context; -no new process is created to interpret them. +executed. Shell functions are executed in the current shell context; no +new process is created to interpret them. - Functions are declared using this syntax: + Functions are declared using this syntax: NAME () COMPOUND-COMMAND [ REDIRECTIONS ] or @@ -1165,21 +1147,20 @@ no new process is created to interpret them. function NAME [()] COMPOUND-COMMAND [ REDIRECTIONS ] This defines a shell function named NAME. The reserved word -`function' is optional. If the `function' reserved word is supplied, +'function' is optional. If the 'function' reserved word is supplied, the parentheses are optional. The BODY of the function is the compound command COMPOUND-COMMAND (*note Compound Commands::). That command is -usually a LIST enclosed between { and }, but may be any compound -command listed above, with one exception: If the `function' reserved -word is used, but the parentheses are not supplied, the braces are -required. COMPOUND-COMMAND is executed whenever NAME is specified as -the name of a command. When the shell is in POSIX mode (*note Bash -POSIX Mode::), NAME may not be the same as one of the special builtins -(*note Special Builtins::). Any redirections (*note Redirections::) -associated with the shell function are performed when the function is -executed. +usually a LIST enclosed between { and }, but may be any compound command +listed above, with one exception: If the 'function' reserved word is +used, but the parentheses are not supplied, the braces are required. +COMPOUND-COMMAND is executed whenever NAME is specified as the name of a +command. When the shell is in POSIX mode (*note Bash POSIX Mode::), +NAME may not be the same as one of the special builtins (*note Special +Builtins::). Any redirections (*note Redirections::) associated with +the shell function are performed when the function is executed. - A function definition may be deleted using the `-f' option to the -`unset' builtin (*note Bourne Shell Builtins::). + A function definition may be deleted using the '-f' option to the +'unset' builtin (*note Bourne Shell Builtins::). The exit status of a function definition is zero unless a syntax error occurs or a readonly function with the same name already exists. @@ -1187,64 +1168,64 @@ When executed, the exit status of a function is the exit status of the last command executed in the body. Note that for historical reasons, in the most common usage the curly -braces that surround the body of the function must be separated from -the body by `blank's or newlines. This is because the braces are -reserved words and are only recognized as such when they are separated -from the command list by whitespace or another shell metacharacter. -Also, when using the braces, the LIST must be terminated by a semicolon, -a `&', or a newline. +braces that surround the body of the function must be separated from the +body by 'blank's or newlines. This is because the braces are reserved +words and are only recognized as such when they are separated from the +command list by whitespace or another shell metacharacter. Also, when +using the braces, the LIST must be terminated by a semicolon, a '&', or +a newline. - When a function is executed, the arguments to the function become -the positional parameters during its execution (*note Positional -Parameters::). The special parameter `#' that expands to the number of + When a function is executed, the arguments to the function become the +positional parameters during its execution (*note Positional +Parameters::). The special parameter '#' that expands to the number of positional parameters is updated to reflect the change. Special -parameter `0' is unchanged. The first element of the `FUNCNAME' +parameter '0' is unchanged. The first element of the 'FUNCNAME' variable is set to the name of the function while the function is executing. All other aspects of the shell execution environment are identical -between a function and its caller with these exceptions: the `DEBUG' -and `RETURN' traps are not inherited unless the function has been given -the `trace' attribute using the `declare' builtin or the `-o functrace' -option has been enabled with the `set' builtin, (in which case all -functions inherit the `DEBUG' and `RETURN' traps), and the `ERR' trap -is not inherited unless the `-o errtrace' shell option has been enabled. -*Note Bourne Shell Builtins::, for the description of the `trap' +between a function and its caller with these exceptions: the 'DEBUG' and +'RETURN' traps are not inherited unless the function has been given the +'trace' attribute using the 'declare' builtin or the '-o functrace' +option has been enabled with the 'set' builtin, (in which case all +functions inherit the 'DEBUG' and 'RETURN' traps), and the 'ERR' trap is +not inherited unless the '-o errtrace' shell option has been enabled. +*Note Bourne Shell Builtins::, for the description of the 'trap' builtin. - The `FUNCNEST' variable, if set to a numeric value greater than 0, + The 'FUNCNEST' variable, if set to a numeric value greater than 0, defines a maximum function nesting level. Function invocations that exceed the limit cause the entire command to abort. - If the builtin command `return' is executed in a function, the -function completes and execution resumes with the next command after -the function call. Any command associated with the `RETURN' trap is + If the builtin command 'return' is executed in a function, the +function completes and execution resumes with the next command after the +function call. Any command associated with the 'RETURN' trap is executed before execution resumes. When a function completes, the -values of the positional parameters and the special parameter `#' are -restored to the values they had prior to the function's execution. If -a numeric argument is given to `return', that is the function's return -status; otherwise the function's return status is the exit status of -the last command executed before the `return'. +values of the positional parameters and the special parameter '#' are +restored to the values they had prior to the function's execution. If a +numeric argument is given to 'return', that is the function's return +status; otherwise the function's return status is the exit status of the +last command executed before the 'return'. - Variables local to the function may be declared with the `local' + Variables local to the function may be declared with the 'local' builtin. These variables are visible only to the function and the commands it invokes. - Function names and definitions may be listed with the `-f' option to -the `declare' (`typeset') builtin command (*note Bash Builtins::). The -`-F' option to `declare' or `typeset' will list the function names only -(and optionally the source file and line number, if the `extdebug' -shell option is enabled). Functions may be exported so that subshells -automatically have them defined with the `-f' option to the `export' + Function names and definitions may be listed with the '-f' option to +the 'declare' ('typeset') builtin command (*note Bash Builtins::). The +'-F' option to 'declare' or 'typeset' will list the function names only +(and optionally the source file and line number, if the 'extdebug' shell +option is enabled). Functions may be exported so that subshells +automatically have them defined with the '-f' option to the 'export' builtin (*note Bourne Shell Builtins::). Note that shell functions and variables with the same name may result in multiple identically-named entries in the environment passed to the shell's children. Care should be taken in cases where this may cause a problem. - Functions may be recursive. The `FUNCNEST' variable may be used to + Functions may be recursive. The 'FUNCNEST' variable may be used to limit the depth of the function call stack and restrict the number of function invocations. By default, no limit is placed on the number of -recursive calls. +recursive calls.  File: bash.info, Node: Shell Parameters, Next: Shell Expansions, Prev: Shell Functions, Up: Basic Shell Features @@ -1257,48 +1238,48 @@ File: bash.info, Node: Shell Parameters, Next: Shell Expansions, Prev: Shell * Positional Parameters:: The shell's command-line arguments. * Special Parameters:: Parameters denoted by special characters. - A PARAMETER is an entity that stores values. It can be a `name', a +A PARAMETER is an entity that stores values. It can be a 'name', a number, or one of the special characters listed below. A VARIABLE is a -parameter denoted by a `name'. A variable has a VALUE and zero or more -ATTRIBUTES. Attributes are assigned using the `declare' builtin command -(see the description of the `declare' builtin in *note Bash Builtins::). +parameter denoted by a 'name'. A variable has a VALUE and zero or more +ATTRIBUTES. Attributes are assigned using the 'declare' builtin command +(see the description of the 'declare' builtin in *note Bash Builtins::). A parameter is set if it has been assigned a value. The null string is a valid value. Once a variable is set, it may be unset only by using -the `unset' builtin command. +the 'unset' builtin command. A variable may be assigned to by a statement of the form NAME=[VALUE] - If VALUE is not given, the variable is assigned the null string. All +If VALUE is not given, the variable is assigned the null string. All VALUEs undergo tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote removal (detailed -below). If the variable has its `integer' attribute set, then VALUE is -evaluated as an arithmetic expression even if the `$((...))' expansion +below). If the variable has its 'integer' attribute set, then VALUE is +evaluated as an arithmetic expression even if the '$((...))' expansion is not used (*note Arithmetic Expansion::). Word splitting is not -performed, with the exception of `"$@"' as explained below. Filename +performed, with the exception of '"$@"' as explained below. Filename expansion is not performed. Assignment statements may also appear as -arguments to the `alias', `declare', `typeset', `export', `readonly', -and `local' builtin commands (DECLARATION commands). When in POSIX -mode (*note Bash POSIX Mode::), these builtins may appear in a command -after one or more instances of the `command' builtin and retain these +arguments to the 'alias', 'declare', 'typeset', 'export', 'readonly', +and 'local' builtin commands (DECLARATION commands). When in POSIX mode +(*note Bash POSIX Mode::), these builtins may appear in a command after +one or more instances of the 'command' builtin and retain these assignment statement properties. In the context where an assignment statement is assigning a value to -a shell variable or array index (*note Arrays::), the `+=' operator can +a shell variable or array index (*note Arrays::), the '+=' operator can be used to append to or add to the variable's previous value. This -includes arguments to builtin commands such as `declare' that accept -assignment statements (DECLARATION commands). When `+=' is applied to -a variable for which the INTEGER attribute has been set, VALUE is +includes arguments to builtin commands such as 'declare' that accept +assignment statements (DECLARATION commands). When '+=' is applied to a +variable for which the INTEGER attribute has been set, VALUE is evaluated as an arithmetic expression and added to the variable's -current value, which is also evaluated. When `+=' is applied to an +current value, which is also evaluated. When '+=' is applied to an array variable using compound assignment (*note Arrays::), the -variable's value is not unset (as it is when using `='), and new values +variable's value is not unset (as it is when using '='), and new values are appended to the array beginning at one greater than the array's -maximum index (for indexed arrays), or added as additional key-value +maximum index (for indexed arrays), or added as additional key-value pairs in an associative array. When applied to a string-valued variable, VALUE is expanded and appended to the variable's value. - A variable can be assigned the NAMEREF attribute using the `-n' + A variable can be assigned the NAMEREF attribute using the '-n' option to the \fBdeclare\fP or \fBlocal\fP builtin commands (*note Bash Builtins::) to create a NAMEREF, or a reference to another variable. This allows variables to be manipulated indirectly. Whenever the @@ -1310,19 +1291,19 @@ refer to a variable whose name is passed as an argument to the function. For instance, if a variable name is passed to a shell function as its first argument, running declare -n ref=$1 - inside the function creates a nameref variable REF whose value is -the variable name passed as the first argument. References and -assignments to REF, and changes to its attributes, are treated as -references, assignments, and attribute modifications to the variable -whose name was passed as `$1'. +inside the function creates a nameref variable REF whose value is the +variable name passed as the first argument. References and assignments +to REF, and changes to its attributes, are treated as references, +assignments, and attribute modifications to the variable whose name was +passed as '$1'. - If the control variable in a `for' loop has the nameref attribute, + If the control variable in a 'for' loop has the nameref attribute, the list of words can be a list of shell variables, and a name reference will be established for each word in the list, in turn, when the loop is executed. Array variables cannot be given the nameref attribute. However, nameref variables can reference array variables and subscripted -array variables. Namerefs can be unset using the `-n' option to the -`unset' builtin (*note Bourne Shell Builtins::). Otherwise, if `unset' +array variables. Namerefs can be unset using the '-n' option to the +'unset' builtin (*note Bourne Shell Builtins::). Otherwise, if 'unset' is executed with the name of a nameref variable as an argument, the variable referenced by the nameref variable will be unset. @@ -1333,17 +1314,17 @@ File: bash.info, Node: Positional Parameters, Next: Special Parameters, Up: S --------------------------- A POSITIONAL PARAMETER is a parameter denoted by one or more digits, -other than the single digit `0'. Positional parameters are assigned +other than the single digit '0'. Positional parameters are assigned from the shell's arguments when it is invoked, and may be reassigned -using the `set' builtin command. Positional parameter `N' may be -referenced as `${N}', or as `$N' when `N' consists of a single digit. +using the 'set' builtin command. Positional parameter 'N' may be +referenced as '${N}', or as '$N' when 'N' consists of a single digit. Positional parameters may not be assigned to with assignment statements. -The `set' and `shift' builtins are used to set and unset them (*note +The 'set' and 'shift' builtins are used to set and unset them (*note Shell Builtin Commands::). The positional parameters are temporarily replaced when a shell function is executed (*note Shell Functions::). - When a positional parameter consisting of more than a single digit -is expanded, it must be enclosed in braces. + When a positional parameter consisting of more than a single digit is +expanded, it must be enclosed in braces.  File: bash.info, Node: Special Parameters, Prev: Positional Parameters, Up: Shell Parameters @@ -1354,70 +1335,69 @@ File: bash.info, Node: Special Parameters, Prev: Positional Parameters, Up: S The shell treats several parameters specially. These parameters may only be referenced; assignment to them is not allowed. -`*' - ($*) Expands to the positional parameters, starting from one. - When the expansion is not within double quotes, each positional +'*' + ($*) Expands to the positional parameters, starting from one. When + the expansion is not within double quotes, each positional parameter expands to a separate word. In contexts where it is performed, those words are subject to further word splitting and pathname expansion. When the expansion occurs within double quotes, it expands to a single word with the value of each - parameter separated by the first character of the `IFS' special - variable. That is, `"$*"' is equivalent to `"$1C$2C..."', where C - is the first character of the value of the `IFS' variable. If - `IFS' is unset, the parameters are separated by spaces. If `IFS' + parameter separated by the first character of the 'IFS' special + variable. That is, '"$*"' is equivalent to '"$1C$2C..."', where C + is the first character of the value of the 'IFS' variable. If + 'IFS' is unset, the parameters are separated by spaces. If 'IFS' is null, the parameters are joined without intervening separators. -`@' - ($@) Expands to the positional parameters, starting from one. - When the expansion occurs within double quotes, each parameter - expands to a separate word. That is, `"$@"' is equivalent to - `"$1" "$2" ...'. If the double-quoted expansion occurs within a - word, the expansion of the first parameter is joined with the - beginning part of the original word, and the expansion of the last - parameter is joined with the last part of the original word. When - there are no positional parameters, `"$@"' and `$@' expand to - nothing (i.e., they are removed). +'@' + ($@) Expands to the positional parameters, starting from one. When + the expansion occurs within double quotes, each parameter expands + to a separate word. That is, '"$@"' is equivalent to '"$1" "$2" + ...'. If the double-quoted expansion occurs within a word, the + expansion of the first parameter is joined with the beginning part + of the original word, and the expansion of the last parameter is + joined with the last part of the original word. When there are no + positional parameters, '"$@"' and '$@' expand to nothing (i.e., + they are removed). -`#' +'#' ($#) Expands to the number of positional parameters in decimal. -`?' - ($?) Expands to the exit status of the most recently executed +'?' + ($?) Expands to the exit status of the most recently executed foreground pipeline. -`-' +'-' ($-, a hyphen.) Expands to the current option flags as specified - upon invocation, by the `set' builtin command, or those set by the - shell itself (such as the `-i' option). + upon invocation, by the 'set' builtin command, or those set by the + shell itself (such as the '-i' option). -`$' - ($$) Expands to the process ID of the shell. In a `()' subshell, +'$' + ($$) Expands to the process ID of the shell. In a '()' subshell, it expands to the process ID of the invoking shell, not the subshell. -`!' - ($!) Expands to the process ID of the job most recently placed - into the background, whether executed as an asynchronous command - or using the `bg' builtin (*note Job Control Builtins::). +'!' + ($!) Expands to the process ID of the job most recently placed + into the background, whether executed as an asynchronous command or + using the 'bg' builtin (*note Job Control Builtins::). -`0' - ($0) Expands to the name of the shell or shell script. This is - set at shell initialization. If Bash is invoked with a file of - commands (*note Shell Scripts::), `$0' is set to the name of that - file. If Bash is started with the `-c' option (*note Invoking - Bash::), then `$0' is set to the first argument after the string - to be executed, if one is present. Otherwise, it is set to the +'0' + ($0) Expands to the name of the shell or shell script. This is set + at shell initialization. If Bash is invoked with a file of + commands (*note Shell Scripts::), '$0' is set to the name of that + file. If Bash is started with the '-c' option (*note Invoking + Bash::), then '$0' is set to the first argument after the string to + be executed, if one is present. Otherwise, it is set to the filename used to invoke Bash, as given by argument zero. -`_' +'_' ($_, an underscore.) At shell startup, set to the absolute - pathname used to invoke the shell or shell script being executed - as passed in the environment or argument list. Subsequently, - expands to the last argument to the previous command, after - expansion. Also set to the full pathname used to invoke each - command executed and placed in the environment exported to that - command. When checking mail, this parameter holds the name of the - mail file. + pathname used to invoke the shell or shell script being executed as + passed in the environment or argument list. Subsequently, expands + to the last argument to the previous command, after expansion. + Also set to the full pathname used to invoke each command executed + and placed in the environment exported to that command. When + checking mail, this parameter holds the name of the mail file.  File: bash.info, Node: Shell Expansions, Next: Redirections, Prev: Shell Parameters, Up: Basic Shell Features @@ -1426,20 +1406,14 @@ File: bash.info, Node: Shell Expansions, Next: Redirections, Prev: Shell Para ==================== Expansion is performed on the command line after it has been split into -`token's. There are seven kinds of expansion performed: +'token's. There are seven kinds of expansion performed: * brace expansion - * tilde expansion - * parameter and variable expansion - * command substitution - * arithmetic expansion - * word splitting - * filename expansion * Menu: @@ -1470,10 +1444,10 @@ substitution. Only brace expansion, word splitting, and filename expansion can change the number of words of the expansion; other expansions expand a single word to a single word. The only exceptions to this are the -expansions of `"$@"' (*note Special Parameters::) and `"${NAME[@]}"' +expansions of '"$@"' (*note Special Parameters::) and '"${NAME[@]}"' (*note Arrays::). - After all expansions, `quote removal' (*note Quote Removal::) is + After all expansions, 'quote removal' (*note Quote Removal::) is performed.  @@ -1497,16 +1471,16 @@ are not sorted; left to right order is preserved. For example, bash$ echo a{d,c,b}e ade ace abe - A sequence expression takes the form `{X..Y[..INCR]}', where X and Y + A sequence expression takes the form '{X..Y[..INCR]}', where X and Y are either integers or single characters, and INCR, an optional increment, is an integer. When integers are supplied, the expression expands to each number between X and Y, inclusive. Supplied integers -may be prefixed with `0' to force each term to have the same width. +may be prefixed with '0' to force each term to have the same width. When either X or Y begins with a zero, the shell attempts to force all -generated terms to contain the same number of digits, zero-padding -where necessary. When characters are supplied, the expression expands -to each character lexicographically between X and Y, inclusive, using -the default C locale. Note that both X and Y must be of the same type. +generated terms to contain the same number of digits, zero-padding where +necessary. When characters are supplied, the expression expands to each +character lexicographically between X and Y, inclusive, using the +default C locale. Note that both X and Y must be of the same type. When the increment is supplied, it is used as the difference between each term. The default increment is 1 or -1 as appropriate. @@ -1514,16 +1488,16 @@ each term. The default increment is 1 or -1 as appropriate. characters special to other expansions are preserved in the result. It is strictly textual. Bash does not apply any syntactic interpretation to the context of the expansion or the text between the braces. To -avoid conflicts with parameter expansion, the string `${' is not +avoid conflicts with parameter expansion, the string '${' is not considered eligible for brace expansion. A correctly-formed brace expansion must contain unquoted opening and closing braces, and at least one unquoted comma or a valid sequence expression. Any incorrectly formed brace expansion is left unchanged. - A { or `,' may be quoted with a backslash to prevent its being + A { or ',' may be quoted with a backslash to prevent its being considered part of a brace expression. To avoid conflicts with -parameter expansion, the string `${' is not considered eligible for +parameter expansion, the string '${' is not considered eligible for brace expansion. This construct is typically used as shorthand when the common prefix @@ -1538,63 +1512,62 @@ File: bash.info, Node: Tilde Expansion, Next: Shell Parameter Expansion, Prev 3.5.2 Tilde Expansion --------------------- -If a word begins with an unquoted tilde character (`~'), all of the +If a word begins with an unquoted tilde character ('~'), all of the characters up to the first unquoted slash (or all characters, if there is no unquoted slash) are considered a TILDE-PREFIX. If none of the characters in the tilde-prefix are quoted, the characters in the tilde-prefix following the tilde are treated as a possible LOGIN NAME. If this login name is the null string, the tilde is replaced with the -value of the `HOME' shell variable. If `HOME' is unset, the home +value of the 'HOME' shell variable. If 'HOME' is unset, the home directory of the user executing the shell is substituted instead. Otherwise, the tilde-prefix is replaced with the home directory associated with the specified login name. - If the tilde-prefix is `~+', the value of the shell variable `PWD' -replaces the tilde-prefix. If the tilde-prefix is `~-', the value of -the shell variable `OLDPWD', if it is set, is substituted. + If the tilde-prefix is '~+', the value of the shell variable 'PWD' +replaces the tilde-prefix. If the tilde-prefix is '~-', the value of +the shell variable 'OLDPWD', if it is set, is substituted. If the characters following the tilde in the tilde-prefix consist of -a number N, optionally prefixed by a `+' or a `-', the tilde-prefix is +a number N, optionally prefixed by a '+' or a '-', the tilde-prefix is replaced with the corresponding element from the directory stack, as it -would be displayed by the `dirs' builtin invoked with the characters +would be displayed by the 'dirs' builtin invoked with the characters following tilde in the tilde-prefix as an argument (*note The Directory Stack::). If the tilde-prefix, sans the tilde, consists of a number -without a leading `+' or `-', `+' is assumed. +without a leading '+' or '-', '+' is assumed. If the login name is invalid, or the tilde expansion fails, the word is left unchanged. Each variable assignment is checked for unquoted tilde-prefixes -immediately following a `:' or the first `='. In these cases, tilde +immediately following a ':' or the first '='. In these cases, tilde expansion is also performed. Consequently, one may use filenames with -tildes in assignments to `PATH', `MAILPATH', and `CDPATH', and the -shell assigns the expanded value. +tildes in assignments to 'PATH', 'MAILPATH', and 'CDPATH', and the shell +assigns the expanded value. The following table shows how Bash treats unquoted tilde-prefixes: -`~' - The value of `$HOME' +'~' + The value of '$HOME' +'~/foo' + '$HOME/foo' -`~/foo' - `$HOME/foo' +'~fred/foo' + The subdirectory 'foo' of the home directory of the user 'fred' -`~fred/foo' - The subdirectory `foo' of the home directory of the user `fred' +'~+/foo' + '$PWD/foo' -`~+/foo' - `$PWD/foo' +'~-/foo' + '${OLDPWD-'~-'}/foo' -`~-/foo' - `${OLDPWD-'~-'}/foo' +'~N' + The string that would be displayed by 'dirs +N' -`~N' - The string that would be displayed by `dirs +N' +'~+N' + The string that would be displayed by 'dirs +N' -`~+N' - The string that would be displayed by `dirs +N' - -`~-N' - The string that would be displayed by `dirs -N' +'~-N' + The string that would be displayed by 'dirs -N'  File: bash.info, Node: Shell Parameter Expansion, Next: Command Substitution, Prev: Tilde Expansion, Up: Shell Expansions @@ -1602,13 +1575,13 @@ File: bash.info, Node: Shell Parameter Expansion, Next: Command Substitution, 3.5.3 Shell Parameter Expansion ------------------------------- -The `$' character introduces parameter expansion, command substitution, +The '$' character introduces parameter expansion, command substitution, or arithmetic expansion. The parameter name or symbol to be expanded may be enclosed in braces, which are optional but serve to protect the variable to be expanded from characters immediately following it which could be interpreted as part of the name. - When braces are used, the matching ending brace is the first `}' not + When braces are used, the matching ending brace is the first '}' not escaped by a backslash or within a quoted string, and not within an embedded arithmetic expansion, command substitution, or parameter expansion. @@ -1620,52 +1593,54 @@ Arrays::). The braces are required when PARAMETER is a positional parameter with more than one digit, or when PARAMETER is followed by a character that is not to be interpreted as part of its name. - If the first character of PARAMETER is an exclamation point (!), it -introduces a level of variable indirection. Bash uses the value of the -variable formed from the rest of PARAMETER as the name of the variable; -this variable is then expanded and that value is used in the rest of -the substitution, rather than the value of PARAMETER itself. This is -known as `indirect expansion'. The exceptions to this are the -expansions of ${!PREFIX*} and ${!NAME[@]} described below. The -exclamation point must immediately follow the left brace in order to -introduce indirection. + If the first character of PARAMETER is an exclamation point (!), and +PARAMETER is not a NAMEREF, it introduces a level of variable +indirection. Bash uses the value of the variable formed from the rest +of PARAMETER as the name of the variable; this variable is then expanded +and that value is used in the rest of the substitution, rather than the +value of PARAMETER itself. This is known as 'indirect expansion'. If +PARAMETER is a nameref, this expands to the name of the variable +referenced by PARAMETER instead of performing the complete indirect +expansion. The exceptions to this are the expansions of ${!PREFIX*} and +${!NAME[@]} described below. The exclamation point must immediately +follow the left brace in order to introduce indirection. In each of the cases below, WORD is subject to tilde expansion, parameter expansion, command substitution, and arithmetic expansion. When not performing substring expansion, using the form described -below (e.g., `:-'), Bash tests for a parameter that is unset or null. +below (e.g., ':-'), Bash tests for a parameter that is unset or null. Omitting the colon results in a test only for a parameter that is unset. Put another way, if the colon is included, the operator tests for both PARAMETER's existence and that its value is not null; if the colon is omitted, the operator tests only for existence. -`${PARAMETER:-WORD}' +'${PARAMETER:-WORD}' If PARAMETER is unset or null, the expansion of WORD is substituted. Otherwise, the value of PARAMETER is substituted. -`${PARAMETER:=WORD}' - If PARAMETER is unset or null, the expansion of WORD is assigned - to PARAMETER. The value of PARAMETER is then substituted. - Positional parameters and special parameters may not be assigned to - in this way. +'${PARAMETER:=WORD}' + If PARAMETER is unset or null, the expansion of WORD is assigned to + PARAMETER. The value of PARAMETER is then substituted. Positional + parameters and special parameters may not be assigned to in this + way. -`${PARAMETER:?WORD}' +'${PARAMETER:?WORD}' If PARAMETER is null or unset, the expansion of WORD (or a message to that effect if WORD is not present) is written to the standard error and the shell, if it is not interactive, exits. Otherwise, the value of PARAMETER is substituted. -`${PARAMETER:+WORD}' +'${PARAMETER:+WORD}' If PARAMETER is null or unset, nothing is substituted, otherwise the expansion of WORD is substituted. -`${PARAMETER:OFFSET}' -`${PARAMETER:OFFSET:LENGTH}' +'${PARAMETER:OFFSET}' +'${PARAMETER:OFFSET:LENGTH}' This is referred to as Substring Expansion. It expands to up to LENGTH characters of the value of PARAMETER starting at the - character specified by OFFSET. If PARAMETER is `@', an indexed - array subscripted by `@' or `*', or an associative array name, the + character specified by OFFSET. If PARAMETER is '@', an indexed + array subscripted by '@' or '*', or an associative array name, the results differ as described below. If LENGTH is omitted, it expands to the substring of the value of PARAMETER starting at the character specified by OFFSET and extending to the end of the @@ -1679,7 +1654,7 @@ omitted, the operator tests only for existence. rather than a number of characters, and the expansion is the characters between OFFSET and that result. Note that a negative offset must be separated from the colon by at least one space to - avoid being confused with the `:-' expansion. + avoid being confused with the ':-' expansion. Here are some examples illustrating substring expansion on parameters and subscripted arrays: @@ -1736,7 +1711,7 @@ omitted, the operator tests only for existence. $ echo ${array[0]: -7:-2} bcdef - If PARAMETER is `@', the result is LENGTH positional parameters + If PARAMETER is '@', the result is LENGTH positional parameters beginning at OFFSET. A negative OFFSET is taken relative to one greater than the greatest positional parameter, so an offset of -1 evaluates to the last positional parameter. It is an expansion @@ -1762,11 +1737,12 @@ omitted, the operator tests only for existence. ./bash 1 $ echo ${@: -7:0} - If PARAMETER is an indexed array name subscripted by `@' or `*', + + If PARAMETER is an indexed array name subscripted by '@' or '*', the result is the LENGTH members of the array beginning with - `${PARAMETER[OFFSET]}'. A negative OFFSET is taken relative to - one greater than the maximum index of the specified array. It is - an expansion error if LENGTH evaluates to a number less than zero. + '${PARAMETER[OFFSET]}'. A negative OFFSET is taken relative to one + greater than the maximum index of the specified array. It is an + expansion error if LENGTH evaluates to a number less than zero. These examples show how you can use substring expansion with indexed arrays: @@ -1786,107 +1762,142 @@ omitted, the operator tests only for existence. 0 1 $ echo ${array[@]: -7:0} + Substring expansion applied to an associative array produces undefined results. Substring indexing is zero-based unless the positional parameters are used, in which case the indexing starts at 1 by default. If - OFFSET is 0, and the positional parameters are used, `$@' is + OFFSET is 0, and the positional parameters are used, '$@' is prefixed to the list. -`${!PREFIX*}' -`${!PREFIX@}' +'${!PREFIX*}' +'${!PREFIX@}' Expands to the names of variables whose names begin with PREFIX, - separated by the first character of the `IFS' special variable. - When `@' is used and the expansion appears within double quotes, + separated by the first character of the 'IFS' special variable. + When '@' is used and the expansion appears within double quotes, each variable name expands to a separate word. -`${!NAME[@]}' -`${!NAME[*]}' +'${!NAME[@]}' +'${!NAME[*]}' If NAME is an array variable, expands to the list of array indices (keys) assigned in NAME. If NAME is not an array, expands to 0 if - NAME is set and null otherwise. When `@' is used and the - expansion appears within double quotes, each key expands to a - separate word. + NAME is set and null otherwise. When '@' is used and the expansion + appears within double quotes, each key expands to a separate word. -`${#PARAMETER}' +'${#PARAMETER}' The length in characters of the expanded value of PARAMETER is - substituted. If PARAMETER is `*' or `@', the value substituted is - the number of positional parameters. If PARAMETER is an array - name subscripted by `*' or `@', the value substituted is the - number of elements in the array. If PARAMETER is an indexed array - name subscripted by a negative number, that number is interpreted - as relative to one greater than the maximum index of PARAMETER, so - negative indices count back from the end of the array, and an - index of -1 references the last element. + substituted. If PARAMETER is '*' or '@', the value substituted is + the number of positional parameters. If PARAMETER is an array name + subscripted by '*' or '@', the value substituted is the number of + elements in the array. If PARAMETER is an indexed array name + subscripted by a negative number, that number is interpreted as + relative to one greater than the maximum index of PARAMETER, so + negative indices count back from the end of the array, and an index + of -1 references the last element. -`${PARAMETER#WORD}' -`${PARAMETER##WORD}' +'${PARAMETER#WORD}' +'${PARAMETER##WORD}' The WORD is expanded to produce a pattern just as in filename - expansion (*note Filename Expansion::). If the pattern matches - the beginning of the expanded value of PARAMETER, then the result - of the expansion is the expanded value of PARAMETER with the - shortest matching pattern (the `#' case) or the longest matching - pattern (the `##' case) deleted. If PARAMETER is `@' or `*', the - pattern removal operation is applied to each positional parameter - in turn, and the expansion is the resultant list. If PARAMETER is - an array variable subscripted with `@' or `*', the pattern removal - operation is applied to each member of the array in turn, and the - expansion is the resultant list. + expansion (*note Filename Expansion::). If the pattern matches the + beginning of the expanded value of PARAMETER, then the result of + the expansion is the expanded value of PARAMETER with the shortest + matching pattern (the '#' case) or the longest matching pattern + (the '##' case) deleted. If PARAMETER is '@' or '*', the pattern + removal operation is applied to each positional parameter in turn, + and the expansion is the resultant list. If PARAMETER is an array + variable subscripted with '@' or '*', the pattern removal operation + is applied to each member of the array in turn, and the expansion + is the resultant list. -`${PARAMETER%WORD}' -`${PARAMETER%%WORD}' +'${PARAMETER%WORD}' +'${PARAMETER%%WORD}' The WORD is expanded to produce a pattern just as in filename expansion. If the pattern matches a trailing portion of the expanded value of PARAMETER, then the result of the expansion is - the value of PARAMETER with the shortest matching pattern (the `%' - case) or the longest matching pattern (the `%%' case) deleted. If - PARAMETER is `@' or `*', the pattern removal operation is applied + the value of PARAMETER with the shortest matching pattern (the '%' + case) or the longest matching pattern (the '%%' case) deleted. If + PARAMETER is '@' or '*', the pattern removal operation is applied to each positional parameter in turn, and the expansion is the - resultant list. If PARAMETER is an array variable subscripted - with `@' or `*', the pattern removal operation is applied to each - member of the array in turn, and the expansion is the resultant - list. + resultant list. If PARAMETER is an array variable subscripted with + '@' or '*', the pattern removal operation is applied to each member + of the array in turn, and the expansion is the resultant list. + +'${PARAMETER/PATTERN/STRING}' -`${PARAMETER/PATTERN/STRING}' The PATTERN is expanded to produce a pattern just as in filename expansion. PARAMETER is expanded and the longest match of PATTERN against its value is replaced with STRING. If PATTERN begins with - `/', all matches of PATTERN are replaced with STRING. Normally - only the first match is replaced. If PATTERN begins with `#', it - must match at the beginning of the expanded value of PARAMETER. - If PATTERN begins with `%', it must match at the end of the - expanded value of PARAMETER. If STRING is null, matches of - PATTERN are deleted and the `/' following PATTERN may be omitted. - If PARAMETER is `@' or `*', the substitution operation is applied - to each positional parameter in turn, and the expansion is the - resultant list. If PARAMETER is an array variable subscripted - with `@' or `*', the substitution operation is applied to each - member of the array in turn, and the expansion is the resultant - list. + '/', all matches of PATTERN are replaced with STRING. Normally + only the first match is replaced. If PATTERN begins with '#', it + must match at the beginning of the expanded value of PARAMETER. If + PATTERN begins with '%', it must match at the end of the expanded + value of PARAMETER. If STRING is null, matches of PATTERN are + deleted and the '/' following PATTERN may be omitted. If the + 'nocasematch' shell option (see the description of 'shopt' in *note + The Shopt Builtin::) is enabled, the match is performed without + regard to the case of alphabetic characters. If PARAMETER is '@' + or '*', the substitution operation is applied to each positional + parameter in turn, and the expansion is the resultant list. If + PARAMETER is an array variable subscripted with '@' or '*', the + substitution operation is applied to each member of the array in + turn, and the expansion is the resultant list. -`${PARAMETER^PATTERN}' -`${PARAMETER^^PATTERN}' -`${PARAMETER,PATTERN}' -`${PARAMETER,,PATTERN}' +'${PARAMETER^PATTERN}' +'${PARAMETER^^PATTERN}' +'${PARAMETER,PATTERN}' +'${PARAMETER,,PATTERN}' This expansion modifies the case of alphabetic characters in PARAMETER. The PATTERN is expanded to produce a pattern just as in filename expansion. Each character in the expanded value of PARAMETER is tested against PATTERN, and, if it matches the pattern, its case is converted. The pattern should not attempt to - match more than one character. The `^' operator converts - lowercase letters matching PATTERN to uppercase; the `,' operator - converts matching uppercase letters to lowercase. The `^^' and - `,,' expansions convert each matched character in the expanded - value; the `^' and `,' expansions match and convert only the first + match more than one character. The '^' operator converts lowercase + letters matching PATTERN to uppercase; the ',' operator converts + matching uppercase letters to lowercase. The '^^' and ',,' + expansions convert each matched character in the expanded value; + the '^' and ',' expansions match and convert only the first character in the expanded value. If PATTERN is omitted, it is - treated like a `?', which matches every character. If PARAMETER - is `@' or `*', the case modification operation is applied to each + treated like a '?', which matches every character. If PARAMETER is + '@' or '*', the case modification operation is applied to each positional parameter in turn, and the expansion is the resultant - list. If PARAMETER is an array variable subscripted with `@' or - `*', the case modification operation is applied to each member of + list. If PARAMETER is an array variable subscripted with '@' or + '*', the case modification operation is applied to each member of the array in turn, and the expansion is the resultant list. +'${PARAMETER@OPERATOR}' + The expansion is either a transformation of the value of PARAMETER + or information about PARAMETER itself, depending on the value of + OPERATOR. Each OPERATOR is a single letter: + + 'Q' + The expansion is a string that is the value of PARAMETER + quoted in a format that can be reused as input. + 'E' + The expansion is a string that is the value of PARAMETER with + backslash escape sequences expanded as with the '$'...'' + quoting mechansim. + 'P' + The expansion is a string that is the result of expanding the + value of PARAMETER as if it were a prompt string (*note + Controlling the Prompt::). + 'A' + The expansion is a string in the form of an assignment + statement or 'declare' command that, if evaluated, will + recreate PARAMETER with its attributes and value. + 'a' + The expansion is a string consisting of flag values + representing PARAMETER's attributes. + + If PARAMETER is '@' or '*', the operation is applied to each + positional parameter in turn, and the expansion is the resultant + list. If PARAMETER is an array variable subscripted with '@' or + '*', the operation is applied to each member of the array in turn, + and the expansion is the resultant list. + + The result of the expansion is subject to word splitting and + pathname expansion as described below. +  File: bash.info, Node: Command Substitution, Next: Arithmetic Expansion, Prev: Shell Parameter Expansion, Up: Shell Expansions @@ -1897,19 +1908,20 @@ Command substitution allows the output of a command to replace the command itself. Command substitution occurs when a command is enclosed as follows: $(COMMAND) - or +or `COMMAND` -Bash performs the expansion by executing COMMAND and replacing the -command substitution with the standard output of the command, with any -trailing newlines deleted. Embedded newlines are not deleted, but they -may be removed during word splitting. The command substitution `$(cat -FILE)' can be replaced by the equivalent but faster `$(< FILE)'. +Bash performs the expansion by executing COMMAND in a subshell +environment and replacing the command substitution with the standard +output of the command, with any trailing newlines deleted. Embedded +newlines are not deleted, but they may be removed during word splitting. +The command substitution '$(cat FILE)' can be replaced by the equivalent +but faster '$(< FILE)'. When the old-style backquote form of substitution is used, backslash -retains its literal meaning except when followed by `$', ``', or `\'. +retains its literal meaning except when followed by '$', '`', or '\'. The first backquote not preceded by a backslash terminates the command -substitution. When using the `$(COMMAND)' form, all characters between +substitution. When using the '$(COMMAND)' form, all characters between the parentheses make up the command; none are treated specially. Command substitutions may be nested. To nest when using the @@ -1925,8 +1937,8 @@ File: bash.info, Node: Arithmetic Expansion, Next: Process Substitution, Prev -------------------------- Arithmetic expansion allows the evaluation of an arithmetic expression -and the substitution of the result. The format for arithmetic -expansion is: +and the substitution of the result. The format for arithmetic expansion +is: $(( EXPRESSION )) @@ -1938,8 +1950,8 @@ arithmetic expression to be evaluated. Arithmetic expansions may be nested. The evaluation is performed according to the rules listed below -(*note Shell Arithmetic::). If the expression is invalid, Bash prints -a message indicating failure to the standard error and no substitution +(*note Shell Arithmetic::). If the expression is invalid, Bash prints a +message indicating failure to the standard error and no substitution occurs.  @@ -1948,20 +1960,21 @@ File: bash.info, Node: Process Substitution, Next: Word Splitting, Prev: Arit 3.5.6 Process Substitution -------------------------- -Process substitution is supported on systems that support named pipes -(FIFOs) or the `/dev/fd' method of naming open files. It takes the -form of +Process substitution allows a process's input or output to be referred +to using a filename. It takes the form of <(LIST) - or +or >(LIST) - The process LIST is run with its input or output connected to a FIFO -or some file in `/dev/fd'. The name of this file is passed as an -argument to the current command as the result of the expansion. If the -`>(LIST)' form is used, writing to the file will provide input for -LIST. If the `<(LIST)' form is used, the file passed as an argument -should be read to obtain the output of LIST. Note that no space may -appear between the `<' or `>' and the left parenthesis, otherwise the -construct would be interpreted as a redirection. +The process LIST is run asynchronously, and its input or output appears +as a filename. This filename is passed as an argument to the current +command as the result of the expansion. If the '>(LIST)' form is used, +writing to the file will provide input for LIST. If the '<(LIST)' form +is used, the file passed as an argument should be read to obtain the +output of LIST. Note that no space may appear between the '<' or '>' +and the left parenthesis, otherwise the construct would be interpreted +as a redirection. Process substitution is supported on systems that +support named pipes (FIFOs) or the '/dev/fd' method of naming open +files. When available, process substitution is performed simultaneously with parameter and variable expansion, command substitution, and arithmetic @@ -1977,26 +1990,26 @@ The shell scans the results of parameter expansion, command substitution, and arithmetic expansion that did not occur within double quotes for word splitting. - The shell treats each character of `$IFS' as a delimiter, and splits -the results of the other expansions into words using these characters -as field terminators. If `IFS' is unset, or its value is exactly -`', the default, then sequences of ` ', -`', and `' at the beginning and end of the results of the -previous expansions are ignored, and any sequence of `IFS' characters -not at the beginning or end serves to delimit words. If `IFS' has a + The shell treats each character of '$IFS' as a delimiter, and splits +the results of the other expansions into words using these characters as +field terminators. If 'IFS' is unset, or its value is exactly +'', the default, then sequences of ' ', +'', and '' at the beginning and end of the results of the +previous expansions are ignored, and any sequence of 'IFS' characters +not at the beginning or end serves to delimit words. If 'IFS' has a value other than the default, then sequences of the whitespace -characters `space' and `tab' are ignored at the beginning and end of the -word, as long as the whitespace character is in the value of `IFS' (an -`IFS' whitespace character). Any character in `IFS' that is not `IFS' -whitespace, along with any adjacent `IFS' whitespace characters, -delimits a field. A sequence of `IFS' whitespace characters is also -treated as a delimiter. If the value of `IFS' is null, no word +characters 'space', 'tab', and 'newline' are ignored at the beginning +and end of the word, as long as the whitespace character is in the value +of 'IFS' (an 'IFS' whitespace character). Any character in 'IFS' that +is not 'IFS' whitespace, along with any adjacent 'IFS' whitespace +characters, delimits a field. A sequence of 'IFS' whitespace characters +is also treated as a delimiter. If the value of 'IFS' is null, no word splitting occurs. - Explicit null arguments (`""' or `''') are retained. Unquoted -implicit null arguments, resulting from the expansion of parameters -that have no values, are removed. If a parameter with no value is -expanded within double quotes, a null argument results and is retained. + Explicit null arguments ('""' or '''') are retained. Unquoted +implicit null arguments, resulting from the expansion of parameters that +have no values, are removed. If a parameter with no value is expanded +within double quotes, a null argument results and is retained. Note that if no expansion occurs, no splitting is performed. @@ -2010,39 +2023,40 @@ File: bash.info, Node: Filename Expansion, Next: Quote Removal, Prev: Word Sp * Pattern Matching:: How the shell matches patterns. - After word splitting, unless the `-f' option has been set (*note The -Set Builtin::), Bash scans each word for the characters `*', `?', and -`['. If one of these characters appears, then the word is regarded as -a PATTERN, and replaced with an alphabetically sorted list of filenames +After word splitting, unless the '-f' option has been set (*note The Set +Builtin::), Bash scans each word for the characters '*', '?', and '['. +If one of these characters appears, then the word is regarded as a +PATTERN, and replaced with an alphabetically sorted list of filenames matching the pattern (*note Pattern Matching::). If no matching -filenames are found, and the shell option `nullglob' is disabled, the -word is left unchanged. If the `nullglob' option is set, and no -matches are found, the word is removed. If the `failglob' shell option -is set, and no matches are found, an error message is printed and the -command is not executed. If the shell option `nocaseglob' is enabled, -the match is performed without regard to the case of alphabetic -characters. +filenames are found, and the shell option 'nullglob' is disabled, the +word is left unchanged. If the 'nullglob' option is set, and no matches +are found, the word is removed. If the 'failglob' shell option is set, +and no matches are found, an error message is printed and the command is +not executed. If the shell option 'nocaseglob' is enabled, the match is +performed without regard to the case of alphabetic characters. - When a pattern is used for filename expansion, the character `.' at -the start of a filename or immediately following a slash must be -matched explicitly, unless the shell option `dotglob' is set. When -matching a filename, the slash character must always be matched -explicitly. In other cases, the `.' character is not treated specially. + When a pattern is used for filename expansion, the character '.' at +the start of a filename or immediately following a slash must be matched +explicitly, unless the shell option 'dotglob' is set. When matching a +filename, the slash character must always be matched explicitly. In +other cases, the '.' character is not treated specially. - See the description of `shopt' in *note The Shopt Builtin::, for a -description of the `nocaseglob', `nullglob', `failglob', and `dotglob' + See the description of 'shopt' in *note The Shopt Builtin::, for a +description of the 'nocaseglob', 'nullglob', 'failglob', and 'dotglob' options. - The `GLOBIGNORE' shell variable may be used to restrict the set of -filenames matching a pattern. If `GLOBIGNORE' is set, each matching -filename that also matches one of the patterns in `GLOBIGNORE' is -removed from the list of matches. The filenames `.' and `..' are -always ignored when `GLOBIGNORE' is set and not null. However, setting -`GLOBIGNORE' to a non-null value has the effect of enabling the -`dotglob' shell option, so all other filenames beginning with a `.' -will match. To get the old behavior of ignoring filenames beginning -with a `.', make `.*' one of the patterns in `GLOBIGNORE'. The -`dotglob' option is disabled when `GLOBIGNORE' is unset. + The 'GLOBIGNORE' shell variable may be used to restrict the set of +filenames matching a pattern. If 'GLOBIGNORE' is set, each matching +filename that also matches one of the patterns in 'GLOBIGNORE' is +removed from the list of matches. If the 'nocaseglob' option is set, +the matching against the patterns in 'GLOBIGNORE' is performed without +regard to case. The filenames '.' and '..' are always ignored when +'GLOBIGNORE' is set and not null. However, setting 'GLOBIGNORE' to a +non-null value has the effect of enabling the 'dotglob' shell option, so +all other filenames beginning with a '.' will match. To get the old +behavior of ignoring filenames beginning with a '.', make '.*' one of +the patterns in 'GLOBIGNORE'. The 'dotglob' option is disabled when +'GLOBIGNORE' is unset.  File: bash.info, Node: Pattern Matching, Up: Filename Expansion @@ -2057,75 +2071,73 @@ escaping backslash is discarded when matching. The special pattern characters must be quoted if they are to be matched literally. The special pattern characters have the following meanings: -`*' - Matches any string, including the null string. When the - `globstar' shell option is enabled, and `*' is used in a filename - expansion context, two adjacent `*'s used as a single pattern will - match all files and zero or more directories and subdirectories. - If followed by a `/', two adjacent `*'s will match only - directories and subdirectories. - -`?' +'*' + Matches any string, including the null string. When the 'globstar' + shell option is enabled, and '*' is used in a filename expansion + context, two adjacent '*'s used as a single pattern will match all + files and zero or more directories and subdirectories. If followed + by a '/', two adjacent '*'s will match only directories and + subdirectories. +'?' Matches any single character. - -`[...]' +'[...]' Matches any one of the enclosed characters. A pair of characters separated by a hyphen denotes a RANGE EXPRESSION; any character that falls between those two characters, inclusive, using the current locale's collating sequence and character set, is matched. - If the first character following the `[' is a `!' or a `^' then - any character not enclosed is matched. A `-' may be matched by - including it as the first or last character in the set. A `]' may + If the first character following the '[' is a '!' or a '^' then any + character not enclosed is matched. A '-' may be matched by + including it as the first or last character in the set. A ']' may be matched by including it as the first character in the set. The sorting order of characters in range expressions is determined by - the current locale and the values of the `LC_COLLATE' and `LC_ALL' + the current locale and the values of the 'LC_COLLATE' and 'LC_ALL' shell variables, if set. - For example, in the default C locale, `[a-dx-z]' is equivalent to - `[abcdxyz]'. Many locales sort characters in dictionary order, - and in these locales `[a-dx-z]' is typically not equivalent to - `[abcdxyz]'; it might be equivalent to `[aBbCcDdxXyYz]', for + For example, in the default C locale, '[a-dx-z]' is equivalent to + '[abcdxyz]'. Many locales sort characters in dictionary order, and + in these locales '[a-dx-z]' is typically not equivalent to + '[abcdxyz]'; it might be equivalent to '[aBbCcDdxXyYz]', for example. To obtain the traditional interpretation of ranges in bracket expressions, you can force the use of the C locale by - setting the `LC_COLLATE' or `LC_ALL' environment variable to the - value `C', or enable the `globasciiranges' shell option. + setting the 'LC_COLLATE' or 'LC_ALL' environment variable to the + value 'C', or enable the 'globasciiranges' shell option. - Within `[' and `]', CHARACTER CLASSES can be specified using the - syntax `[:'CLASS`:]', where CLASS is one of the following classes + Within '[' and ']', CHARACTER CLASSES can be specified using the + syntax '[:'CLASS':]', where CLASS is one of the following classes defined in the POSIX standard: alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit A character class matches any character belonging to that class. - The `word' character class matches letters, digits, and the - character `_'. + The 'word' character class matches letters, digits, and the + character '_'. - Within `[' and `]', an EQUIVALENCE CLASS can be specified using - the syntax `[='C`=]', which matches all characters with the same + Within '[' and ']', an EQUIVALENCE CLASS can be specified using the + syntax '[='C'=]', which matches all characters with the same collation weight (as defined by the current locale) as the character C. - Within `[' and `]', the syntax `[.'SYMBOL`.]' matches the - collating symbol SYMBOL. + Within '[' and ']', the syntax '[.'SYMBOL'.]' matches the collating + symbol SYMBOL. - If the `extglob' shell option is enabled using the `shopt' builtin, + If the 'extglob' shell option is enabled using the 'shopt' builtin, several extended pattern matching operators are recognized. In the following description, a PATTERN-LIST is a list of one or more patterns -separated by a `|'. Composite patterns may be formed using one or more +separated by a '|'. Composite patterns may be formed using one or more of the following sub-patterns: -`?(PATTERN-LIST)' +'?(PATTERN-LIST)' Matches zero or one occurrence of the given patterns. -`*(PATTERN-LIST)' +'*(PATTERN-LIST)' Matches zero or more occurrences of the given patterns. -`+(PATTERN-LIST)' +'+(PATTERN-LIST)' Matches one or more occurrences of the given patterns. -`@(PATTERN-LIST)' +'@(PATTERN-LIST)' Matches one of the given patterns. -`!(PATTERN-LIST)' +'!(PATTERN-LIST)' Matches anything except one of the given patterns.  @@ -2135,7 +2147,7 @@ File: bash.info, Node: Quote Removal, Prev: Filename Expansion, Up: Shell Exp ------------------- After the preceding expansions, all unquoted occurrences of the -characters `\', `'', and `"' that did not result from one of the above +characters '\', ''', and '"' that did not result from one of the above expansions are removed.  @@ -2154,56 +2166,56 @@ operators may precede or appear anywhere within a simple command or may follow a command. Redirections are processed in the order they appear, from left to right. - Each redirection that may be preceded by a file descriptor number -may instead be preceded by a word of the form {VARNAME}. In this case, -for each redirection operator except >&- and <&-, the shell will -allocate a file descriptor greater than 10 and assign it to {VARNAME}. -If >&- or <&- is preceded by {VARNAME}, the value of VARNAME defines -the file descriptor to close. + Each redirection that may be preceded by a file descriptor number may +instead be preceded by a word of the form {VARNAME}. In this case, for +each redirection operator except >&- and <&-, the shell will allocate a +file descriptor greater than 10 and assign it to {VARNAME}. If >&- or +<&- is preceded by {VARNAME}, the value of VARNAME defines the file +descriptor to close. In the following descriptions, if the file descriptor number is -omitted, and the first character of the redirection operator is `<', -the redirection refers to the standard input (file descriptor 0). If -the first character of the redirection operator is `>', the redirection +omitted, and the first character of the redirection operator is '<', the +redirection refers to the standard input (file descriptor 0). If the +first character of the redirection operator is '>', the redirection refers to the standard output (file descriptor 1). The word following the redirection operator in the following descriptions, unless otherwise noted, is subjected to brace expansion, tilde expansion, parameter expansion, command substitution, arithmetic -expansion, quote removal, filename expansion, and word splitting. If -it expands to more than one word, Bash reports an error. +expansion, quote removal, filename expansion, and word splitting. If it +expands to more than one word, Bash reports an error. - Note that the order of redirections is significant. For example, -the command + Note that the order of redirections is significant. For example, the +command ls > DIRLIST 2>&1 - directs both standard output (file descriptor 1) and standard error +directs both standard output (file descriptor 1) and standard error (file descriptor 2) to the file DIRLIST, while the command ls 2>&1 > DIRLIST - directs only the standard output to file DIRLIST, because the -standard error was made a copy of the standard output before the -standard output was redirected to DIRLIST. +directs only the standard output to file DIRLIST, because the standard +error was made a copy of the standard output before the standard output +was redirected to DIRLIST. Bash handles several filenames specially when they are used in redirections, as described in the following table: -`/dev/fd/FD' +'/dev/fd/FD' If FD is a valid integer, file descriptor FD is duplicated. -`/dev/stdin' +'/dev/stdin' File descriptor 0 is duplicated. -`/dev/stdout' +'/dev/stdout' File descriptor 1 is duplicated. -`/dev/stderr' +'/dev/stderr' File descriptor 2 is duplicated. -`/dev/tcp/HOST/PORT' +'/dev/tcp/HOST/PORT' If HOST is a valid hostname or Internet address, and PORT is an integer port number or service name, Bash attempts to open the corresponding TCP socket. -`/dev/udp/HOST/PORT' +'/dev/udp/HOST/PORT' If HOST is a valid hostname or Internet address, and PORT is an integer port number or service name, Bash attempts to open the corresponding UDP socket. @@ -2218,8 +2230,8 @@ internally. ----------------------- Redirection of input causes the file whose name results from the -expansion of WORD to be opened for reading on file descriptor `n', or -the standard input (file descriptor 0) if `n' is not specified. +expansion of WORD to be opened for reading on file descriptor 'n', or +the standard input (file descriptor 0) if 'n' is not specified. The general format for redirecting input is: [N][|]WORD - If the redirection operator is `>', and the `noclobber' option to -the `set' builtin has been enabled, the redirection will fail if the -file whose name results from the expansion of WORD exists and is a -regular file. If the redirection operator is `>|', or the redirection -operator is `>' and the `noclobber' option is not enabled, the -redirection is attempted even if the file named by WORD exists. + If the redirection operator is '>', and the 'noclobber' option to the +'set' builtin has been enabled, the redirection will fail if the file +whose name results from the expansion of WORD exists and is a regular +file. If the redirection operator is '>|', or the redirection operator +is '>' and the 'noclobber' option is not enabled, the redirection is +attempted even if the file named by WORD exists. 3.6.3 Appending Redirected Output --------------------------------- -Redirection of output in this fashion causes the file whose name -results from the expansion of WORD to be opened for appending on file -descriptor N, or the standard output (file descriptor 1) if N is not -specified. If the file does not exist it is created. +Redirection of output in this fashion causes the file whose name results +from the expansion of WORD to be opened for appending on file descriptor +N, or the standard output (file descriptor 1) if N is not specified. If +the file does not exist it is created. The general format for appending output is: [N]>>WORD @@ -2264,12 +2276,12 @@ file whose name is the expansion of WORD. There are two formats for redirecting standard output and standard error: &>WORD - and +and >&WORD - Of the two forms, the first is preferred. This is semantically +Of the two forms, the first is preferred. This is semantically equivalent to >WORD 2>&1 - When using the second form, WORD may not expand to a number or `-'. + When using the second form, WORD may not expand to a number or '-'. If it does, other redirection operators apply (see Duplicating File Descriptors below) for compatibility reasons. @@ -2277,12 +2289,12 @@ Descriptors below) for compatibility reasons. -------------------------------------------------- This construct allows both the standard output (file descriptor 1) and -the standard error output (file descriptor 2) to be appended to the -file whose name is the expansion of WORD. +the standard error output (file descriptor 2) to be appended to the file +whose name is the expansion of WORD. The format for appending standard output and standard error is: &>>WORD - This is semantically equivalent to +This is semantically equivalent to >>WORD 2>&1 (see Duplicating File Descriptors below). @@ -2292,81 +2304,83 @@ file whose name is the expansion of WORD. This type of redirection instructs the shell to read input from the current source until a line containing only WORD (with no trailing blanks) is seen. All of the lines read up to that point are then used -as the standard input for a command. +as the standard input (or file descriptor N if N is specified) for a +command. The format of here-documents is: - <<[-]WORD + [N]<<[-]WORD HERE-DOCUMENT DELIMITER - No parameter and variable expansion, command substitution, -arithmetic expansion, or filename expansion is performed on WORD. If -any characters in WORD are quoted, the DELIMITER is the result of quote + No parameter and variable expansion, command substitution, arithmetic +expansion, or filename expansion is performed on WORD. If any +characters in WORD are quoted, the DELIMITER is the result of quote removal on WORD, and the lines in the here-document are not expanded. If WORD is unquoted, all lines of the here-document are subjected to -parameter expansion, command substitution, and arithmetic expansion, -the character sequence `\newline' is ignored, and `\' must be used to -quote the characters `\', `$', and ``'. +parameter expansion, command substitution, and arithmetic expansion, the +character sequence '\newline' is ignored, and '\' must be used to quote +the characters '\', '$', and '`'. - If the redirection operator is `<<-', then all leading tab -characters are stripped from input lines and the line containing -DELIMITER. This allows here-documents within shell scripts to be -indented in a natural fashion. + If the redirection operator is '<<-', then all leading tab characters +are stripped from input lines and the line containing DELIMITER. This +allows here-documents within shell scripts to be indented in a natural +fashion. 3.6.7 Here Strings ------------------ A variant of here documents, the format is: - <<< WORD + [N]<<< WORD The WORD undergoes brace expansion, tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote removal. Pathname expansion and word splitting are not performed. -The result is supplied as a single string to the command on its -standard input. +The result is supplied as a single string, with a newline appended, to +the command on its standard input (or file descriptor N if N is +specified). 3.6.8 Duplicating File Descriptors ---------------------------------- The redirection operator [N]<&WORD - is used to duplicate input file descriptors. If WORD expands to one -or more digits, the file descriptor denoted by N is made to be a copy -of that file descriptor. If the digits in WORD do not specify a file +is used to duplicate input file descriptors. If WORD expands to one or +more digits, the file descriptor denoted by N is made to be a copy of +that file descriptor. If the digits in WORD do not specify a file descriptor open for input, a redirection error occurs. If WORD -evaluates to `-', file descriptor N is closed. If N is not specified, +evaluates to '-', file descriptor N is closed. If N is not specified, the standard input (file descriptor 0) is used. The operator [N]>&WORD - is used similarly to duplicate output file descriptors. If N is not +is used similarly to duplicate output file descriptors. If N is not specified, the standard output (file descriptor 1) is used. If the digits in WORD do not specify a file descriptor open for output, a -redirection error occurs. If WORD evaluates to `-', file descriptor N -is closed. As a special case, if N is omitted, and WORD does not -expand to one or more digits or `-', the standard output and standard -error are redirected as described previously. +redirection error occurs. If WORD evaluates to '-', file descriptor N +is closed. As a special case, if N is omitted, and WORD does not expand +to one or more digits or '-', the standard output and standard error are +redirected as described previously. 3.6.9 Moving File Descriptors ----------------------------- The redirection operator [N]<&DIGIT- - moves the file descriptor DIGIT to file descriptor N, or the -standard input (file descriptor 0) if N is not specified. DIGIT is -closed after being duplicated to N. +moves the file descriptor DIGIT to file descriptor N, or the standard +input (file descriptor 0) if N is not specified. DIGIT is closed after +being duplicated to N. Similarly, the redirection operator [N]>&DIGIT- - moves the file descriptor DIGIT to file descriptor N, or the -standard output (file descriptor 1) if N is not specified. +moves the file descriptor DIGIT to file descriptor N, or the standard +output (file descriptor 1) if N is not specified. 3.6.10 Opening File Descriptors for Reading and Writing ------------------------------------------------------- The redirection operator [N]<>WORD - causes the file whose name is the expansion of WORD to be opened for +causes the file whose name is the expansion of WORD to be opened for both reading and writing on file descriptor N, or on file descriptor 0 if N is not specified. If the file does not exist, it is created. @@ -2411,7 +2425,7 @@ expansions, assignments, and redirections, from left to right. 3. Redirections are performed as described above (*note Redirections::). - 4. The text after the `=' in each variable assignment undergoes tilde + 4. The text after the '=' in each variable assignment undergoes tilde expansion, parameter expansion, command substitution, arithmetic expansion, and quote removal before being assigned to the variable. @@ -2447,30 +2461,30 @@ taken. locate it. If there exists a shell function by that name, that function is invoked as described in *note Shell Functions::. - 2. If the name does not match a function, the shell searches for it - in the list of shell builtins. If a match is found, that builtin - is invoked. + 2. If the name does not match a function, the shell searches for it in + the list of shell builtins. If a match is found, that builtin is + invoked. - 3. If the name is neither a shell function nor a builtin, and - contains no slashes, Bash searches each element of `$PATH' for a - directory containing an executable file by that name. Bash uses a - hash table to remember the full pathnames of executable files to - avoid multiple `PATH' searches (see the description of `hash' in - *note Bourne Shell Builtins::). A full search of the directories - in `$PATH' is performed only if the command is not found in the - hash table. If the search is unsuccessful, the shell searches for - a defined shell function named `command_not_found_handle'. If - that function exists, it is invoked with the original command and - the original command's arguments as its arguments, and the - function's exit status becomes the exit status of the shell. If - that function is not defined, the shell prints an error message - and returns an exit status of 127. + 3. If the name is neither a shell function nor a builtin, and contains + no slashes, Bash searches each element of '$PATH' for a directory + containing an executable file by that name. Bash uses a hash table + to remember the full pathnames of executable files to avoid + multiple 'PATH' searches (see the description of 'hash' in *note + Bourne Shell Builtins::). A full search of the directories in + '$PATH' is performed only if the command is not found in the hash + table. If the search is unsuccessful, the shell searches for a + defined shell function named 'command_not_found_handle'. If that + function exists, it is invoked with the original command and the + original command's arguments as its arguments, and the function's + exit status becomes the exit status of the shell. If that function + is not defined, the shell prints an error message and returns an + exit status of 127. - 4. If the search is successful, or if the command name contains one - or more slashes, the shell executes the named program in a - separate execution environment. Argument 0 is set to the name - given, and the remaining arguments to the command are set to the - arguments supplied, if any. + 4. If the search is successful, or if the command name contains one or + more slashes, the shell executes the named program in a separate + execution environment. Argument 0 is set to the name given, and + the remaining arguments to the command are set to the arguments + supplied, if any. 5. If this execution fails because the file is not in executable format, and the file is not a directory, it is assumed to be a @@ -2480,7 +2494,6 @@ taken. 6. If the command was not begun asynchronously, the shell waits for the command to complete and collects its exit status. -  File: bash.info, Node: Command Execution Environment, Next: Environment, Prev: Command Search and Execution, Up: Executing Commands @@ -2490,35 +2503,34 @@ File: bash.info, Node: Command Execution Environment, Next: Environment, Prev The shell has an EXECUTION ENVIRONMENT, which consists of the following: * open files inherited by the shell at invocation, as modified by - redirections supplied to the `exec' builtin + redirections supplied to the 'exec' builtin - * the current working directory as set by `cd', `pushd', or `popd', + * the current working directory as set by 'cd', 'pushd', or 'popd', or inherited by the shell at invocation - * the file creation mode mask as set by `umask' or inherited from - the shell's parent + * the file creation mode mask as set by 'umask' or inherited from the + shell's parent - * current traps set by `trap' + * current traps set by 'trap' - * shell parameters that are set by variable assignment or with `set' + * shell parameters that are set by variable assignment or with 'set' or inherited from the shell's parent in the environment * shell functions defined during execution or inherited from the shell's parent in the environment * options enabled at invocation (either by default or with - command-line arguments) or by `set' + command-line arguments) or by 'set' - * options enabled by `shopt' (*note The Shopt Builtin::) + * options enabled by 'shopt' (*note The Shopt Builtin::) - * shell aliases defined with `alias' (*note Aliases::) + * shell aliases defined with 'alias' (*note Aliases::) * various process IDs, including those of background jobs (*note - Lists::), the value of `$$', and the value of `$PPID' + Lists::), the value of '$$', and the value of '$PPID' - - When a simple command other than a builtin or shell function is to -be executed, it is invoked in a separate execution environment that + When a simple command other than a builtin or shell function is to be +executed, it is invoked in a separate execution environment that consists of the following. Unless otherwise noted, the values are inherited from the shell. @@ -2536,7 +2548,6 @@ inherited from the shell. * traps caught by the shell are reset to the values inherited from the shell's parent, and traps ignored by the shell are ignored - A command invoked in this separate environment cannot affect the shell's execution environment. @@ -2549,11 +2560,11 @@ are also executed in a subshell environment. Changes made to the subshell environment cannot affect the shell's execution environment. Subshells spawned to execute command substitutions inherit the value -of the `-e' option from the parent shell. When not in POSIX mode, Bash -clears the `-e' option in such subshells. +of the '-e' option from the parent shell. When not in POSIX mode, Bash +clears the '-e' option in such subshells. - If a command is followed by a `&' and job control is not active, the -default standard input for the command is the empty file `/dev/null'. + If a command is followed by a '&' and job control is not active, the +default standard input for the command is the empty file '/dev/null'. Otherwise, the invoked command inherits the file descriptors of the calling shell as modified by redirections. @@ -2565,31 +2576,31 @@ File: bash.info, Node: Environment, Next: Exit Status, Prev: Command Executio When a program is invoked it is given an array of strings called the ENVIRONMENT. This is a list of name-value pairs, of the form -`name=value'. +'name=value'. Bash provides several ways to manipulate the environment. On invocation, the shell scans its own environment and creates a parameter for each name found, automatically marking it for EXPORT to child -processes. Executed commands inherit the environment. The `export' -and `declare -x' commands allow parameters and functions to be added to -and deleted from the environment. If the value of a parameter in the +processes. Executed commands inherit the environment. The 'export' and +'declare -x' commands allow parameters and functions to be added to and +deleted from the environment. If the value of a parameter in the environment is modified, the new value becomes part of the environment, replacing the old. The environment inherited by any executed command consists of the shell's initial environment, whose values may be -modified in the shell, less any pairs removed by the `unset' and -`export -n' commands, plus any additions via the `export' and `declare --x' commands. +modified in the shell, less any pairs removed by the 'unset' and 'export +-n' commands, plus any additions via the 'export' and 'declare -x' +commands. The environment for any simple command or function may be augmented temporarily by prefixing it with parameter assignments, as described in *note Shell Parameters::. These assignment statements affect only the environment seen by that command. - If the `-k' option is set (*note The Set Builtin::), then all + If the '-k' option is set (*note The Set Builtin::), then all parameter assignments are placed in the environment for a command, not just those that precede the command name. - When Bash invokes an external command, the variable `$_' is set to + When Bash invokes an external command, the variable '$_' is set to the full pathname of the command and passed to that command in its environment. @@ -2610,8 +2621,8 @@ will use special values to indicate specific failure modes. status has succeeded. A non-zero exit status indicates failure. This seemingly counter-intuitive scheme is used so there is one well-defined way to indicate success and a variety of ways to indicate various -failure modes. When a command terminates on a fatal signal whose -number is N, Bash uses the value 128+N as the exit status. +failure modes. When a command terminates on a fatal signal whose number +is N, Bash uses the value 128+N as the exit status. If a command is not found, the child process created to execute it returns a status of 127. If a command is found but is not executable, @@ -2637,39 +2648,38 @@ File: bash.info, Node: Signals, Prev: Exit Status, Up: Executing Commands ------------- When Bash is interactive, in the absence of any traps, it ignores -`SIGTERM' (so that `kill 0' does not kill an interactive shell), and -`SIGINT' is caught and handled (so that the `wait' builtin is -interruptible). When Bash receives a `SIGINT', it breaks out of any -executing loops. In all cases, Bash ignores `SIGQUIT'. If job control -is in effect (*note Job Control::), Bash ignores `SIGTTIN', `SIGTTOU', -and `SIGTSTP'. +'SIGTERM' (so that 'kill 0' does not kill an interactive shell), and +'SIGINT' is caught and handled (so that the 'wait' builtin is +interruptible). When Bash receives a 'SIGINT', it breaks out of any +executing loops. In all cases, Bash ignores 'SIGQUIT'. If job control +is in effect (*note Job Control::), Bash ignores 'SIGTTIN', 'SIGTTOU', +and 'SIGTSTP'. Non-builtin commands started by Bash have signal handlers set to the values inherited by the shell from its parent. When job control is not -in effect, asynchronous commands ignore `SIGINT' and `SIGQUIT' in +in effect, asynchronous commands ignore 'SIGINT' and 'SIGQUIT' in addition to these inherited handlers. Commands run as a result of command substitution ignore the keyboard-generated job control signals -`SIGTTIN', `SIGTTOU', and `SIGTSTP'. +'SIGTTIN', 'SIGTTOU', and 'SIGTSTP'. - The shell exits by default upon receipt of a `SIGHUP'. Before -exiting, an interactive shell resends the `SIGHUP' to all jobs, running -or stopped. Stopped jobs are sent `SIGCONT' to ensure that they receive -the `SIGHUP'. To prevent the shell from sending the `SIGHUP' signal to + The shell exits by default upon receipt of a 'SIGHUP'. Before +exiting, an interactive shell resends the 'SIGHUP' to all jobs, running +or stopped. Stopped jobs are sent 'SIGCONT' to ensure that they receive +the 'SIGHUP'. To prevent the shell from sending the 'SIGHUP' signal to a particular job, it should be removed from the jobs table with the -`disown' builtin (*note Job Control Builtins::) or marked to not -receive `SIGHUP' using `disown -h'. +'disown' builtin (*note Job Control Builtins::) or marked to not receive +'SIGHUP' using 'disown -h'. - If the `huponexit' shell option has been set with `shopt' (*note -The Shopt Builtin::), Bash sends a `SIGHUP' to all jobs when an -interactive login shell exits. + If the 'huponexit' shell option has been set with 'shopt' (*note The +Shopt Builtin::), Bash sends a 'SIGHUP' to all jobs when an interactive +login shell exits. If Bash is waiting for a command to complete and receives a signal for which a trap has been set, the trap will not be executed until the -command completes. When Bash is waiting for an asynchronous command -via the `wait' builtin, the reception of a signal for which a trap has -been set will cause the `wait' builtin to return immediately with an -exit status greater than 128, immediately after which the trap is -executed. +command completes. When Bash is waiting for an asynchronous command via +the 'wait' builtin, the reception of a signal for which a trap has been +set will cause the 'wait' builtin to return immediately with an exit +status greater than 128, immediately after which the trap is executed.  File: bash.info, Node: Shell Scripts, Prev: Executing Commands, Up: Basic Shell Features @@ -2679,36 +2689,36 @@ File: bash.info, Node: Shell Scripts, Prev: Executing Commands, Up: Basic She A shell script is a text file containing shell commands. When such a file is used as the first non-option argument when invoking Bash, and -neither the `-c' nor `-s' option is supplied (*note Invoking Bash::), +neither the '-c' nor '-s' option is supplied (*note Invoking Bash::), Bash reads and executes commands from the file, then exits. This mode of operation creates a non-interactive shell. The shell first searches for the file in the current directory, and looks in the directories in -`$PATH' if not found there. +'$PATH' if not found there. - When Bash runs a shell script, it sets the special parameter `0' to + When Bash runs a shell script, it sets the special parameter '0' to the name of the file, rather than the name of the shell, and the positional parameters are set to the remaining arguments, if any are given. If no additional arguments are supplied, the positional parameters are unset. - A shell script may be made executable by using the `chmod' command -to turn on the execute bit. When Bash finds such a file while -searching the `$PATH' for a command, it spawns a subshell to execute -it. In other words, executing + A shell script may be made executable by using the 'chmod' command to +turn on the execute bit. When Bash finds such a file while searching +the '$PATH' for a command, it spawns a subshell to execute it. In other +words, executing filename ARGUMENTS - is equivalent to executing +is equivalent to executing bash filename ARGUMENTS -if `filename' is an executable shell script. This subshell +if 'filename' is an executable shell script. This subshell reinitializes itself, so that the effect is as if a new shell had been invoked to interpret the script, with the exception that the locations -of commands remembered by the parent (see the description of `hash' in +of commands remembered by the parent (see the description of 'hash' in *note Bourne Shell Builtins::) are retained by the child. Most versions of Unix make this a part of the operating system's command execution mechanism. If the first line of a script begins with -the two characters `#!', the remainder of the line specifies an -interpreter for the program. Thus, you can specify Bash, `awk', Perl, +the two characters '#!', the remainder of the line specifies an +interpreter for the program. Thus, you can specify Bash, 'awk', Perl, or some other interpreter and write the rest of the script file in that language. @@ -2719,8 +2729,8 @@ the arguments. Bash will perform this action on operating systems that do not handle it themselves. Note that some older versions of Unix limit the interpreter name and argument to a maximum of 32 characters. - Bash scripts often begin with `#! /bin/bash' (assuming that Bash has -been installed in `/bin'), since this ensures that Bash will be used to + Bash scripts often begin with '#! /bin/bash' (assuming that Bash has +been installed in '/bin'), since this ensures that Bash will be used to interpret the script, even if it is executed under another shell.  @@ -2739,16 +2749,16 @@ File: bash.info, Node: Shell Builtin Commands, Next: Shell Variables, Prev: B * Special Builtins:: Builtin commands classified specially by POSIX. - Builtin commands are contained within the shell itself. When the -name of a builtin command is used as the first word of a simple command +Builtin commands are contained within the shell itself. When the name +of a builtin command is used as the first word of a simple command (*note Simple Commands::), the shell executes the command directly, without invoking another program. Builtin commands are necessary to implement functionality impossible or inconvenient to obtain with separate utilities. This section briefly describes the builtins which Bash inherits from -the Bourne Shell, as well as the builtin commands which are unique to -or have been extended in Bash. +the Bourne Shell, as well as the builtin commands which are unique to or +have been extended in Bash. Several builtin commands are described in other chapters: builtin commands which provide the Bash interface to the job control facilities @@ -2760,14 +2770,14 @@ Completion Builtins::). Many of the builtins have been extended by POSIX or Bash. Unless otherwise noted, each builtin command documented as accepting -options preceded by `-' accepts `--' to signify the end of the options. -The `:', `true', `false', and `test' builtins do not accept options and -do not treat `--' specially. The `exit', `logout', `break', -`continue', `let', and `shift' builtins accept and process arguments -beginning with `-' without requiring `--'. Other builtins that accept -arguments but are not specified as accepting options interpret -arguments beginning with `-' as invalid options and require `--' to -prevent this interpretation. +options preceded by '-' accepts '--' to signify the end of the options. +The ':', 'true', 'false', and 'test' builtins do not accept options and +do not treat '--' specially. The 'exit', 'logout', 'return', 'break', +'continue', 'let', and 'shift' builtins accept and process arguments +beginning with '-' without requiring '--'. Other builtins that accept +arguments but are not specified as accepting options interpret arguments +beginning with '-' as invalid options and require '--' to prevent this +interpretation.  File: bash.info, Node: Bourne Shell Builtins, Next: Bash Builtins, Up: Shell Builtin Commands @@ -2779,68 +2789,73 @@ The following shell builtin commands are inherited from the Bourne Shell. These commands are implemented as specified by the POSIX standard. -`: (a colon)' +': (a colon)' : [ARGUMENTS] Do nothing beyond expanding ARGUMENTS and performing redirections. The return status is zero. -`. (a period)' +'. (a period)' . FILENAME [ARGUMENTS] - Read and execute commands from the FILENAME argument in the - current shell context. If FILENAME does not contain a slash, the - `PATH' variable is used to find FILENAME. When Bash is not in - POSIX mode, the current directory is searched if FILENAME is not - found in `$PATH'. If any ARGUMENTS are supplied, they become the - positional parameters when FILENAME is executed. Otherwise the - positional parameters are unchanged. The return status is the - exit status of the last command executed, or zero if no commands - are executed. If FILENAME is not found, or cannot be read, the - return status is non-zero. This builtin is equivalent to `source'. + Read and execute commands from the FILENAME argument in the current + shell context. If FILENAME does not contain a slash, the 'PATH' + variable is used to find FILENAME. When Bash is not in POSIX mode, + the current directory is searched if FILENAME is not found in + '$PATH'. If any ARGUMENTS are supplied, they become the positional + parameters when FILENAME is executed. Otherwise the positional + parameters are unchanged. If the '-T' option is enabled, 'source' + inherits any trap on 'DEBUG'; if it is not, any 'DEBUG' trap string + is saved and restored around the call to 'source', and 'source' + unsets the 'DEBUG' trap while it executes. If '-T' is not set, and + the sourced file changes the 'DEBUG' trap, the new value is + retained when 'source' completes. The return status is the exit + status of the last command executed, or zero if no commands are + executed. If FILENAME is not found, or cannot be read, the return + status is non-zero. This builtin is equivalent to 'source'. -`break' +'break' break [N] - Exit from a `for', `while', `until', or `select' loop. If N is - supplied, the Nth enclosing loop is exited. N must be greater - than or equal to 1. The return status is zero unless N is not - greater than or equal to 1. + Exit from a 'for', 'while', 'until', or 'select' loop. If N is + supplied, the Nth enclosing loop is exited. N must be greater than + or equal to 1. The return status is zero unless N is not greater + than or equal to 1. -`cd' +'cd' cd [-L|[-P [-e]] [-@] [DIRECTORY] - Change the current working directory to DIRECTORY. If DIRECTORY - is not supplied, the value of the `HOME' shell variable is used. - Any additional arguments following DIRECTORY are ignored. If the - shell variable `CDPATH' exists, it is used as a search path: each - directory name in `CDPATH' is searched for DIRECTORY, with - alternative directory names in `CDPATH' separated by a colon (`:'). - If DIRECTORY begins with a slash, `CDPATH' is not used. + Change the current working directory to DIRECTORY. If DIRECTORY is + not supplied, the value of the 'HOME' shell variable is used. Any + additional arguments following DIRECTORY are ignored. If the shell + variable 'CDPATH' exists, it is used as a search path: each + directory name in 'CDPATH' is searched for DIRECTORY, with + alternative directory names in 'CDPATH' separated by a colon (':'). + If DIRECTORY begins with a slash, 'CDPATH' is not used. - The `-P' option means to not follow symbolic links: symbolic links - are resolved while `cd' is traversing DIRECTORY and before - processing an instance of `..' in DIRECTORY. + The '-P' option means to not follow symbolic links: symbolic links + are resolved while 'cd' is traversing DIRECTORY and before + processing an instance of '..' in DIRECTORY. - By default, or when the `-L' option is supplied, symbolic links in - DIRECTORY are resolved after `cd' processes an instance of `..' in + By default, or when the '-L' option is supplied, symbolic links in + DIRECTORY are resolved after 'cd' processes an instance of '..' in DIRECTORY. - If `..' appears in DIRECTORY, it is processed by removing the + If '..' appears in DIRECTORY, it is processed by removing the immediately preceding pathname component, back to a slash or the beginning of DIRECTORY. - If the `-e' option is supplied with `-P' and the current working + If the '-e' option is supplied with '-P' and the current working directory cannot be successfully determined after a successful - directory change, `cd' will return an unsuccessful status. + directory change, 'cd' will return an unsuccessful status. - On systems that support it, the `-@' option presents the extended + On systems that support it, the '-@' option presents the extended attributes associated with a file as a directory. - If DIRECTORY is `-', it is converted to `$OLDPWD' before the + If DIRECTORY is '-', it is converted to '$OLDPWD' before the directory change is attempted. - If a non-empty directory name from `CDPATH' is used, or if `-' is + If a non-empty directory name from 'CDPATH' is used, or if '-' is the first argument, and the directory change is successful, the absolute pathname of the new working directory is written to the standard output. @@ -2848,352 +2863,351 @@ standard. The return status is zero if the directory is successfully changed, non-zero otherwise. -`continue' +'continue' continue [N] - Resume the next iteration of an enclosing `for', `while', `until', - or `select' loop. If N is supplied, the execution of the Nth + Resume the next iteration of an enclosing 'for', 'while', 'until', + or 'select' loop. If N is supplied, the execution of the Nth enclosing loop is resumed. N must be greater than or equal to 1. The return status is zero unless N is not greater than or equal to 1. -`eval' +'eval' eval [ARGUMENTS] The arguments are concatenated together into a single command, which is then read and executed, and its exit status returned as - the exit status of `eval'. If there are no arguments or only - empty arguments, the return status is zero. + the exit status of 'eval'. If there are no arguments or only empty + arguments, the return status is zero. -`exec' +'exec' exec [-cl] [-a NAME] [COMMAND [ARGUMENTS]] If COMMAND is supplied, it replaces the shell without creating a - new process. If the `-l' option is supplied, the shell places a + new process. If the '-l' option is supplied, the shell places a dash at the beginning of the zeroth argument passed to COMMAND. - This is what the `login' program does. The `-c' option causes - COMMAND to be executed with an empty environment. If `-a' is + This is what the 'login' program does. The '-c' option causes + COMMAND to be executed with an empty environment. If '-a' is supplied, the shell passes NAME as the zeroth argument to COMMAND. If COMMAND cannot be executed for some reason, a non-interactive - shell exits, unless the `execfail' shell option is enabled. In + shell exits, unless the 'execfail' shell option is enabled. In that case, it returns failure. An interactive shell returns failure if the file cannot be executed. If no COMMAND is specified, redirections may be used to affect the current shell - environment. If there are no redirection errors, the return - status is zero; otherwise the return status is non-zero. + environment. If there are no redirection errors, the return status + is zero; otherwise the return status is non-zero. -`exit' +'exit' exit [N] Exit the shell, returning a status of N to the shell's parent. If N is omitted, the exit status is that of the last command executed. - Any trap on `EXIT' is executed before the shell terminates. + Any trap on 'EXIT' is executed before the shell terminates. -`export' +'export' export [-fn] [-p] [NAME[=VALUE]] Mark each NAME to be passed to child processes in the environment. - If the `-f' option is supplied, the NAMEs refer to shell - functions; otherwise the names refer to shell variables. The `-n' - option means to no longer mark each NAME for export. If no NAMES - are supplied, or if the `-p' option is given, a list of names of - all exported variables is displayed. The `-p' option displays - output in a form that may be reused as input. If a variable name - is followed by =VALUE, the value of the variable is set to VALUE. + If the '-f' option is supplied, the NAMEs refer to shell functions; + otherwise the names refer to shell variables. The '-n' option + means to no longer mark each NAME for export. If no NAMES are + supplied, or if the '-p' option is given, a list of names of all + exported variables is displayed. The '-p' option displays output + in a form that may be reused as input. If a variable name is + followed by =VALUE, the value of the variable is set to VALUE. - The return status is zero unless an invalid option is supplied, - one of the names is not a valid shell variable name, or `-f' is + The return status is zero unless an invalid option is supplied, one + of the names is not a valid shell variable name, or '-f' is supplied with a name that is not a shell function. -`getopts' +'getopts' getopts OPTSTRING NAME [ARGS] - `getopts' is used by shell scripts to parse positional parameters. + 'getopts' is used by shell scripts to parse positional parameters. OPTSTRING contains the option characters to be recognized; if a character is followed by a colon, the option is expected to have an argument, which should be separated from it by whitespace. The - colon (`:') and question mark (`?') may not be used as option - characters. Each time it is invoked, `getopts' places the next - option in the shell variable NAME, initializing NAME if it does - not exist, and the index of the next argument to be processed into - the variable `OPTIND'. `OPTIND' is initialized to 1 each time the + colon (':') and question mark ('?') may not be used as option + characters. Each time it is invoked, 'getopts' places the next + option in the shell variable NAME, initializing NAME if it does not + exist, and the index of the next argument to be processed into the + variable 'OPTIND'. 'OPTIND' is initialized to 1 each time the shell or a shell script is invoked. When an option requires an - argument, `getopts' places that argument into the variable - `OPTARG'. The shell does not reset `OPTIND' automatically; it - must be manually reset between multiple calls to `getopts' within - the same shell invocation if a new set of parameters is to be used. + argument, 'getopts' places that argument into the variable + 'OPTARG'. The shell does not reset 'OPTIND' automatically; it must + be manually reset between multiple calls to 'getopts' within the + same shell invocation if a new set of parameters is to be used. - When the end of options is encountered, `getopts' exits with a - return value greater than zero. `OPTIND' is set to the index of - the first non-option argument, and NAME is set to `?'. + When the end of options is encountered, 'getopts' exits with a + return value greater than zero. 'OPTIND' is set to the index of + the first non-option argument, and NAME is set to '?'. - `getopts' normally parses the positional parameters, but if more - arguments are given in ARGS, `getopts' parses those instead. + 'getopts' normally parses the positional parameters, but if more + arguments are given in ARGS, 'getopts' parses those instead. - `getopts' can report errors in two ways. If the first character of + 'getopts' can report errors in two ways. If the first character of OPTSTRING is a colon, SILENT error reporting is used. In normal operation, diagnostic messages are printed when invalid options or - missing option arguments are encountered. If the variable `OPTERR' + missing option arguments are encountered. If the variable 'OPTERR' is set to 0, no error messages will be displayed, even if the first - character of `optstring' is not a colon. + character of 'optstring' is not a colon. - If an invalid option is seen, `getopts' places `?' into NAME and, - if not silent, prints an error message and unsets `OPTARG'. If - `getopts' is silent, the option character found is placed in - `OPTARG' and no diagnostic message is printed. + If an invalid option is seen, 'getopts' places '?' into NAME and, + if not silent, prints an error message and unsets 'OPTARG'. If + 'getopts' is silent, the option character found is placed in + 'OPTARG' and no diagnostic message is printed. - If a required argument is not found, and `getopts' is not silent, - a question mark (`?') is placed in NAME, `OPTARG' is unset, and a - diagnostic message is printed. If `getopts' is silent, then a - colon (`:') is placed in NAME and `OPTARG' is set to the option + If a required argument is not found, and 'getopts' is not silent, a + question mark ('?') is placed in NAME, 'OPTARG' is unset, and a + diagnostic message is printed. If 'getopts' is silent, then a + colon (':') is placed in NAME and 'OPTARG' is set to the option character found. -`hash' +'hash' hash [-r] [-p FILENAME] [-dt] [NAME] - Each time `hash' is invoked, it remembers the full pathnames of the + Each time 'hash' is invoked, it remembers the full pathnames of the commands specified as NAME arguments, so they need not be searched - for on subsequent invocations. The commands are found by - searching through the directories listed in `$PATH'. Any - previously-remembered pathname is discarded. The `-p' option + for on subsequent invocations. The commands are found by searching + through the directories listed in '$PATH'. Any + previously-remembered pathname is discarded. The '-p' option inhibits the path search, and FILENAME is used as the location of - NAME. The `-r' option causes the shell to forget all remembered - locations. The `-d' option causes the shell to forget the - remembered location of each NAME. If the `-t' option is supplied, + NAME. The '-r' option causes the shell to forget all remembered + locations. The '-d' option causes the shell to forget the + remembered location of each NAME. If the '-t' option is supplied, the full pathname to which each NAME corresponds is printed. If - multiple NAME arguments are supplied with `-t' the NAME is printed - before the hashed full pathname. The `-l' option causes output to + multiple NAME arguments are supplied with '-t' the NAME is printed + before the hashed full pathname. The '-l' option causes output to be displayed in a format that may be reused as input. If no - arguments are given, or if only `-l' is supplied, information - about remembered commands is printed. The return status is zero - unless a NAME is not found or an invalid option is supplied. + arguments are given, or if only '-l' is supplied, information about + remembered commands is printed. The return status is zero unless a + NAME is not found or an invalid option is supplied. -`pwd' +'pwd' pwd [-LP] Print the absolute pathname of the current working directory. If - the `-P' option is supplied, the pathname printed will not contain - symbolic links. If the `-L' option is supplied, the pathname + the '-P' option is supplied, the pathname printed will not contain + symbolic links. If the '-L' option is supplied, the pathname printed may contain symbolic links. The return status is zero unless an error is encountered while determining the name of the current directory or an invalid option is supplied. -`readonly' +'readonly' readonly [-aAf] [-p] [NAME[=VALUE]] ... Mark each NAME as readonly. The values of these names may not be - changed by subsequent assignment. If the `-f' option is supplied, - each NAME refers to a shell function. The `-a' option means each - NAME refers to an indexed array variable; the `-A' option means - each NAME refers to an associative array variable. If both - options are supplied, `-A' takes precedence. If no NAME arguments - are given, or if the `-p' option is supplied, a list of all - readonly names is printed. The other options may be used to - restrict the output to a subset of the set of readonly names. The - `-p' option causes output to be displayed in a format that may be - reused as input. If a variable name is followed by =VALUE, the - value of the variable is set to VALUE. The return status is zero - unless an invalid option is supplied, one of the NAME arguments is - not a valid shell variable or function name, or the `-f' option is + changed by subsequent assignment. If the '-f' option is supplied, + each NAME refers to a shell function. The '-a' option means each + NAME refers to an indexed array variable; the '-A' option means + each NAME refers to an associative array variable. If both options + are supplied, '-A' takes precedence. If no NAME arguments are + given, or if the '-p' option is supplied, a list of all readonly + names is printed. The other options may be used to restrict the + output to a subset of the set of readonly names. The '-p' option + causes output to be displayed in a format that may be reused as + input. If a variable name is followed by =VALUE, the value of the + variable is set to VALUE. The return status is zero unless an + invalid option is supplied, one of the NAME arguments is not a + valid shell variable or function name, or the '-f' option is supplied with a name that is not a shell function. -`return' +'return' return [N] Cause a shell function to stop executing and return the value N to its caller. If N is not supplied, the return value is the exit - status of the last command executed in the function. If `return' + status of the last command executed in the function. If 'return' is executed by a trap handler, the last command used to determine the status is the last command executed before the trap handler. - if `return' is executed during a `DEBUG' trap, the last command + if 'return' is executed during a 'DEBUG' trap, the last command used to determine the status is the last command executed by the - trap handler before `return' was invoked. `return' may also be - used to terminate execution of a script being executed with the - `.' (`source') builtin, returning either N or the exit status of - the last command executed within the script as the exit status of - the script. If N is supplied, the return value is its least - significant 8 bits. Any command associated with the `RETURN' trap + trap handler before 'return' was invoked. 'return' may also be + used to terminate execution of a script being executed with the '.' + ('source') builtin, returning either N or the exit status of the + last command executed within the script as the exit status of the + script. If N is supplied, the return value is its least + significant 8 bits. Any command associated with the 'RETURN' trap is executed before execution resumes after the function or script. - The return status is non-zero if `return' is supplied a non-numeric - argument or is used outside a function and not during the - execution of a script by `.' or `source'. + The return status is non-zero if 'return' is supplied a non-numeric + argument or is used outside a function and not during the execution + of a script by '.' or 'source'. -`shift' +'shift' shift [N] Shift the positional parameters to the left by N. The positional - parameters from N+1 ... `$#' are renamed to `$1' ... `$#'-N. - Parameters represented by the numbers `$#' to `$#'-N+1 are unset. - N must be a non-negative number less than or equal to `$#'. If N - is zero or greater than `$#', the positional parameters are not + parameters from N+1 ... '$#' are renamed to '$1' ... '$#'-N. + Parameters represented by the numbers '$#' to '$#'-N+1 are unset. + N must be a non-negative number less than or equal to '$#'. If N + is zero or greater than '$#', the positional parameters are not changed. If N is not supplied, it is assumed to be 1. The return - status is zero unless N is greater than `$#' or less than zero, + status is zero unless N is greater than '$#' or less than zero, non-zero otherwise. -`test' -`[' +'test' +'[' test EXPR Evaluate a conditional express ion EXPR and return a status of 0 (true) or 1 (false). Each operator and operand must be a separate argument. Expressions are composed of the primaries described - below in *note Bash Conditional Expressions::. `test' does not + below in *note Bash Conditional Expressions::. 'test' does not accept any options, nor does it accept and ignore an argument of - `--' as signifying the end of options. + '--' as signifying the end of options. - When the `[' form is used, the last argument to the command must - be a `]'. + When the '[' form is used, the last argument to the command must be + a ']'. Expressions may be combined using the following operators, listed in decreasing order of precedence. The evaluation depends on the number of arguments; see below. Operator precedence is used when there are five or more arguments. - `! EXPR' + '! EXPR' True if EXPR is false. - `( EXPR )' + '( EXPR )' Returns the value of EXPR. This may be used to override the normal precedence of operators. - `EXPR1 -a EXPR2' + 'EXPR1 -a EXPR2' True if both EXPR1 and EXPR2 are true. - `EXPR1 -o EXPR2' + 'EXPR1 -o EXPR2' True if either EXPR1 or EXPR2 is true. - The `test' and `[' builtins evaluate conditional expressions using + The 'test' and '[' builtins evaluate conditional expressions using a set of rules based on the number of arguments. - 0 arguments + 0 arguments The expression is false. - 1 argument + 1 argument The expression is true if and only if the argument is not null. - 2 arguments - If the first argument is `!', the expression is true if and - only if the second argument is null. If the first argument - is one of the unary conditional operators (*note Bash - Conditional Expressions::), the expression is true if the - unary test is true. If the first argument is not a valid - unary operator, the expression is false. + 2 arguments + If the first argument is '!', the expression is true if and + only if the second argument is null. If the first argument is + one of the unary conditional operators (*note Bash Conditional + Expressions::), the expression is true if the unary test is + true. If the first argument is not a valid unary operator, + the expression is false. - 3 arguments + 3 arguments The following conditions are applied in the order listed. If - the second argument is one of the binary conditional - operators (*note Bash Conditional Expressions::), the result - of the expression is the result of the binary test using the - first and third arguments as operands. The `-a' and `-o' - operators are considered binary operators when there are - three arguments. If the first argument is `!', the value is - the negation of the two-argument test using the second and - third arguments. If the first argument is exactly `(' and - the third argument is exactly `)', the result is the - one-argument test of the second argument. Otherwise, the - expression is false. + the second argument is one of the binary conditional operators + (*note Bash Conditional Expressions::), the result of the + expression is the result of the binary test using the first + and third arguments as operands. The '-a' and '-o' operators + are considered binary operators when there are three + arguments. If the first argument is '!', the value is the + negation of the two-argument test using the second and third + arguments. If the first argument is exactly '(' and the third + argument is exactly ')', the result is the one-argument test + of the second argument. Otherwise, the expression is false. - 4 arguments - If the first argument is `!', the result is the negation of + 4 arguments + If the first argument is '!', the result is the negation of the three-argument expression composed of the remaining arguments. Otherwise, the expression is parsed and evaluated according to precedence using the rules listed above. - 5 or more arguments + 5 or more arguments The expression is parsed and evaluated according to precedence using the rules listed above. - When used with `test' or `[', the `<' and `>' operators sort + When used with 'test' or '[', the '<' and '>' operators sort lexicographically using ASCII ordering. -`times' +'times' times Print out the user and system times used by the shell and its children. The return status is zero. -`trap' +'trap' trap [-lp] [ARG] [SIGSPEC ...] The commands in ARG are to be read and executed when the shell receives signal SIGSPEC. If ARG is absent (and there is a single - SIGSPEC) or equal to `-', each specified signal's disposition is + SIGSPEC) or equal to '-', each specified signal's disposition is reset to the value it had when the shell was started. If ARG is the null string, then the signal specified by each SIGSPEC is ignored by the shell and commands it invokes. If ARG is not - present and `-p' has been supplied, the shell displays the trap + present and '-p' has been supplied, the shell displays the trap commands associated with each SIGSPEC. If no arguments are - supplied, or only `-p' is given, `trap' prints the list of commands + supplied, or only '-p' is given, 'trap' prints the list of commands associated with each signal number in a form that may be reused as - shell input. The `-l' option causes the shell to print a list of + shell input. The '-l' option causes the shell to print a list of signal names and their corresponding numbers. Each SIGSPEC is either a signal name or a signal number. Signal names are case - insensitive and the `SIG' prefix is optional. + insensitive and the 'SIG' prefix is optional. - If a SIGSPEC is `0' or `EXIT', ARG is executed when the shell - exits. If a SIGSPEC is `DEBUG', the command ARG is executed - before every simple command, `for' command, `case' command, - `select' command, every arithmetic `for' command, and before the - first command executes in a shell function. Refer to the - description of the `extdebug' option to the `shopt' builtin (*note - The Shopt Builtin::) for details of its effect on the `DEBUG' trap. - If a SIGSPEC is `RETURN', the command ARG is executed each time a - shell function or a script executed with the `.' or `source' - builtins finishes executing. + If a SIGSPEC is '0' or 'EXIT', ARG is executed when the shell + exits. If a SIGSPEC is 'DEBUG', the command ARG is executed before + every simple command, 'for' command, 'case' command, 'select' + command, every arithmetic 'for' command, and before the first + command executes in a shell function. Refer to the description of + the 'extdebug' option to the 'shopt' builtin (*note The Shopt + Builtin::) for details of its effect on the 'DEBUG' trap. If a + SIGSPEC is 'RETURN', the command ARG is executed each time a shell + function or a script executed with the '.' or 'source' builtins + finishes executing. - If a SIGSPEC is `ERR', the command ARG is executed whenever a - pipeline (which may consist of a single simple command), a list, - or a compound command returns a non-zero exit status, subject to - the following conditions. The `ERR' trap is not executed if the - failed command is part of the command list immediately following - an `until' or `while' keyword, part of the test following the `if' - or `elif' reserved words, part of a command executed in a `&&' or - `||' list except the command following the final `&&' or `||', any + If a SIGSPEC is 'ERR', the command ARG is executed whenever a + pipeline (which may consist of a single simple command), a list, or + a compound command returns a non-zero exit status, subject to the + following conditions. The 'ERR' trap is not executed if the failed + command is part of the command list immediately following an + 'until' or 'while' keyword, part of the test following the 'if' or + 'elif' reserved words, part of a command executed in a '&&' or '||' + list except the command following the final '&&' or '||', any command in a pipeline but the last, or if the command's return - status is being inverted using `!'. These are the same conditions - obeyed by the `errexit' (`-e') option. + status is being inverted using '!'. These are the same conditions + obeyed by the 'errexit' ('-e') option. Signals ignored upon entry to the shell cannot be trapped or reset. Trapped signals that are not being ignored are reset to their original values in a subshell or subshell environment when one is created. - The return status is zero unless a SIGSPEC does not specify a - valid signal. + The return status is zero unless a SIGSPEC does not specify a valid + signal. -`umask' +'umask' umask [-p] [-S] [MODE] - Set the shell process's file creation mask to MODE. If MODE - begins with a digit, it is interpreted as an octal number; if not, - it is interpreted as a symbolic mode mask similar to that accepted - by the `chmod' command. If MODE is omitted, the current value of - the mask is printed. If the `-S' option is supplied without a - MODE argument, the mask is printed in a symbolic format. If the - `-p' option is supplied, and MODE is omitted, the output is in a - form that may be reused as input. The return status is zero if - the mode is successfully changed or if no MODE argument is - supplied, and non-zero otherwise. + Set the shell process's file creation mask to MODE. If MODE begins + with a digit, it is interpreted as an octal number; if not, it is + interpreted as a symbolic mode mask similar to that accepted by the + 'chmod' command. If MODE is omitted, the current value of the mask + is printed. If the '-S' option is supplied without a MODE + argument, the mask is printed in a symbolic format. If the '-p' + option is supplied, and MODE is omitted, the output is in a form + that may be reused as input. The return status is zero if the mode + is successfully changed or if no MODE argument is supplied, and + non-zero otherwise. Note that when the mode is interpreted as an octal number, each - number of the umask is subtracted from `7'. Thus, a umask of `022' - results in permissions of `755'. + number of the umask is subtracted from '7'. Thus, a umask of '022' + results in permissions of '755'. -`unset' +'unset' unset [-fnv] [NAME] - Remove each variable or function NAME. If the `-v' option is + Remove each variable or function NAME. If the '-v' option is given, each NAME refers to a shell variable and that variable is - remvoved. If the `-f' option is given, the NAMEs refer to shell - functions, and the function definition is removed. If the `-n' + remvoved. If the '-f' option is given, the NAMEs refer to shell + functions, and the function definition is removed. If the '-n' option is supplied, and NAME is a variable with the NAMEREF attribute, NAME will be unset rather than the variable it - references. `-n' has no effect if the `-f' option is supplied. - If no options are supplied, each NAME refers to a variable; if - there is no variable by that name, any function with that name is - unset. Readonly variables and functions may not be unset. The - return status is zero unless a NAME is readonly. + references. '-n' has no effect if the '-f' option is supplied. If + no options are supplied, each NAME refers to a variable; if there + is no variable by that name, any function with that name is unset. + Readonly variables and functions may not be unset. The return + status is zero unless a NAME is readonly.  File: bash.info, Node: Bash Builtins, Next: Modifying Shell Behavior, Prev: Bourne Shell Builtins, Up: Shell Builtin Commands @@ -3201,21 +3215,21 @@ File: bash.info, Node: Bash Builtins, Next: Modifying Shell Behavior, Prev: B 4.2 Bash Builtin Commands ========================= -This section describes builtin commands which are unique to or have -been extended in Bash. Some of these commands are specified in the -POSIX standard. +This section describes builtin commands which are unique to or have been +extended in Bash. Some of these commands are specified in the POSIX +standard. -`alias' +'alias' alias [-p] [NAME[=VALUE] ...] - Without arguments or with the `-p' option, `alias' prints the list + Without arguments or with the '-p' option, 'alias' prints the list of aliases on the standard output in a form that allows them to be reused as input. If arguments are supplied, an alias is defined for each NAME whose VALUE is given. If no VALUE is given, the name and value of the alias is printed. Aliases are described in *note Aliases::. -`bind' +'bind' bind [-m KEYMAP] [-lpsvPSVX] bind [-m KEYMAP] [-q FUNCTION] [-u FUNCTION] [-r KEYSEQ] bind [-m KEYMAP] -f FILENAME @@ -3226,413 +3240,392 @@ POSIX standard. Display current Readline (*note Command Line Editing::) key and function bindings, bind a key sequence to a Readline function or macro, or set a Readline variable. Each non-option argument is a - command as it would appear in a Readline initialization file - (*note Readline Init File::), but each binding or command must be - passed as a separate argument; e.g., - `"\C-x\C-r":re-read-init-file'. + command as it would appear in a Readline initialization file (*note + Readline Init File::), but each binding or command must be passed + as a separate argument; e.g., '"\C-x\C-r":re-read-init-file'. Options, if supplied, have the following meanings: - `-m KEYMAP' + '-m KEYMAP' Use KEYMAP as the keymap to be affected by the subsequent - bindings. Acceptable KEYMAP names are `emacs', - `emacs-standard', `emacs-meta', `emacs-ctlx', `vi', `vi-move', - `vi-command', and `vi-insert'. `vi' is equivalent to - `vi-command'; `emacs' is equivalent to `emacs-standard'. + bindings. Acceptable KEYMAP names are 'emacs', + 'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move', + 'vi-command', and 'vi-insert'. 'vi' is equivalent to + 'vi-command'; 'emacs' is equivalent to 'emacs-standard'. - `-l' + '-l' List the names of all Readline functions. - `-p' + '-p' Display Readline function names and bindings in such a way - that they can be used as input or in a Readline - initialization file. + that they can be used as input or in a Readline initialization + file. - `-P' + '-P' List current Readline function names and bindings. - `-v' + '-v' Display Readline variable names and values in such a way that they can be used as input or in a Readline initialization file. - `-V' + '-V' List current Readline variable names and values. - `-s' - Display Readline key sequences bound to macros and the - strings they output in such a way that they can be used as - input or in a Readline initialization file. + '-s' + Display Readline key sequences bound to macros and the strings + they output in such a way that they can be used as input or in + a Readline initialization file. - `-S' - Display Readline key sequences bound to macros and the - strings they output. + '-S' + Display Readline key sequences bound to macros and the strings + they output. - `-f FILENAME' + '-f FILENAME' Read key bindings from FILENAME. - `-q FUNCTION' + '-q FUNCTION' Query about which keys invoke the named FUNCTION. - `-u FUNCTION' + '-u FUNCTION' Unbind all keys bound to the named FUNCTION. - `-r KEYSEQ' + '-r KEYSEQ' Remove any current binding for KEYSEQ. - `-x KEYSEQ:SHELL-COMMAND' + '-x KEYSEQ:SHELL-COMMAND' Cause SHELL-COMMAND to be executed whenever KEYSEQ is entered. When SHELL-COMMAND is executed, the shell sets the - `READLINE_LINE' variable to the contents of the Readline line - buffer and the `READLINE_POINT' variable to the current + 'READLINE_LINE' variable to the contents of the Readline line + buffer and the 'READLINE_POINT' variable to the current location of the insertion point. If the executed command - changes the value of `READLINE_LINE' or `READLINE_POINT', + changes the value of 'READLINE_LINE' or 'READLINE_POINT', those new values will be reflected in the editing state. - `-X' + '-X' List all key sequences bound to shell commands and the associated commands in a format that can be reused as input. The return status is zero unless an invalid option is supplied or an error occurs. -`builtin' +'builtin' builtin [SHELL-BUILTIN [ARGS]] Run a shell builtin, passing it ARGS, and return its exit status. - This is useful when defining a shell function with the same name - as a shell builtin, retaining the functionality of the builtin - within the function. The return status is non-zero if - SHELL-BUILTIN is not a shell builtin command. + This is useful when defining a shell function with the same name as + a shell builtin, retaining the functionality of the builtin within + the function. The return status is non-zero if SHELL-BUILTIN is + not a shell builtin command. -`caller' +'caller' caller [EXPR] - Returns the context of any active subroutine call (a shell - function or a script executed with the `.' or `source' builtins). + Returns the context of any active subroutine call (a shell function + or a script executed with the '.' or 'source' builtins). - Without EXPR, `caller' displays the line number and source - filename of the current subroutine call. If a non-negative - integer is supplied as EXPR, `caller' displays the line number, - subroutine name, and source file corresponding to that position in - the current execution call stack. This extra information may be - used, for example, to print a stack trace. The current frame is - frame 0. + Without EXPR, 'caller' displays the line number and source filename + of the current subroutine call. If a non-negative integer is + supplied as EXPR, 'caller' displays the line number, subroutine + name, and source file corresponding to that position in the current + execution call stack. This extra information may be used, for + example, to print a stack trace. The current frame is frame 0. The return value is 0 unless the shell is not executing a subroutine call or EXPR does not correspond to a valid position in the call stack. -`command' +'command' command [-pVv] COMMAND [ARGUMENTS ...] Runs COMMAND with ARGUMENTS ignoring any shell function named COMMAND. Only shell builtin commands or commands found by - searching the `PATH' are executed. If there is a shell function - named `ls', running `command ls' within the function will execute - the external command `ls' instead of calling the function - recursively. The `-p' option means to use a default value for - `PATH' that is guaranteed to find all of the standard utilities. - The return status in this case is 127 if COMMAND cannot be found - or an error occurred, and the exit status of COMMAND otherwise. + searching the 'PATH' are executed. If there is a shell function + named 'ls', running 'command ls' within the function will execute + the external command 'ls' instead of calling the function + recursively. The '-p' option means to use a default value for + 'PATH' that is guaranteed to find all of the standard utilities. + The return status in this case is 127 if COMMAND cannot be found or + an error occurred, and the exit status of COMMAND otherwise. - If either the `-V' or `-v' option is supplied, a description of - COMMAND is printed. The `-v' option causes a single word + If either the '-V' or '-v' option is supplied, a description of + COMMAND is printed. The '-v' option causes a single word indicating the command or file name used to invoke COMMAND to be - displayed; the `-V' option produces a more verbose description. - In this case, the return status is zero if COMMAND is found, and + displayed; the '-V' option produces a more verbose description. In + this case, the return status is zero if COMMAND is found, and non-zero if not. -`declare' +'declare' declare [-aAfFgilnrtux] [-p] [NAME[=VALUE] ...] - Declare variables and give them attributes. If no NAMEs are - given, then display the values of variables instead. + Declare variables and give them attributes. If no NAMEs are given, + then display the values of variables instead. - The `-p' option will display the attributes and values of each - NAME. When `-p' is used with NAME arguments, additional options, - other than `-f' and `-F', are ignored. + The '-p' option will display the attributes and values of each + NAME. When '-p' is used with NAME arguments, additional options, + other than '-f' and '-F', are ignored. - When `-p' is supplied without NAME arguments, `declare' will + When '-p' is supplied without NAME arguments, 'declare' will display the attributes and values of all variables having the attributes specified by the additional options. If no other - options are supplied with `-p', `declare' will display the - attributes and values of all shell variables. The `-f' option - will restrict the display to shell functions. + options are supplied with '-p', 'declare' will display the + attributes and values of all shell variables. The '-f' option will + restrict the display to shell functions. - The `-F' option inhibits the display of function definitions; only - the function name and attributes are printed. If the `extdebug' - shell option is enabled using `shopt' (*note The Shopt Builtin::), - the source file name and line number where the function is defined - are displayed as well. `-F' implies `-f'. + The '-F' option inhibits the display of function definitions; only + the function name and attributes are printed. If the 'extdebug' + shell option is enabled using 'shopt' (*note The Shopt Builtin::), + the source file name and line number where each NAME is defined are + displayed as well. '-F' implies '-f'. - The `-g' option forces variables to be created or modified at the - global scope, even when `declare' is executed in a shell function. + The '-g' option forces variables to be created or modified at the + global scope, even when 'declare' is executed in a shell function. It is ignored in all other cases. The following options can be used to restrict output to variables with the specified attributes or to give variables attributes: - `-a' + '-a' Each NAME is an indexed array variable (*note Arrays::). - `-A' + '-A' Each NAME is an associative array variable (*note Arrays::). - `-f' + '-f' Use function names only. - `-i' + '-i' The variable is to be treated as an integer; arithmetic evaluation (*note Shell Arithmetic::) is performed when the variable is assigned a value. - `-l' + '-l' When the variable is assigned a value, all upper-case characters are converted to lower-case. The upper-case attribute is disabled. - `-n' + '-n' Give each NAME the NAMEREF attribute, making it a name - reference to another variable. That other variable is - defined by the value of NAME. All references, assignments, - and attribute modifications to NAME, except for changing the - `-n' attribute itself, are performed on the variable - referenced by NAME's value. The nameref attribute cannot be - applied to array variables. + reference to another variable. That other variable is defined + by the value of NAME. All references, assignments, and + attribute modifications to NAME, except for changing the '-n' + attribute itself, are performed on the variable referenced by + NAME's value. The nameref attribute cannot be applied to + array variables. - `-r' + '-r' Make NAMEs readonly. These names cannot then be assigned values by subsequent assignment statements or unset. - `-t' - Give each NAME the `trace' attribute. Traced functions - inherit the `DEBUG' and `RETURN' traps from the calling shell. + '-t' + Give each NAME the 'trace' attribute. Traced functions + inherit the 'DEBUG' and 'RETURN' traps from the calling shell. The trace attribute has no special meaning for variables. - `-u' + '-u' When the variable is assigned a value, all lower-case characters are converted to upper-case. The lower-case attribute is disabled. - `-x' + '-x' Mark each NAME for export to subsequent commands via the environment. - Using `+' instead of `-' turns off the attribute instead, with the - exceptions that `+a' may not be used to destroy an array variable - and `+r' will not remove the readonly attribute. When used in a - function, `declare' makes each NAME local, as with the `local' - command, unless the `-g' option is used. If a variable name is + Using '+' instead of '-' turns off the attribute instead, with the + exceptions that '+a' may not be used to destroy an array variable + and '+r' will not remove the readonly attribute. When used in a + function, 'declare' makes each NAME local, as with the 'local' + command, unless the '-g' option is used. If a variable name is followed by =VALUE, the value of the variable is set to VALUE. - When using `-a' or `-A' and the compound assignment syntax to + When using '-a' or '-A' and the compound assignment syntax to create array variables, additional attributes do not take effect until subsequent assignments. The return status is zero unless an invalid option is encountered, - an attempt is made to define a function using `-f foo=bar', an + an attempt is made to define a function using '-f foo=bar', an attempt is made to assign a value to a readonly variable, an attempt is made to assign a value to an array variable without using the compound assignment syntax (*note Arrays::), one of the NAMES is not a valid shell variable name, an attempt is made to turn off readonly status for a readonly variable, an attempt is made to turn off array status for an array variable, or an attempt - is made to display a non-existent function with `-f'. + is made to display a non-existent function with '-f'. -`echo' +'echo' echo [-neE] [ARG ...] Output the ARGs, separated by spaces, terminated with a newline. - The return status is 0 unless a write error occurs. If `-n' is - specified, the trailing newline is suppressed. If the `-e' option + The return status is 0 unless a write error occurs. If '-n' is + specified, the trailing newline is suppressed. If the '-e' option is given, interpretation of the following backslash-escaped - characters is enabled. The `-E' option disables the - interpretation of these escape characters, even on systems where - they are interpreted by default. The `xpg_echo' shell option may - be used to dynamically determine whether or not `echo' expands - these escape characters by default. `echo' does not interpret - `--' to mean the end of options. + characters is enabled. The '-E' option disables the interpretation + of these escape characters, even on systems where they are + interpreted by default. The 'xpg_echo' shell option may be used to + dynamically determine whether or not 'echo' expands these escape + characters by default. 'echo' does not interpret '--' to mean the + end of options. - `echo' interprets the following escape sequences: - `\a' + 'echo' interprets the following escape sequences: + '\a' alert (bell) - - `\b' + '\b' backspace - - `\c' + '\c' suppress further output - - `\e' - `\E' + '\e' + '\E' escape - - `\f' + '\f' form feed - - `\n' + '\n' new line - - `\r' + '\r' carriage return - - `\t' + '\t' horizontal tab - - `\v' + '\v' vertical tab - - `\\' + '\\' backslash - - `\0NNN' + '\0NNN' the eight-bit character whose value is the octal value NNN (zero to three octal digits) - - `\xHH' + '\xHH' the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) - - `\uHHHH' + '\uHHHH' the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHH (one to four hex digits) - - `\UHHHHHHHH' + '\UHHHHHHHH' the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value HHHHHHHH (one to eight hex digits) -`enable' +'enable' enable [-a] [-dnps] [-f FILENAME] [NAME ...] Enable and disable builtin shell commands. Disabling a builtin - allows a disk command which has the same name as a shell builtin - to be executed without specifying a full pathname, even though the - shell normally searches for builtins before disk commands. If - `-n' is used, the NAMEs become disabled. Otherwise NAMEs are - enabled. For example, to use the `test' binary found via `$PATH' - instead of the shell builtin version, type `enable -n test'. + allows a disk command which has the same name as a shell builtin to + be executed without specifying a full pathname, even though the + shell normally searches for builtins before disk commands. If '-n' + is used, the NAMEs become disabled. Otherwise NAMEs are enabled. + For example, to use the 'test' binary found via '$PATH' instead of + the shell builtin version, type 'enable -n test'. - If the `-p' option is supplied, or no NAME arguments appear, a - list of shell builtins is printed. With no other arguments, the - list consists of all enabled shell builtins. The `-a' option - means to list each builtin with an indication of whether or not it - is enabled. + If the '-p' option is supplied, or no NAME arguments appear, a list + of shell builtins is printed. With no other arguments, the list + consists of all enabled shell builtins. The '-a' option means to + list each builtin with an indication of whether or not it is + enabled. - The `-f' option means to load the new builtin command NAME from + The '-f' option means to load the new builtin command NAME from shared object FILENAME, on systems that support dynamic loading. - The `-d' option will delete a builtin loaded with `-f'. + The '-d' option will delete a builtin loaded with '-f'. If there are no options, a list of the shell builtins is displayed. - The `-s' option restricts `enable' to the POSIX special builtins. - If `-s' is used with `-f', the new builtin becomes a special + The '-s' option restricts 'enable' to the POSIX special builtins. + If '-s' is used with '-f', the new builtin becomes a special builtin (*note Special Builtins::). The return status is zero unless a NAME is not a shell builtin or there is an error loading a new builtin from a shared object. -`help' +'help' help [-dms] [PATTERN] Display helpful information about builtin commands. If PATTERN is - specified, `help' gives detailed help on all commands matching + specified, 'help' gives detailed help on all commands matching PATTERN, otherwise a list of the builtins is printed. Options, if supplied, have the following meanings: - `-d' + '-d' Display a short description of each PATTERN - - `-m' + '-m' Display the description of each PATTERN in a manpage-like format - - `-s' + '-s' Display only a short usage synopsis for each PATTERN The return status is zero unless no command matches PATTERN. -`let' +'let' let EXPRESSION [EXPRESSION ...] - The `let' builtin allows arithmetic to be performed on shell + The 'let' builtin allows arithmetic to be performed on shell variables. Each EXPRESSION is evaluated according to the rules given below in *note Shell Arithmetic::. If the last EXPRESSION - evaluates to 0, `let' returns 1; otherwise 0 is returned. + evaluates to 0, 'let' returns 1; otherwise 0 is returned. -`local' +'local' local [OPTION] NAME[=VALUE] ... For each argument, a local variable named NAME is created, and assigned VALUE. The OPTION can be any of the options accepted by - `declare'. `local' can only be used within a function; it makes + 'declare'. 'local' can only be used within a function; it makes the variable NAME have a visible scope restricted to that function - and its children. The return status is zero unless `local' is - used outside a function, an invalid NAME is supplied, or NAME is a - readonly variable. + and its children. If NAME is '-', the set of shell options is made + local to the function in which 'local' is invoked: shell options + changed using the 'set' builtin inside the function are restored to + their original values when the function returns. The return status + is zero unless 'local' is used outside a function, an invalid NAME + is supplied, or NAME is a readonly variable. -`logout' +'logout' logout [N] Exit a login shell, returning a status of N to the shell's parent. -`mapfile' +'mapfile' mapfile [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY] Read lines from the standard input into the indexed array variable - ARRAY, or from file descriptor FD if the `-u' option is supplied. - The variable `MAPFILE' is the default ARRAY. Options, if - supplied, have the following meanings: + ARRAY, or from file descriptor FD if the '-u' option is supplied. + The variable 'MAPFILE' is the default ARRAY. Options, if supplied, + have the following meanings: - `-d' + '-d' The first character of DELIM is used to terminate each input line, rather than newline. - - `-n' + '-n' Copy at most COUNT lines. If COUNT is 0, all lines are copied. - - `-O' + '-O' Begin assigning to ARRAY at index ORIGIN. The default index is 0. - - `-s' + '-s' Discard the first COUNT lines read. - - `-t' - Remove a trailing newline from each line read. - - `-u' + '-t' + Remove a trailing DELIM (default newline) from each line read. + '-u' Read lines from file descriptor FD instead of the standard input. - - `-C' - Evaluate CALLBACK each time QUANTUMP lines are read. The - `-c' option specifies QUANTUM. - - `-c' + '-C' + Evaluate CALLBACK each time QUANTUMP lines are read. The '-c' + option specifies QUANTUM. + '-c' Specify the number of lines read between each call to CALLBACK. - If `-C' is specified without `-c', the default quantum is 5000. - When CALLBACK is evaluated, it is supplied the index of the next + If '-C' is specified without '-c', the default quantum is 5000. + When CALLBACK is evaluated, it is supplied the index of the next array element to be assigned and the line to be assigned to that element as additional arguments. CALLBACK is evaluated after the line is read but before the array element is assigned. - If not supplied with an explicit origin, `mapfile' will clear ARRAY + If not supplied with an explicit origin, 'mapfile' will clear ARRAY before assigning to it. - `mapfile' returns successfully unless an invalid option or option - argument is supplied, ARRAY is invalid or unassignable, or ARRAY - is not an indexed array. + 'mapfile' returns successfully unless an invalid option or option + argument is supplied, ARRAY is invalid or unassignable, or ARRAY is + not an indexed array. -`printf' +'printf' printf [-v VAR] FORMAT [ARGUMENTS] Write the formatted ARGUMENTS to the standard output under the - control of the FORMAT. The `-v' option causes the output to be + control of the FORMAT. The '-v' option causes the output to be assigned to the variable VAR rather than being printed to the standard output. @@ -3641,34 +3634,30 @@ POSIX standard. output, character escape sequences, which are converted and copied to the standard output, and format specifications, each of which causes printing of the next successive ARGUMENT. In addition to - the standard `printf(1)' formats, `printf' interprets the - following extensions: + the standard 'printf(1)' formats, 'printf' interprets the following + extensions: - `%b' - Causes `printf' to expand backslash escape sequences in the - corresponding ARGUMENT, except that `\c' terminates output, - backslashes in `\'', `\"', and `\?' are not removed, and - octal escapes beginning with `\0' may contain up to four - digits. - - `%q' - Causes `printf' to output the corresponding ARGUMENT in a + '%b' + Causes 'printf' to expand backslash escape sequences in the + corresponding ARGUMENT in the same way as 'echo -e' (*note + Bash Builtins::). + '%q' + Causes 'printf' to output the corresponding ARGUMENT in a format that can be reused as shell input. - - `%(DATEFMT)T' - Causes `printf' to output the date-time string resulting from - using DATEFMT as a format string for `strftime'(3). The + '%(DATEFMT)T' + Causes 'printf' to output the date-time string resulting from + using DATEFMT as a format string for 'strftime'(3). The corresponding ARGUMENT is an integer representing the number of seconds since the epoch. Two special argument values may - be used: -1 represents the current time, and -2 represents - the time the shell was invoked. If no argument is specified, + be used: -1 represents the current time, and -2 represents the + time the shell was invoked. If no argument is specified, conversion behaves as if -1 had been given. This is an - exception to the usual `printf' behavior. + exception to the usual 'printf' behavior. - Arguments to non-string format specifiers are treated as C - language constants, except that a leading plus or minus sign is - allowed, and if the leading character is a single or double quote, - the value is the ASCII value of the following character. + Arguments to non-string format specifiers are treated as C language + constants, except that a leading plus or minus sign is allowed, and + if the leading character is a single or double quote, the value is + the ASCII value of the following character. The FORMAT is reused as necessary to consume all of the ARGUMENTS. If the FORMAT requires more ARGUMENTS than are supplied, the extra @@ -3676,240 +3665,251 @@ POSIX standard. appropriate, had been supplied. The return value is zero on success, non-zero on failure. -`read' +'read' read [-ers] [-a ANAME] [-d DELIM] [-i TEXT] [-n NCHARS] [-N NCHARS] [-p PROMPT] [-t TIMEOUT] [-u FD] [NAME ...] One line is read from the standard input, or from the file - descriptor FD supplied as an argument to the `-u' option, and the + descriptor FD supplied as an argument to the '-u' option, and the first word is assigned to the first NAME, the second word to the second NAME, and so on, with leftover words and their intervening separators assigned to the last NAME. If there are fewer words read from the input stream than names, the remaining names are - assigned empty values. The characters in the value of the `IFS' - variable are used to split the line into words using the same - rules the shell uses for expansion (described above in *note Word - Splitting::). The backslash character `\' may be used to remove + assigned empty values. The characters in the value of the 'IFS' + variable are used to split the line into words using the same rules + the shell uses for expansion (described above in *note Word + Splitting::). The backslash character '\' may be used to remove any special meaning for the next character read and for line continuation. If no names are supplied, the line read is assigned - to the variable `REPLY'. The return code is zero, unless - end-of-file is encountered, `read' times out (in which case the - return code is greater than 128), a variable assignment error - (such as assigning to a readonly variable) occurs, or an invalid - file descriptor is supplied as the argument to `-u'. + to the variable 'REPLY'. The exit status is zero, unless + end-of-file is encountered, 'read' times out (in which case the + status is greater than 128), a variable assignment error (such as + assigning to a readonly variable) occurs, or an invalid file + descriptor is supplied as the argument to '-u'. Options, if supplied, have the following meanings: - `-a ANAME' + '-a ANAME' The words are assigned to sequential indices of the array variable ANAME, starting at 0. All elements are removed from ANAME before the assignment. Other NAME arguments are ignored. - `-d DELIM' + '-d DELIM' The first character of DELIM is used to terminate the input line, rather than newline. - `-e' + '-e' Readline (*note Command Line Editing::) is used to obtain the line. Readline uses the current (or default, if line editing was not previously active) editing settings. - `-i TEXT' + '-i TEXT' If Readline is being used to read the line, TEXT is placed into the editing buffer before editing begins. - `-n NCHARS' - `read' returns after reading NCHARS characters rather than - waiting for a complete line of input, but honor a delimiter + '-n NCHARS' + 'read' returns after reading NCHARS characters rather than + waiting for a complete line of input, but honors a delimiter if fewer than NCHARS characters are read before the delimiter. - `-N NCHARS' - `read' returns after reading exactly NCHARS characters rather + '-N NCHARS' + 'read' returns after reading exactly NCHARS characters rather than waiting for a complete line of input, unless EOF is - encountered or `read' times out. Delimiter characters + encountered or 'read' times out. Delimiter characters encountered in the input are not treated specially and do not - cause `read' to return until NCHARS characters are read. + cause 'read' to return until NCHARS characters are read. The + result is not split on the characters in 'IFS'; the intent is + that the variable is assigned exactly the characters read + (with the exception of backslash; see the '-r' option below). - `-p PROMPT' + '-p PROMPT' Display PROMPT, without a trailing newline, before attempting to read any input. The prompt is displayed only if input is coming from a terminal. - `-r' + '-r' If this option is given, backslash does not act as an escape character. The backslash is considered to be part of the - line. In particular, a backslash-newline pair may not be - used as a line continuation. + line. In particular, a backslash-newline pair may not be used + as a line continuation. - `-s' + '-s' Silent mode. If input is coming from a terminal, characters are not echoed. - `-t TIMEOUT' - Cause `read' to time out and return failure if a complete - line of input (or a specified number of characters) is not - read within TIMEOUT seconds. TIMEOUT may be a decimal - number with a fractional portion following the decimal point. - This option is only effective if `read' is reading input from - a terminal, pipe, or other special file; it has no effect - when reading from regular files. If `read' times out, `read' - saves any partial input read into the specified variable NAME. - If TIMEOUT is 0, `read' returns immediately, without trying to + '-t TIMEOUT' + Cause 'read' to time out and return failure if a complete line + of input (or a specified number of characters) is not read + within TIMEOUT seconds. TIMEOUT may be a decimal number with + a fractional portion following the decimal point. This option + is only effective if 'read' is reading input from a terminal, + pipe, or other special file; it has no effect when reading + from regular files. If 'read' times out, 'read' saves any + partial input read into the specified variable NAME. If + TIMEOUT is 0, 'read' returns immediately, without trying to read and data. The exit status is 0 if input is available on the specified file descriptor, non-zero otherwise. The exit status is greater than 128 if the timeout is exceeded. - `-u FD' + '-u FD' Read input from file descriptor FD. -`readarray' +'readarray' readarray [-d DELIM] [-n COUNT] [-O ORIGIN] [-s COUNT] [-t] [-u FD] [-C CALLBACK] [-c QUANTUM] [ARRAY] Read lines from the standard input into the indexed array variable - ARRAY, or from file descriptor FD if the `-u' option is supplied. + ARRAY, or from file descriptor FD if the '-u' option is supplied. - A synonym for `mapfile'. + A synonym for 'mapfile'. -`source' +'source' source FILENAME - A synonym for `.' (*note Bourne Shell Builtins::). + A synonym for '.' (*note Bourne Shell Builtins::). -`type' +'type' type [-afptP] [NAME ...] For each NAME, indicate how it would be interpreted if used as a command name. - If the `-t' option is used, `type' prints a single word which is - one of `alias', `function', `builtin', `file' or `keyword', if - NAME is an alias, shell function, shell builtin, disk file, or - shell reserved word, respectively. If the NAME is not found, then - nothing is printed, and `type' returns a failure status. + If the '-t' option is used, 'type' prints a single word which is + one of 'alias', 'function', 'builtin', 'file' or 'keyword', if NAME + is an alias, shell function, shell builtin, disk file, or shell + reserved word, respectively. If the NAME is not found, then + nothing is printed, and 'type' returns a failure status. - If the `-p' option is used, `type' either returns the name of the - disk file that would be executed, or nothing if `-t' would not - return `file'. + If the '-p' option is used, 'type' either returns the name of the + disk file that would be executed, or nothing if '-t' would not + return 'file'. - The `-P' option forces a path search for each NAME, even if `-t' - would not return `file'. + The '-P' option forces a path search for each NAME, even if '-t' + would not return 'file'. - If a command is hashed, `-p' and `-P' print the hashed value, - which is not necessarily the file that appears first in `$PATH'. + If a command is hashed, '-p' and '-P' print the hashed value, which + is not necessarily the file that appears first in '$PATH'. - If the `-a' option is used, `type' returns all of the places that + If the '-a' option is used, 'type' returns all of the places that contain an executable named FILE. This includes aliases and - functions, if and only if the `-p' option is not also used. + functions, if and only if the '-p' option is not also used. - If the `-f' option is used, `type' does not attempt to find shell - functions, as with the `command' builtin. + If the '-f' option is used, 'type' does not attempt to find shell + functions, as with the 'command' builtin. The return status is zero if all of the NAMES are found, non-zero if any are not found. -`typeset' +'typeset' typeset [-afFgrxilnrtux] [-p] [NAME[=VALUE] ...] - The `typeset' command is supplied for compatibility with the Korn - shell. It is a synonym for the `declare' builtin command. + The 'typeset' command is supplied for compatibility with the Korn + shell. It is a synonym for the 'declare' builtin command. -`ulimit' - ulimit [-abcdefilmnpqrstuvxHST] [LIMIT] +'ulimit' + ulimit [-HSabcdefiklmnpqrstuvxPT] [LIMIT] - `ulimit' provides control over the resources available to processes + 'ulimit' provides control over the resources available to processes started by the shell, on systems that allow such control. If an option is given, it is interpreted as follows: - `-S' + '-S' Change and report the soft limit associated with a resource. - `-H' + '-H' Change and report the hard limit associated with a resource. - `-a' + '-a' All current limits are reported. - `-b' + '-b' The maximum socket buffer size. - `-c' + '-c' The maximum size of core files created. - `-d' + '-d' The maximum size of a process's data segment. - `-e' + '-e' The maximum scheduling priority ("nice"). - `-f' + '-f' The maximum size of files written by the shell and its children. - `-i' + '-i' The maximum number of pending signals. - `-l' + '-k' + The maximum number of kqueues that may be allocated. + + '-l' The maximum size that may be locked into memory. - `-m' + '-m' The maximum resident set size (many systems do not honor this limit). - `-n' + '-n' The maximum number of open file descriptors (most systems do not allow this value to be set). - `-p' + '-p' The pipe buffer size. - `-q' + '-q' The maximum number of bytes in POSIX message queues. - `-r' + '-r' The maximum real-time scheduling priority. - `-s' + '-s' The maximum stack size. - `-t' + '-t' The maximum amount of cpu time in seconds. - `-u' + '-u' The maximum number of processes available to a single user. - `-v' + '-v' The maximum amount of virtual memory available to the shell, and, on some systems, to its children. - `-x' + '-x' The maximum number of file locks. - `-T' + '-P' + The maximum number of pseudoterminals. + + '-T' The maximum number of threads. - If LIMIT is given, and the `-a' option is not used, LIMIT is the + If LIMIT is given, and the '-a' option is not used, LIMIT is the new value of the specified resource. The special LIMIT values - `hard', `soft', and `unlimited' stand for the current hard limit, + 'hard', 'soft', and 'unlimited' stand for the current hard limit, the current soft limit, and no limit, respectively. A hard limit - cannot be increased by a non-root user once it is set; a soft - limit may be increased up to the value of the hard limit. - Otherwise, the current value of the soft limit for the specified - resource is printed, unless the `-H' option is supplied. When - setting new limits, if neither `-H' nor `-S' is supplied, both the - hard and soft limits are set. If no option is given, then `-f' is - assumed. Values are in 1024-byte increments, except for `-t', - which is in seconds; `-p', which is in units of 512-byte blocks; - and `-T', `-b', `-n' and `-u', which are unscaled values. + cannot be increased by a non-root user once it is set; a soft limit + may be increased up to the value of the hard limit. Otherwise, the + current value of the soft limit for the specified resource is + printed, unless the '-H' option is supplied. When setting new + limits, if neither '-H' nor '-S' is supplied, both the hard and + soft limits are set. If no option is given, then '-f' is assumed. + Values are in 1024-byte increments, except for '-t', which is in + seconds; '-p', which is in units of 512-byte blocks; '-P', '-T', + '-b', '-k', '-n' and '-u', which are unscaled values; and, when in + POSIX Mode (*note Bash POSIX Mode::), '-c' and '-f', which are in + 512-byte increments. The return status is zero unless an invalid option or argument is supplied, or an error occurs while setting a new limit. -`unalias' +'unalias' unalias [-a] [NAME ... ] - Remove each NAME from the list of aliases. If `-a' is supplied, + Remove each NAME from the list of aliases. If '-a' is supplied, all aliases are removed. Aliases are described in *note Aliases::.  @@ -3930,276 +3930,277 @@ File: bash.info, Node: The Set Builtin, Next: The Shopt Builtin, Up: Modifyin 4.3.1 The Set Builtin --------------------- -This builtin is so complicated that it deserves its own section. `set' +This builtin is so complicated that it deserves its own section. 'set' allows you to change the values of shell options and set the positional parameters, or to display the names and values of shell variables. -`set' +'set' set [--abefhkmnptuvxBCEHPT] [-o OPTION-NAME] [ARGUMENT ...] set [+abefhkmnptuvxBCEHPT] [+o OPTION-NAME] [ARGUMENT ...] - If no options or arguments are supplied, `set' displays the names + If no options or arguments are supplied, 'set' displays the names and values of all shell variables and functions, sorted according to the current locale, in a format that may be reused as input for setting or resetting the currently-set variables. Read-only - variables cannot be reset. In POSIX mode, only shell variables - are listed. + variables cannot be reset. In POSIX mode, only shell variables are + listed. When options are supplied, they set or unset shell attributes. Options, if specified, have the following meanings: - `-a' - Mark variables and function which are modified or created for - export to the environment of subsequent commands. + '-a' + Each variable or function that is created or modified is given + the export attribute and marked for export to the environment + of subsequent commands. - `-b' + '-b' Cause the status of terminated background jobs to be reported immediately, rather than before printing the next primary prompt. - `-e' + '-e' Exit immediately if a pipeline (*note Pipelines::), which may consist of a single simple command (*note Simple Commands::), a list (*note Lists::), or a compound command (*note Compound Commands::) returns a non-zero status. The shell does not exit if the command that fails is part of the command list - immediately following a `while' or `until' keyword, part of - the test in an `if' statement, part of any command executed - in a `&&' or `||' list except the command following the final - `&&' or `||', any command in a pipeline but the last, or if - the command's return status is being inverted with `!'. If a + immediately following a 'while' or 'until' keyword, part of + the test in an 'if' statement, part of any command executed in + a '&&' or '||' list except the command following the final + '&&' or '||', any command in a pipeline but the last, or if + the command's return status is being inverted with '!'. If a compound command other than a subshell returns a non-zero - status because a command failed while `-e' was being ignored, - the shell does not exit. A trap on `ERR', if set, is - executed before the shell exits. + status because a command failed while '-e' was being ignored, + the shell does not exit. A trap on 'ERR', if set, is executed + before the shell exits. - This option applies to the shell environment and each - subshell environment separately (*note Command Execution + This option applies to the shell environment and each subshell + environment separately (*note Command Execution Environment::), and may cause subshells to exit before executing all the commands in the subshell. If a compound command or shell function executes in a context - where `-e' is being ignored, none of the commands executed + where '-e' is being ignored, none of the commands executed within the compound command or function body will be affected - by the `-e' setting, even if `-e' is set and a command - returns a failure status. If a compound command or shell - function sets `-e' while executing in a context where `-e' is - ignored, that setting will not have any effect until the - compound command or the command containing the function call - completes. + by the '-e' setting, even if '-e' is set and a command returns + a failure status. If a compound command or shell function + sets '-e' while executing in a context where '-e' is ignored, + that setting will not have any effect until the compound + command or the command containing the function call completes. - `-f' + '-f' Disable filename expansion (globbing). - `-h' + '-h' Locate and remember (hash) commands as they are looked up for execution. This option is enabled by default. - `-k' + '-k' All arguments in the form of assignment statements are placed in the environment for a command, not just those that precede the command name. - `-m' + '-m' Job control is enabled (*note Job Control::). All processes run in a separate process group. When a background job completes, the shell prints a line containing its exit status. - `-n' + '-n' Read commands but do not execute them. This may be used to check a script for syntax errors. This option is ignored by interactive shells. - `-o OPTION-NAME' + '-o OPTION-NAME' + Set the option corresponding to OPTION-NAME: - `allexport' - Same as `-a'. + 'allexport' + Same as '-a'. - `braceexpand' - Same as `-B'. + 'braceexpand' + Same as '-B'. - `emacs' - Use an `emacs'-style line editing interface (*note + 'emacs' + Use an 'emacs'-style line editing interface (*note Command Line Editing::). This also affects the editing - interface used for `read -e'. + interface used for 'read -e'. - `errexit' - Same as `-e'. + 'errexit' + Same as '-e'. - `errtrace' - Same as `-E'. + 'errtrace' + Same as '-E'. - `functrace' - Same as `-T'. + 'functrace' + Same as '-T'. - `hashall' - Same as `-h'. + 'hashall' + Same as '-h'. - `histexpand' - Same as `-H'. + 'histexpand' + Same as '-H'. - `history' + 'history' Enable command history, as described in *note Bash History Facilities::. This option is on by default in interactive shells. - `ignoreeof' + 'ignoreeof' An interactive shell will not exit upon reading EOF. - `keyword' - Same as `-k'. + 'keyword' + Same as '-k'. - `monitor' - Same as `-m'. + 'monitor' + Same as '-m'. - `noclobber' - Same as `-C'. + 'noclobber' + Same as '-C'. - `noexec' - Same as `-n'. + 'noexec' + Same as '-n'. - `noglob' - Same as `-f'. + 'noglob' + Same as '-f'. - `nolog' + 'nolog' Currently ignored. - `notify' - Same as `-b'. + 'notify' + Same as '-b'. - `nounset' - Same as `-u'. + 'nounset' + Same as '-u'. - `onecmd' - Same as `-t'. + 'onecmd' + Same as '-t'. - `physical' - Same as `-P'. + 'physical' + Same as '-P'. - `pipefail' + 'pipefail' If set, the return value of a pipeline is the value of the last (rightmost) command to exit with a non-zero status, or zero if all commands in the pipeline exit successfully. This option is disabled by default. - `posix' + 'posix' Change the behavior of Bash where the default operation differs from the POSIX standard to match the standard - (*note Bash POSIX Mode::). This is intended to make - Bash behave as a strict superset of that standard. + (*note Bash POSIX Mode::). This is intended to make Bash + behave as a strict superset of that standard. - `privileged' - Same as `-p'. + 'privileged' + Same as '-p'. - `verbose' - Same as `-v'. + 'verbose' + Same as '-v'. - `vi' - Use a `vi'-style line editing interface. This also - affects the editing interface used for `read -e'. + 'vi' + Use a 'vi'-style line editing interface. This also + affects the editing interface used for 'read -e'. - `xtrace' - Same as `-x'. + 'xtrace' + Same as '-x'. - `-p' - Turn on privileged mode. In this mode, the `$BASH_ENV' and - `$ENV' files are not processed, shell functions are not - inherited from the environment, and the `SHELLOPTS', - `BASHOPTS', `CDPATH' and `GLOBIGNORE' variables, if they + '-p' + Turn on privileged mode. In this mode, the '$BASH_ENV' and + '$ENV' files are not processed, shell functions are not + inherited from the environment, and the 'SHELLOPTS', + 'BASHOPTS', 'CDPATH' and 'GLOBIGNORE' variables, if they appear in the environment, are ignored. If the shell is started with the effective user (group) id not equal to the - real user (group) id, and the `-p' option is not supplied, + real user (group) id, and the '-p' option is not supplied, these actions are taken and the effective user id is set to - the real user id. If the `-p' option is supplied at startup, + the real user id. If the '-p' option is supplied at startup, the effective user id is not reset. Turning this option off causes the effective user and group ids to be set to the real user and group ids. - `-t' + '-t' Exit after reading and executing one command. - `-u' + '-u' Treat unset variables and parameters other than the special - parameters `@' or `*' as an error when performing parameter + parameters '@' or '*' as an error when performing parameter expansion. An error message will be written to the standard error, and a non-interactive shell will exit. - `-v' + '-v' Print shell input lines as they are read. - `-x' - Print a trace of simple commands, `for' commands, `case' - commands, `select' commands, and arithmetic `for' commands - and their arguments or associated word lists after they are - expanded and before they are executed. The value of the `PS4' + '-x' + Print a trace of simple commands, 'for' commands, 'case' + commands, 'select' commands, and arithmetic 'for' commands and + their arguments or associated word lists after they are + expanded and before they are executed. The value of the 'PS4' variable is expanded and the resultant value is printed before the command and its expanded arguments. - `-B' + '-B' The shell will perform brace expansion (*note Brace Expansion::). This option is on by default. - `-C' - Prevent output redirection using `>', `>&', and `<>' from + '-C' + Prevent output redirection using '>', '>&', and '<>' from overwriting existing files. - `-E' - If set, any trap on `ERR' is inherited by shell functions, + '-E' + If set, any trap on 'ERR' is inherited by shell functions, command substitutions, and commands executed in a subshell - environment. The `ERR' trap is normally not inherited in - such cases. + environment. The 'ERR' trap is normally not inherited in such + cases. - `-H' - Enable `!' style history substitution (*note History + '-H' + Enable '!' style history substitution (*note History Interaction::). This option is on by default for interactive shells. - `-P' - If set, do not resolve symbolic links when performing - commands such as `cd' which change the current directory. - The physical directory is used instead. By default, Bash - follows the logical chain of directories when performing - commands which change the current directory. + '-P' + If set, do not resolve symbolic links when performing commands + such as 'cd' which change the current directory. The physical + directory is used instead. By default, Bash follows the + logical chain of directories when performing commands which + change the current directory. - For example, if `/usr/sys' is a symbolic link to - `/usr/local/sys' then: + For example, if '/usr/sys' is a symbolic link to + '/usr/local/sys' then: $ cd /usr/sys; echo $PWD /usr/sys $ cd ..; pwd /usr - If `set -P' is on, then: + If 'set -P' is on, then: $ cd /usr/sys; echo $PWD /usr/local/sys $ cd ..; pwd /usr/local - `-T' - If set, any trap on `DEBUG' and `RETURN' are inherited by + '-T' + If set, any trap on 'DEBUG' and 'RETURN' are inherited by shell functions, command substitutions, and commands executed - in a subshell environment. The `DEBUG' and `RETURN' traps - are normally not inherited in such cases. + in a subshell environment. The 'DEBUG' and 'RETURN' traps are + normally not inherited in such cases. - `--' + '--' If no arguments follow this option, then the positional parameters are unset. Otherwise, the positional parameters are set to the ARGUMENTS, even if some of them begin with a - `-'. + '-'. - `-' - Signal the end of options, cause all remaining ARGUMENTS to - be assigned to the positional parameters. The `-x' and `-v' + '-' + Signal the end of options, cause all remaining ARGUMENTS to be + assigned to the positional parameters. The '-x' and '-v' options are turned off. If there are no arguments, the positional parameters remain unchanged. - Using `+' rather than `-' causes these options to be turned off. + Using '+' rather than '-' causes these options to be turned off. The options can also be used upon invocation of the shell. The - current set of options may be found in `$-'. + current set of options may be found in '$-'. The remaining N ARGUMENTS are positional parameters and are - assigned, in order, to `$1', `$2', ... `$N'. The special - parameter `#' is set to N. + assigned, in order, to '$1', '$2', ... '$N'. The special parameter + '#' is set to N. The return status is always zero unless an invalid option is supplied. @@ -4212,38 +4213,38 @@ File: bash.info, Node: The Shopt Builtin, Prev: The Set Builtin, Up: Modifyin This builtin allows you to change additional shell optional behavior. -`shopt' +'shopt' shopt [-pqsu] [-o] [OPTNAME ...] Toggle the values of settings controlling optional shell behavior. - The settings can be either those listed below, or, if the `-o' - option is used, those available with the `-o' option to the `set' + The settings can be either those listed below, or, if the '-o' + option is used, those available with the '-o' option to the 'set' builtin command (*note The Set Builtin::). With no options, or - with the `-p' option, a list of all settable options is displayed, - with an indication of whether or not each is set. The `-p' option + with the '-p' option, a list of all settable options is displayed, + with an indication of whether or not each is set. The '-p' option causes output to be displayed in a form that may be reused as input. Other options have the following meanings: - `-s' + '-s' Enable (set) each OPTNAME. - `-u' + '-u' Disable (unset) each OPTNAME. - `-q' + '-q' Suppresses normal output; the return status indicates whether the OPTNAME is set or unset. If multiple OPTNAME arguments - are given with `-q', the return status is zero if all - OPTNAMES are enabled; non-zero otherwise. + are given with '-q', the return status is zero if all OPTNAMES + are enabled; non-zero otherwise. - `-o' + '-o' Restricts the values of OPTNAME to be those defined for the - `-o' option to the `set' builtin (*note The Set Builtin::). + '-o' option to the 'set' builtin (*note The Set Builtin::). - If either `-s' or `-u' is used with no OPTNAME arguments, `shopt' + If either '-s' or '-u' is used with no OPTNAME arguments, 'shopt' shows only those options which are set or unset, respectively. - Unless otherwise noted, the `shopt' options are disabled (off) by + Unless otherwise noted, the 'shopt' options are disabled (off) by default. The return status when listing options is zero if all OPTNAMES are @@ -4251,84 +4252,97 @@ This builtin allows you to change additional shell optional behavior. the return status is zero unless an OPTNAME is not a valid shell option. - The list of `shopt' options is: - `autocd' - If set, a command name that is the name of a directory is - executed as if it were the argument to the `cd' command. - This option is only used by interactive shells. + The list of 'shopt' options is: - `cdable_vars' - If this is set, an argument to the `cd' builtin command that + 'autocd' + If set, a command name that is the name of a directory is + executed as if it were the argument to the 'cd' command. This + option is only used by interactive shells. + + 'cdable_vars' + If this is set, an argument to the 'cd' builtin command that is not a directory is assumed to be the name of a variable whose value is the directory to change to. - `cdspell' + 'cdspell' If set, minor errors in the spelling of a directory component - in a `cd' command will be corrected. The errors checked for + in a 'cd' command will be corrected. The errors checked for are transposed characters, a missing character, and a character too many. If a correction is found, the corrected path is printed, and the command proceeds. This option is only used by interactive shells. - `checkhash' + 'checkhash' If this is set, Bash checks that a command found in the hash - table exists before trying to execute it. If a hashed - command no longer exists, a normal path search is performed. + table exists before trying to execute it. If a hashed command + no longer exists, a normal path search is performed. - `checkjobs' + 'checkjobs' If set, Bash lists the status of any stopped and running jobs - before exiting an interactive shell. If any jobs are - running, this causes the exit to be deferred until a second - exit is attempted without an intervening command (*note Job + before exiting an interactive shell. If any jobs are running, + this causes the exit to be deferred until a second exit is + attempted without an intervening command (*note Job Control::). The shell always postpones exiting if any jobs are stopped. - `checkwinsize' - If set, Bash checks the window size after each command and, - if necessary, updates the values of `LINES' and `COLUMNS'. + 'checkwinsize' + If set, Bash checks the window size after each command and, if + necessary, updates the values of 'LINES' and 'COLUMNS'. - `cmdhist' + 'cmdhist' If set, Bash attempts to save all lines of a multiple-line command in the same history entry. This allows easy re-editing of multi-line commands. - `compat31' + 'compat31' If set, Bash changes its behavior to that of version 3.1 with - respect to quoted arguments to the conditional command's `=~' - operator and with respect to locale-specific string - comparison when using the `[[' conditional command's `<' and - `>' operators. Bash versions prior to bash-4.1 use ASCII + respect to quoted arguments to the conditional command's '=~' + operator and with respect to locale-specific string comparison + when using the '[[' conditional command's '<' and '>' + operators. Bash versions prior to bash-4.1 use ASCII collation and strcmp(3); bash-4.1 and later use the current locale's collation sequence and strcoll(3). - `compat32' + 'compat32' If set, Bash changes its behavior to that of version 3.2 with respect to locale-specific string comparison when using the - `[[' conditional command's `<' and `>' operators (see - previous item). + '[[' conditional command's '<' and '>' operators (see previous + item) and the effect of interrupting a command list. Bash + versions 3.2 and earlier continue with the next command in the + list after one terminates due to an interrupt. - `compat40' + 'compat40' If set, Bash changes its behavior to that of version 4.0 with respect to locale-specific string comparison when using the - `[[' conditional command's `<' and `>' operators (see - description of `compat31') and the effect of interrupting a + '[[' conditional command's '<' and '>' operators (see + description of 'compat31') and the effect of interrupting a command list. Bash versions 4.0 and later interrupt the list as if the shell received the interrupt; previous versions continue with the next command in the list. - `compat41' + 'compat41' If set, Bash, when in POSIX mode, treats a single quote in a - double-quoted parameter expansion as a special character. - The single quotes must match (an even number) and the - characters between the single quotes are considered quoted. - This is the behavior of POSIX mode through version 4.1. The - default Bash behavior remains as in previous versions. + double-quoted parameter expansion as a special character. The + single quotes must match (an even number) and the characters + between the single quotes are considered quoted. This is the + behavior of POSIX mode through version 4.1. The default Bash + behavior remains as in previous versions. - `compat42' + 'compat42' If set, Bash does not process the replacement string in the pattern substitution word expansion using quote removal. - `complete_fullquote' + 'compat43' + If set, Bash does not print a warning message if an attempt is + made to use a quoted compound array assignment as an argument + to 'declare', makes word expansion errors non-fatal errors + that cause the current command to fail (the default behavior + is to make them fatal errors that cause the shell to exit), + and does not reset the loop state when a shell function is + executed (this allows 'break' or 'continue' in a shell + function to affect loops in the caller's context). + + 'complete_fullquote' If set, Bash quotes all shell metacharacters in filenames and directory names when performing completion. If not set, Bash removes metacharacters such as the dollar sign from the set of @@ -4339,203 +4353,209 @@ This builtin allows you to change additional shell optional behavior. however, any dollar signs appearing in filenames will not be quoted, either. This is active only when bash is using backslashes to quote completed filenames. This variable is - set by default, which is the default Bash behavior in - versions through 4.2. + set by default, which is the default Bash behavior in versions + through 4.2. - `direxpand' - If set, Bash replaces directory names with the results of - word expansion when performing filename completion. This - changes the contents of the readline editing buffer. If not - set, Bash attempts to preserve what the user typed. + 'direxpand' + If set, Bash replaces directory names with the results of word + expansion when performing filename completion. This changes + the contents of the readline editing buffer. If not set, Bash + attempts to preserve what the user typed. - `dirspell' + 'dirspell' If set, Bash attempts spelling correction on directory names during word completion if the directory name initially supplied does not exist. - `dotglob' - If set, Bash includes filenames beginning with a `.' in the + 'dotglob' + If set, Bash includes filenames beginning with a '.' in the results of filename expansion. - `execfail' + 'execfail' If this is set, a non-interactive shell will not exit if it - cannot execute the file specified as an argument to the `exec' - builtin command. An interactive shell does not exit if `exec' + cannot execute the file specified as an argument to the 'exec' + builtin command. An interactive shell does not exit if 'exec' fails. - `expand_aliases' + 'expand_aliases' If set, aliases are expanded as described below under Aliases, *note Aliases::. This option is enabled by default for interactive shells. - `extdebug' + 'extdebug' If set, behavior intended for use by debuggers is enabled: - 1. The `-F' option to the `declare' builtin (*note Bash - Builtins::) displays the source file name and line - number corresponding to each function name supplied as - an argument. + 1. The '-F' option to the 'declare' builtin (*note Bash + Builtins::) displays the source file name and line number + corresponding to each function name supplied as an + argument. - 2. If the command run by the `DEBUG' trap returns a - non-zero value, the next command is skipped and not - executed. + 2. If the command run by the 'DEBUG' trap returns a non-zero + value, the next command is skipped and not executed. - 3. If the command run by the `DEBUG' trap returns a value - of 2, and the shell is executing in a subroutine (a - shell function or a shell script executed by the `.' or - `source' builtins), the shell simulates a call to - `return'. + 3. If the command run by the 'DEBUG' trap returns a value of + 2, and the shell is executing in a subroutine (a shell + function or a shell script executed by the '.' or + 'source' builtins), the shell simulates a call to + 'return'. - 4. `BASH_ARGC' and `BASH_ARGV' are updated as described in + 4. 'BASH_ARGC' and 'BASH_ARGV' are updated as described in their descriptions (*note Bash Variables::). 5. Function tracing is enabled: command substitution, shell - functions, and subshells invoked with `( COMMAND )' - inherit the `DEBUG' and `RETURN' traps. + functions, and subshells invoked with '( COMMAND )' + inherit the 'DEBUG' and 'RETURN' traps. 6. Error tracing is enabled: command substitution, shell - functions, and subshells invoked with `( COMMAND )' - inherit the `ERR' trap. + functions, and subshells invoked with '( COMMAND )' + inherit the 'ERR' trap. - `extglob' + 'extglob' If set, the extended pattern matching features described above (*note Pattern Matching::) are enabled. - `extquote' - If set, `$'STRING'' and `$"STRING"' quoting is performed - within `${PARAMETER}' expansions enclosed in double quotes. + 'extquote' + If set, '$'STRING'' and '$"STRING"' quoting is performed + within '${PARAMETER}' expansions enclosed in double quotes. This option is enabled by default. - `failglob' - If set, patterns which fail to match filenames during - filename expansion result in an expansion error. + 'failglob' + If set, patterns which fail to match filenames during filename + expansion result in an expansion error. - `force_fignore' - If set, the suffixes specified by the `FIGNORE' shell variable - cause words to be ignored when performing word completion - even if the ignored words are the only possible completions. - *Note Bash Variables::, for a description of `FIGNORE'. This - option is enabled by default. + 'force_fignore' + If set, the suffixes specified by the 'FIGNORE' shell variable + cause words to be ignored when performing word completion even + if the ignored words are the only possible completions. *Note + Bash Variables::, for a description of 'FIGNORE'. This option + is enabled by default. - `globasciiranges' + 'globasciiranges' If set, range expressions used in pattern matching bracket expressions (*note Pattern Matching::) behave as if in the traditional C locale when performing comparisons. That is, the current locale's collating sequence is not taken into - account, so `b' will not collate between `A' and `B', and + account, so 'b' will not collate between 'A' and 'B', and upper-case and lower-case ASCII characters will collate together. - `globstar' - If set, the pattern `**' used in a filename expansion context + 'globstar' + If set, the pattern '**' used in a filename expansion context will match all files and zero or more directories and - subdirectories. If the pattern is followed by a `/', only + subdirectories. If the pattern is followed by a '/', only directories and subdirectories match. - `gnu_errfmt' + 'gnu_errfmt' If set, shell error messages are written in the standard GNU error message format. - `histappend' + 'histappend' If set, the history list is appended to the file named by the - value of the `HISTFILE' variable when the shell exits, rather + value of the 'HISTFILE' variable when the shell exits, rather than overwriting the file. - `histreedit' + 'histreedit' If set, and Readline is being used, a user is given the opportunity to re-edit a failed history substitution. - `histverify' + 'histverify' If set, and Readline is being used, the results of history substitution are not immediately passed to the shell parser. Instead, the resulting line is loaded into the Readline editing buffer, allowing further modification. - `hostcomplete' + 'hostcomplete' If set, and Readline is being used, Bash will attempt to - perform hostname completion when a word containing a `@' is + perform hostname completion when a word containing a '@' is being completed (*note Commands For Completion::). This option is enabled by default. - `huponexit' - If set, Bash will send `SIGHUP' to all jobs when an + 'huponexit' + If set, Bash will send 'SIGHUP' to all jobs when an interactive login shell exits (*note Signals::). - `interactive_comments' - Allow a word beginning with `#' to cause that word and all + 'inherit_errexit' + If set, command substitution inherits the value of the + 'errexit' option, instead of unsetting it in the subshell + environment. This option is enabled when POSIX mode is + enabled. + + 'interactive_comments' + Allow a word beginning with '#' to cause that word and all remaining characters on that line to be ignored in an interactive shell. This option is enabled by default. - `lastpipe' - If set, and job control is not active, the shell runs the - last command of a pipeline not executed in the background in - the current shell environment. + 'lastpipe' + If set, and job control is not active, the shell runs the last + command of a pipeline not executed in the background in the + current shell environment. - `lithist' - If enabled, and the `cmdhist' option is enabled, multi-line + 'lithist' + If enabled, and the 'cmdhist' option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible. - `login_shell' + 'login_shell' The shell sets this option if it is started as a login shell (*note Invoking Bash::). The value may not be changed. - `mailwarn' + 'mailwarn' If set, and a file that Bash is checking for mail has been - accessed since the last time it was checked, the message - `"The mail in MAILFILE has been read"' is displayed. + accessed since the last time it was checked, the message '"The + mail in MAILFILE has been read"' is displayed. - `no_empty_cmd_completion' + 'no_empty_cmd_completion' If set, and Readline is being used, Bash will not attempt to - search the `PATH' for possible completions when completion is + search the 'PATH' for possible completions when completion is attempted on an empty line. - `nocaseglob' + 'nocaseglob' If set, Bash matches filenames in a case-insensitive fashion when performing filename expansion. - `nocasematch' + 'nocasematch' If set, Bash matches patterns in a case-insensitive fashion - when performing matching while executing `case' or `[[' - conditional commands. + when performing matching while executing 'case' or '[[' + conditional commands, when performing pattern substitution + word expansions, or when filtering possible completions as + part of programmable completion. - `nullglob' + 'nullglob' If set, Bash allows filename patterns which match no files to expand to a null string, rather than themselves. - `progcomp' + 'progcomp' If set, the programmable completion facilities (*note Programmable Completion::) are enabled. This option is enabled by default. - `promptvars' + 'promptvars' If set, prompt strings undergo parameter expansion, command substitution, arithmetic expansion, and quote removal after being expanded as described below (*note Controlling the Prompt::). This option is enabled by default. - `restricted_shell' + 'restricted_shell' The shell sets this option if it is started in restricted mode (*note The Restricted Shell::). The value may not be changed. This is not reset when the startup files are executed, allowing the startup files to discover whether or not a shell is restricted. - `shift_verbose' - If this is set, the `shift' builtin prints an error message + 'shift_verbose' + If this is set, the 'shift' builtin prints an error message when the shift count exceeds the number of positional parameters. - `sourcepath' - If set, the `source' builtin uses the value of `PATH' to find + 'sourcepath' + If set, the 'source' builtin uses the value of 'PATH' to find the directory containing the file supplied as an argument. This option is enabled by default. - `xpg_echo' - If set, the `echo' builtin expands backslash-escape sequences + 'xpg_echo' + If set, the 'echo' builtin expands backslash-escape sequences by default. - The return status when listing options is zero if all OPTNAMES are enabled, non-zero otherwise. When setting or unsetting options, the return status is zero unless an OPTNAME is not a valid shell @@ -4581,7 +4601,7 @@ File: bash.info, Node: Shell Variables, Next: Bash Features, Prev: Shell Buil as the Bourne Shell. * Bash Variables:: List of variables that exist in Bash. - This chapter describes the shell variables that Bash uses. Bash +This chapter describes the shell variables that Bash uses. Bash automatically assigns default values to a number of variables.  @@ -4593,53 +4613,52 @@ File: bash.info, Node: Bourne Shell Variables, Next: Bash Variables, Up: Shel Bash uses certain shell variables in the same way as the Bourne shell. In some cases, Bash assigns a default value to the variable. -`CDPATH' - A colon-separated list of directories used as a search path for - the `cd' builtin command. +'CDPATH' + A colon-separated list of directories used as a search path for the + 'cd' builtin command. -`HOME' - The current user's home directory; the default for the `cd' builtin +'HOME' + The current user's home directory; the default for the 'cd' builtin command. The value of this variable is also used by tilde expansion (*note Tilde Expansion::). -`IFS' +'IFS' A list of characters that separate fields; used when the shell splits words as part of expansion. -`MAIL' +'MAIL' If this parameter is set to a filename or directory name and the - `MAILPATH' variable is not set, Bash informs the user of the + 'MAILPATH' variable is not set, Bash informs the user of the arrival of mail in the specified file or Maildir-format directory. -`MAILPATH' +'MAILPATH' A colon-separated list of filenames which the shell periodically checks for new mail. Each list entry can specify the message that - is printed when new mail arrives in the mail file by separating - the filename from the message with a `?'. When used in the text - of the message, `$_' expands to the name of the current mail file. + is printed when new mail arrives in the mail file by separating the + filename from the message with a '?'. When used in the text of the + message, '$_' expands to the name of the current mail file. -`OPTARG' - The value of the last option argument processed by the `getopts' +'OPTARG' + The value of the last option argument processed by the 'getopts' builtin. -`OPTIND' - The index of the last option argument processed by the `getopts' +'OPTIND' + The index of the last option argument processed by the 'getopts' builtin. -`PATH' +'PATH' A colon-separated list of directories in which the shell looks for commands. A zero-length (null) directory name in the value of - `PATH' indicates the current directory. A null directory name may + 'PATH' indicates the current directory. A null directory name may appear as two adjacent colons, or as an initial or trailing colon. -`PS1' - The primary prompt string. The default value is `\s-\v\$ '. - *Note Controlling the Prompt::, for the complete list of escape - sequences that are expanded before `PS1' is displayed. - -`PS2' - The secondary prompt string. The default value is `> '. +'PS1' + The primary prompt string. The default value is '\s-\v\$ '. *Note + Controlling the Prompt::, for the complete list of escape sequences + that are expanded before 'PS1' is displayed. +'PS2' + The secondary prompt string. The default value is '> '.  File: bash.info, Node: Bash Variables, Prev: Bourne Shell Variables, Up: Shell Variables @@ -4654,596 +4673,623 @@ normally treat them specially. variables for controlling the job control facilities (*note Job Control Variables::). -`BASH' +'BASH' The full pathname used to execute the current instance of Bash. -`BASHOPTS' +'BASHOPTS' A colon-separated list of enabled shell options. Each word in the - list is a valid argument for the `-s' option to the `shopt' - builtin command (*note The Shopt Builtin::). The options - appearing in `BASHOPTS' are those reported as `on' by `shopt'. If - this variable is in the environment when Bash starts up, each - shell option in the list will be enabled before reading any - startup files. This variable is readonly. + list is a valid argument for the '-s' option to the 'shopt' builtin + command (*note The Shopt Builtin::). The options appearing in + 'BASHOPTS' are those reported as 'on' by 'shopt'. If this variable + is in the environment when Bash starts up, each shell option in the + list will be enabled before reading any startup files. This + variable is readonly. -`BASHPID' +'BASHPID' Expands to the process ID of the current Bash process. This - differs from `$$' under certain circumstances, such as subshells + differs from '$$' under certain circumstances, such as subshells that do not require Bash to be re-initialized. -`BASH_ALIASES' +'BASH_ALIASES' An associative array variable whose members correspond to the - internal list of aliases as maintained by the `alias' builtin. + internal list of aliases as maintained by the 'alias' builtin. (*note Bourne Shell Builtins::). Elements added to this array - appear in the alias list; unsetting array elements cause aliases - to be removed from the alias list. + appear in the alias list; however, unsetting array elements + currently does not cause aliases to be removed from the alias list. + If 'BASH_ALIASES' is unset, it loses its special properties, even + if it is subsequently reset. -`BASH_ARGC' +'BASH_ARGC' An array variable whose values are the number of parameters in each frame of the current bash execution call stack. The number of parameters to the current subroutine (shell function or script - executed with `.' or `source') is at the top of the stack. When a + executed with '.' or 'source') is at the top of the stack. When a subroutine is executed, the number of parameters passed is pushed - onto `BASH_ARGC'. The shell sets `BASH_ARGC' only when in - extended debugging mode (see *note The Shopt Builtin:: for a - description of the `extdebug' option to the `shopt' builtin). + onto 'BASH_ARGC'. The shell sets 'BASH_ARGC' only when in extended + debugging mode (see *note The Shopt Builtin:: for a description of + the 'extdebug' option to the 'shopt' builtin). -`BASH_ARGV' +'BASH_ARGV' An array variable containing all of the parameters in the current bash execution call stack. The final parameter of the last subroutine call is at the top of the stack; the first parameter of the initial call is at the bottom. When a subroutine is executed, - the parameters supplied are pushed onto `BASH_ARGV'. The shell - sets `BASH_ARGV' only when in extended debugging mode (see *note - The Shopt Builtin:: for a description of the `extdebug' option to - the `shopt' builtin). + the parameters supplied are pushed onto 'BASH_ARGV'. The shell + sets 'BASH_ARGV' only when in extended debugging mode (see *note + The Shopt Builtin:: for a description of the 'extdebug' option to + the 'shopt' builtin). -`BASH_CMDS' +'BASH_CMDS' An associative array variable whose members correspond to the - internal hash table of commands as maintained by the `hash' builtin + internal hash table of commands as maintained by the 'hash' builtin (*note Bourne Shell Builtins::). Elements added to this array - appear in the hash table; unsetting array elements cause commands - to be removed from the hash table. + appear in the hash table; however, unsetting array elements + currently does not cause command names to be removed from the hash + table. If 'BASH_CMDS' is unset, it loses its special properties, + even if it is subsequently reset. -`BASH_COMMAND' +'BASH_COMMAND' The command currently being executed or about to be executed, - unless the shell is executing a command as the result of a trap, - in which case it is the command executing at the time of the trap. + unless the shell is executing a command as the result of a trap, in + which case it is the command executing at the time of the trap. -`BASH_COMPAT' +'BASH_COMPAT' The value is used to set the shell's compatibility level. *Note The Shopt Builtin::, for a description of the various compatibility - levels and their effects. The value may be a decimal number - (e.g., 4.2) or an integer (e.g., 42) corresponding to the desired - compatibility level. If `BASH_COMPAT' is unset or set to the - empty string, the compatibility level is set to the default for - the current version. If `BASH_COMPAT' is set to a value that is - not one of the valid compatibility levels, the shell prints an - error message and sets the compatibility level to the default for - the current version. The valid compatibility levels correspond to - the compatibility options accepted by the `shopt' builtin - described above (for example, COMPAT42 means that 4.2 and 42 are - valid values). The current version is also a valid value. + levels and their effects. The value may be a decimal number (e.g., + 4.2) or an integer (e.g., 42) corresponding to the desired + compatibility level. If 'BASH_COMPAT' is unset or set to the empty + string, the compatibility level is set to the default for the + current version. If 'BASH_COMPAT' is set to a value that is not + one of the valid compatibility levels, the shell prints an error + message and sets the compatibility level to the default for the + current version. The valid compatibility levels correspond to the + compatibility options accepted by the 'shopt' builtin described + above (for example, COMPAT42 means that 4.2 and 42 are valid + values). The current version is also a valid value. -`BASH_ENV' +'BASH_ENV' If this variable is set when Bash is invoked to execute a shell script, its value is expanded and used as the name of a startup file to read before executing the script. *Note Bash Startup Files::. -`BASH_EXECUTION_STRING' - The command argument to the `-c' invocation option. +'BASH_EXECUTION_STRING' + The command argument to the '-c' invocation option. -`BASH_LINENO' +'BASH_LINENO' An array variable whose members are the line numbers in source files where each corresponding member of FUNCNAME was invoked. - `${BASH_LINENO[$i]}' is the line number in the source file - (`${BASH_SOURCE[$i+1]}') where `${FUNCNAME[$i]}' was called (or - `${BASH_LINENO[$i-1]}' if referenced within another shell - function). Use `LINENO' to obtain the current line number. + '${BASH_LINENO[$i]}' is the line number in the source file + ('${BASH_SOURCE[$i+1]}') where '${FUNCNAME[$i]}' was called (or + '${BASH_LINENO[$i-1]}' if referenced within another shell + function). Use 'LINENO' to obtain the current line number. -`BASH_REMATCH' - An array variable whose members are assigned by the `=~' binary - operator to the `[[' conditional command (*note Conditional +'BASH_LOADABLES_PATH' + A colon-separated list of directories in which the shell looks for + dynamically loadable builtins specified by the 'enable' command. + +'BASH_REMATCH' + An array variable whose members are assigned by the '=~' binary + operator to the '[[' conditional command (*note Conditional Constructs::). The element with index 0 is the portion of the string matching the entire regular expression. The element with - index N is the portion of the string matching the Nth - parenthesized subexpression. This variable is read-only. + index N is the portion of the string matching the Nth parenthesized + subexpression. This variable is read-only. -`BASH_SOURCE' +'BASH_SOURCE' An array variable whose members are the source filenames where the - corresponding shell function names in the `FUNCNAME' array - variable are defined. The shell function `${FUNCNAME[$i]}' is - defined in the file `${BASH_SOURCE[$i]}' and called from - `${BASH_SOURCE[$i+1]}' + corresponding shell function names in the 'FUNCNAME' array variable + are defined. The shell function '${FUNCNAME[$i]}' is defined in + the file '${BASH_SOURCE[$i]}' and called from + '${BASH_SOURCE[$i+1]}' -`BASH_SUBSHELL' +'BASH_SUBSHELL' Incremented by one within each subshell or subshell environment when the shell begins executing in that environment. The initial value is 0. -`BASH_VERSINFO' +'BASH_VERSINFO' A readonly array variable (*note Arrays::) whose members hold - version information for this instance of Bash. The values - assigned to the array members are as follows: + version information for this instance of Bash. The values assigned + to the array members are as follows: - `BASH_VERSINFO[0]' + 'BASH_VERSINFO[0]' The major version number (the RELEASE). - `BASH_VERSINFO[1]' + 'BASH_VERSINFO[1]' The minor version number (the VERSION). - `BASH_VERSINFO[2]' + 'BASH_VERSINFO[2]' The patch level. - `BASH_VERSINFO[3]' + 'BASH_VERSINFO[3]' The build version. - `BASH_VERSINFO[4]' + 'BASH_VERSINFO[4]' The release status (e.g., BETA1). - `BASH_VERSINFO[5]' - The value of `MACHTYPE'. + 'BASH_VERSINFO[5]' + The value of 'MACHTYPE'. -`BASH_VERSION' +'BASH_VERSION' The version number of the current instance of Bash. -`BASH_XTRACEFD' +'BASH_XTRACEFD' If set to an integer corresponding to a valid file descriptor, Bash - will write the trace output generated when `set -x' is enabled to + will write the trace output generated when 'set -x' is enabled to that file descriptor. This allows tracing output to be separated from diagnostic and error messages. The file descriptor is closed - when `BASH_XTRACEFD' is unset or assigned a new value. Unsetting - `BASH_XTRACEFD' or assigning it the empty string causes the trace + when 'BASH_XTRACEFD' is unset or assigned a new value. Unsetting + 'BASH_XTRACEFD' or assigning it the empty string causes the trace output to be sent to the standard error. Note that setting - `BASH_XTRACEFD' to 2 (the standard error file descriptor) and then + 'BASH_XTRACEFD' to 2 (the standard error file descriptor) and then unsetting it will result in the standard error being closed. -`CHILD_MAX' +'CHILD_MAX' Set the number of exited child status values for the shell to remember. Bash will not allow this value to be decreased below a POSIX-mandated minimum, and there is a maximum value (currently 8192) that this may not exceed. The minimum value is system-dependent. -`COLUMNS' - Used by the `select' command to determine the terminal width when - printing selection lists. Automatically set if the `checkwinsize' - option is enabled (*note The Shopt Builtin::), or in an - interactive shell upon receipt of a `SIGWINCH'. +'COLUMNS' + Used by the 'select' command to determine the terminal width when + printing selection lists. Automatically set if the 'checkwinsize' + option is enabled (*note The Shopt Builtin::), or in an interactive + shell upon receipt of a 'SIGWINCH'. -`COMP_CWORD' - An index into `${COMP_WORDS}' of the word containing the current +'COMP_CWORD' + An index into '${COMP_WORDS}' of the word containing the current cursor position. This variable is available only in shell functions invoked by the programmable completion facilities (*note Programmable Completion::). -`COMP_LINE' - The current command line. This variable is available only in - shell functions and external commands invoked by the programmable +'COMP_LINE' + The current command line. This variable is available only in shell + functions and external commands invoked by the programmable completion facilities (*note Programmable Completion::). -`COMP_POINT' +'COMP_POINT' The index of the current cursor position relative to the beginning of the current command. If the current cursor position is at the end of the current command, the value of this variable is equal to - `${#COMP_LINE}'. This variable is available only in shell + '${#COMP_LINE}'. This variable is available only in shell functions and external commands invoked by the programmable completion facilities (*note Programmable Completion::). -`COMP_TYPE' +'COMP_TYPE' Set to an integer value corresponding to the type of completion attempted that caused a completion function to be called: TAB, for - normal completion, `?', for listing completions after successive - tabs, `!', for listing alternatives on partial word completion, - `@', to list completions if the word is not unmodified, or `%', - for menu completion. This variable is available only in shell + normal completion, '?', for listing completions after successive + tabs, '!', for listing alternatives on partial word completion, + '@', to list completions if the word is not unmodified, or '%', for + menu completion. This variable is available only in shell functions and external commands invoked by the programmable completion facilities (*note Programmable Completion::). -`COMP_KEY' +'COMP_KEY' The key (or final key of a key sequence) used to invoke the current completion function. -`COMP_WORDBREAKS' +'COMP_WORDBREAKS' The set of characters that the Readline library treats as word - separators when performing word completion. If `COMP_WORDBREAKS' + separators when performing word completion. If 'COMP_WORDBREAKS' is unset, it loses its special properties, even if it is subsequently reset. -`COMP_WORDS' - An array variable consisting of the individual words in the - current command line. The line is split into words as Readline - would split it, using `COMP_WORDBREAKS' as described above. This - variable is available only in shell functions invoked by the - programmable completion facilities (*note Programmable - Completion::). +'COMP_WORDS' + An array variable consisting of the individual words in the current + command line. The line is split into words as Readline would split + it, using 'COMP_WORDBREAKS' as described above. This variable is + available only in shell functions invoked by the programmable + completion facilities (*note Programmable Completion::). -`COMPREPLY' +'COMPREPLY' An array variable from which Bash reads the possible completions generated by a shell function invoked by the programmable completion facility (*note Programmable Completion::). Each array element contains one possible completion. -`COPROC' +'COPROC' An array variable created to hold the file descriptors for output from and input to an unnamed coprocess (*note Coprocesses::). -`DIRSTACK' +'DIRSTACK' An array variable containing the current contents of the directory stack. Directories appear in the stack in the order they are - displayed by the `dirs' builtin. Assigning to members of this + displayed by the 'dirs' builtin. Assigning to members of this array variable may be used to modify directories already in the - stack, but the `pushd' and `popd' builtins must be used to add and + stack, but the 'pushd' and 'popd' builtins must be used to add and remove directories. Assignment to this variable will not change - the current directory. If `DIRSTACK' is unset, it loses its + the current directory. If 'DIRSTACK' is unset, it loses its special properties, even if it is subsequently reset. -`EMACS' +'EMACS' If Bash finds this variable in the environment when the shell - starts with value `t', it assumes that the shell is running in an + starts with value 't', it assumes that the shell is running in an Emacs shell buffer and disables line editing. -`ENV' - Similar to `BASH_ENV'; used when the shell is invoked in POSIX - Mode (*note Bash POSIX Mode::). +'ENV' + Similar to 'BASH_ENV'; used when the shell is invoked in POSIX Mode + (*note Bash POSIX Mode::). -`EUID' +'EUID' The numeric effective user id of the current user. This variable is readonly. -`FCEDIT' - The editor used as a default by the `-e' option to the `fc' - builtin command. +'EXECIGNORE' + A colon-separated list of shell patterns (*note Pattern Matching::) + defining the list of filenames to be ignored by command search. + Files whose full pathnames match one of these patterns are not + considered executable files for the purposes of completion and + command execution. This does not affect the behavior of the '[', + 'test', and '[[' commands. Use this variable to ignore shared + library files that have the executable bit set, but are not + executable files. The pattern matching honors the setting of the + 'extglob' shell option. -`FIGNORE' +'FCEDIT' + The editor used as a default by the '-e' option to the 'fc' builtin + command. + +'FIGNORE' A colon-separated list of suffixes to ignore when performing filename completion. A filename whose suffix matches one of the - entries in `FIGNORE' is excluded from the list of matched - filenames. A sample value is `.o:~' + entries in 'FIGNORE' is excluded from the list of matched + filenames. A sample value is '.o:~' -`FUNCNAME' +'FUNCNAME' An array variable containing the names of all shell functions - currently in the execution call stack. The element with index 0 - is the name of any currently-executing shell function. The - bottom-most element (the one with the highest index) is `"main"'. + currently in the execution call stack. The element with index 0 is + the name of any currently-executing shell function. The + bottom-most element (the one with the highest index) is '"main"'. This variable exists only when a shell function is executing. - Assignments to `FUNCNAME' have no effect and return an error - status. If `FUNCNAME' is unset, it loses its special properties, - even if it is subsequently reset. + Assignments to 'FUNCNAME' have no effect. If 'FUNCNAME' is unset, + it loses its special properties, even if it is subsequently reset. - This variable can be used with `BASH_LINENO' and `BASH_SOURCE'. - Each element of `FUNCNAME' has corresponding elements in - `BASH_LINENO' and `BASH_SOURCE' to describe the call stack. For - instance, `${FUNCNAME[$i]}' was called from the file - `${BASH_SOURCE[$i+1]}' at line number `${BASH_LINENO[$i]}'. The - `caller' builtin displays the current call stack using this + This variable can be used with 'BASH_LINENO' and 'BASH_SOURCE'. + Each element of 'FUNCNAME' has corresponding elements in + 'BASH_LINENO' and 'BASH_SOURCE' to describe the call stack. For + instance, '${FUNCNAME[$i]}' was called from the file + '${BASH_SOURCE[$i+1]}' at line number '${BASH_LINENO[$i]}'. The + 'caller' builtin displays the current call stack using this information. -`FUNCNEST' +'FUNCNEST' If set to a numeric value greater than 0, defines a maximum function nesting level. Function invocations that exceed this nesting level will cause the current command to abort. -`GLOBIGNORE' +'GLOBIGNORE' A colon-separated list of patterns defining the set of filenames to be ignored by filename expansion. If a filename matched by a filename expansion pattern also matches one of the patterns in - `GLOBIGNORE', it is removed from the list of matches. + 'GLOBIGNORE', it is removed from the list of matches. The pattern + matching honors the setting of the 'extglob' shell option. -`GROUPS' +'GROUPS' An array variable containing the list of groups of which the - current user is a member. Assignments to `GROUPS' have no effect - and return an error status. If `GROUPS' is unset, it loses its - special properties, even if it is subsequently reset. + current user is a member. Assignments to 'GROUPS' have no effect. + If 'GROUPS' is unset, it loses its special properties, even if it + is subsequently reset. -`histchars' +'histchars' Up to three characters which control history expansion, quick substitution, and tokenization (*note History Interaction::). The first character is the HISTORY EXPANSION character, that is, the character which signifies the start of a history expansion, - normally `!'. The second character is the character which - signifies `quick substitution' when seen as the first character on - a line, normally `^'. The optional third character is the + normally '!'. The second character is the character which + signifies 'quick substitution' when seen as the first character on + a line, normally '^'. The optional third character is the character which indicates that the remainder of the line is a - comment when found as the first character of a word, usually `#'. + comment when found as the first character of a word, usually '#'. The history comment character causes history substitution to be skipped for the remaining words on the line. It does not - necessarily cause the shell parser to treat the rest of the line - as a comment. + necessarily cause the shell parser to treat the rest of the line as + a comment. -`HISTCMD' +'HISTCMD' The history number, or index in the history list, of the current - command. If `HISTCMD' is unset, it loses its special properties, + command. If 'HISTCMD' is unset, it loses its special properties, even if it is subsequently reset. -`HISTCONTROL' - A colon-separated list of values controlling how commands are - saved on the history list. If the list of values includes - `ignorespace', lines which begin with a space character are not - saved in the history list. A value of `ignoredups' causes lines - which match the previous history entry to not be saved. A value - of `ignoreboth' is shorthand for `ignorespace' and `ignoredups'. - A value of `erasedups' causes all previous lines matching the - current line to be removed from the history list before that line - is saved. Any value not in the above list is ignored. If - `HISTCONTROL' is unset, or does not include a valid value, all - lines read by the shell parser are saved on the history list, - subject to the value of `HISTIGNORE'. The second and subsequent - lines of a multi-line compound command are not tested, and are - added to the history regardless of the value of `HISTCONTROL'. +'HISTCONTROL' + A colon-separated list of values controlling how commands are saved + on the history list. If the list of values includes 'ignorespace', + lines which begin with a space character are not saved in the + history list. A value of 'ignoredups' causes lines which match the + previous history entry to not be saved. A value of 'ignoreboth' is + shorthand for 'ignorespace' and 'ignoredups'. A value of + 'erasedups' causes all previous lines matching the current line to + be removed from the history list before that line is saved. Any + value not in the above list is ignored. If 'HISTCONTROL' is unset, + or does not include a valid value, all lines read by the shell + parser are saved on the history list, subject to the value of + 'HISTIGNORE'. The second and subsequent lines of a multi-line + compound command are not tested, and are added to the history + regardless of the value of 'HISTCONTROL'. -`HISTFILE' +'HISTFILE' The name of the file to which the command history is saved. The - default value is `~/.bash_history'. + default value is '~/.bash_history'. -`HISTFILESIZE' +'HISTFILESIZE' The maximum number of lines contained in the history file. When this variable is assigned a value, the history file is truncated, if necessary, to contain no more than that number of lines by - removing the oldest entries. The history file is also truncated - to this size after writing it when a shell exits. If the value is - 0, the history file is truncated to zero size. Non-numeric values - and numeric values less than zero inhibit truncation. The shell - sets the default value to the value of `HISTSIZE' after reading - any startup files. + removing the oldest entries. The history file is also truncated to + this size after writing it when a shell exits. If the value is 0, + the history file is truncated to zero size. Non-numeric values and + numeric values less than zero inhibit truncation. The shell sets + the default value to the value of 'HISTSIZE' after reading any + startup files. -`HISTIGNORE' +'HISTIGNORE' A colon-separated list of patterns used to decide which command lines should be saved on the history list. Each pattern is anchored at the beginning of the line and must match the complete - line (no implicit `*' is appended). Each pattern is tested - against the line after the checks specified by `HISTCONTROL' are - applied. In addition to the normal shell pattern matching - characters, `&' matches the previous history line. `&' may be - escaped using a backslash; the backslash is removed before - attempting a match. The second and subsequent lines of a - multi-line compound command are not tested, and are added to the - history regardless of the value of `HISTIGNORE'. + line (no implicit '*' is appended). Each pattern is tested against + the line after the checks specified by 'HISTCONTROL' are applied. + In addition to the normal shell pattern matching characters, '&' + matches the previous history line. '&' may be escaped using a + backslash; the backslash is removed before attempting a match. The + second and subsequent lines of a multi-line compound command are + not tested, and are added to the history regardless of the value of + 'HISTIGNORE'. The pattern matching honors the setting of the + 'extglob' shell option. - `HISTIGNORE' subsumes the function of `HISTCONTROL'. A pattern of - `&' is identical to `ignoredups', and a pattern of `[ ]*' is - identical to `ignorespace'. Combining these two patterns, + 'HISTIGNORE' subsumes the function of 'HISTCONTROL'. A pattern of + '&' is identical to 'ignoredups', and a pattern of '[ ]*' is + identical to 'ignorespace'. Combining these two patterns, separating them with a colon, provides the functionality of - `ignoreboth'. + 'ignoreboth'. -`HISTSIZE' - The maximum number of commands to remember on the history list. - If the value is 0, commands are not saved in the history list. +'HISTSIZE' + The maximum number of commands to remember on the history list. If + the value is 0, commands are not saved in the history list. Numeric values less than zero result in every command being saved on the history list (there is no limit). The shell sets the default value to 500 after reading any startup files. -`HISTTIMEFORMAT' - If this variable is set and not null, its value is used as a - format string for STRFTIME to print the time stamp associated with - each history entry displayed by the `history' builtin. If this - variable is set, time stamps are written to the history file so - they may be preserved across shell sessions. This uses the - history comment character to distinguish timestamps from other - history lines. +'HISTTIMEFORMAT' + If this variable is set and not null, its value is used as a format + string for STRFTIME to print the time stamp associated with each + history entry displayed by the 'history' builtin. If this variable + is set, time stamps are written to the history file so they may be + preserved across shell sessions. This uses the history comment + character to distinguish timestamps from other history lines. -`HOSTFILE' - Contains the name of a file in the same format as `/etc/hosts' that +'HOSTFILE' + Contains the name of a file in the same format as '/etc/hosts' that should be read when the shell needs to complete a hostname. The list of possible hostname completions may be changed while the shell is running; the next time hostname completion is attempted after the value is changed, Bash adds the contents of the new file - to the existing list. If `HOSTFILE' is set, but has no value, or - does not name a readable file, Bash attempts to read `/etc/hosts' + to the existing list. If 'HOSTFILE' is set, but has no value, or + does not name a readable file, Bash attempts to read '/etc/hosts' to obtain the list of possible hostname completions. When - `HOSTFILE' is unset, the hostname list is cleared. + 'HOSTFILE' is unset, the hostname list is cleared. -`HOSTNAME' +'HOSTNAME' The name of the current host. -`HOSTTYPE' +'HOSTTYPE' A string describing the machine Bash is running on. -`IGNOREEOF' - Controls the action of the shell on receipt of an `EOF' character +'IGNOREEOF' + Controls the action of the shell on receipt of an 'EOF' character as the sole input. If set, the value denotes the number of - consecutive `EOF' characters that can be read as the first + consecutive 'EOF' characters that can be read as the first character on an input line before the shell will exit. If the - variable exists but does not have a numeric value (or has no - value) then the default is 10. If the variable does not exist, - then `EOF' signifies the end of input to the shell. This is only - in effect for interactive shells. + variable exists but does not have a numeric value (or has no value) + then the default is 10. If the variable does not exist, then 'EOF' + signifies the end of input to the shell. This is only in effect + for interactive shells. -`INPUTRC' +'INPUTRC' The name of the Readline initialization file, overriding the - default of `~/.inputrc'. + default of '~/.inputrc'. -`LANG' +'LANG' Used to determine the locale category for any category not - specifically selected with a variable starting with `LC_'. + specifically selected with a variable starting with 'LC_'. -`LC_ALL' - This variable overrides the value of `LANG' and any other `LC_' +'LC_ALL' + This variable overrides the value of 'LANG' and any other 'LC_' variable specifying a locale category. -`LC_COLLATE' +'LC_COLLATE' This variable determines the collation order used when sorting the - results of filename expansion, and determines the behavior of - range expressions, equivalence classes, and collating sequences - within filename expansion and pattern matching (*note Filename + results of filename expansion, and determines the behavior of range + expressions, equivalence classes, and collating sequences within + filename expansion and pattern matching (*note Filename Expansion::). -`LC_CTYPE' +'LC_CTYPE' This variable determines the interpretation of characters and the behavior of character classes within filename expansion and pattern matching (*note Filename Expansion::). -`LC_MESSAGES' +'LC_MESSAGES' This variable determines the locale used to translate double-quoted - strings preceded by a `$' (*note Locale Translation::). + strings preceded by a '$' (*note Locale Translation::). -`LC_NUMERIC' +'LC_NUMERIC' This variable determines the locale category used for number formatting. -`LINENO' +'LC_TIME' + This variable determines the locale category used for data and time + formatting. + +'LINENO' The line number in the script or shell function currently executing. -`LINES' - Used by the `select' command to determine the column length for - printing selection lists. Automatically set if the `checkwinsize' - option is enabled (*note The Shopt Builtin::), or in an - interactive shell upon receipt of a `SIGWINCH'. +'LINES' + Used by the 'select' command to determine the column length for + printing selection lists. Automatically set if the 'checkwinsize' + option is enabled (*note The Shopt Builtin::), or in an interactive + shell upon receipt of a 'SIGWINCH'. -`MACHTYPE' +'MACHTYPE' A string that fully describes the system type on which Bash is executing, in the standard GNU CPU-COMPANY-SYSTEM format. -`MAILCHECK' +'MAILCHECK' How often (in seconds) that the shell should check for mail in the - files specified in the `MAILPATH' or `MAIL' variables. The - default is 60 seconds. When it is time to check for mail, the - shell does so before displaying the primary prompt. If this - variable is unset, or set to a value that is not a number greater - than or equal to zero, the shell disables mail checking. + files specified in the 'MAILPATH' or 'MAIL' variables. The default + is 60 seconds. When it is time to check for mail, the shell does + so before displaying the primary prompt. If this variable is + unset, or set to a value that is not a number greater than or equal + to zero, the shell disables mail checking. -`MAPFILE' - An array variable created to hold the text read by the `mapfile' +'MAPFILE' + An array variable created to hold the text read by the 'mapfile' builtin when no variable name is supplied. -`OLDPWD' - The previous working directory as set by the `cd' builtin. +'OLDPWD' + The previous working directory as set by the 'cd' builtin. -`OPTERR' +'OPTERR' If set to the value 1, Bash displays error messages generated by - the `getopts' builtin command. + the 'getopts' builtin command. -`OSTYPE' +'OSTYPE' A string describing the operating system Bash is running on. -`PIPESTATUS' - An array variable (*note Arrays::) containing a list of exit - status values from the processes in the most-recently-executed - foreground pipeline (which may contain only a single command). +'PIPESTATUS' + An array variable (*note Arrays::) containing a list of exit status + values from the processes in the most-recently-executed foreground + pipeline (which may contain only a single command). -`POSIXLY_CORRECT' +'POSIXLY_CORRECT' If this variable is in the environment when Bash starts, the shell enters POSIX mode (*note Bash POSIX Mode::) before reading the - startup files, as if the `--posix' invocation option had been + startup files, as if the '--posix' invocation option had been supplied. If it is set while the shell is running, Bash enables POSIX mode, as if the command - `set -o posix' + set -o posix had been executed. -`PPID' +'PPID' The process ID of the shell's parent process. This variable is readonly. -`PROMPT_COMMAND' - If set, the value is interpreted as a command to execute before - the printing of each primary prompt (`$PS1'). +'PROMPT_COMMAND' + If set, the value is interpreted as a command to execute before the + printing of each primary prompt ('$PS1'). -`PROMPT_DIRTRIM' +'PROMPT_DIRTRIM' If set to a number greater than zero, the value is used as the number of trailing directory components to retain when expanding - the `\w' and `\W' prompt string escapes (*note Controlling the + the '\w' and '\W' prompt string escapes (*note Controlling the Prompt::). Characters removed are replaced with an ellipsis. -`PS3' - The value of this variable is used as the prompt for the `select' - command. If this variable is not set, the `select' command - prompts with `#? ' +'PS0' + The value of this parameter is expanded like PS1 and displayed by + interactive shells after reading a command and before the command + is executed. -`PS4' +'PS3' + The value of this variable is used as the prompt for the 'select' + command. If this variable is not set, the 'select' command prompts + with '#? ' + +'PS4' The value is the prompt printed before the command line is echoed - when the `-x' option is set (*note The Set Builtin::). The first - character of `PS4' is replicated multiple times, as necessary, to - indicate multiple levels of indirection. The default is `+ '. + when the '-x' option is set (*note The Set Builtin::). The first + character of 'PS4' is replicated multiple times, as necessary, to + indicate multiple levels of indirection. The default is '+ '. -`PWD' - The current working directory as set by the `cd' builtin. +'PWD' + The current working directory as set by the 'cd' builtin. -`RANDOM' +'RANDOM' Each time this parameter is referenced, a random integer between 0 and 32767 is generated. Assigning a value to this variable seeds the random number generator. -`READLINE_LINE' - The contents of the Readline line buffer, for use with `bind -x' +'READLINE_LINE' + The contents of the Readline line buffer, for use with 'bind -x' (*note Bash Builtins::). -`READLINE_POINT' +'READLINE_POINT' The position of the insertion point in the Readline line buffer, - for use with `bind -x' (*note Bash Builtins::). + for use with 'bind -x' (*note Bash Builtins::). -`REPLY' - The default variable for the `read' builtin. +'REPLY' + The default variable for the 'read' builtin. -`SECONDS' +'SECONDS' This variable expands to the number of seconds since the shell was - started. Assignment to this variable resets the count to the - value assigned, and the expanded value becomes the value assigned - plus the number of seconds since the assignment. + started. Assignment to this variable resets the count to the value + assigned, and the expanded value becomes the value assigned plus + the number of seconds since the assignment. -`SHELL' +'SHELL' The full pathname to the shell is kept in this environment variable. If it is not set when the shell starts, Bash assigns to it the full pathname of the current user's login shell. -`SHELLOPTS' +'SHELLOPTS' A colon-separated list of enabled shell options. Each word in the - list is a valid argument for the `-o' option to the `set' builtin + list is a valid argument for the '-o' option to the 'set' builtin command (*note The Set Builtin::). The options appearing in - `SHELLOPTS' are those reported as `on' by `set -o'. If this + 'SHELLOPTS' are those reported as 'on' by 'set -o'. If this variable is in the environment when Bash starts up, each shell option in the list will be enabled before reading any startup files. This variable is readonly. -`SHLVL' +'SHLVL' Incremented by one each time a new instance of Bash is started. This is intended to be a count of how deeply your Bash shells are nested. -`TIMEFORMAT' +'TIMEFORMAT' The value of this parameter is used as a format string specifying - how the timing information for pipelines prefixed with the `time' - reserved word should be displayed. The `%' character introduces an + how the timing information for pipelines prefixed with the 'time' + reserved word should be displayed. The '%' character introduces an escape sequence that is expanded to a time value or other information. The escape sequences and their meanings are as follows; the braces denote optional portions. - `%%' - A literal `%'. + '%%' + A literal '%'. - `%[P][l]R' + '%[P][l]R' The elapsed time in seconds. - `%[P][l]U' + '%[P][l]U' The number of CPU seconds spent in user mode. - `%[P][l]S' + '%[P][l]S' The number of CPU seconds spent in system mode. - `%P' + '%P' The CPU percentage, computed as (%U + %S) / %R. The optional P is a digit specifying the precision, the number of fractional digits after a decimal point. A value of 0 causes no - decimal point or fraction to be output. At most three places - after the decimal point may be specified; values of P greater than - 3 are changed to 3. If P is not specified, the value 3 is used. + decimal point or fraction to be output. At most three places after + the decimal point may be specified; values of P greater than 3 are + changed to 3. If P is not specified, the value 3 is used. - The optional `l' specifies a longer format, including minutes, of + The optional 'l' specifies a longer format, including minutes, of the form MMmSS.FFs. The value of P determines whether or not the fraction is included. If this variable is not set, Bash acts as if it had the value - `$'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'' + $'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' If the value is null, no timing information is displayed. A trailing newline is added when the format string is displayed. -`TMOUT' - If set to a value greater than zero, `TMOUT' is treated as the - default timeout for the `read' builtin (*note Bash Builtins::). - The `select' command (*note Conditional Constructs::) terminates - if input does not arrive after `TMOUT' seconds when input is coming +'TMOUT' + If set to a value greater than zero, 'TMOUT' is treated as the + default timeout for the 'read' builtin (*note Bash Builtins::). + The 'select' command (*note Conditional Constructs::) terminates if + input does not arrive after 'TMOUT' seconds when input is coming from a terminal. In an interactive shell, the value is interpreted as the number of @@ -5251,15 +5297,14 @@ Variables::). prompt. Bash terminates after waiting for that number of seconds if a complete line of input does not arrive. -`TMPDIR' +'TMPDIR' If set, Bash uses its value as the name of a directory in which Bash creates temporary files for the shell's use. -`UID' +'UID' The numeric real user id of the current user. This variable is readonly. -  File: bash.info, Node: Bash Features, Next: Job Control, Prev: Shell Variables, Up: Top @@ -5275,7 +5320,7 @@ This chapter describes features unique to Bash. * Bash Startup Files:: When and how Bash executes scripts. * Interactive Shells:: What an interactive shell is. * Bash Conditional Expressions:: Primitives used in composing expressions for - the `test' builtin. + the 'test' builtin. * Shell Arithmetic:: Arithmetic on shell variables. * Aliases:: Substituting one command for another. * Arrays:: Array Variables. @@ -5295,134 +5340,134 @@ File: bash.info, Node: Invoking Bash, Next: Bash Startup Files, Up: Bash Feat bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] -c STRING [ARGUMENT ...] bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o OPTION] [-O SHOPT_OPTION] [ARGUMENT ...] - All of the single-character options used with the `set' builtin + All of the single-character options used with the 'set' builtin (*note The Set Builtin::) can be used as options when the shell is invoked. In addition, there are several multi-character options that you can use. These options must appear on the command line before the single-character options to be recognized. -`--debugger' +'--debugger' Arrange for the debugger profile to be executed before the shell starts. Turns on extended debugging mode (see *note The Shopt - Builtin:: for a description of the `extdebug' option to the `shopt' + Builtin:: for a description of the 'extdebug' option to the 'shopt' builtin). -`--dump-po-strings' - A list of all double-quoted strings preceded by `$' is printed on - the standard output in the GNU `gettext' PO (portable object) file - format. Equivalent to `-D' except for the output format. +'--dump-po-strings' + A list of all double-quoted strings preceded by '$' is printed on + the standard output in the GNU 'gettext' PO (portable object) file + format. Equivalent to '-D' except for the output format. -`--dump-strings' - Equivalent to `-D'. +'--dump-strings' + Equivalent to '-D'. -`--help' +'--help' Display a usage message on standard output and exit successfully. -`--init-file FILENAME' -`--rcfile FILENAME' - Execute commands from FILENAME (instead of `~/.bashrc') in an +'--init-file FILENAME' +'--rcfile FILENAME' + Execute commands from FILENAME (instead of '~/.bashrc') in an interactive shell. -`--login' - Equivalent to `-l'. +'--login' + Equivalent to '-l'. -`--noediting' +'--noediting' Do not use the GNU Readline library (*note Command Line Editing::) - to read command lines when the shell is interactive. + to read command lines when the shell is interactive. -`--noprofile' - Don't load the system-wide startup file `/etc/profile' or any of - the personal initialization files `~/.bash_profile', - `~/.bash_login', or `~/.profile' when Bash is invoked as a login +'--noprofile' + Don't load the system-wide startup file '/etc/profile' or any of + the personal initialization files '~/.bash_profile', + '~/.bash_login', or '~/.profile' when Bash is invoked as a login shell. -`--norc' - Don't read the `~/.bashrc' initialization file in an interactive - shell. This is on by default if the shell is invoked as `sh'. +'--norc' + Don't read the '~/.bashrc' initialization file in an interactive + shell. This is on by default if the shell is invoked as 'sh'. -`--posix' +'--posix' Change the behavior of Bash where the default operation differs - from the POSIX standard to match the standard. This is intended - to make Bash behave as a strict superset of that standard. *Note - Bash POSIX Mode::, for a description of the Bash POSIX mode. + from the POSIX standard to match the standard. This is intended to + make Bash behave as a strict superset of that standard. *Note Bash + POSIX Mode::, for a description of the Bash POSIX mode. -`--restricted' +'--restricted' Make the shell a restricted shell (*note The Restricted Shell::). -`--verbose' - Equivalent to `-v'. Print shell input lines as they're read. +'--verbose' + Equivalent to '-v'. Print shell input lines as they're read. -`--version' +'--version' Show version information for this instance of Bash on the standard output and exit successfully. There are several single-character options that may be supplied at -invocation which are not available with the `set' builtin. +invocation which are not available with the 'set' builtin. -`-c' +'-c' Read and execute commands from the first non-option argument COMMAND_STRING, then exit. If there are arguments after the - COMMAND_STRING, the first argument is assigned to `$0' and any - remaining arguments are assigned to the positional parameters. - The assignment to `$0' sets the name of the shell, which is used - in warning and error messages. + COMMAND_STRING, the first argument is assigned to '$0' and any + remaining arguments are assigned to the positional parameters. The + assignment to '$0' sets the name of the shell, which is used in + warning and error messages. -`-i' +'-i' Force the shell to run interactively. Interactive shells are described in *note Interactive Shells::. -`-l' +'-l' Make this shell act as if it had been directly invoked by login. When the shell is interactive, this is equivalent to starting a - login shell with `exec -l bash'. When the shell is not - interactive, the login shell startup files will be executed. - `exec bash -l' or `exec bash --login' will replace the current - shell with a Bash login shell. *Note Bash Startup Files::, for a - description of the special behavior of a login shell. + login shell with 'exec -l bash'. When the shell is not + interactive, the login shell startup files will be executed. 'exec + bash -l' or 'exec bash --login' will replace the current shell with + a Bash login shell. *Note Bash Startup Files::, for a description + of the special behavior of a login shell. -`-r' +'-r' Make the shell a restricted shell (*note The Restricted Shell::). -`-s' +'-s' If this option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be set when invoking an interactive shell. -`-D' - A list of all double-quoted strings preceded by `$' is printed on +'-D' + A list of all double-quoted strings preceded by '$' is printed on the standard output. These are the strings that are subject to - language translation when the current locale is not `C' or `POSIX' - (*note Locale Translation::). This implies the `-n' option; no + language translation when the current locale is not 'C' or 'POSIX' + (*note Locale Translation::). This implies the '-n' option; no commands will be executed. -`[-+]O [SHOPT_OPTION]' - SHOPT_OPTION is one of the shell options accepted by the `shopt' +'[-+]O [SHOPT_OPTION]' + SHOPT_OPTION is one of the shell options accepted by the 'shopt' builtin (*note The Shopt Builtin::). If SHOPT_OPTION is present, - `-O' sets the value of that option; `+O' unsets it. If + '-O' sets the value of that option; '+O' unsets it. If SHOPT_OPTION is not supplied, the names and values of the shell - options accepted by `shopt' are printed on the standard output. - If the invocation option is `+O', the output is displayed in a - format that may be reused as input. + options accepted by 'shopt' are printed on the standard output. If + the invocation option is '+O', the output is displayed in a format + that may be reused as input. -`--' - A `--' signals the end of options and disables further option - processing. Any arguments after the `--' are treated as filenames +'--' + A '--' signals the end of options and disables further option + processing. Any arguments after the '--' are treated as filenames and arguments. - A _login_ shell is one whose first character of argument zero is -`-', or one invoked with the `--login' option. + A _login_ shell is one whose first character of argument zero is '-', +or one invoked with the '--login' option. An _interactive_ shell is one started without non-option arguments, -unless `-s' is specified, without specifying the `-c' option, and whose +unless '-s' is specified, without specifying the '-c' option, and whose input and output are both connected to terminals (as determined by -`isatty(3)'), or one started with the `-i' option. *Note Interactive +'isatty(3)'), or one started with the '-i' option. *Note Interactive Shells::, for more information. - If arguments remain after option processing, and neither the `-c' -nor the `-s' option has been supplied, the first argument is assumed to -be the name of a file containing shell commands (*note Shell Scripts::). -When Bash is invoked in this fashion, `$0' is set to the name of the + If arguments remain after option processing, and neither the '-c' nor +the '-s' option has been supplied, the first argument is assumed to be +the name of a file containing shell commands (*note Shell Scripts::). +When Bash is invoked in this fashion, '$0' is set to the name of the file, and the positional parameters are set to the remaining arguments. Bash reads and executes commands from this file, then exits. Bash's exit status is the exit status of the last command executed in the @@ -5441,78 +5486,79 @@ Tilde Expansion::). Interactive shells are described in *note Interactive Shells::. -Invoked as an interactive login shell, or with `--login' +Invoked as an interactive login shell, or with '--login' ........................................................ When Bash is invoked as an interactive login shell, or as a -non-interactive shell with the `--login' option, it first reads and -executes commands from the file `/etc/profile', if that file exists. -After reading that file, it looks for `~/.bash_profile', -`~/.bash_login', and `~/.profile', in that order, and reads and -executes commands from the first one that exists and is readable. The -`--noprofile' option may be used when the shell is started to inhibit +non-interactive shell with the '--login' option, it first reads and +executes commands from the file '/etc/profile', if that file exists. +After reading that file, it looks for '~/.bash_profile', +'~/.bash_login', and '~/.profile', in that order, and reads and executes +commands from the first one that exists and is readable. The +'--noprofile' option may be used when the shell is started to inhibit this behavior. - When a login shell exits, Bash reads and executes commands from the -file `~/.bash_logout', if it exists. + When an interactive login shell exits, or a non-interactive login +shell executes the 'exit' builtin command, Bash reads and executes +commands from the file '~/.bash_logout', if it exists. Invoked as an interactive non-login shell ......................................... When an interactive shell that is not a login shell is started, Bash -reads and executes commands from `~/.bashrc', if that file exists. -This may be inhibited by using the `--norc' option. The `--rcfile -FILE' option will force Bash to read and execute commands from FILE -instead of `~/.bashrc'. +reads and executes commands from '~/.bashrc', if that file exists. This +may be inhibited by using the '--norc' option. The '--rcfile FILE' +option will force Bash to read and execute commands from FILE instead of +'~/.bashrc'. - So, typically, your `~/.bash_profile' contains the line - `if [ -f ~/.bashrc ]; then . ~/.bashrc; fi' - after (or before) any login-specific initializations. + So, typically, your '~/.bash_profile' contains the line + if [ -f ~/.bashrc ]; then . ~/.bashrc; fi +after (or before) any login-specific initializations. Invoked non-interactively ......................... When Bash is started non-interactively, to run a shell script, for -example, it looks for the variable `BASH_ENV' in the environment, +example, it looks for the variable 'BASH_ENV' in the environment, expands its value if it appears there, and uses the expanded value as the name of a file to read and execute. Bash behaves as if the following command were executed: - `if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi' - but the value of the `PATH' variable is not used to search for the + if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi +but the value of the 'PATH' variable is not used to search for the filename. As noted above, if a non-interactive shell is invoked with the -`--login' option, Bash attempts to read and execute commands from the +'--login' option, Bash attempts to read and execute commands from the login shell startup files. -Invoked with name `sh' +Invoked with name 'sh' ...................... -If Bash is invoked with the name `sh', it tries to mimic the startup -behavior of historical versions of `sh' as closely as possible, while +If Bash is invoked with the name 'sh', it tries to mimic the startup +behavior of historical versions of 'sh' as closely as possible, while conforming to the POSIX standard as well. When invoked as an interactive login shell, or as a non-interactive -shell with the `--login' option, it first attempts to read and execute -commands from `/etc/profile' and `~/.profile', in that order. The -`--noprofile' option may be used to inhibit this behavior. When -invoked as an interactive shell with the name `sh', Bash looks for the -variable `ENV', expands its value if it is defined, and uses the -expanded value as the name of a file to read and execute. Since a -shell invoked as `sh' does not attempt to read and execute commands -from any other startup files, the `--rcfile' option has no effect. A -non-interactive shell invoked with the name `sh' does not attempt to -read any other startup files. +shell with the '--login' option, it first attempts to read and execute +commands from '/etc/profile' and '~/.profile', in that order. The +'--noprofile' option may be used to inhibit this behavior. When invoked +as an interactive shell with the name 'sh', Bash looks for the variable +'ENV', expands its value if it is defined, and uses the expanded value +as the name of a file to read and execute. Since a shell invoked as +'sh' does not attempt to read and execute commands from any other +startup files, the '--rcfile' option has no effect. A non-interactive +shell invoked with the name 'sh' does not attempt to read any other +startup files. - When invoked as `sh', Bash enters POSIX mode after the startup files + When invoked as 'sh', Bash enters POSIX mode after the startup files are read. Invoked in POSIX mode ..................... -When Bash is started in POSIX mode, as with the `--posix' command line +When Bash is started in POSIX mode, as with the '--posix' command line option, it follows the POSIX standard for startup files. In this mode, -interactive shells expand the `ENV' variable and commands are read and +interactive shells expand the 'ENV' variable and commands are read and executed from the file whose name is the expanded value. No other startup files are read. @@ -5521,23 +5567,23 @@ Invoked by remote shell daemon Bash attempts to determine when it is being run with its standard input connected to a network connection, as when executed by the remote shell -daemon, usually `rshd', or the secure shell daemon `sshd'. If Bash +daemon, usually 'rshd', or the secure shell daemon 'sshd'. If Bash determines it is being run in this fashion, it reads and executes -commands from `~/.bashrc', if that file exists and is readable. It -will not do this if invoked as `sh'. The `--norc' option may be used -to inhibit this behavior, and the `--rcfile' option may be used to -force another file to be read, but neither `rshd' nor `sshd' generally -invoke the shell with those options or allow them to be specified. +commands from '~/.bashrc', if that file exists and is readable. It will +not do this if invoked as 'sh'. The '--norc' option may be used to +inhibit this behavior, and the '--rcfile' option may be used to force +another file to be read, but neither 'rshd' nor 'sshd' generally invoke +the shell with those options or allow them to be specified. Invoked with unequal effective and real UID/GIDs ................................................ If Bash is started with the effective user (group) id not equal to the -real user (group) id, and the `-p' option is not supplied, no startup +real user (group) id, and the '-p' option is not supplied, no startup files are read, shell functions are not inherited from the environment, -the `SHELLOPTS', `BASHOPTS', `CDPATH', and `GLOBIGNORE' variables, if +the 'SHELLOPTS', 'BASHOPTS', 'CDPATH', and 'GLOBIGNORE' variables, if they appear in the environment, are ignored, and the effective user id -is set to the real user id. If the `-p' option is supplied at +is set to the real user id. If the '-p' option is supplied at invocation, the startup behavior is the same, but the effective user id is not reset. @@ -5559,15 +5605,15 @@ File: bash.info, Node: What is an Interactive Shell?, Next: Is this Shell Inte 6.3.1 What is an Interactive Shell? ----------------------------------- -An interactive shell is one started without non-option arguments, -unless `-s' is specified, without specifying the `-c' option, and whose -input and error output are both connected to terminals (as determined -by `isatty(3)'), or one started with the `-i' option. +An interactive shell is one started without non-option arguments, unless +'-s' is specified, without specifying the '-c' option, and whose input +and error output are both connected to terminals (as determined by +'isatty(3)'), or one started with the '-i' option. An interactive shell generally reads from and writes to a user's terminal. - The `-s' invocation option may be used to set the positional + The '-s' invocation option may be used to set the positional parameters when an interactive shell is started.  @@ -5577,15 +5623,15 @@ File: bash.info, Node: Is this Shell Interactive?, Next: Interactive Shell Beh -------------------------------- To determine within a startup script whether or not Bash is running -interactively, test the value of the `-' special parameter. It -contains `i' when the shell is interactive. For example: +interactively, test the value of the '-' special parameter. It contains +'i' when the shell is interactive. For example: case "$-" in *i*) echo This shell is interactive ;; *) echo This shell is not interactive ;; esac - Alternatively, startup scripts may examine the variable `PS1'; it is + Alternatively, startup scripts may examine the variable 'PS1'; it is unset in non-interactive shells, and set in interactive shells. Thus: if [ -z "$PS1" ]; then @@ -5608,73 +5654,73 @@ several ways. 2. Job Control (*note Job Control::) is enabled by default. When job control is in effect, Bash ignores the keyboard-generated job - control signals `SIGTTIN', `SIGTTOU', and `SIGTSTP'. + control signals 'SIGTTIN', 'SIGTTOU', and 'SIGTSTP'. - 3. Bash expands and displays `PS1' before reading the first line of a - command, and expands and displays `PS2' before reading the second - and subsequent lines of a multi-line command. + 3. Bash expands and displays 'PS1' before reading the first line of a + command, and expands and displays 'PS2' before reading the second + and subsequent lines of a multi-line command. Bash displays 'PS0' + after it reads a command but before executing it. - 4. Bash executes the value of the `PROMPT_COMMAND' variable as a - command before printing the primary prompt, `$PS1' (*note Bash + 4. Bash executes the value of the 'PROMPT_COMMAND' variable as a + command before printing the primary prompt, '$PS1' (*note Bash Variables::). 5. Readline (*note Command Line Editing::) is used to read commands from the user's terminal. - 6. Bash inspects the value of the `ignoreeof' option to `set -o' - instead of exiting immediately when it receives an `EOF' on its + 6. Bash inspects the value of the 'ignoreeof' option to 'set -o' + instead of exiting immediately when it receives an 'EOF' on its standard input when reading a command (*note The Set Builtin::). 7. Command history (*note Bash History Facilities::) and history expansion (*note History Interaction::) are enabled by default. - Bash will save the command history to the file named by `$HISTFILE' + Bash will save the command history to the file named by '$HISTFILE' when a shell with history enabled exits. 8. Alias expansion (*note Aliases::) is performed by default. - 9. In the absence of any traps, Bash ignores `SIGTERM' (*note + 9. In the absence of any traps, Bash ignores 'SIGTERM' (*note Signals::). - 10. In the absence of any traps, `SIGINT' is caught and handled - ((*note Signals::). `SIGINT' will interrupt some shell builtins. + 10. In the absence of any traps, 'SIGINT' is caught and handled + ((*note Signals::). 'SIGINT' will interrupt some shell builtins. - 11. An interactive login shell sends a `SIGHUP' to all jobs on exit if - the `huponexit' shell option has been enabled (*note Signals::). + 11. An interactive login shell sends a 'SIGHUP' to all jobs on exit if + the 'huponexit' shell option has been enabled (*note Signals::). - 12. The `-n' invocation option is ignored, and `set -n' has no effect + 12. The '-n' invocation option is ignored, and 'set -n' has no effect (*note The Set Builtin::). - 13. Bash will check for mail periodically, depending on the values of - the `MAIL', `MAILPATH', and `MAILCHECK' shell variables (*note - Bash Variables::). + 13. Bash will check for mail periodically, depending on the values of + the 'MAIL', 'MAILPATH', and 'MAILCHECK' shell variables (*note Bash + Variables::). - 14. Expansion errors due to references to unbound shell variables after - `set -u' has been enabled will not cause the shell to exit (*note - The Set Builtin::). + 14. Expansion errors due to references to unbound shell variables + after 'set -u' has been enabled will not cause the shell to exit + (*note The Set Builtin::). - 15. The shell will not exit on expansion errors caused by VAR being - unset or null in `${VAR:?WORD}' expansions (*note Shell Parameter + 15. The shell will not exit on expansion errors caused by VAR being + unset or null in '${VAR:?WORD}' expansions (*note Shell Parameter Expansion::). - 16. Redirection errors encountered by shell builtins will not cause the - shell to exit. + 16. Redirection errors encountered by shell builtins will not cause + the shell to exit. - 17. When running in POSIX mode, a special builtin returning an error + 17. When running in POSIX mode, a special builtin returning an error status will not cause the shell to exit (*note Bash POSIX Mode::). - 18. A failed `exec' will not cause the shell to exit (*note Bourne + 18. A failed 'exec' will not cause the shell to exit (*note Bourne Shell Builtins::). - 19. Parser syntax errors will not cause the shell to exit. + 19. Parser syntax errors will not cause the shell to exit. - 20. Simple spelling correction for directory arguments to the `cd' - builtin is enabled by default (see the description of the `cdspell' - option to the `shopt' builtin in *note The Shopt Builtin::). + 20. Simple spelling correction for directory arguments to the 'cd' + builtin is enabled by default (see the description of the 'cdspell' + option to the 'shopt' builtin in *note The Shopt Builtin::). - 21. The shell will check the value of the `TMOUT' variable and exit if + 21. The shell will check the value of the 'TMOUT' variable and exit if a command is not read within the specified number of seconds after - printing `$PS1' (*note Bash Variables::). - + printing '$PS1' (*note Bash Variables::).  File: bash.info, Node: Bash Conditional Expressions, Next: Shell Arithmetic, Prev: Interactive Shells, Up: Bash Features @@ -5682,137 +5728,136 @@ File: bash.info, Node: Bash Conditional Expressions, Next: Shell Arithmetic, 6.4 Bash Conditional Expressions ================================ -Conditional expressions are used by the `[[' compound command and the -`test' and `[' builtin commands. +Conditional expressions are used by the '[[' compound command and the +'test' and '[' builtin commands. - Expressions may be unary or binary. Unary expressions are often -used to examine the status of a file. There are string operators and -numeric comparison operators as well. If the FILE argument to one of -the primaries is of the form `/dev/fd/N', then file descriptor N is -checked. If the FILE argument to one of the primaries is one of -`/dev/stdin', `/dev/stdout', or `/dev/stderr', file descriptor 0, 1, or -2, respectively, is checked. + Expressions may be unary or binary. Unary expressions are often used +to examine the status of a file. There are string operators and numeric +comparison operators as well. If the FILE argument to one of the +primaries is of the form '/dev/fd/N', then file descriptor N is checked. +If the FILE argument to one of the primaries is one of '/dev/stdin', +'/dev/stdout', or '/dev/stderr', file descriptor 0, 1, or 2, +respectively, is checked. - When used with `[[', the `<' and `>' operators sort -lexicographically using the current locale. The `test' command uses -ASCII ordering. + When used with '[[', the '<' and '>' operators sort lexicographically +using the current locale. The 'test' command uses ASCII ordering. Unless otherwise specified, primaries that operate on files follow symbolic links and operate on the target of the link, rather than the link itself. -`-a FILE' +'-a FILE' True if FILE exists. -`-b FILE' +'-b FILE' True if FILE exists and is a block special file. -`-c FILE' +'-c FILE' True if FILE exists and is a character special file. -`-d FILE' +'-d FILE' True if FILE exists and is a directory. -`-e FILE' +'-e FILE' True if FILE exists. -`-f FILE' +'-f FILE' True if FILE exists and is a regular file. -`-g FILE' +'-g FILE' True if FILE exists and its set-group-id bit is set. -`-h FILE' +'-h FILE' True if FILE exists and is a symbolic link. -`-k FILE' +'-k FILE' True if FILE exists and its "sticky" bit is set. -`-p FILE' +'-p FILE' True if FILE exists and is a named pipe (FIFO). -`-r FILE' +'-r FILE' True if FILE exists and is readable. -`-s FILE' +'-s FILE' True if FILE exists and has a size greater than zero. -`-t FD' +'-t FD' True if file descriptor FD is open and refers to a terminal. -`-u FILE' +'-u FILE' True if FILE exists and its set-user-id bit is set. -`-w FILE' +'-w FILE' True if FILE exists and is writable. -`-x FILE' +'-x FILE' True if FILE exists and is executable. -`-G FILE' +'-G FILE' True if FILE exists and is owned by the effective group id. -`-L FILE' +'-L FILE' True if FILE exists and is a symbolic link. -`-N FILE' +'-N FILE' True if FILE exists and has been modified since it was last read. -`-O FILE' +'-O FILE' True if FILE exists and is owned by the effective user id. -`-S FILE' +'-S FILE' True if FILE exists and is a socket. -`FILE1 -ef FILE2' +'FILE1 -ef FILE2' True if FILE1 and FILE2 refer to the same device and inode numbers. -`FILE1 -nt FILE2' - True if FILE1 is newer (according to modification date) than - FILE2, or if FILE1 exists and FILE2 does not. +'FILE1 -nt FILE2' + True if FILE1 is newer (according to modification date) than FILE2, + or if FILE1 exists and FILE2 does not. -`FILE1 -ot FILE2' +'FILE1 -ot FILE2' True if FILE1 is older than FILE2, or if FILE2 exists and FILE1 does not. -`-o OPTNAME' +'-o OPTNAME' True if the shell option OPTNAME is enabled. The list of options - appears in the description of the `-o' option to the `set' builtin + appears in the description of the '-o' option to the 'set' builtin (*note The Set Builtin::). -`-v VARNAME' +'-v VARNAME' True if the shell variable VARNAME is set (has been assigned a value). -`-R VARNAME' +'-R VARNAME' True if the shell variable VARNAME is set and is a name reference. -`-z STRING' +'-z STRING' True if the length of STRING is zero. -`-n STRING' -`STRING' +'-n STRING' +'STRING' True if the length of STRING is non-zero. -`STRING1 == STRING2' -`STRING1 = STRING2' - True if the strings are equal. When used with the `[[' command, +'STRING1 == STRING2' +'STRING1 = STRING2' + True if the strings are equal. When used with the '[[' command, this performs pattern matching as described above (*note Conditional Constructs::). - `=' should be used with the `test' command for POSIX conformance. + '=' should be used with the 'test' command for POSIX conformance. -`STRING1 != STRING2' +'STRING1 != STRING2' True if the strings are not equal. -`STRING1 < STRING2' +'STRING1 < STRING2' True if STRING1 sorts before STRING2 lexicographically. -`STRING1 > STRING2' +'STRING1 > STRING2' True if STRING1 sorts after STRING2 lexicographically. -`ARG1 OP ARG2' - `OP' is one of `-eq', `-ne', `-lt', `-le', `-gt', or `-ge'. These +'ARG1 OP ARG2' + 'OP' is one of '-eq', '-ne', '-lt', '-le', '-gt', or '-ge'. These arithmetic binary operators return true if ARG1 is equal to, not equal to, less than, less than or equal to, greater than, or greater than or equal to ARG2, respectively. ARG1 and ARG2 may be @@ -5825,68 +5870,68 @@ File: bash.info, Node: Shell Arithmetic, Next: Aliases, Prev: Bash Conditiona ==================== The shell allows arithmetic expressions to be evaluated, as one of the -shell expansions or by the `let' and the `-i' option to the `declare' +shell expansions or by the 'let' and the '-i' option to the 'declare' builtins. Evaluation is done in fixed-width integers with no check for overflow, though division by 0 is trapped and flagged as an error. The operators and their precedence, associativity, and values are the same as in the C language. The following list of operators is grouped into -levels of equal-precedence operators. The levels are listed in order -of decreasing precedence. +levels of equal-precedence operators. The levels are listed in order of +decreasing precedence. -`ID++ ID--' +'ID++ ID--' variable post-increment and post-decrement -`++ID --ID' +'++ID --ID' variable pre-increment and pre-decrement -`- +' +'- +' unary minus and plus -`! ~' +'! ~' logical and bitwise negation -`**' +'**' exponentiation -`* / %' +'* / %' multiplication, division, remainder -`+ -' +'+ -' addition, subtraction -`<< >>' +'<< >>' left and right bitwise shifts -`<= >= < >' +'<= >= < >' comparison -`== !=' +'== !=' equality and inequality -`&' +'&' bitwise AND -`^' +'^' bitwise exclusive OR -`|' +'|' bitwise OR -`&&' +'&&' logical AND -`||' +'||' logical OR -`expr ? expr : expr' +'expr ? expr : expr' conditional operator -`= *= /= %= += -= <<= >>= &= ^= |=' +'= *= /= %= += -= <<= >>= &= ^= |=' assignment -`expr1 , expr2' +'expr1 , expr2' comma Shell variables are allowed as operands; parameter expansion is @@ -5894,21 +5939,21 @@ performed before the expression is evaluated. Within an expression, shell variables may also be referenced by name without using the parameter expansion syntax. A shell variable that is null or unset evaluates to 0 when referenced by name without using the parameter -expansion syntax. The value of a variable is evaluated as an -arithmetic expression when it is referenced, or when a variable which -has been given the INTEGER attribute using `declare -i' is assigned a -value. A null value evaluates to 0. A shell variable need not have -its INTEGER attribute turned on to be used in an expression. +expansion syntax. The value of a variable is evaluated as an arithmetic +expression when it is referenced, or when a variable which has been +given the INTEGER attribute using 'declare -i' is assigned a value. A +null value evaluates to 0. A shell variable need not have its INTEGER +attribute turned on to be used in an expression. Constants with a leading 0 are interpreted as octal numbers. A -leading `0x' or `0X' denotes hexadecimal. Otherwise, numbers take the -form [BASE`#']N, where the optional BASE is a decimal number between 2 +leading '0x' or '0X' denotes hexadecimal. Otherwise, numbers take the +form [BASE'#']N, where the optional BASE is a decimal number between 2 and 64 representing the arithmetic base, and N is a number in that base. -If BASE`#' is omitted, then base 10 is used. When specifying N, he +If BASE'#' is omitted, then base 10 is used. When specifying N, the digits greater than 9 are represented by the lowercase letters, the -uppercase letters, `@', and `_', in that order. If BASE is less than -or equal to 36, lowercase and uppercase letters may be used -interchangeably to represent numbers between 10 and 35. +uppercase letters, '@', and '_', in that order. If BASE is less than or +equal to 36, lowercase and uppercase letters may be used interchangeably +to represent numbers between 10 and 35. Operators are evaluated in order of precedence. Sub-expressions in parentheses are evaluated first and may override the precedence rules @@ -5922,47 +5967,46 @@ File: bash.info, Node: Aliases, Next: Arrays, Prev: Shell Arithmetic, Up: Ba ALIASES allow a string to be substituted for a word when it is used as the first word of a simple command. The shell maintains a list of -aliases that may be set and unset with the `alias' and `unalias' -builtin commands. +aliases that may be set and unset with the 'alias' and 'unalias' builtin +commands. The first word of each simple command, if unquoted, is checked to see if it has an alias. If so, that word is replaced by the text of the -alias. The characters `/', `$', ``', `=' and any of the shell +alias. The characters '/', '$', '`', '=' and any of the shell metacharacters or quoting characters listed above may not appear in an alias name. The replacement text may contain any valid shell input, including shell metacharacters. The first word of the replacement text is tested for aliases, but a word that is identical to an alias being expanded is not expanded a second time. This means that one may alias -`ls' to `"ls -F"', for instance, and Bash does not try to recursively +'ls' to '"ls -F"', for instance, and Bash does not try to recursively expand the replacement text. If the last character of the alias value is a BLANK, then the next command word following the alias is also checked for alias expansion. - Aliases are created and listed with the `alias' command, and removed -with the `unalias' command. + Aliases are created and listed with the 'alias' command, and removed +with the 'unalias' command. - There is no mechanism for using arguments in the replacement text, -as in `csh'. If arguments are needed, a shell function should be used + There is no mechanism for using arguments in the replacement text, as +in 'csh'. If arguments are needed, a shell function should be used (*note Shell Functions::). Aliases are not expanded when the shell is not interactive, unless -the `expand_aliases' shell option is set using `shopt' (*note The Shopt +the 'expand_aliases' shell option is set using 'shopt' (*note The Shopt Builtin::). The rules concerning the definition and use of aliases are somewhat -confusing. Bash always reads at least one complete line of input -before executing any of the commands on that line. Aliases are -expanded when a command is read, not when it is executed. Therefore, an -alias definition appearing on the same line as another command does not -take effect until the next line of input is read. The commands -following the alias definition on that line are not affected by the new -alias. This behavior is also an issue when functions are executed. -Aliases are expanded when a function definition is read, not when the -function is executed, because a function definition is itself a -command. As a consequence, aliases defined in a function are not -available until after that function is executed. To be safe, always put -alias definitions on a separate line, and do not use `alias' in -compound commands. +confusing. Bash always reads at least one complete line of input before +executing any of the commands on that line. Aliases are expanded when a +command is read, not when it is executed. Therefore, an alias +definition appearing on the same line as another command does not take +effect until the next line of input is read. The commands following the +alias definition on that line are not affected by the new alias. This +behavior is also an issue when functions are executed. Aliases are +expanded when a function definition is read, not when the function is +executed, because a function definition is itself a command. As a +consequence, aliases defined in a function are not available until after +that function is executed. To be safe, always put alias definitions on +a separate line, and do not use 'alias' in compound commands. For almost every purpose, shell functions are preferred over aliases. @@ -5973,35 +6017,35 @@ File: bash.info, Node: Arrays, Next: The Directory Stack, Prev: Aliases, Up: ========== Bash provides one-dimensional indexed and associative array variables. -Any variable may be used as an indexed array; the `declare' builtin -will explicitly declare an array. There is no maximum limit on the -size of an array, nor any requirement that members be indexed or -assigned contiguously. Indexed arrays are referenced using integers -(including arithmetic expressions (*note Shell Arithmetic::)) and are -zero-based; associative arrays use arbitrary strings. Unless otherwise -noted, indexed array indices must be non-negative integers. +Any variable may be used as an indexed array; the 'declare' builtin will +explicitly declare an array. There is no maximum limit on the size of +an array, nor any requirement that members be indexed or assigned +contiguously. Indexed arrays are referenced using integers (including +arithmetic expressions (*note Shell Arithmetic::)) and are zero-based; +associative arrays use arbitrary strings. Unless otherwise noted, +indexed array indices must be non-negative integers. - An indexed array is created automatically if any variable is -assigned to using the syntax + An indexed array is created automatically if any variable is assigned +to using the syntax NAME[SUBSCRIPT]=VALUE The SUBSCRIPT is treated as an arithmetic expression that must evaluate to a number. To explicitly declare an array, use declare -a NAME - The syntax +The syntax declare -a NAME[SUBSCRIPT] - is also accepted; the SUBSCRIPT is ignored. +is also accepted; the SUBSCRIPT is ignored. Associative arrays are created using declare -A NAME. - Attributes may be specified for an array variable using the -`declare' and `readonly' builtins. Each attribute applies to all -members of an array. + Attributes may be specified for an array variable using the 'declare' +and 'readonly' builtins. Each attribute applies to all members of an +array. Arrays are assigned to using compound assignments of the form NAME=(VALUE1 VALUE2 ... ) - where each VALUE is of the form `[SUBSCRIPT]='STRING. Indexed array +where each VALUE is of the form '[SUBSCRIPT]='STRING. Indexed array assignments do not require anything but STRING. When assigning to indexed arrays, if the optional subscript is supplied, that index is assigned to; otherwise the index of the element assigned is the last @@ -6009,8 +6053,8 @@ index assigned to by the statement plus one. Indexing starts at zero. When assigning to an associative array, the subscript is required. - This syntax is also accepted by the `declare' builtin. Individual -array elements may be assigned to using the `NAME[SUBSCRIPT]=VALUE' + This syntax is also accepted by the 'declare' builtin. Individual +array elements may be assigned to using the 'NAME[SUBSCRIPT]=VALUE' syntax introduced above. When assigning to an indexed array, if NAME is subscripted by a @@ -6018,28 +6062,30 @@ negative number, that number is interpreted as relative to one greater than the maximum index of NAME, so negative indices count back from the end of the array, and an index of -1 references the last element. - Any element of an array may be referenced using `${NAME[SUBSCRIPT]}'. + Any element of an array may be referenced using '${NAME[SUBSCRIPT]}'. The braces are required to avoid conflicts with the shell's filename -expansion operators. If the SUBSCRIPT is `@' or `*', the word expands -to all members of the array NAME. These subscripts differ only when -the word appears within double quotes. If the word is double-quoted, -`${NAME[*]}' expands to a single word with the value of each array -member separated by the first character of the `IFS' variable, and -`${NAME[@]}' expands each element of NAME to a separate word. When -there are no array members, `${NAME[@]}' expands to nothing. If the -double-quoted expansion occurs within a word, the expansion of the -first parameter is joined with the beginning part of the original word, -and the expansion of the last parameter is joined with the last part of -the original word. This is analogous to the expansion of the special -parameters `@' and `*'. `${#NAME[SUBSCRIPT]}' expands to the length of -`${NAME[SUBSCRIPT]}'. If SUBSCRIPT is `@' or `*', the expansion is the -number of elements in the array. Referencing an array variable without -a subscript is equivalent to referencing with a subscript of 0. If the -SUBSCRIPT used to reference an element of an indexed array evaluates to -a number less than zero, it is interpreted as relative to one greater -than the maximum index of the array, so negative indices count back -from the end of the array, and an index of -1 refers to the last -element. +expansion operators. If the SUBSCRIPT is '@' or '*', the word expands +to all members of the array NAME. These subscripts differ only when the +word appears within double quotes. If the word is double-quoted, +'${NAME[*]}' expands to a single word with the value of each array +member separated by the first character of the 'IFS' variable, and +'${NAME[@]}' expands each element of NAME to a separate word. When +there are no array members, '${NAME[@]}' expands to nothing. If the +double-quoted expansion occurs within a word, the expansion of the first +parameter is joined with the beginning part of the original word, and +the expansion of the last parameter is joined with the last part of the +original word. This is analogous to the expansion of the special +parameters '@' and '*'. '${#NAME[SUBSCRIPT]}' expands to the length of +'${NAME[SUBSCRIPT]}'. If SUBSCRIPT is '@' or '*', the expansion is the +number of elements in the array. If the SUBSCRIPT used to reference an +element of an indexed array evaluates to a number less than zero, it is +interpreted as relative to one greater than the maximum index of the +array, so negative indices count back from the end of the array, and an +index of -1 refers to the last element. + + Referencing an array variable without a subscript is equivalent to +referencing with a subscript of 0. Any reference to a variable using a +valid subscript is legal, and 'bash' will create an array if necessary. An array variable is considered set if a subscript has been assigned a value. The null string is a valid value. @@ -6047,22 +6093,22 @@ a value. The null string is a valid value. It is possible to obtain the keys (indices) of an array as well as the values. ${!NAME[@]} and ${!NAME[*]} expand to the indices assigned in array variable NAME. The treatment when in double quotes is similar -to the expansion of the special parameters `@' and `*' within double +to the expansion of the special parameters '@' and '*' within double quotes. - The `unset' builtin is used to destroy arrays. `unset + The 'unset' builtin is used to destroy arrays. 'unset NAME[SUBSCRIPT]' destroys the array element at index SUBSCRIPT. Negative subscripts to indexed arrays are interpreted as described above. Care must be taken to avoid unwanted side effects caused by -filename expansion. `unset NAME', where NAME is an array, removes the -entire array. A subscript of `*' or `@' also removes the entire array. +filename expansion. 'unset NAME', where NAME is an array, removes the +entire array. A subscript of '*' or '@' also removes the entire array. - The `declare', `local', and `readonly' builtins each accept a `-a' -option to specify an indexed array and a `-A' option to specify an -associative array. If both options are supplied, `-A' takes precedence. -The `read' builtin accepts a `-a' option to assign a list of words read + The 'declare', 'local', and 'readonly' builtins each accept a '-a' +option to specify an indexed array and a '-A' option to specify an +associative array. If both options are supplied, '-A' takes precedence. +The 'read' builtin accepts a '-a' option to assign a list of words read from the standard input to an array, and can read values from the -standard input into individual array elements. The `set' and `declare' +standard input into individual array elements. The 'set' and 'declare' builtins display array values in a way that allows them to be reused as input. @@ -6077,14 +6123,15 @@ File: bash.info, Node: The Directory Stack, Next: Controlling the Prompt, Pre * Directory Stack Builtins:: Bash builtin commands to manipulate the directory stack. - The directory stack is a list of recently-visited directories. The -`pushd' builtin adds directories to the stack as it changes the current -directory, and the `popd' builtin removes specified directories from -the stack and changes the current directory to the directory removed. -The `dirs' builtin displays the contents of the directory stack. +The directory stack is a list of recently-visited directories. The +'pushd' builtin adds directories to the stack as it changes the current +directory, and the 'popd' builtin removes specified directories from the +stack and changes the current directory to the directory removed. The +'dirs' builtin displays the contents of the directory stack. The +current directory is always the "top" of the directory stack. The contents of the directory stack are also visible as the value of -the `DIRSTACK' shell variable. +the 'DIRSTACK' shell variable.  File: bash.info, Node: Directory Stack Builtins, Up: The Directory Stack @@ -6092,87 +6139,76 @@ File: bash.info, Node: Directory Stack Builtins, Up: The Directory Stack 6.8.1 Directory Stack Builtins ------------------------------ -`dirs' +'dirs' dirs [-clpv] [+N | -N] Display the list of currently remembered directories. Directories - are added to the list with the `pushd' command; the `popd' command - removes directories from the list. + are added to the list with the 'pushd' command; the 'popd' command + removes directories from the list. The current directory is always + the first directory in the stack. - `-c' + '-c' Clears the directory stack by deleting all of the elements. - - `-l' + '-l' Produces a listing using full pathnames; the default listing format uses a tilde to denote the home directory. - - `-p' - Causes `dirs' to print the directory stack with one entry per + '-p' + Causes 'dirs' to print the directory stack with one entry per line. - - `-v' - Causes `dirs' to print the directory stack with one entry per + '-v' + Causes 'dirs' to print the directory stack with one entry per line, prefixing each entry with its index in the stack. - - `+N' - Displays the Nth directory (counting from the left of the - list printed by `dirs' when invoked without options), starting - with zero. - - `-N' + '+N' + Displays the Nth directory (counting from the left of the list + printed by 'dirs' when invoked without options), starting with + zero. + '-N' Displays the Nth directory (counting from the right of the - list printed by `dirs' when invoked without options), starting + list printed by 'dirs' when invoked without options), starting with zero. -`popd' +'popd' popd [-n] [+N | -N] - Remove the top entry from the directory stack, and `cd' to the new - top directory. When no arguments are given, `popd' removes the - top directory from the stack and performs a `cd' to the new top - directory. The elements are numbered from 0 starting at the first - directory listed with `dirs'; that is, `popd' is equivalent to - `popd +0'. + When no arguments are given, 'popd' removes the top directory from + the stack and performs a 'cd' to the new top directory. The + elements are numbered from 0 starting at the first directory listed + with 'dirs'; that is, 'popd' is equivalent to 'popd +0'. - `-n' + '-n' Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated. - - `+N' + '+N' Removes the Nth directory (counting from the left of the list - printed by `dirs'), starting with zero. + printed by 'dirs'), starting with zero. + '-N' + Removes the Nth directory (counting from the right of the list + printed by 'dirs'), starting with zero. - `-N' - Removes the Nth directory (counting from the right of the - list printed by `dirs'), starting with zero. - -`pushd' +'pushd' pushd [-n] [+N | -N | DIR] Save the current directory on the top of the directory stack and - then `cd' to DIR. With no arguments, `pushd' exchanges the top - two directories. + then 'cd' to DIR. With no arguments, 'pushd' exchanges the top two + directories and makes the new top the current directory. - `-n' - Suppresses the normal change of directory when adding - directories to the stack, so that only the stack is + '-n' + Suppresses the normal change of directory when rotating or + adding directories to the stack, so that only the stack is manipulated. - - `+N' + '+N' Brings the Nth directory (counting from the left of the list - printed by `dirs', starting with zero) to the top of the list + printed by 'dirs', starting with zero) to the top of the list by rotating the stack. - - `-N' + '-N' Brings the Nth directory (counting from the right of the list - printed by `dirs', starting with zero) to the top of the list + printed by 'dirs', starting with zero) to the top of the list by rotating the stack. - - `DIR' - Makes the current working directory be the top of the stack, - making it the new current directory as if it had been - supplied as an argument to the `cd' builtin. + 'DIR' + Makes DIR be the top of the stack, making it the new current + directory as if it had been supplied as an argument to the + 'cd' builtin.  File: bash.info, Node: Controlling the Prompt, Next: The Restricted Shell, Prev: The Directory Stack, Up: Bash Features @@ -6180,98 +6216,72 @@ File: bash.info, Node: Controlling the Prompt, Next: The Restricted Shell, Pr 6.9 Controlling the Prompt ========================== -The value of the variable `PROMPT_COMMAND' is examined just before Bash -prints each primary prompt. If `PROMPT_COMMAND' is set and has a +The value of the variable 'PROMPT_COMMAND' is examined just before Bash +prints each primary prompt. If 'PROMPT_COMMAND' is set and has a non-null value, then the value is executed just as if it had been typed on the command line. In addition, the following table describes the special characters -which can appear in the prompt variables `PS1' to `PS4': +which can appear in the prompt variables 'PS1' to 'PS4': -`\a' +'\a' A bell character. - -`\d' +'\d' The date, in "Weekday Month Date" format (e.g., "Tue May 26"). - -`\D{FORMAT}' - The FORMAT is passed to `strftime'(3) and the result is inserted +'\D{FORMAT}' + The FORMAT is passed to 'strftime'(3) and the result is inserted into the prompt string; an empty FORMAT results in a locale-specific time representation. The braces are required. - -`\e' +'\e' An escape character. - -`\h' - The hostname, up to the first `.'. - -`\H' +'\h' + The hostname, up to the first '.'. +'\H' The hostname. - -`\j' +'\j' The number of jobs currently managed by the shell. - -`\l' +'\l' The basename of the shell's terminal device name. - -`\n' +'\n' A newline. - -`\r' +'\r' A carriage return. - -`\s' - The name of the shell, the basename of `$0' (the portion following +'\s' + The name of the shell, the basename of '$0' (the portion following the final slash). - -`\t' +'\t' The time, in 24-hour HH:MM:SS format. - -`\T' +'\T' The time, in 12-hour HH:MM:SS format. - -`\@' +'\@' The time, in 12-hour am/pm format. - -`\A' +'\A' The time, in 24-hour HH:MM format. - -`\u' +'\u' The username of the current user. - -`\v' +'\v' The version of Bash (e.g., 2.00) - -`\V' +'\V' The release of Bash, version + patchlevel (e.g., 2.00.0) - -`\w' - The current working directory, with `$HOME' abbreviated with a - tilde (uses the `$PROMPT_DIRTRIM' variable). - -`\W' - The basename of `$PWD', with `$HOME' abbreviated with a tilde. - -`\!' +'\w' + The current working directory, with '$HOME' abbreviated with a + tilde (uses the '$PROMPT_DIRTRIM' variable). +'\W' + The basename of '$PWD', with '$HOME' abbreviated with a tilde. +'\!' The history number of this command. - -`\#' +'\#' The command number of this command. - -`\$' - If the effective uid is 0, `#', otherwise `$'. - -`\NNN' +'\$' + If the effective uid is 0, '#', otherwise '$'. +'\NNN' The character whose ASCII code is the octal value NNN. - -`\\' +'\\' A backslash. - -`\[' +'\[' Begin a sequence of non-printing characters. This could be used to embed a terminal control sequence into the prompt. - -`\]' +'\]' End a sequence of non-printing characters. The command number and the history number are usually different: the @@ -6282,7 +6292,7 @@ of commands executed during the current shell session. After the string is decoded, it is expanded via parameter expansion, command substitution, arithmetic expansion, and quote removal, subject -to the value of the `promptvars' shell option (*note Bash Builtins::). +to the value of the 'promptvars' shell option (*note Bash Builtins::).  File: bash.info, Node: The Restricted Shell, Next: Bash POSIX Mode, Prev: Controlling the Prompt, Up: Bash Features @@ -6290,50 +6300,38 @@ File: bash.info, Node: The Restricted Shell, Next: Bash POSIX Mode, Prev: Con 6.10 The Restricted Shell ========================= -If Bash is started with the name `rbash', or the `--restricted' or `-r' +If Bash is started with the name 'rbash', or the '--restricted' or '-r' option is supplied at invocation, the shell becomes restricted. A restricted shell is used to set up an environment more controlled than -the standard shell. A restricted shell behaves identically to `bash' +the standard shell. A restricted shell behaves identically to 'bash' with the exception that the following are disallowed or not performed: - * Changing directories with the `cd' builtin. - - * Setting or unsetting the values of the `SHELL', `PATH', `ENV', or - `BASH_ENV' variables. - + * Changing directories with the 'cd' builtin. + * Setting or unsetting the values of the 'SHELL', 'PATH', 'ENV', or + 'BASH_ENV' variables. * Specifying command names containing slashes. - - * Specifying a filename containing a slash as an argument to the `.' + * Specifying a filename containing a slash as an argument to the '.' builtin command. - - * Specifying a filename containing a slash as an argument to the `-p' - option to the `hash' builtin command. - + * Specifying a filename containing a slash as an argument to the '-p' + option to the 'hash' builtin command. * Importing function definitions from the shell environment at startup. - - * Parsing the value of `SHELLOPTS' from the shell environment at + * Parsing the value of 'SHELLOPTS' from the shell environment at startup. - - * Redirecting output using the `>', `>|', `<>', `>&', `&>', and `>>' + * Redirecting output using the '>', '>|', '<>', '>&', '&>', and '>>' redirection operators. - - * Using the `exec' builtin to replace the shell with another command. - - * Adding or deleting builtin commands with the `-f' and `-d' options - to the `enable' builtin. - - * Using the `enable' builtin command to enable disabled shell + * Using the 'exec' builtin to replace the shell with another command. + * Adding or deleting builtin commands with the '-f' and '-d' options + to the 'enable' builtin. + * Using the 'enable' builtin command to enable disabled shell builtins. - - * Specifying the `-p' option to the `command' builtin. - - * Turning off restricted mode with `set +r' or `set +o restricted'. + * Specifying the '-p' option to the 'command' builtin. + * Turning off restricted mode with 'set +r' or 'set +o restricted'. These restrictions are enforced after any startup files are read. When a command that is found to be a shell script is executed (*note -Shell Scripts::), `rbash' turns off any restrictions in the shell +Shell Scripts::), 'rbash' turns off any restrictions in the shell spawned to execute the script.  @@ -6342,221 +6340,226 @@ File: bash.info, Node: Bash POSIX Mode, Prev: The Restricted Shell, Up: Bash 6.11 Bash POSIX Mode ==================== -Starting Bash with the `--posix' command-line option or executing `set +Starting Bash with the '--posix' command-line option or executing 'set -o posix' while Bash is running will cause Bash to conform more closely to the POSIX standard by changing the behavior to match that specified by POSIX in areas where the Bash default differs. - When invoked as `sh', Bash enters POSIX mode after reading the + When invoked as 'sh', Bash enters POSIX mode after reading the startup files. - The following list is what's changed when `POSIX mode' is in effect: + The following list is what's changed when 'POSIX mode' is in effect: 1. When a command in the hash table no longer exists, Bash will - re-search `$PATH' to find the new location. This is also - available with `shopt -s checkhash'. + re-search '$PATH' to find the new location. This is also available + with 'shopt -s checkhash'. 2. The message printed by the job control code and builtins when a job - exits with a non-zero status is `Done(status)'. + exits with a non-zero status is 'Done(status)'. 3. The message printed by the job control code and builtins when a job - is stopped is `Stopped(SIGNAME)', where SIGNAME is, for example, - `SIGTSTP'. + is stopped is 'Stopped(SIGNAME)', where SIGNAME is, for example, + 'SIGTSTP'. - 4. The `bg' builtin uses the required format to describe each job - placed in the background, which does not include an indication of - whether the job is the current or previous job. + 4. Alias expansion is always enabled, even in non-interactive shells. 5. Reserved words appearing in a context where reserved words are recognized do not undergo alias expansion. - 6. The POSIX `PS1' and `PS2' expansions of `!' to the history number - and `!!' to `!' are enabled, and parameter expansion is performed - on the values of `PS1' and `PS2' regardless of the setting of the - `promptvars' option. + 6. The POSIX 'PS1' and 'PS2' expansions of '!' to the history number + and '!!' to '!' are enabled, and parameter expansion is performed + on the values of 'PS1' and 'PS2' regardless of the setting of the + 'promptvars' option. - 7. The POSIX startup files are executed (`$ENV') rather than the + 7. The POSIX startup files are executed ('$ENV') rather than the normal Bash files. 8. Tilde expansion is only performed on assignments preceding a command name, rather than on all assignment statements on the line. - 9. The `command' builtin does not prevent builtins that take - assignment statements as arguments from expanding them as - assignment statements; when not in POSIX mode, assignment builtins - lose their assignment statement expansion properties when preceded - by `command'. + 9. The default history file is '~/.sh_history' (this is the default + value of '$HISTFILE'). - 10. The default history file is `~/.sh_history' (this is the default - value of `$HISTFILE'). + 10. Redirection operators do not perform filename expansion on the + word in the redirection unless the shell is interactive. - 11. The output of `kill -l' prints all the signal names on a single - line, separated by spaces, without the `SIG' prefix. - - 12. The `kill' builtin does not accept signal names with a `SIG' - prefix. - - 13. Non-interactive shells exit if FILENAME in `.' FILENAME is not - found. - - 14. Non-interactive shells exit if a syntax error in an arithmetic - expansion results in an invalid expression. - - 15. Non-interactive shells exit if there is a syntax error in a script - read with the `.' or `source' builtins, or in a string processed by - the `eval' builtin. - - 16. Redirection operators do not perform filename expansion on the word - in the redirection unless the shell is interactive. - - 17. Redirection operators do not perform word splitting on the word in + 11. Redirection operators do not perform word splitting on the word in the redirection. - 18. Function names must be valid shell `name's. That is, they may not + 12. Function names must be valid shell 'name's. That is, they may not contain characters other than letters, digits, and underscores, and may not start with a digit. Declaring a function with an invalid name causes a fatal syntax error in non-interactive shells. - 19. Function names may not be the same as one of the POSIX special + 13. Function names may not be the same as one of the POSIX special builtins. - 20. POSIX special builtins are found before shell functions during + 14. POSIX special builtins are found before shell functions during command lookup. - 21. Literal tildes that appear as the first character in elements of - the `PATH' variable are not expanded as described above under - *note Tilde Expansion::. + 15. Literal tildes that appear as the first character in elements of + the 'PATH' variable are not expanded as described above under *note + Tilde Expansion::. - 22. The `time' reserved word may be used by itself as a command. When + 16. The 'time' reserved word may be used by itself as a command. When used in this way, it displays timing statistics for the shell and - its completed children. The `TIMEFORMAT' variable controls the + its completed children. The 'TIMEFORMAT' variable controls the format of the timing information. - 23. When parsing and expanding a ${...} expansion that appears within + 17. When parsing and expanding a ${...} expansion that appears within double quotes, single quotes are no longer special and cannot be used to quote a closing brace or other special character, unless the operator is one of those defined to perform pattern removal. In this case, they do not have to appear as matched pairs. - 24. The parser does not recognize `time' as a reserved word if the next - token begins with a `-'. + 18. The parser does not recognize 'time' as a reserved word if the + next token begins with a '-'. - 25. If a POSIX special builtin returns an error status, a + 19. The '!' character does not introduce history expansion within a + double-quoted string, even if the 'histexpand' option is enabled. + + 20. If a POSIX special builtin returns an error status, a non-interactive shell exits. The fatal errors are those listed in the POSIX standard, and include things like passing incorrect options, redirection errors, variable assignment errors for assignments preceding the command name, and so on. - 26. A non-interactive shell exits with an error status if a variable + 21. A non-interactive shell exits with an error status if a variable assignment error occurs when no command name follows the assignment statements. A variable assignment error occurs, for example, when trying to assign a value to a readonly variable. - 27. A non-interactive shell exits with an error status if a variable + 22. A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a special builtin, but not with any other simple command. - 28. A non-interactive shell exits with an error status if the iteration - variable in a `for' statement or the selection variable in a - `select' statement is a readonly variable. + 23. A non-interactive shell exits with an error status if the + iteration variable in a 'for' statement or the selection variable + in a 'select' statement is a readonly variable. - 29. Process substitution is not available. + 24. Non-interactive shells exit if FILENAME in '.' FILENAME is not + found. - 30. While variable indirection is available, it may not be applied to - the `#' and `?' special parameters. + 25. Non-interactive shells exit if a syntax error in an arithmetic + expansion results in an invalid expression. - 31. Assignment statements preceding POSIX special builtins persist in + 26. Non-interactive shells exit on word expansion errors. + + 27. Non-interactive shells exit if there is a syntax error in a script + read with the '.' or 'source' builtins, or in a string processed by + the 'eval' builtin. + + 28. Process substitution is not available. + + 29. While variable indirection is available, it may not be applied to + the '#' and '?' special parameters. + + 30. Assignment statements preceding POSIX special builtins persist in the shell environment after the builtin completes. - 32. Assignment statements preceding shell function calls persist in the - shell environment after the function returns, as if a POSIX + 31. Assignment statements preceding shell function calls persist in + the shell environment after the function returns, as if a POSIX special builtin command had been executed. - 33. The `export' and `readonly' builtin commands display their output + 32. The 'command' builtin does not prevent builtins that take + assignment statements as arguments from expanding them as + assignment statements; when not in POSIX mode, assignment builtins + lose their assignment statement expansion properties when preceded + by 'command'. + + 33. The 'bg' builtin uses the required format to describe each job + placed in the background, which does not include an indication of + whether the job is the current or previous job. + + 34. The output of 'kill -l' prints all the signal names on a single + line, separated by spaces, without the 'SIG' prefix. + + 35. The 'kill' builtin does not accept signal names with a 'SIG' + prefix. + + 36. The 'export' and 'readonly' builtin commands display their output in the format required by POSIX. - 34. The `trap' builtin displays signal names without the leading `SIG'. + 37. The 'trap' builtin displays signal names without the leading + 'SIG'. - 35. The `trap' builtin doesn't check the first argument for a possible + 38. The 'trap' builtin doesn't check the first argument for a possible signal specification and revert the signal handling to the original disposition if it is, unless that argument consists solely of digits and is a valid signal number. If users want to reset the - handler for a given signal to the original disposition, they - should use `-' as the first argument. + handler for a given signal to the original disposition, they should + use '-' as the first argument. - 36. The `.' and `source' builtins do not search the current directory - for the filename argument if it is not found by searching `PATH'. + 39. The '.' and 'source' builtins do not search the current directory + for the filename argument if it is not found by searching 'PATH'. - 37. Subshells spawned to execute command substitutions inherit the - value of the `-e' option from the parent shell. When not in POSIX - mode, Bash clears the `-e' option in such subshells. + 40. Enabling POSIX mode has the effect of setting the + 'inherit_errexit' option, so subshells spawned to execute command + substitutions inherit the value of the '-e' option from the parent + shell. When the 'inherit_errexit' option is not enabled, Bash + clears the '-e' option in such subshells. - 38. Alias expansion is always enabled, even in non-interactive shells. - - 39. When the `alias' builtin displays alias definitions, it does not - display them with a leading `alias ' unless the `-p' option is + 41. When the 'alias' builtin displays alias definitions, it does not + display them with a leading 'alias ' unless the '-p' option is supplied. - 40. When the `set' builtin is invoked without options, it does not + 42. When the 'set' builtin is invoked without options, it does not display shell function names and definitions. - 41. When the `set' builtin is invoked without options, it displays + 43. When the 'set' builtin is invoked without options, it displays variable values without quotes, unless they contain shell metacharacters, even if the result contains nonprinting characters. - 42. When the `cd' builtin is invoked in LOGICAL mode, and the pathname - constructed from `$PWD' and the directory name supplied as an - argument does not refer to an existing directory, `cd' will fail + 44. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname + constructed from '$PWD' and the directory name supplied as an + argument does not refer to an existing directory, 'cd' will fail instead of falling back to PHYSICAL mode. - 43. The `pwd' builtin verifies that the value it prints is the same as + 45. The 'pwd' builtin verifies that the value it prints is the same as the current directory, even if it is not asked to check the file - system with the `-P' option. + system with the '-P' option. - 44. When listing the history, the `fc' builtin does not include an + 46. When listing the history, the 'fc' builtin does not include an indication of whether or not a history entry has been modified. - 45. The default editor used by `fc' is `ed'. + 47. The default editor used by 'fc' is 'ed'. - 46. The `type' and `command' builtins will not report a non-executable - file as having been found, though the shell will attempt to - execute such a file if it is the only so-named file found in - `$PATH'. + 48. The 'type' and 'command' builtins will not report a non-executable + file as having been found, though the shell will attempt to execute + such a file if it is the only so-named file found in '$PATH'. - 47. The `vi' editing mode will invoke the `vi' editor directly when - the `v' command is run, instead of checking `$VISUAL' and - `$EDITOR'. + 49. The 'vi' editing mode will invoke the 'vi' editor directly when + the 'v' command is run, instead of checking '$VISUAL' and + '$EDITOR'. - 48. When the `xpg_echo' option is enabled, Bash does not attempt to - interpret any arguments to `echo' as options. Each argument is + 50. When the 'xpg_echo' option is enabled, Bash does not attempt to + interpret any arguments to 'echo' as options. Each argument is displayed, after escape characters are converted. - 49. The `ulimit' builtin uses a block size of 512 bytes for the `-c' - and `-f' options. + 51. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' + and '-f' options. - 50. The arrival of `SIGCHLD' when a trap is set on `SIGCHLD' does not - interrupt the `wait' builtin and cause it to return immediately. + 52. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not + interrupt the 'wait' builtin and cause it to return immediately. The trap command is run once for each child that exits. - 51. The `read' builtin may be interrupted by a signal for which a trap + 53. The 'read' builtin may be interrupted by a signal for which a trap has been set. If Bash receives a trapped signal while executing - `read', the trap handler executes and `read' returns an exit - status greater than 128. + 'read', the trap handler executes and 'read' returns an exit status + greater than 128. + There is other POSIX behavior that Bash does not implement by default +even when in POSIX mode. Specifically: - There is other POSIX behavior that Bash does not implement by -default even when in POSIX mode. Specifically: - - 1. The `fc' builtin checks `$EDITOR' as a program to edit history - entries if `FCEDIT' is unset, rather than defaulting directly to - `ed'. `fc' uses `ed' if `EDITOR' is unset. - - 2. As noted above, Bash requires the `xpg_echo' option to be enabled - for the `echo' builtin to be fully conformant. + 1. The 'fc' builtin checks '$EDITOR' as a program to edit history + entries if 'FCEDIT' is unset, rather than defaulting directly to + 'ed'. 'fc' uses 'ed' if 'EDITOR' is unset. + 2. As noted above, Bash requires the 'xpg_echo' option to be enabled + for the 'echo' builtin to be fully conformant. Bash can be configured to be POSIX-conformant by default, by -specifying the `--enable-strict-posix-default' to `configure' when +specifying the '--enable-strict-posix-default' to 'configure' when building (*note Optional Features::).  @@ -6589,77 +6592,76 @@ interface supplied jointly by the operating system kernel's terminal driver and Bash. The shell associates a JOB with each pipeline. It keeps a table of -currently executing jobs, which may be listed with the `jobs' command. +currently executing jobs, which may be listed with the 'jobs' command. When Bash starts a job asynchronously, it prints a line that looks like: [1] 25647 - indicating that this job is job number 1 and that the process ID of -the last process in the pipeline associated with this job is 25647. -All of the processes in a single pipeline are members of the same job. -Bash uses the JOB abstraction as the basis for job control. +indicating that this job is job number 1 and that the process ID of the +last process in the pipeline associated with this job is 25647. All of +the processes in a single pipeline are members of the same job. Bash +uses the JOB abstraction as the basis for job control. To facilitate the implementation of the user interface to job control, the operating system maintains the notion of a current terminal process group ID. Members of this process group (processes whose process group ID is equal to the current terminal process group ID) -receive keyboard-generated signals such as `SIGINT'. These processes +receive keyboard-generated signals such as 'SIGINT'. These processes are said to be in the foreground. Background processes are those whose process group ID differs from the terminal's; such processes are immune -to keyboard-generated signals. Only foreground processes are allowed -to read from or, if the user so specifies with `stty tostop', write to -the terminal. Background processes which attempt to read from (write -to when `stty tostop' is in effect) the terminal are sent a `SIGTTIN' -(`SIGTTOU') signal by the kernel's terminal driver, which, unless +to keyboard-generated signals. Only foreground processes are allowed to +read from or, if the user so specifies with 'stty tostop', write to the +terminal. Background processes which attempt to read from (write to +when 'stty tostop' is in effect) the terminal are sent a 'SIGTTIN' +('SIGTTOU') signal by the kernel's terminal driver, which, unless caught, suspends the process. If the operating system on which Bash is running supports job control, Bash contains facilities to use it. Typing the SUSPEND -character (typically `^Z', Control-Z) while a process is running causes +character (typically '^Z', Control-Z) while a process is running causes that process to be stopped and returns control to Bash. Typing the -DELAYED SUSPEND character (typically `^Y', Control-Y) causes the -process to be stopped when it attempts to read input from the terminal, -and control to be returned to Bash. The user then manipulates the -state of this job, using the `bg' command to continue it in the -background, the `fg' command to continue it in the foreground, or the -`kill' command to kill it. A `^Z' takes effect immediately, and has -the additional side effect of causing pending output and typeahead to -be discarded. +DELAYED SUSPEND character (typically '^Y', Control-Y) causes the process +to be stopped when it attempts to read input from the terminal, and +control to be returned to Bash. The user then manipulates the state of +this job, using the 'bg' command to continue it in the background, the +'fg' command to continue it in the foreground, or the 'kill' command to +kill it. A '^Z' takes effect immediately, and has the additional side +effect of causing pending output and typeahead to be discarded. There are a number of ways to refer to a job in the shell. The -character `%' introduces a job specification (JOBSPEC). +character '%' introduces a job specification (JOBSPEC). - Job number `n' may be referred to as `%n'. The symbols `%%' and -`%+' refer to the shell's notion of the current job, which is the last -job stopped while it was in the foreground or started in the background. -A single `%' (with no accompanying job specification) also refers to -the current job. The previous job may be referenced using `%-'. If -there is only a single job, `%+' and `%-' can both be used to refer to -that job. In output pertaining to jobs (e.g., the output of the `jobs' -command), the current job is always flagged with a `+', and the -previous job with a `-'. + Job number 'n' may be referred to as '%n'. The symbols '%%' and '%+' +refer to the shell's notion of the current job, which is the last job +stopped while it was in the foreground or started in the background. A +single '%' (with no accompanying job specification) also refers to the +current job. The previous job may be referenced using '%-'. If there +is only a single job, '%+' and '%-' can both be used to refer to that +job. In output pertaining to jobs (e.g., the output of the 'jobs' +command), the current job is always flagged with a '+', and the previous +job with a '-'. A job may also be referred to using a prefix of the name used to start it, or using a substring that appears in its command line. For -example, `%ce' refers to a stopped `ce' job. Using `%?ce', on the -other hand, refers to any job containing the string `ce' in its command -line. If the prefix or substring matches more than one job, Bash -reports an error. +example, '%ce' refers to a stopped 'ce' job. Using '%?ce', on the other +hand, refers to any job containing the string 'ce' in its command line. +If the prefix or substring matches more than one job, Bash reports an +error. - Simply naming a job can be used to bring it into the foreground: -`%1' is a synonym for `fg %1', bringing job 1 from the background into -the foreground. Similarly, `%1 &' resumes job 1 in the background, -equivalent to `bg %1' + Simply naming a job can be used to bring it into the foreground: '%1' +is a synonym for 'fg %1', bringing job 1 from the background into the +foreground. Similarly, '%1 &' resumes job 1 in the background, +equivalent to 'bg %1' - The shell learns immediately whenever a job changes state. -Normally, Bash waits until it is about to print a prompt before -reporting changes in a job's status so as to not interrupt any other -output. If the `-b' option to the `set' builtin is enabled, Bash -reports such changes immediately (*note The Set Builtin::). Any trap -on `SIGCHLD' is executed for each child process that exits. + The shell learns immediately whenever a job changes state. Normally, +Bash waits until it is about to print a prompt before reporting changes +in a job's status so as to not interrupt any other output. If the '-b' +option to the 'set' builtin is enabled, Bash reports such changes +immediately (*note The Set Builtin::). Any trap on 'SIGCHLD' is +executed for each child process that exits. If an attempt to exit Bash is made while jobs are stopped, (or -running, if the `checkjobs' option is enabled - see *note The Shopt -Builtin::), the shell prints a warning message, and if the `checkjobs' -option is enabled, lists the jobs and their statuses. The `jobs' +running, if the 'checkjobs' option is enabled - see *note The Shopt +Builtin::), the shell prints a warning message, and if the 'checkjobs' +option is enabled, lists the jobs and their statuses. The 'jobs' command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, Bash does not print another warning, and any stopped jobs are terminated. @@ -6670,76 +6672,76 @@ File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Pre 7.2 Job Control Builtins ======================== -`bg' +'bg' bg [JOBSPEC ...] Resume each suspended job JOBSPEC in the background, as if it had - been started with `&'. If JOBSPEC is not supplied, the current - job is used. The return status is zero unless it is run when job + been started with '&'. If JOBSPEC is not supplied, the current job + is used. The return status is zero unless it is run when job control is not enabled, or, when run with job control enabled, any JOBSPEC was not found or specifies a job that was started without job control. -`fg' +'fg' fg [JOBSPEC] Resume the job JOBSPEC in the foreground and make it the current job. If JOBSPEC is not supplied, the current job is used. The - return status is that of the command placed into the foreground, - or non-zero if run when job control is disabled or, when run with - job control enabled, JOBSPEC does not specify a valid job or - JOBSPEC specifies a job that was started without job control. + return status is that of the command placed into the foreground, or + non-zero if run when job control is disabled or, when run with job + control enabled, JOBSPEC does not specify a valid job or JOBSPEC + specifies a job that was started without job control. -`jobs' +'jobs' jobs [-lnprs] [JOBSPEC] jobs -x COMMAND [ARGUMENTS] The first form lists the active jobs. The options have the following meanings: - `-l' + '-l' List process IDs in addition to the normal information. - `-n' + '-n' Display information only about jobs that have changed status since the user was last notified of their status. - `-p' + '-p' List only the process ID of the job's process group leader. - `-r' + '-r' Display only running jobs. - `-s' + '-s' Display only stopped jobs. - If JOBSPEC is given, output is restricted to information about - that job. If JOBSPEC is not supplied, the status of all jobs is - listed. + If JOBSPEC is given, output is restricted to information about that + job. If JOBSPEC is not supplied, the status of all jobs is listed. - If the `-x' option is supplied, `jobs' replaces any JOBSPEC found + If the '-x' option is supplied, 'jobs' replaces any JOBSPEC found in COMMAND or ARGUMENTS with the corresponding process group ID, and executes COMMAND, passing it ARGUMENTs, returning its exit status. -`kill' +'kill' kill [-s SIGSPEC] [-n SIGNUM] [-SIGSPEC] JOBSPEC or PID - kill -l [EXIT_STATUS] + kill -l|-L [EXIT_STATUS] Send a signal specified by SIGSPEC or SIGNUM to the process named by job specification JOBSPEC or process ID PID. SIGSPEC is either - a case-insensitive signal name such as `SIGINT' (with or without - the `SIG' prefix) or a signal number; SIGNUM is a signal number. - If SIGSPEC and SIGNUM are not present, `SIGTERM' is used. The - `-l' option lists the signal names. If any arguments are supplied - when `-l' is given, the names of the signals corresponding to the + a case-insensitive signal name such as 'SIGINT' (with or without + the 'SIG' prefix) or a signal number; SIGNUM is a signal number. + If SIGSPEC and SIGNUM are not present, 'SIGTERM' is used. The '-l' + option lists the signal names. If any arguments are supplied when + '-l' is given, the names of the signals corresponding to the arguments are listed, and the return status is zero. EXIT_STATUS is a number specifying a signal number or the exit status of a - process terminated by a signal. The return status is zero if at - least one signal was successfully sent, or non-zero if an error - occurs or an invalid option is encountered. + process terminated by a signal. The '-L' option is equivalent to + '-l'. The return status is zero if at least one signal was + successfully sent, or non-zero if an error occurs or an invalid + option is encountered. -`wait' +'wait' wait [-n] [JOBSPEC or PID ...] Wait until the child process specified by each process ID PID or @@ -6747,32 +6749,32 @@ File: bash.info, Node: Job Control Builtins, Next: Job Control Variables, Pre last command waited for. If a job spec is given, all processes in the job are waited for. If no arguments are given, all currently active child processes are waited for, and the return status is - zero. If the `-n' option is supplied, `wait' waits for any job to + zero. If the '-n' option is supplied, 'wait' waits for any job to terminate and returns its exit status. If neither JOBSPEC nor PID specifies an active child process of the shell, the return status is 127. -`disown' - disown [-ar] [-h] [JOBSPEC ...] +'disown' + disown [-ar] [-h] [JOBSPEC ... | PID ... ] Without options, remove each JOBSPEC from the table of active jobs. - If the `-h' option is given, the job is not removed from the table, - but is marked so that `SIGHUP' is not sent to the job if the shell - receives a `SIGHUP'. If JOBSPEC is not present, and neither the - `-a' nor the `-r' option is supplied, the current job is used. If - no JOBSPEC is supplied, the `-a' option means to remove or mark - all jobs; the `-r' option without a JOBSPEC argument restricts + If the '-h' option is given, the job is not removed from the table, + but is marked so that 'SIGHUP' is not sent to the job if the shell + receives a 'SIGHUP'. If JOBSPEC is not present, and neither the + '-a' nor the '-r' option is supplied, the current job is used. If + no JOBSPEC is supplied, the '-a' option means to remove or mark all + jobs; the '-r' option without a JOBSPEC argument restricts operation to running jobs. -`suspend' +'suspend' suspend [-f] - Suspend the execution of this shell until it receives a `SIGCONT' - signal. A login shell cannot be suspended; the `-f' option can be + Suspend the execution of this shell until it receives a 'SIGCONT' + signal. A login shell cannot be suspended; the '-f' option can be used to override this and force the suspension. - When job control is not active, the `kill' and `wait' builtins do -not accept JOBSPEC arguments. They must be supplied process IDs. + When job control is not active, the 'kill' and 'wait' builtins do not +accept JOBSPEC arguments. They must be supplied process IDs.  File: bash.info, Node: Job Control Variables, Prev: Job Control Builtins, Up: Job Control @@ -6780,23 +6782,22 @@ File: bash.info, Node: Job Control Variables, Prev: Job Control Builtins, Up: 7.3 Job Control Variables ========================= -`auto_resume' +'auto_resume' This variable controls how the shell interacts with the user and job control. If this variable exists then single word simple commands without redirections are treated as candidates for resumption of an existing job. There is no ambiguity allowed; if there is more than one job beginning with the string typed, then the most recently accessed job will be selected. The name of a - stopped job, in this context, is the command line used to start - it. If this variable is set to the value `exact', the string - supplied must match the name of a stopped job exactly; if set to - `substring', the string supplied needs to match a substring of the - name of a stopped job. The `substring' value provides - functionality analogous to the `%?' job ID (*note Job Control + stopped job, in this context, is the command line used to start it. + If this variable is set to the value 'exact', the string supplied + must match the name of a stopped job exactly; if set to + 'substring', the string supplied needs to match a substring of the + name of a stopped job. The 'substring' value provides + functionality analogous to the '%?' job ID (*note Job Control Basics::). If set to any other value, the supplied string must be a prefix of a stopped job's name; this provides functionality - analogous to the `%' job ID. - + analogous to the '%' job ID.  File: bash.info, Node: Command Line Editing, Next: Using History Interactively, Prev: Job Control, Up: Top @@ -6808,14 +6809,14 @@ This chapter describes the basic features of the GNU command line editing interface. Command line editing is provided by the Readline library, which is used by several different programs, including Bash. Command line editing is enabled by default when using an interactive -shell, unless the `--noediting' option is supplied at shell invocation. -Line editing is also used when using the `-e' option to the `read' +shell, unless the '--noediting' option is supplied at shell invocation. +Line editing is also used when using the '-e' option to the 'read' builtin command (*note Bash Builtins::). By default, the line editing commands are similar to those of Emacs. A vi-style line editing interface is also available. Line editing can be enabled at any time -using the `-o emacs' or `-o vi' options to the `set' builtin command -(*note The Set Builtin::), or disabled using the `+o emacs' or `+o vi' -options to `set'. +using the '-o emacs' or '-o vi' options to the 'set' builtin command +(*note The Set Builtin::), or disabled using the '+o emacs' or '+o vi' +options to 'set'. * Menu: @@ -6826,7 +6827,6 @@ options to `set'. available for binding * Readline vi Mode:: A short description of how to make Readline behave like the vi editor. - * Programmable Completion:: How to specify the possible completions for a specific command. * Programmable Completion Builtins:: Builtin commands to specify how to @@ -6843,10 +6843,10 @@ File: bash.info, Node: Introduction and Notation, Next: Readline Interaction, The following paragraphs describe the notation used to represent keystrokes. - The text `C-k' is read as `Control-K' and describes the character + The text 'C-k' is read as 'Control-K' and describes the character produced when the key is pressed while the Control key is depressed. - The text `M-k' is read as `Meta-K' and describes the character + The text 'M-k' is read as 'Meta-K' and describes the character produced when the Meta key (if you have one) is depressed, and the key is pressed. The Meta key is labeled on many keyboards. On keyboards with two keys labeled (usually to either side of the @@ -6860,15 +6860,15 @@ Meta key, the identical keystroke can be generated by typing _first_, and then typing . Either process is known as "metafying" the key. - The text `M-C-k' is read as `Meta-Control-k' and describes the -character produced by "metafying" `C-k'. + The text 'M-C-k' is read as 'Meta-Control-k' and describes the +character produced by "metafying" 'C-k'. - In addition, several keys have their own names. Specifically, -, , , , , and all stand for themselves -when seen in this text, or in an init file (*note Readline Init File::). -If your keyboard lacks a key, typing will produce the -desired character. The key may be labeled or on -some keyboards. + In addition, several keys have their own names. Specifically, , +, , , , and all stand for themselves when seen +in this text, or in an init file (*note Readline Init File::). If your +keyboard lacks a key, typing will produce the desired +character. The key may be labeled or on some +keyboards.  File: bash.info, Node: Readline Interaction, Next: Readline Init File, Prev: Introduction and Notation, Up: Command Line Editing @@ -6906,41 +6906,35 @@ character appears where the cursor was, and then the cursor moves one space to the right. If you mistype a character, you can use your erase character to back up and delete the mistyped character. - Sometimes you may mistype a character, and not notice the error -until you have typed several other characters. In that case, you can -type `C-b' to move the cursor to the left, and then correct your -mistake. Afterwards, you can move the cursor to the right with `C-f'. + Sometimes you may mistype a character, and not notice the error until +you have typed several other characters. In that case, you can type +'C-b' to move the cursor to the left, and then correct your mistake. +Afterwards, you can move the cursor to the right with 'C-f'. When you add text in the middle of a line, you will notice that -characters to the right of the cursor are `pushed over' to make room -for the text that you have inserted. Likewise, when you delete text -behind the cursor, characters to the right of the cursor are `pulled -back' to fill in the blank space created by the removal of the text. A -list of the bare essentials for editing the text of an input line -follows. +characters to the right of the cursor are 'pushed over' to make room for +the text that you have inserted. Likewise, when you delete text behind +the cursor, characters to the right of the cursor are 'pulled back' to +fill in the blank space created by the removal of the text. A list of +the bare essentials for editing the text of an input line follows. -`C-b' +'C-b' Move back one character. - -`C-f' +'C-f' Move forward one character. - or Delete the character to the left of the cursor. - -`C-d' +'C-d' Delete the character underneath the cursor. - Printing characters Insert the character into the line at the cursor. - -`C-_' or `C-x C-u' +'C-_' or 'C-x C-u' Undo the last editing command. You can undo all the way back to an empty line. (Depending on your configuration, the key be set to delete the character to the left of the cursor and the key set to delete -the character underneath the cursor, like `C-d', rather than the +the character underneath the cursor, like 'C-d', rather than the character to the left of the cursor.)  @@ -6950,29 +6944,25 @@ File: bash.info, Node: Readline Movement Commands, Next: Readline Killing Comm -------------------------------- The above table describes the most basic keystrokes that you need in -order to do editing of the input line. For your convenience, many -other commands have been added in addition to `C-b', `C-f', `C-d', and -. Here are some commands for moving more rapidly about the line. +order to do editing of the input line. For your convenience, many other +commands have been added in addition to 'C-b', 'C-f', 'C-d', and . +Here are some commands for moving more rapidly about the line. -`C-a' +'C-a' Move to the start of the line. - -`C-e' +'C-e' Move to the end of the line. - -`M-f' +'M-f' Move forward a word, where a word is composed of letters and digits. - -`M-b' +'M-b' Move backward a word. - -`C-l' +'C-l' Clear the screen, reprinting the current line at the top. - Notice how `C-f' moves forward a character, while `M-f' moves -forward a word. It is a loose convention that control keystrokes -operate on characters while meta keystrokes operate on words. + Notice how 'C-f' moves forward a character, while 'M-f' moves forward +a word. It is a loose convention that control keystrokes operate on +characters while meta keystrokes operate on words.  File: bash.info, Node: Readline Killing Commands, Next: Readline Arguments, Prev: Readline Movement Commands, Up: Readline Interaction @@ -6981,51 +6971,49 @@ File: bash.info, Node: Readline Killing Commands, Next: Readline Arguments, P ------------------------------- "Killing" text means to delete the text from the line, but to save it -away for later use, usually by "yanking" (re-inserting) it back into -the line. (`Cut' and `paste' are more recent jargon for `kill' and -`yank'.) +away for later use, usually by "yanking" (re-inserting) it back into the +line. ('Cut' and 'paste' are more recent jargon for 'kill' and 'yank'.) - If the description for a command says that it `kills' text, then you + If the description for a command says that it 'kills' text, then you can be sure that you can get the text back in a different (or the same) place later. - When you use a kill command, the text is saved in a "kill-ring". -Any number of consecutive kills save all of the killed text together, so + When you use a kill command, the text is saved in a "kill-ring". Any +number of consecutive kills save all of the killed text together, so that when you yank it back, you get it all. The kill ring is not line specific; the text that you killed on a previously typed line is -available to be yanked back later, when you are typing another line. +available to be yanked back later, when you are typing another line. Here is the list of commands for killing text. -`C-k' +'C-k' Kill the text from the current cursor position to the end of the line. -`M-d' +'M-d' Kill from the cursor to the end of the current word, or, if between words, to the end of the next word. Word boundaries are the same - as those used by `M-f'. + as those used by 'M-f'. -`M-' +'M-' Kill from the cursor the start of the current word, or, if between words, to the start of the previous word. Word boundaries are the - same as those used by `M-b'. - -`C-w' - Kill from the cursor to the previous whitespace. This is - different than `M-' because the word boundaries differ. + same as those used by 'M-b'. +'C-w' + Kill from the cursor to the previous whitespace. This is different + than 'M-' because the word boundaries differ. Here is how to "yank" the text back into the line. Yanking means to copy the most-recently-killed text from the kill buffer. -`C-y' +'C-y' Yank the most recently killed text back into the buffer at the cursor. -`M-y' +'M-y' Rotate the kill-ring, and yank the new top. You can only do this - if the prior command is `C-y' or `M-y'. + if the prior command is 'C-y' or 'M-y'.  File: bash.info, Node: Readline Arguments, Next: Searching, Prev: Readline Killing Commands, Up: Readline Interaction @@ -7038,15 +7026,15 @@ argument acts as a repeat count, other times it is the sign of the argument that is significant. If you pass a negative argument to a command which normally acts in a forward direction, that command will act in a backward direction. For example, to kill text back to the -start of the line, you might type `M-- C-k'. +start of the line, you might type 'M-- C-k'. The general way to pass numeric arguments to a command is to type -meta digits before the command. If the first `digit' typed is a minus -sign (`-'), then the sign of the argument will be negative. Once you +meta digits before the command. If the first 'digit' typed is a minus +sign ('-'), then the sign of the argument will be negative. Once you have typed one meta digit to get the argument started, you can type the -remainder of the digits, and then the command. For example, to give -the `C-d' command an argument of 10, you could type `M-1 0 C-d', which -will delete the next ten characters on the input line. +remainder of the digits, and then the command. For example, to give the +'C-d' command an argument of 10, you could type 'M-1 0 C-d', which will +delete the next ten characters on the input line.  File: bash.info, Node: Searching, Prev: Readline Arguments, Up: Readline Interaction @@ -7056,35 +7044,35 @@ File: bash.info, Node: Searching, Prev: Readline Arguments, Up: Readline Inte Readline provides commands for searching through the command history (*note Bash History Facilities::) for lines containing a specified -string. There are two search modes: "incremental" and +string. There are two search modes: "incremental" and "non-incremental". Incremental searches begin before the user has finished typing the search string. As each character of the search string is typed, Readline displays the next entry from the history matching the string -typed so far. An incremental search requires only as many characters -as needed to find the desired history entry. To search backward in the -history for a particular string, type `C-r'. Typing `C-s' searches -forward through the history. The characters present in the value of -the `isearch-terminators' variable are used to terminate an incremental +typed so far. An incremental search requires only as many characters as +needed to find the desired history entry. To search backward in the +history for a particular string, type 'C-r'. Typing 'C-s' searches +forward through the history. The characters present in the value of the +'isearch-terminators' variable are used to terminate an incremental search. If that variable has not been assigned a value, the and -`C-J' characters will terminate an incremental search. `C-g' will -abort an incremental search and restore the original line. When the -search is terminated, the history entry containing the search string -becomes the current line. +'C-J' characters will terminate an incremental search. 'C-g' will abort +an incremental search and restore the original line. When the search is +terminated, the history entry containing the search string becomes the +current line. - To find other matching entries in the history list, type `C-r' or -`C-s' as appropriate. This will search backward or forward in the -history for the next entry matching the search string typed so far. -Any other key sequence bound to a Readline command will terminate the -search and execute that command. For instance, a will terminate -the search and accept the line, thereby executing the command from the + To find other matching entries in the history list, type 'C-r' or +'C-s' as appropriate. This will search backward or forward in the +history for the next entry matching the search string typed so far. Any +other key sequence bound to a Readline command will terminate the search +and execute that command. For instance, a will terminate the +search and accept the line, thereby executing the command from the history list. A movement command will terminate the search, make the last line found the current line, and begin editing. - Readline remembers the last incremental search string. If two -`C-r's are typed without any intervening characters defining a new -search string, any remembered search string is used. + Readline remembers the last incremental search string. If two 'C-r's +are typed without any intervening characters defining a new search +string, any remembered search string is used. Non-incremental searches read the entire search string before starting to search for matching history lines. The search string may be @@ -7096,19 +7084,19 @@ File: bash.info, Node: Readline Init File, Next: Bindable Readline Commands, 8.3 Readline Init File ====================== -Although the Readline library comes with a set of Emacs-like -keybindings installed by default, it is possible to use a different set -of keybindings. Any user can customize programs that use Readline by +Although the Readline library comes with a set of Emacs-like keybindings +installed by default, it is possible to use a different set of +keybindings. Any user can customize programs that use Readline by putting commands in an "inputrc" file, conventionally in his home directory. The name of this file is taken from the value of the shell -variable `INPUTRC'. If that variable is unset, the default is -`~/.inputrc'. If that file does not exist or cannot be read, the -ultimate default is `/etc/inputrc'. +variable 'INPUTRC'. If that variable is unset, the default is +'~/.inputrc'. If that file does not exist or cannot be read, the +ultimate default is '/etc/inputrc'. When a program which uses the Readline library starts up, the init file is read, and the key bindings are set. - In addition, the `C-x C-r' command re-reads this init file, thus + In addition, the 'C-x C-r' command re-reads this init file, thus incorporating any changes that you might have made to it. * Menu: @@ -7125,21 +7113,21 @@ File: bash.info, Node: Readline Init File Syntax, Next: Conditional Init Const 8.3.1 Readline Init File Syntax ------------------------------- -There are only a few basic constructs allowed in the Readline init -file. Blank lines are ignored. Lines beginning with a `#' are -comments. Lines beginning with a `$' indicate conditional constructs -(*note Conditional Init Constructs::). Other lines denote variable -settings and key bindings. +There are only a few basic constructs allowed in the Readline init file. +Blank lines are ignored. Lines beginning with a '#' are comments. +Lines beginning with a '$' indicate conditional constructs (*note +Conditional Init Constructs::). Other lines denote variable settings +and key bindings. Variable Settings You can modify the run-time behavior of Readline by altering the - values of variables in Readline using the `set' command within the + values of variables in Readline using the 'set' command within the init file. The syntax is simple: set VARIABLE VALUE - Here, for example, is how to change from the default Emacs-like - key binding to use `vi' line editing commands: + Here, for example, is how to change from the default Emacs-like key + binding to use 'vi' line editing commands: set editing-mode vi @@ -7147,266 +7135,311 @@ Variable Settings without regard to case. Unrecognized variable names are ignored. Boolean variables (those that can be set to on or off) are set to - on if the value is null or empty, ON (case-insensitive), or 1. - Any other value results in the variable being set to off. + on if the value is null or empty, ON (case-insensitive), or 1. Any + other value results in the variable being set to off. - The `bind -V' command lists the current Readline variable names - and values. *Note Bash Builtins::. + The 'bind -V' command lists the current Readline variable names and + values. *Note Bash Builtins::. A great deal of run-time behavior is changeable with the following variables. - `bell-style' - Controls what happens when Readline wants to ring the - terminal bell. If set to `none', Readline never rings the - bell. If set to `visible', Readline uses a visible bell if - one is available. If set to `audible' (the default), - Readline attempts to ring the terminal's bell. + 'bell-style' + Controls what happens when Readline wants to ring the terminal + bell. If set to 'none', Readline never rings the bell. If + set to 'visible', Readline uses a visible bell if one is + available. If set to 'audible' (the default), Readline + attempts to ring the terminal's bell. - `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. + '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. - `blink-matching-paren' - If set to `on', Readline attempts to briefly move the cursor - to an opening parenthesis when a closing parenthsis is - inserted. The default is `off'. + 'blink-matching-paren' + If set to 'on', Readline attempts to briefly move the cursor + to an opening parenthesis when a closing parenthesis is + inserted. The default is 'off'. - `colored-stats' - If set to `on', Readline displays possible completions using + 'colored-completion-prefix' + If set to 'on', when listing completions, Readline displays + the common prefix of the set of possible completions using a + different color. The color definitions are taken from the + value of the 'LS_COLORS' environment variable. The default is + 'off'. + + 'colored-stats' + If set to 'on', Readline displays possible completions using different colors to indicate their file type. The color - definitions are taken from the value of the `LS_COLORS' - environment variable. The default is `off'. + definitions are taken from the value of the 'LS_COLORS' + environment variable. The default is 'off'. - `comment-begin' + 'comment-begin' The string to insert at the beginning of the line when the - `insert-comment' command is executed. The default value is - `"#"'. + 'insert-comment' command is executed. The default value is + '"#"'. - `completion-display-width' + 'completion-display-width' The number of screen columns used to display possible matches when performing completion. The value is ignored if it is less than 0 or greater than the terminal screen width. A value of 0 will cause matches to be displayed one per line. The default value is -1. - `completion-ignore-case' - If set to `on', Readline performs filename matching and + 'completion-ignore-case' + If set to 'on', Readline performs filename matching and completion in a case-insensitive fashion. The default value - is `off'. + is 'off'. - `completion-map-case' - If set to `on', and COMPLETION-IGNORE-CASE is enabled, - Readline treats hyphens (`-') and underscores (`_') as + 'completion-map-case' + If set to 'on', and COMPLETION-IGNORE-CASE is enabled, + Readline treats hyphens ('-') and underscores ('_') as equivalent when performing case-insensitive filename matching and completion. - `completion-prefix-display-length' + 'completion-prefix-display-length' The length in characters of the common prefix of a list of possible completions that is displayed without modification. When set to a value greater than zero, common prefixes longer than this value are replaced with an ellipsis when displaying possible completions. - `completion-query-items' + 'completion-query-items' The number of possible completions that determines when the user is asked whether the list of possibilities should be displayed. If the number of possible completions is greater than this value, Readline will ask the user whether or not he wishes to view them; otherwise, they are simply listed. This - variable must be set to an integer value greater than or - equal to 0. A negative value means Readline should never ask. - The default limit is `100'. + variable must be set to an integer value greater than or equal + to 0. A negative value means Readline should never ask. The + default limit is '100'. - `convert-meta' - If set to `on', Readline will convert characters with the + 'convert-meta' + If set to 'on', Readline will convert characters with the eighth bit set to an ASCII key sequence by stripping the eighth bit and prefixing an character, converting them - to a meta-prefixed key sequence. The default value is `on'. + to a meta-prefixed key sequence. The default value is 'on'. - `disable-completion' - If set to `On', Readline will inhibit word completion. - Completion characters will be inserted into the line as if - they had been mapped to `self-insert'. The default is `off'. + 'disable-completion' + If set to 'On', Readline will inhibit word completion. + Completion characters will be inserted into the line as if + they had been mapped to 'self-insert'. The default is 'off'. - `editing-mode' - The `editing-mode' variable controls which default set of key + 'editing-mode' + The 'editing-mode' variable controls which default set of key bindings is used. By default, Readline starts up in Emacs editing mode, where the keystrokes are most similar to Emacs. - This variable can be set to either `emacs' or `vi'. + This variable can be set to either 'emacs' or 'vi'. - `echo-control-characters' - When set to `on', on operating systems that indicate they + 'emacs-mode-string' + This string is displayed immediately before the last line of + the primary prompt when emacs editing mode is active. The + value is expanded like a key binding, so the standard set of + meta- and control prefixes and backslash escape sequences is + available. Use the '\1' and '\2' escapes to begin and end + sequences of non-printing characters, which can be used to + embed a terminal control sequence into the mode string. The + default is '@'. + + 'echo-control-characters' + When set to 'on', on operating systems that indicate they support it, readline echoes a character corresponding to a - signal generated from the keyboard. The default is `on'. + signal generated from the keyboard. The default is 'on'. - `enable-keypad' - When set to `on', Readline will try to enable the application + 'enable-bracketed-paste' + When set to 'On', Readline will configure the terminal in a + way that will enable it to insert each paste into the editing + buffer as a single string of characters, instead of treating + each character as if it had been read from the keyboard. This + can prevent pasted characters from being interpreted as + editing commands. The default is 'off'. + + 'enable-keypad' + When set to 'on', Readline will try to enable the application keypad when it is called. Some systems need this to enable - the arrow keys. The default is `off'. + the arrow keys. The default is 'off'. - `enable-meta-key' - When set to `on', Readline will try to enable any meta - modifier key the terminal claims to support when it is - called. On many terminals, the meta key is used to send - eight-bit characters. The default is `on'. + 'enable-meta-key' + When set to 'on', Readline will try to enable any meta + modifier key the terminal claims to support when it is called. + On many terminals, the meta key is used to send eight-bit + characters. The default is 'on'. - `expand-tilde' - If set to `on', tilde expansion is performed when Readline - attempts word completion. The default is `off'. + 'expand-tilde' + If set to 'on', tilde expansion is performed when Readline + attempts word completion. The default is 'off'. - `history-preserve-point' - If set to `on', the history code attempts to place the point + 'history-preserve-point' + If set to 'on', the history code attempts to place the point (the current cursor position) at the same location on each - history line retrieved with `previous-history' or - `next-history'. The default is `off'. + history line retrieved with 'previous-history' or + 'next-history'. The default is 'off'. - `history-size' - Set the maximum number of history entries saved in the - history list. If set to zero, any existing history entries - are deleted and no new entries are saved. If set to a value - less than zero, the number of history entries is not limited. - By default, the number of history entries is not limited. + 'history-size' + Set the maximum number of history entries saved in the history + list. If set to zero, any existing history entries are + deleted and no new entries are saved. If set to a value less + than zero, the number of history entries is not limited. By + default, the number of history entries is not limited. - `horizontal-scroll-mode' - This variable can be set to either `on' or `off'. Setting it - to `on' means that the text of the lines being edited will + 'horizontal-scroll-mode' + This variable can be set to either 'on' or 'off'. Setting it + to 'on' means that the text of the lines being edited will scroll horizontally on a single screen line when they are longer than the width of the screen, instead of wrapping onto - a new screen line. By default, this variable is set to `off'. + a new screen line. By default, this variable is set to 'off'. - `input-meta' - If set to `on', Readline will enable eight-bit input (it will + 'input-meta' + If set to 'on', Readline will enable eight-bit input (it will not clear the eighth bit in the characters it reads), regardless of what the terminal claims it can support. The - default value is `off'. The name `meta-flag' is a synonym - for this variable. + default value is 'off'. The name 'meta-flag' is a synonym for + this variable. - `isearch-terminators' + 'isearch-terminators' The string of characters that should terminate an incremental search without subsequently executing the character as a command (*note Searching::). If this variable has not been - given a value, the characters and `C-J' will terminate + given a value, the characters and 'C-J' will terminate an incremental search. - `keymap' + 'keymap' Sets Readline's idea of the current keymap for key binding - commands. Acceptable `keymap' names are `emacs', - `emacs-standard', `emacs-meta', `emacs-ctlx', `vi', `vi-move', - `vi-command', and `vi-insert'. `vi' is equivalent to - `vi-command'; `emacs' is equivalent to `emacs-standard'. The - default value is `emacs'. The value of the `editing-mode' + commands. Acceptable 'keymap' names are 'emacs', + 'emacs-standard', 'emacs-meta', 'emacs-ctlx', 'vi', 'vi-move', + 'vi-command', and 'vi-insert'. 'vi' is equivalent to + 'vi-command'; 'emacs' is equivalent to 'emacs-standard'. The + default value is 'emacs'. The value of the 'editing-mode' variable also affects the default keymap. - `keyseq-timeout' - Specifies the duration Readline will wait for a character - when reading an ambiguous key sequence (one that can form a - complete key sequence using the input read so far, or can - take additional input to complete a longer key sequence). If - no input is received within the timeout, Readline will use - the shorter but complete key sequence. Readline uses this - value to determine whether or not input is available on the - current input source (`rl_instream' by default). The value - is specified in milliseconds, so a value of 1000 means that + 'keyseq-timeout' + Specifies the duration Readline will wait for a character when + reading an ambiguous key sequence (one that can form a + complete key sequence using the input read so far, or can take + additional input to complete a longer key sequence). If no + input is received within the timeout, Readline will use the + shorter but complete key sequence. Readline uses this value + to determine whether or not input is available on the current + input source ('rl_instream' by default). The value is + specified in milliseconds, so a value of 1000 means that Readline will wait one second for additional input. If this variable is set to a value less than or equal to zero, or to a non-numeric value, Readline will wait until another key is - pressed to decide which key sequence to complete. The - default value is `500'. + pressed to decide which key sequence to complete. The default + value is '500'. - `mark-directories' - If set to `on', completed directory names have a slash - appended. The default is `on'. + 'mark-directories' + If set to 'on', completed directory names have a slash + appended. The default is 'on'. - `mark-modified-lines' - This variable, when set to `on', causes Readline to display an - asterisk (`*') at the start of history lines which have been - modified. This variable is `off' by default. + 'mark-modified-lines' + This variable, when set to 'on', causes Readline to display an + asterisk ('*') at the start of history lines which have been + modified. This variable is 'off' by default. - `mark-symlinked-directories' - If set to `on', completed names which are symbolic links to + 'mark-symlinked-directories' + If set to 'on', completed names which are symbolic links to directories have a slash appended (subject to the value of - `mark-directories'). The default is `off'. + 'mark-directories'). The default is 'off'. - `match-hidden-files' - This variable, when set to `on', causes Readline to match - files whose names begin with a `.' (hidden files) when - performing filename completion. If set to `off', the leading - `.' must be supplied by the user in the filename to be - completed. This variable is `on' by default. + 'match-hidden-files' + This variable, when set to 'on', causes Readline to match + files whose names begin with a '.' (hidden files) when + performing filename completion. If set to 'off', the leading + '.' must be supplied by the user in the filename to be + completed. This variable is 'on' by default. - `menu-complete-display-prefix' - If set to `on', menu completion displays the common prefix of + 'menu-complete-display-prefix' + If set to 'on', menu completion displays the common prefix of the list of possible completions (which may be empty) before - cycling through the list. The default is `off'. + cycling through the list. The default is 'off'. - `output-meta' - If set to `on', Readline will display characters with the + 'output-meta' + If set to 'on', Readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape - sequence. The default is `off'. + sequence. The default is 'off'. - `page-completions' - If set to `on', Readline uses an internal `more'-like pager - to display a screenful of possible completions at a time. - This variable is `on' by default. + 'page-completions' + If set to 'on', Readline uses an internal 'more'-like pager to + display a screenful of possible completions at a time. This + variable is 'on' by default. - `print-completions-horizontally' - If set to `on', Readline will display completions with matches + 'print-completions-horizontally' + If set to 'on', Readline will display completions with matches sorted horizontally in alphabetical order, rather than down - the screen. The default is `off'. + the screen. The default is 'off'. - `revert-all-at-newline' - If set to `on', Readline will undo all changes to history - lines before returning when `accept-line' is executed. By + 'revert-all-at-newline' + If set to 'on', Readline will undo all changes to history + lines before returning when 'accept-line' is executed. By default, history lines may be modified and retain individual - undo lists across calls to `readline'. The default is `off'. + undo lists across calls to 'readline'. The default is 'off'. - `show-all-if-ambiguous' + 'show-all-if-ambiguous' This alters the default behavior of the completion functions. - If set to `on', words which have more than one possible + If set to 'on', words which have more than one possible completion cause the matches to be listed immediately instead - of ringing the bell. The default value is `off'. + of ringing the bell. The default value is 'off'. - `show-all-if-unmodified' + 'show-all-if-unmodified' This alters the default behavior of the completion functions in a fashion similar to SHOW-ALL-IF-AMBIGUOUS. If set to - `on', words which have more than one possible completion + 'on', words which have more than one possible completion without any possible partial completion (the possible completions don't share a common prefix) cause the matches to be listed immediately instead of ringing the bell. The - default value is `off'. + default value is 'off'. - `show-mode-in-prompt' - If set to `on', add a character to the beginning of the prompt - indicating the editing mode: emacs (`@'), vi command (`:'), - or vi insertion (`+'). The default value is `off'. + 'show-mode-in-prompt' + If set to 'on', add a character to the beginning of the prompt + indicating the editing mode: emacs, vi command, or vi + insertion. The mode strings are user-settable. The default + value is 'off'. - `skip-completed-text' - If set to `on', this alters the default completion behavior - when inserting a single match into the line. It's only - active when performing completion in the middle of a word. - If enabled, readline does not insert characters from the - completion that match characters after point in the word - being completed, so portions of the word following the cursor - are not duplicated. For instance, if this is enabled, - attempting completion when the cursor is after the `e' in - `Makefile' will result in `Makefile' rather than - `Makefilefile', assuming there is a single possible - completion. The default value is `off'. + 'skip-completed-text' + If set to 'on', this alters the default completion behavior + when inserting a single match into the line. It's only active + when performing completion in the middle of a word. If + enabled, readline does not insert characters from the + completion that match characters after point in the word being + completed, so portions of the word following the cursor are + not duplicated. For instance, if this is enabled, attempting + completion when the cursor is after the 'e' in 'Makefile' will + result in 'Makefile' rather than 'Makefilefile', assuming + there is a single possible completion. The default value is + 'off'. - `visible-stats' - If set to `on', a character denoting a file's type is - appended to the filename when listing possible completions. - The default is `off'. + 'vi-cmd-mode-string' + This string is displayed immediately before the last line of + the primary prompt when vi editing mode is active and in + command mode. The value is expanded like a key binding, so + the standard set of meta- and control prefixes and backslash + escape sequences is available. Use the '\1' and '\2' escapes + to begin and end sequences of non-printing characters, which + can be used to embed a terminal control sequence into the mode + string. The default is '(cmd)'. + 'vi-ins-mode-string' + This string is displayed immediately before the last line of + the primary prompt when vi editing mode is active and in + insertion mode. The value is expanded like a key binding, so + the standard set of meta- and control prefixes and backslash + escape sequences is available. Use the '\1' and '\2' escapes + to begin and end sequences of non-printing characters, which + can be used to embed a terminal control sequence into the mode + string. The default is '(ins)'. + + 'visible-stats' + If set to 'on', a character denoting a file's type is appended + to the filename when listing possible completions. The + default is 'off'. Key Bindings - The syntax for controlling key bindings in the init file is - simple. First you need to find the name of the command that you - want to change. The following sections contain tables of the - command name, the default keybinding, if any, and a short - description of what the command does. + The syntax for controlling key bindings in the init file is simple. + First you need to find the name of the command that you want to + change. The following sections contain tables of the command name, + the default keybinding, if any, and a short description of what the + command does. Once you know the name of the command, simply place on a line in the init file the name of the key you wish to bind the command to, @@ -7415,31 +7448,31 @@ Key Bindings part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable. - In addition to command names, readline allows keys to be bound to - a string that is inserted when the key is pressed (a MACRO). + In addition to command names, readline allows keys to be bound to a + string that is inserted when the key is pressed (a MACRO). - The `bind -p' command displays Readline function names and - bindings in a format that can put directly into an initialization - file. *Note Bash Builtins::. + The 'bind -p' command displays Readline function names and bindings + in a format that can put directly into an initialization file. + *Note Bash Builtins::. - KEYNAME: FUNCTION-NAME or MACRO + KEYNAME: FUNCTION-NAME or MACRO KEYNAME is the name of a key spelled out in English. For example: Control-u: universal-argument Meta-Rubout: backward-kill-word Control-o: "> output" - In the above example, `C-u' is bound to the function - `universal-argument', `M-DEL' is bound to the function - `backward-kill-word', and `C-o' is bound to run the macro + In the above example, 'C-u' is bound to the function + 'universal-argument', 'M-DEL' is bound to the function + 'backward-kill-word', and 'C-o' is bound to run the macro expressed on the right hand side (that is, to insert the text - `> output' into the line). + '> output' into the line). A number of symbolic character names are recognized while processing this key binding syntax: DEL, ESC, ESCAPE, LFD, NEWLINE, RET, RETURN, RUBOUT, SPACE, SPC, and TAB. - "KEYSEQ": FUNCTION-NAME or MACRO + "KEYSEQ": FUNCTION-NAME or MACRO KEYSEQ differs from KEYNAME above in that strings denoting an entire key sequence can be specified, by placing the key sequence in double quotes. Some GNU Emacs style key escapes @@ -7450,66 +7483,51 @@ Key Bindings "\C-x\C-r": re-read-init-file "\e[11~": "Function Key 1" - In the above example, `C-u' is again bound to the function - `universal-argument' (just as it was in the first example), - `C-x C-r' is bound to the function `re-read-init-file', and - ` <[> <1> <1> <~>' is bound to insert the text `Function - Key 1'. - + In the above example, 'C-u' is again bound to the function + 'universal-argument' (just as it was in the first example), + ''C-x' 'C-r'' is bound to the function 're-read-init-file', + and ' <[> <1> <1> <~>' is bound to insert the text + 'Function Key 1'. The following GNU Emacs style escape sequences are available when specifying key sequences: - `\C-' + '\C-' control prefix - - `\M-' + '\M-' meta prefix - - `\e' + '\e' an escape character - - `\\' + '\\' backslash - - `\"' + '\"' <">, a double quotation mark - - `\'' + '\'' <'>, a single quote or apostrophe In addition to the GNU Emacs style escape sequences, a second set of backslash escapes is available: - `\a' + '\a' alert (bell) - - `\b' + '\b' backspace - - `\d' + '\d' delete - - `\f' + '\f' form feed - - `\n' + '\n' newline - - `\r' + '\r' carriage return - - `\t' + '\t' horizontal tab - - `\v' + '\v' vertical tab - - `\NNN' + '\NNN' the eight-bit character whose value is the octal value NNN (one to three digits) - - `\xHH' + '\xHH' the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) @@ -7517,12 +7535,11 @@ Key Bindings used to indicate a macro definition. Unquoted text is assumed to be a function name. In the macro body, the backslash escapes described above are expanded. Backslash will quote any other - character in the macro text, including `"' and `''. For example, - the following binding will make `C-x \' insert a single `\' into + character in the macro text, including '"' and '''. For example, + the following binding will make ''C-x' \' insert a single '\' into the line: "\C-x\\": "\\" -  File: bash.info, Node: Conditional Init Constructs, Next: Sample Init File, Prev: Readline Init File Syntax, Up: Readline Init File @@ -7530,33 +7547,32 @@ File: bash.info, Node: Conditional Init Constructs, Next: Sample Init File, P --------------------------------- Readline implements a facility similar in spirit to the conditional -compilation features of the C preprocessor which allows key bindings -and variable settings to be performed as the result of tests. There -are four parser directives used. +compilation features of the C preprocessor which allows key bindings and +variable settings to be performed as the result of tests. There are +four parser directives used. -`$if' - The `$if' construct allows bindings to be made based on the - editing mode, the terminal being used, or the application using - Readline. The text of the test extends to the end of the line; no - characters are required to isolate it. +'$if' + The '$if' construct allows bindings to be made based on the editing + mode, the terminal being used, or the application using Readline. + The text of the test extends to the end of the line; no characters + are required to isolate it. - `mode' - The `mode=' form of the `$if' directive is used to test - whether Readline is in `emacs' or `vi' mode. This may be - used in conjunction with the `set keymap' command, for - instance, to set bindings in the `emacs-standard' and - `emacs-ctlx' keymaps only if Readline is starting out in - `emacs' mode. + 'mode' + The 'mode=' form of the '$if' directive is used to test + whether Readline is in 'emacs' or 'vi' mode. This may be used + in conjunction with the 'set keymap' command, for instance, to + set bindings in the 'emacs-standard' and 'emacs-ctlx' keymaps + only if Readline is starting out in 'emacs' mode. - `term' - The `term=' form may be used to include terminal-specific key + 'term' + The 'term=' form may be used to include terminal-specific key bindings, perhaps to bind the key sequences output by the terminal's function keys. The word on the right side of the - `=' is tested against both the full name of the terminal and - the portion of the terminal name before the first `-'. This - allows `sun' to match both `sun' and `sun-cmd', for instance. + '=' is tested against both the full name of the terminal and + the portion of the terminal name before the first '-'. This + allows 'sun' to match both 'sun' and 'sun-cmd', for instance. - `application' + 'application' The APPLICATION construct is used to include application-specific settings. Each program using the Readline library sets the APPLICATION NAME, and you can test @@ -7569,18 +7585,18 @@ are four parser directives used. "\C-xq": "\eb\"\ef\"" $endif -`$endif' - This command, as seen in the previous example, terminates an `$if' +'$endif' + This command, as seen in the previous example, terminates an '$if' command. -`$else' - Commands in this branch of the `$if' directive are executed if the +'$else' + Commands in this branch of the '$if' directive are executed if the test fails. -`$include' +'$include' This directive takes a single filename as an argument and reads commands and bindings from that file. For example, the following - directive reads from `/etc/inputrc': + directive reads from '/etc/inputrc': $include /etc/inputrc  @@ -7592,7 +7608,6 @@ File: bash.info, Node: Sample Init File, Prev: Conditional Init Constructs, U Here is an example of an INPUTRC file. This illustrates key binding, variable assignment, and conditional syntax. - # This file controls the behaviour of line input editing for # programs that use the GNU Readline library. Existing # programs include FTP, Bash, and GDB. @@ -7710,16 +7725,16 @@ File: bash.info, Node: Bindable Readline Commands, Next: Readline vi Mode, Pr * Keyboard Macros:: Saving and re-executing typed characters * Miscellaneous Commands:: Other miscellaneous commands. - This section describes Readline commands that may be bound to key -sequences. You can list your key bindings by executing `bind -P' or, -for a more terse format, suitable for an INPUTRC file, `bind -p'. +This section describes Readline commands that may be bound to key +sequences. You can list your key bindings by executing 'bind -P' or, +for a more terse format, suitable for an INPUTRC file, 'bind -p'. (*Note Bash Builtins::.) Command names without an accompanying key sequence are unbound by default. In the following descriptions, "point" refers to the current cursor -position, and "mark" refers to a cursor position saved by the -`set-mark' command. The text between the point and mark is referred to -as the "region". +position, and "mark" refers to a cursor position saved by the 'set-mark' +command. The text between the point and mark is referred to as the +"region".  File: bash.info, Node: Commands For Moving, Next: Commands For History, Up: Bindable Readline Commands @@ -7727,135 +7742,132 @@ File: bash.info, Node: Commands For Moving, Next: Commands For History, Up: B 8.4.1 Commands For Moving ------------------------- -`beginning-of-line (C-a)' +'beginning-of-line (C-a)' Move to the start of the current line. -`end-of-line (C-e)' +'end-of-line (C-e)' Move to the end of the line. -`forward-char (C-f)' +'forward-char (C-f)' Move forward a character. -`backward-char (C-b)' +'backward-char (C-b)' Move back a character. -`forward-word (M-f)' +'forward-word (M-f)' Move forward to the end of the next word. Words are composed of letters and digits. -`backward-word (M-b)' +'backward-word (M-b)' Move back to the start of the current or previous word. Words are composed of letters and digits. -`shell-forward-word ()' +'shell-forward-word ()' Move forward to the end of the next word. Words are delimited by non-quoted shell metacharacters. -`shell-backward-word ()' +'shell-backward-word ()' Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. -`clear-screen (C-l)' +'clear-screen (C-l)' Clear the screen and redraw the current line, leaving the current line at the top of the screen. -`redraw-current-line ()' +'redraw-current-line ()' Refresh the current line. By default, this is unbound. -  File: bash.info, Node: Commands For History, Next: Commands For Text, Prev: Commands For Moving, Up: Bindable Readline Commands 8.4.2 Commands For Manipulating The History ------------------------------------------- -`accept-line (Newline or Return)' +'accept-line (Newline or Return)' Accept the line regardless of where the cursor is. If this line is non-empty, add it to the history list according to the setting of - the `HISTCONTROL' and `HISTIGNORE' variables. If this line is a + the 'HISTCONTROL' and 'HISTIGNORE' variables. If this line is a modified history line, then restore the history line to its original state. -`previous-history (C-p)' - Move `back' through the history list, fetching the previous +'previous-history (C-p)' + Move 'back' through the history list, fetching the previous command. -`next-history (C-n)' - Move `forward' through the history list, fetching the next command. +'next-history (C-n)' + Move 'forward' through the history list, fetching the next command. -`beginning-of-history (M-<)' +'beginning-of-history (M-<)' Move to the first line in the history. -`end-of-history (M->)' +'end-of-history (M->)' Move to the end of the input history, i.e., the line currently being entered. -`reverse-search-history (C-r)' - Search backward starting at the current line and moving `up' +'reverse-search-history (C-r)' + Search backward starting at the current line and moving 'up' through the history as necessary. This is an incremental search. -`forward-search-history (C-s)' - Search forward starting at the current line and moving `down' +'forward-search-history (C-s)' + Search forward starting at the current line and moving 'down' through the history as necessary. This is an incremental search. -`non-incremental-reverse-search-history (M-p)' - Search backward starting at the current line and moving `up' - through the history as necessary using a non-incremental search - for a string supplied by the user. The search string may match +'non-incremental-reverse-search-history (M-p)' + Search backward starting at the current line and moving 'up' + through the history as necessary using a non-incremental search for + a string supplied by the user. The search string may match anywhere in a history line. -`non-incremental-forward-search-history (M-n)' - Search forward starting at the current line and moving `down' - through the history as necessary using a non-incremental search - for a string supplied by the user. The search string may match +'non-incremental-forward-search-history (M-n)' + Search forward starting at the current line and moving 'down' + through the history as necessary using a non-incremental search for + a string supplied by the user. The search string may match anywhere in a history line. -`history-search-forward ()' +'history-search-forward ()' Search forward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. -`history-search-backward ()' +'history-search-backward ()' Search backward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. -`history-substr-search-forward ()' +'history-substr-search-forward ()' Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. -`history-substr-search-backward ()' +'history-substr-search-backward ()' Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. -`yank-nth-arg (M-C-y)' +'yank-nth-arg (M-C-y)' Insert the first argument to the previous command (usually the second word on the previous line) at point. With an argument N, insert the Nth word from the previous command (the words in the previous command begin with word 0). A negative argument inserts the Nth word from the end of the previous command. Once the - argument N is computed, the argument is extracted as if the `!N' + argument N is computed, the argument is extracted as if the '!N' history expansion had been specified. -`yank-last-arg (M-. or M-_)' +'yank-last-arg (M-. or M-_)' Insert last argument to the previous command (the last word of the previous history entry). With a numeric argument, behave exactly - like `yank-nth-arg'. Successive calls to `yank-last-arg' move - back through the history list, inserting the last word (or the - word specified by the argument to the first call) of each line in - turn. Any numeric argument supplied to these successive calls - determines the direction to move through the history. A negative - argument switches the direction through the history (back or - forward). The history expansion facilities are used to extract - the last argument, as if the `!$' history expansion had been - specified. - + like 'yank-nth-arg'. Successive calls to 'yank-last-arg' move back + through the history list, inserting the last word (or the word + specified by the argument to the first call) of each line in turn. + Any numeric argument supplied to these successive calls determines + the direction to move through the history. A negative argument + switches the direction through the history (back or forward). The + history expansion facilities are used to extract the last argument, + as if the '!$' history expansion had been specified.  File: bash.info, Node: Commands For Text, Next: Commands For Killing, Prev: Commands For History, Up: Bindable Readline Commands @@ -7863,145 +7875,153 @@ File: bash.info, Node: Commands For Text, Next: Commands For Killing, Prev: C 8.4.3 Commands For Changing Text -------------------------------- -`end-of-file (usually C-d)' +'end-of-file (usually C-d)' The character indicating end-of-file as set, for example, by - `stty'. If this character is read when there are no characters on + 'stty'. If this character is read when there are no characters on the line, and point is at the beginning of the line, Readline interprets it as the end of input and returns EOF. -`delete-char (C-d)' +'delete-char (C-d)' Delete the character at point. If this function is bound to the - same character as the tty EOF character, as `C-d' commonly is, see + same character as the tty EOF character, as 'C-d' commonly is, see above for the effects. -`backward-delete-char (Rubout)' +'backward-delete-char (Rubout)' Delete the character behind the cursor. A numeric argument means to kill the characters instead of deleting them. -`forward-backward-delete-char ()' +'forward-backward-delete-char ()' Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cursor is deleted. By default, this is not bound to a key. -`quoted-insert (C-q or C-v)' +'quoted-insert (C-q or C-v)' Add the next character typed to the line verbatim. This is how to - insert key sequences like `C-q', for example. + insert key sequences like 'C-q', for example. -`self-insert (a, b, A, 1, !, ...)' +'self-insert (a, b, A, 1, !, ...)' Insert yourself. -`transpose-chars (C-t)' +'bracketed-paste-begin ()' + This function is intended to be bound to the "bracketed paste" + escape sequence sent by some terminals, and such a binding is + assigned by default. It allows Readline to insert the pasted text + as a single unit without treating each character as if it had been + read from the keyboard. The characters are inserted as if each one + was bound to 'self-insert') instead of executing any editing + commands. + +'transpose-chars (C-t)' Drag the character before the cursor forward over the character at the cursor, moving the cursor forward as well. If the insertion point is at the end of the line, then this transposes the last two characters of the line. Negative arguments have no effect. -`transpose-words (M-t)' +'transpose-words (M-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. -`upcase-word (M-u)' +'upcase-word (M-u)' Uppercase the current (or following) word. With a negative argument, uppercase the previous word, but do not move the cursor. -`downcase-word (M-l)' +'downcase-word (M-l)' Lowercase the current (or following) word. With a negative argument, lowercase the previous word, but do not move the cursor. -`capitalize-word (M-c)' +'capitalize-word (M-c)' Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move the cursor. -`overwrite-mode ()' +'overwrite-mode ()' Toggle overwrite mode. With an explicit positive numeric argument, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects only - `emacs' mode; `vi' mode does overwrite differently. Each call to - `readline()' starts in insert mode. + 'emacs' mode; 'vi' mode does overwrite differently. Each call to + 'readline()' starts in insert mode. - In overwrite mode, characters bound to `self-insert' replace the + In overwrite mode, characters bound to 'self-insert' replace the text at point rather than pushing the text to the right. - Characters bound to `backward-delete-char' replace the character + Characters bound to 'backward-delete-char' replace the character before point with a space. By default, this command is unbound. -  File: bash.info, Node: Commands For Killing, Next: Numeric Arguments, Prev: Commands For Text, Up: Bindable Readline Commands 8.4.4 Killing And Yanking ------------------------- -`kill-line (C-k)' +'kill-line (C-k)' Kill the text from point to the end of the line. -`backward-kill-line (C-x Rubout)' +'backward-kill-line (C-x Rubout)' Kill backward from the cursor to the beginning of the current line. -`unix-line-discard (C-u)' +'unix-line-discard (C-u)' Kill backward from the cursor to the beginning of the current line. -`kill-whole-line ()' +'kill-whole-line ()' Kill all characters on the current line, no matter where point is. By default, this is unbound. -`kill-word (M-d)' +'kill-word (M-d)' Kill from point to the end of the current word, or if between words, to the end of the next word. Word boundaries are the same - as `forward-word'. + as 'forward-word'. -`backward-kill-word (M-)' +'backward-kill-word (M-)' Kill the word behind point. Word boundaries are the same as - `backward-word'. + 'backward-word'. -`shell-kill-word ()' +'shell-kill-word ()' Kill from point to the end of the current word, or if between words, to the end of the next word. Word boundaries are the same - as `shell-forward-word'. + as 'shell-forward-word'. -`shell-backward-kill-word ()' +'shell-backward-kill-word ()' Kill the word behind point. Word boundaries are the same as - `shell-backward-word'. + 'shell-backward-word'. -`unix-word-rubout (C-w)' +'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. -`unix-filename-rubout ()' +'unix-filename-rubout ()' Kill the word behind point, using white space and the slash character as the word boundaries. The killed text is saved on the kill-ring. -`delete-horizontal-space ()' +'delete-horizontal-space ()' Delete all spaces and tabs around point. By default, this is unbound. -`kill-region ()' +'kill-region ()' Kill the text in the current region. By default, this command is unbound. -`copy-region-as-kill ()' +'copy-region-as-kill ()' Copy the text in the region to the kill buffer, so it can be yanked right away. By default, this command is unbound. -`copy-backward-word ()' - Copy the word before point to the kill buffer. The word - boundaries are the same as `backward-word'. By default, this - command is unbound. +'copy-backward-word ()' + Copy the word before point to the kill buffer. The word boundaries + are the same as 'backward-word'. By default, this command is + unbound. -`copy-forward-word ()' +'copy-forward-word ()' Copy the word following point to the kill buffer. The word - boundaries are the same as `forward-word'. By default, this + boundaries are the same as 'forward-word'. By default, this command is unbound. -`yank (C-y)' +'yank (C-y)' Yank the top of the kill ring into the buffer at point. -`yank-pop (M-y)' +'yank-pop (M-y)' Rotate the kill-ring, and yank the new top. You can only do this - if the prior command is `yank' or `yank-pop'. + if the prior command is 'yank' or 'yank-pop'.  File: bash.info, Node: Numeric Arguments, Next: Commands For Completion, Prev: Commands For Killing, Up: Bindable Readline Commands @@ -8009,22 +8029,22 @@ File: bash.info, Node: Numeric Arguments, Next: Commands For Completion, Prev 8.4.5 Specifying Numeric Arguments ---------------------------------- -`digit-argument (M-0, M-1, ... M--)' +'digit-argument (M-0, M-1, ... M--)' Add this digit to the argument already accumulating, or start a new - argument. `M--' starts a negative argument. + argument. 'M--' starts a negative argument. -`universal-argument ()' +'universal-argument ()' This is another way to specify an argument. If this command is followed by one or more digits, optionally with a leading minus - sign, those digits define the argument. If the command is - followed by digits, executing `universal-argument' again ends the - numeric argument, but is otherwise ignored. As a special case, if - this command is immediately followed by a character that is - neither a digit or minus sign, the argument count for the next - command is multiplied by four. The argument count is initially - one, so executing this function the first time makes the argument - count four, a second time makes the argument count sixteen, and so - on. By default, this is not bound to a key. + sign, those digits define the argument. If the command is followed + by digits, executing 'universal-argument' again ends the numeric + argument, but is otherwise ignored. As a special case, if this + command is immediately followed by a character that is neither a + digit nor minus sign, the argument count for the next command is + multiplied by four. The argument count is initially one, so + executing this function the first time makes the argument count + four, a second time makes the argument count sixteen, and so on. + By default, this is not bound to a key.  File: bash.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: Numeric Arguments, Up: Bindable Readline Commands @@ -8032,271 +8052,268 @@ File: bash.info, Node: Commands For Completion, Next: Keyboard Macros, Prev: 8.4.6 Letting Readline Type For You ----------------------------------- -`complete ()' - Attempt to perform completion on the text before point. The - actual completion performed is application-specific. Bash - attempts completion treating the text as a variable (if the text - begins with `$'), username (if the text begins with `~'), hostname - (if the text begins with `@'), or command (including aliases and - functions) in turn. If none of these produces a match, filename - completion is attempted. +'complete ()' + Attempt to perform completion on the text before point. The actual + completion performed is application-specific. Bash attempts + completion treating the text as a variable (if the text begins with + '$'), username (if the text begins with '~'), hostname (if the text + begins with '@'), or command (including aliases and functions) in + turn. If none of these produces a match, filename completion is + attempted. -`possible-completions (M-?)' +'possible-completions (M-?)' List the possible completions of the text before point. When displaying completions, Readline sets the number of columns used - for display to the value of `completion-display-width', the value - of the environment variable `COLUMNS', or the screen width, in - that order. + for display to the value of 'completion-display-width', the value + of the environment variable 'COLUMNS', or the screen width, in that + order. -`insert-completions (M-*)' +'insert-completions (M-*)' Insert all completions of the text before point that would have - been generated by `possible-completions'. + been generated by 'possible-completions'. -`menu-complete ()' - Similar to `complete', but replaces the word to be completed with - a single match from the list of possible completions. Repeated - execution of `menu-complete' steps through the list of possible +'menu-complete ()' + Similar to 'complete', but replaces the word to be completed with a + single match from the list of possible completions. Repeated + execution of 'menu-complete' steps through the list of possible completions, inserting each match in turn. At the end of the list of completions, the bell is rung (subject to the setting of - `bell-style') and the original text is restored. An argument of N + 'bell-style') and the original text is restored. An argument of N moves N positions forward in the list of matches; a negative argument may be used to move backward through the list. This command is intended to be bound to , but is unbound by default. -`menu-complete-backward ()' - Identical to `menu-complete', but moves backward through the list - of possible completions, as if `menu-complete' had been given a +'menu-complete-backward ()' + Identical to 'menu-complete', but moves backward through the list + of possible completions, as if 'menu-complete' had been given a negative argument. -`delete-char-or-list ()' +'delete-char-or-list ()' Deletes the character under the cursor if not at the beginning or - end of the line (like `delete-char'). If at the end of the line, - behaves identically to `possible-completions'. This command is + end of the line (like 'delete-char'). If at the end of the line, + behaves identically to 'possible-completions'. This command is unbound by default. -`complete-filename (M-/)' +'complete-filename (M-/)' Attempt filename completion on the text before point. -`possible-filename-completions (C-x /)' - List the possible completions of the text before point, treating - it as a filename. +'possible-filename-completions (C-x /)' + List the possible completions of the text before point, treating it + as a filename. -`complete-username (M-~)' +'complete-username (M-~)' Attempt completion on the text before point, treating it as a username. -`possible-username-completions (C-x ~)' - List the possible completions of the text before point, treating - it as a username. +'possible-username-completions (C-x ~)' + List the possible completions of the text before point, treating it + as a username. -`complete-variable (M-$)' - Attempt completion on the text before point, treating it as a - shell variable. +'complete-variable (M-$)' + Attempt completion on the text before point, treating it as a shell + variable. -`possible-variable-completions (C-x $)' - List the possible completions of the text before point, treating - it as a shell variable. +'possible-variable-completions (C-x $)' + List the possible completions of the text before point, treating it + as a shell variable. -`complete-hostname (M-@)' +'complete-hostname (M-@)' Attempt completion on the text before point, treating it as a hostname. -`possible-hostname-completions (C-x @)' - List the possible completions of the text before point, treating - it as a hostname. +'possible-hostname-completions (C-x @)' + List the possible completions of the text before point, treating it + as a hostname. -`complete-command (M-!)' +'complete-command (M-!)' Attempt completion on the text before point, treating it as a command name. Command completion attempts to match the text against aliases, reserved words, shell functions, shell builtins, and finally executable filenames, in that order. -`possible-command-completions (C-x !)' - List the possible completions of the text before point, treating - it as a command name. +'possible-command-completions (C-x !)' + List the possible completions of the text before point, treating it + as a command name. -`dynamic-complete-history (M-)' +'dynamic-complete-history (M-)' Attempt completion on the text before point, comparing the text against lines from the history list for possible completion matches. -`dabbrev-expand ()' +'dabbrev-expand ()' Attempt menu completion on the text before point, comparing the text against lines from the history list for possible completion matches. -`complete-into-braces (M-{)' +'complete-into-braces (M-{)' Perform filename completion and insert the list of possible completions enclosed within braces so the list is available to the shell (*note Brace Expansion::). -  File: bash.info, Node: Keyboard Macros, Next: Miscellaneous Commands, Prev: Commands For Completion, Up: Bindable Readline Commands 8.4.7 Keyboard Macros --------------------- -`start-kbd-macro (C-x ()' +'start-kbd-macro (C-x ()' Begin saving the characters typed into the current keyboard macro. -`end-kbd-macro (C-x ))' +'end-kbd-macro (C-x ))' Stop saving the characters typed into the current keyboard macro and save the definition. -`call-last-kbd-macro (C-x e)' +'call-last-kbd-macro (C-x e)' Re-execute the last keyboard macro defined, by making the characters in the macro appear as if typed at the keyboard. -`print-last-kbd-macro ()' +'print-last-kbd-macro ()' Print the last keboard macro defined in a format suitable for the INPUTRC file. -  File: bash.info, Node: Miscellaneous Commands, Prev: Keyboard Macros, Up: Bindable Readline Commands 8.4.8 Some Miscellaneous Commands --------------------------------- -`re-read-init-file (C-x C-r)' +'re-read-init-file (C-x C-r)' Read in the contents of the INPUTRC file, and incorporate any bindings or variable assignments found there. -`abort (C-g)' +'abort (C-g)' Abort the current editing command and ring the terminal's bell - (subject to the setting of `bell-style'). + (subject to the setting of 'bell-style'). -`do-uppercase-version (M-a, M-b, M-X, ...)' +'do-uppercase-version (M-a, M-b, M-X, ...)' If the metafied character X is lowercase, run the command that is bound to the corresponding uppercase character. -`prefix-meta ()' +'prefix-meta ()' Metafy the next character typed. This is for keyboards without a - meta key. Typing ` f' is equivalent to typing `M-f'. + meta key. Typing ' f' is equivalent to typing 'M-f'. -`undo (C-_ or C-x C-u)' +'undo (C-_ or C-x C-u)' Incremental undo, separately remembered for each line. -`revert-line (M-r)' +'revert-line (M-r)' Undo all changes made to this line. This is like executing the - `undo' command enough times to get back to the beginning. + 'undo' command enough times to get back to the beginning. -`tilde-expand (M-&)' +'tilde-expand (M-&)' Perform tilde expansion on the current word. -`set-mark (C-@)' +'set-mark (C-@)' Set the mark to the point. If a numeric argument is supplied, the mark is set to that position. -`exchange-point-and-mark (C-x C-x)' +'exchange-point-and-mark (C-x C-x)' Swap the point with the mark. The current cursor position is set to the saved position, and the old cursor position is saved as the mark. -`character-search (C-])' +'character-search (C-])' A character is read and point is moved to the next occurrence of that character. A negative count searches for previous occurrences. -`character-search-backward (M-C-])' +'character-search-backward (M-C-])' A character is read and point is moved to the previous occurrence of that character. A negative count searches for subsequent occurrences. -`skip-csi-sequence ()' +'skip-csi-sequence ()' Read enough characters to consume a multi-key sequence such as those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this - sequence is bound to "\e[", keys producing such sequences will - have no effect unless explicitly bound to a readline command, - instead of inserting stray characters into the editing buffer. - This is unbound by default, but usually bound to ESC-[. + sequence is bound to "\e[", keys producing such sequences will have + no effect unless explicitly bound to a readline command, instead of + inserting stray characters into the editing buffer. This is + unbound by default, but usually bound to ESC-[. -`insert-comment (M-#)' - Without a numeric argument, the value of the `comment-begin' +'insert-comment (M-#)' + Without a numeric argument, the value of the 'comment-begin' variable is inserted at the beginning of the current line. If a - numeric argument is supplied, this command acts as a toggle: if - the characters at the beginning of the line do not match the value - of `comment-begin', the value is inserted, otherwise the - characters in `comment-begin' are deleted from the beginning of - the line. In either case, the line is accepted as if a newline - had been typed. The default value of `comment-begin' causes this - command to make the current line a shell comment. If a numeric - argument causes the comment character to be removed, the line will - be executed by the shell. + numeric argument is supplied, this command acts as a toggle: if the + characters at the beginning of the line do not match the value of + 'comment-begin', the value is inserted, otherwise the characters in + 'comment-begin' are deleted from the beginning of the line. In + either case, the line is accepted as if a newline had been typed. + The default value of 'comment-begin' causes this command to make + the current line a shell comment. If a numeric argument causes the + comment character to be removed, the line will be executed by the + shell. -`dump-functions ()' +'dump-functions ()' Print all of the functions and their key bindings to the Readline output stream. If a numeric argument is supplied, the output is formatted in such a way that it can be made part of an INPUTRC file. This command is unbound by default. -`dump-variables ()' +'dump-variables ()' Print all of the settable variables and their values to the Readline output stream. If a numeric argument is supplied, the output is formatted in such a way that it can be made part of an INPUTRC file. This command is unbound by default. -`dump-macros ()' +'dump-macros ()' Print all of the Readline key sequences bound to macros and the - strings they output. If a numeric argument is supplied, the - output is formatted in such a way that it can be made part of an - INPUTRC file. This command is unbound by default. + strings they output. If a numeric argument is supplied, the output + is formatted in such a way that it can be made part of an INPUTRC + file. This command is unbound by default. -`glob-complete-word (M-g)' +'glob-complete-word (M-g)' The word before point is treated as a pattern for pathname expansion, with an asterisk implicitly appended. This pattern is used to generate a list of matching file names for possible completions. -`glob-expand-word (C-x *)' +'glob-expand-word (C-x *)' The word before point is treated as a pattern for pathname expansion, and the list of matching file names is inserted, - replacing the word. If a numeric argument is supplied, a `*' is + replacing the word. If a numeric argument is supplied, a '*' is appended before pathname expansion. -`glob-list-expansions (C-x g)' +'glob-list-expansions (C-x g)' The list of expansions that would have been generated by - `glob-expand-word' is displayed, and the line is redrawn. If a - numeric argument is supplied, a `*' is appended before pathname + 'glob-expand-word' is displayed, and the line is redrawn. If a + numeric argument is supplied, a '*' is appended before pathname expansion. -`display-shell-version (C-x C-v)' +'display-shell-version (C-x C-v)' Display version information about the current instance of Bash. -`shell-expand-line (M-C-e)' - Expand the line as the shell does. This performs alias and - history expansion as well as all of the shell word expansions - (*note Shell Expansions::). +'shell-expand-line (M-C-e)' + Expand the line as the shell does. This performs alias and history + expansion as well as all of the shell word expansions (*note Shell + Expansions::). -`history-expand-line (M-^)' +'history-expand-line (M-^)' Perform history expansion on the current line. -`magic-space ()' +'magic-space ()' Perform history expansion on the current line and insert a space (*note History Interaction::). -`alias-expand-line ()' +'alias-expand-line ()' Perform alias expansion on the current line (*note Aliases::). -`history-and-alias-expand-line ()' +'history-and-alias-expand-line ()' Perform history and alias expansion on the current line. -`insert-last-argument (M-. or M-_)' - A synonym for `yank-last-arg'. +'insert-last-argument (M-. or M-_)' + A synonym for 'yank-last-arg'. -`operate-and-get-next (C-o)' +'operate-and-get-next (C-o)' Accept the current line for execution and fetch the next line relative to the current line from the history for editing. Any argument is ignored. -`edit-and-execute-command (C-xC-e)' +'edit-and-execute-command (C-xC-e)' Invoke an editor on the current command line, and execute the - result as shell commands. Bash attempts to invoke `$VISUAL', - `$EDITOR', and `emacs' as the editor, in that order. - + result as shell commands. Bash attempts to invoke '$VISUAL', + '$EDITOR', and 'emacs' as the editor, in that order.  File: bash.info, Node: Readline vi Mode, Next: Programmable Completion, Prev: Bindable Readline Commands, Up: Command Line Editing @@ -8304,19 +8321,19 @@ File: bash.info, Node: Readline vi Mode, Next: Programmable Completion, Prev: 8.5 Readline vi Mode ==================== -While the Readline library does not have a full set of `vi' editing +While the Readline library does not have a full set of 'vi' editing functions, it does contain enough to allow simple editing of the line. -The Readline `vi' mode behaves as specified in the POSIX standard. +The Readline 'vi' mode behaves as specified in the POSIX standard. - In order to switch interactively between `emacs' and `vi' editing -modes, use the `set -o emacs' and `set -o vi' commands (*note The Set -Builtin::). The Readline default is `emacs' mode. + In order to switch interactively between 'emacs' and 'vi' editing +modes, use the 'set -o emacs' and 'set -o vi' commands (*note The Set +Builtin::). The Readline default is 'emacs' mode. - When you enter a line in `vi' mode, you are already placed in -`insertion' mode, as if you had typed an `i'. Pressing switches -you into `command' mode, where you can edit the text of the line with -the standard `vi' movement keys, move to previous history lines with -`k' and subsequent lines with `j', and so forth. + When you enter a line in 'vi' mode, you are already placed in +'insertion' mode, as if you had typed an 'i'. Pressing switches +you into 'command' mode, where you can edit the text of the line with +the standard 'vi' movement keys, move to previous history lines with 'k' +and subsequent lines with 'j', and so forth.  File: bash.info, Node: Programmable Completion, Next: Programmable Completion Builtins, Prev: Readline vi Mode, Up: Command Line Editing @@ -8324,21 +8341,21 @@ File: bash.info, Node: Programmable Completion, Next: Programmable Completion 8.6 Programmable Completion =========================== -When word completion is attempted for an argument to a command for -which a completion specification (a COMPSPEC) has been defined using -the `complete' builtin (*note Programmable Completion Builtins::), the +When word completion is attempted for an argument to a command for which +a completion specification (a COMPSPEC) has been defined using the +'complete' builtin (*note Programmable Completion Builtins::), the programmable completion facilities are invoked. First, the command name is identified. If a compspec has been defined for that command, the compspec is used to generate the list of possible completions for the word. If the command word is the empty string (completion attempted at the beginning of an empty line), any -compspec defined with the `-E' option to `complete' is used. If the +compspec defined with the '-E' option to 'complete' is used. If the command word is a full pathname, a compspec for the full pathname is searched for first. If no compspec is found for the full pathname, an attempt is made to find a compspec for the portion following the final slash. If those searches do not result in a compspec, any compspec -defined with the `-D' option to `complete' is used as the default. +defined with the '-D' option to 'complete' is used as the default. Once a compspec has been found, it is used to generate the list of matching words. If a compspec is not found, the default Bash completion @@ -8346,83 +8363,84 @@ described above (*note Commands For Completion::) is performed. First, the actions specified by the compspec are used. Only matches which are prefixed by the word being completed are returned. When the -`-f' or `-d' option is used for filename or directory name completion, -the shell variable `FIGNORE' is used to filter the matches. *Note Bash -Variables::, for a description of `FIGNORE'. +'-f' or '-d' option is used for filename or directory name completion, +the shell variable 'FIGNORE' is used to filter the matches. *Note Bash +Variables::, for a description of 'FIGNORE'. - Any completions specified by a filename expansion pattern to the -`-G' option are generated next. The words generated by the pattern -need not match the word being completed. The `GLOBIGNORE' shell -variable is not used to filter the matches, but the `FIGNORE' shell -variable is used. + Any completions specified by a filename expansion pattern to the '-G' +option are generated next. The words generated by the pattern need not +match the word being completed. The 'GLOBIGNORE' shell variable is not +used to filter the matches, but the 'FIGNORE' shell variable is used. - Next, the string specified as the argument to the `-W' option is -considered. The string is first split using the characters in the `IFS' -special variable as delimiters. Shell quoting is honored. Each word -is then expanded using brace expansion, tilde expansion, parameter and + Next, the string specified as the argument to the '-W' option is +considered. The string is first split using the characters in the 'IFS' +special variable as delimiters. Shell quoting is honored. Each word is +then expanded using brace expansion, tilde expansion, parameter and variable expansion, command substitution, and arithmetic expansion, as -described above (*note Shell Expansions::). The results are split -using the rules described above (*note Word Splitting::). The results -of the expansion are prefix-matched against the word being completed, -and the matching words become the possible completions. +described above (*note Shell Expansions::). The results are split using +the rules described above (*note Word Splitting::). The results of the +expansion are prefix-matched against the word being completed, and the +matching words become the possible completions. After these matches have been generated, any shell function or -command specified with the `-F' and `-C' options is invoked. When the -command or function is invoked, the `COMP_LINE', `COMP_POINT', -`COMP_KEY', and `COMP_TYPE' variables are assigned values as described +command specified with the '-F' and '-C' options is invoked. When the +command or function is invoked, the 'COMP_LINE', 'COMP_POINT', +'COMP_KEY', and 'COMP_TYPE' variables are assigned values as described above (*note Bash Variables::). If a shell function is being invoked, -the `COMP_WORDS' and `COMP_CWORD' variables are also set. When the +the 'COMP_WORDS' and 'COMP_CWORD' variables are also set. When the function or command is invoked, the first argument ($1) is the name of the command whose arguments are being completed, the second argument ($2) is the word being completed, and the third argument ($3) is the -word preceding the word being completed on the current command line. -No filtering of the generated completions against the word being -completed is performed; the function or command has complete freedom in -generating the matches. +word preceding the word being completed on the current command line. No +filtering of the generated completions against the word being completed +is performed; the function or command has complete freedom in generating +the matches. - Any function specified with `-F' is invoked first. The function may -use any of the shell facilities, including the `compgen' and `compopt' + Any function specified with '-F' is invoked first. The function may +use any of the shell facilities, including the 'compgen' and 'compopt' builtins described below (*note Programmable Completion Builtins::), to generate the matches. It must put the possible completions in the -`COMPREPLY' array variable, one per array element. +'COMPREPLY' array variable, one per array element. - Next, any command specified with the `-C' option is invoked in an + Next, any command specified with the '-C' option is invoked in an environment equivalent to command substitution. It should print a list of completions, one per line, to the standard output. Backslash may be used to escape a newline, if necessary. After all of the possible completions are generated, any filter -specified with the `-X' option is applied to the list. The filter is a -pattern as used for pathname expansion; a `&' in the pattern is -replaced with the text of the word being completed. A literal `&' may -be escaped with a backslash; the backslash is removed before attempting -a match. Any completion that matches the pattern will be removed from -the list. A leading `!' negates the pattern; in this case any -completion not matching the pattern will be removed. +specified with the '-X' option is applied to the list. The filter is a +pattern as used for pathname expansion; a '&' in the pattern is replaced +with the text of the word being completed. A literal '&' may be escaped +with a backslash; the backslash is removed before attempting a match. +Any completion that matches the pattern will be removed from the list. +A leading '!' negates the pattern; in this case any completion not +matching the pattern will be removed. If the 'nocasematch' shell option +(see the description of 'shopt' in *note The Shopt Builtin::) is +enabled, the match is performed without regard to the case of alphabetic +characters. - Finally, any prefix and suffix specified with the `-P' and `-S' + Finally, any prefix and suffix specified with the '-P' and '-S' options are added to each member of the completion list, and the result is returned to the Readline completion code as the list of possible completions. If the previously-applied actions do not generate any matches, and -the `-o dirnames' option was supplied to `complete' when the compspec +the '-o dirnames' option was supplied to 'complete' when the compspec was defined, directory name completion is attempted. - If the `-o plusdirs' option was supplied to `complete' when the + If the '-o plusdirs' option was supplied to 'complete' when the compspec was defined, directory name completion is attempted and any matches are added to the results of the other actions. - By default, if a compspec is found, whatever it generates is -returned to the completion code as the full set of possible completions. -The default Bash completions are not attempted, and the Readline default -of filename completion is disabled. If the `-o bashdefault' option was -supplied to `complete' when the compspec was defined, the default Bash + By default, if a compspec is found, whatever it generates is returned +to the completion code as the full set of possible completions. The +default Bash completions are not attempted, and the Readline default of +filename completion is disabled. If the '-o bashdefault' option was +supplied to 'complete' when the compspec was defined, the default Bash completions are attempted if the compspec generates no matches. If the -`-o default' option was supplied to `complete' when the compspec was -defined, Readline's default completion will be performed if the -compspec (and, if attempted, the default Bash completions) generate no -matches. +'-o default' option was supplied to 'complete' when the compspec was +defined, Readline's default completion will be performed if the compspec +(and, if attempted, the default Bash completions) generate no matches. When a compspec indicates that directory name completion is desired, the programmable completion functions force Readline to append a slash @@ -8432,7 +8450,7 @@ setting of the MARK-SYMLINKED-DIRECTORIES Readline variable. There is some support for dynamically modifying completions. This is most useful when used in combination with a default completion specified -with `-D'. It's possible for shell functions executed as completion +with '-D'. It's possible for shell functions executed as completion handlers to indicate that completion should be retried by returning an exit status of 124. If a shell function returns 124, and changes the compspec associated with the command on which completion is being @@ -8463,15 +8481,15 @@ completion facilities: one to specify how the arguments to a particular command are to be completed, and two to modify the completion as it is happening. -`compgen' - `compgen [OPTION] [WORD]' +'compgen' + compgen [OPTION] [WORD] Generate possible completion matches for WORD according to the - OPTIONs, which may be any option accepted by the `complete' - builtin with the exception of `-p' and `-r', and write the matches - to the standard output. When using the `-F' or `-C' options, the - various shell variables set by the programmable completion - facilities, while available, will not have useful values. + OPTIONs, which may be any option accepted by the 'complete' builtin + with the exception of '-p' and '-r', and write the matches to the + standard output. When using the '-F' or '-C' options, the various + shell variables set by the programmable completion facilities, + while available, will not have useful values. The matches will be generated in the same way as if the programmable completion code had generated them directly from a @@ -8481,225 +8499,225 @@ happening. The return value is true unless an invalid option is supplied, or no matches were generated. -`complete' - `complete [-abcdefgjksuv] [-o COMP-OPTION] [-DE] [-A ACTION] [-G GLOBPAT] [-W WORDLIST] +'complete' + complete [-abcdefgjksuv] [-o COMP-OPTION] [-DE] [-A ACTION] [-G GLOBPAT] [-W WORDLIST] [-F FUNCTION] [-C COMMAND] [-X FILTERPAT] - [-P PREFIX] [-S SUFFIX] NAME [NAME ...]' - `complete -pr [-DE] [NAME ...]' + [-P PREFIX] [-S SUFFIX] NAME [NAME ...] + complete -pr [-DE] [NAME ...] Specify how arguments to each NAME should be completed. If the - `-p' option is supplied, or if no options are supplied, existing + '-p' option is supplied, or if no options are supplied, existing completion specifications are printed in a way that allows them to - be reused as input. The `-r' option removes a completion + be reused as input. The '-r' option removes a completion specification for each NAME, or, if no NAMEs are supplied, all - completion specifications. The `-D' option indicates that the - remaining options and actions should apply to the "default" - command completion; that is, completion attempted on a command for - which no completion has previously been defined. The `-E' option - indicates that the remaining options and actions should apply to - "empty" command completion; that is, completion attempted on a - blank line. + completion specifications. The '-D' option indicates that the + remaining options and actions should apply to the "default" command + completion; that is, completion attempted on a command for which no + completion has previously been defined. The '-E' option indicates + that the remaining options and actions should apply to "empty" + command completion; that is, completion attempted on a blank line. The process of applying these completion specifications when word completion is attempted is described above (*note Programmable - Completion::). The `-D' option takes precedence over `-E'. + Completion::). The '-D' option takes precedence over '-E'. Other options, if specified, have the following meanings. The - arguments to the `-G', `-W', and `-X' options (and, if necessary, - the `-P' and `-S' options) should be quoted to protect them from - expansion before the `complete' builtin is invoked. + arguments to the '-G', '-W', and '-X' options (and, if necessary, + the '-P' and '-S' options) should be quoted to protect them from + expansion before the 'complete' builtin is invoked. - `-o COMP-OPTION' + '-o COMP-OPTION' The COMP-OPTION controls several aspects of the compspec's behavior beyond the simple generation of completions. COMP-OPTION may be one of: - `bashdefault' + 'bashdefault' Perform the rest of the default Bash completions if the compspec generates no matches. - `default' + 'default' Use Readline's default filename completion if the compspec generates no matches. - `dirnames' + 'dirnames' Perform directory name completion if the compspec generates no matches. - `filenames' + 'filenames' Tell Readline that the compspec generates filenames, so it can perform any filename-specific processing (like adding a slash to directory names quoting special - characters, or suppressing trailing spaces). This - option is intended to be used with shell functions - specified with `-F'. + characters, or suppressing trailing spaces). This option + is intended to be used with shell functions specified + with '-F'. - `noquote' + 'noquote' Tell Readline not to quote the completed words if they are filenames (quoting filenames is the default). - `nospace' + 'nosort' + Tell Readline not to sort the list of possible + completions alphabetically. + + 'nospace' Tell Readline not to append a space (the default) to words completed at the end of the line. - `plusdirs' + 'plusdirs' After any matches defined by the compspec are generated, directory name completion is attempted and any matches are added to the results of the other actions. - - `-A ACTION' + '-A ACTION' The ACTION may be one of the following to generate a list of possible completions: - `alias' - Alias names. May also be specified as `-a'. + 'alias' + Alias names. May also be specified as '-a'. - `arrayvar' + 'arrayvar' Array variable names. - `binding' + 'binding' Readline key binding names (*note Bindable Readline Commands::). - `builtin' + 'builtin' Names of shell builtin commands. May also be specified - as `-b'. + as '-b'. - `command' - Command names. May also be specified as `-c'. + 'command' + Command names. May also be specified as '-c'. - `directory' - Directory names. May also be specified as `-d'. + 'directory' + Directory names. May also be specified as '-d'. - `disabled' + 'disabled' Names of disabled shell builtins. - `enabled' + 'enabled' Names of enabled shell builtins. - `export' - Names of exported shell variables. May also be - specified as `-e'. + 'export' + Names of exported shell variables. May also be specified + as '-e'. - `file' - File names. May also be specified as `-f'. + 'file' + File names. May also be specified as '-f'. - `function' + 'function' Names of shell functions. - `group' - Group names. May also be specified as `-g'. + 'group' + Group names. May also be specified as '-g'. - `helptopic' - Help topics as accepted by the `help' builtin (*note - Bash Builtins::). + 'helptopic' + Help topics as accepted by the 'help' builtin (*note Bash + Builtins::). - `hostname' + 'hostname' Hostnames, as taken from the file specified by the - `HOSTFILE' shell variable (*note Bash Variables::). + 'HOSTFILE' shell variable (*note Bash Variables::). - `job' + 'job' Job names, if job control is active. May also be - specified as `-j'. + specified as '-j'. - `keyword' - Shell reserved words. May also be specified as `-k'. + 'keyword' + Shell reserved words. May also be specified as '-k'. - `running' + 'running' Names of running jobs, if job control is active. - `service' - Service names. May also be specified as `-s'. + 'service' + Service names. May also be specified as '-s'. - `setopt' - Valid arguments for the `-o' option to the `set' builtin + 'setopt' + Valid arguments for the '-o' option to the 'set' builtin (*note The Set Builtin::). - `shopt' - Shell option names as accepted by the `shopt' builtin + 'shopt' + Shell option names as accepted by the 'shopt' builtin (*note Bash Builtins::). - `signal' + 'signal' Signal names. - `stopped' + 'stopped' Names of stopped jobs, if job control is active. - `user' - User names. May also be specified as `-u'. + 'user' + User names. May also be specified as '-u'. - `variable' + 'variable' Names of all shell variables. May also be specified as - `-v'. + '-v'. - `-C COMMAND' + '-C COMMAND' COMMAND is executed in a subshell environment, and its output is used as the possible completions. - `-F FUNCTION' + '-F FUNCTION' The shell function FUNCTION is executed in the current shell environment. When it is executed, $1 is the name of the command whose arguments are being completed, $2 is the word being completed, and $3 is the word preceding the word being completed, as described above (*note Programmable - Completion::). When it finishes, the possible completions - are retrieved from the value of the `COMPREPLY' array - variable. + Completion::). When it finishes, the possible completions are + retrieved from the value of the 'COMPREPLY' array variable. - `-G GLOBPAT' + '-G GLOBPAT' The filename expansion pattern GLOBPAT is expanded to generate the possible completions. - `-P PREFIX' + '-P PREFIX' PREFIX is added at the beginning of each possible completion after all other options have been applied. - `-S SUFFIX' - SUFFIX is appended to each possible completion after all - other options have been applied. + '-S SUFFIX' + SUFFIX is appended to each possible completion after all other + options have been applied. - `-W WORDLIST' - The WORDLIST is split using the characters in the `IFS' + '-W WORDLIST' + The WORDLIST is split using the characters in the 'IFS' special variable as delimiters, and each resultant word is expanded. The possible completions are the members of the resultant list which match the word being completed. - `-X FILTERPAT' + '-X FILTERPAT' FILTERPAT is a pattern as used for filename expansion. It is applied to the list of possible completions generated by the preceding options and arguments, and each completion matching - FILTERPAT is removed from the list. A leading `!' in + FILTERPAT is removed from the list. A leading '!' in FILTERPAT negates the pattern; in this case, any completion not matching FILTERPAT is removed. The return value is true unless an invalid option is supplied, an - option other than `-p' or `-r' is supplied without a NAME - argument, an attempt is made to remove a completion specification - for a NAME for which no specification exists, or an error occurs - adding a completion specification. + option other than '-p' or '-r' is supplied without a NAME argument, + an attempt is made to remove a completion specification for a NAME + for which no specification exists, or an error occurs adding a + completion specification. -`compopt' - `compopt' [-o OPTION] [-DE] [+o OPTION] [NAME] +'compopt' + compopt [-o OPTION] [-DE] [+o OPTION] [NAME] Modify completion options for each NAME according to the OPTIONs, or for the currently-executing completion if no NAMEs are supplied. If no OPTIONs are given, display the completion options for each NAME or the current completion. The possible values of OPTION are - those valid for the `complete' builtin described above. The `-D' + those valid for the 'complete' builtin described above. The '-D' option indicates that the remaining options should apply to the "default" command completion; that is, completion attempted on a command for which no completion has previously been defined. The - `-E' option indicates that the remaining options should apply to + '-E' option indicates that the remaining options should apply to "empty" command completion; that is, completion attempted on a blank line. - The `-D' option takes precedence over `-E'. + The '-D' option takes precedence over '-E'. The return value is true unless an invalid option is supplied, an attempt is made to modify the options for a NAME for which no completion specification exists, or an output error occurs. -  File: bash.info, Node: A Programmable Completion Example, Prev: Programmable Completion Builtins, Up: Command Line Editing @@ -8707,25 +8725,25 @@ File: bash.info, Node: A Programmable Completion Example, Prev: Programmable C ===================================== The most common way to obtain additional completion functionality beyond -the default actions `complete' and `compgen' provide is to use a shell -function and bind it to a particular command using `complete -F'. +the default actions 'complete' and 'compgen' provide is to use a shell +function and bind it to a particular command using 'complete -F'. - The following function provides completions for the `cd' builtin. -It is a reasonably good example of what shell functions must do when -used for completion. This function uses the word passsed as `$2' to + The following function provides completions for the 'cd' builtin. It +is a reasonably good example of what shell functions must do when used +for completion. This function uses the word passsed as '$2' to determine the directory name to complete. You can also use the -`COMP_WORDS' array variable; the current word is indexed by the -`COMP_CWORD' variable. +'COMP_WORDS' array variable; the current word is indexed by the +'COMP_CWORD' variable. - The function relies on the `complete' and `compgen' builtins to do -much of the work, adding only the things that the Bash `cd' does beyond + The function relies on the 'complete' and 'compgen' builtins to do +much of the work, adding only the things that the Bash 'cd' does beyond accepting basic directory names: tilde expansion (*note Tilde Expansion::), searching directories in $CDPATH, which is described above -(*note Bourne Shell Builtins::), and basic support for the -`cdable_vars' shell option (*note The Shopt Builtin::). `_comp_cd' -modifies the value of IFS so that it contains only a newline to -accommodate file names containing spaces and tabs - `compgen' prints -the possible completions it generates one per line. +(*note Bourne Shell Builtins::), and basic support for the 'cdable_vars' +shell option (*note The Shopt Builtin::). '_comp_cd' modifies the value +of IFS so that it contains only a newline to accommodate file names +containing spaces and tabs - 'compgen' prints the possible completions +it generates one per line. Possible completions go into the COMPREPLY array variable, one completion per array element. The programmable completion system @@ -8778,8 +8796,8 @@ retrieves the completions from there when the function returns. return 0 } - We install the completion function using the `-F' option to -`complete': + We install the completion function using the '-F' option to +'complete': # Tell readline to quote appropriate and append slashes to directories; # use the bash default completion for other arguments @@ -8787,32 +8805,32 @@ retrieves the completions from there when the function returns. Since we'd like Bash and Readline to take care of some of the other details for us, we use several other options to tell Bash and Readline -what to do. The `-o filenames' option tells Readline that the possible +what to do. The '-o filenames' option tells Readline that the possible completions should be treated as filenames, and quoted appropriately. That option will also cause Readline to append a slash to filenames it can determine are directories (which is why we might want to extend -`_comp_cd' to append a slash if we're using directories found via -CDPATH: Readline can't tell those completions are directories). The -`-o nospace' option tells Readline to not append a space character to -the directory name, in case we want to append to it. The `-o -bashdefault' option brings in the rest of the "Bash default" -completions - possible completion that Bash adds to the default Readline -set. These include things like command name completion, variable -completion for words beginning with `{', completions containing pathname -expansion patterns (*note Filename Expansion::), and so on. +'_comp_cd' to append a slash if we're using directories found via +CDPATH: Readline can't tell those completions are directories). The '-o +nospace' option tells Readline to not append a space character to the +directory name, in case we want to append to it. The '-o bashdefault' +option brings in the rest of the "Bash default" completions - possible +completion that Bash adds to the default Readline set. These include +things like command name completion, variable completion for words +beginning with '{', completions containing pathname expansion patterns +(*note Filename Expansion::), and so on. - Once installed using `complete', `_comp_cd' will be called every -time we attempt word completion for a `cd' command. + Once installed using 'complete', '_comp_cd' will be called every time +we attempt word completion for a 'cd' command. Many more examples - an extensive collection of completions for most of the common GNU, Unix, and Linux commands - are available as part of the bash_completion project. This is installed by default on many GNU/Linux distributions. Originally written by Ian Macdonald, the -project now lives at `http://bash-completion.alioth.debian.org/'. -There are ports for other systems such as Solaris and Mac OS X. +project now lives at . There +are ports for other systems such as Solaris and Mac OS X. An older version of the bash_completion package is distributed with -bash in the `examples/complete' subdirectory. +bash in the 'examples/complete' subdirectory.  File: bash.info, Node: Using History Interactively, Next: Installing Bash, Prev: Command Line Editing, Up: Top @@ -8820,10 +8838,10 @@ File: bash.info, Node: Using History Interactively, Next: Installing Bash, Pr 9 Using History Interactively ***************************** -This chapter describes how to use the GNU History Library -interactively, from a user's standpoint. It should be considered a -user's guide. For information on using the GNU History Library in -other programs, see the GNU Readline Library Manual. +This chapter describes how to use the GNU History Library interactively, +from a user's standpoint. It should be considered a user's guide. For +information on using the GNU History Library in other programs, see the +GNU Readline Library Manual. * Menu: @@ -8839,53 +8857,52 @@ File: bash.info, Node: Bash History Facilities, Next: Bash History Builtins, 9.1 Bash History Facilities =========================== -When the `-o history' option to the `set' builtin is enabled (*note The +When the '-o history' option to the 'set' builtin is enabled (*note The Set Builtin::), the shell provides access to the "command history", the -list of commands previously typed. The value of the `HISTSIZE' shell +list of commands previously typed. The value of the 'HISTSIZE' shell variable is used as the number of commands to save in a history list. -The text of the last `$HISTSIZE' commands (default 500) is saved. The +The text of the last '$HISTSIZE' commands (default 500) is saved. The shell stores each command in the history list prior to parameter and variable expansion but after history expansion is performed, subject to -the values of the shell variables `HISTIGNORE' and `HISTCONTROL'. +the values of the shell variables 'HISTIGNORE' and 'HISTCONTROL'. When the shell starts up, the history is initialized from the file -named by the `HISTFILE' variable (default `~/.bash_history'). The file -named by the value of `HISTFILE' is truncated, if necessary, to contain +named by the 'HISTFILE' variable (default '~/.bash_history'). The file +named by the value of 'HISTFILE' is truncated, if necessary, to contain no more than the number of lines specified by the value of the -`HISTFILESIZE' variable. When a shell with history enabled exits, the -last `$HISTSIZE' lines are copied from the history list to the file -named by `$HISTFILE'. If the `histappend' shell option is set (*note +'HISTFILESIZE' variable. When a shell with history enabled exits, the +last '$HISTSIZE' lines are copied from the history list to the file +named by '$HISTFILE'. If the 'histappend' shell option is set (*note Bash Builtins::), the lines are appended to the history file, otherwise -the history file is overwritten. If `HISTFILE' is unset, or if the +the history file is overwritten. If 'HISTFILE' is unset, or if the history file is unwritable, the history is not saved. After saving the history, the history file is truncated to contain no more than -`$HISTFILESIZE' lines. If `HISTFILESIZE' is unset, or set to null, a +'$HISTFILESIZE' lines. If 'HISTFILESIZE' is unset, or set to null, a non-numeric value, or a numeric value less than zero, the history file is not truncated. - If the `HISTTIMEFORMAT' is set, the time stamp information -associated with each history entry is written to the history file, -marked with the history comment character. When the history file is -read, lines beginning with the history comment character followed -immediately by a digit are interpreted as timestamps for the previous -history line. + If the 'HISTTIMEFORMAT' is set, the time stamp information associated +with each history entry is written to the history file, marked with the +history comment character. When the history file is read, lines +beginning with the history comment character followed immediately by a +digit are interpreted as timestamps for the previous history line. - The builtin command `fc' may be used to list or edit and re-execute -a portion of the history list. The `history' builtin may be used to + The builtin command 'fc' may be used to list or edit and re-execute a +portion of the history list. The 'history' builtin may be used to display or modify the history list and manipulate the history file. When using command-line editing, search commands are available in each -editing mode that provide access to the history list (*note Commands -For History::). +editing mode that provide access to the history list (*note Commands For +History::). The shell allows control over which commands are saved on the history -list. The `HISTCONTROL' and `HISTIGNORE' variables may be set to cause -the shell to save only a subset of the commands entered. The `cmdhist' +list. The 'HISTCONTROL' and 'HISTIGNORE' variables may be set to cause +the shell to save only a subset of the commands entered. The 'cmdhist' shell option, if enabled, causes the shell to attempt to save each line of a multi-line command in the same history entry, adding semicolons -where necessary to preserve syntactic correctness. The `lithist' shell +where necessary to preserve syntactic correctness. The 'lithist' shell option causes the shell to save the command with embedded newlines -instead of semicolons. The `shopt' builtin is used to set these -options. *Note Bash Builtins::, for a description of `shopt'. +instead of semicolons. The 'shopt' builtin is used to set these +options. *Note Bash Builtins::, for a description of 'shopt'.  File: bash.info, Node: Bash History Builtins, Next: History Interaction, Prev: Bash History Facilities, Up: Using History Interactively @@ -8893,95 +8910,94 @@ File: bash.info, Node: Bash History Builtins, Next: History Interaction, Prev 9.2 Bash History Builtins ========================= -Bash provides two builtin commands which manipulate the history list -and history file. +Bash provides two builtin commands which manipulate the history list and +history file. -`fc' - `fc [-e ENAME] [-lnr] [FIRST] [LAST]' - `fc -s [PAT=REP] [COMMAND]' +'fc' + fc [-e ENAME] [-lnr] [FIRST] [LAST] + fc -s [PAT=REP] [COMMAND] The first form selects a range of commands from FIRST to LAST from the history list and displays or edits and re-executes them. Both FIRST and LAST may be specified as a string (to locate the most - recent command beginning with that string) or as a number (an - index into the history list, where a negative number is used as an - offset from the current command number). If LAST is not specified - it is set to FIRST. If FIRST is not specified it is set to the - previous command for editing and -16 for listing. If the `-l' - flag is given, the commands are listed on standard output. The - `-n' flag suppresses the command numbers when listing. The `-r' - flag reverses the order of the listing. Otherwise, the editor - given by ENAME is invoked on a file containing those commands. If - ENAME is not given, the value of the following variable expansion - is used: `${FCEDIT:-${EDITOR:-vi}}'. This says to use the value - of the `FCEDIT' variable if set, or the value of the `EDITOR' - variable if that is set, or `vi' if neither is set. When editing - is complete, the edited commands are echoed and executed. + recent command beginning with that string) or as a number (an index + into the history list, where a negative number is used as an offset + from the current command number). If LAST is not specified it is + set to FIRST. If FIRST is not specified it is set to the previous + command for editing and -16 for listing. If the '-l' flag is + given, the commands are listed on standard output. The '-n' flag + suppresses the command numbers when listing. The '-r' flag + reverses the order of the listing. Otherwise, the editor given by + ENAME is invoked on a file containing those commands. If ENAME is + not given, the value of the following variable expansion is used: + '${FCEDIT:-${EDITOR:-vi}}'. This says to use the value of the + 'FCEDIT' variable if set, or the value of the 'EDITOR' variable if + that is set, or 'vi' if neither is set. When editing is complete, + the edited commands are echoed and executed. In the second form, COMMAND is re-executed after each instance of PAT in the selected command is replaced by REP. COMMAND is intepreted the same as FIRST above. - A useful alias to use with the `fc' command is `r='fc -s'', so - that typing `r cc' runs the last command beginning with `cc' and - typing `r' re-executes the last command (*note Aliases::). + A useful alias to use with the 'fc' command is 'r='fc -s'', so that + typing 'r cc' runs the last command beginning with 'cc' and typing + 'r' re-executes the last command (*note Aliases::). -`history' +'history' history [N] history -c history -d OFFSET history [-anrw] [FILENAME] history -ps ARG - With no options, display the history list with line numbers. - Lines prefixed with a `*' have been modified. An argument of N - lists only the last N lines. If the shell variable - `HISTTIMEFORMAT' is set and not null, it is used as a format - string for STRFTIME to display the time stamp associated with each - displayed history entry. No intervening blank is printed between - the formatted time stamp and the history line. + With no options, display the history list with line numbers. Lines + prefixed with a '*' have been modified. An argument of N lists + only the last N lines. If the shell variable 'HISTTIMEFORMAT' is + set and not null, it is used as a format string for STRFTIME to + display the time stamp associated with each displayed history + entry. No intervening blank is printed between the formatted time + stamp and the history line. Options, if supplied, have the following meanings: - `-c' + '-c' Clear the history list. This may be combined with the other options to replace the history list completely. - `-d OFFSET' - Delete the history entry at position OFFSET. OFFSET should - be specified as it appears when the history is displayed. + '-d OFFSET' + Delete the history entry at position OFFSET. OFFSET should be + specified as it appears when the history is displayed. - `-a' - Append the new history lines (history lines entered since the - beginning of the current Bash session) to the history file. + '-a' + Append the new history lines to the history file. These are + history lines entered since the beginning of the current Bash + session, but not already appended to the history file. - `-n' + '-n' Append the history lines not already read from the history - file to the current history list. These are lines appended - to the history file since the beginning of the current Bash + file to the current history list. These are lines appended to + the history file since the beginning of the current Bash session. - `-r' + '-r' Read the history file and append its contents to the history list. - `-w' + '-w' Write out the current history list to the history file. - `-p' + '-p' Perform history substitution on the ARGs and display the result on the standard output, without storing the results in the history list. - `-s' + '-s' The ARGs are added to the end of the history list as a single entry. - - When any of the `-w', `-r', `-a', or `-n' options is used, if + When any of the '-w', '-r', '-a', or '-n' options is used, if FILENAME is given, then it is used as the history file. If not, - then the value of the `HISTFILE' variable is used. - + then the value of the 'HISTFILE' variable is used.  File: bash.info, Node: History Interaction, Prev: Bash History Builtins, Up: Using History Interactively @@ -8990,43 +9006,47 @@ File: bash.info, Node: History Interaction, Prev: Bash History Builtins, Up: ===================== The History library provides a history expansion feature that is similar -to the history expansion provided by `csh'. This section describes the +to the history expansion provided by 'csh'. This section describes the syntax used to manipulate the history information. History expansions introduce words from the history list into the -input stream, making it easy to repeat commands, insert the arguments -to a previous command into the current input line, or fix errors in +input stream, making it easy to repeat commands, insert the arguments to +a previous command into the current input line, or fix errors in previous commands quickly. + History expansion is performed immediately after a complete line is +read, before the shell breaks it into words. + History expansion takes place in two parts. The first is to determine which line from the history list should be used during substitution. The second is to select portions of that line for inclusion into the current one. The line selected from the history is called the "event", and the portions of that line that are acted upon -are called "words". Various "modifiers" are available to manipulate -the selected words. The line is broken into words in the same fashion -that Bash does, so that several words surrounded by quotes are -considered one word. History expansions are introduced by the -appearance of the history expansion character, which is `!' by default. -Only `\' and `'' may be used to escape the history expansion character. +are called "words". Various "modifiers" are available to manipulate the +selected words. The line is broken into words in the same fashion that +Bash does, so that several words surrounded by quotes are considered one +word. History expansions are introduced by the appearance of the +history expansion character, which is '!' by default. Only '\' and ''' +may be used to escape the history expansion character, but the history +expansion character is also treated as quoted if it immediately precedes +the closing double quote in a double-quoted string. - Several shell options settable with the `shopt' builtin (*note Bash -Builtins::) may be used to tailor the behavior of history expansion. -If the `histverify' shell option is enabled, and Readline is being -used, history substitutions are not immediately passed to the shell -parser. Instead, the expanded line is reloaded into the Readline -editing buffer for further modification. If Readline is being used, -and the `histreedit' shell option is enabled, a failed history -expansion will be reloaded into the Readline editing buffer for -correction. The `-p' option to the `history' builtin command may be -used to see what a history expansion will do before using it. The `-s' -option to the `history' builtin may be used to add commands to the end -of the history list without actually executing them, so that they are -available for subsequent recall. This is most useful in conjunction -with Readline. + Several shell options settable with the 'shopt' builtin (*note Bash +Builtins::) may be used to tailor the behavior of history expansion. If +the 'histverify' shell option is enabled, and Readline is being used, +history substitutions are not immediately passed to the shell parser. +Instead, the expanded line is reloaded into the Readline editing buffer +for further modification. If Readline is being used, and the +'histreedit' shell option is enabled, a failed history expansion will be +reloaded into the Readline editing buffer for correction. The '-p' +option to the 'history' builtin command may be used to see what a +history expansion will do before using it. The '-s' option to the +'history' builtin may be used to add commands to the end of the history +list without actually executing them, so that they are available for +subsequent recall. This is most useful in conjunction with Readline. The shell allows control of the various characters used by the -history expansion mechanism with the `histchars' variable, as explained +history expansion mechanism with the 'histchars' variable, as explained above (*note Bash Variables::). The shell uses the history comment character to mark history timestamps when writing the history file. @@ -9044,97 +9064,95 @@ File: bash.info, Node: Event Designators, Next: Word Designators, Up: History An event designator is a reference to a command line entry in the history list. Unless the reference is absolute, events are relative to -the current position in the history list. +the current position in the history list. -`!' +'!' Start a history substitution, except when followed by a space, tab, - the end of the line, `=' or `(' (when the `extglob' shell option - is enabled using the `shopt' builtin). + the end of the line, '=' or '(' (when the 'extglob' shell option is + enabled using the 'shopt' builtin). -`!N' +'!N' Refer to command line N. -`!-N' +'!-N' Refer to the command N lines back. -`!!' - Refer to the previous command. This is a synonym for `!-1'. +'!!' + Refer to the previous command. This is a synonym for '!-1'. -`!STRING' +'!STRING' Refer to the most recent command preceding the current position in the history list starting with STRING. -`!?STRING[?]' +'!?STRING[?]' Refer to the most recent command preceding the current position in - the history list containing STRING. The trailing `?' may be + the history list containing STRING. The trailing '?' may be omitted if the STRING is followed immediately by a newline. -`^STRING1^STRING2^' +'^STRING1^STRING2^' Quick Substitution. Repeat the last command, replacing STRING1 - with STRING2. Equivalent to `!!:s/STRING1/STRING2/'. + with STRING2. Equivalent to '!!:s/STRING1/STRING2/'. -`!#' +'!#' The entire command line typed so far. -  File: bash.info, Node: Word Designators, Next: Modifiers, Prev: Event Designators, Up: History Interaction 9.3.2 Word Designators ---------------------- -Word designators are used to select desired words from the event. A -`:' separates the event specification from the word designator. It may -be omitted if the word designator begins with a `^', `$', `*', `-', or -`%'. Words are numbered from the beginning of the line, with the first -word being denoted by 0 (zero). Words are inserted into the current -line separated by single spaces. +Word designators are used to select desired words from the event. A ':' +separates the event specification from the word designator. It may be +omitted if the word designator begins with a '^', '$', '*', '-', or '%'. +Words are numbered from the beginning of the line, with the first word +being denoted by 0 (zero). Words are inserted into the current line +separated by single spaces. For example, -`!!' +'!!' designates the preceding command. When you type this, the preceding command is repeated in toto. -`!!:$' +'!!:$' designates the last argument of the preceding command. This may be - shortened to `!$'. + shortened to '!$'. -`!fi:2' +'!fi:2' designates the second argument of the most recent command starting - with the letters `fi'. + with the letters 'fi'. Here are the word designators: -`0 (zero)' - The `0'th word. For many applications, this is the command word. +'0 (zero)' + The '0'th word. For many applications, this is the command word. -`N' +'N' The Nth word. -`^' +'^' The first argument; that is, word 1. -`$' +'$' The last argument. -`%' - The word matched by the most recent `?STRING?' search. +'%' + The word matched by the most recent '?STRING?' search. -`X-Y' - A range of words; `-Y' abbreviates `0-Y'. +'X-Y' + A range of words; '-Y' abbreviates '0-Y'. -`*' - All of the words, except the `0'th. This is a synonym for `1-$'. - It is not an error to use `*' if there is just one word in the +'*' + All of the words, except the '0'th. This is a synonym for '1-$'. + It is not an error to use '*' if there is just one word in the event; the empty string is returned in that case. -`X*' - Abbreviates `X-$' - -`X-' - Abbreviates `X-$' like `X*', but omits the last word. +'X*' + Abbreviates 'X-$' +'X-' + Abbreviates 'X-$' like 'X*', but omits the last word. If a word designator is supplied without an event specification, the previous command is used as the event. @@ -9146,50 +9164,49 @@ File: bash.info, Node: Modifiers, Prev: Word Designators, Up: History Interac --------------- After the optional word designator, you can add a sequence of one or -more of the following modifiers, each preceded by a `:'. +more of the following modifiers, each preceded by a ':'. -`h' +'h' Remove a trailing pathname component, leaving only the head. -`t' +'t' Remove all leading pathname components, leaving the tail. -`r' - Remove a trailing suffix of the form `.SUFFIX', leaving the +'r' + Remove a trailing suffix of the form '.SUFFIX', leaving the basename. -`e' +'e' Remove all but the trailing suffix. -`p' +'p' Print the new command but do not execute it. -`q' +'q' Quote the substituted words, escaping further substitutions. -`x' - Quote the substituted words as with `q', but break into words at +'x' + Quote the substituted words as with 'q', but break into words at spaces, tabs, and newlines. -`s/OLD/NEW/' +'s/OLD/NEW/' Substitute NEW for the first occurrence of OLD in the event line. - Any delimiter may be used in place of `/'. The delimiter may be - quoted in OLD and NEW with a single backslash. If `&' appears in - NEW, it is replaced by OLD. A single backslash will quote the - `&'. The final delimiter is optional if it is the last character - on the input line. + Any delimiter may be used in place of '/'. The delimiter may be + quoted in OLD and NEW with a single backslash. If '&' appears in + NEW, it is replaced by OLD. A single backslash will quote the '&'. + The final delimiter is optional if it is the last character on the + input line. -`&' +'&' Repeat the previous substitution. -`g' -`a' +'g' +'a' Cause changes to be applied over the entire event line. Used in - conjunction with `s', as in `gs/OLD/NEW/', or with `&'. - -`G' - Apply the following `s' modifier once to each word in the event. + conjunction with 's', as in 'gs/OLD/NEW/', or with '&'. +'G' + Apply the following 's' modifier once to each word in the event.  File: bash.info, Node: Installing Bash, Next: Reporting Bugs, Prev: Using History Interactively, Up: Top @@ -9229,58 +9246,57 @@ These are installation instructions for Bash. The simplest way to compile Bash is: - 1. `cd' to the directory containing the source code and type - `./configure' to configure Bash for your system. If you're using - `csh' on an old version of System V, you might need to type `sh - ./configure' instead to prevent `csh' from trying to execute - `configure' itself. + 1. 'cd' to the directory containing the source code and type + './configure' to configure Bash for your system. If you're using + 'csh' on an old version of System V, you might need to type 'sh + ./configure' instead to prevent 'csh' from trying to execute + 'configure' itself. - Running `configure' takes some time. While running, it prints + Running 'configure' takes some time. While running, it prints messages telling which features it is checking for. - 2. Type `make' to compile Bash and build the `bashbug' bug reporting + 2. Type 'make' to compile Bash and build the 'bashbug' bug reporting script. - 3. Optionally, type `make tests' to run the Bash test suite. + 3. Optionally, type 'make tests' to run the Bash test suite. - 4. Type `make install' to install `bash' and `bashbug'. This will + 4. Type 'make install' to install 'bash' and 'bashbug'. This will also install the manual pages and Info file. - - The `configure' shell script attempts to guess correct values for + The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package -(the top directory, the `builtins', `doc', and `support' directories, -each directory under `lib', and several others). It also creates a -`config.h' file containing system-dependent definitions. Finally, it -creates a shell script named `config.status' that you can run in the -future to recreate the current configuration, a file `config.cache' -that saves the results of its tests to speed up reconfiguring, and a -file `config.log' containing compiler output (useful mainly for -debugging `configure'). If at some point `config.cache' contains -results you don't want to keep, you may remove or edit it. +those values to create a 'Makefile' in each directory of the package +(the top directory, the 'builtins', 'doc', and 'support' directories, +each directory under 'lib', and several others). It also creates a +'config.h' file containing system-dependent definitions. Finally, it +creates a shell script named 'config.status' that you can run in the +future to recreate the current configuration, a file 'config.cache' that +saves the results of its tests to speed up reconfiguring, and a file +'config.log' containing compiler output (useful mainly for debugging +'configure'). If at some point 'config.cache' contains results you +don't want to keep, you may remove or edit it. - To find out more about the options and arguments that the -`configure' script understands, type + To find out more about the options and arguments that the 'configure' +script understands, type bash-2.04$ ./configure --help at the Bash prompt in your Bash source directory. If you need to do unusual things to compile Bash, please try to -figure out how `configure' could check whether or not to do them, and +figure out how 'configure' could check whether or not to do them, and mail diffs or instructions to so they can be considered for the next release. - The file `configure.ac' is used to create `configure' by a program -called Autoconf. You only need `configure.ac' if you want to change it -or regenerate `configure' using a newer version of Autoconf. If you do + The file 'configure.ac' is used to create 'configure' by a program +called Autoconf. You only need 'configure.ac' if you want to change it +or regenerate 'configure' using a newer version of Autoconf. If you do this, make sure you are using Autoconf version 2.50 or newer. You can remove the program binaries and object files from the source -code directory by typing `make clean'. To also remove the files that -`configure' created (so you can compile Bash for a different kind of -computer), type `make distclean'. +code directory by typing 'make clean'. To also remove the files that +'configure' created (so you can compile Bash for a different kind of +computer), type 'make distclean'.  File: bash.info, Node: Compilers and Options, Next: Compiling For Multiple Architectures, Prev: Basic Installation, Up: Installing Bash @@ -9288,15 +9304,15 @@ File: bash.info, Node: Compilers and Options, Next: Compiling For Multiple Arc 10.2 Compilers and Options ========================== -Some systems require unusual options for compilation or linking that -the `configure' script does not know about. You can give `configure' +Some systems require unusual options for compilation or linking that the +'configure' script does not know about. You can give 'configure' initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure - On systems that have the `env' program, you can do it like this: + On systems that have the 'env' program, you can do it like this: env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure @@ -9310,29 +9326,29 @@ File: bash.info, Node: Compiling For Multiple Architectures, Next: Installatio You can compile Bash for more than one kind of computer at the same time, by placing the object files for each architecture in their own -directory. To do this, you must use a version of `make' that supports -the `VPATH' variable, such as GNU `make'. `cd' to the directory where -you want the object files and executables to go and run the `configure' +directory. To do this, you must use a version of 'make' that supports +the 'VPATH' variable, such as GNU 'make'. 'cd' to the directory where +you want the object files and executables to go and run the 'configure' script from the source directory. You may need to supply the -`--srcdir=PATH' argument to tell `configure' where the source files -are. `configure' automatically checks for the source code in the -directory that `configure' is in and in `..'. +'--srcdir=PATH' argument to tell 'configure' where the source files are. +'configure' automatically checks for the source code in the directory +that 'configure' is in and in '..'. - If you have to use a `make' that does not supports the `VPATH' + If you have to use a 'make' that does not supports the 'VPATH' variable, you can compile Bash for one architecture at a time in the source code directory. After you have installed Bash for one -architecture, use `make distclean' before reconfiguring for another +architecture, use 'make distclean' before reconfiguring for another architecture. Alternatively, if your system supports symbolic links, you can use -the `support/mkclone' script to create a build tree which has symbolic -links back to each file in the source directory. Here's an example -that creates a build directory in the current directory from a source -directory `/usr/gnu/src/bash-2.0': +the 'support/mkclone' script to create a build tree which has symbolic +links back to each file in the source directory. Here's an example that +creates a build directory in the current directory from a source +directory '/usr/gnu/src/bash-2.0': bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 . -The `mkclone' script requires Bash, so you must have already built Bash +The 'mkclone' script requires Bash, so you must have already built Bash for at least one architecture before you can create build directories for other architectures. @@ -9342,15 +9358,15 @@ File: bash.info, Node: Installation Names, Next: Specifying the System Type, 10.4 Installation Names ======================= -By default, `make install' will install into `/usr/local/bin', -`/usr/local/man', etc. You can specify an installation prefix other -than `/usr/local' by giving `configure' the option `--prefix=PATH', or -by specifying a value for the `DESTDIR' `make' variable when running -`make install'. +By default, 'make install' will install into '/usr/local/bin', +'/usr/local/man', etc. You can specify an installation prefix other +than '/usr/local' by giving 'configure' the option '--prefix=PATH', or +by specifying a value for the 'DESTDIR' 'make' variable when running +'make install'. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', `make install' will +give 'configure' the option '--exec-prefix=PATH', 'make install' will use PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. @@ -9360,15 +9376,15 @@ File: bash.info, Node: Specifying the System Type, Next: Sharing Defaults, Pr 10.5 Specifying the System Type =============================== -There may be some features `configure' can not figure out -automatically, but need to determine by the type of host Bash will run -on. Usually `configure' can figure that out, but if it prints a -message saying it can not guess the host type, give it the -`--host=TYPE' option. `TYPE' can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: -`CPU-COMPANY-SYSTEM' (e.g., `i386-unknown-freebsd4.2'). +There may be some features 'configure' can not figure out automatically, +but need to determine by the type of host Bash will run on. Usually +'configure' can figure that out, but if it prints a message saying it +can not guess the host type, give it the '--host=TYPE' option. 'TYPE' +can either be a short name for the system type, such as 'sun4', or a +canonical name with three fields: 'CPU-COMPANY-SYSTEM' (e.g., +'i386-unknown-freebsd4.2'). - See the file `support/config.sub' for the possible values of each + See the file 'support/config.sub' for the possible values of each field.  @@ -9377,14 +9393,14 @@ File: bash.info, Node: Sharing Defaults, Next: Operation Controls, Prev: Spec 10.6 Sharing Defaults ===================== -If you want to set default values for `configure' scripts to share, you -can create a site shell script called `config.site' that gives default -values for variables like `CC', `cache_file', and `prefix'. `configure' -looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: the Bash `configure' looks for a site script, but not all -`configure' scripts do. +If you want to set default values for 'configure' scripts to share, you +can create a site shell script called 'config.site' that gives default +values for variables like 'CC', 'cache_file', and 'prefix'. 'configure' +looks for 'PREFIX/share/config.site' if it exists, then +'PREFIX/etc/config.site' if it exists. Or, you can set the +'CONFIG_SITE' environment variable to the location of the site script. +A warning: the Bash 'configure' looks for a site script, but not all +'configure' scripts do.  File: bash.info, Node: Operation Controls, Next: Optional Features, Prev: Sharing Defaults, Up: Installing Bash @@ -9392,31 +9408,31 @@ File: bash.info, Node: Operation Controls, Next: Optional Features, Prev: Sha 10.7 Operation Controls ======================= -`configure' recognizes the following options to control how it operates. +'configure' recognizes the following options to control how it operates. -`--cache-file=FILE' +'--cache-file=FILE' Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. + './config.cache'. Set FILE to '/dev/null' to disable caching, for + debugging 'configure'. -`--help' - Print a summary of the options to `configure', and exit. +'--help' + Print a summary of the options to 'configure', and exit. -`--quiet' -`--silent' -`-q' +'--quiet' +'--silent' +'-q' Do not print messages saying which checks are being made. -`--srcdir=DIR' +'--srcdir=DIR' Look for the Bash source code in directory DIR. Usually - `configure' can determine that directory automatically. + 'configure' can determine that directory automatically. -`--version' - Print the version of Autoconf used to generate the `configure' +'--version' + Print the version of Autoconf used to generate the 'configure' script, and exit. - `configure' also accepts some other, not widely used, boilerplate -options. `configure --help' prints the complete list. + 'configure' also accepts some other, not widely used, boilerplate +options. 'configure --help' prints the complete list.  File: bash.info, Node: Optional Features, Prev: Operation Controls, Up: Installing Bash @@ -9424,248 +9440,253 @@ File: bash.info, Node: Optional Features, Prev: Operation Controls, Up: Insta 10.8 Optional Features ====================== -The Bash `configure' has a number of `--enable-FEATURE' options, where +The Bash 'configure' has a number of '--enable-FEATURE' options, where FEATURE indicates an optional part of Bash. There are also several -`--with-PACKAGE' options, where PACKAGE is something like `bash-malloc' -or `purify'. To turn off the default use of a package, use -`--without-PACKAGE'. To configure Bash without a feature that is -enabled by default, use `--disable-FEATURE'. +'--with-PACKAGE' options, where PACKAGE is something like 'bash-malloc' +or 'purify'. To turn off the default use of a package, use +'--without-PACKAGE'. To configure Bash without a feature that is +enabled by default, use '--disable-FEATURE'. - Here is a complete list of the `--enable-' and `--with-' options -that the Bash `configure' recognizes. + Here is a complete list of the '--enable-' and '--with-' options that +the Bash 'configure' recognizes. -`--with-afs' +'--with-afs' Define if you are using the Andrew File System from Transarc. -`--with-bash-malloc' - Use the Bash version of `malloc' in the directory `lib/malloc'. - This is not the same `malloc' that appears in GNU libc, but an - older version originally derived from the 4.2 BSD `malloc'. This - `malloc' is very fast, but wastes some space on each allocation. - This option is enabled by default. The `NOTES' file contains a +'--with-bash-malloc' + Use the Bash version of 'malloc' in the directory 'lib/malloc'. + This is not the same 'malloc' that appears in GNU libc, but an + older version originally derived from the 4.2 BSD 'malloc'. This + 'malloc' is very fast, but wastes some space on each allocation. + This option is enabled by default. The 'NOTES' file contains a list of systems for which this should be turned off, and - `configure' disables this option automatically for a number of + 'configure' disables this option automatically for a number of systems. -`--with-curses' +'--with-curses' Use the curses library instead of the termcap library. This should be supplied if your system has an inadequate or incomplete termcap database. -`--with-gnu-malloc' - A synonym for `--with-bash-malloc'. +'--with-gnu-malloc' + A synonym for '--with-bash-malloc'. -`--with-installed-readline[=PREFIX]' +'--with-installed-readline[=PREFIX]' Define this to make Bash link with a locally-installed version of - Readline rather than the version in `lib/readline'. This works - only with Readline 5.0 and later versions. If PREFIX is `yes' or - not supplied, `configure' uses the values of the make variables - `includedir' and `libdir', which are subdirectories of `prefix' by + Readline rather than the version in 'lib/readline'. This works + only with Readline 5.0 and later versions. If PREFIX is 'yes' or + not supplied, 'configure' uses the values of the make variables + 'includedir' and 'libdir', which are subdirectories of 'prefix' by default, to find the installed version of Readline if it is not in the standard system include and library directories. If PREFIX is - `no', Bash links with the version in `lib/readline'. If PREFIX is - set to any other value, `configure' treats it as a directory + 'no', Bash links with the version in 'lib/readline'. If PREFIX is + set to any other value, 'configure' treats it as a directory pathname and looks for the installed version of Readline in - subdirectories of that directory (include files in - PREFIX/`include' and the library in PREFIX/`lib'). + subdirectories of that directory (include files in PREFIX/'include' + and the library in PREFIX/'lib'). -`--with-purify' +'--with-purify' Define this to use the Purify memory allocation checker from Rational Software. -`--enable-minimal-config' +'--enable-minimal-config' This produces a shell with minimal features, close to the historical Bourne shell. - There are several `--enable-' options that alter how Bash is -compiled and linked, rather than changing run-time features. + There are several '--enable-' options that alter how Bash is compiled +and linked, rather than changing run-time features. -`--enable-largefile' +'--enable-largefile' Enable support for large files (http://www.sas.com/standards/large_file/x_open.20Mar96.html) if the operating system requires special compiler options to build - programs which can access large files. This is enabled by - default, if the operating system provides large file support. + programs which can access large files. This is enabled by default, + if the operating system provides large file support. -`--enable-profiling' +'--enable-profiling' This builds a Bash binary that produces profiling information to be - processed by `gprof' each time it is executed. + processed by 'gprof' each time it is executed. -`--enable-static-link' - This causes Bash to be linked statically, if `gcc' is being used. +'--enable-static-link' + This causes Bash to be linked statically, if 'gcc' is being used. This could be used to build a version to use as root's shell. - The `minimal-config' option can be used to disable all of the + The 'minimal-config' option can be used to disable all of the following options, but it is processed first, so individual options may -be enabled using `enable-FEATURE'. +be enabled using 'enable-FEATURE'. - All of the following options except for `disabled-builtins', -`direxpand-default', and `xpg-echo-default' are enabled by default, + All of the following options except for 'disabled-builtins', +'direxpand-default', and 'xpg-echo-default' are enabled by default, unless the operating system does not provide the necessary support. -`--enable-alias' - Allow alias expansion and include the `alias' and `unalias' +'--enable-alias' + Allow alias expansion and include the 'alias' and 'unalias' builtins (*note Aliases::). -`--enable-arith-for-command' - Include support for the alternate form of the `for' command that - behaves like the C language `for' statement (*note Looping +'--enable-arith-for-command' + Include support for the alternate form of the 'for' command that + behaves like the C language 'for' statement (*note Looping Constructs::). -`--enable-array-variables' +'--enable-array-variables' Include support for one-dimensional array shell variables (*note Arrays::). -`--enable-bang-history' - Include support for `csh'-like history substitution (*note History +'--enable-bang-history' + Include support for 'csh'-like history substitution (*note History Interaction::). -`--enable-brace-expansion' - Include `csh'-like brace expansion ( `b{a,b}c' ==> `bac bbc' ). +'--enable-brace-expansion' + Include 'csh'-like brace expansion ( 'b{a,b}c' ==> 'bac bbc' ). See *note Brace Expansion::, for a complete description. -`--enable-casemod-attributes' - Include support for case-modifying attributes in the `declare' +'--enable-casemod-attributes' + Include support for case-modifying attributes in the 'declare' builtin and assignment statements. Variables with the UPPERCASE attribute, for example, will have their values converted to uppercase upon assignment. -`--enable-casemod-expansion' +'--enable-casemod-expansion' Include support for case-modifying word expansions. -`--enable-command-timing' - Include support for recognizing `time' as a reserved word and for - displaying timing statistics for the pipeline following `time' +'--enable-command-timing' + Include support for recognizing 'time' as a reserved word and for + displaying timing statistics for the pipeline following 'time' (*note Pipelines::). This allows pipelines as well as shell builtins and functions to be timed. -`--enable-cond-command' - Include support for the `[[' conditional command. (*note +'--enable-cond-command' + Include support for the '[[' conditional command. (*note Conditional Constructs::). -`--enable-cond-regexp' +'--enable-cond-regexp' Include support for matching POSIX regular expressions using the - `=~' binary operator in the `[[' conditional command. (*note + '=~' binary operator in the '[[' conditional command. (*note Conditional Constructs::). -`--enable-coprocesses' - Include support for coprocesses and the `coproc' reserved word +'--enable-coprocesses' + Include support for coprocesses and the 'coproc' reserved word (*note Pipelines::). -`--enable-debugger' +'--enable-debugger' Include support for the bash debugger (distributed separately). -`--enable-direxpand-default' - Cause the `direxpand' shell option (*note The Shopt Builtin::) to +'--enable-direxpand-default' + Cause the 'direxpand' shell option (*note The Shopt Builtin::) to be enabled by default when the shell starts. It is normally disabled by default. -`--enable-directory-stack' - Include support for a `csh'-like directory stack and the `pushd', - `popd', and `dirs' builtins (*note The Directory Stack::). +'--enable-directory-stack' + Include support for a 'csh'-like directory stack and the 'pushd', + 'popd', and 'dirs' builtins (*note The Directory Stack::). -`--enable-disabled-builtins' - Allow builtin commands to be invoked via `builtin xxx' even after - `xxx' has been disabled using `enable -n xxx'. See *note Bash - Builtins::, for details of the `builtin' and `enable' builtin +'--enable-disabled-builtins' + Allow builtin commands to be invoked via 'builtin xxx' even after + 'xxx' has been disabled using 'enable -n xxx'. See *note Bash + Builtins::, for details of the 'builtin' and 'enable' builtin commands. -`--enable-dparen-arithmetic' - Include support for the `((...))' command (*note Conditional +'--enable-dparen-arithmetic' + Include support for the '((...))' command (*note Conditional Constructs::). -`--enable-extended-glob' +'--enable-extended-glob' Include support for the extended pattern matching features described above under *note Pattern Matching::. -`--enable-extended-glob-default' +'--enable-extended-glob-default' Set the default value of the EXTGLOB shell option described above under *note The Shopt Builtin:: to be enabled. -`--enable-glob-asciirange-default' - Set the default value of the GLOBASCIIRANGES shell option described - above under *note The Shopt Builtin:: to be enabled. This - controls the behavior of character ranges when used in pattern - matching bracket expressions. +'--enable-function-import' + Include support for importing function definitions exported by + another instance of the shell from the environment. This option is + enabled by default. -`--enable-help-builtin' - Include the `help' builtin, which displays help on shell builtins +'--enable-glob-asciirange-default' + Set the default value of the GLOBASCIIRANGES shell option described + above under *note The Shopt Builtin:: to be enabled. This controls + the behavior of character ranges when used in pattern matching + bracket expressions. + +'--enable-help-builtin' + Include the 'help' builtin, which displays help on shell builtins and variables (*note Bash Builtins::). -`--enable-history' - Include command history and the `fc' and `history' builtin - commands (*note Bash History Facilities::). +'--enable-history' + Include command history and the 'fc' and 'history' builtin commands + (*note Bash History Facilities::). -`--enable-job-control' - This enables the job control features (*note Job Control::), if - the operating system supports them. +'--enable-job-control' + This enables the job control features (*note Job Control::), if the + operating system supports them. -`--enable-multibyte' +'--enable-multibyte' This enables support for multibyte characters if the operating system provides the necessary support. -`--enable-net-redirections' +'--enable-net-redirections' This enables the special handling of filenames of the form - `/dev/tcp/HOST/PORT' and `/dev/udp/HOST/PORT' when used in + '/dev/tcp/HOST/PORT' and '/dev/udp/HOST/PORT' when used in redirections (*note Redirections::). -`--enable-process-substitution' +'--enable-process-substitution' This enables process substitution (*note Process Substitution::) if the operating system provides the necessary support. -`--enable-progcomp' +'--enable-progcomp' Enable the programmable completion facilities (*note Programmable Completion::). If Readline is not enabled, this option has no effect. -`--enable-prompt-string-decoding' +'--enable-prompt-string-decoding' Turn on the interpretation of a number of backslash-escaped - characters in the `$PS1', `$PS2', `$PS3', and `$PS4' prompt + characters in the '$PS1', '$PS2', '$PS3', and '$PS4' prompt strings. See *note Controlling the Prompt::, for a complete list of prompt string escape sequences. -`--enable-readline' +'--enable-readline' Include support for command-line editing and history with the Bash version of the Readline library (*note Command Line Editing::). -`--enable-restricted' +'--enable-restricted' Include support for a "restricted shell". If this is enabled, - Bash, when called as `rbash', enters a restricted mode. See *note + Bash, when called as 'rbash', enters a restricted mode. See *note The Restricted Shell::, for a description of restricted mode. -`--enable-select' - Include the `select' compound command, which allows the generation +'--enable-select' + Include the 'select' compound command, which allows the generation of simple menus (*note Conditional Constructs::). -`--enable-separate-helpfiles' - Use external files for the documentation displayed by the `help' +'--enable-separate-helpfiles' + Use external files for the documentation displayed by the 'help' builtin instead of storing the text internally. -`--enable-single-help-strings' - Store the text displayed by the `help' builtin as a single string +'--enable-single-help-strings' + Store the text displayed by the 'help' builtin as a single string for each help topic. This aids in translating the text to - different languages. You may need to disable this if your - compiler cannot handle very long string literals. + different languages. You may need to disable this if your compiler + cannot handle very long string literals. -`--enable-strict-posix-default' +'--enable-strict-posix-default' Make Bash POSIX-conformant by default (*note Bash POSIX Mode::). -`--enable-usg-echo-default' - A synonym for `--enable-xpg-echo-default'. +'--enable-usg-echo-default' + A synonym for '--enable-xpg-echo-default'. -`--enable-xpg-echo-default' - Make the `echo' builtin expand backslash-escaped characters by - default, without requiring the `-e' option. This sets the default - value of the `xpg_echo' shell option to `on', which makes the Bash - `echo' behave more like the version specified in the Single Unix - Specification, version 3. *Note Bash Builtins::, for a - description of the escape sequences that `echo' recognizes. +'--enable-xpg-echo-default' + Make the 'echo' builtin expand backslash-escaped characters by + default, without requiring the '-e' option. This sets the default + value of the 'xpg_echo' shell option to 'on', which makes the Bash + 'echo' behave more like the version specified in the Single Unix + Specification, version 3. *Note Bash Builtins::, for a description + of the escape sequences that 'echo' recognizes. - The file `config-top.h' contains C Preprocessor `#define' statements -for options which are not settable from `configure'. Some of these are -not meant to be changed; beware of the consequences if you do. Read -the comments associated with each definition for more information about -its effect. + The file 'config-top.h' contains C Preprocessor '#define' statements +for options which are not settable from 'configure'. Some of these are +not meant to be changed; beware of the consequences if you do. Read the +comments associated with each definition for more information about its +effect.  File: bash.info, Node: Reporting Bugs, Next: Major Differences From The Bourne Shell, Prev: Installing Bash, Up: Top @@ -9676,27 +9697,23 @@ Appendix A Reporting Bugs Please report all bugs you find in Bash. But first, you should make sure that it really is a bug, and that it appears in the latest version of Bash. The latest version of Bash is always available for FTP from -`ftp://ftp.gnu.org/pub/gnu/bash/'. +. Once you have determined that a bug actually exists, use the -`bashbug' command to submit a bug report. If you have a fix, you are -encouraged to mail that as well! Suggestions and `philosophical' bug +'bashbug' command to submit a bug report. If you have a fix, you are +encouraged to mail that as well! Suggestions and 'philosophical' bug reports may be mailed to or posted to the Usenet -newsgroup `gnu.bash.bug'. +newsgroup 'gnu.bash.bug'. All bug reports should include: * The version number of Bash. - * The hardware and operating system. - * The compiler used to compile Bash. - * A description of the bug behaviour. - - * A short script or `recipe' which exercises the bug and may be used + * A short script or 'recipe' which exercises the bug and may be used to reproduce it. -`bashbug' inserts the first three items automatically into the template +'bashbug' inserts the first three items automatically into the template it provides for filing a bug report. Please send all reports concerning this manual to . @@ -9713,29 +9730,29 @@ POSIX standard as the specification of how these features are to be implemented. There are some differences between the traditional Bourne shell and Bash; this section quickly details the differences of significance. A number of these differences are explained in greater -depth in previous sections. This section uses the version of `sh' +depth in previous sections. This section uses the version of 'sh' included in SVR4.2 (the last version of the historical Bourne shell) as the baseline reference. * Bash is POSIX-conformant, even where the POSIX specification - differs from traditional `sh' behavior (*note Bash POSIX Mode::). + differs from traditional 'sh' behavior (*note Bash POSIX Mode::). * Bash has multi-character invocation options (*note Invoking Bash::). * Bash has command-line editing (*note Command Line Editing::) and - the `bind' builtin. + the 'bind' builtin. * Bash provides a programmable word completion mechanism (*note - Programmable Completion::), and builtin commands `complete', - `compgen', and `compopt', to manipulate it. + Programmable Completion::), and builtin commands 'complete', + 'compgen', and 'compopt', to manipulate it. * Bash has command history (*note Bash History Facilities::) and the - `history' and `fc' builtins to manipulate it. The Bash history + 'history' and 'fc' builtins to manipulate it. The Bash history list maintains timestamp information and uses the value of the - `HISTTIMEFORMAT' variable to display it. + 'HISTTIMEFORMAT' variable to display it. - * Bash implements `csh'-like history expansion (*note History + * Bash implements 'csh'-like history expansion (*note History Interaction::). * Bash has one-dimensional array variables (*note Arrays::), and the @@ -9743,133 +9760,133 @@ the baseline reference. Several of the Bash builtins take options to act on arrays. Bash provides a number of built-in array variables. - * The `$'...'' quoting syntax, which expands ANSI-C - backslash-escaped characters in the text between the single quotes, - is supported (*note ANSI-C Quoting::). + * The '$'...'' quoting syntax, which expands ANSI-C backslash-escaped + characters in the text between the single quotes, is supported + (*note ANSI-C Quoting::). - * Bash supports the `$"..."' quoting syntax to do locale-specific - translation of the characters between the double quotes. The - `-D', `--dump-strings', and `--dump-po-strings' invocation options - list the translatable strings found in a script (*note Locale + * Bash supports the '$"..."' quoting syntax to do locale-specific + translation of the characters between the double quotes. The '-D', + '--dump-strings', and '--dump-po-strings' invocation options list + the translatable strings found in a script (*note Locale Translation::). - * Bash implements the `!' keyword to negate the return value of a - pipeline (*note Pipelines::). Very useful when an `if' statement - needs to act only if a test fails. The Bash `-o pipefail' option - to `set' will cause a pipeline to return a failure status if any + * Bash implements the '!' keyword to negate the return value of a + pipeline (*note Pipelines::). Very useful when an 'if' statement + needs to act only if a test fails. The Bash '-o pipefail' option + to 'set' will cause a pipeline to return a failure status if any command fails. - * Bash has the `time' reserved word and command timing (*note + * Bash has the 'time' reserved word and command timing (*note Pipelines::). The display of the timing statistics may be - controlled with the `TIMEFORMAT' variable. + controlled with the 'TIMEFORMAT' variable. - * Bash implements the `for (( EXPR1 ; EXPR2 ; EXPR3 ))' arithmetic + * Bash implements the 'for (( EXPR1 ; EXPR2 ; EXPR3 ))' arithmetic for command, similar to the C language (*note Looping Constructs::). - * Bash includes the `select' compound command, which allows the + * Bash includes the 'select' compound command, which allows the generation of simple menus (*note Conditional Constructs::). - * Bash includes the `[[' compound command, which makes conditional - testing part of the shell grammar (*note Conditional - Constructs::), including optional regular expression matching. + * Bash includes the '[[' compound command, which makes conditional + testing part of the shell grammar (*note Conditional Constructs::), + including optional regular expression matching. - * Bash provides optional case-insensitive matching for the `case' and - `[[' constructs. + * Bash provides optional case-insensitive matching for the 'case' and + '[[' constructs. * Bash includes brace expansion (*note Brace Expansion::) and tilde expansion (*note Tilde Expansion::). - * Bash implements command aliases and the `alias' and `unalias' + * Bash implements command aliases and the 'alias' and 'unalias' builtins (*note Aliases::). - * Bash provides shell arithmetic, the `((' compound command (*note + * Bash provides shell arithmetic, the '((' compound command (*note Conditional Constructs::), and arithmetic expansion (*note Shell Arithmetic::). * Variables present in the shell's initial environment are automatically exported to child processes. The Bourne shell does not normally do this unless the variables are explicitly marked - using the `export' command. + using the 'export' command. - * Bash supports the `+=' assignment operator, which appends to the + * Bash supports the '+=' assignment operator, which appends to the value of the variable named on the left hand side. - * Bash includes the POSIX pattern removal `%', `#', `%%' and `##' + * Bash includes the POSIX pattern removal '%', '#', '%%' and '##' expansions to remove leading or trailing substrings from variable values (*note Shell Parameter Expansion::). - * The expansion `${#xx}', which returns the length of `${xx}', is + * The expansion '${#xx}', which returns the length of '${xx}', is supported (*note Shell Parameter Expansion::). - * The expansion `${var:'OFFSET`[:'LENGTH`]}', which expands to the - substring of `var''s value of length LENGTH, beginning at OFFSET, + * The expansion '${var:'OFFSET'[:'LENGTH']}', which expands to the + substring of 'var''s value of length LENGTH, beginning at OFFSET, is present (*note Shell Parameter Expansion::). - * The expansion `${var/[/]'PATTERN`[/'REPLACEMENT`]}', which matches - PATTERN and replaces it with REPLACEMENT in the value of `var', is + * The expansion '${var/[/]'PATTERN'[/'REPLACEMENT']}', which matches + PATTERN and replaces it with REPLACEMENT in the value of 'var', is available (*note Shell Parameter Expansion::). - * The expansion `${!PREFIX*}' expansion, which expands to the names + * The expansion '${!PREFIX*}' expansion, which expands to the names of all shell variables whose names begin with PREFIX, is available (*note Shell Parameter Expansion::). - * Bash has INDIRECT variable expansion using `${!word}' (*note Shell + * Bash has INDIRECT variable expansion using '${!word}' (*note Shell Parameter Expansion::). - * Bash can expand positional parameters beyond `$9' using `${NUM}'. + * Bash can expand positional parameters beyond '$9' using '${NUM}'. - * The POSIX `$()' form of command substitution is implemented (*note - Command Substitution::), and preferred to the Bourne shell's ```' + * The POSIX '$()' form of command substitution is implemented (*note + Command Substitution::), and preferred to the Bourne shell's '``' (which is also implemented for backwards compatibility). * Bash has process substitution (*note Process Substitution::). - * Bash automatically assigns variables that provide information - about the current user (`UID', `EUID', and `GROUPS'), the current - host (`HOSTTYPE', `OSTYPE', `MACHTYPE', and `HOSTNAME'), and the - instance of Bash that is running (`BASH', `BASH_VERSION', and - `BASH_VERSINFO'). *Note Bash Variables::, for details. + * Bash automatically assigns variables that provide information about + the current user ('UID', 'EUID', and 'GROUPS'), the current host + ('HOSTTYPE', 'OSTYPE', 'MACHTYPE', and 'HOSTNAME'), and the + instance of Bash that is running ('BASH', 'BASH_VERSION', and + 'BASH_VERSINFO'). *Note Bash Variables::, for details. - * The `IFS' variable is used to split only the results of expansion, - not all words (*note Word Splitting::). This closes a - longstanding shell security hole. + * The 'IFS' variable is used to split only the results of expansion, + not all words (*note Word Splitting::). This closes a longstanding + shell security hole. - * The filename expansion bracket expression code uses `!' and `^' to + * The filename expansion bracket expression code uses '!' and '^' to negate the set of characters between the brackets. The Bourne - shell uses only `!'. + shell uses only '!'. * Bash implements the full set of POSIX filename expansion operators, including CHARACTER CLASSES, EQUIVALENCE CLASSES, and COLLATING SYMBOLS (*note Filename Expansion::). * Bash implements extended pattern matching features when the - `extglob' shell option is enabled (*note Pattern Matching::). + 'extglob' shell option is enabled (*note Pattern Matching::). * It is possible to have a variable and a function with the same - name; `sh' does not separate the two name spaces. + name; 'sh' does not separate the two name spaces. * Bash functions are permitted to have local variables using the - `local' builtin, and thus useful recursive functions may be written + 'local' builtin, and thus useful recursive functions may be written (*note Bash Builtins::). * Variable assignments preceding commands affect only that command, - even builtins and functions (*note Environment::). In `sh', all + even builtins and functions (*note Environment::). In 'sh', all variable assignments preceding commands are global unless the command is executed from the file system. * Bash performs filename expansion on filenames specified as operands to input and output redirection operators (*note Redirections::). - * Bash contains the `<>' redirection operator, allowing a file to be - opened for both reading and writing, and the `&>' redirection + * Bash contains the '<>' redirection operator, allowing a file to be + opened for both reading and writing, and the '&>' redirection operator, for directing standard output and standard error to the same file (*note Redirections::). - * Bash includes the `<<<' redirection operator, allowing a string to + * Bash includes the '<<<' redirection operator, allowing a string to be used as the standard input to a command. - * Bash implements the `[n]<&WORD' and `[n]>&WORD' redirection + * Bash implements the '[n]<&WORD' and '[n]>&WORD' redirection operators, which move one file descriptor to another. * Bash treats a number of filenames specially when they are used in @@ -9878,127 +9895,126 @@ the baseline reference. * Bash can open network connections to arbitrary machines and services with the redirection operators (*note Redirections::). - * The `noclobber' option is available to avoid overwriting existing - files with output redirection (*note The Set Builtin::). The `>|' - redirection operator may be used to override `noclobber'. + * The 'noclobber' option is available to avoid overwriting existing + files with output redirection (*note The Set Builtin::). The '>|' + redirection operator may be used to override 'noclobber'. - * The Bash `cd' and `pwd' builtins (*note Bourne Shell Builtins::) - each take `-L' and `-P' options to switch between logical and + * The Bash 'cd' and 'pwd' builtins (*note Bourne Shell Builtins::) + each take '-L' and '-P' options to switch between logical and physical modes. * Bash allows a function to override a builtin with the same name, and provides access to that builtin's functionality within the - function via the `builtin' and `command' builtins (*note Bash + function via the 'builtin' and 'command' builtins (*note Bash Builtins::). - * The `command' builtin allows selective disabling of functions when + * The 'command' builtin allows selective disabling of functions when command lookup is performed (*note Bash Builtins::). - * Individual builtins may be enabled or disabled using the `enable' + * Individual builtins may be enabled or disabled using the 'enable' builtin (*note Bash Builtins::). - * The Bash `exec' builtin takes additional options that allow users + * The Bash 'exec' builtin takes additional options that allow users to control the contents of the environment passed to the executed command, and what the zeroth argument to the command is to be (*note Bourne Shell Builtins::). * Shell functions may be exported to children via the environment - using `export -f' (*note Shell Functions::). + using 'export -f' (*note Shell Functions::). - * The Bash `export', `readonly', and `declare' builtins can take a - `-f' option to act on shell functions, a `-p' option to display + * The Bash 'export', 'readonly', and 'declare' builtins can take a + '-f' option to act on shell functions, a '-p' option to display variables with various attributes set in a format that can be used - as shell input, a `-n' option to remove various variable - attributes, and `name=value' arguments to set variable attributes + as shell input, a '-n' option to remove various variable + attributes, and 'name=value' arguments to set variable attributes and values simultaneously. - * The Bash `hash' builtin allows a name to be associated with an + * The Bash 'hash' builtin allows a name to be associated with an arbitrary filename, even when that filename cannot be found by - searching the `$PATH', using `hash -p' (*note Bourne Shell + searching the '$PATH', using 'hash -p' (*note Bourne Shell Builtins::). - * Bash includes a `help' builtin for quick reference to shell + * Bash includes a 'help' builtin for quick reference to shell facilities (*note Bash Builtins::). - * The `printf' builtin is available to display formatted output + * The 'printf' builtin is available to display formatted output (*note Bash Builtins::). - * The Bash `read' builtin (*note Bash Builtins::) will read a line - ending in `\' with the `-r' option, and will use the `REPLY' - variable as a default if no non-option arguments are supplied. - The Bash `read' builtin also accepts a prompt string with the `-p' - option and will use Readline to obtain the line when given the - `-e' option. The `read' builtin also has additional options to - control input: the `-s' option will turn off echoing of input - characters as they are read, the `-t' option will allow `read' to - time out if input does not arrive within a specified number of - seconds, the `-n' option will allow reading only a specified - number of characters rather than a full line, and the `-d' option - will read until a particular character rather than newline. + * The Bash 'read' builtin (*note Bash Builtins::) will read a line + ending in '\' with the '-r' option, and will use the 'REPLY' + variable as a default if no non-option arguments are supplied. The + Bash 'read' builtin also accepts a prompt string with the '-p' + option and will use Readline to obtain the line when given the '-e' + option. The 'read' builtin also has additional options to control + input: the '-s' option will turn off echoing of input characters as + they are read, the '-t' option will allow 'read' to time out if + input does not arrive within a specified number of seconds, the + '-n' option will allow reading only a specified number of + characters rather than a full line, and the '-d' option will read + until a particular character rather than newline. - * The `return' builtin may be used to abort execution of scripts - executed with the `.' or `source' builtins (*note Bourne Shell + * The 'return' builtin may be used to abort execution of scripts + executed with the '.' or 'source' builtins (*note Bourne Shell Builtins::). - * Bash includes the `shopt' builtin, for finer control of shell - optional capabilities (*note The Shopt Builtin::), and allows - these options to be set and unset at shell invocation (*note - Invoking Bash::). + * Bash includes the 'shopt' builtin, for finer control of shell + optional capabilities (*note The Shopt Builtin::), and allows these + options to be set and unset at shell invocation (*note Invoking + Bash::). - * Bash has much more optional behavior controllable with the `set' + * Bash has much more optional behavior controllable with the 'set' builtin (*note The Set Builtin::). - * The `-x' (`xtrace') option displays commands other than simple + * The '-x' ('xtrace') option displays commands other than simple commands when performing an execution trace (*note The Set Builtin::). - * The `test' builtin (*note Bourne Shell Builtins::) is slightly + * The 'test' builtin (*note Bourne Shell Builtins::) is slightly different, as it implements the POSIX algorithm, which specifies the behavior based on the number of arguments. - * Bash includes the `caller' builtin, which displays the context of + * Bash includes the 'caller' builtin, which displays the context of any active subroutine call (a shell function or a script executed - with the `.' or `source' builtins). This supports the bash + with the '.' or 'source' builtins). This supports the bash debugger. - * The `trap' builtin (*note Bourne Shell Builtins::) allows a - `DEBUG' pseudo-signal specification, similar to `EXIT'. Commands - specified with a `DEBUG' trap are executed before every simple - command, `for' command, `case' command, `select' command, every - arithmetic `for' command, and before the first command executes in - a shell function. The `DEBUG' trap is not inherited by shell - functions unless the function has been given the `trace' attribute - or the `functrace' option has been enabled using the `shopt' - builtin. The `extdebug' shell option has additional effects on the - `DEBUG' trap. + * The 'trap' builtin (*note Bourne Shell Builtins::) allows a 'DEBUG' + pseudo-signal specification, similar to 'EXIT'. Commands specified + with a 'DEBUG' trap are executed before every simple command, 'for' + command, 'case' command, 'select' command, every arithmetic 'for' + command, and before the first command executes in a shell function. + The 'DEBUG' trap is not inherited by shell functions unless the + function has been given the 'trace' attribute or the 'functrace' + option has been enabled using the 'shopt' builtin. The 'extdebug' + shell option has additional effects on the 'DEBUG' trap. - The `trap' builtin (*note Bourne Shell Builtins::) allows an `ERR' - pseudo-signal specification, similar to `EXIT' and `DEBUG'. - Commands specified with an `ERR' trap are executed after a simple - command fails, with a few exceptions. The `ERR' trap is not - inherited by shell functions unless the `-o errtrace' option to - the `set' builtin is enabled. + The 'trap' builtin (*note Bourne Shell Builtins::) allows an 'ERR' + pseudo-signal specification, similar to 'EXIT' and 'DEBUG'. + Commands specified with an 'ERR' trap are executed after a simple + command fails, with a few exceptions. The 'ERR' trap is not + inherited by shell functions unless the '-o errtrace' option to the + 'set' builtin is enabled. - The `trap' builtin (*note Bourne Shell Builtins::) allows a - `RETURN' pseudo-signal specification, similar to `EXIT' and - `DEBUG'. Commands specified with an `RETURN' trap are executed + The 'trap' builtin (*note Bourne Shell Builtins::) allows a + 'RETURN' pseudo-signal specification, similar to 'EXIT' and + 'DEBUG'. Commands specified with an 'RETURN' trap are executed before execution resumes after a shell function or a shell script - executed with `.' or `source' returns. The `RETURN' trap is not - inherited by shell functions unless the function has been given - the `trace' attribute or the `functrace' option has been enabled - using the `shopt' builtin. + executed with '.' or 'source' returns. The 'RETURN' trap is not + inherited by shell functions unless the function has been given the + 'trace' attribute or the 'functrace' option has been enabled using + the 'shopt' builtin. - * The Bash `type' builtin is more extensive and gives more + * The Bash 'type' builtin is more extensive and gives more information about the names it finds (*note Bash Builtins::). - * The Bash `umask' builtin permits a `-p' option to cause the output - to be displayed in the form of a `umask' command that may be - reused as input (*note Bourne Shell Builtins::). + * The Bash 'umask' builtin permits a '-p' option to cause the output + to be displayed in the form of a 'umask' command that may be reused + as input (*note Bourne Shell Builtins::). - * Bash implements a `csh'-like directory stack, and provides the - `pushd', `popd', and `dirs' builtins to manipulate it (*note The - Directory Stack::). Bash also makes the directory stack visible - as the value of the `DIRSTACK' shell variable. + * Bash implements a 'csh'-like directory stack, and provides the + 'pushd', 'popd', and 'dirs' builtins to manipulate it (*note The + Directory Stack::). Bash also makes the directory stack visible as + the value of the 'DIRSTACK' shell variable. * Bash interprets special backslash-escaped characters in the prompt strings when interactive (*note Controlling the Prompt::). @@ -10006,23 +10022,22 @@ the baseline reference. * The Bash restricted mode is more useful (*note The Restricted Shell::); the SVR4.2 shell restricted mode is too limited. - * The `disown' builtin can remove a job from the internal shell job + * The 'disown' builtin can remove a job from the internal shell job table (*note Job Control Builtins::) or suppress the sending of - `SIGHUP' to a job when the shell exits as the result of a `SIGHUP'. + 'SIGHUP' to a job when the shell exits as the result of a 'SIGHUP'. * Bash includes a number of features to support a separate debugger for shell scripts. - * The SVR4.2 shell has two privilege-related builtins (`mldmode' and - `priv') not present in Bash. + * The SVR4.2 shell has two privilege-related builtins ('mldmode' and + 'priv') not present in Bash. - * Bash does not have the `stop' or `newgrp' builtins. + * Bash does not have the 'stop' or 'newgrp' builtins. - * Bash does not use the `SHACCT' variable or perform shell + * Bash does not use the 'SHACCT' variable or perform shell accounting. - * The SVR4.2 `sh' uses a `TIMEOUT' variable like Bash uses `TMOUT'. - + * The SVR4.2 'sh' uses a 'TIMEOUT' variable like Bash uses 'TMOUT'. More features unique to Bash may be found in *note Bash Features::. @@ -10033,40 +10048,40 @@ Since Bash is a completely new implementation, it does not suffer from many of the limitations of the SVR4.2 shell. For instance: * Bash does not fork a subshell when redirecting into or out of a - shell control structure such as an `if' or `while' statement. + shell control structure such as an 'if' or 'while' statement. * Bash does not allow unbalanced quotes. The SVR4.2 shell will - silently insert a needed closing quote at `EOF' under certain + silently insert a needed closing quote at 'EOF' under certain circumstances. This can be the cause of some hard-to-find errors. * The SVR4.2 shell uses a baroque memory management scheme based on - trapping `SIGSEGV'. If the shell is started from a process with - `SIGSEGV' blocked (e.g., by using the `system()' C library - function call), it misbehaves badly. + trapping 'SIGSEGV'. If the shell is started from a process with + 'SIGSEGV' blocked (e.g., by using the 'system()' C library function + call), it misbehaves badly. * In a questionable attempt at security, the SVR4.2 shell, when - invoked without the `-p' option, will alter its real and effective + invoked without the '-p' option, will alter its real and effective UID and GID if they are less than some magic threshold value, commonly 100. This can lead to unexpected results. - * The SVR4.2 shell does not allow users to trap `SIGSEGV', - `SIGALRM', or `SIGCHLD'. + * The SVR4.2 shell does not allow users to trap 'SIGSEGV', 'SIGALRM', + or 'SIGCHLD'. - * The SVR4.2 shell does not allow the `IFS', `MAILCHECK', `PATH', - `PS1', or `PS2' variables to be unset. + * The SVR4.2 shell does not allow the 'IFS', 'MAILCHECK', 'PATH', + 'PS1', or 'PS2' variables to be unset. - * The SVR4.2 shell treats `^' as the undocumented equivalent of `|'. + * The SVR4.2 shell treats '^' as the undocumented equivalent of '|'. - * Bash allows multiple option arguments when it is invoked (`-x -v'); - the SVR4.2 shell allows only one option argument (`-xv'). In - fact, some versions of the shell dump core if the second argument - begins with a `-'. + * Bash allows multiple option arguments when it is invoked ('-x -v'); + the SVR4.2 shell allows only one option argument ('-xv'). In fact, + some versions of the shell dump core if the second argument begins + with a '-'. * The SVR4.2 shell exits a script if any builtin fails; Bash exits a script only if one of the POSIX special builtins fails, and only for certain failures, as enumerated in the POSIX standard. - * The SVR4.2 shell behaves differently when invoked as `jsh' (it + * The SVR4.2 shell behaves differently when invoked as 'jsh' (it turns on job control).  @@ -10078,7 +10093,7 @@ Appendix C GNU Free Documentation License Version 1.3, 3 November 2008 Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc. - `http://fsf.org/' + Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -10103,21 +10118,21 @@ Appendix C GNU Free Documentation License free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless - of subject matter or whether it is published as a printed book. - We recommend this License principally for works whose purpose is + of subject matter or whether it is published as a printed book. We + recommend this License principally for works whose purpose is instruction or reference. 1. APPLICABILITY AND DEFINITIONS This License applies to any manual or other work, in any medium, - that contains a notice placed by the copyright holder saying it - can be distributed under the terms of this License. Such a notice + that contains a notice placed by the copyright holder saying it can + be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such manual or work. Any member - of the public is a licensee, and is addressed as "you". You - accept the license if you copy, modify or distribute the work in a - way requiring permission under copyright law. + of the public is a licensee, and is addressed as "you". You accept + the license if you copy, modify or distribute the work in a way + requiring permission under copyright law. A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied verbatim, or with @@ -10135,12 +10150,12 @@ Appendix C GNU Free Documentation License regarding them. The "Invariant Sections" are certain Secondary Sections whose - titles are designated, as being those of Invariant Sections, in - the notice that says that the Document is released under this - License. If a section does not fit the above definition of - Secondary then it is not allowed to be designated as Invariant. - The Document may contain zero Invariant Sections. If the Document - does not identify any Invariant Sections then there are none. + titles are designated, as being those of Invariant Sections, in the + notice that says that the Document is released under this License. + If a section does not fit the above definition of Secondary then it + is not allowed to be designated as Invariant. The Document may + contain zero Invariant Sections. If the Document does not identify + any Invariant Sections then there are none. The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice @@ -10151,27 +10166,27 @@ Appendix C GNU Free Documentation License A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document - straightforwardly with generic text editors or (for images - composed of pixels) generic paint programs or (for drawings) some - widely available drawing editor, and that is suitable for input to - text formatters or for automatic translation to a variety of - formats suitable for input to text formatters. A copy made in an - otherwise Transparent file format whose markup, or absence of - markup, has been arranged to thwart or discourage subsequent - modification by readers is not Transparent. An image format is - not Transparent if used for any substantial amount of text. A - copy that is not "Transparent" is called "Opaque". + straightforwardly with generic text editors or (for images composed + of pixels) generic paint programs or (for drawings) some widely + available drawing editor, and that is suitable for input to text + formatters or for automatic translation to a variety of formats + suitable for input to text formatters. A copy made in an otherwise + Transparent file format whose markup, or absence of markup, has + been arranged to thwart or discourage subsequent modification by + readers is not Transparent. An image format is not Transparent if + used for any substantial amount of text. A copy that is not + "Transparent" is called "Opaque". Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX input format, - SGML or XML using a publicly available DTD, and - standard-conforming simple HTML, PostScript or PDF designed for - human modification. Examples of transparent image formats include - PNG, XCF and JPG. Opaque formats include proprietary formats that - can be read and edited only by proprietary word processors, SGML or - XML for which the DTD and/or processing tools are not generally - available, and the machine-generated HTML, PostScript or PDF - produced by some word processors for output purposes only. + SGML or XML using a publicly available DTD, and standard-conforming + simple HTML, PostScript or PDF designed for human modification. + Examples of transparent image formats include PNG, XCF and JPG. + Opaque formats include proprietary formats that can be read and + edited only by proprietary word processors, SGML or XML for which + the DTD and/or processing tools are not generally available, and + the machine-generated HTML, PostScript or PDF produced by some word + processors for output purposes only. The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the @@ -10209,8 +10224,8 @@ Appendix C GNU Free Documentation License may not use technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you - distribute a large enough number of copies you must also follow - the conditions in section 3. + distribute a large enough number of copies you must also follow the + conditions in section 3. You may also lend copies, under the same conditions stated above, and you may publicly display copies. @@ -10224,12 +10239,11 @@ Appendix C GNU Free Documentation License these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The - front cover must present the full title with all words of the - title equally prominent and visible. You may add other material - on the covers in addition. Copying with changes limited to the - covers, as long as they preserve the title of the Document and - satisfy these conditions, can be treated as verbatim copying in - other respects. + front cover must present the full title with all words of the title + equally prominent and visible. You may add other material on the + covers in addition. Copying with changes limited to the covers, as + long as they preserve the title of the Document and satisfy these + conditions, can be treated as verbatim copying in other respects. If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit @@ -10237,40 +10251,39 @@ Appendix C GNU Free Documentation License adjacent pages. If you publish or distribute Opaque copies of the Document - numbering more than 100, you must either include a - machine-readable Transparent copy along with each Opaque copy, or - state in or with each Opaque copy a computer-network location from - which the general network-using public has access to download - using public-standard network protocols a complete Transparent - copy of the Document, free of added material. If you use the - latter option, you must take reasonably prudent steps, when you - begin distribution of Opaque copies in quantity, to ensure that - this Transparent copy will remain thus accessible at the stated - location until at least one year after the last time you - distribute an Opaque copy (directly or through your agents or - retailers) of that edition to the public. + numbering more than 100, you must either include a machine-readable + Transparent copy along with each Opaque copy, or state in or with + each Opaque copy a computer-network location from which the general + network-using public has access to download using public-standard + network protocols a complete Transparent copy of the Document, free + of added material. If you use the latter option, you must take + reasonably prudent steps, when you begin distribution of Opaque + copies in quantity, to ensure that this Transparent copy will + remain thus accessible at the stated location until at least one + year after the last time you distribute an Opaque copy (directly or + through your agents or retailers) of that edition to the public. It is requested, but not required, that you contact the authors of - the Document well before redistributing any large number of - copies, to give them a chance to provide you with an updated - version of the Document. + the Document well before redistributing any large number of copies, + to give them a chance to provide you with an updated version of the + Document. 4. MODIFICATIONS You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you - release the Modified Version under precisely this License, with - the Modified Version filling the role of the Document, thus - licensing distribution and modification of the Modified Version to - whoever possesses a copy of it. In addition, you must do these - things in the Modified Version: + release the Modified Version under precisely this License, with the + Modified Version filling the role of the Document, thus licensing + distribution and modification of the Modified Version to whoever + possesses a copy of it. In addition, you must do these things in + the Modified Version: A. Use in the Title Page (and on the covers, if any) a title - distinct from that of the Document, and from those of - previous versions (which should, if there were any, be listed - in the History section of the Document). You may use the - same title as a previous version if the original publisher of - that version gives permission. + distinct from that of the Document, and from those of previous + versions (which should, if there were any, be listed in the + History section of the Document). You may use the same title + as a previous version if the original publisher of that + version gives permission. B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in @@ -10300,31 +10313,30 @@ Appendix C GNU Free Documentation License I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new - authors, and publisher of the Modified Version as given on - the Title Page. If there is no section Entitled "History" in - the Document, create one stating the title, year, authors, - and publisher of the Document as given on its Title Page, - then add an item describing the Modified Version as stated in - the previous sentence. + authors, and publisher of the Modified Version as given on the + Title Page. If there is no section Entitled "History" in the + Document, create one stating the title, year, authors, and + publisher of the Document as given on its Title Page, then add + an item describing the Modified Version as stated in the + previous sentence. J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for - previous versions it was based on. These may be placed in - the "History" section. You may omit a network location for a - work that was published at least four years before the - Document itself, or if the original publisher of the version - it refers to gives permission. + previous versions it was based on. These may be placed in the + "History" section. You may omit a network location for a work + that was published at least four years before the Document + itself, or if the original publisher of the version it refers + to gives permission. K. For any section Entitled "Acknowledgements" or "Dedications", - Preserve the Title of the section, and preserve in the - section all the substance and tone of each of the contributor + Preserve the Title of the section, and preserve in the section + all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. - L. Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section - titles. + L. Preserve all the Invariant Sections of the Document, unaltered + in their text and in their titles. Section numbers or the + equivalent are not considered part of the section titles. M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version. @@ -10337,11 +10349,11 @@ Appendix C GNU Free Documentation License If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no - material copied from the Document, you may at your option - designate some or all of these sections as invariant. To do this, - add their titles to the list of Invariant Sections in the Modified - Version's license notice. These titles must be distinct from any - other section titles. + material copied from the Document, you may at your option designate + some or all of these sections as invariant. To do this, add their + titles to the list of Invariant Sections in the Modified Version's + license notice. These titles must be distinct from any other + section titles. You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified Version by various @@ -10350,15 +10362,15 @@ Appendix C GNU Free Documentation License definition of a standard. You may add a passage of up to five words as a Front-Cover Text, - and a passage of up to 25 words as a Back-Cover Text, to the end - of the list of Cover Texts in the Modified Version. Only one - passage of Front-Cover Text and one of Back-Cover Text may be - added by (or through arrangements made by) any one entity. If the - Document already includes a cover text for the same cover, - previously added by you or by arrangement made by the same entity - you are acting on behalf of, you may not add another; but you may - replace the old one, on explicit permission from the previous - publisher that added the old one. + and a passage of up to 25 words as a Back-Cover Text, to the end of + the list of Cover Texts in the Modified Version. Only one passage + of Front-Cover Text and one of Back-Cover Text may be added by (or + through arrangements made by) any one entity. If the Document + already includes a cover text for the same cover, previously added + by you or by arrangement made by the same entity you are acting on + behalf of, you may not add another; but you may replace the old + one, on explicit permission from the previous publisher that added + the old one. The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to @@ -10368,8 +10380,8 @@ Appendix C GNU Free Documentation License You may combine the Document with other documents released under this License, under the terms defined in section 4 above for - modified versions, provided that you include in the combination - all of the Invariant Sections of all of the original documents, + modified versions, provided that you include in the combination all + of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. @@ -10396,20 +10408,20 @@ Appendix C GNU Free Documentation License documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the - rules of this License for verbatim copying of each of the - documents in all other respects. + rules of this License for verbatim copying of each of the documents + in all other respects. You may extract a single document from such a collection, and distribute it individually under this License, provided you insert - a copy of this License into the extracted document, and follow - this License in all other respects regarding verbatim copying of - that document. + a copy of this License into the extracted document, and follow this + License in all other respects regarding verbatim copying of that + document. 7. AGGREGATION WITH INDEPENDENT WORKS A compilation of the Document or its derivatives with other - separate and independent documents or works, in or on a volume of - a storage or distribution medium, is called an "aggregate" if the + separate and independent documents or works, in or on a volume of a + storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the Document is included in an aggregate, this @@ -10454,8 +10466,8 @@ Appendix C GNU Free Documentation License However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) - provisionally, unless and until the copyright holder explicitly - and finally terminates your license, and (b) permanently, if the + provisionally, unless and until the copyright holder explicitly and + finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. @@ -10467,33 +10479,33 @@ Appendix C GNU Free Documentation License after your receipt of the notice. Termination of your rights under this section does not terminate - the licenses of parties who have received copies or rights from - you under this License. If your rights have been terminated and - not permanently reinstated, receipt of a copy of some or all of - the same material does not give you any rights to use it. + the licenses of parties who have received copies or rights from you + under this License. If your rights have been terminated and not + permanently reinstated, receipt of a copy of some or all of the + same material does not give you any rights to use it. - 10. FUTURE REVISIONS OF THIS LICENSE + 10. FUTURE REVISIONS OF THIS LICENSE The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See - `http://www.gnu.org/copyleft/'. + . Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this License "or any later version" applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been - published (not as a draft) by the Free Software Foundation. If - the Document does not specify a version number of this License, - you may choose any version ever published (not as a draft) by the - Free Software Foundation. If the Document specifies that a proxy - can decide which future versions of this License can be used, that + published (not as a draft) by the Free Software Foundation. If the + Document does not specify a version number of this License, you may + choose any version ever published (not as a draft) by the Free + Software Foundation. If the Document specifies that a proxy can + decide which future versions of this License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Document. - 11. RELICENSING + 11. RELICENSING "Massive Multiauthor Collaboration Site" (or "MMC Site") means any World Wide Web server that publishes copyrightable works and also @@ -10523,7 +10535,6 @@ Appendix C GNU Free Documentation License site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. - ADDENDUM: How to use this License for your documents ==================================================== @@ -10540,7 +10551,7 @@ notices just after the title page: Free Documentation License''. If you have Invariant Sections, Front-Cover Texts and Back-Cover -Texts, replace the "with...Texts." line with this: +Texts, replace the "with...Texts." line with this: with the Invariant Sections being LIST THEIR TITLES, with the Front-Cover Texts being LIST, and with the Back-Cover Texts @@ -10551,9 +10562,9 @@ combination of the three, merge those two alternatives to suit the situation. If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, to -permit their use in free software. +recommend releasing these examples in parallel under your choice of free +software license, such as the GNU General Public License, to permit +their use in free software.  File: bash.info, Node: Indexes, Prev: GNU Free Documentation License, Up: Top @@ -10585,94 +10596,94 @@ D.1 Index of Shell Builtin Commands * :: Bourne Shell Builtins. (line 11) * [: Bourne Shell Builtins. - (line 263) + (line 268) * alias: Bash Builtins. (line 11) * bg: Job Control Builtins. (line 7) * bind: Bash Builtins. (line 21) * break: Bourne Shell Builtins. - (line 31) -* builtin: Bash Builtins. (line 102) -* caller: Bash Builtins. (line 111) + (line 36) +* builtin: Bash Builtins. (line 101) +* caller: Bash Builtins. (line 110) * cd: Bourne Shell Builtins. - (line 39) -* command: Bash Builtins. (line 129) + (line 44) +* command: Bash Builtins. (line 127) * compgen: Programmable Completion Builtins. (line 12) * complete: Programmable Completion Builtins. (line 30) * compopt: Programmable Completion Builtins. - (line 228) + (line 229) * continue: Bourne Shell Builtins. - (line 80) -* declare: Bash Builtins. (line 149) + (line 85) +* declare: Bash Builtins. (line 147) * dirs: Directory Stack Builtins. (line 7) * disown: Job Control Builtins. (line 89) -* echo: Bash Builtins. (line 246) -* enable: Bash Builtins. (line 308) +* echo: Bash Builtins. (line 244) +* enable: Bash Builtins. (line 293) * eval: Bourne Shell Builtins. - (line 89) + (line 94) * exec: Bourne Shell Builtins. - (line 97) + (line 102) * exit: Bourne Shell Builtins. - (line 114) + (line 119) * export: Bourne Shell Builtins. - (line 121) + (line 126) * fc: Bash History Builtins. (line 10) * fg: Job Control Builtins. (line 17) * getopts: Bourne Shell Builtins. - (line 137) + (line 142) * hash: Bourne Shell Builtins. - (line 180) -* help: Bash Builtins. (line 337) + (line 185) +* help: Bash Builtins. (line 322) * history: Bash History Builtins. (line 40) * jobs: Job Control Builtins. (line 27) * kill: Job Control Builtins. - (line 59) -* let: Bash Builtins. (line 358) -* local: Bash Builtins. (line 366) -* logout: Bash Builtins. (line 377) -* mapfile: Bash Builtins. (line 382) + (line 58) +* let: Bash Builtins. (line 341) +* local: Bash Builtins. (line 349) +* logout: Bash Builtins. (line 363) +* mapfile: Bash Builtins. (line 368) * popd: Directory Stack Builtins. - (line 39) -* printf: Bash Builtins. (line 434) + (line 35) +* printf: Bash Builtins. (line 413) * pushd: Directory Stack Builtins. - (line 61) + (line 53) * pwd: Bourne Shell Builtins. - (line 200) -* read: Bash Builtins. (line 482) -* readarray: Bash Builtins. (line 569) + (line 205) +* read: Bash Builtins. (line 457) +* readarray: Bash Builtins. (line 547) * readonly: Bourne Shell Builtins. - (line 210) + (line 215) * return: Bourne Shell Builtins. - (line 229) + (line 234) * set: The Set Builtin. (line 11) * shift: Bourne Shell Builtins. - (line 250) + (line 255) * shopt: The Shopt Builtin. (line 9) -* source: Bash Builtins. (line 578) +* source: Bash Builtins. (line 556) * suspend: Job Control Builtins. (line 101) * test: Bourne Shell Builtins. - (line 263) + (line 268) * times: Bourne Shell Builtins. - (line 339) + (line 343) * trap: Bourne Shell Builtins. - (line 345) -* type: Bash Builtins. (line 583) -* typeset: Bash Builtins. (line 615) -* ulimit: Bash Builtins. (line 621) + (line 349) +* type: Bash Builtins. (line 561) +* typeset: Bash Builtins. (line 593) +* ulimit: Bash Builtins. (line 599) * umask: Bourne Shell Builtins. - (line 394) -* unalias: Bash Builtins. (line 712) + (line 398) +* unalias: Bash Builtins. (line 698) * unset: Bourne Shell Builtins. - (line 412) + (line 416) * wait: Job Control Builtins. (line 76) @@ -10687,9 +10698,11 @@ D.2 Index of Shell Reserved Words * !: Pipelines. (line 9) * [[: Conditional Constructs. - (line 119) + (line 120) * ]]: Conditional Constructs. - (line 119) + (line 120) +* {: Command Grouping. (line 21) +* }: Command Grouping. (line 21) * case: Conditional Constructs. (line 28) * do: Looping Constructs. (line 12) @@ -10715,8 +10728,6 @@ D.2 Index of Shell Reserved Words * time: Pipelines. (line 9) * until: Looping Constructs. (line 12) * while: Looping Constructs. (line 22) -* {: Command Grouping. (line 21) -* }: Command Grouping. (line 21)  File: bash.info, Node: Variable Index, Next: Function Index, Prev: Reserved Word Index, Up: Indexes @@ -10748,23 +10759,24 @@ D.3 Parameter and Variable Index * auto_resume: Job Control Variables. (line 6) * BASH: Bash Variables. (line 13) -* BASH_ALIASES: Bash Variables. (line 30) -* BASH_ARGC: Bash Variables. (line 37) -* BASH_ARGV: Bash Variables. (line 47) -* BASH_CMDS: Bash Variables. (line 57) -* BASH_COMMAND: Bash Variables. (line 64) -* BASH_COMPAT: Bash Variables. (line 69) -* BASH_ENV: Bash Variables. (line 84) -* BASH_EXECUTION_STRING: Bash Variables. (line 90) -* BASH_LINENO: Bash Variables. (line 93) -* BASH_REMATCH: Bash Variables. (line 101) -* BASH_SOURCE: Bash Variables. (line 109) -* BASH_SUBSHELL: Bash Variables. (line 116) -* BASH_VERSINFO: Bash Variables. (line 121) -* BASH_VERSION: Bash Variables. (line 144) -* BASH_XTRACEFD: Bash Variables. (line 147) * BASHOPTS: Bash Variables. (line 16) * BASHPID: Bash Variables. (line 25) +* BASH_ALIASES: Bash Variables. (line 30) +* BASH_ARGC: Bash Variables. (line 39) +* BASH_ARGV: Bash Variables. (line 49) +* BASH_CMDS: Bash Variables. (line 59) +* BASH_COMMAND: Bash Variables. (line 68) +* BASH_COMPAT: Bash Variables. (line 73) +* BASH_ENV: Bash Variables. (line 88) +* BASH_EXECUTION_STRING: Bash Variables. (line 94) +* BASH_LINENO: Bash Variables. (line 97) +* BASH_LOADABLES_PATH: Bash Variables. (line 105) +* BASH_REMATCH: Bash Variables. (line 109) +* BASH_SOURCE: Bash Variables. (line 117) +* BASH_SUBSHELL: Bash Variables. (line 124) +* BASH_VERSINFO: Bash Variables. (line 129) +* BASH_VERSION: Bash Variables. (line 152) +* BASH_XTRACEFD: Bash Variables. (line 155) * bell-style: Readline Init File Syntax. (line 38) * bind-tty-special-chars: Readline Init File Syntax. @@ -10773,157 +10785,172 @@ D.3 Parameter and Variable Index (line 50) * CDPATH: Bourne Shell Variables. (line 9) -* CHILD_MAX: Bash Variables. (line 158) -* colored-stats: Readline Init File Syntax. +* CHILD_MAX: Bash Variables. (line 166) +* colored-completion-prefix: Readline Init File Syntax. (line 55) -* COLUMNS: Bash Variables. (line 165) +* colored-stats: Readline Init File Syntax. + (line 62) +* COLUMNS: Bash Variables. (line 173) * comment-begin: Readline Init File Syntax. - (line 61) -* COMP_CWORD: Bash Variables. (line 171) -* COMP_KEY: Bash Variables. (line 200) -* COMP_LINE: Bash Variables. (line 177) -* COMP_POINT: Bash Variables. (line 182) -* COMP_TYPE: Bash Variables. (line 190) -* COMP_WORDBREAKS: Bash Variables. (line 204) -* COMP_WORDS: Bash Variables. (line 210) + (line 68) * completion-display-width: Readline Init File Syntax. - (line 66) -* completion-ignore-case: Readline Init File Syntax. (line 73) +* completion-ignore-case: Readline Init File Syntax. + (line 80) * completion-map-case: Readline Init File Syntax. - (line 78) + (line 85) * completion-prefix-display-length: Readline Init File Syntax. - (line 84) -* completion-query-items: Readline Init File Syntax. (line 91) -* COMPREPLY: Bash Variables. (line 218) +* completion-query-items: Readline Init File Syntax. + (line 98) +* COMPREPLY: Bash Variables. (line 225) +* COMP_CWORD: Bash Variables. (line 179) +* COMP_KEY: Bash Variables. (line 208) +* COMP_LINE: Bash Variables. (line 185) +* COMP_POINT: Bash Variables. (line 190) +* COMP_TYPE: Bash Variables. (line 198) +* COMP_WORDBREAKS: Bash Variables. (line 212) +* COMP_WORDS: Bash Variables. (line 218) * convert-meta: Readline Init File Syntax. - (line 101) -* COPROC: Bash Variables. (line 224) -* DIRSTACK: Bash Variables. (line 228) + (line 108) +* COPROC: Bash Variables. (line 231) +* DIRSTACK: Bash Variables. (line 235) * disable-completion: Readline Init File Syntax. - (line 107) + (line 114) +* echo-control-characters: Readline Init File Syntax. + (line 135) * editing-mode: Readline Init File Syntax. - (line 112) -* EMACS: Bash Variables. (line 238) + (line 119) +* EMACS: Bash Variables. (line 245) +* emacs-mode-string: Readline Init File Syntax. + (line 125) +* enable-bracketed-paste: Readline Init File Syntax. + (line 140) * enable-keypad: Readline Init File Syntax. - (line 123) -* ENV: Bash Variables. (line 243) -* EUID: Bash Variables. (line 247) + (line 148) +* ENV: Bash Variables. (line 250) +* EUID: Bash Variables. (line 254) +* EXECIGNORE: Bash Variables. (line 258) * expand-tilde: Readline Init File Syntax. - (line 134) -* FCEDIT: Bash Variables. (line 251) -* FIGNORE: Bash Variables. (line 255) -* FUNCNAME: Bash Variables. (line 261) -* FUNCNEST: Bash Variables. (line 279) -* GLOBIGNORE: Bash Variables. (line 284) -* GROUPS: Bash Variables. (line 290) -* histchars: Bash Variables. (line 296) -* HISTCMD: Bash Variables. (line 311) -* HISTCONTROL: Bash Variables. (line 316) -* HISTFILE: Bash Variables. (line 332) -* HISTFILESIZE: Bash Variables. (line 336) -* HISTIGNORE: Bash Variables. (line 347) + (line 159) +* FCEDIT: Bash Variables. (line 269) +* FIGNORE: Bash Variables. (line 273) +* FUNCNAME: Bash Variables. (line 279) +* FUNCNEST: Bash Variables. (line 296) +* GLOBIGNORE: Bash Variables. (line 301) +* GROUPS: Bash Variables. (line 308) +* histchars: Bash Variables. (line 314) +* HISTCMD: Bash Variables. (line 329) +* HISTCONTROL: Bash Variables. (line 334) +* HISTFILE: Bash Variables. (line 350) +* HISTFILESIZE: Bash Variables. (line 354) +* HISTIGNORE: Bash Variables. (line 365) * history-preserve-point: Readline Init File Syntax. - (line 138) + (line 163) * history-size: Readline Init File Syntax. - (line 144) -* HISTSIZE: Bash Variables. (line 366) -* HISTTIMEFORMAT: Bash Variables. (line 373) + (line 169) +* HISTSIZE: Bash Variables. (line 385) +* HISTTIMEFORMAT: Bash Variables. (line 392) * HOME: Bourne Shell Variables. (line 13) * horizontal-scroll-mode: Readline Init File Syntax. - (line 151) -* HOSTFILE: Bash Variables. (line 382) -* HOSTNAME: Bash Variables. (line 393) -* HOSTTYPE: Bash Variables. (line 396) + (line 176) +* HOSTFILE: Bash Variables. (line 400) +* HOSTNAME: Bash Variables. (line 411) +* HOSTTYPE: Bash Variables. (line 414) * IFS: Bourne Shell Variables. (line 18) -* IGNOREEOF: Bash Variables. (line 399) +* IGNOREEOF: Bash Variables. (line 417) * input-meta: Readline Init File Syntax. - (line 158) -* INPUTRC: Bash Variables. (line 409) + (line 183) +* INPUTRC: Bash Variables. (line 427) * isearch-terminators: Readline Init File Syntax. - (line 165) + (line 190) * keymap: Readline Init File Syntax. - (line 172) -* LANG: Bash Variables. (line 413) -* LC_ALL: Bash Variables. (line 417) -* LC_COLLATE: Bash Variables. (line 421) -* LC_CTYPE: Bash Variables. (line 428) -* LC_MESSAGES <1>: Locale Translation. (line 11) -* LC_MESSAGES: Bash Variables. (line 433) -* LC_NUMERIC: Bash Variables. (line 437) -* LINENO: Bash Variables. (line 441) -* LINES: Bash Variables. (line 445) -* MACHTYPE: Bash Variables. (line 451) + (line 197) +* LANG: Bash Variables. (line 431) +* LC_ALL: Bash Variables. (line 435) +* LC_COLLATE: Bash Variables. (line 439) +* LC_CTYPE: Bash Variables. (line 446) +* LC_MESSAGES: Locale Translation. (line 11) +* LC_MESSAGES <1>: Bash Variables. (line 451) +* LC_NUMERIC: Bash Variables. (line 455) +* LC_TIME: Bash Variables. (line 459) +* LINENO: Bash Variables. (line 463) +* LINES: Bash Variables. (line 467) +* MACHTYPE: Bash Variables. (line 473) * MAIL: Bourne Shell Variables. (line 22) -* MAILCHECK: Bash Variables. (line 455) +* MAILCHECK: Bash Variables. (line 477) * MAILPATH: Bourne Shell Variables. (line 27) -* MAPFILE: Bash Variables. (line 463) +* MAPFILE: Bash Variables. (line 485) * mark-modified-lines: Readline Init File Syntax. - (line 201) + (line 226) * mark-symlinked-directories: Readline Init File Syntax. - (line 206) + (line 231) * match-hidden-files: Readline Init File Syntax. - (line 211) + (line 236) * menu-complete-display-prefix: Readline Init File Syntax. - (line 218) + (line 243) * meta-flag: Readline Init File Syntax. - (line 158) -* OLDPWD: Bash Variables. (line 467) + (line 183) +* OLDPWD: Bash Variables. (line 489) * OPTARG: Bourne Shell Variables. (line 34) -* OPTERR: Bash Variables. (line 470) +* OPTERR: Bash Variables. (line 492) * OPTIND: Bourne Shell Variables. (line 38) -* OSTYPE: Bash Variables. (line 474) +* OSTYPE: Bash Variables. (line 496) * output-meta: Readline Init File Syntax. - (line 223) + (line 248) * page-completions: Readline Init File Syntax. - (line 228) + (line 253) * PATH: Bourne Shell Variables. (line 42) -* PIPESTATUS: Bash Variables. (line 477) -* POSIXLY_CORRECT: Bash Variables. (line 482) -* PPID: Bash Variables. (line 491) -* PROMPT_COMMAND: Bash Variables. (line 495) -* PROMPT_DIRTRIM: Bash Variables. (line 499) +* PIPESTATUS: Bash Variables. (line 499) +* POSIXLY_CORRECT: Bash Variables. (line 504) +* PPID: Bash Variables. (line 513) +* PROMPT_COMMAND: Bash Variables. (line 517) +* PROMPT_DIRTRIM: Bash Variables. (line 521) +* PS0: Bash Variables. (line 527) * PS1: Bourne Shell Variables. (line 48) * PS2: Bourne Shell Variables. (line 53) -* PS3: Bash Variables. (line 505) -* PS4: Bash Variables. (line 510) -* PWD: Bash Variables. (line 516) -* RANDOM: Bash Variables. (line 519) -* READLINE_LINE: Bash Variables. (line 524) -* READLINE_POINT: Bash Variables. (line 528) -* REPLY: Bash Variables. (line 532) +* PS3: Bash Variables. (line 532) +* PS4: Bash Variables. (line 537) +* PWD: Bash Variables. (line 543) +* RANDOM: Bash Variables. (line 546) +* READLINE_LINE: Bash Variables. (line 551) +* READLINE_POINT: Bash Variables. (line 555) +* REPLY: Bash Variables. (line 559) * revert-all-at-newline: Readline Init File Syntax. - (line 238) -* SECONDS: Bash Variables. (line 535) -* SHELL: Bash Variables. (line 541) -* SHELLOPTS: Bash Variables. (line 546) -* SHLVL: Bash Variables. (line 555) + (line 263) +* SECONDS: Bash Variables. (line 562) +* SHELL: Bash Variables. (line 568) +* SHELLOPTS: Bash Variables. (line 573) +* SHLVL: Bash Variables. (line 582) * show-all-if-ambiguous: Readline Init File Syntax. - (line 244) + (line 269) * show-all-if-unmodified: Readline Init File Syntax. - (line 250) + (line 275) * show-mode-in-prompt: Readline Init File Syntax. - (line 259) + (line 284) * skip-completed-text: Readline Init File Syntax. - (line 264) + (line 290) * TEXTDOMAIN: Locale Translation. (line 11) * TEXTDOMAINDIR: Locale Translation. (line 11) -* TIMEFORMAT: Bash Variables. (line 560) -* TMOUT: Bash Variables. (line 598) -* TMPDIR: Bash Variables. (line 610) -* UID: Bash Variables. (line 614) +* TIMEFORMAT: Bash Variables. (line 587) +* TMOUT: Bash Variables. (line 625) +* TMPDIR: Bash Variables. (line 637) +* UID: Bash Variables. (line 641) +* vi-cmd-mode-string: Readline Init File Syntax. + (line 303) +* vi-ins-mode-string: Readline Init File Syntax. + (line 313) * visible-stats: Readline Init File Syntax. - (line 277) + (line 323)  File: bash.info, Node: Function Index, Next: Concept Index, Prev: Variable Index, Up: Indexes @@ -10935,105 +10962,193 @@ D.4 Function Index * Menu: * abort (C-g): Miscellaneous Commands. - (line 10) -* accept-line (Newline or Return): Commands For History. (line 6) -* backward-char (C-b): Commands For Moving. (line 15) -* backward-delete-char (Rubout): Commands For Text. (line 17) -* backward-kill-line (C-x Rubout): Commands For Killing. (line 9) -* backward-kill-word (M-): Commands For Killing. (line 24) -* backward-word (M-b): Commands For Moving. (line 22) -* beginning-of-history (M-<): Commands For History. (line 20) -* beginning-of-line (C-a): Commands For Moving. (line 6) -* call-last-kbd-macro (C-x e): Keyboard Macros. (line 13) -* capitalize-word (M-c): Commands For Text. (line 52) + (line 10) +* accept-line (Newline or Return): Commands For History. + (line 6) +* alias-expand-line (): Miscellaneous Commands. + (line 124) +* backward-char (C-b): Commands For Moving. (line 15) +* backward-delete-char (Rubout): Commands For Text. (line 17) +* backward-kill-line (C-x Rubout): Commands For Killing. + (line 9) +* backward-kill-word (M-): Commands For Killing. + (line 24) +* backward-word (M-b): Commands For Moving. (line 22) +* beginning-of-history (M-<): Commands For History. + (line 20) +* 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 61) * character-search (C-]): Miscellaneous Commands. - (line 41) + (line 41) * character-search-backward (M-C-]): Miscellaneous Commands. - (line 46) -* clear-screen (C-l): Commands For Moving. (line 34) + (line 46) +* clear-screen (C-l): Commands For Moving. (line 34) * complete (): Commands For Completion. - (line 6) -* copy-backward-word (): Commands For Killing. (line 58) -* copy-forward-word (): Commands For Killing. (line 63) -* copy-region-as-kill (): Commands For Killing. (line 54) -* delete-char (C-d): Commands For Text. (line 12) + (line 6) +* complete-command (M-!): Commands For Completion. + (line 80) +* complete-filename (M-/): Commands For Completion. + (line 49) +* complete-hostname (M-@): Commands For Completion. + (line 72) +* complete-into-braces (M-{): Commands For Completion. + (line 100) +* complete-username (M-~): Commands For Completion. + (line 56) +* complete-variable (M-$): Commands For Completion. + (line 64) +* copy-backward-word (): Commands For Killing. + (line 58) +* copy-forward-word (): Commands For Killing. + (line 63) +* copy-region-as-kill (): Commands For Killing. + (line 54) +* 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 46) -* digit-argument (M-0, M-1, ... M--): Numeric Arguments. (line 6) + (line 43) +* delete-horizontal-space (): Commands For Killing. + (line 46) +* digit-argument ('M-0', 'M-1', ... 'M--'): Numeric Arguments. + (line 6) +* display-shell-version (C-x C-v): Miscellaneous Commands. + (line 109) * do-uppercase-version (M-a, M-b, M-X, ...): Miscellaneous Commands. - (line 14) -* downcase-word (M-l): Commands For Text. (line 48) + (line 14) +* downcase-word (M-l): Commands For Text. (line 57) * dump-functions (): Miscellaneous Commands. - (line 73) + (line 73) * dump-macros (): Miscellaneous Commands. - (line 85) + (line 85) * dump-variables (): Miscellaneous Commands. - (line 79) -* end-kbd-macro (C-x )): Keyboard Macros. (line 9) -* end-of-file (usually C-d): Commands For Text. (line 6) -* end-of-history (M->): Commands For History. (line 23) -* end-of-line (C-e): Commands For Moving. (line 9) + (line 79) +* dynamic-complete-history (M-): Commands For Completion. + (line 90) +* edit-and-execute-command (C-xC-e): Miscellaneous Commands. + (line 138) +* end-kbd-macro (C-x )): Keyboard Macros. (line 9) +* end-of-file (usually C-d): Commands For Text. (line 6) +* end-of-history (M->): Commands For History. + (line 23) +* end-of-line (C-e): Commands For Moving. (line 9) * exchange-point-and-mark (C-x C-x): Miscellaneous Commands. - (line 36) -* forward-backward-delete-char (): Commands For Text. (line 21) -* forward-char (C-f): Commands For Moving. (line 12) -* forward-search-history (C-s): Commands For History. (line 31) -* forward-word (M-f): Commands For Moving. (line 18) -* history-search-backward (): Commands For History. (line 53) -* history-search-forward (): Commands For History. (line 47) -* history-substr-search-backward (): Commands For History. (line 65) -* history-substr-search-forward (): Commands For History. (line 59) + (line 36) +* forward-backward-delete-char (): Commands For Text. (line 21) +* forward-char (C-f): Commands For Moving. (line 12) +* forward-search-history (C-s): Commands For History. + (line 31) +* forward-word (M-f): Commands For Moving. (line 18) +* glob-complete-word (M-g): Miscellaneous Commands. + (line 91) +* glob-expand-word (C-x *): Miscellaneous Commands. + (line 97) +* glob-list-expansions (C-x g): Miscellaneous Commands. + (line 103) +* history-and-alias-expand-line (): Miscellaneous Commands. + (line 127) +* history-expand-line (M-^): Miscellaneous Commands. + (line 117) +* history-search-backward (): Commands For History. + (line 53) +* history-search-forward (): Commands For History. + (line 47) +* history-substr-search-backward (): Commands For History. + (line 65) +* history-substr-search-forward (): Commands For History. + (line 59) * insert-comment (M-#): Miscellaneous Commands. - (line 60) + (line 60) * insert-completions (M-*): Commands For Completion. - (line 22) -* kill-line (C-k): Commands For Killing. (line 6) -* kill-region (): Commands For Killing. (line 50) -* kill-whole-line (): Commands For Killing. (line 15) -* kill-word (M-d): Commands For Killing. (line 19) + (line 22) +* insert-last-argument (M-. or M-_): Miscellaneous Commands. + (line 130) +* kill-line (C-k): Commands For Killing. + (line 6) +* kill-region (): Commands For Killing. + (line 50) +* kill-whole-line (): Commands For Killing. + (line 15) +* kill-word (M-d): Commands For Killing. + (line 19) +* magic-space (): Miscellaneous Commands. + (line 120) * menu-complete (): Commands For Completion. - (line 26) + (line 26) * menu-complete-backward (): Commands For Completion. - (line 38) -* next-history (C-n): Commands For History. (line 17) + (line 38) +* next-history (C-n): Commands For History. + (line 17) * non-incremental-forward-search-history (M-n): Commands For History. - (line 41) + (line 41) * non-incremental-reverse-search-history (M-p): Commands For History. - (line 35) -* overwrite-mode (): Commands For Text. (line 56) + (line 35) +* operate-and-get-next (C-o): Miscellaneous Commands. + (line 133) +* overwrite-mode (): Commands For Text. (line 65) +* possible-command-completions (C-x !): Commands For Completion. + (line 86) * possible-completions (M-?): Commands For Completion. - (line 15) + (line 15) +* possible-filename-completions (C-x /): Commands For Completion. + (line 52) +* possible-hostname-completions (C-x @): Commands For Completion. + (line 76) +* possible-username-completions (C-x ~): Commands For Completion. + (line 60) +* possible-variable-completions (C-x $): Commands For Completion. + (line 68) * prefix-meta (): Miscellaneous Commands. - (line 18) -* previous-history (C-p): Commands For History. (line 13) -* print-last-kbd-macro (): Keyboard Macros. (line 17) -* quoted-insert (C-q or C-v): Commands For Text. (line 26) + (line 18) +* previous-history (C-p): Commands For History. + (line 13) +* print-last-kbd-macro (): Keyboard Macros. (line 17) +* quoted-insert (C-q or C-v): Commands For Text. (line 26) * re-read-init-file (C-x C-r): Miscellaneous Commands. - (line 6) -* redraw-current-line (): Commands For Moving. (line 38) -* reverse-search-history (C-r): Commands For History. (line 27) + (line 6) +* redraw-current-line (): Commands For Moving. (line 38) +* reverse-search-history (C-r): Commands For History. + (line 27) * revert-line (M-r): Miscellaneous Commands. - (line 25) -* self-insert (a, b, A, 1, !, ...): Commands For Text. (line 30) + (line 25) +* self-insert (a, b, A, 1, !, ...): Commands For Text. (line 30) * set-mark (C-@): Miscellaneous Commands. - (line 32) + (line 32) +* shell-backward-kill-word (): Commands For Killing. + (line 33) +* shell-backward-word (): Commands For Moving. (line 30) +* shell-expand-line (M-C-e): Miscellaneous Commands. + (line 112) +* shell-forward-word (): Commands For Moving. (line 26) +* shell-kill-word (): Commands For Killing. + (line 28) * skip-csi-sequence (): Miscellaneous Commands. - (line 51) -* start-kbd-macro (C-x (): Keyboard Macros. (line 6) -* transpose-chars (C-t): Commands For Text. (line 33) -* transpose-words (M-t): Commands For Text. (line 39) + (line 51) +* start-kbd-macro (C-x (): Keyboard Macros. (line 6) +* tilde-expand (M-&): Miscellaneous Commands. + (line 29) +* transpose-chars (C-t): Commands For Text. (line 42) +* transpose-words (M-t): Commands For Text. (line 48) * undo (C-_ or C-x C-u): Miscellaneous Commands. - (line 22) -* universal-argument (): Numeric Arguments. (line 10) -* unix-filename-rubout (): Commands For Killing. (line 41) -* unix-line-discard (C-u): Commands For Killing. (line 12) -* unix-word-rubout (C-w): Commands For Killing. (line 37) -* upcase-word (M-u): Commands For Text. (line 44) -* yank (C-y): Commands For Killing. (line 68) -* yank-last-arg (M-. or M-_): Commands For History. (line 80) -* yank-nth-arg (M-C-y): Commands For History. (line 71) -* yank-pop (M-y): Commands For Killing. (line 71) + (line 22) +* universal-argument (): Numeric Arguments. (line 10) +* unix-filename-rubout (): Commands For Killing. + (line 41) +* unix-line-discard (C-u): Commands For Killing. + (line 12) +* unix-word-rubout (C-w): Commands For Killing. + (line 37) +* upcase-word (M-u): Commands For Text. (line 53) +* yank (C-y): Commands For Killing. + (line 68) +* yank-last-arg (M-. or M-_): Commands For History. + (line 80) +* yank-nth-arg (M-C-y): Commands For History. + (line 71) +* yank-pop (M-y): Commands For Killing. + (line 71)  File: bash.info, Node: Concept Index, Prev: Function Index, Up: Indexes @@ -11093,8 +11208,8 @@ D.5 Concept Index * event designators: Event Designators. (line 6) * execution environment: Command Execution Environment. (line 6) -* exit status <1>: Exit Status. (line 6) * exit status: Definitions. (line 26) +* exit status <1>: Exit Status. (line 6) * expansion: Shell Expansions. (line 6) * expansion, arithmetic: Arithmetic Expansion. (line 6) @@ -11125,14 +11240,14 @@ D.5 Concept Index * installation: Basic Installation. (line 6) * interaction, readline: Readline Interaction. (line 6) -* interactive shell <1>: Interactive Shells. (line 6) * interactive shell: Invoking Bash. (line 128) +* interactive shell <1>: Interactive Shells. (line 6) * internationalization: Locale Translation. (line 6) * job: Definitions. (line 38) -* job control <1>: Job Control Basics. (line 6) * job control: Definitions. (line 42) +* job control <1>: Job Control Basics. (line 6) * kill ring: Readline Killing Commands. - (line 19) + (line 18) * killing text: Readline Killing Commands. (line 6) * localization: Locale Translation. (line 6) @@ -11166,7 +11281,7 @@ D.5 Concept Index * quoting: Quoting. (line 6) * quoting, ANSI: ANSI-C Quoting. (line 6) * Readline, how to use: Job Control Variables. - (line 24) + (line 23) * redirection: Redirections. (line 6) * reserved word: Definitions. (line 70) * restricted shell: The Restricted Shell. @@ -11179,8 +11294,8 @@ D.5 Concept Index * shell, interactive: Interactive Shells. (line 6) * signal: Definitions. (line 78) * signal handling: Signals. (line 6) -* special builtin <1>: Special Builtins. (line 6) * special builtin: Definitions. (line 82) +* special builtin <1>: Special Builtins. (line 6) * startup files: Bash Startup Files. (line 6) * suspending jobs: Job Control Basics. (line 6) * tilde expansion: Tilde Expansion. (line 6) @@ -11197,134 +11312,134 @@ D.5 Concept Index  Tag Table: -Node: Top932 -Node: Introduction2852 -Node: What is Bash?3080 -Node: What is a shell?4193 -Node: Definitions6732 -Node: Basic Shell Features9650 -Node: Shell Syntax10869 -Node: Shell Operation11899 -Node: Quoting13193 -Node: Escape Character14496 -Node: Single Quotes14981 -Node: Double Quotes15329 -Node: ANSI-C Quoting16454 -Node: Locale Translation17698 -Node: Comments18594 -Node: Shell Commands19212 -Node: Simple Commands20084 -Node: Pipelines20715 -Node: Lists23458 -Node: Compound Commands25187 -Node: Looping Constructs26193 -Node: Conditional Constructs28656 -Node: Command Grouping39586 -Node: Coprocesses41065 -Node: GNU Parallel42898 -Node: Shell Functions46884 -Node: Shell Parameters52092 -Node: Positional Parameters56504 -Node: Special Parameters57404 -Node: Shell Expansions60743 -Node: Brace Expansion62686 -Node: Tilde Expansion65467 -Node: Shell Parameter Expansion67816 -Node: Command Substitution80110 -Node: Arithmetic Expansion81443 -Node: Process Substitution82375 -Node: Word Splitting83425 -Node: Filename Expansion85073 -Node: Pattern Matching87238 -Node: Quote Removal90938 -Node: Redirections91233 -Node: Executing Commands100397 -Node: Simple Command Expansion101067 -Node: Command Search and Execution102997 -Node: Command Execution Environment105334 -Node: Environment108320 -Node: Exit Status109979 -Node: Signals111649 -Node: Shell Scripts113617 -Node: Shell Builtin Commands116135 -Node: Bourne Shell Builtins118162 -Node: Bash Builtins138408 -Node: Modifying Shell Behavior166232 -Node: The Set Builtin166577 -Node: The Shopt Builtin176904 -Node: Special Builtins191345 -Node: Shell Variables192324 -Node: Bourne Shell Variables192764 -Node: Bash Variables194795 -Node: Bash Features221670 -Node: Invoking Bash222569 -Node: Bash Startup Files228516 -Node: Interactive Shells233545 -Node: What is an Interactive Shell?233955 -Node: Is this Shell Interactive?234604 -Node: Interactive Shell Behavior235419 -Node: Bash Conditional Expressions238707 -Node: Shell Arithmetic242709 -Node: Aliases245485 -Node: Arrays248032 -Node: The Directory Stack253013 -Node: Directory Stack Builtins253732 -Node: Controlling the Prompt256688 -Node: The Restricted Shell259460 -Node: Bash POSIX Mode261297 -Node: Job Control270851 -Node: Job Control Basics271311 -Node: Job Control Builtins276030 -Node: Job Control Variables280501 -Node: Command Line Editing281659 -Node: Introduction and Notation283331 -Node: Readline Interaction284953 -Node: Readline Bare Essentials286144 -Node: Readline Movement Commands287933 -Node: Readline Killing Commands288898 -Node: Readline Arguments290818 -Node: Searching291862 -Node: Readline Init File294048 -Node: Readline Init File Syntax295195 -Node: Conditional Init Constructs312404 -Node: Sample Init File314937 -Node: Bindable Readline Commands318055 -Node: Commands For Moving319262 -Node: Commands For History320406 -Node: Commands For Text324702 -Node: Commands For Killing327631 -Node: Numeric Arguments330112 -Node: Commands For Completion331251 -Node: Keyboard Macros335443 -Node: Miscellaneous Commands336131 -Node: Readline vi Mode341937 -Node: Programmable Completion342844 -Node: Programmable Completion Builtins350120 -Node: A Programmable Completion Example359866 -Node: Using History Interactively365116 -Node: Bash History Facilities365800 -Node: Bash History Builtins368799 -Node: History Interaction372727 -Node: Event Designators375432 -Node: Word Designators376654 -Node: Modifiers378293 -Node: Installing Bash379697 -Node: Basic Installation380834 -Node: Compilers and Options383526 -Node: Compiling For Multiple Architectures384267 -Node: Installation Names385931 -Node: Specifying the System Type386749 -Node: Sharing Defaults387465 -Node: Operation Controls388138 -Node: Optional Features389096 -Node: Reporting Bugs399159 -Node: Major Differences From The Bourne Shell400357 -Node: GNU Free Documentation License417216 -Node: Indexes442412 -Node: Builtin Index442866 -Node: Reserved Word Index449693 -Node: Variable Index452141 -Node: Function Index466462 -Node: Concept Index473763 +Node: Top897 +Node: Introduction2817 +Node: What is Bash?3033 +Node: What is a shell?4147 +Node: Definitions6685 +Node: Basic Shell Features9623 +Node: Shell Syntax10842 +Node: Shell Operation11868 +Node: Quoting13161 +Node: Escape Character14461 +Node: Single Quotes14946 +Node: Double Quotes15294 +Node: ANSI-C Quoting16572 +Node: Locale Translation17825 +Node: Comments18721 +Node: Shell Commands19339 +Node: Simple Commands20211 +Node: Pipelines20842 +Node: Lists23585 +Node: Compound Commands25314 +Node: Looping Constructs26317 +Node: Conditional Constructs28780 +Node: Command Grouping39701 +Node: Coprocesses41180 +Node: GNU Parallel43012 +Node: Shell Functions46985 +Node: Shell Parameters52191 +Node: Positional Parameters56593 +Node: Special Parameters57493 +Node: Shell Expansions60830 +Node: Brace Expansion62767 +Node: Tilde Expansion65548 +Node: Shell Parameter Expansion67896 +Node: Command Substitution82028 +Node: Arithmetic Expansion83383 +Node: Process Substitution84315 +Node: Word Splitting85435 +Node: Filename Expansion87095 +Node: Pattern Matching89379 +Node: Quote Removal93077 +Node: Redirections93372 +Node: Executing Commands102621 +Node: Simple Command Expansion103291 +Node: Command Search and Execution105221 +Node: Command Execution Environment107557 +Node: Environment110541 +Node: Exit Status112200 +Node: Signals113870 +Node: Shell Scripts115837 +Node: Shell Builtin Commands118352 +Node: Bourne Shell Builtins120386 +Node: Bash Builtins140988 +Node: Modifying Shell Behavior169464 +Node: The Set Builtin169809 +Node: The Shopt Builtin180222 +Node: Special Builtins195842 +Node: Shell Variables196821 +Node: Bourne Shell Variables197258 +Node: Bash Variables199289 +Node: Bash Features227553 +Node: Invoking Bash228452 +Node: Bash Startup Files234401 +Node: Interactive Shells239504 +Node: What is an Interactive Shell?239914 +Node: Is this Shell Interactive?240563 +Node: Interactive Shell Behavior241378 +Node: Bash Conditional Expressions244753 +Node: Shell Arithmetic248754 +Node: Aliases251531 +Node: Arrays254079 +Node: The Directory Stack259163 +Node: Directory Stack Builtins259947 +Node: Controlling the Prompt262915 +Node: The Restricted Shell265661 +Node: Bash POSIX Mode267486 +Node: Job Control277398 +Node: Job Control Basics277858 +Node: Job Control Builtins282577 +Node: Job Control Variables287107 +Node: Command Line Editing288263 +Node: Introduction and Notation289934 +Node: Readline Interaction291557 +Node: Readline Bare Essentials292748 +Node: Readline Movement Commands294531 +Node: Readline Killing Commands295491 +Node: Readline Arguments297409 +Node: Searching298453 +Node: Readline Init File300639 +Node: Readline Init File Syntax301786 +Node: Conditional Init Constructs321511 +Node: Sample Init File324036 +Node: Bindable Readline Commands327153 +Node: Commands For Moving328357 +Node: Commands For History329500 +Node: Commands For Text333789 +Node: Commands For Killing337178 +Node: Numeric Arguments339659 +Node: Commands For Completion340798 +Node: Keyboard Macros344989 +Node: Miscellaneous Commands345676 +Node: Readline vi Mode351480 +Node: Programmable Completion352387 +Node: Programmable Completion Builtins359848 +Node: A Programmable Completion Example369734 +Node: Using History Interactively374986 +Node: Bash History Facilities375670 +Node: Bash History Builtins378669 +Node: History Interaction382666 +Node: Event Designators385630 +Node: Word Designators386849 +Node: Modifiers388486 +Node: Installing Bash389888 +Node: Basic Installation391025 +Node: Compilers and Options393716 +Node: Compiling For Multiple Architectures394457 +Node: Installation Names396120 +Node: Specifying the System Type396938 +Node: Sharing Defaults397654 +Node: Operation Controls398327 +Node: Optional Features399285 +Node: Reporting Bugs409542 +Node: Major Differences From The Bourne Shell410736 +Node: GNU Free Documentation License427588 +Node: Indexes452765 +Node: Builtin Index453219 +Node: Reserved Word Index460046 +Node: Variable Index462494 +Node: Function Index477953 +Node: Concept Index491173  End Tag Table diff --git a/doc/bash.ps b/doc/bash.ps index 972eb471..e60ea19f 100644 --- a/doc/bash.ps +++ b/doc/bash.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.3 -%%CreationDate: Wed Oct 14 11:38:11 2015 +%%CreationDate: Thu Dec 3 11:00:53 2015 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic @@ -339,8 +339,8 @@ F .475(xtended deb)-.15 F(ug-)-.2 E 1.598(instead of the standard personal initialization \214le)4.279 F F3 (~/.bashr)3.598 E(c)-.37 E F0 1.598(if the)4.408 F(shell is interacti) 144 710.4 Q .3 -.15(ve \()-.25 H(see).15 E F4(INV)2.5 E(OCA)-.405 E -(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 4.4)72 768 Q -(2015 October 11)141.235 E(1)195.395 E 0 Cg EP +(TION)-.855 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 4.4)72 768 Q(2015 No) +136.385 E -.15(ve)-.15 G(mber 16).15 E(1)190.545 E 0 Cg EP %%Page: 2 2 %%BeginPageSetup BP @@ -462,8 +462,8 @@ F2(~/.bashr)108 691.2 Q(c)-.37 E F0 2.535(,i)C 2.535(ft)-2.535 G .035 Q F1(bash)5.306 E F0 2.806(is started non-interacti)5.306 F -.15(ve)-.25 G(ly).15 E 5.306(,t)-.65 G 5.306(or)-5.306 G 2.806 (un a shell script, for e)-5.306 F 2.805(xample, it looks for the v)-.15 -F(ariable)-.25 E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(2) -195.395 E 0 Cg EP +F(ariable)-.25 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G +(mber 16).15 E(2)190.545 E 0 Cg EP %%Page: 3 3 %%BeginPageSetup BP @@ -598,8 +598,8 @@ F .389(wed by)-.25 F F2(blank)2.889 E F0 .389(-separated w)B .389 -.15(xe)-.15 G(cuted,).15 E(and is passed as ar)108 722.4 Q (gument zero.)-.18 E(The remaining w)5 E(ords are passed as ar)-.1 E (guments to the in)-.18 E -.2(vo)-.4 G -.1(ke).2 G 2.5(dc).1 G(ommand.) --2.5 E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(3)195.395 E 0 Cg -EP +-2.5 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16) +.15 E(3)190.545 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP @@ -713,7 +713,8 @@ Q F1 1.054(compound command)3.554 F F0 1.054(is one of the follo)3.554 F -3.553 F 1.026(separated from the rest of the command by one or more ne) 108 710.4 R 1.026(wlines, and may be follo)-.25 F 1.027(wed by a ne)-.25 F 1.027(wline in)-.25 F(place of a semicolon.)108 722.4 Q(GNU Bash 4.4) -72 768 Q(2015 October 11)141.235 E(4)195.395 E 0 Cg EP +72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(4)190.545 E 0 Cg +EP %%Page: 5 5 %%BeginPageSetup BP @@ -845,8 +846,8 @@ E F0(th parenthesized sube)A(xpression.)-.15 E .786 2.52 E F1 -.2(ex)144 704.4 S(pr).2 E(ession1)-.37 E F3(||)2.5 E F1 -.2 (ex)2.5 G(pr).2 E(ession2)-.37 E F0 -.35(Tr)180 716.4 S(ue if either).35 E F1 -.2(ex)2.5 G(pr).2 E(ession1)-.37 E F0(or)2.5 E F1 -.2(ex)2.5 G(pr) -.2 E(ession2)-.37 E F0(is true.)2.52 E(GNU Bash 4.4)72 768 Q -(2015 October 11)141.235 E(5)195.395 E 0 Cg EP +.2 E(ession2)-.37 E F0(is true.)2.52 E(GNU Bash 4.4)72 768 Q(2015 No) +136.385 E -.15(ve)-.15 G(mber 16).15 E(5)190.545 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP @@ -1002,8 +1003,8 @@ F .204(The e)5.204 F .204(xit status of the)-.15 F F1(while)2.704 E F0 (and)2.704 E F1(until)2.704 E F0 .205(commands is the e)2.704 F .205 (xit status of the last command)-.15 F -.15(exe)144 700.8 S(cuted in).15 E F2(list-2)2.5 E F0 2.5(,o)C 2.5(rz)-2.5 G(ero if none w)-2.5 E(as e) --.1 E -.15(xe)-.15 G(cuted.).15 E(GNU Bash 4.4)72 768 Q(2015 October 11) -141.235 E(6)195.395 E 0 Cg EP +-.1 E -.15(xe)-.15 G(cuted.).15 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 +E -.15(ve)-.15 G(mber 16).15 E(6)190.545 E 0 Cg EP %%Page: 7 7 %%BeginPageSetup BP @@ -1140,7 +1141,7 @@ F0 1.336(option is on by def)3.836 F 1.336(ault in)-.1 F(interacti)108 -.25 F F2(history e)108 720 Q(xpansion)-.2 E F0(character)2.5 E 2.5(,u) -.4 G(sually)-2.5 E F1(!)2.5 E F0 2.5(,m)C(ust be quoted to pre)-2.5 E -.15(ve)-.25 G(nt history e).15 E(xpansion.)-.15 E(GNU Bash 4.4)72 768 Q -(2015 October 11)141.235 E(7)195.395 E 0 Cg EP +(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(7)190.545 E 0 Cg EP %%Page: 8 8 %%BeginPageSetup BP @@ -1170,84 +1171,88 @@ SF(escape c)2.5 E(har)-.15 E(acter)-.15 E F0 2.5(,s).73 G (Enclosing characters in double quotes preserv)108 182.4 R .034 (es the literal v)-.15 F .034 (alue of all characters within the quotes, with the)-.25 F -.15(ex)108 -194.4 S .828(ception of).15 F F2($)3.328 E F0(,)A F2<92>3.328 E F0(,)A -F2(\\)3.328 E F0 3.328(,a)C .828(nd, when history e)-3.328 F .828 -(xpansion is enabled,)-.15 F F2(!)3.328 E F0 5.828(.T)C .828 -(he characters)-5.828 F F2($)3.328 E F0(and)3.328 E F2<92>3.328 E F0 -.827(retain their special)3.328 F .074(meaning within double quotes.)108 -206.4 R .074(The backslash retains its special meaning only when follo) -5.074 F .075(wed by one of the)-.25 F(follo)108 218.4 Q .205 -(wing characters:)-.25 F F2($)2.705 E F0(,)A F2<92>2.705 E F0(,)A F2(") -3.538 E F0(,).833 E F2(\\)2.705 E F0 2.705(,o)C(r)-2.705 E F2() -2.705 E F0 5.205(.A)C .204 -(double quote may be quoted within double quotes by pre-)-2.5 F .081 -(ceding it with a backslash.)108 230.4 R .082(If enabled, history e) -5.082 F .082(xpansion will be performed unless an)-.15 F F2(!)2.582 E F0 -.082(appearing in double)5.082 F(quotes is escaped using a backslash.) -108 242.4 Q(The backslash preceding the)5 E F2(!)2.5 E F0(is not remo)5 -E -.15(ve)-.15 G(d.).15 E(The special parameters)108 259.2 Q F2(*)2.5 E -F0(and)2.5 E F2(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H +194.4 S .108(ception of).15 F F2($)2.608 E F0(,)A F2<92>2.608 E F0(,)A +F2(\\)2.608 E F0 2.608(,a)C .107(nd, when history e)-2.608 F .107 +(xpansion is enabled,)-.15 F F2(!)2.607 E F0 5.107(.W)C .107 +(hen the shell is in)-5.107 F F1 .107(posix mode)2.607 F F0 2.607(,t)C +(he)-2.607 E F2(!)2.607 E F0 .107(has no)2.607 F 1.397 +(special meaning within double quotes, e)108 206.4 R -.15(ve)-.25 G +3.897(nw).15 G 1.397(hen history e)-3.897 F 1.397(xpansion is enabled.) +-.15 F 1.398(The characters)6.398 F F2($)3.898 E F0(and)3.898 E F2<92> +3.898 E F0 .045(retain their special meaning within double quotes.)108 +218.4 R .044(The backslash retains its special meaning only when fol-) +5.045 F(lo)108 230.4 Q .601(wed by one of the follo)-.25 F .602 +(wing characters:)-.25 F F2($)3.102 E F0(,)A F2<92>3.102 E F0(,)A F2(") +3.935 E F0(,).833 E F2(\\)3.102 E F0 3.102(,o)C(r)-3.102 E F2() +3.102 E F0 5.602(.A)C .602(double quote may be quoted within)-2.5 F .131 +(double quotes by preceding it with a backslash.)108 242.4 R .131 +(If enabled, history e)5.131 F .13(xpansion will be performed unless an) +-.15 F F2(!)2.63 E F0 +(appearing in double quotes is escaped using a backslash.)108 254.4 Q +(The backslash preceding the)5 E F2(!)2.5 E F0(is not remo)5 E -.15(ve) +-.15 G(d.).15 E(The special parameters)108 271.2 Q F2(*)2.5 E F0(and)2.5 +E F2(@)2.5 E F0(ha)2.5 E .3 -.15(ve s)-.2 H (pecial meaning when in double quotes \(see).15 E/F3 9/Times-Bold@0 SF --.666(PA)2.5 G(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 276 -S .212(rds of the form).8 F F2($)2.712 E F0<08>A F1(string)A F0 2.712 -<0861>C .211(re treated specially)-2.712 F 5.211(.T)-.65 G .211(he w) --5.211 F .211(ord e)-.1 F .211(xpands to)-.15 F F1(string)2.711 E F0 -2.711(,w)C .211(ith backslash-escaped char)-2.711 F(-)-.2 E .604 -(acters replaced as speci\214ed by the ANSI C standard.)108 288 R .605 +-.666(PA)2.5 G(RAMETERS).666 E F0(belo)2.25 E(w\).)-.25 E -.8(Wo)108 288 +S .211(rds of the form).8 F F2($)2.711 E F0<08>A F1(string)A F0 2.711 +<0861>C .211(re treated specially)-2.711 F 5.211(.T)-.65 G .211(he w) +-5.211 F .211(ord e)-.1 F .212(xpands to)-.15 F F1(string)2.712 E F0 +2.712(,w)C .212(ith backslash-escaped char)-2.712 F(-)-.2 E .605 +(acters replaced as speci\214ed by the ANSI C standard.)108 300 R .604 (Backslash escape sequences, if present, are decoded)5.605 F(as follo) -108 300 Q(ws:)-.25 E F2(\\a)144 312 Q F0(alert \(bell\))180 312 Q F2 -(\\b)144 324 Q F0(backspace)180 324 Q F2(\\e)144 336 Q(\\E)144 348 Q F0 -(an escape character)180 348 Q F2(\\f)144 360 Q F0(form feed)180 360 Q -F2(\\n)144 372 Q F0(ne)180 372 Q 2.5(wl)-.25 G(ine)-2.5 E F2(\\r)144 384 -Q F0(carriage return)180 384 Q F2(\\t)144 396 Q F0(horizontal tab)180 -396 Q F2(\\v)144 408 Q F0 -.15(ve)180 408 S(rtical tab).15 E F2(\\\\)144 -420 Q F0(backslash)180 420 Q F2<5c08>144 432 Q F0(single quote)180 432 Q -F2(\\")144 444 Q F0(double quote)180 444 Q F2(\\?)144 456 Q F0 -(question mark)180 456 Q F2(\\)144 468 Q F1(nnn)A F0 -(the eight-bit character whose v)180 468 Q(alue is the octal v)-.25 E +108 312 Q(ws:)-.25 E F2(\\a)144 324 Q F0(alert \(bell\))180 324 Q F2 +(\\b)144 336 Q F0(backspace)180 336 Q F2(\\e)144 348 Q(\\E)144 360 Q F0 +(an escape character)180 360 Q F2(\\f)144 372 Q F0(form feed)180 372 Q +F2(\\n)144 384 Q F0(ne)180 384 Q 2.5(wl)-.25 G(ine)-2.5 E F2(\\r)144 396 +Q F0(carriage return)180 396 Q F2(\\t)144 408 Q F0(horizontal tab)180 +408 Q F2(\\v)144 420 Q F0 -.15(ve)180 420 S(rtical tab).15 E F2(\\\\)144 +432 Q F0(backslash)180 432 Q F2<5c08>144 444 Q F0(single quote)180 444 Q +F2(\\")144 456 Q F0(double quote)180 456 Q F2(\\?)144 468 Q F0 +(question mark)180 468 Q F2(\\)144 480 Q F1(nnn)A F0 +(the eight-bit character whose v)180 480 Q(alue is the octal v)-.25 E (alue)-.25 E F1(nnn)2.5 E F0(\(one to three digits\))2.5 E F2(\\x)144 -480 Q F1(HH)A F0(the eight-bit character whose v)180 480 Q +492 Q F1(HH)A F0(the eight-bit character whose v)180 492 Q (alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0 (\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F2 -(\\u)144 492 Q F1(HHHH)A F0 1.507 -(the Unicode \(ISO/IEC 10646\) character whose v)180 504 R 1.506 -(alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F1(HHHH) -4.006 E F0(\(one to four he)180 516 Q 2.5(xd)-.15 G(igits\))-2.5 E F2 -(\\U)144 528 Q F1(HHHHHHHH)A F0 .547 -(the Unicode \(ISO/IEC 10646\) character whose v)180 540 R .547 -(alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F1(HHHHH-) -3.048 E(HHH)180 552 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G(igits\)) --2.5 E F2(\\c)144 564 Q F1(x)A F0 2.5(ac)180 564 S(ontrol-)-2.5 E F1(x)A -F0(character)2.5 E(The e)108 580.8 Q(xpanded result is single-quoted, a\ -s if the dollar sign had not been present.)-.15 E 2.64(Ad)108 597.6 S +(\\u)144 504 Q F1(HHHH)A F0 1.506 +(the Unicode \(ISO/IEC 10646\) character whose v)180 516 R 1.507 +(alue is the he)-.25 F 1.507(xadecimal v)-.15 F(alue)-.25 E F1(HHHH) +4.007 E F0(\(one to four he)180 528 Q 2.5(xd)-.15 G(igits\))-2.5 E F2 +(\\U)144 540 Q F1(HHHHHHHH)A F0 .548 +(the Unicode \(ISO/IEC 10646\) character whose v)180 552 R .547 +(alue is the he)-.25 F .547(xadecimal v)-.15 F(alue)-.25 E F1(HHHHH-) +3.047 E(HHH)180 564 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G(igits\)) +-2.5 E F2(\\c)144 576 Q F1(x)A F0 2.5(ac)180 576 S(ontrol-)-2.5 E F1(x)A +F0(character)2.5 E(The e)108 592.8 Q(xpanded result is single-quoted, a\ +s if the dollar sign had not been present.)-.15 E 2.64(Ad)108 609.6 S .14(ouble-quoted string preceded by a dollar sign \()-2.64 F F2($)A F0 (")A F1(string)A F0 .14 -("\) will cause the string to be translated according)B .495 -(to the current locale.)108 609.6 R .495(If the current locale is)5.495 +("\) will cause the string to be translated according)B .496 +(to the current locale.)108 621.6 R .495(If the current locale is)5.496 F F2(C)2.995 E F0(or)2.995 E F2(POSIX)2.995 E F0 2.995(,t)C .495 -(he dollar sign is ignored.)-2.995 F .496(If the string is trans-)5.496 -F(lated and replaced, the replacement is double-quoted.)108 621.6 Q/F4 -10.95/Times-Bold@0 SF -.81(PA)72 638.4 S(RAMETERS).81 E F0(A)108 650.4 Q -F1(par)4.593 E(ameter)-.15 E F0 .843(is an entity that stores v)4.073 F -3.343(alues. It)-.25 F .843(can be a)3.343 F F1(name)3.342 E F0 3.342 -(,an).18 G(umber)-3.342 E 3.342(,o)-.4 G 3.342(ro)-3.342 G .842 -(ne of the special characters)-3.342 F .822(listed belo)108 662.4 R +(he dollar sign is ignored.)-2.995 F .495(If the string is trans-)5.495 +F(lated and replaced, the replacement is double-quoted.)108 633.6 Q/F4 +10.95/Times-Bold@0 SF -.81(PA)72 650.4 S(RAMETERS).81 E F0(A)108 662.4 Q +F1(par)4.592 E(ameter)-.15 E F0 .842(is an entity that stores v)4.072 F +3.342(alues. It)-.25 F .842(can be a)3.342 F F1(name)3.343 E F0 3.343 +(,an).18 G(umber)-3.343 E 3.343(,o)-.4 G 3.343(ro)-3.343 G .843 +(ne of the special characters)-3.343 F .823(listed belo)108 674.4 R 3.323(wu)-.25 G(nder)-3.323 E F2 .823(Special P)3.323 F(arameters)-.1 E F0 5.823(.A)C F1(variable)-2.21 E F0 .823(is a parameter denoted by a) 3.503 F F1(name)3.323 E F0 5.823(.A).18 G -.25(va)-2.5 G .823 -(riable has a).25 F F1(value)108 674.4 Q F0 .369(and zero or more)2.869 -F F1(attrib)2.869 E(utes)-.2 E F0 5.369(.A)C(ttrib)-5.369 E .369 -(utes are assigned using the)-.2 F F2(declar)2.868 E(e)-.18 E F0 -.2(bu) -2.868 G .368(iltin command \(see).2 F F2(declar)2.868 E(e)-.18 E F0 -(belo)108 686.4 Q 2.5(wi)-.25 G(n)-2.5 E F3(SHELL B)2.5 E(UIL)-.09 E -(TIN COMMANDS)-.828 E/F5 9/Times-Roman@0 SF(\).)A F0 2.754(Ap)108 703.2 -S .254(arameter is set if it has been assigned a v)-2.754 F 2.754 -(alue. The)-.25 F .254(null string is a v)2.754 F .255(alid v)-.25 F -2.755(alue. Once)-.25 F 2.755(av)2.755 G .255(ariable is set, it)-3.005 -F(may be unset only by using the)108 715.2 Q F2(unset)2.5 E F0 -.2(bu) +(riable has a).25 F F1(value)108 686.4 Q F0 .368(and zero or more)2.868 +F F1(attrib)2.868 E(utes)-.2 E F0 5.369(.A)C(ttrib)-5.369 E .369 +(utes are assigned using the)-.2 F F2(declar)2.869 E(e)-.18 E F0 -.2(bu) +2.869 G .369(iltin command \(see).2 F F2(declar)2.869 E(e)-.18 E F0 +(belo)108 698.4 Q 2.5(wi)-.25 G(n)-2.5 E F3(SHELL B)2.5 E(UIL)-.09 E +(TIN COMMANDS)-.828 E/F5 9/Times-Roman@0 SF(\).)A F0 2.755(Ap)108 715.2 +S .255(arameter is set if it has been assigned a v)-2.755 F 2.754 +(alue. The)-.25 F .254(null string is a v)2.754 F .254(alid v)-.25 F +2.754(alue. Once)-.25 F 2.754(av)2.754 G .254(ariable is set, it)-3.004 +F(may be unset only by using the)108 727.2 Q F2(unset)2.5 E F0 -.2(bu) 2.5 G(iltin command \(see).2 E F3(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS) --.828 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 4.4)72 768 Q -(2015 October 11)141.235 E(8)195.395 E 0 Cg EP +-.828 E F0(belo)2.25 E(w\).)-.25 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 +E -.15(ve)-.15 G(mber 16).15 E(8)190.545 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP @@ -1256,186 +1261,186 @@ BP (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(A)108 84 Q/F1 10 /Times-Italic@0 SF(variable)2.79 E F0 (may be assigned to by a statement of the form)2.68 E F1(name)144 100.8 -Q F0(=[)A F1(value)A F0(])A(If)108 117.6 Q F1(value)3.023 E F0 .233 -(is not gi)2.913 F -.15(ve)-.25 G .233(n, the v).15 F .232 -(ariable is assigned the null string.)-.25 F(All)5.232 E F1(values)3.022 -E F0(under)3.002 E .232(go tilde e)-.18 F .232(xpansion, parameter)-.15 +Q F0(=[)A F1(value)A F0(])A(If)108 117.6 Q F1(value)3.022 E F0 .232 +(is not gi)2.912 F -.15(ve)-.25 G .232(n, the v).15 F .232 +(ariable is assigned the null string.)-.25 F(All)5.233 E F1(values)3.023 +E F0(under)3.003 E .233(go tilde e)-.18 F .233(xpansion, parameter)-.15 F .515(and v)108 129.6 R .515(ariable e)-.25 F .515 (xpansion, command substitution, arithmetic e)-.15 F .515 (xpansion, and quote remo)-.15 F -.25(va)-.15 G 3.015(l\().25 G(see) -3.015 E/F2 9/Times-Bold@0 SF(EXP)3.015 E(ANSION)-.666 E F0(belo)108 -141.6 Q 2.699(w\). If)-.25 F .199(the v)2.699 F .199(ariable has its) +141.6 Q 2.698(w\). If)-.25 F .198(the v)2.698 F .198(ariable has its) -.25 F/F3 10/Times-Bold@0 SF(integer)2.698 E F0(attrib)2.698 E .198 (ute set, then)-.2 F F1(value)2.988 E F0 .198(is e)2.878 F -.25(va)-.25 -G .198(luated as an arithmetic e).25 F .198(xpression e)-.15 F -.15(ve) --.25 G(n).15 E .901(if the $\(\(...\)\) e)108 153.6 R .901 +G .199(luated as an arithmetic e).25 F .199(xpression e)-.15 F -.15(ve) +-.25 G(n).15 E .902(if the $\(\(...\)\) e)108 153.6 R .902 (xpansion is not used \(see)-.15 F F3 .901(Arithmetic Expansion)3.401 F -F0(belo)3.401 E 3.402(w\). W)-.25 F .902 -(ord splitting is not performed,)-.8 F 1.179(with the e)108 165.6 R -1.179(xception of)-.15 F F3("$@")3.679 E F0 1.179(as e)3.679 F 1.179 -(xplained belo)-.15 F 3.679(wu)-.25 G(nder)-3.679 E F3 1.178(Special P) -3.678 F(arameters)-.1 E F0 6.178(.P)C 1.178(athname e)-6.328 F 1.178 -(xpansion is not)-.15 F 3.648(performed. Assignment)108 177.6 R 1.148 -(statements may also appear as ar)3.648 F 1.149(guments to the)-.18 F F3 -(alias)3.649 E F0(,)A F3(declar)3.649 E(e)-.18 E F0(,)A F3(typeset)3.649 -E F0(,)A F3(export)3.649 E F0(,)A F3 -.18(re)108 189.6 S(adonly).18 E F0 -3.289(,a)C(nd)-3.289 E F3(local)3.289 E F0 -.2(bu)3.289 G .789 +F0(belo)3.401 E 3.401(w\). W)-.25 F .901 +(ord splitting is not performed,)-.8 F 1.178(with the e)108 165.6 R +1.178(xception of)-.15 F F3("$@")3.678 E F0 1.178(as e)3.678 F 1.179 +(xplained belo)-.15 F 3.679(wu)-.25 G(nder)-3.679 E F3 1.179(Special P) +3.679 F(arameters)-.1 E F0 6.179(.P)C 1.179(athname e)-6.329 F 1.179 +(xpansion is not)-.15 F 3.649(performed. Assignment)108 177.6 R 1.149 +(statements may also appear as ar)3.649 F 1.148(guments to the)-.18 F F3 +(alias)3.648 E F0(,)A F3(declar)3.648 E(e)-.18 E F0(,)A F3(typeset)3.648 +E F0(,)A F3(export)3.648 E F0(,)A F3 -.18(re)108 189.6 S(adonly).18 E F0 +3.288(,a)C(nd)-3.288 E F3(local)3.288 E F0 -.2(bu)3.288 G .788 (iltin commands \().2 F F1(declar)A(ation)-.15 E F0 3.288 -(commands\). When)3.289 F(in)3.288 E F1 .788(posix mode)3.288 F F0 3.288 -(,t)C .788(hese b)-3.288 F .788(uiltins may)-.2 F 1.496 +(commands\). When)3.288 F(in)3.289 E F1 .789(posix mode)3.289 F F0 3.289 +(,t)C .789(hese b)-3.289 F .789(uiltins may)-.2 F 1.496 (appear in a command after one or more instances of the)108 201.6 R F3 -(command)3.996 E F0 -.2(bu)3.996 G 1.497 +(command)3.996 E F0 -.2(bu)3.996 G 1.496 (iltin and retain these assignment).2 F(statement properties.)108 213.6 -Q .377(In the conte)108 230.4 R .377 +Q .376(In the conte)108 230.4 R .376 (xt where an assignment statement is assigning a v)-.15 F .376 -(alue to a shell v)-.25 F .376(ariable or array inde)-.25 F .376 -(x, the +=)-.15 F 1.63 +(alue to a shell v)-.25 F .377(ariable or array inde)-.25 F .377 +(x, the +=)-.15 F 1.631 (operator can be used to append to or add to the v)108 242.4 R(ariable') --.25 E 4.131(sp)-.55 G(re)-4.131 E 1.631(vious v)-.25 F 4.131 -(alue. This)-.25 F 1.631(includes ar)4.131 F 1.631(guments to)-.18 F -.2 -(bu)108 254.4 S .164(iltin commands such as).2 F F3(declar)2.664 E(e) --.18 E F0 .164(that accept assignment statements \()2.664 F F1(declar)A -(ation)-.15 E F0 2.664(commands\). When)2.664 F .163(+= is)2.663 F .251 -(applied to a v)108 266.4 R .251(ariable for which the)-.25 F F1(inte) +-.25 E 4.13(sp)-.55 G(re)-4.13 E 1.63(vious v)-.25 F 4.13(alue. This) +-.25 F 1.63(includes ar)4.13 F 1.63(guments to)-.18 F -.2(bu)108 254.4 S +.163(iltin commands such as).2 F F3(declar)2.664 E(e)-.18 E F0 .164 +(that accept assignment statements \()2.664 F F1(declar)A(ation)-.15 E +F0 2.664(commands\). When)2.664 F .164(+= is)2.664 F .252 +(applied to a v)108 266.4 R .252(ariable for which the)-.25 F F1(inte) 2.752 E -.1(ge)-.4 G(r).1 E F0(attrib)2.752 E .252(ute has been set,)-.2 -F F1(value)2.752 E F0 .252(is e)2.752 F -.25(va)-.25 G .252 +F F1(value)2.752 E F0 .251(is e)2.751 F -.25(va)-.25 G .251 (luated as an arithmetic e).25 F(xpres-)-.15 E .05 (sion and added to the v)108 278.4 R(ariable')-.25 E 2.55(sc)-.55 G .05 (urrent v)-2.55 F .05(alue, which is also e)-.25 F -.25(va)-.25 G 2.55 (luated. When).25 F .05(+= is applied to an array v)2.55 F(ari-)-.25 E -.458(able using compound assignment \(see)108 290.4 R F3(Arrays)2.959 E +.459(able using compound assignment \(see)108 290.4 R F3(Arrays)2.959 E F0(belo)2.959 E .459(w\), the v)-.25 F(ariable')-.25 E 2.959(sv)-.55 G .459(alue is not unset \(as it is when using)-3.209 F .265(=\), and ne) 108 302.4 R 2.765(wv)-.25 G .265(alues are appended to the array be) -3.015 F .265(ginning at one greater than the array')-.15 F 2.765(sm) -.55 G .265(aximum inde)-2.765 F 2.765(x\()-.15 G(for)-2.765 E(inde)108 -314.4 Q -.15(xe)-.15 G 3.401(da).15 G .901 -(rrays\) or added as additional k)-3.401 F -.15(ey)-.1 G.15 E .901 +314.4 Q -.15(xe)-.15 G 3.402(da).15 G .902 +(rrays\) or added as additional k)-3.402 F -.15(ey)-.1 G.15 E .901 (alue pairs in an associati)-.25 F 1.201 -.15(ve a)-.25 H(rray).15 E -5.901(.W)-.65 G .902(hen applied to a string-)-5.901 F -.25(va)108 326.4 +5.901(.W)-.65 G .901(hen applied to a string-)-5.901 F -.25(va)108 326.4 S(lued v).25 E(ariable,)-.25 E F1(value)2.5 E F0(is e)2.5 E (xpanded and appended to the v)-.15 E(ariable')-.25 E 2.5(sv)-.55 G -(alue.)-2.75 E 3.383(Av)108 343.2 S .883(ariable can be assigned the) --3.633 F F1(namer)3.382 E(ef)-.37 E F0(attrib)3.382 E .882 +(alue.)-2.75 E 3.382(Av)108 343.2 S .882(ariable can be assigned the) +-3.632 F F1(namer)3.382 E(ef)-.37 E F0(attrib)3.382 E .882 (ute using the)-.2 F F33.382 E F0 .882(option to the)3.382 F F3 -(declar)3.382 E(e)-.18 E F0(or)3.382 E F3(local)3.382 E F0 -.2(bu)3.382 -G .882(iltin com-).2 F .315(mands \(see the descriptions of)108 355.2 R -F3(declar)2.815 E(e)-.18 E F0(and)2.815 E F3(local)2.815 E F0(belo)2.815 -E .316(w\) to create a)-.25 F F1(namer)2.816 E(ef)-.37 E F0 2.816(,o)C -2.816(rar)-2.816 G .316(eference to another v)-2.816 F(ari-)-.25 E 4.04 +(declar)3.382 E(e)-.18 E F0(or)3.383 E F3(local)3.383 E F0 -.2(bu)3.383 +G .883(iltin com-).2 F .316(mands \(see the descriptions of)108 355.2 R +F3(declar)2.816 E(e)-.18 E F0(and)2.816 E F3(local)2.816 E F0(belo)2.816 +E .316(w\) to create a)-.25 F F1(namer)2.815 E(ef)-.37 E F0 2.815(,o)C +2.815(rar)-2.815 G .315(eference to another v)-2.815 F(ari-)-.25 E 4.04 (able. This)108 367.2 R(allo)4.04 E 1.54(ws v)-.25 F 1.54 (ariables to be manipulated indirectly)-.25 F 6.54(.W)-.65 G(hene)-6.54 E -.15(ve)-.25 G 4.04(rt).15 G 1.54(he nameref v)-4.04 F 1.54 (ariable is referenced,)-.25 F 1.165 (assigned to, unset, or has its attrib)108 379.2 R 1.165 (utes modi\214ed \(other than the)-.2 F F1(namer)3.665 E(ef)-.37 E F0 -(attrib)3.665 E 1.165(ute itself\), the operation is)-.2 F .246 +(attrib)3.665 E 1.165(ute itself\), the operation is)-.2 F .245 (actually performed on the v)108 391.2 R .245 (ariable speci\214ed by the nameref v)-.25 F(ariable')-.25 E 2.745(sv) --.55 G 2.745(alue. A)-2.995 F .245(nameref is commonly used)2.745 F +-.55 G 2.746(alue. A)-2.995 F .246(nameref is commonly used)2.746 F 1.474(within shell functions to refer to a v)108 403.2 R 1.474 (ariable whose name is passed as an ar)-.25 F 1.474 -(gument to the function.)-.18 F -.15(Fo)6.474 G(r).15 E +(gument to the function.)-.18 F -.15(Fo)6.473 G(r).15 E (instance, if a v)108 415.2 Q (ariable name is passed to a shell function as its \214rst ar)-.25 E (gument, running)-.18 E/F4 10/Courier@0 SF(declare -n ref=$1)144 433.2 Q -F0 .303(inside the function creates a nameref v)108 451.2 R(ariable)-.25 +F0 .302(inside the function creates a nameref v)108 451.2 R(ariable)-.25 E F3 -.18(re)2.803 G(f).18 E F0 .303(whose v)2.803 F .303(alue is the v) --.25 F .302(ariable name passed as the \214rst ar)-.25 F(gu-)-.18 E +-.25 F .303(ariable name passed as the \214rst ar)-.25 F(gu-)-.18 E 3.592(ment. References)108 463.2 R 1.092(and assignments to)3.592 F F3 -.18(re)3.592 G(f).18 E F0 3.592(,a)C 1.092(nd changes to its attrib) --3.592 F 1.092(utes, are treated as references, assign-)-.2 F .144 +-3.592 F 1.092(utes, are treated as references, assign-)-.2 F .143 (ments, and attrib)108 475.2 R .144(ute modi\214cations to the v)-.2 F .144(ariable whose name w)-.25 F .144(as passed as)-.1 F F3($1)2.644 E -F0 5.144(.I)C 2.644(ft)-5.144 G .144(he control v)-2.644 F .143 -(ariable in a)-.25 F F3 -.25(fo)108 487.2 S(r).25 E F0 .867 -(loop has the nameref attrib)3.367 F .867(ute, the list of w)-.2 F .868 -(ords can be a list of shell v)-.1 F .868 +F0 5.144(.I)C 2.644(ft)-5.144 G .144(he control v)-2.644 F .144 +(ariable in a)-.25 F F3 -.25(fo)108 487.2 S(r).25 E F0 .868 +(loop has the nameref attrib)3.368 F .868(ute, the list of w)-.2 F .867 +(ords can be a list of shell v)-.1 F .867 (ariables, and a name reference)-.25 F .509 (will be established for each w)108 499.2 R .509 (ord in the list, in turn, when the loop is e)-.1 F -.15(xe)-.15 G 3.009 (cuted. Array).15 F -.25(va)3.009 G .509(riables cannot be).25 F(gi)108 -511.2 Q -.15(ve)-.25 G 4.192(nt).15 G(he)-4.192 E F3(namer)4.192 E(ef) --.18 E F0(attrib)4.192 E 4.192(ute. Ho)-.2 F(we)-.25 E -.15(ve)-.25 G -2.492 -.4(r, n).15 H 1.692(ameref v).4 F 1.693 -(ariables can reference array v)-.25 F 1.693(ariables and subscripted) --.25 F .102(array v)108 523.2 R 2.602(ariables. Namerefs)-.25 F .102 -(can be unset using the)2.602 F F32.602 E F0 .102(option to the) -2.602 F F3(unset)2.602 E F0 -.2(bu)2.601 G 2.601(iltin. Otherwise,).2 F -(if)2.601 E F3(unset)2.601 E F0 .101(is e)2.601 F -.15(xe)-.15 G(-).15 E -.442(cuted with the name of a nameref v)108 535.2 R .442 -(ariable as an ar)-.25 F .442(gument, the v)-.18 F .443 +511.2 Q -.15(ve)-.25 G 4.193(nt).15 G(he)-4.193 E F3(namer)4.193 E(ef) +-.18 E F0(attrib)4.193 E 4.193(ute. Ho)-.2 F(we)-.25 E -.15(ve)-.25 G +2.493 -.4(r, n).15 H 1.693(ameref v).4 F 1.692 +(ariables can reference array v)-.25 F 1.692(ariables and subscripted) +-.25 F .101(array v)108 523.2 R 2.601(ariables. Namerefs)-.25 F .101 +(can be unset using the)2.601 F F32.602 E F0 .102(option to the) +2.602 F F3(unset)2.602 E F0 -.2(bu)2.602 G 2.602(iltin. Otherwise,).2 F +(if)2.602 E F3(unset)2.602 E F0 .102(is e)2.602 F -.15(xe)-.15 G(-).15 E +.443(cuted with the name of a nameref v)108 535.2 R .442 +(ariable as an ar)-.25 F .442(gument, the v)-.18 F .442 (ariable referenced by the nameref v)-.25 F(ariable)-.25 E (will be unset.)108 547.2 Q F3 -.2(Po)87 564 S(sitional P).2 E -(arameters)-.1 E F0(A)108 576 Q F1 .706(positional par)4.456 F(ameter) +(arameters)-.1 E F0(A)108 576 Q F1 .705(positional par)4.455 F(ameter) -.15 E F0 .706(is a parameter denoted by one or more digits, other than\ - the single digit 0.)3.936 F(Posi-)5.705 E .444 + the single digit 0.)3.935 F(Posi-)5.706 E .445 (tional parameters are assigned from the shell')108 588 R 2.944(sa)-.55 G -.18(rg)-2.944 G .444(uments when it is in).18 F -.2(vo)-.4 G -.1(ke) -.2 G .445(d, and may be reassigned using).1 F(the)108 600 Q F3(set)3.334 -E F0 -.2(bu)3.334 G .834(iltin command.).2 F .833(Positional parameters\ - may not be assigned to with assignment statements.)5.834 F(The)5.833 E +.2 G .444(d, and may be reassigned using).1 F(the)108 600 Q F3(set)3.333 +E F0 -.2(bu)3.333 G .833(iltin command.).2 F .834(Positional parameters\ + may not be assigned to with assignment statements.)5.833 F(The)5.834 E (positional parameters are temporarily replaced when a shell function i\ s e)108 612 Q -.15(xe)-.15 G(cuted \(see).15 E F2(FUNCTIONS)2.5 E F0 -(belo)2.25 E(w\).)-.25 E 1.403(When a positional parameter consisting o\ -f more than a single digit is e)108 628.8 R 1.404 +(belo)2.25 E(w\).)-.25 E 1.404(When a positional parameter consisting o\ +f more than a single digit is e)108 628.8 R 1.403 (xpanded, it must be enclosed in)-.15 F(braces \(see)108 640.8 Q F2(EXP) 2.5 E(ANSION)-.666 E F0(belo)2.25 E(w\).)-.25 E F3(Special P)87 657.6 Q -(arameters)-.1 E F0 1.675(The shell treats se)108 669.6 R -.15(ve)-.25 G -1.675(ral parameters specially).15 F 6.675(.T)-.65 G 1.674 +(arameters)-.1 E F0 1.674(The shell treats se)108 669.6 R -.15(ve)-.25 G +1.674(ral parameters specially).15 F 6.675(.T)-.65 G 1.675 (hese parameters may only be referenced; assignment to)-6.675 F -(them is not allo)108 681.6 Q(wed.)-.25 E F3(*)108 693.6 Q F0 .223 +(them is not allo)108 681.6 Q(wed.)-.25 E F3(*)108 693.6 Q F0 .224 (Expands to the positional parameters, starting from one.)144 693.6 R -.224(When the e)5.224 F .224(xpansion is not within double)-.15 F .663 +.223(When the e)5.224 F .223(xpansion is not within double)-.15 F .662 (quotes, each positional parameter e)144 705.6 R .662 (xpands to a separate w)-.15 F 3.162(ord. In)-.1 F(conte)3.162 E .662 -(xts where it is performed,)-.15 F 1.081(those w)144 717.6 R 1.081 -(ords are subject to further w)-.1 F 1.082(ord splitting and pathname e) --.1 F 3.582(xpansion. When)-.15 F 1.082(the e)3.582 F(xpansion)-.15 E -2.549(occurs within double quotes, it e)144 729.6 R 2.549 -(xpands to a single w)-.15 F 2.548(ord with the v)-.1 F 2.548 -(alue of each parameter)-.25 F(GNU Bash 4.4)72 768 Q(2015 October 11) -141.235 E(9)195.395 E 0 Cg EP +(xts where it is performed,)-.15 F 1.082(those w)144 717.6 R 1.082 +(ords are subject to further w)-.1 F 1.081(ord splitting and pathname e) +-.1 F 3.581(xpansion. When)-.15 F 1.081(the e)3.581 F(xpansion)-.15 E +2.548(occurs within double quotes, it e)144 729.6 R 2.549 +(xpands to a single w)-.15 F 2.549(ord with the v)-.1 F 2.549 +(alue of each parameter)-.25 F(GNU Bash 4.4)72 768 Q(2015 No)136.385 E +-.15(ve)-.15 G(mber 16).15 E(9)190.545 E 0 Cg EP %%Page: 10 10 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 3.067 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 3.068 (separated by the \214rst character of the)144 84 R/F1 9/Times-Bold@0 SF -(IFS)5.568 E F0 3.068(special v)5.318 F 5.568(ariable. That)-.25 F 3.068 -(is, ")5.568 F/F2 10/Times-Bold@0 SF($*)A F0 5.568("i)C 5.568(se)-5.568 -G(qui)-5.568 E -.25(va)-.25 G 3.068(lent to).25 F(")144 96 Q F2($1)A/F3 -10/Times-Italic@0 SF(c)A F2($2)A F3(c)A F2(...)A F0 1.52(", where)B F3 -(c)4.22 E F0 1.52(is the \214rst character of the v)4.33 F 1.52 -(alue of the)-.25 F F1(IFS)4.019 E F0 -.25(va)3.769 G 4.019(riable. If) -.25 F F1(IFS)4.019 E F0 1.519(is unset, the)3.769 F .832 -(parameters are separated by spaces.)144 108 R(If)5.832 E F1(IFS)3.332 E -F0 .833(is null, the parameters are joined without interv)3.083 F(ening) --.15 E(separators.)144 120 Q F2(@)108 132 Q F0 .606 -(Expands to the positional parameters, starting from one.)144 132 R .605 -(When the e)5.605 F .605(xpansion occurs within dou-)-.15 F .113 -(ble quotes, each parameter e)144 144 R .113(xpands to a separate w)-.15 -F 2.614(ord. That)-.1 F .114(is, ")2.614 F F2($@)A F0 2.614("i)C 2.614 -(se)-2.614 G(qui)-2.614 E -.25(va)-.25 G .114(lent to ").25 F F2($1)A F0 -2.614("")C F2($2)-2.614 E F0 2.614(".)C(..)-2.614 E .135 -(If the double-quoted e)144 156 R .135(xpansion occurs within a w)-.15 F -.135(ord, the e)-.1 F .134(xpansion of the \214rst parameter is joined) --.15 F .15(with the be)144 168 R .15(ginning part of the original w)-.15 -F .151(ord, and the e)-.1 F .151 -(xpansion of the last parameter is joined with)-.15 F .338 -(the last part of the original w)144 180 R 2.838(ord. When)-.1 F .337 -(there are no positional parameters, ")2.838 F F2($@)A F0 2.837("a)C(nd) --2.837 E F2($@)2.837 E F0 -.15(ex)2.837 G(pand).15 E +(IFS)5.568 E F0 3.068(special v)5.318 F 5.568(ariable. That)-.25 F 3.067 +(is, ")5.568 F/F2 10/Times-Bold@0 SF($*)A F0 5.567("i)C 5.567(se)-5.567 +G(qui)-5.567 E -.25(va)-.25 G 3.067(lent to).25 F(")144 96 Q F2($1)A/F3 +10/Times-Italic@0 SF(c)A F2($2)A F3(c)A F2(...)A F0 1.519(", where)B F3 +(c)4.219 E F0 1.519(is the \214rst character of the v)4.329 F 1.52 +(alue of the)-.25 F F1(IFS)4.02 E F0 -.25(va)3.77 G 4.02(riable. If).25 +F F1(IFS)4.02 E F0 1.52(is unset, the)3.77 F .833 +(parameters are separated by spaces.)144 108 R(If)5.833 E F1(IFS)3.333 E +F0 .832(is null, the parameters are joined without interv)3.083 F(ening) +-.15 E(separators.)144 120 Q F2(@)108 132 Q F0 .605 +(Expands to the positional parameters, starting from one.)144 132 R .606 +(When the e)5.605 F .606(xpansion occurs within dou-)-.15 F .114 +(ble quotes, each parameter e)144 144 R .114(xpands to a separate w)-.15 +F 2.614(ord. That)-.1 F .113(is, ")2.613 F F2($@)A F0 2.613("i)C 2.613 +(se)-2.613 G(qui)-2.613 E -.25(va)-.25 G .113(lent to ").25 F F2($1)A F0 +2.613("")C F2($2)-2.613 E F0 2.613(".)C(..)-2.613 E .134 +(If the double-quoted e)144 156 R .134(xpansion occurs within a w)-.15 F +.135(ord, the e)-.1 F .135(xpansion of the \214rst parameter is joined) +-.15 F .151(with the be)144 168 R .151(ginning part of the original w) +-.15 F .151(ord, and the e)-.1 F .15 +(xpansion of the last parameter is joined with)-.15 F .337 +(the last part of the original w)144 180 R 2.837(ord. When)-.1 F .338 +(there are no positional parameters, ")2.837 F F2($@)A F0 2.838("a)C(nd) +-2.838 E F2($@)2.838 E F0 -.15(ex)2.838 G(pand).15 E (to nothing \(i.e., the)144 192 Q 2.5(ya)-.15 G(re remo)-2.5 E -.15(ve) -.15 G(d\).).15 E F2(#)108 204 Q F0 (Expands to the number of positional parameters in decimal.)144 204 Q F2 (?)108 216 Q F0(Expands to the e)144 216 Q (xit status of the most recently e)-.15 E -.15(xe)-.15 G(cuted fore).15 -E(ground pipeline.)-.15 E F2108 228 Q F0 .881 +E(ground pipeline.)-.15 E F2108 228 Q F0 .882 (Expands to the current option \215ags as speci\214ed upon in)144 228 R --.2(vo)-.4 G .881(cation, by the).2 F F2(set)3.382 E F0 -.2(bu)3.382 G -.882(iltin command, or).2 F(those set by the shell itself \(such as the) +-.2(vo)-.4 G .881(cation, by the).2 F F2(set)3.381 E F0 -.2(bu)3.381 G +.881(iltin command, or).2 F(those set by the shell itself \(such as the) 144 240 Q F22.5 E F0(option\).)2.5 E F2($)108 252 Q F0 .214 (Expands to the process ID of the shell.)144 252 R .214 (In a \(\) subshell, it e)5.214 F .214 @@ -1445,28 +1450,28 @@ he process ID of the job most recently placed into the background, whet\ her e)144 276 R -.15(xe)-.15 G(cuted).15 E (as an asynchronous command or using the)144 288 Q F2(bg)2.5 E F0 -.2 (bu)2.5 G(iltin \(see).2 E F1(JOB CONTR)2.5 E(OL)-.27 E F0(belo)2.25 E -(w\).)-.25 E F2(0)108 300 Q F0 1.692 -(Expands to the name of the shell or shell script.)144 300 R 1.691 -(This is set at shell initialization.)6.692 F(If)6.691 E F2(bash)4.191 E -F0(is)4.191 E(in)144 312 Q -.2(vo)-.4 G -.1(ke).2 G 3.077(dw).1 G .577 -(ith a \214le of commands,)-3.077 F F2($0)3.077 E F0 .578 -(is set to the name of that \214le.)3.077 F(If)5.578 E F2(bash)3.078 E -F0 .578(is started with the)3.078 F F23.078 E F0 .369 +(w\).)-.25 E F2(0)108 300 Q F0 1.691 +(Expands to the name of the shell or shell script.)144 300 R 1.692 +(This is set at shell initialization.)6.692 F(If)6.692 E F2(bash)4.192 E +F0(is)4.192 E(in)144 312 Q -.2(vo)-.4 G -.1(ke).2 G 3.078(dw).1 G .578 +(ith a \214le of commands,)-3.078 F F2($0)3.078 E F0 .578 +(is set to the name of that \214le.)3.078 F(If)5.577 E F2(bash)3.077 E +F0 .577(is started with the)3.077 F F23.077 E F0 .368 (option, then)144 324 R F2($0)2.869 E F0 .369(is set to the \214rst ar) 2.869 F .369(gument after the string to be e)-.18 F -.15(xe)-.15 G .369 -(cuted, if one is present.).15 F(Other)5.368 E(-)-.2 E +(cuted, if one is present.).15 F(Other)5.369 E(-)-.2 E (wise, it is set to the \214lename used to in)144 336 Q -.2(vo)-.4 G -.1 (ke).2 G F2(bash)2.6 E F0 2.5(,a)C 2.5(sg)-2.5 G -2.15 -.25(iv e)-2.5 H 2.5(nb).25 G 2.5(ya)-2.5 G -.18(rg)-2.5 G(ument zero.).18 E F2(_)108 348 -Q F0 .054(At shell startup, set to the absolute pathname used to in)144 -348 R -.2(vo)-.4 G .255 -.1(ke t).2 H .055 -(he shell or shell script being e).1 F -.15(xe)-.15 G(cuted).15 E .692 -(as passed in the en)144 360 R .692(vironment or ar)-.4 F .691 -(gument list.)-.18 F(Subsequently)5.691 E 3.191(,e)-.65 G .691 -(xpands to the last ar)-3.341 F .691(gument to the)-.18 F(pre)144 372 Q -.57(vious command, after e)-.25 F 3.07(xpansion. Also)-.15 F .571 -(set to the full pathname used to in)3.071 F -.2(vo)-.4 G .771 -.1(ke e) -.2 H .571(ach command).1 F -.15(exe)144 384 S 1.6 +Q F0 .055(At shell startup, set to the absolute pathname used to in)144 +348 R -.2(vo)-.4 G .255 -.1(ke t).2 H .054 +(he shell or shell script being e).1 F -.15(xe)-.15 G(cuted).15 E .691 +(as passed in the en)144 360 R .691(vironment or ar)-.4 F .691 +(gument list.)-.18 F(Subsequently)5.691 E 3.191(,e)-.65 G .692 +(xpands to the last ar)-3.341 F .692(gument to the)-.18 F(pre)144 372 Q +.571(vious command, after e)-.25 F 3.071(xpansion. Also)-.15 F .571 +(set to the full pathname used to in)3.071 F -.2(vo)-.4 G .77 -.1(ke e) +.2 H .57(ach command).1 F -.15(exe)144 384 S 1.6 (cuted and placed in the en).15 F 1.6(vironment e)-.4 F 1.6 (xported to that command.)-.15 F 1.6(When checking mail, this)6.6 F (parameter holds the name of the mail \214le currently being check)144 @@ -1474,212 +1479,223 @@ Q F0 .054(At shell startup, set to the absolute pathname used to in)144 424.8 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F2 -.3(BA) 108 441.6 S(SH).3 E F0(Expands to the full \214lename used to in)144 441.6 Q -.2(vo)-.4 G .2 -.1(ke t).2 H(his instance of).1 E F2(bash)2.5 E -F0(.)A F2 -.3(BA)108 453.6 S(SHOPTS).3 E F0 2.548(Ac)144 465.6 S .049 -(olon-separated list of enabled shell options.)-2.548 F .049(Each w) +F0(.)A F2 -.3(BA)108 453.6 S(SHOPTS).3 E F0 2.549(Ac)144 465.6 S .049 +(olon-separated list of enabled shell options.)-2.549 F .049(Each w) 5.049 F .049(ord in the list is a v)-.1 F .049(alid ar)-.25 F .049 -(gument for the)-.18 F F22.549 E F0 1.398(option to the)144 477.6 +(gument for the)-.18 F F22.548 E F0 1.398(option to the)144 477.6 R F2(shopt)3.898 E F0 -.2(bu)3.898 G 1.398(iltin command \(see).2 F F1 1.398(SHELL B)3.898 F(UIL)-.09 E 1.398(TIN COMMANDS)-.828 F F0(belo) -3.648 E 3.898(w\). The)-.25 F(options)3.898 E .476(appearing in)144 -489.6 R F1 -.27(BA)2.976 G(SHOPTS).27 E F0 .476(are those reported as) -2.726 F F3(on)3.206 E F0(by)3.217 E F2(shopt)2.977 E F0 5.477(.I)C 2.977 -(ft)-5.477 G .477(his v)-2.977 F .477(ariable is in the en)-.25 F -(vironment)-.4 E(when)144 501.6 Q F2(bash)3.142 E F0 .642(starts up, ea\ -ch shell option in the list will be enabled before reading an)3.142 F -3.141(ys)-.15 G .641(tartup \214les.)-3.141 F(This v)144 513.6 Q +3.648 E 3.898(w\). The)-.25 F(options)3.898 E .477(appearing in)144 +489.6 R F1 -.27(BA)2.977 G(SHOPTS).27 E F0 .477(are those reported as) +2.727 F F3(on)3.207 E F0(by)3.217 E F2(shopt)2.977 E F0 5.476(.I)C 2.976 +(ft)-5.476 G .476(his v)-2.976 F .476(ariable is in the en)-.25 F +(vironment)-.4 E(when)144 501.6 Q F2(bash)3.141 E F0 .642(starts up, ea\ +ch shell option in the list will be enabled before reading an)3.141 F +3.142(ys)-.15 G .642(tartup \214les.)-3.142 F(This v)144 513.6 Q (ariable is read-only)-.25 E(.)-.65 E F2 -.3(BA)108 525.6 S(SHPID).3 E -F0 .187(Expands to the process ID of the current)144 537.6 R F2(bash) -2.687 E F0 2.688(process. This)2.688 F(dif)2.688 E .188(fers from)-.25 F -F2($$)2.688 E F0 .188(under certain circum-)2.688 F +F0 .188(Expands to the process ID of the current)144 537.6 R F2(bash) +2.688 E F0 2.687(process. This)2.687 F(dif)2.687 E .187(fers from)-.25 F +F2($$)2.687 E F0 .187(under certain circum-)2.687 F (stances, such as subshells that do not require)144 549.6 Q F2(bash)2.5 E F0(to be re-initialized.)2.5 E F2 -.3(BA)108 561.6 S(SH_ALIASES).3 E F0 1.195(An associati)144 573.6 R 1.495 -.15(ve a)-.25 H 1.195(rray v) .15 F 1.195(ariable whose members correspond to the internal list of al\ -iases as main-)-.25 F .024(tained by the)144 585.6 R F2(alias)2.524 E F0 --.2(bu)2.524 G 2.524(iltin. Elements).2 F .024 -(added to this array appear in the alias list; unsetting array ele-) -2.524 F(ments cause aliases to be remo)144 597.6 Q -.15(ve)-.15 G 2.5 -(df).15 G(rom the alias list.)-2.5 E F2 -.3(BA)108 609.6 S(SH_ARGC).3 E -F0 .935(An array v)144 621.6 R .935(ariable whose v)-.25 F .934 +iases as main-)-.25 F .16(tained by the)144 585.6 R F2(alias)2.66 E F0 +-.2(bu)2.66 G 2.66(iltin. Elements).2 F .16 +(added to this array appear in the alias list; ho)2.66 F(we)-.25 E -.15 +(ve)-.25 G .96 -.4(r, u).15 H(nsetting).4 E 4.503 +(array elements currently does not cause aliases to be remo)144 597.6 R +-.15(ve)-.15 G 7.003(df).15 G 4.503(rom the alias list.)-7.003 F(If) +9.503 E F2 -.3(BA)144 609.6 S(SH_ALIASES).3 E F0 +(is unset, it loses its special properties, e)2.5 E -.15(ve)-.25 G 2.5 +(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) +-2.5 E F2 -.3(BA)108 621.6 S(SH_ARGC).3 E F0 .935(An array v)144 633.6 R +.935(ariable whose v)-.25 F .934 (alues are the number of parameters in each frame of the current)-.25 F -F2(bash)3.434 E F0 -.15(exe)144 633.6 S .535(cution call stack.).15 F +F2(bash)3.434 E F0 -.15(exe)144 645.6 S .535(cution call stack.).15 F .535(The number of parameters to the current subroutine \(shell functio\ -n or script)5.535 F -.15(exe)144 645.6 S .142(cuted with).15 F F2(.) +n or script)5.535 F -.15(exe)144 657.6 S .142(cuted with).15 F F2(.) 2.642 E F0(or)2.642 E F2(sour)2.642 E(ce)-.18 E F0 2.642(\)i)C 2.642(sa) -2.642 G 2.642(tt)-2.642 G .142(he top of the stack.)-2.642 F .141 (When a subroutine is e)5.141 F -.15(xe)-.15 G .141 (cuted, the number of).15 F 2.63(parameters passed is pushed onto)144 -657.6 R F1 -.27(BA)5.13 G(SH_ARGC).27 E/F4 9/Times-Roman@0 SF(.)A F0 +669.6 R F1 -.27(BA)5.13 G(SH_ARGC).27 E/F4 9/Times-Roman@0 SF(.)A F0 2.63(The shell sets)7.13 F F1 -.27(BA)5.131 G(SH_ARGC).27 E F0 2.631 -(only when in)4.881 F -.15(ex)144 669.6 S(tended deb).15 E +(only when in)4.881 F -.15(ex)144 681.6 S(tended deb).15 E (ugging mode \(see the description of the)-.2 E F2(extdeb)2.5 E(ug)-.2 E F0(option to the)2.5 E F2(shopt)2.5 E F0 -.2(bu)2.5 G(iltin belo).2 E -(w\))-.25 E F2 -.3(BA)108 681.6 S(SH_ARGV).3 E F0 .98(An array v)144 -693.6 R .979(ariable containing all of the parameters in the current) +(w\))-.25 E F2 -.3(BA)108 693.6 S(SH_ARGV).3 E F0 .98(An array v)144 +705.6 R .979(ariable containing all of the parameters in the current) -.25 F F2(bash)3.479 E F0 -.15(exe)3.479 G .979(cution call stack.).15 F (The)5.979 E .275(\214nal parameter of the last subroutine call is at t\ -he top of the stack; the \214rst parameter of the initial)144 705.6 R -1.424(call is at the bottom.)144 717.6 R 1.424(When a subroutine is e) +he top of the stack; the \214rst parameter of the initial)144 717.6 R +1.424(call is at the bottom.)144 729.6 R 1.424(When a subroutine is e) 6.424 F -.15(xe)-.15 G 1.424 -(cuted, the parameters supplied are pushed onto).15 F F1 -.27(BA)144 -729.6 S(SH_ARGV).27 E F4(.)A F0 2.197(The shell sets)6.697 F F1 -.27(BA) -4.697 G(SH_ARGV).27 E F0 2.197(only when in e)4.447 F 2.197(xtended deb) --.15 F 2.197(ugging mode \(see the)-.2 F(GNU Bash 4.4)72 768 Q -(2015 October 11)141.235 E(10)190.395 E 0 Cg EP +(cuted, the parameters supplied are pushed onto).15 F(GNU Bash 4.4)72 +768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(10)185.545 E 0 Cg +EP %%Page: 11 11 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(description of the)144 84 Q/F1 10/Times-Bold@0 SF(extdeb)2.5 E(ug)-.2 E -F0(option to the)2.5 E F1(shopt)2.5 E F0 -.2(bu)2.5 G(iltin belo).2 E -(w\))-.25 E F1 -.3(BA)108 96 S(SH_CMDS).3 E F0 .668(An associati)144 108 -R .968 -.15(ve a)-.25 H .668(rray v).15 F .668(ariable whose members co\ -rrespond to the internal hash table of commands)-.25 F .146 -(as maintained by the)144 120 R F1(hash)2.646 E F0 -.2(bu)2.646 G 2.646 -(iltin. Elements).2 F .146 -(added to this array appear in the hash table; unsetting)2.646 F -(array elements cause commands to be remo)144 132 Q -.15(ve)-.15 G 2.5 -(df).15 G(rom the hash table.)-2.5 E F1 -.3(BA)108 144 S(SH_COMMAND).3 E -F0 1.243(The command currently being e)144 156 R -.15(xe)-.15 G 1.243 -(cuted or about to be e).15 F -.15(xe)-.15 G 1.242 -(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.242(cuting a).15 F +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 9/Times-Bold@0 +SF -.27(BA)144 84 S(SH_ARGV).27 E/F2 9/Times-Roman@0 SF(.)A F0 2.197 +(The shell sets)6.697 F F1 -.27(BA)4.697 G(SH_ARGV).27 E F0 2.197 +(only when in e)4.447 F 2.197(xtended deb)-.15 F 2.197 +(ugging mode \(see the)-.2 F(description of the)144 96 Q/F3 10 +/Times-Bold@0 SF(extdeb)2.5 E(ug)-.2 E F0(option to the)2.5 E F3(shopt) +2.5 E F0 -.2(bu)2.5 G(iltin belo).2 E(w\))-.25 E F3 -.3(BA)108 108 S +(SH_CMDS).3 E F0 .668(An associati)144 120 R .968 -.15(ve a)-.25 H .668 +(rray v).15 F .668(ariable whose members correspond to the internal has\ +h table of commands)-.25 F .195(as maintained by the)144 132 R F3(hash) +2.695 E F0 -.2(bu)2.695 G 2.695(iltin. Elements).2 F .196 +(added to this array appear in the hash table; ho)2.696 F(we)-.25 E -.15 +(ve)-.25 G -.4(r,).15 G .852(unsetting array elements currently does no\ +t cause command names to be remo)144 144 R -.15(ve)-.15 G 3.352(df).15 G +.852(rom the hash)-3.352 F 2.5(table. If)144 156 R F3 -.3(BA)2.5 G +(SH_CMDS).3 E F0(is unset, it loses its special properties, e)2.5 E -.15 +(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G +(ubsequently reset.)-2.5 E F3 -.3(BA)108 168 S(SH_COMMAND).3 E F0 1.242 +(The command currently being e)144 180 R -.15(xe)-.15 G 1.243 +(cuted or about to be e).15 F -.15(xe)-.15 G 1.243 +(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.243(cuting a).15 F (command as the result of a trap, in which case it is the command e)144 -168 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F1 -.3(BA)108 -180 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 192 Q -(gument to the)-.18 E F12.5 E F0(in)2.5 E -.2(vo)-.4 G -(cation option.).2 E F1 -.3(BA)108 204 S(SH_LINENO).3 E F0 .692 -(An array v)144 216 R .692(ariable whose members are the line numbers i\ -n source \214les where each corresponding)-.25 F .97(member of)144 228 R -/F2 9/Times-Bold@0 SF(FUNCN)3.47 E(AME)-.18 E F0 -.1(wa)3.22 G 3.47(si) -.1 G -1.9 -.4(nv o)-3.47 H -.1(ke).4 G(d.).1 E F1(${B)5.969 E -(ASH_LINENO[)-.3 E/F3 10/Times-Italic@0 SF($i)A F1(]})A F0 .969 -(is the line number in the source)3.469 F 14.671(\214le \()144 240 R F1 -(${B)A(ASH_SOURCE[)-.3 E F3($i+1)A F1(]})A F0 17.171(\)w)C(here)-17.171 -E F1(${FUNCN)17.172 E(AME[)-.2 E F3($i)A F1(]})A F0 -.1(wa)17.172 G -17.172(sc).1 G 14.672(alled \(or)-17.172 F F1(${B)144 252 Q(ASH_LINENO[) --.3 E F3($i-1)A F1(]})A F0 .115 -(if referenced within another shell function\).)2.615 F(Use)5.115 E F2 +192 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F3 -.3(BA)108 +204 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 216 Q +(gument to the)-.18 E F32.5 E F0(in)2.5 E -.2(vo)-.4 G +(cation option.).2 E F3 -.3(BA)108 228 S(SH_LINENO).3 E F0 .693 +(An array v)144 240 R .692(ariable whose members are the line numbers i\ +n source \214les where each corresponding)-.25 F .969(member of)144 252 +R F1(FUNCN)3.469 E(AME)-.18 E F0 -.1(wa)3.219 G 3.469(si).1 G -1.9 -.4 +(nv o)-3.469 H -.1(ke).4 G(d.).1 E F3(${B)5.969 E(ASH_LINENO[)-.3 E/F4 +10/Times-Italic@0 SF($i)A F3(]})A F0 .97 +(is the line number in the source)3.469 F 14.672(\214le \()144 264 R F3 +(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F3(]})A F0 17.172(\)w)C(here)-17.172 +E F3(${FUNCN)17.172 E(AME[)-.2 E F4($i)A F3(]})A F0 -.1(wa)17.172 G +17.171(sc).1 G 14.671(alled \(or)-17.171 F F3(${B)144 276 Q(ASH_LINENO[) +-.3 E F4($i-1)A F3(]})A F0 .115 +(if referenced within another shell function\).)2.615 F(Use)5.115 E F1 (LINENO)2.615 E F0 .115(to obtain the)2.365 F(current line number)144 -264 Q(.)-.55 E F1 -.3(BA)108 276 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E --.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 288 S 1.57(olon-separated list of\ +288 Q(.)-.55 E F3 -.3(BA)108 300 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E +-.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 312 S 1.57(olon-separated list of\ directories in which the shell looks for dynamically loadable b)-4.07 F -(uiltins)-.2 E(speci\214ed by the)144 300 Q F1(enable)2.5 E F0(command.) -2.5 E F1 -.3(BA)108 312 S(SH_REMA).3 E(TCH)-.95 E F0 .006(An array v)144 -324 R .006(ariable whose members are assigned by the)-.25 F F1(=~)2.506 -E F0 .005(binary operator to the)2.506 F F1([[)2.505 E F0 .005 -(conditional com-)2.505 F 2.506(mand. The)144 336 R .007 -(element with inde)2.506 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007 -(he portion of the string matching the entire re)-2.507 F .007(gular e) --.15 F(xpression.)-.15 E .998(The element with inde)144 348 R(x)-.15 E -F3(n)3.498 E F0 .997(is the portion of the string matching the)3.498 F -F3(n)3.497 E F0 .997(th parenthesized sube)B(xpres-)-.15 E 2.5 -(sion. This)144 360 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E -F1 -.3(BA)108 372 S(SH_SOURCE).3 E F0 .125(An array v)144 384 R .125(ar\ +(uiltins)-.2 E(speci\214ed by the)144 324 Q F3(enable)2.5 E F0(command.) +2.5 E F3 -.3(BA)108 336 S(SH_REMA).3 E(TCH)-.95 E F0 .005(An array v)144 +348 R .005(ariable whose members are assigned by the)-.25 F F3(=~)2.506 +E F0 .006(binary operator to the)2.506 F F3([[)2.506 E F0 .006 +(conditional com-)2.506 F 2.507(mand. The)144 360 R .007 +(element with inde)2.507 F 2.507(x0i)-.15 G 2.507(st)-2.507 G .007 +(he portion of the string matching the entire re)-2.507 F .006(gular e) +-.15 F(xpression.)-.15 E .997(The element with inde)144 372 R(x)-.15 E +F4(n)3.497 E F0 .997(is the portion of the string matching the)3.497 F +F4(n)3.498 E F0 .998(th parenthesized sube)B(xpres-)-.15 E 2.5 +(sion. This)144 384 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E +F3 -.3(BA)108 396 S(SH_SOURCE).3 E F0 .126(An array v)144 408 R .125(ar\ iable whose members are the source \214lenames where the corresponding \ -shell function)-.25 F .781(names in the)144 396 R F2(FUNCN)3.28 E(AME) +shell function)-.25 F .78(names in the)144 420 R F1(FUNCN)3.28 E(AME) -.18 E F0 .78(array v)3.03 F .78(ariable are de\214ned.)-.25 F .78 -(The shell function)5.78 F F1(${FUNCN)3.28 E(AME[)-.2 E F3($i)A F1(]})A -F0(is)3.28 E(de\214ned in the \214le)144 408 Q F1(${B)2.5 E(ASH_SOURCE[) --.3 E F3($i)A F1(]})A F0(and called from)2.5 E F1(${B)2.5 E(ASH_SOURCE[) --.3 E F3($i+1)A F1(]})A F0(.)A F1 -.3(BA)108 420 S(SH_SUBSHELL).3 E F0 -.296(Incremented by one within each subshell or subshell en)144 432 R -.296(vironment when the shell be)-.4 F .297(gins e)-.15 F -.15(xe)-.15 G -(cuting).15 E(in that en)144 444 Q 2.5(vironment. The)-.4 F(initial v) -2.5 E(alue is 0.)-.25 E F1 -.3(BA)108 456 S(SH_VERSINFO).3 E F0 2.645 -(Ar)144 468 S .145(eadonly array v)-2.645 F .144 +(The shell function)5.78 F F3(${FUNCN)3.281 E(AME[)-.2 E F4($i)A F3(]})A +F0(is)3.281 E(de\214ned in the \214le)144 432 Q F3(${B)2.5 E +(ASH_SOURCE[)-.3 E F4($i)A F3(]})A F0(and called from)2.5 E F3(${B)2.5 E +(ASH_SOURCE[)-.3 E F4($i+1)A F3(]})A F0(.)A F3 -.3(BA)108 444 S +(SH_SUBSHELL).3 E F0 .296 +(Incremented by one within each subshell or subshell en)144 456 R .296 +(vironment when the shell be)-.4 F .296(gins e)-.15 F -.15(xe)-.15 G +(cuting).15 E(in that en)144 468 Q 2.5(vironment. The)-.4 F(initial v) +2.5 E(alue is 0.)-.25 E F3 -.3(BA)108 480 S(SH_VERSINFO).3 E F0 2.644 +(Ar)144 492 S .144(eadonly array v)-2.644 F .144 (ariable whose members hold v)-.25 F .144 -(ersion information for this instance of)-.15 F F1(bash)2.644 E F0 5.144 -(.T)C(he)-5.144 E -.25(va)144 480 S -(lues assigned to the array members are as follo).25 E(ws:)-.25 E F1 -.3 -(BA)144 498 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)264 498 Q -(ersion number \(the)-.15 E F3 -.37(re)2.5 G(lease).37 E F0(\).)A F1 -.3 -(BA)144 510 S(SH_VERSINFO[).3 E F0(1)A F1(])A F0(The minor v)264 510 Q -(ersion number \(the)-.15 E F3(ver)2.5 E(sion)-.1 E F0(\).)A F1 -.3(BA) -144 522 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0(The patch le)264 522 Q -.15 -(ve)-.25 G(l.).15 E F1 -.3(BA)144 534 S(SH_VERSINFO[).3 E F0(3)A F1(])A -F0(The b)264 534 Q(uild v)-.2 E(ersion.)-.15 E F1 -.3(BA)144 546 S -(SH_VERSINFO[).3 E F0(4)A F1(])A F0(The release status \(e.g.,)264 546 Q -F3(beta1)2.5 E F0(\).)A F1 -.3(BA)144 558 S(SH_VERSINFO[).3 E F0(5)A F1 -(])A F0(The v)264 558 Q(alue of)-.25 E F2(MA)2.5 E(CHTYPE)-.495 E/F4 9 -/Times-Roman@0 SF(.)A F1 -.3(BA)108 570 S(SH_VERSION).3 E F0 -(Expands to a string describing the v)144 582 Q -(ersion of this instance of)-.15 E F1(bash)2.5 E F0(.)A F1(COMP_CW)108 -594 Q(ORD)-.1 E F0 .396(An inde)144 606 R 2.896(xi)-.15 G(nto)-2.896 E -F1(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396 -(ord containing the current cursor position.)-.1 F .397(This v)5.397 F -(ari-)-.25 E 1.181(able is a)144 618 R -.25(va)-.2 G 1.181 +(ersion information for this instance of)-.15 F F3(bash)2.645 E F0 5.145 +(.T)C(he)-5.145 E -.25(va)144 504 S +(lues assigned to the array members are as follo).25 E(ws:)-.25 E F3 -.3 +(BA)144 522 S(SH_VERSINFO[).3 E F0(0)A F3(])A F0(The major v)264 522 Q +(ersion number \(the)-.15 E F4 -.37(re)2.5 G(lease).37 E F0(\).)A F3 -.3 +(BA)144 534 S(SH_VERSINFO[).3 E F0(1)A F3(])A F0(The minor v)264 534 Q +(ersion number \(the)-.15 E F4(ver)2.5 E(sion)-.1 E F0(\).)A F3 -.3(BA) +144 546 S(SH_VERSINFO[).3 E F0(2)A F3(])A F0(The patch le)264 546 Q -.15 +(ve)-.25 G(l.).15 E F3 -.3(BA)144 558 S(SH_VERSINFO[).3 E F0(3)A F3(])A +F0(The b)264 558 Q(uild v)-.2 E(ersion.)-.15 E F3 -.3(BA)144 570 S +(SH_VERSINFO[).3 E F0(4)A F3(])A F0(The release status \(e.g.,)264 570 Q +F4(beta1)2.5 E F0(\).)A F3 -.3(BA)144 582 S(SH_VERSINFO[).3 E F0(5)A F3 +(])A F0(The v)264 582 Q(alue of)-.25 E F1(MA)2.5 E(CHTYPE)-.495 E F2(.)A +F3 -.3(BA)108 594 S(SH_VERSION).3 E F0 +(Expands to a string describing the v)144 606 Q +(ersion of this instance of)-.15 E F3(bash)2.5 E F0(.)A F3(COMP_CW)108 +618 Q(ORD)-.1 E F0 .397(An inde)144 630 R 2.897(xi)-.15 G(nto)-2.897 E +F3(${COMP_W)2.896 E(ORDS})-.1 E F0 .396(of the w)2.896 F .396 +(ord containing the current cursor position.)-.1 F .396(This v)5.396 F +(ari-)-.25 E 1.18(able is a)144 642 R -.25(va)-.2 G 1.181 (ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.681 -(db).1 G 3.681(yt)-3.681 G 1.18(he programmable completion f)-3.681 F -1.18(acilities \(see)-.1 F F1(Pr)144 630 Q(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 642 Q F0(The k)144 654 Q .3 +(db).1 G 3.681(yt)-3.681 G 1.181(he programmable completion f)-3.681 F +1.181(acilities \(see)-.1 F F3(Pr)144 654 Q(ogrammable Completion)-.18 E +F0(belo)2.5 E(w\).)-.25 E F3(COMP_KEY)108 666 Q F0(The k)144 678 Q .3 -.15(ey \()-.1 H(or \214nal k).15 E .3 -.15(ey o)-.1 H 2.5(fak).15 G .3 -.15(ey s)-2.6 H(equence\) used to in).15 E -.2(vo)-.4 G .2 -.1(ke t).2 -H(he current completion function.).1 E F1(COMP_LINE)108 666 Q F0 1.207 -(The current command line.)144 678 R 1.208(This v)6.208 F 1.208 +H(he current completion function.).1 E F3(COMP_LINE)108 690 Q F0 1.208 +(The current command line.)144 702 R 1.208(This v)6.208 F 1.208 (ariable is a)-.25 F -.25(va)-.2 G 1.208 -(ilable only in shell functions and e).25 F 1.208(xternal com-)-.15 F -2.849(mands in)144 690 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 +(ilable only in shell functions and e).25 F 1.207(xternal com-)-.15 F +2.848(mands in)144 714 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 (yt)-5.349 G 2.849(he programmable completion f)-5.349 F 2.849 -(acilities \(see)-.1 F F1(Pr)5.349 E 2.848(ogrammable Completion)-.18 F -F0(belo)144 702 Q(w\).)-.25 E(GNU Bash 4.4)72 768 Q(2015 October 11) -141.235 E(11)190.395 E 0 Cg EP +(acilities \(see)-.1 F F3(Pr)5.349 E 2.849(ogrammable Completion)-.18 F +F0(belo)144 726 Q(w\).)-.25 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E +-.15(ve)-.15 G(mber 16).15 E(11)185.545 E 0 Cg EP %%Page: 12 12 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(COMP_POINT)108 84 Q F0 .666(The inde)144 96 R 3.166(xo)-.15 G 3.166 -(ft)-3.166 G .666(he current cursor position relati)-3.166 F .966 -.15 +SF(COMP_POINT)108 84 Q F0 .667(The inde)144 96 R 3.167(xo)-.15 G 3.167 +(ft)-3.167 G .666(he current cursor position relati)-3.167 F .966 -.15 (ve t)-.25 H 3.166(ot).15 G .666(he be)-3.166 F .666 -(ginning of the current command.)-.15 F .667(If the)5.667 F .535 +(ginning of the current command.)-.15 F .666(If the)5.666 F .534 (current cursor position is at the end of the current command, the v)144 -108 R .534(alue of this v)-.25 F .534(ariable is equal to)-.25 F F1 -(${#COMP_LINE})144 120 Q F0 7.005(.T)C 2.005(his v)-7.005 F 2.005 -(ariable is a)-.25 F -.25(va)-.2 G 2.006 -(ilable only in shell functions and e).25 F 2.006(xternal commands)-.15 +108 R .535(alue of this v)-.25 F .535(ariable is equal to)-.25 F F1 +(${#COMP_LINE})144 120 Q F0 7.006(.T)C 2.006(his v)-7.006 F 2.006 +(ariable is a)-.25 F -.25(va)-.2 G 2.005 +(ilable only in shell functions and e).25 F 2.005(xternal commands)-.15 F(in)144 132 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G (he programmable completion f)-2.5 E(acilities \(see)-.1 E F1(Pr)2.5 E (ogrammable Completion)-.18 E F0(belo)2.5 E(w\).)-.25 E F1(COMP_TYPE)108 -144 Q F0 .042(Set to an inte)144 156 R .042(ger v)-.15 F .041(alue corr\ +144 Q F0 .041(Set to an inte)144 156 R .041(ger v)-.15 F .041(alue corr\ esponding to the type of completion attempted that caused a completion) --.25 F .337(function to be called:)144 168 R/F2 10/Times-Italic@0 SF -.5 +-.25 F .338(function to be called:)144 168 R/F2 10/Times-Italic@0 SF -.5 (TA)2.837 G(B).5 E F0 2.837(,f)C .337(or normal completion,)-2.837 F F2 (?)2.837 E F0 2.837(,f)C .337(or listing completions after successi) --2.837 F .638 -.15(ve t)-.25 H(abs,).15 E F2(!)144 180 Q F0 4.092(,f)C -1.592(or listing alternati)-4.092 F -.15(ve)-.25 G 4.092(so).15 G 4.092 +-2.837 F .637 -.15(ve t)-.25 H(abs,).15 E F2(!)144 180 Q F0 4.091(,f)C +1.591(or listing alternati)-4.091 F -.15(ve)-.25 G 4.092(so).15 G 4.092 (np)-4.092 G 1.592(artial w)-4.092 F 1.592(ord completion,)-.1 F F2(@) 4.092 E F0 4.092(,t)C 4.092(ol)-4.092 G 1.592(ist completions if the w) --4.092 F 1.591(ord is not)-.1 F 1.552(unmodi\214ed, or)144 192 R F2(%) -4.052 E F0 4.052(,f)C 1.552(or menu completion.)-4.052 F 1.552(This v) +-4.092 F 1.592(ord is not)-.1 F 1.553(unmodi\214ed, or)144 192 R F2(%) +4.053 E F0 4.052(,f)C 1.552(or menu completion.)-4.052 F 1.552(This v) 6.552 F 1.552(ariable is a)-.25 F -.25(va)-.2 G 1.552 -(ilable only in shell functions and).25 F -.15(ex)144 204 S 2.929 +(ilable only in shell functions and).25 F -.15(ex)144 204 S 2.928 (ternal commands in).15 F -.2(vo)-.4 G -.1(ke).2 G 5.429(db).1 G 5.429 (yt)-5.429 G 2.929(he programmable completion f)-5.429 F 2.929 -(acilities \(see)-.1 F F1(Pr)5.428 E(ogrammable)-.18 E(Completion)144 +(acilities \(see)-.1 F F1(Pr)5.429 E(ogrammable)-.18 E(Completion)144 216 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 228 Q(ORDBREAKS)-.1 E F0 -1.335(The set of characters that the)144 240 R F1 -.18(re)3.836 G -(adline).18 E F0 1.336(library treats as w)3.836 F 1.336 -(ord separators when performing w)-.1 F(ord)-.1 E 3.126(completion. If) -144 252 R/F3 9/Times-Bold@0 SF(COMP_W)3.126 E(ORDBREAKS)-.09 E F0 .626 -(is unset, it loses its special properties, e)2.876 F -.15(ve)-.25 G -3.125(ni).15 G 3.125(fi)-3.125 G 3.125(ti)-3.125 G 3.125(ss)-3.125 G -(ubse-)-3.125 E(quently reset.)144 264 Q F1(COMP_W)108 276 Q(ORDS)-.1 E -F0 .653(An array v)144 288 R .653(ariable \(see)-.25 F F1(Arrays)3.153 E -F0(belo)3.153 E .654(w\) consisting of the indi)-.25 F .654(vidual w) --.25 F .654(ords in the current command)-.1 F 4.333(line. The)144 300 R +1.336(The set of characters that the)144 240 R F1 -.18(re)3.836 G +(adline).18 E F0 1.336(library treats as w)3.836 F 1.335 +(ord separators when performing w)-.1 F(ord)-.1 E 3.125(completion. If) +144 252 R/F3 9/Times-Bold@0 SF(COMP_W)3.125 E(ORDBREAKS)-.09 E F0 .626 +(is unset, it loses its special properties, e)2.875 F -.15(ve)-.25 G +3.126(ni).15 G 3.126(fi)-3.126 G 3.126(ti)-3.126 G 3.126(ss)-3.126 G +(ubse-)-3.126 E(quently reset.)144 264 Q F1(COMP_W)108 276 Q(ORDS)-.1 E +F0 .654(An array v)144 288 R .654(ariable \(see)-.25 F F1(Arrays)3.154 E +F0(belo)3.154 E .654(w\) consisting of the indi)-.25 F .653(vidual w) +-.25 F .653(ords in the current command)-.1 F 4.332(line. The)144 300 R 1.832(line is split into w)4.332 F 1.832(ords as)-.1 F F1 -.18(re)4.332 G(adline).18 E F0 -.1(wo)4.332 G 1.832(uld split it, using).1 F F3 -(COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.082 E .831(described abo)144 -312 R -.15(ve)-.15 G 5.831(.T).15 G .831(his v)-5.831 F .831 -(ariable is a)-.25 F -.25(va)-.2 G .832 -(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.332 -(db).1 G 3.332(yt)-3.332 G .832(he programmable)-3.332 F(completion f) +(COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.083 E .832(described abo)144 +312 R -.15(ve)-.15 G 5.832(.T).15 G .832(his v)-5.832 F .832 +(ariable is a)-.25 F -.25(va)-.2 G .831 +(ilable only in shell functions in).25 F -.2(vo)-.4 G -.1(ke).2 G 3.331 +(db).1 G 3.331(yt)-3.331 G .831(he programmable)-3.331 F(completion f) 144 324 Q(acilities \(see)-.1 E F1(Pr)2.5 E(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 336 Q(OC)-.3 E F0 .169(An array v) -144 348 R .169(ariable \(see)-.25 F F1(Arrays)2.669 E F0(belo)2.669 E +F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 336 Q(OC)-.3 E F0 .168(An array v) +144 348 R .168(ariable \(see)-.25 F F1(Arrays)2.668 E F0(belo)2.669 E .169 (w\) created to hold the \214le descriptors for output from and input) -.25 F(to an unnamed coprocess \(see)144 360 Q F1(Copr)2.5 E(ocesses) @@ -1687,163 +1703,164 @@ F0(belo)2.5 E(w\).)-.25 E F1(COPR)108 336 Q(OC)-.3 E F0 .169(An array v) -.9 G(K).55 E F0 2.26(An array v)144 384 R 2.26(ariable \(see)-.25 F F1 (Arrays)4.76 E F0(belo)4.76 E 2.26 (w\) containing the current contents of the directory stack.)-.25 F -1.095(Directories appear in the stack in the order the)144 396 R 3.594 -(ya)-.15 G 1.094(re displayed by the)-3.594 F F1(dirs)3.594 E F0 -.2(bu) -3.594 G 3.594(iltin. Assigning).2 F(to)3.594 E 1.431 +1.094(Directories appear in the stack in the order the)144 396 R 3.594 +(ya)-.15 G 1.095(re displayed by the)-3.594 F F1(dirs)3.595 E F0 -.2(bu) +3.595 G 3.595(iltin. Assigning).2 F(to)3.595 E 1.432 (members of this array v)144 408 R 1.432 (ariable may be used to modify directories already in the stack, b)-.25 -F 1.432(ut the)-.2 F F1(pushd)144 420 Q F0(and)2.746 E F1(popd)2.746 E +F 1.431(ut the)-.2 F F1(pushd)144 420 Q F0(and)2.746 E F1(popd)2.746 E F0 -.2(bu)2.746 G .246(iltins must be used to add and remo).2 F .546 -.15(ve d)-.15 H 2.746(irectories. Assignment).15 F .246(to this v)2.746 -F(ariable)-.25 E .35(will not change the current directory)144 432 R +F(ariable)-.25 E .351(will not change the current directory)144 432 R 5.35(.I)-.65 G(f)-5.35 E F3(DIRST)2.85 E -.495(AC)-.81 G(K).495 E F0 .35 -(is unset, it loses its special properties, e)2.6 F -.15(ve)-.25 G 2.851 -(ni).15 G(f)-2.851 E(it is subsequently reset.)144 444 Q F1(EUID)108 456 -Q F0 1.104(Expands to the ef)144 456 R(fecti)-.25 E 1.403 -.15(ve u)-.25 +(is unset, it loses its special properties, e)2.6 F -.15(ve)-.25 G 2.85 +(ni).15 G(f)-2.85 E(it is subsequently reset.)144 444 Q F1(EUID)108 456 +Q F0 1.103(Expands to the ef)144 456 R(fecti)-.25 E 1.403 -.15(ve u)-.25 H 1.103(ser ID of the current user).15 F 3.603(,i)-.4 G 1.103 -(nitialized at shell startup.)-3.603 F 1.103(This v)6.103 F 1.103 +(nitialized at shell startup.)-3.603 F 1.104(This v)6.103 F 1.104 (ariable is)-.25 F(readonly)144 468 Q(.)-.65 E F1(FUNCN)108 480 Q(AME) --.2 E F0 .478(An array v)144 492 R .479 +-.2 E F0 .479(An array v)144 492 R .479 (ariable containing the names of all shell functions currently in the e) --.25 F -.15(xe)-.15 G .479(cution call stack.).15 F .277 -(The element with inde)144 504 R 2.777(x0i)-.15 G 2.777(st)-2.777 G .276 -(he name of an)-2.777 F 2.776(yc)-.15 G(urrently-e)-2.776 E -.15(xe)-.15 -G .276(cuting shell function.).15 F .276(The bottom-most)5.276 F .384 +-.25 F -.15(xe)-.15 G .478(cution call stack.).15 F .276 +(The element with inde)144 504 R 2.776(x0i)-.15 G 2.776(st)-2.776 G .276 +(he name of an)-2.776 F 2.777(yc)-.15 G(urrently-e)-2.777 E -.15(xe)-.15 +G .277(cuting shell function.).15 F .277(The bottom-most)5.277 F .385 (element \(the one with the highest inde)144 516 R .384(x\) is)-.15 F/F4 -10/Courier@0 SF("main")2.884 E F0 5.384(.T)C .384(his v)-5.384 F .385 -(ariable e)-.25 F .385(xists only when a shell func-)-.15 F .076 -(tion is e)144 528 R -.15(xe)-.15 G 2.576(cuting. Assignments).15 F(to) -2.576 E F3(FUNCN)2.576 E(AME)-.18 E F0(ha)2.326 E .376 -.15(ve n)-.2 H -2.576(oe).15 G -.25(ff)-2.576 G 2.576(ect. If).25 F F3(FUNCN)2.575 E -(AME)-.18 E F0 .075(is unset, it loses its)2.325 F +10/Courier@0 SF("main")2.884 E F0 5.384(.T)C .384(his v)-5.384 F .384 +(ariable e)-.25 F .384(xists only when a shell func-)-.15 F .075 +(tion is e)144 528 R -.15(xe)-.15 G 2.575(cuting. Assignments).15 F(to) +2.575 E F3(FUNCN)2.575 E(AME)-.18 E F0(ha)2.325 E .376 -.15(ve n)-.2 H +2.576(oe).15 G -.25(ff)-2.576 G 2.576(ect. If).25 F F3(FUNCN)2.576 E +(AME)-.18 E F0 .076(is unset, it loses its)2.326 F (special properties, e)144 540 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 -G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E .11(This v)144 +G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E .111(This v)144 558 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO) .3 E F0(and)2.611 E F1 -.3(BA)2.611 G(SH_SOURCE).3 E F0 5.111(.E)C .111 -(ach element of)-5.111 F F1(FUNC-)2.611 E -.2(NA)144 570 S(ME).2 E F0 +(ach element of)-5.111 F F1(FUNC-)2.61 E -.2(NA)144 570 S(ME).2 E F0 1.404(has corresponding elements in)3.904 F F1 -.3(BA)3.904 G(SH_LINENO) .3 E F0(and)3.904 E F1 -.3(BA)3.904 G(SH_SOURCE).3 E F0 1.404 (to describe the)3.904 F .012(call stack.)144 582 R -.15(Fo)5.012 G 2.512(ri).15 G(nstance,)-2.512 E F1(${FUNCN)2.512 E(AME[)-.2 E F2($i)A F1(]})A F0 -.1(wa)2.512 G 2.512(sc).1 G .012(alled from the \214le) --2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F2($i+1)A F1(]})A F0 1.184 -(at line number)144 594 R F1(${B)3.684 E(ASH_LINENO[)-.3 E F2($i)A F1 -(]})A F0 6.184(.T)C(he)-6.184 E F1(caller)3.683 E F0 -.2(bu)3.683 G -1.183(iltin displays the current call stack using).2 F -(this information.)144 606 Q F1(GR)108 618 Q(OUPS)-.3 E F0 1.228 +-2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F2($i+1)A F1(]})A F0 1.183 +(at line number)144 594 R F1(${B)3.683 E(ASH_LINENO[)-.3 E F2($i)A F1 +(]})A F0 6.183(.T)C(he)-6.183 E F1(caller)3.683 E F0 -.2(bu)3.683 G +1.184(iltin displays the current call stack using).2 F +(this information.)144 606 Q F1(GR)108 618 Q(OUPS)-.3 E F0 1.229 (An array v)144 630 R 1.228(ariable containing the list of groups of wh\ -ich the current user is a member)-.25 F 6.229(.A)-.55 G(ssign-)-6.229 E -.572(ments to)144 642 R F3(GR)3.072 E(OUPS)-.27 E F0(ha)2.822 E .872 +ich the current user is a member)-.25 F 6.228(.A)-.55 G(ssign-)-6.228 E +.571(ments to)144 642 R F3(GR)3.071 E(OUPS)-.27 E F0(ha)2.822 E .872 -.15(ve n)-.2 H 3.072(oe).15 G -.25(ff)-3.072 G 3.072(ect. If).25 F F3 (GR)3.072 E(OUPS)-.27 E F0 .572 (is unset, it loses its special properties, e)2.822 F -.15(ve)-.25 G -3.072(ni).15 G 3.071(fi)-3.072 G 3.071(ti)-3.071 G(s)-3.071 E -(subsequently reset.)144 654 Q F1(HISTCMD)108 666 Q F0 .355 -(The history number)144 678 R 2.855(,o)-.4 G 2.855(ri)-2.855 G(nde) --2.855 E 2.856(xi)-.15 G 2.856(nt)-2.856 G .356 +3.072(ni).15 G 3.072(fi)-3.072 G 3.072(ti)-3.072 G(s)-3.072 E +(subsequently reset.)144 654 Q F1(HISTCMD)108 666 Q F0 .356 +(The history number)144 678 R 2.856(,o)-.4 G 2.856(ri)-2.856 G(nde) +-2.856 E 2.856(xi)-.15 G 2.856(nt)-2.856 G .356 (he history list, of the current command.)-2.856 F(If)5.356 E F3 -(HISTCMD)2.856 E F0 .356(is unset, it)2.606 F +(HISTCMD)2.855 E F0 .355(is unset, it)2.605 F (loses its special properties, e)144 690 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1 (HOSTN)108 702 Q(AME)-.2 E F0 (Automatically set to the name of the current host.)144 714 Q -(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(12)190.395 E 0 Cg EP +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(12)185.545 E 0 Cg EP %%Page: 13 13 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(HOSTTYPE)108 84 Q F0 .223(Automatically set to a string that uniquel\ -y describes the type of machine on which)144 96 R F1(bash)2.722 E F0 -.222(is e)2.722 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 108 R(def) +SF(HOSTTYPE)108 84 Q F0 .222(Automatically set to a string that uniquel\ +y describes the type of machine on which)144 96 R F1(bash)2.723 E F0 +.223(is e)2.723 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 108 R(def) 2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 120 Q F0 1.408(Each\ time this parameter is referenced, the shell substitutes a decimal num\ ber representing the)144 132 R .078(current sequential line number \(st\ -arting with 1\) within a script or function.)144 144 R .078 -(When not in a script or)5.078 F .306(function, the v)144 156 R .306 -(alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.307 E -/F2 9/Times-Bold@0 SF(LINENO)2.807 E F0 .307(is unset, it loses its) -2.557 F(special properties, e)144 168 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5 +arting with 1\) within a script or function.)144 144 R .079 +(When not in a script or)5.078 F .307(function, the v)144 156 R .307 +(alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.306 E +/F2 9/Times-Bold@0 SF(LINENO)2.806 E F0 .306(is unset, it loses its) +2.556 F(special properties, e)144 168 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5 (fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.)-2.5 E F1(MA) 108 180 Q(CHTYPE)-.55 E F0 .898(Automatically set to a string that full\ -y describes the system type on which)144 192 R F1(bash)3.398 E F0 .898 -(is e)3.398 F -.15(xe)-.15 G .898(cuting, in).15 F(the standard GNU)144 +y describes the system type on which)144 192 R F1(bash)3.398 E F0 .899 +(is e)3.398 F -.15(xe)-.15 G .899(cuting, in).15 F(the standard GNU)144 204 Q/F3 10/Times-Italic@0 SF(cpu-company-system)2.5 E F0 2.5 (format. The)2.5 F(def)2.5 E(ault is system-dependent.)-.1 E F1(MAPFILE) -108 216 Q F0 .293(An array v)144 228 R .293(ariable \(see)-.25 F F1 -(Arrays)2.793 E F0(belo)2.793 E .293(w\) created to hold the te)-.25 F -.294(xt read by the)-.15 F F1(map\214le)2.794 E F0 -.2(bu)2.794 G .294 +108 216 Q F0 .294(An array v)144 228 R .294(ariable \(see)-.25 F F1 +(Arrays)2.794 E F0(belo)2.794 E .294(w\) created to hold the te)-.25 F +.293(xt read by the)-.15 F F1(map\214le)2.793 E F0 -.2(bu)2.793 G .293 (iltin when no).2 F -.25(va)144 240 S(riable name is supplied.).25 E F1 (OLDPWD)108 252 Q F0(The pre)144 264 Q(vious w)-.25 E (orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1 -(OPT)108 276 Q(ARG)-.9 E F0 1.627(The v)144 288 R 1.627 +(OPT)108 276 Q(ARG)-.9 E F0 1.626(The v)144 288 R 1.627 (alue of the last option ar)-.25 F 1.627(gument processed by the)-.18 F -F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.626(iltin command \(see).2 F F2 -(SHELL)4.126 E -.09(BU)144 300 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) -2.25 E(w\).)-.25 E F1(OPTIND)108 312 Q F0 1.651(The inde)144 324 R 4.151 -(xo)-.15 G 4.151(ft)-4.151 G 1.651(he ne)-4.151 F 1.651(xt ar)-.15 F -1.652(gument to be processed by the)-.18 F F1(getopts)4.152 E F0 -.2(bu) -4.152 G 1.652(iltin command \(see).2 F F2(SHELL)4.152 E -.09(BU)144 336 +F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.627(iltin command \(see).2 F F2 +(SHELL)4.127 E -.09(BU)144 300 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) +2.25 E(w\).)-.25 E F1(OPTIND)108 312 Q F0 1.652(The inde)144 324 R 4.152 +(xo)-.15 G 4.152(ft)-4.152 G 1.652(he ne)-4.152 F 1.652(xt ar)-.15 F +1.652(gument to be processed by the)-.18 F F1(getopts)4.151 E F0 -.2(bu) +4.151 G 1.651(iltin command \(see).2 F F2(SHELL)4.151 E -.09(BU)144 336 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1(OSTYPE)108 348 Q F0 .329(Automatically set to a string that describes the operatin\ -g system on which)144 360 R F1(bash)2.829 E F0 .329(is e)2.829 F -.15 -(xe)-.15 G 2.829(cuting. The).15 F(def)144 372 Q -(ault is system-dependent.)-.1 E F1(PIPEST)108 384 Q -.95(AT)-.9 G(US) -.95 E F0 .61(An array v)144 396 R .61(ariable \(see)-.25 F F1(Arrays) -3.11 E F0(belo)3.11 E .61(w\) containing a list of e)-.25 F .61 -(xit status v)-.15 F .61(alues from the processes in)-.25 F -(the most-recently-e)144 408 Q -.15(xe)-.15 G(cuted fore).15 E +g system on which)144 360 R F1(bash)2.83 E F0 .33(is e)2.83 F -.15(xe) +-.15 G 2.83(cuting. The).15 F(def)144 372 Q(ault is system-dependent.) +-.1 E F1(PIPEST)108 384 Q -.95(AT)-.9 G(US).95 E F0 .61(An array v)144 +396 R .61(ariable \(see)-.25 F F1(Arrays)3.11 E F0(belo)3.11 E .61 +(w\) containing a list of e)-.25 F .61(xit status v)-.15 F .61 +(alues from the processes in)-.25 F(the most-recently-e)144 408 Q -.15 +(xe)-.15 G(cuted fore).15 E (ground pipeline \(which may contain only a single command\).)-.15 E F1 (PPID)108 420 Q F0(The process ID of the shell')144 420 Q 2.5(sp)-.55 G 2.5(arent. This)-2.5 F -.25(va)2.5 G(riable is readonly).25 E(.)-.65 E F1(PWD)108 432 Q F0(The current w)144 432 Q (orking directory as set by the)-.1 E F1(cd)2.5 E F0(command.)2.5 E F1 -(RANDOM)108 444 Q F0 .566 -(Each time this parameter is referenced, a random inte)144 456 R .565 -(ger between 0 and 32767 is generated.)-.15 F(The)5.565 E .01 +(RANDOM)108 444 Q F0 .565 +(Each time this parameter is referenced, a random inte)144 456 R .566 +(ger between 0 and 32767 is generated.)-.15 F(The)5.566 E .01 (sequence of random numbers may be initialized by assigning a v)144 468 R .01(alue to)-.25 F F2(RANDOM)2.51 E/F4 9/Times-Roman@0 SF(.)A F0(If) 4.51 E F2(RANDOM)2.51 E F0(is)2.26 E (unset, it loses its special properties, e)144 480 Q -.15(ve)-.25 G 2.5 (ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G(ubsequently reset.) --2.5 E F1(READLINE_LINE)108 492 Q F0 1.547(The contents of the)144 504 R +-2.5 E F1(READLINE_LINE)108 492 Q F0 1.546(The contents of the)144 504 R F1 -.18(re)4.047 G(adline).18 E F0 1.547(line b)4.047 F(uf)-.2 E(fer) -.25 E 4.047(,f)-.4 G 1.547(or use with)-4.047 F/F5 10/Courier@0 SF -1.547(bind -x)4.047 F F0(\(see)4.047 E F2 1.546(SHELL B)4.047 F(UIL)-.09 -E 1.546(TIN COM-)-.828 F(MANDS)144 516 Q F0(belo)2.25 E(w\).)-.25 E F1 -(READLINE_POINT)108 528 Q F0 .313 +1.547(bind -x)4.047 F F0(\(see)4.047 E F2 1.547(SHELL B)4.047 F(UIL)-.09 +E 1.547(TIN COM-)-.828 F(MANDS)144 516 Q F0(belo)2.25 E(w\).)-.25 E F1 +(READLINE_POINT)108 528 Q F0 .314 (The position of the insertion point in the)144 540 R F1 -.18(re)2.813 G (adline).18 E F0 .313(line b)2.813 F(uf)-.2 E(fer)-.25 E 2.813(,f)-.4 G -.313(or use with)-2.813 F F5 .314(bind -x)2.814 F F0(\(see)2.814 E F2 -(SHELL)2.814 E -.09(BU)144 552 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) +.313(or use with)-2.813 F F5 .313(bind -x)2.813 F F0(\(see)2.813 E F2 +(SHELL)2.813 E -.09(BU)144 552 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) 2.25 E(w\).)-.25 E F1(REPL)108 564 Q(Y)-.92 E F0 (Set to the line of input read by the)144 576 Q F1 -.18(re)2.5 G(ad).18 E F0 -.2(bu)2.5 G(iltin command when no ar).2 E(guments are supplied.) -.18 E F1(SECONDS)108 588 Q F0 .795(Each time this parameter is referen\ ced, the number of seconds since shell in)144 600 R -.2(vo)-.4 G .795 -(cation is returned.).2 F .712(If a v)144 612 R .712 +(cation is returned.).2 F .713(If a v)144 612 R .712 (alue is assigned to)-.25 F F2(SECONDS)3.212 E F4(,)A F0 .712(the v) 2.962 F .712(alue returned upon subsequent references is the number)-.25 -F .408(of seconds since the assignment plus the v)144 624 R .408 -(alue assigned.)-.25 F(If)5.408 E F2(SECONDS)2.908 E F0 .407 +F .407(of seconds since the assignment plus the v)144 624 R .408 +(alue assigned.)-.25 F(If)5.408 E F2(SECONDS)2.908 E F0 .408 (is unset, it loses its special)2.658 F(properties, e)144 636 Q -.15(ve) -.25 G 2.5(ni).15 G 2.5(fi)-2.5 G 2.5(ti)-2.5 G 2.5(ss)-2.5 G -(ubsequently reset.)-2.5 E F1(SHELLOPTS)108 648 Q F0 3.262(Ac)144 660 S -.763(olon-separated list of enabled shell options.)-3.262 F .763(Each w) +(ubsequently reset.)-2.5 E F1(SHELLOPTS)108 648 Q F0 3.263(Ac)144 660 S +.763(olon-separated list of enabled shell options.)-3.263 F .763(Each w) 5.763 F .763(ord in the list is a v)-.1 F .763(alid ar)-.25 F .763 -(gument for the)-.18 F F1144 672 Q F0 1.174(option to the)3.674 F -F1(set)3.674 E F0 -.2(bu)3.674 G 1.174(iltin command \(see).2 F F2 1.173 -(SHELL B)3.673 F(UIL)-.09 E 1.173(TIN COMMANDS)-.828 F F0(belo)3.423 E -3.673(w\). The)-.25 F(options)3.673 E .019(appearing in)144 684 R F2 -(SHELLOPTS)2.519 E F0 .019(are those reported as)2.269 F F3(on)2.749 E -F0(by)2.759 E F1 .019(set \255o)2.519 F F0 5.019(.I)C 2.519(ft)-5.019 G -.019(his v)-2.519 F .02(ariable is in the en)-.25 F(vironment)-.4 E -(when)144 696 Q F1(bash)3.142 E F0 .642(starts up, each shell option in\ - the list will be enabled before reading an)3.142 F 3.141(ys)-.15 G .641 -(tartup \214les.)-3.141 F(This v)144 708 Q(ariable is read-only)-.25 E -(.)-.65 E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(13)190.395 E 0 -Cg EP +(gument for the)-.18 F F1144 672 Q F0 1.173(option to the)3.673 F +F1(set)3.673 E F0 -.2(bu)3.673 G 1.173(iltin command \(see).2 F F2 1.174 +(SHELL B)3.674 F(UIL)-.09 E 1.174(TIN COMMANDS)-.828 F F0(belo)3.424 E +3.674(w\). The)-.25 F(options)3.674 E .02(appearing in)144 684 R F2 +(SHELLOPTS)2.52 E F0 .019(are those reported as)2.27 F F3(on)2.749 E F0 +(by)2.759 E F1 .019(set \255o)2.519 F F0 5.019(.I)C 2.519(ft)-5.019 G +.019(his v)-2.519 F .019(ariable is in the en)-.25 F(vironment)-.4 E +(when)144 696 Q F1(bash)3.141 E F0 .642(starts up, each shell option in\ + the list will be enabled before reading an)3.141 F 3.142(ys)-.15 G .642 +(tartup \214les.)-3.142 F(This v)144 708 Q(ariable is read-only)-.25 E +(.)-.65 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G +(mber 16).15 E(13)185.545 E 0 Cg EP %%Page: 14 14 %%BeginPageSetup BP @@ -1855,116 +1872,117 @@ SF(SHL)108 84 Q(VL)-.92 E F0 (is started.)2.5 E F1(UID)108 108 Q F0 (Expands to the user ID of the current user)144 108 Q 2.5(,i)-.4 G (nitialized at shell startup.)-2.5 E(This v)5 E(ariable is readonly)-.25 -E(.)-.65 E .993(The follo)108 124.8 R .993(wing v)-.25 F .994 +E(.)-.65 E .994(The follo)108 124.8 R .994(wing v)-.25 F .994 (ariables are used by the shell.)-.25 F .994(In some cases,)5.994 F F1 -(bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .994 +(bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .993 (alue to a v)-.25 F(ariable;)-.25 E(these cases are noted belo)108 136.8 Q -.65(w.)-.25 G F1 -.3(BA)108 153.6 S(SH_COMP).3 E -.95(AT)-.74 G F0 -1.193(The v)144 165.6 R 1.193(alue is used to set the shell')-.25 F -3.693(sc)-.55 G 1.192(ompatibility le)-3.693 F -.15(ve)-.25 G 3.692 -(l. See).15 F 1.192(the description of the)3.692 F F1(shopt)3.692 E F0 --.2(bu)3.692 G(iltin).2 E(belo)144 177.6 Q 2.871(wu)-.25 G(nder)-2.871 E -F1 .371(SHELL B)2.871 F(UIL)-.1 E .371(TIN COMMANDS)-.92 F F0 .372 -(for a description of the v)2.872 F .372(arious compatibility le)-.25 F -(v-)-.25 E .361(els and their ef)144 189.6 R 2.861(fects. The)-.25 F --.25(va)2.861 G .361 -(lue may be a decimal number \(e.g., 4.2\) or an inte).25 F .36 -(ger \(e.g., 42\) corre-)-.15 F 1.75 +1.192(The v)144 165.6 R 1.192(alue is used to set the shell')-.25 F +3.692(sc)-.55 G 1.193(ompatibility le)-3.692 F -.15(ve)-.25 G 3.693 +(l. See).15 F 1.193(the description of the)3.693 F F1(shopt)3.693 E F0 +-.2(bu)3.693 G(iltin).2 E(belo)144 177.6 Q 2.872(wu)-.25 G(nder)-2.872 E +F1 .372(SHELL B)2.872 F(UIL)-.1 E .372(TIN COMMANDS)-.92 F F0 .372 +(for a description of the v)2.872 F .371(arious compatibility le)-.25 F +(v-)-.25 E .36(els and their ef)144 189.6 R 2.86(fects. The)-.25 F -.25 +(va)2.86 G .361(lue may be a decimal number \(e.g., 4.2\) or an inte).25 +F .361(ger \(e.g., 42\) corre-)-.15 F 1.751 (sponding to the desired compatibility le)144 201.6 R -.15(ve)-.25 G -4.251(l. If).15 F F1 -.3(BA)4.251 G(SH_COMP).3 E -.95(AT)-.74 G F0 1.751 +4.251(l. If).15 F F1 -.3(BA)4.251 G(SH_COMP).3 E -.95(AT)-.74 G F0 1.75 (is unset or set to the empty)5.201 F .578(string, the compatibility le) 144 213.6 R -.15(ve)-.25 G 3.078(li).15 G 3.078(ss)-3.078 G .578 (et to the def)-3.078 F .578(ault for the current v)-.1 F 3.078 (ersion. If)-.15 F F1 -.3(BA)3.078 G(SH_COMP).3 E -.95(AT)-.74 G F0(is) -4.028 E .248(set to a v)144 225.6 R .248(alue that is not one of the v) --.25 F .248(alid compatibility le)-.25 F -.15(ve)-.25 G .249 -(ls, the shell prints an error message and).15 F 1.12 -(sets the compatibility le)144 237.6 R -.15(ve)-.25 G 3.62(lt).15 G -3.619(ot)-3.62 G 1.119(he def)-3.619 F 1.119(ault for the current v)-.1 -F 3.619(ersion. The)-.15 F -.25(va)3.619 G 1.119(lid compatibility le) -.25 F -.15(ve)-.25 G(ls).15 E .575 +4.028 E .249(set to a v)144 225.6 R .249(alue that is not one of the v) +-.25 F .248(alid compatibility le)-.25 F -.15(ve)-.25 G .248 +(ls, the shell prints an error message and).15 F 1.119 +(sets the compatibility le)144 237.6 R -.15(ve)-.25 G 3.619(lt).15 G +3.619(ot)-3.619 G 1.119(he def)-3.619 F 1.119(ault for the current v)-.1 +F 3.62(ersion. The)-.15 F -.25(va)3.62 G 1.12(lid compatibility le).25 F +-.15(ve)-.25 G(ls).15 E .576 (correspond to the compatibility options accepted by the)144 249.6 R F1 -(shopt)3.075 E F0 -.2(bu)3.076 G .576(iltin described belo).2 F 3.076 -(w\()-.25 G .576(for e)-3.076 F(xam-)-.15 E(ple,)144 261.6 Q F1 +(shopt)3.075 E F0 -.2(bu)3.075 G .575(iltin described belo).2 F 3.075 +(w\()-.25 G .575(for e)-3.075 F(xam-)-.15 E(ple,)144 261.6 Q F1 (compat42)2.5 E F0(means that 4.2 and 42 are v)2.5 E(alid v)-.25 E 2.5 (alues\). The)-.25 F(current v)2.5 E(ersion is also a v)-.15 E(alid v) --.25 E(alue.)-.25 E F1 -.3(BA)108 273.6 S(SH_ENV).3 E F0 .506 -(If this parameter is set when)144 285.6 R F1(bash)3.006 E F0 .506(is e) -3.006 F -.15(xe)-.15 G .505(cuting a shell script, its v).15 F .505 -(alue is interpreted as a \214lename)-.25 F .354 +-.25 E(alue.)-.25 E F1 -.3(BA)108 273.6 S(SH_ENV).3 E F0 .505 +(If this parameter is set when)144 285.6 R F1(bash)3.005 E F0 .505(is e) +3.005 F -.15(xe)-.15 G .506(cuting a shell script, its v).15 F .506 +(alue is interpreted as a \214lename)-.25 F .355 (containing commands to initialize the shell, as in)144 297.6 R/F2 10 -/Times-Italic@0 SF(~/.bashr)2.855 E(c)-.37 E F0 5.355(.T).31 G .355 -(he v)-5.355 F .355(alue of)-.25 F/F3 9/Times-Bold@0 SF -.27(BA)2.855 G -(SH_ENV).27 E F0 .355(is subjected)2.605 F .525(to parameter e)144 309.6 +/Times-Italic@0 SF(~/.bashr)2.855 E(c)-.37 E F0 5.354(.T).31 G .354 +(he v)-5.354 F .354(alue of)-.25 F/F3 9/Times-Bold@0 SF -.27(BA)2.854 G +(SH_ENV).27 E F0 .354(is subjected)2.604 F .525(to parameter e)144 309.6 R .525(xpansion, command substitution, and arithmetic e)-.15 F .525 (xpansion before being interpreted)-.15 F(as a \214lename.)144 321.6 Q F3 -.666(PA)5 G(TH)-.189 E F0 (is not used to search for the resultant \214lename.)2.25 E F1 -.3(BA) -108 333.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .48(If set to an inte)144 345.6 -R .48(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25 F -(,)-.4 E F1(bash)2.981 E F0 .481(will write the trace output gener)2.981 -F(-)-.2 E 3.114(ated when)144 357.6 R/F4 10/Courier@0 SF 3.114(set -x) +108 333.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 345.6 +R .481(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25 +F(,)-.4 E F1(bash)2.98 E F0 .48(will write the trace output gener)2.98 F +(-)-.2 E 3.114(ated when)144 357.6 R/F4 10/Courier@0 SF 3.114(set -x) 5.614 F F0 3.114(is enabled to that \214le descriptor)5.614 F 8.114(.T) -.55 G 3.114(he \214le descriptor is closed when)-8.114 F F3 -.27(BA)144 369.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .138(is unset or assigned a ne) 2.388 F 2.638(wv)-.25 G 2.638(alue. Unsetting)-2.888 F F3 -.27(BA)2.638 G(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the \ empty string causes the trace output to be sent to the standard error) -144 381.6 R 7.53(.N)-.55 G 2.53(ote that setting)-7.53 F F3 -.27(BA)144 -393.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error \ -\214le descriptor\) and then unsetting it will result in the)2.99 F +144 381.6 R 7.531(.N)-.55 G 2.531(ote that setting)-7.531 F F3 -.27(BA) +144 393.6 S(SH_XTRA).27 E(CEFD)-.495 E F0 .74(to 2 \(the standard error\ + \214le descriptor\) and then unsetting it will result in the)2.991 F (standard error being closed.)144 405.6 Q F1(CDP)108 417.6 Q -.95(AT) --.74 G(H).95 E F0 1.248(The search path for the)144 429.6 R F1(cd)3.748 -E F0 3.748(command. This)3.748 F 1.247 -(is a colon-separated list of directories in which the)3.748 F 3.795 +-.74 G(H).95 E F0 1.247(The search path for the)144 429.6 R F1(cd)3.747 +E F0 3.747(command. This)3.747 F 1.248 +(is a colon-separated list of directories in which the)3.747 F 3.796 (shell looks for destination directories speci\214ed by the)144 441.6 R -F1(cd)6.295 E F0 6.296(command. A)6.296 F 3.796(sample v)6.296 F 3.796 +F1(cd)6.295 E F0 6.295(command. A)6.295 F 3.795(sample v)6.295 F 3.795 (alue is)-.25 F F4(".:~:/usr")144 453.6 Q F0(.)A F1(CHILD_MAX)108 465.6 Q F0 .997(Set the number of e)144 477.6 R .997(xited child status v)-.15 F .997(alues for the shell to remember)-.25 F 5.997(.B)-.55 G .997 -(ash will not allo)-5.997 F 3.497(wt)-.25 G(his)-3.497 E -.25(va)144 -489.6 S 1.077(lue to be decreased belo).25 F 3.577(waP)-.25 G 1.077 -(OSIX-mandated minimum, and there is a maximum v)-3.577 F 1.078 +(ash will not allo)-5.997 F 3.498(wt)-.25 G(his)-3.498 E -.25(va)144 +489.6 S 1.078(lue to be decreased belo).25 F 3.577(waP)-.25 G 1.077 +(OSIX-mandated minimum, and there is a maximum v)-3.577 F 1.077 (alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 501.6 Q 2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.)-.25 E -F1(COLUMNS)108 513.6 Q F0 .829(Used by the)144 525.6 R F1(select)3.329 E -F0 .828(compound command to determine the terminal width when printing \ -selection)3.329 F 4.506(lists. Automatically)144 537.6 R 2.006 -(set if the)4.506 F F1(checkwinsize)4.506 E F0 2.007 -(option is enabled or in an interacti)4.506 F 2.307 -.15(ve s)-.25 H -2.007(hell upon).15 F(receipt of a)144 549.6 Q F3(SIGWINCH)2.5 E/F5 9 -/Times-Roman@0 SF(.)A F1(COMPREPL)108 561.6 Q(Y)-.92 E F0 .848 +F1(COLUMNS)108 513.6 Q F0 .828(Used by the)144 525.6 R F1(select)3.328 E +F0 .829(compound command to determine the terminal width when printing \ +selection)3.328 F 4.507(lists. Automatically)144 537.6 R 2.007 +(set if the)4.507 F F1(checkwinsize)4.507 E F0 2.006 +(option is enabled or in an interacti)4.507 F 2.306 -.15(ve s)-.25 H +2.006(hell upon).15 F(receipt of a)144 549.6 Q F3(SIGWINCH)2.5 E/F5 9 +/Times-Roman@0 SF(.)A F1(COMPREPL)108 561.6 Q(Y)-.92 E F0 .847 (An array v)144 573.6 R .848(ariable from which)-.25 F F1(bash)3.348 E F0 .848(reads the possible completions generated by a shell function) 3.348 F(in)144 585.6 Q -.2(vo)-.4 G -.1(ke).2 G 2.785(db).1 G 2.785(yt) -2.785 G .285(he programmable completion f)-2.785 F .285(acility \(see) -.1 F F1(Pr)2.785 E .285(ogrammable Completion)-.18 F F0(belo)2.785 E 2.785(w\). Each)-.25 F(array element contains one possible completion.) -144 597.6 Q F1(EMA)108 609.6 Q(CS)-.55 E F0(If)144 621.6 Q F1(bash)2.536 -E F0 .036(\214nds this v)2.536 F .036(ariable in the en)-.25 F .036 -(vironment when the shell starts with v)-.4 F(alue)-.25 E F4(t)2.535 E -F0 2.535(,i)C 2.535(ta)-2.535 G .035(ssumes that the)-2.535 F +144 597.6 Q F1(EMA)108 609.6 Q(CS)-.55 E F0(If)144 621.6 Q F1(bash)2.535 +E F0 .035(\214nds this v)2.535 F .035(ariable in the en)-.25 F .036 +(vironment when the shell starts with v)-.4 F(alue)-.25 E F4(t)2.536 E +F0 2.536(,i)C 2.536(ta)-2.536 G .036(ssumes that the)-2.536 F (shell is running in an Emacs shell b)144 633.6 Q(uf)-.2 E (fer and disables line editing.)-.25 E F1(ENV)108 645.6 Q F0(Similar to) 144 645.6 Q F3 -.27(BA)2.5 G(SH_ENV).27 E F5(;)A F0 (used when the shell is in)2.25 E -.2(vo)-.4 G -.1(ke).2 G 2.5(di).1 G -2.5(nP)-2.5 G(OSIX mode.)-2.5 E F1(EXECIGNORE)108 657.6 Q F0 3.239(Ac) -144 669.6 S .739(olon-separated list of e)-3.239 F .739 -(xtended glob patterns \(see)-.15 F F1 -.1(Pa)3.239 G(tter).1 E 3.239 -(nM)-.15 G(atching)-3.239 E F0 3.239(\)d)C .74 -(e\214ning the list of \214le-)-3.239 F .275 -(names to be ignored by command search.)144 681.6 R .274 -(Files whose full pathnames match one of these patterns)5.275 F .62 -(are not considered e)144 693.6 R -.15(xe)-.15 G .62 +2.5(nP)-2.5 G(OSIX mode.)-2.5 E F1(EXECIGNORE)108 657.6 Q F0 2.717(Ac) +144 669.6 S .217(olon-separated list of shell patterns \(see)-2.717 F F1 +-.1(Pa)2.717 G(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C +.216(e\214ning the list of \214lenames to be)-2.717 F .275 +(ignored by command search.)144 681.6 R .275 +(Files whose full pathnames match one of these patterns are not con-) +5.275 F 1.26(sidered e)144 693.6 R -.15(xe)-.15 G 1.26 (cutable \214les for the purposes of completion and command e).15 F -.15 -(xe)-.15 G 3.12(cution. This).15 F 1.07(does not af)144 705.6 R 1.07 -(fect the beha)-.25 F 1.07(vior of the)-.2 F F1([)3.57 E F0(,)A F1(test) -3.569 E F0 3.569(,a)C(nd)-3.569 E F1([[)3.569 E F0 3.569(commands. Use) -3.569 F 1.069(this v)3.569 F 1.069(ariable to ignore shared)-.25 F -(library \214les that ha)144 717.6 Q .3 -.15(ve t)-.2 H(he e).15 E -.15 -(xe)-.15 G(cutable bit set, b).15 E(ut are not e)-.2 E -.15(xe)-.15 G -(cutable \214les.).15 E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E -(14)190.395 E 0 Cg EP +(xe)-.15 G 3.76(cution. This).15 F 1.26(does not)3.76 F(af)144 705.6 Q +.35(fect the beha)-.25 F .35(vior of the)-.2 F F1([)2.85 E F0(,)A F1 +(test)2.85 E F0 2.85(,a)C(nd)-2.85 E F1([[)2.851 E F0 2.851 +(commands. Use)2.851 F .351(this v)2.851 F .351 +(ariable to ignore shared library \214les)-.25 F .469(that ha)144 717.6 +R .769 -.15(ve t)-.2 H .469(he e).15 F -.15(xe)-.15 G .469 +(cutable bit set, b).15 F .469(ut are not e)-.2 F -.15(xe)-.15 G .469 +(cutable \214les.).15 F .468(The pattern matching honors the set-)5.469 +F(ting of the)144 729.6 Q F1(extglob)2.5 E F0(shell option.)2.5 E +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(14)185.545 E 0 Cg EP %%Page: 15 15 %%BeginPageSetup BP @@ -2059,7158 +2077,7206 @@ F1(&)A F0(')A 2.515(matches the pre)144 540 R 2.515(vious history line.) (ay be escaped using a backslash; the backslash is)-5.014 F(remo)144 552 Q -.15(ve)-.15 G 3.352(db).15 G .852(efore attempting a match.)-3.352 F .852(The second and subsequent lines of a multi-line compound)5.852 F -(command are not tested, and are added to the history re)144 564 Q -.05 -(ga)-.15 G(rdless of the v).05 E(alue of)-.25 E F2(HISTIGNORE)2.5 E F4 -(.)A F1(HISTSIZE)108 576 Q F0 1.387 -(The number of commands to remember in the command history \(see)144 588 +1.269(command are not tested, and are added to the history re)144 564 R +-.05(ga)-.15 G 1.269(rdless of the v).05 F 1.269(alue of)-.25 F F2 +(HISTIGNORE)3.769 E F4(.)A F0 +(The pattern matching honors the setting of the)144 576 Q F1(extglob)2.5 +E F0(shell option.)2.5 E F1(HISTSIZE)108 588 Q F0 1.387 +(The number of commands to remember in the command history \(see)144 600 R F2(HIST)3.887 E(OR)-.162 E(Y)-.315 E F0(belo)3.637 E 3.887(w\). If) --.25 F(the)3.887 E -.25(va)144 600 S 1.32(lue is 0, commands are not sa) -.25 F -.15(ve)-.2 G 3.82(di).15 G 3.821(nt)-3.82 G 1.321 -(he history list.)-3.821 F 1.321(Numeric v)6.321 F 1.321 -(alues less than zero result in)-.25 F -2.15 -.25(ev e)144 612 T .437 -(ry command being sa).25 F -.15(ve)-.2 G 2.937(do).15 G 2.937(nt)-2.937 -G .437(he history list \(there is no limit\).)-2.937 F .436 -(The shell sets the def)5.436 F .436(ault v)-.1 F(alue)-.25 E -(to 500 after reading an)144 624 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E -F1(HISTTIMEFORMA)108 636 Q(T)-.95 E F0 .951(If this v)144 648 R .951 -(ariable is set and not null, its v)-.25 F .952 -(alue is used as a format string for)-.25 F F5(strftime)3.452 E F0 .952 -(\(3\) to print the)B .673 -(time stamp associated with each history entry displayed by the)144 660 -R F1(history)3.173 E F0 -.2(bu)3.172 G 3.172(iltin. If).2 F .672(this v) -3.172 F .672(ariable is)-.25 F .144 -(set, time stamps are written to the history \214le so the)144 672 R +-.25 F(the)3.888 E -.25(va)144 612 S 1.321 +(lue is 0, commands are not sa).25 F -.15(ve)-.2 G 3.821(di).15 G 3.821 +(nt)-3.821 G 1.321(he history list.)-3.821 F 1.32(Numeric v)6.32 F 1.32 +(alues less than zero result in)-.25 F -2.15 -.25(ev e)144 624 T .436 +(ry command being sa).25 F -.15(ve)-.2 G 2.936(do).15 G 2.936(nt)-2.936 +G .436(he history list \(there is no limit\).)-2.936 F .437 +(The shell sets the def)5.437 F .437(ault v)-.1 F(alue)-.25 E +(to 500 after reading an)144 636 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E +F1(HISTTIMEFORMA)108 648 Q(T)-.95 E F0 .952(If this v)144 660 R .952 +(ariable is set and not null, its v)-.25 F .951 +(alue is used as a format string for)-.25 F F5(strftime)3.451 E F0 .951 +(\(3\) to print the)B .672 +(time stamp associated with each history entry displayed by the)144 672 +R F1(history)3.173 E F0 -.2(bu)3.173 G 3.173(iltin. If).2 F .673(this v) +3.173 F .673(ariable is)-.25 F .144 +(set, time stamps are written to the history \214le so the)144 684 R 2.644(ym)-.15 G .144(ay be preserv)-2.644 F .144 -(ed across shell sessions.)-.15 F(This)5.145 E(uses the history comment\ - character to distinguish timestamps from other history lines.)144 684 Q -F1(HOME)108 696 Q F0 1.27 -(The home directory of the current user; the def)144 708 R 1.27(ault ar) --.1 F 1.27(gument for the)-.18 F F1(cd)3.77 E F0 -.2(bu)3.77 G 1.27 -(iltin command.).2 F(The)6.27 E -.25(va)144 720 S(lue of this v).25 E -(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E -(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(15)190.395 E 0 Cg EP +(ed across shell sessions.)-.15 F(This)5.144 E(uses the history comment\ + character to distinguish timestamps from other history lines.)144 696 Q +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(15)185.545 E 0 Cg EP %%Page: 16 16 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(HOSTFILE)108 84 Q F0 1.015 -(Contains the name of a \214le in the same format as)144 96 R/F2 10 +SF(HOME)108 84 Q F0 1.27 +(The home directory of the current user; the def)144 96 R 1.27(ault ar) +-.1 F 1.27(gument for the)-.18 F F1(cd)3.77 E F0 -.2(bu)3.77 G 1.27 +(iltin command.).2 F(The)6.27 E -.25(va)144 108 S(lue of this v).25 E +(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F1 +(HOSTFILE)108 120 Q F0 1.015 +(Contains the name of a \214le in the same format as)144 132 R/F2 10 /Times-Italic@0 SF(/etc/hosts)5.181 E F0 1.015 -(that should be read when the shell)5.181 F .551 -(needs to complete a hostname.)144 108 R .551 +(that should be read when the shell)5.181 F .55 +(needs to complete a hostname.)144 144 R .551 (The list of possible hostname completions may be changed while)5.551 F -1.058(the shell is running; the ne)144 120 R 1.059 -(xt time hostname completion is attempted after the v)-.15 F 1.059 -(alue is changed,)-.25 F F1(bash)144 132 Q F0 .138 -(adds the contents of the ne)2.639 F 2.638<778c>-.25 G .138(le to the e) +1.059(the shell is running; the ne)144 156 R 1.059 +(xt time hostname completion is attempted after the v)-.15 F 1.058 +(alue is changed,)-.25 F F1(bash)144 168 Q F0 .138 +(adds the contents of the ne)2.638 F 2.638<778c>-.25 G .138(le to the e) -2.638 F .138(xisting list.)-.15 F(If)5.138 E/F3 9/Times-Bold@0 SF -(HOSTFILE)2.638 E F0 .138(is set, b)2.388 F .138(ut has no v)-.2 F .138 -(alue, or)-.25 F .517(does not name a readable \214le,)144 144 R F1 -(bash)3.017 E F0 .517(attempts to read)3.017 F F2(/etc/hosts)4.684 E F0 -.518(to obtain the list of possible host-)4.684 F(name completions.)144 -156 Q(When)5 E F3(HOSTFILE)2.5 E F0 -(is unset, the hostname list is cleared.)2.25 E F1(IFS)108 168 Q F0(The) -144 168 Q F2 .556(Internal F)3.636 F .556(ield Separ)-.45 F(ator)-.15 E -F0 .556(that is used for w)3.786 F .556(ord splitting after e)-.1 F .555 -(xpansion and to split lines into)-.15 F -.1(wo)144 180 S(rds with the) +(HOSTFILE)2.638 E F0 .138(is set, b)2.388 F .139(ut has no v)-.2 F .139 +(alue, or)-.25 F .518(does not name a readable \214le,)144 180 R F1 +(bash)3.018 E F0 .518(attempts to read)3.018 F F2(/etc/hosts)4.683 E F0 +.517(to obtain the list of possible host-)4.683 F(name completions.)144 +192 Q(When)5 E F3(HOSTFILE)2.5 E F0 +(is unset, the hostname list is cleared.)2.25 E F1(IFS)108 204 Q F0(The) +144 204 Q F2 .555(Internal F)3.635 F .555(ield Separ)-.45 F(ator)-.15 E +F0 .555(that is used for w)3.785 F .556(ord splitting after e)-.1 F .556 +(xpansion and to split lines into)-.15 F -.1(wo)144 216 S(rds with the) .1 E F1 -.18(re)2.5 G(ad).18 E F0 -.2(bu)2.5 G(iltin command.).2 E (The def)5 E(ault v)-.1 E(alue is `)-.25 E(`')-.25 E('.)-.74 E F1(IGNOREEOF)108 192 Q F0 .503 -(Controls the action of an interacti)144 204 R .803 -.15(ve s)-.25 H +(wline>')-.25 E('.)-.74 E F1(IGNOREEOF)108 228 Q F0 .503 +(Controls the action of an interacti)144 240 R .803 -.15(ve s)-.25 H .503(hell on receipt of an).15 F F3(EOF)3.003 E F0 .503 -(character as the sole input.)2.753 F .504(If set,)5.504 F .426(the v) -144 216 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F3 +(character as the sole input.)2.753 F .503(If set,)5.503 F .426(the v) +144 252 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F3 (EOF)3.076 E F0 .426 -(characters which must be typed as the \214rst characters)2.676 F .302 -(on an input line before)144 228 R F1(bash)2.802 E F0 -.15(ex)2.802 G +(characters which must be typed as the \214rst characters)2.676 F .303 +(on an input line before)144 264 R F1(bash)2.802 E F0 -.15(ex)2.802 G 2.802(its. If).15 F .302(the v)2.802 F .302(ariable e)-.25 F .302 (xists b)-.15 F .302(ut does not ha)-.2 F .602 -.15(ve a n)-.2 H .302 -(umeric v).15 F .303(alue, or has)-.25 F(no v)144 240 Q(alue, the def) +(umeric v).15 F .302(alue, or has)-.25 F(no v)144 276 Q(alue, the def) -.25 E(ault v)-.1 E(alue is 10.)-.25 E(If it does not e)5 E(xist,)-.15 E F3(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F1 -(INPUTRC)108 252 Q F0 1.436(The \214lename for the)144 264 R F1 -.18(re) +(INPUTRC)108 288 Q F0 1.435(The \214lename for the)144 300 R F1 -.18(re) 3.936 G(adline).18 E F0 1.436(startup \214le, o)3.936 F -.15(ve)-.15 G 1.436(rriding the def).15 F 1.436(ault of)-.1 F F2(~/.inputr)5.602 E(c) --.37 E F0(\(see)5.601 E F3(READLINE)3.935 E F0(belo)144 276 Q(w\).)-.25 -E F1(LANG)108 288 Q F0 1.239(Used to determine the locale cate)144 288 R -1.239(gory for an)-.15 F 3.739(yc)-.15 G(ate)-3.739 E 1.24 +-.37 E F0(\(see)5.602 E F3(READLINE)3.936 E F0(belo)144 312 Q(w\).)-.25 +E F1(LANG)108 324 Q F0 1.24(Used to determine the locale cate)144 324 R +1.239(gory for an)-.15 F 3.739(yc)-.15 G(ate)-3.739 E 1.239 (gory not speci\214cally selected with a v)-.15 F(ariable)-.25 E -(starting with)144 300 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 312 Q F0 .974 -(This v)144 324 R .974(ariable o)-.25 F -.15(ve)-.15 G .974 +(starting with)144 336 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 348 Q F0 .973 +(This v)144 360 R .973(ariable o)-.25 F -.15(ve)-.15 G .973 (rrides the v).15 F .973(alue of)-.25 F F3(LANG)3.473 E F0 .973(and an) 3.223 F 3.473(yo)-.15 G(ther)-3.473 E F1(LC_)3.473 E F0 -.25(va)3.473 G -.973(riable specifying a locale cate-).25 F(gory)144 336 Q(.)-.65 E F1 -(LC_COLLA)108 348 Q(TE)-.95 E F0 .411(This v)144 360 R .412(ariable det\ +.974(riable specifying a locale cate-).25 F(gory)144 372 Q(.)-.65 E F1 +(LC_COLLA)108 384 Q(TE)-.95 E F0 .412(This v)144 396 R .412(ariable det\ ermines the collation order used when sorting the results of pathname e) --.25 F(xpansion,)-.15 E 1.465(and determines the beha)144 372 R 1.465 -(vior of range e)-.2 F 1.464(xpressions, equi)-.15 F -.25(va)-.25 G -1.464(lence classes, and collating sequences).25 F(within pathname e)144 -384 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 396 Q F0 -1.935(This v)144 408 R 1.936 +-.25 F(xpansion,)-.15 E 1.464(and determines the beha)144 408 R 1.464 +(vior of range e)-.2 F 1.465(xpressions, equi)-.15 F -.25(va)-.25 G +1.465(lence classes, and collating sequences).25 F(within pathname e)144 +420 Q(xpansion and pattern matching.)-.15 E F1(LC_CTYPE)108 432 Q F0 +1.936(This v)144 444 R 1.936 (ariable determines the interpretation of characters and the beha)-.25 F -1.936(vior of character classes)-.2 F(within pathname e)144 420 Q -(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 432 Q(GES)-.55 E -F0(This v)144 444 Q(ariable determines the locale used to translate dou\ +1.935(vior of character classes)-.2 F(within pathname e)144 456 Q +(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 468 Q(GES)-.55 E +F0(This v)144 480 Q(ariable determines the locale used to translate dou\ ble-quoted strings preceded by a)-.25 E F1($)2.5 E F0(.)A F1(LC_NUMERIC) -108 456 Q F0(This v)144 468 Q(ariable determines the locale cate)-.25 E -(gory used for number formatting.)-.15 E F1(LC_TIME)108 480 Q F0(This v) -144 492 Q(ariable determines the locale cate)-.25 E -(gory used for data and time formatting.)-.15 E F1(LINES)108 504 Q F0 -.055(Used by the)144 504 R F1(select)2.555 E F0 .054(compound command t\ -o determine the column length for printing selection lists.)2.555 F .264 -(Automatically set if the)144 516 R F1(checkwinsize)2.764 E F0 .264 -(option is enabled or in an interacti)2.764 F .565 -.15(ve s)-.25 H .265 -(hell upon receipt of a).15 F F3(SIGWINCH)144 528 Q/F4 9/Times-Roman@0 -SF(.)A F1(MAIL)108 540 Q F0 1.201 -(If this parameter is set to a \214le or directory name and the)144 540 -R F3(MAILP)3.701 E -.855(AT)-.666 G(H).855 E F0 -.25(va)3.451 G 1.201 -(riable is not set,).25 F F1(bash)3.701 E F0 -(informs the user of the arri)144 552 Q -.25(va)-.25 G 2.5(lo).25 G 2.5 +108 492 Q F0(This v)144 504 Q(ariable determines the locale cate)-.25 E +(gory used for number formatting.)-.15 E F1(LC_TIME)108 516 Q F0(This v) +144 528 Q(ariable determines the locale cate)-.25 E +(gory used for data and time formatting.)-.15 E F1(LINES)108 540 Q F0 +.054(Used by the)144 540 R F1(select)2.554 E F0 .054(compound command t\ +o determine the column length for printing selection lists.)2.554 F .265 +(Automatically set if the)144 552 R F1(checkwinsize)2.765 E F0 .264 +(option is enabled or in an interacti)2.765 F .564 -.15(ve s)-.25 H .264 +(hell upon receipt of a).15 F F3(SIGWINCH)144 564 Q/F4 9/Times-Roman@0 +SF(.)A F1(MAIL)108 576 Q F0 1.201 +(If this parameter is set to a \214le or directory name and the)144 576 +R F3(MAILP)3.701 E -.855(AT)-.666 G(H).855 E F0 -.25(va)3.451 G 1.202 +(riable is not set,).25 F F1(bash)3.702 E F0 +(informs the user of the arri)144 588 Q -.25(va)-.25 G 2.5(lo).25 G 2.5 (fm)-2.5 G(ail in the speci\214ed \214le or Maildir)-2.5 E -(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 564 Q F0 .098 -(Speci\214es ho)144 576 R 2.598(wo)-.25 G .098(ften \(in seconds\)) --2.598 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def) -5.098 F .098(ault is 60 seconds.)-.1 F .099(When it is time)5.099 F .224 +(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 600 Q F0 .099 +(Speci\214es ho)144 612 R 2.599(wo)-.25 G .099(ften \(in seconds\)) +-2.599 F F1(bash)2.598 E F0 .098(checks for mail.)2.598 F .098(The def) +5.098 F .098(ault is 60 seconds.)-.1 F .098(When it is time)5.098 F .223 (to check for mail, the shell does so before displaying the primary pro\ -mpt.)144 588 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F -(or set to a v)144 600 Q(alue that is not a number greater than or equa\ -l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 612 Q --.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 624 S .49 +mpt.)144 624 R .224(If this v)5.224 F .224(ariable is unset,)-.25 F +(or set to a v)144 636 Q(alue that is not a number greater than or equa\ +l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 648 Q +-.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 660 S .49 (olon-separated list of \214lenames to be check)-2.99 F .49 (ed for mail.)-.1 F .49(The message to be printed when mail)5.49 F(arri) -144 636 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \ +144 672 Q -.15(ve)-.25 G 2.62(si).15 G 2.62(nap)-2.62 G .12(articular \ \214le may be speci\214ed by separating the \214lename from the message\ - with a `?'.)-2.62 F(When used in the te)144 648 Q(xt of the message,) + with a `?'.)-2.62 F(When used in the te)144 684 Q(xt of the message,) -.15 E F1($_)2.5 E F0 -.15(ex)2.5 G (pands to the name of the current mail\214le.).15 E(Example:)5 E F1 -(MAILP)144 660 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y) +(MAILP)144 696 Q -.95(AT)-.74 G(H).95 E F0(=\010/v)A(ar/mail/bfox?"Y) -.25 E(ou ha)-1.1 E .3 -.15(ve m)-.2 H -(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 672 Q F0 .388 -(supplies a def)2.888 F .388(ault v)-.1 F .388(alue for this v)-.25 F -.388(ariable, b)-.25 F .389 +(ail":~/shell\255mail?"$_ has mail!"\010).15 E F1(Bash)144 708 Q F0 .389 +(supplies a def)2.889 F .389(ault v)-.1 F .389(alue for this v)-.25 F +.389(ariable, b)-.25 F .388 (ut the location of the user mail \214les that it uses is)-.2 F -(system dependent \(e.g., /v)144 684 Q(ar/mail/)-.25 E F1($USER)A F0 -(\).)A F1(OPTERR)108 696 Q F0 .39(If set to the v)144 708 R .39(alue 1,) --.25 F F1(bash)2.89 E F0 .389(displays error messages generated by the) -2.889 F F1(getopts)2.889 E F0 -.2(bu)2.889 G .389(iltin command \(see).2 -F F3 .359(SHELL B)144 720 R(UIL)-.09 E .359(TIN COMMANDS)-.828 F F0 -(belo)2.609 E(w\).)-.25 E F3(OPTERR)5.359 E F0 .36 -(is initialized to 1 each time the shell is in)2.609 F -.2(vo)-.4 G -.1 -(ke).2 G(d).1 E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(16) -190.395 E 0 Cg EP +(system dependent \(e.g., /v)144 720 Q(ar/mail/)-.25 E F1($USER)A F0 +(\).)A(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16) +.15 E(16)185.545 E 0 Cg EP %%Page: 17 17 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(or a shell script is e)144 84 Q -.15(xe)-.15 G(cuted.).15 E/F1 10 -/Times-Bold@0 SF -.74(PA)108 96 S(TH)-.21 E F0 .588 -(The search path for commands.)144 96 R .587 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(OPTERR)108 84 Q F0 .389(If set to the v)144 96 R .389(alue 1,)-.25 F +F1(bash)2.889 E F0 .389(displays error messages generated by the)2.889 F +F1(getopts)2.89 E F0 -.2(bu)2.89 G .39(iltin command \(see).2 F/F2 9 +/Times-Bold@0 SF .36(SHELL B)144 108 R(UIL)-.09 E .36(TIN COMMANDS)-.828 +F F0(belo)2.61 E(w\).)-.25 E F2(OPTERR)5.36 E F0 .359 +(is initialized to 1 each time the shell is in)2.61 F -.2(vo)-.4 G -.1 +(ke).2 G(d).1 E(or a shell script is e)144 120 Q -.15(xe)-.15 G(cuted.) +.15 E F1 -.74(PA)108 132 S(TH)-.21 E F0 .587 +(The search path for commands.)144 132 R .588 (It is a colon-separated list of directories in which the shell looks) -5.588 F .471(for commands \(see)144 108 R/F2 9/Times-Bold@0 SF .471 -(COMMAND EXECUTION)2.971 F F0(belo)2.722 E 2.972(w\). A)-.25 F .472 -(zero-length \(null\) directory name in the)2.972 F -.25(va)144 120 S -.536(lue of).25 F F2 -.666(PA)3.036 G(TH)-.189 E F0 .535 -(indicates the current directory)2.786 F 5.535(.A)-.65 G .535 -(null directory name may appear as tw)-2.5 F 3.035(oa)-.1 G(djacent) --3.035 E .867(colons, or as an initial or trailing colon.)144 132 R .868 -(The def)5.868 F .868(ault path is system-dependent, and is set by the) --.1 F 26.329(administrator who installs)144 144 R F1(bash)28.829 E F0 -31.329(.A)C 26.328(common v)-2.501 F 26.328(alue is)-.25 F/F3 10 -/Courier@0 SF -(/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)144 156 Q -F0(.)A F1(POSIXL)108 168 Q(Y_CORRECT)-.92 E F0 .471(If this v)144 180 R -.471(ariable is in the en)-.25 F .471(vironment when)-.4 F F1(bash)2.971 -E F0 .471(starts, the shell enters)2.971 F/F4 10/Times-Italic@0 SF .472 -(posix mode)2.972 F F0 .472(before reading)2.972 F .011 -(the startup \214les, as if the)144 192 R F1(\255\255posix)2.511 E F0 +5.587 F .472(for commands \(see)144 144 R F2 .472(COMMAND EXECUTION) +2.972 F F0(belo)2.722 E 2.972(w\). A)-.25 F .471 +(zero-length \(null\) directory name in the)2.972 F -.25(va)144 156 S +.535(lue of).25 F F2 -.666(PA)3.035 G(TH)-.189 E F0 .535 +(indicates the current directory)2.785 F 5.535(.A)-.65 G .535 +(null directory name may appear as tw)-2.5 F 3.036(oa)-.1 G(djacent) +-3.036 E .868(colons, or as an initial or trailing colon.)144 168 R .868 +(The def)5.868 F .867(ault path is system-dependent, and is set by the) +-.1 F 26.328(administrator who installs)144 180 R F1(bash)28.828 E F0 +31.329(.A)C 26.329(common v)-2.5 F 26.329(alue is)-.25 F/F3 10/Courier@0 +SF(/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin)144 192 +Q F0(.)A F1(POSIXL)108 204 Q(Y_CORRECT)-.92 E F0 .472(If this v)144 216 +R .472(ariable is in the en)-.25 F .471(vironment when)-.4 F F1(bash) +2.971 E F0 .471(starts, the shell enters)2.971 F/F4 10/Times-Italic@0 SF +.471(posix mode)2.971 F F0 .471(before reading)2.971 F .011 +(the startup \214les, as if the)144 228 R F1(\255\255posix)2.511 E F0 (in)2.511 E -.2(vo)-.4 G .011(cation option had been supplied.).2 F .011 -(If it is set while the shell is)5.011 F(running,)144 204 Q F1(bash)2.5 +(If it is set while the shell is)5.011 F(running,)144 240 Q F1(bash)2.5 E F0(enables)2.5 E F4(posix mode)2.5 E F0 2.5(,a)C 2.5(si)-2.5 G 2.5(ft) -2.5 G(he command)-2.5 E F3(set -o posix)2.5 E F0(had been e)2.5 E -.15 -(xe)-.15 G(cuted.).15 E F1(PR)108 216 Q(OMPT_COMMAND)-.3 E F0 -(If set, the v)144 228 Q(alue is e)-.25 E -.15(xe)-.15 G +(xe)-.15 G(cuted.).15 E F1(PR)108 252 Q(OMPT_COMMAND)-.3 E F0 +(If set, the v)144 264 Q(alue is e)-.25 E -.15(xe)-.15 G (cuted as a command prior to issuing each primary prompt.).15 E F1(PR) -108 240 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676 -(If set to a number greater than zero, the v)144 252 R .676 +108 276 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676 +(If set to a number greater than zero, the v)144 288 R .676 (alue is used as the number of trailing directory compo-)-.25 F .923 -(nents to retain when e)144 264 R .923(xpanding the)-.15 F F1(\\w)3.423 +(nents to retain when e)144 300 R .923(xpanding the)-.15 F F1(\\w)3.423 E F0(and)3.423 E F1(\\W)3.423 E F0 .923(prompt string escapes \(see) 3.423 F F2(PR)3.423 E(OMPTING)-.27 E F0(belo)3.173 E(w\).)-.25 E -(Characters remo)144 276 Q -.15(ve)-.15 G 2.5(da).15 G -(re replaced with an ellipsis.)-2.5 E F1(PS1)108 288 Q F0 .064(The v)144 -288 R .065(alue of this parameter is e)-.25 F .065(xpanded \(see)-.15 F -F2(PR)2.565 E(OMPTING)-.27 E F0(belo)2.315 E .065 -(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 300 R +(Characters remo)144 312 Q -.15(ve)-.15 G 2.5(da).15 G +(re replaced with an ellipsis.)-2.5 E F1(PS0)108 324 Q F0 1.174(The v) +144 324 R 1.174(alue of this parameter is e)-.25 F 1.174(xpanded \(see) +-.15 F F2(PR)3.674 E(OMPTING)-.27 E F0(belo)3.424 E 1.174 +(w\) and displayed by interacti)-.25 F -.15(ve)-.25 G +(shells after reading a command and before the command is e)144 336 Q +-.15(xe)-.15 G(cuted.).15 E F1(PS1)108 348 Q F0 .064(The v)144 348 R +.065(alue of this parameter is e)-.25 F .065(xpanded \(see)-.15 F F2(PR) +2.565 E(OMPTING)-.27 E F0(belo)2.315 E .065 +(w\) and used as the primary prompt)-.25 F 2.5(string. The)144 360 R (def)2.5 E(ault v)-.1 E(alue is `)-.25 E(`)-.74 E F1(\\s\255\\v\\$)A F0 --.74('')2.5 G(.).74 E F1(PS2)108 312 Q F0 .118(The v)144 312 R .118 +-.74('')2.5 G(.).74 E F1(PS2)108 372 Q F0 .118(The v)144 372 R .118 (alue of this parameter is e)-.25 F .118(xpanded as with)-.15 F F2(PS1) 2.617 E F0 .117(and used as the secondary prompt string.)2.367 F(The) -5.117 E(def)144 324 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G -(.).74 E F1(PS3)108 336 Q F0 1.115(The v)144 336 R 1.115 +5.117 E(def)144 384 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G +(.).74 E F1(PS3)108 396 Q F0 1.115(The v)144 396 R 1.115 (alue of this parameter is used as the prompt for the)-.25 F F1(select) 3.615 E F0 1.116(command \(see)3.616 F F2 1.116(SHELL GRAM-)3.616 F(MAR) -144 348 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 360 Q F0 -.101(The v)144 360 R .101(alue of this parameter is e)-.25 F .101 +144 408 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 420 Q F0 +.101(The v)144 420 R .101(alue of this parameter is e)-.25 F .101 (xpanded as with)-.15 F F2(PS1)2.6 E F0 .1(and the v)2.35 F .1 -(alue is printed before each command)-.25 F F1(bash)144 372 Q F0 .291 +(alue is printed before each command)-.25 F F1(bash)144 432 Q F0 .291 (displays during an e)2.791 F -.15(xe)-.15 G .292(cution trace.).15 F .292(The \214rst character of)5.292 F F2(PS4)2.792 E F0 .292 -(is replicated multiple times, as)2.542 F(necessary)144 384 Q 2.5(,t) +(is replicated multiple times, as)2.542 F(necessary)144 444 Q 2.5(,t) -.65 G 2.5(oi)-2.5 G(ndicate multiple le)-2.5 E -.15(ve)-.25 G (ls of indirection.).15 E(The def)5 E(ault is `)-.1 E(`)-.74 E F1(+)A F0 --.74('')2.5 G(.).74 E F1(SHELL)108 396 Q F0 .664 -(The full pathname to the shell is k)144 408 R .664(ept in this en)-.1 F +-.74('')2.5 G(.).74 E F1(SHELL)108 456 Q F0 .664 +(The full pathname to the shell is k)144 468 R .664(ept in this en)-.1 F .664(vironment v)-.4 F 3.164(ariable. If)-.25 F .663 -(it is not set when the shell)3.164 F(starts,)144 420 Q F1(bash)2.5 E F0 +(it is not set when the shell)3.164 F(starts,)144 480 Q F1(bash)2.5 E F0 (assigns to it the full pathname of the current user')2.5 E 2.5(sl)-.55 -G(ogin shell.)-2.5 E F1(TIMEFORMA)108 432 Q(T)-.95 E F0 .826(The v)144 -444 R .826 +G(ogin shell.)-2.5 E F1(TIMEFORMA)108 492 Q(T)-.95 E F0 .826(The v)144 +504 R .826 (alue of this parameter is used as a format string specifying ho)-.25 F 3.327(wt)-.25 G .827(he timing information for)-3.327 F .649 -(pipelines pre\214x)144 456 R .649(ed with the)-.15 F F1(time)3.149 E F0 +(pipelines pre\214x)144 516 R .649(ed with the)-.15 F F1(time)3.149 E F0 (reserv)3.149 E .649(ed w)-.15 F .648(ord should be displayed.)-.1 F (The)5.648 E F1(%)3.148 E F0 .648(character introduces)3.148 F .711 -(an escape sequence that is e)144 468 R .711(xpanded to a time v)-.15 F +(an escape sequence that is e)144 528 R .711(xpanded to a time v)-.15 F .712(alue or other information.)-.25 F .712(The escape sequences)5.712 F -(and their meanings are as follo)144 480 Q -(ws; the braces denote optional portions.)-.25 E F1(%%)144 498 Q F0 2.5 -(Al)194 498 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 510 Q F4(p)A F1 -(][l]R)A F0(The elapsed time in seconds.)194 510 Q F1(%[)144 522 Q F4(p) -A F1(][l]U)A F0(The number of CPU seconds spent in user mode.)194 522 Q -F1(%[)144 534 Q F4(p)A F1(][l]S)A F0 -(The number of CPU seconds spent in system mode.)194 534 Q F1(%P)144 546 -Q F0(The CPU percentage, computed as \(%U + %S\) / %R.)194 546 Q .87 -(The optional)144 562.8 R F4(p)3.37 E F0 .87(is a digit specifying the) +(and their meanings are as follo)144 540 Q +(ws; the braces denote optional portions.)-.25 E F1(%%)144 558 Q F0 2.5 +(Al)194 558 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 570 Q F4(p)A F1 +(][l]R)A F0(The elapsed time in seconds.)194 570 Q F1(%[)144 582 Q F4(p) +A F1(][l]U)A F0(The number of CPU seconds spent in user mode.)194 582 Q +F1(%[)144 594 Q F4(p)A F1(][l]S)A F0 +(The number of CPU seconds spent in system mode.)194 594 Q F1(%P)144 606 +Q F0(The CPU percentage, computed as \(%U + %S\) / %R.)194 606 Q .87 +(The optional)144 622.8 R F4(p)3.37 E F0 .87(is a digit specifying the) 3.37 F F4(pr)3.37 E(ecision)-.37 E F0 3.37(,t)C .87 (he number of fractional digits after a decimal)-3.37 F 2.525(point. A) -144 574.8 R -.25(va)2.525 G .025 +144 634.8 R -.25(va)2.525 G .025 (lue of 0 causes no decimal point or fraction to be output.).25 F .026 (At most three places after the)5.025 F .538 -(decimal point may be speci\214ed; v)144 586.8 R .538(alues of)-.25 F F4 +(decimal point may be speci\214ed; v)144 646.8 R .538(alues of)-.25 F F4 (p)3.038 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.537 E -F4(p)3.037 E F0 .537(is not speci\214ed,)3.037 F(the v)144 598.8 Q -(alue 3 is used.)-.25 E .667(The optional)144 615.6 R F1(l)3.167 E F0 +F4(p)3.037 E F0 .537(is not speci\214ed,)3.037 F(the v)144 658.8 Q +(alue 3 is used.)-.25 E .667(The optional)144 675.6 R F1(l)3.167 E F0 .668(speci\214es a longer format, including minutes, of the form)3.168 F F4(MM)3.168 E F0(m)A F4(SS)A F0(.)A F4(FF)A F0 3.168(s. The)B -.25(va) -3.168 G(lue).25 E(of)144 627.6 Q F4(p)2.5 E F0 +3.168 G(lue).25 E(of)144 687.6 Q F4(p)2.5 E F0 (determines whether or not the fraction is included.)2.5 E 13.365 -(If this v)144 644.4 R 13.365(ariable is not set,)-.25 F F1(bash)15.865 +(If this v)144 704.4 R 13.365(ariable is not set,)-.25 F F1(bash)15.865 E F0 13.364(acts as if it had the v)15.865 F(alue)-.25 E F1($\010\\nr) -144 656.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113 +144 716.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113 (.I)C 4.613(ft)-7.113 G 2.113(he v)-4.613 F 2.113 (alue is null, no timing information is dis-)-.25 F 2.5(played. A)144 -668.4 R(trailing ne)2.5 E -(wline is added when the format string is displayed.)-.25 E F1(TMOUT)108 -680.4 Q F0 .941(If set to a v)144 692.4 R .941(alue greater than zero,) --.25 F F2(TMOUT)3.441 E F0 .941(is treated as the def)3.191 F .941 -(ault timeout for the)-.1 F F1 -.18(re)3.441 G(ad).18 E F0 -.2(bu)3.441 -G(iltin.).2 E(The)144 704.4 Q F1(select)2.81 E F0 .31 -(command terminates if input does not arri)2.81 F .611 -.15(ve a)-.25 H -(fter).15 E F2(TMOUT)2.811 E F0 .311(seconds when input is com-)2.561 F -.886(ing from a terminal.)144 716.4 R .886(In an interacti)5.886 F 1.185 --.15(ve s)-.25 H .885(hell, the v).15 F .885 -(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 728.4 -S 1.05(it for a line of input after issuing the primary prompt.).1 F F1 -(Bash)6.05 E F0 1.05(terminates after w)3.55 F 1.05(aiting for that)-.1 -F(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(17)190.395 E 0 Cg EP +728.4 R(trailing ne)2.5 E +(wline is added when the format string is displayed.)-.25 E +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(17)185.545 E 0 Cg EP %%Page: 18 18 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(number of seconds if a complete line of input does not arri)144 84 Q --.15(ve)-.25 G(.).15 E/F1 10/Times-Bold@0 SF(TMPDIR)108 96 Q F0 .391 -(If set,)144 108 R F1(bash)2.891 E F0 .391(uses its v)2.891 F .391 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(TMOUT)108 84 Q F0 .941(If set to a v)144 96 R .941 +(alue greater than zero,)-.25 F/F2 9/Times-Bold@0 SF(TMOUT)3.441 E F0 +.941(is treated as the def)3.191 F .941(ault timeout for the)-.1 F F1 +-.18(re)3.441 G(ad).18 E F0 -.2(bu)3.441 G(iltin.).2 E(The)144 108 Q F1 +(select)2.81 E F0 .31(command terminates if input does not arri)2.81 F +.611 -.15(ve a)-.25 H(fter).15 E F2(TMOUT)2.811 E F0 .311 +(seconds when input is com-)2.561 F .886(ing from a terminal.)144 120 R +.886(In an interacti)5.886 F 1.185 -.15(ve s)-.25 H .885(hell, the v).15 +F .885(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 +132 S 1.05(it for a line of input after issuing the primary prompt.).1 F +F1(Bash)6.05 E F0 1.05(terminates after w)3.55 F 1.05(aiting for that) +-.1 F(number of seconds if a complete line of input does not arri)144 +144 Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 156 Q F0 .391(If set,)144 168 +R F1(bash)2.891 E F0 .391(uses its v)2.891 F .391 (alue as the name of a directory in which)-.25 F F1(bash)2.89 E F0 .39 -(creates temporary \214les for the)2.89 F(shell')144 120 Q 2.5(su)-.55 G -(se.)-2.5 E F1(auto_r)108 132 Q(esume)-.18 E F0 .53(This v)144 144 R .53 +(creates temporary \214les for the)2.89 F(shell')144 180 Q 2.5(su)-.55 G +(se.)-2.5 E F1(auto_r)108 192 Q(esume)-.18 E F0 .53(This v)144 204 R .53 (ariable controls ho)-.25 F 3.03(wt)-.25 G .531 (he shell interacts with the user and job control.)-3.03 F .531 -(If this v)5.531 F .531(ariable is set,)-.25 F .539(single w)144 156 R +(If this v)5.531 F .531(ariable is set,)-.25 F .539(single w)144 216 R .538(ord simple commands without redirections are treated as candidates\ - for resumption of an)-.1 F -.15(ex)144 168 S .366(isting stopped job) + for resumption of an)-.1 F -.15(ex)144 228 S .366(isting stopped job) .15 F 5.366(.T)-.4 G .366(here is no ambiguity allo)-5.366 F .366 (wed; if there is more than one job be)-.25 F .367(ginning with)-.15 F 1.125(the string typed, the job most recently accessed is selected.)144 -180 R(The)6.125 E/F2 10/Times-Italic@0 SF(name)3.985 E F0 1.124 -(of a stopped job, in this)3.805 F(conte)144 192 Q 1.132 +240 R(The)6.125 E/F3 10/Times-Italic@0 SF(name)3.985 E F0 1.124 +(of a stopped job, in this)3.805 F(conte)144 252 Q 1.132 (xt, is the command line used to start it.)-.15 F 1.133(If set to the v) -6.133 F(alue)-.25 E F2 -.2(ex)3.633 G(act).2 E F0 3.633(,t).68 G 1.133 +6.133 F(alue)-.25 E F3 -.2(ex)3.633 G(act).2 E F0 3.633(,t).68 G 1.133 (he string supplied must)-3.633 F .625 -(match the name of a stopped job e)144 204 R .624(xactly; if set to)-.15 -F F2(substring)3.124 E F0 3.124(,t).22 G .624 +(match the name of a stopped job e)144 264 R .624(xactly; if set to)-.15 +F F3(substring)3.124 E F0 3.124(,t).22 G .624 (he string supplied needs to match a)-3.124 F .884 -(substring of the name of a stopped job)144 216 R 5.884(.T)-.4 G(he) --5.884 E F2(substring)3.724 E F0 -.25(va)3.604 G .885(lue pro).25 F .885 -(vides functionality analogous to)-.15 F(the)144 228 Q F1(%?)3.334 E F0 -.834(job identi\214er \(see)5.834 F/F3 9/Times-Bold@0 SF .834(JOB CONTR) -3.334 F(OL)-.27 E F0(belo)3.084 E 3.334(w\). If)-.25 F .834(set to an) -3.334 F 3.334(yo)-.15 G .834(ther v)-3.334 F .833 -(alue, the supplied string)-.25 F .315 -(must be a pre\214x of a stopped job')144 240 R 2.816(sn)-.55 G .316 +(substring of the name of a stopped job)144 276 R 5.884(.T)-.4 G(he) +-5.884 E F3(substring)3.724 E F0 -.25(va)3.604 G .885(lue pro).25 F .885 +(vides functionality analogous to)-.15 F(the)144 288 Q F1(%?)3.334 E F0 +.834(job identi\214er \(see)5.834 F F2 .834(JOB CONTR)3.334 F(OL)-.27 E +F0(belo)3.084 E 3.334(w\). If)-.25 F .834(set to an)3.334 F 3.334(yo) +-.15 G .834(ther v)-3.334 F .833(alue, the supplied string)-.25 F .315 +(must be a pre\214x of a stopped job')144 300 R 2.816(sn)-.55 G .316 (ame; this pro)-2.816 F .316(vides functionality analogous to the)-.15 F -F1(%)2.816 E F2(string)A F0(job)2.816 E(identi\214er)144 252 Q(.)-.55 E -F1(histchars)108 264 Q F0 2.07(The tw)144 276 R 4.57(oo)-.1 G 4.57(rt) +F1(%)2.816 E F3(string)A F0(job)2.816 E(identi\214er)144 312 Q(.)-.55 E +F1(histchars)108 324 Q F0 2.07(The tw)144 336 R 4.57(oo)-.1 G 4.57(rt) -4.57 G 2.07(hree characters which control history e)-4.57 F 2.07 -(xpansion and tok)-.15 F 2.07(enization \(see)-.1 F F3(HIST)4.569 E(OR) --.162 E(Y)-.315 E(EXP)144 288 Q(ANSION)-.666 E F0(belo)3.465 E 3.715 -(w\). The)-.25 F 1.215(\214rst character is the)3.715 F F2 1.216 +(xpansion and tok)-.15 F 2.07(enization \(see)-.1 F F2(HIST)4.569 E(OR) +-.162 E(Y)-.315 E(EXP)144 348 Q(ANSION)-.666 E F0(belo)3.465 E 3.715 +(w\). The)-.25 F 1.215(\214rst character is the)3.715 F F3 1.216 (history e)3.715 F(xpansion)-.2 E F0(character)3.716 E 3.716(,t)-.4 G 1.216(he character which)-3.716 F .798(signals the start of a history e) -144 300 R .798(xpansion, normally `)-.15 F F1(!)A F0 3.298('. The)B .798 -(second character is the)3.298 F F2(quic)3.298 E 3.298(ks)-.2 G -(ubstitu-)-3.298 E(tion)144 312 Q F0(character)2.739 E 2.739(,w)-.4 G +144 360 R .798(xpansion, normally `)-.15 F F1(!)A F0 3.298('. The)B .798 +(second character is the)3.298 F F3(quic)3.298 E 3.298(ks)-.2 G +(ubstitu-)-3.298 E(tion)144 372 Q F0(character)2.739 E 2.739(,w)-.4 G .239(hich is used as shorthand for re-running the pre)-2.739 F .24 (vious command entered, substitut-)-.25 F .576 -(ing one string for another in the command.)144 324 R .575(The def)5.575 +(ing one string for another in the command.)144 384 R .575(The def)5.575 F .575(ault is `)-.1 F F1(^)A F0 3.075('. The)B .575 (optional third character is the)3.075 F .223(character which indicates\ that the remainder of the line is a comment when found as the \214rst \ -char)144 336 R(-)-.2 E 1.294(acter of a w)144 348 R 1.294 +char)144 396 R(-)-.2 E 1.294(acter of a w)144 408 R 1.294 (ord, normally `)-.1 F F1(#)A F0 3.794('. The)B 1.293 (history comment character causes history substitution to be)3.794 F -.379(skipped for the remaining w)144 360 R .379(ords on the line.)-.1 F +.379(skipped for the remaining w)144 420 R .379(ords on the line.)-.1 F .38(It does not necessarily cause the shell parser to treat)5.379 F -(the rest of the line as a comment.)144 372 Q F1(Arrays)87 388.8 Q(Bash) -108 400.8 Q F0(pro)3.391 E .891(vides one-dimensional inde)-.15 F -.15 +(the rest of the line as a comment.)144 432 Q F1(Arrays)87 448.8 Q(Bash) +108 460.8 Q F0(pro)3.391 E .891(vides one-dimensional inde)-.15 F -.15 (xe)-.15 G 3.391(da).15 G .891(nd associati)-3.391 F 1.191 -.15(ve a) -.25 H .891(rray v).15 F 3.391(ariables. An)-.25 F 3.391(yv)-.15 G .89 -(ariable may be used as an)-3.641 F(inde)108 412.8 Q -.15(xe)-.15 G +(ariable may be used as an)-3.641 F(inde)108 472.8 Q -.15(xe)-.15 G 2.573(da).15 G .073(rray; the)-2.573 F F1(declar)2.573 E(e)-.18 E F0 -.2 (bu)2.573 G .073(iltin will e).2 F .073(xplicitly declare an array)-.15 F 5.073(.T)-.65 G .074(here is no maximum limit on the size of)-5.073 F -.329(an array)108 424.8 R 2.829(,n)-.65 G .329(or an)-2.829 F 2.829(yr) +.329(an array)108 484.8 R 2.829(,n)-.65 G .329(or an)-2.829 F 2.829(yr) -.15 G .329(equirement that members be inde)-2.829 F -.15(xe)-.15 G 2.829(do).15 G 2.829(ra)-2.829 G .328(ssigned contiguously)-2.829 F 5.328(.I)-.65 G(nde)-5.328 E -.15(xe)-.15 G 2.828(da).15 G .328 -(rrays are refer)-2.828 F(-)-.2 E 1.595(enced using inte)108 436.8 R +(rrays are refer)-2.828 F(-)-.2 E 1.595(enced using inte)108 496.8 R 1.595(gers \(including arithmetic e)-.15 F 1.595 (xpressions\) and are zero-based; associati)-.15 F 1.895 -.15(ve a)-.25 H 1.595(rrays are refer).15 F(-)-.2 E(enced using arbitrary strings.)108 -448.8 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G +508.8 Q(Unless otherwise noted, inde)5 E -.15(xe)-.15 G 2.5(da).15 G (rray indices must be non-ne)-2.5 E -.05(ga)-.15 G(ti).05 E .3 -.15 -(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.463(An inde)108 465.6 R -.15(xe) +(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.463(An inde)108 525.6 R -.15(xe) -.15 G 4.963(da).15 G 2.463(rray is created automatically if an)-4.963 F 4.963(yv)-.15 G 2.462(ariable is assigned to using the syntax)-5.213 F -F2(name)4.962 E F0([)A F2(sub-)A(script)108 477.6 Q F0(]=)A F2(value)A -F0 6.548(.T)C(he)-6.548 E F2(subscript)4.388 E F0 1.549 +F3(name)4.962 E F0([)A F3(sub-)A(script)108 537.6 Q F0(]=)A F3(value)A +F0 6.548(.T)C(he)-6.548 E F3(subscript)4.388 E F0 1.549 (is treated as an arithmetic e)4.728 F 1.549(xpression that must e)-.15 F -.25(va)-.25 G 1.549(luate to a number).25 F 6.549(.T)-.55 G(o)-7.349 -E -.15(ex)108 489.6 S 1.98(plicitly declare an inde).15 F -.15(xe)-.15 G +E -.15(ex)108 549.6 S 1.98(plicitly declare an inde).15 F -.15(xe)-.15 G 4.48(da).15 G(rray)-4.48 E 4.48(,u)-.65 G(se)-4.48 E F1(declar)4.48 E -4.48<65ad>-.18 G(a)-4.48 E F2(name)4.48 E F0(\(see)4.48 E F3 1.979 +4.48<65ad>-.18 G(a)-4.48 E F3(name)4.48 E F0(\(see)4.48 E F2 1.979 (SHELL B)4.479 F(UIL)-.09 E 1.979(TIN COMMANDS)-.828 F F0(belo)4.229 E -(w\).)-.25 E F1(declar)108 501.6 Q 2.5<65ad>-.18 G(a)-2.5 E F2(name)2.5 -E F1([)A F2(subscript)A F1(])A F0(is also accepted; the)2.5 E F2 -(subscript)2.5 E F0(is ignored.)2.5 E(Associati)108 518.4 Q .3 -.15 +(w\).)-.25 E F1(declar)108 561.6 Q 2.5<65ad>-.18 G(a)-2.5 E F3(name)2.5 +E F1([)A F3(subscript)A F1(])A F0(is also accepted; the)2.5 E F3 +(subscript)2.5 E F0(is ignored.)2.5 E(Associati)108 578.4 Q .3 -.15 (ve a)-.25 H(rrays are created using).15 E F1(declar)2.5 E 2.5<65ad>-.18 -G(A)-2.5 E F2(name)2.5 E F0(.)A(Attrib)108 535.2 Q .94 +G(A)-2.5 E F3(name)2.5 E F0(.)A(Attrib)108 595.2 Q .94 (utes may be speci\214ed for an array v)-.2 F .941(ariable using the) -.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.441 E F1 -.18(re)3.441 G (adonly).18 E F0 -.2(bu)3.441 G 3.441(iltins. Each).2 F(attrib)3.441 E -(ute)-.2 E(applies to all members of an array)108 547.2 Q(.)-.65 E 1.647 -(Arrays are assigned to using compound assignments of the form)108 564 R -F2(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F2(1)A F0 1.647 -(... v)4.147 F(alue)-.25 E F2(n)A F1(\))A F0 4.147(,w)C 1.647(here each) --4.147 F F2(value)108 576 Q F0 1.833(is of the form [)4.332 F F2 -(subscript)A F0(]=)A F2(string)A F0 6.833(.I)C(nde)-6.833 E -.15(xe)-.15 +(ute)-.2 E(applies to all members of an array)108 607.2 Q(.)-.65 E 1.647 +(Arrays are assigned to using compound assignments of the form)108 624 R +F3(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F3(1)A F0 1.647 +(... v)4.147 F(alue)-.25 E F3(n)A F1(\))A F0 4.147(,w)C 1.647(here each) +-4.147 F F3(value)108 636 Q F0 1.833(is of the form [)4.332 F F3 +(subscript)A F0(]=)A F3(string)A F0 6.833(.I)C(nde)-6.833 E -.15(xe)-.15 G 4.333(da).15 G 1.833(rray assignments do not require an)-4.333 F 1.833 -(ything b)-.15 F(ut)-.2 E F2(string)4.333 E F0(.)A .164 -(When assigning to inde)108 588 R -.15(xe)-.15 G 2.663(da).15 G .163 +(ything b)-.15 F(ut)-.2 E F3(string)4.333 E F0(.)A .164 +(When assigning to inde)108 648 R -.15(xe)-.15 G 2.663(da).15 G .163 (rrays, if the optional brack)-2.663 F .163 (ets and subscript are supplied, that inde)-.1 F 2.663(xi)-.15 G 2.663 -(sa)-2.663 G(ssigned)-2.663 E 1.41(to; otherwise the inde)108 600 R 3.91 +(sa)-2.663 G(ssigned)-2.663 E 1.41(to; otherwise the inde)108 660 R 3.91 (xo)-.15 G 3.91(ft)-3.91 G 1.41(he element assigned is the last inde) -3.91 F 3.911(xa)-.15 G 1.411(ssigned to by the statement plus one.) --3.911 F(Inde)108 612 Q(xing starts at zero.)-.15 E -(When assigning to an associati)108 628.8 Q .3 -.15(ve a)-.25 H(rray).15 +-3.911 F(Inde)108 672 Q(xing starts at zero.)-.15 E +(When assigning to an associati)108 688.8 Q .3 -.15(ve a)-.25 H(rray).15 E 2.5(,t)-.65 G(he subscript is required.)-2.5 E .24 -(This syntax is also accepted by the)108 645.6 R F1(declar)2.74 E(e)-.18 +(This syntax is also accepted by the)108 705.6 R F1(declar)2.74 E(e)-.18 E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .239 -(vidual array elements may be assigned to using the)-.25 F F2(name)108 -657.6 Q F0([)A F2(subscript)A F0(]=)A F2(value)A F0 1.917 +(vidual array elements may be assigned to using the)-.25 F F3(name)108 +717.6 Q F0([)A F3(subscript)A F0(]=)A F3(value)A F0 1.917 (syntax introduced abo)4.416 F -.15(ve)-.15 G 6.917(.W).15 G 1.917 (hen assigning to an inde)-6.917 F -.15(xe)-.15 G 4.417(da).15 G(rray) --4.417 E 4.417(,i)-.65 G(f)-4.417 E F2(name)4.777 E F0 1.917(is sub-) -4.597 F .116(scripted by a ne)108 669.6 R -.05(ga)-.15 G(ti).05 E .416 +-4.417 E 4.417(,i)-.65 G(f)-4.417 E F3(name)4.777 E F0 1.917(is sub-) +4.597 F .116(scripted by a ne)108 729.6 R -.05(ga)-.15 G(ti).05 E .416 -.15(ve n)-.25 H(umber).15 E 2.616(,t)-.4 G .115 (hat number is interpreted as relati)-2.616 F .415 -.15(ve t)-.25 H 2.615(oo).15 G .115(ne greater than the maximum inde)-2.615 F(x)-.15 E -(of)108 681.6 Q F2(name)3.338 E F0 3.338(,s)C 3.338(on)-3.338 G -2.25 --.15(eg a)-3.338 H(ti).15 E 1.138 -.15(ve i)-.25 H .838 -(ndices count back from the end of the array).15 F 3.338(,a)-.65 G .838 -(nd an inde)-3.338 F 3.338(xo)-.15 G 3.338<66ad>-3.338 G 3.338(1r)-3.338 -G .838(eferences the last)-3.338 F(element.)108 693.6 Q(An)108 710.4 Q -3.576(ye)-.15 G 1.076(lement of an array may be referenced using ${) --3.576 F F2(name)A F0([)A F2(subscript)A F0 3.575(]}. The)B 1.075 -(braces are required to a)3.575 F -.2(vo)-.2 G(id).2 E 1.541 -(con\215icts with pathname e)108 722.4 R 4.041(xpansion. If)-.15 F F2 -(subscript)4.041 E F0(is)4.041 E F1(@)4.041 E F0(or)4.041 E F1(*)4.041 E -F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F 1.541 -(xpands to all members of)-.15 F F2(name)4.042 E F0(.)A(GNU Bash 4.4)72 -768 Q(2015 October 11)141.235 E(18)190.395 E 0 Cg EP +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(18)185.545 E 0 Cg EP %%Page: 19 19 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.057 -(These subscripts dif)108 84 R 1.057(fer only when the w)-.25 F 1.057 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(of)108 84 Q/F1 10 +/Times-Italic@0 SF(name)3.338 E F0 3.338(,s)C 3.338(on)-3.338 G -2.25 +-.15(eg a)-3.338 H(ti).15 E 1.138 -.15(ve i)-.25 H .838 +(ndices count back from the end of the array).15 F 3.338(,a)-.65 G .838 +(nd an inde)-3.338 F 3.338(xo)-.15 G 3.338<66ad>-3.338 G 3.338(1r)-3.338 +G .838(eferences the last)-3.338 F(element.)108 96 Q(An)108 112.8 Q +3.576(ye)-.15 G 1.076(lement of an array may be referenced using ${) +-3.576 F F1(name)A F0([)A F1(subscript)A F0 3.575(]}. The)B 1.075 +(braces are required to a)3.575 F -.2(vo)-.2 G(id).2 E 1.541 +(con\215icts with pathname e)108 124.8 R 4.041(xpansion. If)-.15 F F1 +(subscript)4.041 E F0(is)4.041 E/F2 10/Times-Bold@0 SF(@)4.041 E F0(or) +4.041 E F2(*)4.041 E F0 4.041(,t)C 1.541(he w)-4.041 F 1.541(ord e)-.1 F +1.541(xpands to all members of)-.15 F F1(name)4.042 E F0(.)A 1.057 +(These subscripts dif)108 136.8 R 1.057(fer only when the w)-.25 F 1.057 (ord appears within double quotes.)-.1 F 1.056(If the w)6.056 F 1.056 -(ord is double-quoted,)-.1 F(${)108 96 Q/F1 10/Times-Italic@0 SF(name)A -F0 .52([*]} e)B .52(xpands to a single w)-.15 F .52(ord with the v)-.1 F -.521(alue of each array member separated by the \214rst character)-.25 F -1.375(of the)108 108 R/F2 9/Times-Bold@0 SF(IFS)3.875 E F0 1.375 +(ord is double-quoted,)-.1 F(${)108 148.8 Q F1(name)A F0 .52([*]} e)B +.52(xpands to a single w)-.15 F .52(ord with the v)-.1 F .521 +(alue of each array member separated by the \214rst character)-.25 F +1.375(of the)108 160.8 R/F3 9/Times-Bold@0 SF(IFS)3.875 E F0 1.375 (special v)3.625 F 1.375(ariable, and ${)-.25 F F1(name)A F0 1.375 ([@]} e)B 1.375(xpands each element of)-.15 F F1(name)3.875 E F0 1.374 (to a separate w)3.875 F 3.874(ord. When)-.1 F 2.027 -(there are no array members, ${)108 120 R F1(name)A F0 2.028([@]} e)B +(there are no array members, ${)108 172.8 R F1(name)A F0 2.028([@]} e)B 2.028(xpands to nothing.)-.15 F 2.028(If the double-quoted e)7.028 F -2.028(xpansion occurs)-.15 F .759(within a w)108 132 R .759(ord, the e) --.1 F .759(xpansion of the \214rst parameter is joined with the be)-.15 -F .759(ginning part of the original w)-.15 F(ord,)-.1 E .515(and the e) -108 144 R .516(xpansion of the last parameter is joined with the last p\ -art of the original w)-.15 F 3.016(ord. This)-.1 F .516(is analogous) -3.016 F .228(to the e)108 156 R .228(xpansion of the special parameters) --.15 F/F3 10/Times-Bold@0 SF(*)2.728 E F0(and)2.728 E F3(@)2.728 E F0 -(\(see)2.728 E F3 .228(Special P)2.728 F(arameters)-.1 E F0(abo)2.727 E --.15(ve)-.15 G 2.727(\). ${#).15 F F1(name)A F0([)A F1(subscript)A F0 -(]})A -.15(ex)108 168 S .886(pands to the length of ${).15 F F1(name)A -F0([)A F1(subscript)A F0 3.386(]}. If)B F1(subscript)3.386 E F0(is)3.386 -E F3(*)3.386 E F0(or)3.386 E F3(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 -F .886(xpansion is the number of ele-)-.15 F .295(ments in the array)108 -180 R 5.295(.I)-.65 G 2.795(ft)-5.295 G(he)-2.795 E F1(subscript)3.135 E -F0 .295(used to reference an element of an inde)3.475 F -.15(xe)-.15 G +2.028(xpansion occurs)-.15 F .759(within a w)108 184.8 R .759 +(ord, the e)-.1 F .759 +(xpansion of the \214rst parameter is joined with the be)-.15 F .759 +(ginning part of the original w)-.15 F(ord,)-.1 E .515(and the e)108 +196.8 R .516(xpansion of the last parameter is joined with the last par\ +t of the original w)-.15 F 3.016(ord. This)-.1 F .516(is analogous)3.016 +F .228(to the e)108 208.8 R .228(xpansion of the special parameters)-.15 +F F2(*)2.728 E F0(and)2.728 E F2(@)2.728 E F0(\(see)2.728 E F2 .228 +(Special P)2.728 F(arameters)-.1 E F0(abo)2.727 E -.15(ve)-.15 G 2.727 +(\). ${#).15 F F1(name)A F0([)A F1(subscript)A F0(]})A -.15(ex)108 220.8 +S .886(pands to the length of ${).15 F F1(name)A F0([)A F1(subscript)A +F0 3.386(]}. If)B F1(subscript)3.386 E F0(is)3.386 E F2(*)3.386 E F0(or) +3.386 E F2(@)3.386 E F0 3.386(,t)C .886(he e)-3.386 F .886 +(xpansion is the number of ele-)-.15 F .295(ments in the array)108 232.8 +R 5.295(.I)-.65 G 2.795(ft)-5.295 G(he)-2.795 E F1(subscript)3.135 E F0 +.295(used to reference an element of an inde)3.475 F -.15(xe)-.15 G 2.794(da).15 G .294(rray e)-2.794 F -.25(va)-.25 G .294 (luates to a number).25 F .628 -(less than zero, it is interpreted as relati)108 192 R .928 -.15(ve t) +(less than zero, it is interpreted as relati)108 244.8 R .928 -.15(ve t) -.25 H 3.128(oo).15 G .629(ne greater than the maximum inde)-3.128 F 3.129(xo)-.15 G 3.129(ft)-3.129 G .629(he array)-3.129 F 3.129(,s)-.65 G 3.129(on)-3.129 G -2.25 -.15(eg a)-3.129 H(ti).15 E -.15(ve)-.25 G -(indices count back from the end of the array)108 204 Q 2.5(,a)-.65 G +(indices count back from the end of the array)108 256.8 Q 2.5(,a)-.65 G (nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 G 2.5(1r)-2.5 G (eferences the last element.)-2.5 E .595(Referencing an array v)108 -220.8 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G +273.6 R .595(ariable without a subscript is equi)-.25 F -.25(va)-.25 G .595(lent to referencing the array with a subscript of).25 F 2.5(0. An) -108 232.8 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25 -E(alid subscript is le)-.25 E -.05(ga)-.15 G(l, and).05 E F3(bash)2.5 E -F0(will create an array if necessary)2.5 E(.)-.65 E(An array v)108 249.6 +108 285.6 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25 +E(alid subscript is le)-.25 E -.05(ga)-.15 G(l, and).05 E F2(bash)2.5 E +F0(will create an array if necessary)2.5 E(.)-.65 E(An array v)108 302.4 Q(ariable is considered set if a subscript has been assigned a v)-.25 E 2.5(alue. The)-.25 F(null string is a v)2.5 E(alid v)-.25 E(alue.)-.25 E -.417(It is possible to obtain the k)108 266.4 R -.15(ey)-.1 G 2.918(s\() +.417(It is possible to obtain the k)108 319.2 R -.15(ey)-.1 G 2.918(s\() .15 G .418(indices\) of an array as well as the v)-2.918 F 2.918 -(alues. ${)-.25 F F3(!)A F1(name)A F0([)A F1(@)A F0 .418(]} and ${)B F3 -(!)A F1(name)A F0([)A F1(*)A F0(]})A -.15(ex)108 278.4 S .75 +(alues. ${)-.25 F F2(!)A F1(name)A F0([)A F1(@)A F0 .418(]} and ${)B F2 +(!)A F1(name)A F0([)A F1(*)A F0(]})A -.15(ex)108 331.2 S .75 (pand to the indices assigned in array v).15 F(ariable)-.25 E F1(name) 3.249 E F0 5.749(.T)C .749 (he treatment when in double quotes is similar to)-5.749 F(the e)108 -290.4 Q(xpansion of the special parameters)-.15 E F1(@)2.5 E F0(and)2.5 -E F1(*)2.5 E F0(within double quotes.)2.5 E(The)108 307.2 Q F3(unset) -2.766 E F0 -.2(bu)2.766 G .267(iltin is used to destro).2 F 2.767(ya)-.1 -G(rrays.)-2.767 E F3(unset)5.267 E F1(name)2.767 E F0([)A F1(subscript)A +343.2 Q(xpansion of the special parameters)-.15 E F1(@)2.5 E F0(and)2.5 +E F1(*)2.5 E F0(within double quotes.)2.5 E(The)108 360 Q F2(unset)2.766 +E F0 -.2(bu)2.766 G .267(iltin is used to destro).2 F 2.767(ya)-.1 G +(rrays.)-2.767 E F2(unset)5.267 E F1(name)2.767 E F0([)A F1(subscript)A F0 2.767(]d)C(estro)-2.767 E .267(ys the array element at inde)-.1 F(x) --.15 E F1(sub-)2.767 E(script)108 319.2 Q F0 6.319(.N)C -2.25 -.15(eg a) +-.15 E F1(sub-)2.767 E(script)108 372 Q F0 6.319(.N)C -2.25 -.15(eg a) -6.319 H(ti).15 E 1.619 -.15(ve s)-.25 H 1.319(ubscripts to inde).15 F -.15(xe)-.15 G 3.819(da).15 G 1.319 (rrays are interpreted as described abo)-3.819 F -.15(ve)-.15 G 6.318 (.C).15 G 1.318(are must be tak)-6.318 F 1.318(en to)-.1 F -.2(avo)108 -331.2 S .297(id unw).2 F .297(anted side ef)-.1 F .297 -(fects caused by pathname e)-.25 F(xpansion.)-.15 E F3(unset)5.297 E F1 +384 S .297(id unw).2 F .297(anted side ef)-.1 F .297 +(fects caused by pathname e)-.25 F(xpansion.)-.15 E F2(unset)5.297 E F1 (name)2.798 E F0 2.798(,w)C(here)-2.798 E F1(name)2.798 E F0 .298 -(is an array)2.798 F 2.798(,o)-.65 G(r)-2.798 E F3(unset)2.798 E F1 -(name)108 343.2 Q F0([)A F1(subscript)A F0(], where)A F1(subscript)2.5 E -F0(is)2.5 E F3(*)2.5 E F0(or)2.5 E F3(@)2.5 E F0 2.5(,r)C(emo)-2.5 E --.15(ve)-.15 G 2.5(st).15 G(he entire array)-2.5 E(.)-.65 E(The)108 360 -Q F3(declar)3.574 E(e)-.18 E F0(,)A F3(local)3.574 E F0 3.574(,a)C(nd) --3.574 E F3 -.18(re)3.574 G(adonly).18 E F0 -.2(bu)3.574 G 1.073 -(iltins each accept a).2 F F33.573 E F0 1.073 +(is an array)2.798 F 2.798(,o)-.65 G(r)-2.798 E F2(unset)2.798 E F1 +(name)108 396 Q F0([)A F1(subscript)A F0(], where)A F1(subscript)2.5 E +F0(is)2.5 E F2(*)2.5 E F0(or)2.5 E F2(@)2.5 E F0 2.5(,r)C(emo)-2.5 E +-.15(ve)-.15 G 2.5(st).15 G(he entire array)-2.5 E(.)-.65 E(The)108 +412.8 Q F2(declar)3.574 E(e)-.18 E F0(,)A F2(local)3.574 E F0 3.574(,a)C +(nd)-3.574 E F2 -.18(re)3.574 G(adonly).18 E F0 -.2(bu)3.574 G 1.073 +(iltins each accept a).2 F F23.573 E F0 1.073 (option to specify an inde)3.573 F -.15(xe)-.15 G 3.573(da).15 G 1.073 -(rray and a)-3.573 F F33.573 E F0 .338 -(option to specify an associati)108 372 R .638 -.15(ve a)-.25 H(rray).15 -E 5.338(.I)-.65 G 2.838(fb)-5.338 G .338(oth options are supplied,) --2.838 F F32.838 E F0(tak)2.838 E .338(es precedence.)-.1 F(The) -5.338 E F3 -.18(re)2.839 G(ad).18 E F0 -.2(bu)2.839 G(iltin).2 E .441 -(accepts a)108 384 R F32.941 E F0 .441 +(rray and a)-3.573 F F23.573 E F0 .338 +(option to specify an associati)108 424.8 R .638 -.15(ve a)-.25 H(rray) +.15 E 5.338(.I)-.65 G 2.838(fb)-5.338 G .338(oth options are supplied,) +-2.838 F F22.838 E F0(tak)2.838 E .338(es precedence.)-.1 F(The) +5.338 E F2 -.18(re)2.839 G(ad).18 E F0 -.2(bu)2.839 G(iltin).2 E .441 +(accepts a)108 436.8 R F22.941 E F0 .441 (option to assign a list of w)2.941 F .441 (ords read from the standard input to an array)-.1 F 5.441(.T)-.65 G(he) --5.441 E F3(set)2.941 E F0(and)2.941 E F3(declar)2.94 E(e)-.18 E F0 -.2 -(bu)108 396 S(iltins display array v).2 E(alues in a w)-.25 E +-5.441 E F2(set)2.941 E F0(and)2.941 E F2(declar)2.94 E(e)-.18 E F0 -.2 +(bu)108 448.8 S(iltins display array v).2 E(alues in a w)-.25 E (ay that allo)-.1 E(ws them to be reused as assignments.)-.25 E/F4 10.95 -/Times-Bold@0 SF(EXP)72 412.8 Q(ANSION)-.81 E F0 .76(Expansion is perfo\ -rmed on the command line after it has been split into w)108 424.8 R 3.26 +/Times-Bold@0 SF(EXP)72 465.6 Q(ANSION)-.81 E F0 .76(Expansion is perfo\ +rmed on the command line after it has been split into w)108 477.6 R 3.26 (ords. There)-.1 F .76(are se)3.26 F -.15(ve)-.25 G 3.26(nk).15 G .76 -(inds of)-3.26 F -.15(ex)108 436.8 S .37(pansion performed:).15 F F1(br) +(inds of)-3.26 F -.15(ex)108 489.6 S .37(pansion performed:).15 F F1(br) 2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .369(tilde e) 2.869 F(xpansion)-.2 E F0(,).24 E F1(par)2.869 E .369 (ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F1 .369 -(command sub-)2.869 F(stitution)108 448.8 Q F0(,).24 E F1(arithmetic e) +(command sub-)2.869 F(stitution)108 501.6 Q F0(,).24 E F1(arithmetic e) 2.5 E(xpansion)-.2 E F0(,).24 E F1(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 E F0 2.5(,a).22 G(nd)-2.5 E F1(pathname e)2.5 E(xpansion)-.2 E F0(.).24 -E .418(The order of e)108 465.6 R .418(xpansions is: brace e)-.15 F .418 +E .418(The order of e)108 518.4 R .418(xpansions is: brace e)-.15 F .418 (xpansion; tilde e)-.15 F .419(xpansion, parameter and v)-.15 F .419 -(ariable e)-.25 F .419(xpansion, arithmetic)-.15 F -.15(ex)108 477.6 S +(ariable e)-.25 F .419(xpansion, arithmetic)-.15 F -.15(ex)108 530.4 S .196(pansion, and command substitution \(done in a left-to-right f).15 F .195(ashion\); w)-.1 F .195(ord splitting; and pathname e)-.1 F(xpan-) --.15 E(sion.)108 489.6 Q .257 -(On systems that can support it, there is an additional e)108 506.4 R +-.15 E(sion.)108 542.4 Q .257 +(On systems that can support it, there is an additional e)108 559.2 R .257(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E F1(pr)2.757 E .257 (ocess substitution)-.45 F F0 5.257(.T)C .257(his is per)-5.257 F(-)-.2 -E(formed at the same time as tilde, parameter)108 518.4 Q 2.5(,v)-.4 G +E(formed at the same time as tilde, parameter)108 571.2 Q 2.5(,v)-.4 G (ariable, and arithmetic e)-2.75 E(xpansion and command substitution.) --.15 E 1.487(Only brace e)108 535.2 R 1.487(xpansion, w)-.15 F 1.487 +-.15 E 1.487(Only brace e)108 588 R 1.487(xpansion, w)-.15 F 1.487 (ord splitting, and pathname e)-.1 F 1.487 (xpansion can change the number of w)-.15 F 1.486(ords of the)-.1 F -.15 -(ex)108 547.2 S 1.164(pansion; other e).15 F 1.164(xpansions e)-.15 F +(ex)108 600 S 1.164(pansion; other e).15 F 1.164(xpansions e)-.15 F 1.164(xpand a single w)-.15 F 1.165(ord to a single w)-.1 F 3.665 (ord. The)-.1 F 1.165(only e)3.665 F 1.165(xceptions to this are the) --.15 F -.15(ex)108 559.2 S(pansions of ").15 E F3($@)A F0 2.5("a)C(nd ") --2.5 E F3(${)A F1(name)A F3([@]})A F0 2.5("a)C 2.5(se)-2.5 G -(xplained abo)-2.65 E .3 -.15(ve \()-.15 H(see).15 E F2 -.666(PA)2.5 G -(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F3(Brace Expansion)87 576 Q -F1(Br)108.58 588 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606 +-.15 F -.15(ex)108 612 S(pansions of ").15 E F2($@)A F0 2.5("a)C(nd ") +-2.5 E F2(${)A F1(name)A F2([@]})A F0 2.5("a)C 2.5(se)-2.5 G +(xplained abo)-2.65 E .3 -.15(ve \()-.15 H(see).15 E F3 -.666(PA)2.5 G +(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F2(Brace Expansion)87 628.8 +Q F1(Br)108.58 640.8 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606 (is a mechanism by which arbitrary strings may be generated.)3.346 F -.606(This mechanism is similar)5.606 F(to)108 600 Q F1 .415(pathname e) -2.915 F(xpansion)-.2 E F0 2.915(,b)C .415 +.606(This mechanism is similar)5.606 F(to)108 652.8 Q F1 .415 +(pathname e)2.915 F(xpansion)-.2 E F0 2.915(,b)C .415 (ut the \214lenames generated need not e)-3.115 F 2.915(xist. P)-.15 F .415(atterns to be brace e)-.15 F .415(xpanded tak)-.15 F 2.915(et)-.1 G -(he)-2.915 E .152(form of an optional)108 612 R F1(pr)2.652 E(eamble) +(he)-2.915 E .152(form of an optional)108 664.8 R F1(pr)2.652 E(eamble) -.37 E F0 2.651(,f).18 G(ollo)-2.651 E .151 (wed by either a series of comma-separated strings or a sequence e)-.25 -F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 624 R .563 -(wed by an optional)-.25 F F1(postscript)3.063 E F0 5.563(.T).68 G .563 -(he preamble is pre\214x)-5.563 F .563(ed to each string)-.15 F .659(co\ -ntained within the braces, and the postscript is then appended to each \ -resulting string, e)108 636 R .658(xpanding left to)-.15 F(right.)108 -648 Q .718(Brace e)108 664.8 R .719(xpansions may be nested.)-.15 F .719 -(The results of each e)5.719 F .719 +F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 676.8 R +.563(wed by an optional)-.25 F F1(postscript)3.063 E F0 5.563(.T).68 G +.563(he preamble is pre\214x)-5.563 F .563(ed to each string)-.15 F .659 +(contained within the braces, and the postscript is then appended to ea\ +ch resulting string, e)108 688.8 R .658(xpanding left to)-.15 F(right.) +108 700.8 Q .718(Brace e)108 717.6 R .719(xpansions may be nested.)-.15 +F .719(The results of each e)5.719 F .719 (xpanded string are not sorted; left to right order is)-.15 F(preserv) -108 676.8 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E F3({)A F0 -(d,c,b)A F3(})A F0 2.5(ee)C(xpands into `ade ace abe'.)-2.65 E 3.243(As) -108 693.6 S .743(equence e)-3.243 F .743(xpression tak)-.15 F .743 -(es the form)-.1 F F3({)3.243 E F1(x)A F3(..)A F1(y)A F3([..)A F1(incr)A -F3(]})A F0 3.243(,w)C(here)-3.243 E F1(x)3.243 E F0(and)3.242 E F1(y) -3.242 E F0 .742(are either inte)3.242 F .742(gers or single characters,) --.15 F(and)108 705.6 Q F1(incr)3.031 E F0 3.031(,a)C 3.032(no)-3.031 G -.532(ptional increment, is an inte)-3.032 F(ger)-.15 E 5.532(.W)-.55 G -.532(hen inte)-5.532 F .532(gers are supplied, the e)-.15 F .532 -(xpression e)-.15 F .532(xpands to each)-.15 F .078(number between)108 -717.6 R F1(x)2.578 E F0(and)2.578 E F1(y)2.578 E F0 2.578(,i)C(nclusi) --2.578 E -.15(ve)-.25 G 5.078(.S).15 G .078(upplied inte)-5.078 F .077 -(gers may be pre\214x)-.15 F .077(ed with)-.15 F F1(0)2.577 E F0 .077 -(to force each term to ha)2.577 F .377 -.15(ve t)-.2 H(he).15 E .014 -(same width.)108 729.6 R .014(When either)5.014 F F1(x)2.514 E F0(or) -2.514 E F1(y)2.514 E F0(be)2.514 E .015(gins with a zero, the shell att\ -empts to force all generated terms to contain)-.15 F(GNU Bash 4.4)72 768 -Q(2015 October 11)141.235 E(19)190.395 E 0 Cg EP +108 729.6 Q 2.5(ed. F)-.15 F(or e)-.15 E(xample, a)-.15 E F2({)A F0 +(d,c,b)A F2(})A F0 2.5(ee)C(xpands into `ade ace abe'.)-2.65 E +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(19)185.545 E 0 Cg EP %%Page: 20 20 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.143 -(the same number of digits, zero-padding where necessary)108 84 R 6.143 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 3.243(As)108 84 S +.743(equence e)-3.243 F .743(xpression tak)-.15 F .743(es the form)-.1 F +/F1 10/Times-Bold@0 SF({)3.243 E/F2 10/Times-Italic@0 SF(x)A F1(..)A F2 +(y)A F1([..)A F2(incr)A F1(]})A F0 3.243(,w)C(here)-3.243 E F2(x)3.243 E +F0(and)3.242 E F2(y)3.242 E F0 .742(are either inte)3.242 F .742 +(gers or single characters,)-.15 F(and)108 96 Q F2(incr)3.031 E F0 3.031 +(,a)C 3.032(no)-3.031 G .532(ptional increment, is an inte)-3.032 F(ger) +-.15 E 5.532(.W)-.55 G .532(hen inte)-5.532 F .532 +(gers are supplied, the e)-.15 F .532(xpression e)-.15 F .532 +(xpands to each)-.15 F .078(number between)108 108 R F2(x)2.578 E F0 +(and)2.578 E F2(y)2.578 E F0 2.578(,i)C(nclusi)-2.578 E -.15(ve)-.25 G +5.078(.S).15 G .078(upplied inte)-5.078 F .077(gers may be pre\214x)-.15 +F .077(ed with)-.15 F F2(0)2.577 E F0 .077(to force each term to ha) +2.577 F .377 -.15(ve t)-.2 H(he).15 E .014(same width.)108 120 R .014 +(When either)5.014 F F2(x)2.514 E F0(or)2.514 E F2(y)2.514 E F0(be)2.514 +E .015(gins with a zero, the shell attempts to force all generated term\ +s to contain)-.15 F 1.143 +(the same number of digits, zero-padding where necessary)108 132 R 6.143 (.W)-.65 G 1.143(hen characters are supplied, the e)-6.143 F(xpression) --.15 E -.15(ex)108 96 S 1.064(pands to each character le).15 F 1.064 -(xicographically between)-.15 F/F1 10/Times-Italic@0 SF(x)3.564 E F0 -(and)3.564 E F1(y)3.564 E F0 3.564(,i)C(nclusi)-3.564 E -.15(ve)-.25 G -3.564(,u).15 G 1.064(sing the def)-3.564 F 1.064(ault C locale.)-.1 F -(Note)6.064 E .984(that both)108 108 R F1(x)3.484 E F0(and)3.484 E F1(y) -3.484 E F0 .983(must be of the same type.)3.484 F .983 +-.15 E -.15(ex)108 144 S 1.064(pands to each character le).15 F 1.064 +(xicographically between)-.15 F F2(x)3.564 E F0(and)3.564 E F2(y)3.564 E +F0 3.564(,i)C(nclusi)-3.564 E -.15(ve)-.25 G 3.564(,u).15 G 1.064 +(sing the def)-3.564 F 1.064(ault C locale.)-.1 F(Note)6.064 E .984 +(that both)108 156 R F2(x)3.484 E F0(and)3.484 E F2(y)3.484 E F0 .983 +(must be of the same type.)3.484 F .983 (When the increment is supplied, it is used as the dif)5.983 F(ference) --.25 E(between each term.)108 120 Q(The def)5 E -(ault increment is 1 or -1 as appropriate.)-.1 E .581(Brace e)108 136.8 +-.25 E(between each term.)108 168 Q(The def)5 E +(ault increment is 1 or -1 as appropriate.)-.1 E .581(Brace e)108 184.8 R .581(xpansion is performed before an)-.15 F 3.081(yo)-.15 G .581 (ther e)-3.081 F .581(xpansions, and an)-.15 F 3.082(yc)-.15 G .582 (haracters special to other e)-3.082 F(xpansions)-.15 E .016 -(are preserv)108 148.8 R .016(ed in the result.)-.15 F .016 -(It is strictly te)5.016 F(xtual.)-.15 E/F2 10/Times-Bold@0 SF(Bash) -5.016 E F0 .015(does not apply an)2.516 F 2.515(ys)-.15 G .015 -(yntactic interpretation to the con-)-2.515 F(te)108 160.8 Q +(are preserv)108 196.8 R .016(ed in the result.)-.15 F .016 +(It is strictly te)5.016 F(xtual.)-.15 E F1(Bash)5.016 E F0 .015 +(does not apply an)2.516 F 2.515(ys)-.15 G .015 +(yntactic interpretation to the con-)-2.515 F(te)108 208.8 Q (xt of the e)-.15 E(xpansion or the te)-.15 E(xt between the braces.) --.15 E 3.632(Ac)108 177.6 S 1.132(orrectly-formed brace e)-3.632 F 1.132 +-.15 E 3.632(Ac)108 225.6 S 1.132(orrectly-formed brace e)-3.632 F 1.132 (xpansion must contain unquoted opening and closing braces, and at leas\ -t one)-.15 F 3.441(unquoted comma or a v)108 189.6 R 3.441 +t one)-.15 F 3.441(unquoted comma or a v)108 237.6 R 3.441 (alid sequence e)-.25 F 5.941(xpression. An)-.15 F 5.941(yi)-.15 G 3.441 (ncorrectly formed brace e)-5.941 F 3.44(xpansion is left)-.15 F 2.755 -(unchanged. A)108 201.6 R F2({)2.755 E F0(or)2.755 E F2(,)2.755 E F0 +(unchanged. A)108 249.6 R F1({)2.755 E F0(or)2.755 E F1(,)2.755 E F0 .255(may be quoted with a backslash to pre)2.755 F -.15(ve)-.25 G .255 (nt its being considered part of a brace e).15 F(xpres-)-.15 E 2.911 -(sion. T)108 213.6 R 2.911(oa)-.8 G -.2(vo)-3.111 G .411 +(sion. T)108 261.6 R 2.911(oa)-.8 G -.2(vo)-3.111 G .411 (id con\215icts with parameter e).2 F .411(xpansion, the string)-.15 F -F2(${)2.911 E F0 .41(is not considered eligible for brace e)2.911 F -(xpan-)-.15 E(sion.)108 225.6 Q 1.476(This construct is typically used \ +F1(${)2.911 E F0 .41(is not considered eligible for brace e)2.911 F +(xpan-)-.15 E(sion.)108 273.6 Q 1.476(This construct is typically used \ as shorthand when the common pre\214x of the strings to be generated is) -108 242.4 R(longer than in the abo)108 254.4 Q .3 -.15(ve ex)-.15 H -(ample:).15 E(mkdir /usr/local/src/bash/{old,ne)144 271.2 Q -.65(w,)-.25 -G(dist,b).65 E(ugs})-.2 E(or)108 283.2 Q(cho)144 295.2 Q +108 290.4 R(longer than in the abo)108 302.4 Q .3 -.15(ve ex)-.15 H +(ample:).15 E(mkdir /usr/local/src/bash/{old,ne)144 319.2 Q -.65(w,)-.25 +G(dist,b).65 E(ugs})-.2 E(or)108 331.2 Q(cho)144 343.2 Q (wn root /usr/{ucb/{e)-.25 E(x,edit},lib/{e)-.15 E(x?.?*,ho)-.15 E(w_e) --.25 E(x}})-.15 E .618(Brace e)108 312 R .618 +-.25 E(x}})-.15 E .618(Brace e)108 360 R .618 (xpansion introduces a slight incompatibility with historical v)-.15 F -.618(ersions of)-.15 F F2(sh)3.118 E F0(.)A F2(sh)5.618 E F0 .618 +.618(ersions of)-.15 F F1(sh)3.118 E F0(.)A F1(sh)5.618 E F0 .618 (does not treat open-)3.118 F .247 -(ing or closing braces specially when the)108 324 R 2.747(ya)-.15 G .247 +(ing or closing braces specially when the)108 372 R 2.747(ya)-.15 G .247 (ppear as part of a w)-2.747 F .248(ord, and preserv)-.1 F .248 -(es them in the output.)-.15 F F2(Bash)5.248 E F0(remo)108 336 Q -.15 +(es them in the output.)-.15 F F1(Bash)5.248 E F0(remo)108 384 Q -.15 (ve)-.15 G 3.53(sb).15 G 1.03(races from w)-3.53 F 1.03 (ords as a consequence of brace e)-.1 F 3.53(xpansion. F)-.15 F 1.03 -(or e)-.15 F 1.03(xample, a w)-.15 F 1.03(ord entered to)-.1 F F2(sh) -3.53 E F0(as)3.53 E F1(\214le{1,2})108 348 Q F0 .514 +(or e)-.15 F 1.03(xample, a w)-.15 F 1.03(ord entered to)-.1 F F1(sh) +3.53 E F0(as)3.53 E F2(\214le{1,2})108 396 Q F0 .514 (appears identically in the output.)3.014 F .515(The same w)5.515 F .515 -(ord is output as)-.1 F F1 .515(\214le1 \214le2)4.925 F F0 .515(after e) -3.035 F .515(xpansion by)-.15 F F2(bash)3.015 E F0(.)A .437 -(If strict compatibility with)108 360 R F2(sh)2.936 E F0 .436 -(is desired, start)2.936 F F2(bash)2.936 E F0 .436(with the)2.936 F F2 +(ord is output as)-.1 F F2 .515(\214le1 \214le2)4.925 F F0 .515(after e) +3.035 F .515(xpansion by)-.15 F F1(bash)3.015 E F0(.)A .437 +(If strict compatibility with)108 408 R F1(sh)2.936 E F0 .436 +(is desired, start)2.936 F F1(bash)2.936 E F0 .436(with the)2.936 F F1 (+B)2.936 E F0 .436(option or disable brace e)2.936 F .436 -(xpansion with the)-.15 F F2(+B)108 372 Q F0(option to the)2.5 E F2(set) +(xpansion with the)-.15 F F1(+B)108 420 Q F0(option to the)2.5 E F1(set) 2.5 E F0(command \(see)2.5 E/F3 9/Times-Bold@0 SF(SHELL B)2.5 E(UIL)-.09 -E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F2 -.18(Ti)87 388.8 S -(lde Expansion).18 E F0 1.086(If a w)108 400.8 R 1.086(ord be)-.1 F -1.086(gins with an unquoted tilde character \(`)-.15 F F2(~)A F0 1.087 +E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1 -.18(Ti)87 436.8 S +(lde Expansion).18 E F0 1.086(If a w)108 448.8 R 1.086(ord be)-.1 F +1.086(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0 1.087 ('\), all of the characters preceding the \214rst unquoted)B .185(slash\ \(or all characters, if there is no unquoted slash\) are considered a) -108 412.8 R F1(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685(fn) +108 460.8 R F2(tilde-pr)2.685 E(e\214x)-.37 E F0 5.185(.I)C 2.685(fn) -5.185 G .185(one of the characters)-2.685 F .725(in the tilde-pre\214x\ - are quoted, the characters in the tilde-pre\214x follo)108 424.8 R .726 -(wing the tilde are treated as a possible)-.25 F F1(lo)108 436.8 Q .523 + are quoted, the characters in the tilde-pre\214x follo)108 472.8 R .726 +(wing the tilde are treated as a possible)-.25 F F2(lo)108 484.8 Q .523 (gin name)-.1 F F0 5.523(.I)C 3.023(ft)-5.523 G .523 (his login name is the null string, the tilde is replaced with the v) --3.023 F .522(alue of the shell parameter)-.25 F F3(HOME)108 448.8 Q/F4 +-3.023 F .522(alue of the shell parameter)-.25 F F3(HOME)108 496.8 Q/F4 9/Times-Roman@0 SF(.)A F0(If)4.786 E F3(HOME)2.786 E F0 .287 (is unset, the home directory of the user e)2.536 F -.15(xe)-.15 G .287 (cuting the shell is substituted instead.).15 F(Other)5.287 E(-)-.2 E(w\ ise, the tilde-pre\214x is replaced with the home directory associated \ -with the speci\214ed login name.)108 460.8 Q .093 -(If the tilde-pre\214x is a `~+', the v)108 477.6 R .092 +with the speci\214ed login name.)108 508.8 Q .093 +(If the tilde-pre\214x is a `~+', the v)108 525.6 R .092 (alue of the shell v)-.25 F(ariable)-.25 E F3(PWD)2.592 E F0 .092 (replaces the tilde-pre\214x.)2.342 F .092(If the tilde-pre\214x is) -5.092 F 3.403(a`)108 489.6 S .903(~\255', the v)-3.403 F .903 +5.092 F 3.403(a`)108 537.6 S .903(~\255', the v)-3.403 F .903 (alue of the shell v)-.25 F(ariable)-.25 E F3(OLDPWD)3.404 E F4(,)A F0 .904(if it is set, is substituted.)3.154 F .904(If the characters follo) 5.904 F .904(wing the)-.25 F 1.642 -(tilde in the tilde-pre\214x consist of a number)108 501.6 R F1(N)4.142 +(tilde in the tilde-pre\214x consist of a number)108 549.6 R F2(N)4.142 E F0 4.142(,o)C 1.642(ptionally pre\214x)-4.142 F 1.641 (ed by a `+' or a `\255', the tilde-pre\214x is)-.15 F 1.437(replaced w\ ith the corresponding element from the directory stack, as it w)108 -513.6 R 1.438(ould be displayed by the)-.1 F F2(dirs)3.938 E F0 -.2(bu) -108 525.6 S .455(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.955(dw).1 G +561.6 R 1.438(ould be displayed by the)-.1 F F1(dirs)3.938 E F0 -.2(bu) +108 573.6 S .455(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.955(dw).1 G .455(ith the tilde-pre\214x as an ar)-2.955 F 2.954(gument. If)-.18 F .454(the characters follo)2.954 F .454 (wing the tilde in the tilde-pre\214x)-.25 F (consist of a number without a leading `+' or `\255', `+' is assumed.) -108 537.6 Q(If the login name is in)108 554.4 Q -.25(va)-.4 G +108 585.6 Q(If the login name is in)108 602.4 Q -.25(va)-.4 G (lid, or the tilde e).25 E(xpansion f)-.15 E(ails, the w)-.1 E -(ord is unchanged.)-.1 E .166(Each v)108 571.2 R .167 +(ord is unchanged.)-.1 E .166(Each v)108 619.2 R .167 (ariable assignment is check)-.25 F .167(ed for unquoted tilde-pre\214x) --.1 F .167(es immediately follo)-.15 F .167(wing a)-.25 F F2(:)2.667 E -F0 .167(or the \214rst)2.667 F F2(=)2.667 E F0 5.167(.I)C(n)-5.167 E -.468(these cases, tilde e)108 583.2 R .468(xpansion is also performed.) +-.1 F .167(es immediately follo)-.15 F .167(wing a)-.25 F F1(:)2.667 E +F0 .167(or the \214rst)2.667 F F1(=)2.667 E F0 5.167(.I)C(n)-5.167 E +.468(these cases, tilde e)108 631.2 R .468(xpansion is also performed.) -.15 F(Consequently)5.467 E 2.967(,o)-.65 G .467 (ne may use \214lenames with tildes in assign-)-2.967 F(ments to)108 -595.2 Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25 E -.855(AT) +643.2 Q F3 -.666(PA)2.5 G(TH)-.189 E F4(,)A F3(MAILP)2.25 E -.855(AT) -.666 G(H).855 E F4(,)A F0(and)2.25 E F3(CDP)2.5 E -.855(AT)-.666 G(H) .855 E F4(,)A F0(and the shell assigns the e)2.25 E(xpanded v)-.15 E -(alue.)-.25 E F2 -.1(Pa)87 612 S(rameter Expansion).1 E F0 1.605(The `) -108 624 R F2($)A F0 4.105('c)C 1.605(haracter introduces parameter e) +(alue.)-.25 E F1 -.1(Pa)87 660 S(rameter Expansion).1 E F0 1.605(The `) +108 672 R F1($)A F0 4.105('c)C 1.605(haracter introduces parameter e) -4.105 F 1.606(xpansion, command substitution, or arithmetic e)-.15 F -4.106(xpansion. The)-.15 F .407(parameter name or symbol to be e)108 636 +4.106(xpansion. The)-.15 F .407(parameter name or symbol to be e)108 684 R .407(xpanded may be enclosed in braces, which are optional b)-.15 F .406(ut serv)-.2 F 2.906(et)-.15 G 2.906(op)-2.906 G(ro-)-2.906 E .032 -(tect the v)108 648 R .032(ariable to be e)-.25 F .032 +(tect the v)108 696 R .032(ariable to be e)-.25 F .032 (xpanded from characters immediately follo)-.15 F .033 -(wing it which could be interpreted as part)-.25 F(of the name.)108 660 +(wing it which could be interpreted as part)-.25 F(of the name.)108 708 Q 1.19(When braces are used, the matching ending brace is the \214rst `) -108 676.8 R F2(})A F0 3.689('n)C 1.189 -(ot escaped by a backslash or within a)-3.689 F 2.15 -(quoted string, and not within an embedded arithmetic e)108 688.8 R 2.15 -(xpansion, command substitution, or parameter)-.15 F -.15(ex)108 700.8 S -(pansion.).15 E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(20) -190.395 E 0 Cg EP +108 724.8 R F1(})A F0 3.689('n)C 1.189 +(ot escaped by a backslash or within a)-3.689 F(GNU Bash 4.4)72 768 Q +(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(20)185.545 E 0 Cg EP %%Page: 21 21 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(${)108 84 Q/F1 10 -/Times-Italic@0 SF(par)A(ameter)-.15 E F0(})A 1.205(The v)144 96 R 1.205 -(alue of)-.25 F F1(par)3.705 E(ameter)-.15 E F0 1.204(is substituted.) -3.705 F 1.204(The braces are required when)6.204 F F1(par)4.954 E -(ameter)-.15 E F0 1.204(is a positional)4.434 F .264 -(parameter with more than one digit, or when)144 108 R F1(par)4.014 E +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.15 +(quoted string, and not within an embedded arithmetic e)108 84 R 2.15 +(xpansion, command substitution, or parameter)-.15 F -.15(ex)108 96 S +(pansion.).15 E(${)108 112.8 Q/F1 10/Times-Italic@0 SF(par)A(ameter)-.15 +E F0(})A 1.205(The v)144 124.8 R 1.205(alue of)-.25 F F1(par)3.705 E +(ameter)-.15 E F0 1.204(is substituted.)3.705 F 1.204 +(The braces are required when)6.204 F F1(par)4.954 E(ameter)-.15 E F0 +1.204(is a positional)4.434 F .264 +(parameter with more than one digit, or when)144 136.8 R F1(par)4.014 E (ameter)-.15 E F0 .264(is follo)3.494 F .264 (wed by a character which is not to)-.25 F 2.677 -(be interpreted as part of its name.)144 120 R(The)7.677 E F1(par)5.177 -E(ameter)-.15 E F0 2.676(is a shell parameter as described abo)5.177 F --.15(ve)-.15 G/F2 10/Times-Bold@0 SF -.74(PA)144 132 S(RAMETERS).74 E F0 -2.5(\)o)C 2.5(ra)-2.5 G 2.5(na)-2.5 G(rray reference \()-2.5 E F2 -(Arrays)A F0(\).)A .346(If the \214rst character of)108 148.8 R F1(par) -2.846 E(ameter)-.15 E F0 .346(is an e)2.846 F .346(xclamation point \() --.15 F F2(!)A F0 .346(\), and)B F1(par)2.846 E(ameter)-.15 E F0 .346 -(is not a)2.846 F F1(namer)2.846 E(ef)-.37 E F0 2.847(,i)C 2.847(ti) --2.847 G(ntroduces)-2.847 E 2.635(al)108 160.8 S -2.15 -.25(ev e)-2.635 -H 2.635(lo).25 G 2.635(fv)-2.635 G .135(ariable indirection.)-2.885 F F2 -(Bash)5.134 E F0 .134(uses the v)2.634 F .134(alue of the v)-.25 F .134 +(be interpreted as part of its name.)144 148.8 R(The)7.677 E F1(par) +5.177 E(ameter)-.15 E F0 2.676(is a shell parameter as described abo) +5.177 F -.15(ve)-.15 G/F2 10/Times-Bold@0 SF -.74(PA)144 160.8 S +(RAMETERS).74 E F0 2.5(\)o)C 2.5(ra)-2.5 G 2.5(na)-2.5 G +(rray reference \()-2.5 E F2(Arrays)A F0(\).)A .346 +(If the \214rst character of)108 177.6 R F1(par)2.846 E(ameter)-.15 E F0 +.346(is an e)2.846 F .346(xclamation point \()-.15 F F2(!)A F0 .346 +(\), and)B F1(par)2.846 E(ameter)-.15 E F0 .346(is not a)2.846 F F1 +(namer)2.846 E(ef)-.37 E F0 2.847(,i)C 2.847(ti)-2.847 G(ntroduces) +-2.847 E 2.635(al)108 189.6 S -2.15 -.25(ev e)-2.635 H 2.635(lo).25 G +2.635(fv)-2.635 G .135(ariable indirection.)-2.885 F F2(Bash)5.134 E F0 +.134(uses the v)2.634 F .134(alue of the v)-.25 F .134 (ariable formed from the rest of)-.25 F F1(par)2.634 E(ameter)-.15 E F0 -.134(as the)2.634 F 1.003(name of the v)108 172.8 R 1.003 +.134(as the)2.634 F 1.003(name of the v)108 201.6 R 1.003 (ariable; this v)-.25 F 1.003(ariable is then e)-.25 F 1.003 (xpanded and that v)-.15 F 1.003 (alue is used in the rest of the substitution,)-.25 F .595 -(rather than the v)108 184.8 R .595(alue of)-.25 F F1(par)3.095 E +(rather than the v)108 213.6 R .595(alue of)-.25 F F1(par)3.095 E (ameter)-.15 E F0 3.095(itself. This)3.095 F .595(is kno)3.095 F .595 (wn as)-.25 F F1(indir)3.095 E .595(ect e)-.37 F(xpansion)-.2 E F0 5.594 (.I)C(f)-5.594 E F1(par)3.094 E(ameter)-.15 E F0 .594(is a nameref,) -3.094 F .477(this e)108 196.8 R .477(xpands to the name of the v)-.15 F +3.094 F .477(this e)108 225.6 R .477(xpands to the name of the v)-.15 F .477(ariable referenced by)-.25 F F1(par)2.978 E(ameter)-.15 E F0 .478 -(instead of performing the complete indi-)2.978 F 2.164(rect e)108 208.8 +(instead of performing the complete indi-)2.978 F 2.164(rect e)108 237.6 R 4.663(xpansion. The)-.15 F -.15(ex)4.663 G 2.163 (ceptions to this are the e).15 F 2.163(xpansions of ${)-.15 F F2(!)A F1 (pr)A(e\214x)-.37 E F2(*)A F0 4.663(}a)C 2.163(nd ${)-4.663 F F2(!)A F1 -(name)A F0([)A F1(@)A F0 2.163(]} described)B(belo)108 220.8 Q 3.8 -.65 +(name)A F0([)A F1(@)A F0 2.163(]} described)B(belo)108 249.6 Q 3.8 -.65 (w. T)-.25 H(he e).65 E(xclamation point must immediately follo)-.15 E 2.5(wt)-.25 G(he left brace in order to introduce indirection.)-2.5 E -.334(In each of the cases belo)108 237.6 R -.65(w,)-.25 G F1(wor)3.484 E +.334(In each of the cases belo)108 266.4 R -.65(w,)-.25 G F1(wor)3.484 E (d)-.37 E F0 .334(is subject to tilde e)2.834 F .334 (xpansion, parameter e)-.15 F .334(xpansion, command substitution,)-.15 -F(and arithmetic e)108 249.6 Q(xpansion.)-.15 E 1.09 -(When not performing substring e)108 266.4 R 1.089 +F(and arithmetic e)108 278.4 Q(xpansion.)-.15 E 1.09 +(When not performing substring e)108 295.2 R 1.089 (xpansion, using the forms documented belo)-.15 F 3.589(w\()-.25 G (e.g.,)-3.589 E F2(:-)3.589 E F0(\),)A F2(bash)3.589 E F0 1.089 -(tests for a)3.589 F(parameter that is unset or null.)108 278.4 Q(Omitt\ +(tests for a)3.589 F(parameter that is unset or null.)108 307.2 Q(Omitt\ ing the colon results in a test only for a parameter that is unset.)5 E -(${)108 295.2 Q F1(par)A(ameter)-.15 E F2<3aad>A F1(wor)A(d)-.37 E F0(}) -A F2 .722(Use Default V)144 307.2 R(alues)-.92 E F0 5.722(.I)C(f)-5.722 -E F1(par)4.472 E(ameter)-.15 E F0 .723(is unset or null, the e)3.952 F -.723(xpansion of)-.15 F F1(wor)3.563 E(d)-.37 E F0 .723(is substituted.) -3.993 F(Other)5.723 E(-)-.2 E(wise, the v)144 319.2 Q(alue of)-.25 E F1 -(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 331.2 Q F1 -(par)A(ameter)-.15 E F2(:=)A F1(wor)A(d)-.37 E F0(})A F2 2.005 -(Assign Default V)144 343.2 R(alues)-.92 E F0 7.005(.I)C(f)-7.005 E F1 +(${)108 324 Q F1(par)A(ameter)-.15 E F2<3aad>A F1(wor)A(d)-.37 E F0(})A +F2 .722(Use Default V)144 336 R(alues)-.92 E F0 5.722(.I)C(f)-5.722 E F1 +(par)4.472 E(ameter)-.15 E F0 .723(is unset or null, the e)3.952 F .723 +(xpansion of)-.15 F F1(wor)3.563 E(d)-.37 E F0 .723(is substituted.) +3.993 F(Other)5.723 E(-)-.2 E(wise, the v)144 348 Q(alue of)-.25 E F1 +(par)3.75 E(ameter)-.15 E F0(is substituted.)3.23 E(${)108 360 Q F1(par) +A(ameter)-.15 E F2(:=)A F1(wor)A(d)-.37 E F0(})A F2 2.005 +(Assign Default V)144 372 R(alues)-.92 E F0 7.005(.I)C(f)-7.005 E F1 (par)5.755 E(ameter)-.15 E F0 2.005(is unset or null, the e)5.235 F 2.004(xpansion of)-.15 F F1(wor)4.844 E(d)-.37 E F0 2.004 -(is assigned to)5.274 F F1(par)144 355.2 Q(ameter)-.15 E F0 5.278(.T).73 -G .278(he v)-5.278 F .278(alue of)-.25 F F1(par)4.028 E(ameter)-.15 E F0 +(is assigned to)5.274 F F1(par)144 384 Q(ameter)-.15 E F0 5.278(.T).73 G +.278(he v)-5.278 F .278(alue of)-.25 F F1(par)4.028 E(ameter)-.15 E F0 .278(is then substituted.)3.508 F .279 (Positional parameters and special param-)5.278 F -(eters may not be assigned to in this w)144 367.2 Q(ay)-.1 E(.)-.65 E -(${)108 379.2 Q F1(par)A(ameter)-.15 E F2(:?)A F1(wor)A(d)-.37 E F0(})A -F2 .535(Display Err)144 391.2 R .535(or if Null or Unset)-.18 F F0 5.535 -(.I)C(f)-5.535 E F1(par)4.285 E(ameter)-.15 E F0 .535 +(eters may not be assigned to in this w)144 396 Q(ay)-.1 E(.)-.65 E(${) +108 408 Q F1(par)A(ameter)-.15 E F2(:?)A F1(wor)A(d)-.37 E F0(})A F2 +.535(Display Err)144 420 R .535(or if Null or Unset)-.18 F F0 5.535(.I)C +(f)-5.535 E F1(par)4.285 E(ameter)-.15 E F0 .535 (is null or unset, the e)3.765 F .535(xpansion of)-.15 F F1(wor)3.035 E -(d)-.37 E F0 .535(\(or a mes-)3.035 F .661(sage to that ef)144 403.2 R +(d)-.37 E F0 .535(\(or a mes-)3.035 F .661(sage to that ef)144 432 R .661(fect if)-.25 F F1(wor)3.501 E(d)-.37 E F0 .662(is not present\) is\ written to the standard error and the shell, if it is not)3.931 F -(interacti)144 415.2 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,) +(interacti)144 444 Q -.15(ve)-.25 G 2.5(,e).15 G 2.5(xits. Otherwise,) -2.65 F(the v)2.5 E(alue of)-.25 E F1(par)2.5 E(ameter)-.15 E F0 -(is substituted.)2.5 E(${)108 427.2 Q F1(par)A(ameter)-.15 E F2(:+)A F1 -(wor)A(d)-.37 E F0(})A F2 .745(Use Alter)144 439.2 R .745(nate V)-.15 F +(is substituted.)2.5 E(${)108 456 Q F1(par)A(ameter)-.15 E F2(:+)A F1 +(wor)A(d)-.37 E F0(})A F2 .745(Use Alter)144 468 R .745(nate V)-.15 F (alue)-.92 E F0 5.745(.I)C(f)-5.745 E F1(par)4.495 E(ameter)-.15 E F0 .745(is null or unset, nothing is substituted, otherwise the e)3.975 F -(xpan-)-.15 E(sion of)144 451.2 Q F1(wor)2.84 E(d)-.37 E F0 -(is substituted.)3.27 E(${)108 463.2 Q F1(par)A(ameter)-.15 E F2(:)A F1 -(of)A(fset)-.18 E F0(})A(${)108 475.2 Q F1(par)A(ameter)-.15 E F2(:)A F1 +(xpan-)-.15 E(sion of)144 480 Q F1(wor)2.84 E(d)-.37 E F0 +(is substituted.)3.27 E(${)108 492 Q F1(par)A(ameter)-.15 E F2(:)A F1 +(of)A(fset)-.18 E F0(})A(${)108 504 Q F1(par)A(ameter)-.15 E F2(:)A F1 (of)A(fset)-.18 E F2(:)A F1(length)A F0(})A F2 .002(Substring Expansion) -144 487.2 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F1(length)2.502 -E F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F1(par)2.502 E +144 516 R F0 5.002(.E)C .002(xpands to up to)-5.002 F F1(length)2.502 E +F0 .002(characters of the v)2.502 F .002(alue of)-.25 F F1(par)2.502 E (ameter)-.15 E F0 .002(starting at the)2.502 F 1.082 -(character speci\214ed by)144 499.2 R F1(of)3.582 E(fset)-.18 E F0 6.082 +(character speci\214ed by)144 528 R F1(of)3.582 E(fset)-.18 E F0 6.082 (.I)C(f)-6.082 E F1(par)3.582 E(ameter)-.15 E F0(is)3.582 E F2(@)3.582 E F0 3.582(,a)C 3.582(ni)-3.582 G(nde)-3.582 E -.15(xe)-.15 G 3.582(da).15 G 1.082(rray subscripted by)-3.582 F F2(@)3.582 E F0(or)3.581 E F2(*) -3.581 E F0 3.581(,o)C 3.581(ra)-3.581 G(n)-3.581 E(associati)144 511.2 Q +3.581 E F0 3.581(,o)C 3.581(ra)-3.581 G(n)-3.581 E(associati)144 540 Q 1.022 -.15(ve a)-.25 H .722(rray name, the results dif).15 F .722 (fer as described belo)-.25 F 4.522 -.65(w. I)-.25 H(f).65 E F1(length) 3.222 E F0 .722(is omitted, e)3.222 F .722(xpands to the)-.15 F .043 -(substring of the v)144 523.2 R .043(alue of)-.25 F F1(par)2.543 E -(ameter)-.15 E F0 .042(starting at the character speci\214ed by)2.543 F -F1(of)2.542 E(fset)-.18 E F0 .042(and e)2.542 F .042(xtending to the) --.15 F .846(end of the v)144 535.2 R(alue.)-.25 E F1(length)5.846 E F0 -(and)3.346 E F1(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F -.847(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .847(ARITHMETIC EV) -3.347 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 547.2 Q -(w\).)-.25 E(If)144 571.2 Q F1(of)3.029 E(fset)-.18 E F0 -.25(eva)3.029 -G .529(luates to a number less than zero, the v).25 F .529 +(substring of the v)144 552 R .043(alue of)-.25 F F1(par)2.543 E(ameter) +-.15 E F0 .042(starting at the character speci\214ed by)2.543 F F1(of) +2.542 E(fset)-.18 E F0 .042(and e)2.542 F .042(xtending to the)-.15 F +.846(end of the v)144 564 R(alue.)-.25 E F1(length)5.846 E F0(and)3.346 +E F1(of)3.346 E(fset)-.18 E F0 .846(are arithmetic e)3.346 F .847 +(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .847(ARITHMETIC EV)3.347 F +(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 576 Q(w\).)-.25 E +(If)144 600 Q F1(of)3.029 E(fset)-.18 E F0 -.25(eva)3.029 G .529 +(luates to a number less than zero, the v).25 F .529 (alue is used as an of)-.25 F .529(fset in characters from the)-.25 F -.045(end of the v)144 583.2 R .045(alue of)-.25 F F1(par)2.546 E(ameter) +.045(end of the v)144 612 R .045(alue of)-.25 F F1(par)2.546 E(ameter) -.15 E F0 5.046(.I)C(f)-5.046 E F1(length)2.546 E F0 -.25(eva)2.546 G .046(luates to a number less than zero, it is interpreted as an).25 F -(of)144 595.2 Q .203(fset in characters from the end of the v)-.25 F -.202(alue of)-.25 F F1(par)2.702 E(ameter)-.15 E F0 .202 -(rather than a number of characters, and)2.702 F .557(the e)144 607.2 R +(of)144 624 Q .203(fset in characters from the end of the v)-.25 F .202 +(alue of)-.25 F F1(par)2.702 E(ameter)-.15 E F0 .202 +(rather than a number of characters, and)2.702 F .557(the e)144 636 R .557(xpansion is the characters between)-.15 F F1(of)3.057 E(fset)-.18 E F0 .557(and that result.)3.057 F .558(Note that a ne)5.558 F -.05(ga) -.15 G(ti).05 E .858 -.15(ve o)-.25 H -.25(ff).15 G .558(set must be).25 -F(separated from the colon by at least one space to a)144 619.2 Q -.2 -(vo)-.2 G(id being confused with the).2 E F2(:-)2.5 E F0 -.15(ex)2.5 G -(pansion.).15 E(If)144 643.2 Q F1(par)2.959 E(ameter)-.15 E F0(is)2.959 -E F2(@)2.959 E F0 2.959(,t)C .459(he result is)-2.959 F F1(length)2.959 -E F0 .459(positional parameters be)2.959 F .458(ginning at)-.15 F F1(of) +F(separated from the colon by at least one space to a)144 648 Q -.2(vo) +-.2 G(id being confused with the).2 E F2(:-)2.5 E F0 -.15(ex)2.5 G +(pansion.).15 E(If)144 672 Q F1(par)2.959 E(ameter)-.15 E F0(is)2.959 E +F2(@)2.959 E F0 2.959(,t)C .459(he result is)-2.959 F F1(length)2.959 E +F0 .459(positional parameters be)2.959 F .458(ginning at)-.15 F F1(of) 2.958 E(fset)-.18 E F0 5.458(.A)C(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15 -(ve)-.25 G F1(of)3.108 E(fset)-.18 E F0 .095(is tak)144 655.2 R .095 +(ve)-.25 G F1(of)3.108 E(fset)-.18 E F0 .095(is tak)144 684 R .095 (en relati)-.1 F .396 -.15(ve t)-.25 H 2.596(oo).15 G .096 (ne greater than the greatest positional parameter)-2.596 F 2.596(,s)-.4 G 2.596(oa)-2.596 G 2.596(no)-2.596 G -.25(ff)-2.596 G .096(set of -1 e) .25 F -.25(va)-.25 G .096(luates to).25 F 1.322 -(the last positional parameter)144 667.2 R 6.322(.I)-.55 G 3.822(ti) --6.322 G 3.822(sa)-3.822 G 3.822(ne)-3.822 G 1.322(xpansion error if) --3.972 F F1(length)3.822 E F0 -.25(eva)3.822 G 1.322 -(luates to a number less than).25 F(zero.)144 679.2 Q(If)144 703.2 Q F1 -(par)3.013 E(ameter)-.15 E F0 .514(is an inde)3.013 F -.15(xe)-.15 G -3.014(da).15 G .514(rray name subscripted by @ or *, the result is the) --3.014 F F1(length)3.014 E F0 .514(members of)3.014 F 1.082 -(the array be)144 715.2 R 1.082(ginning with ${)-.15 F F1(par)A(ameter) --.15 E F0([)A F1(of)A(fset)-.18 E F0 3.582(]}. A)B(ne)3.582 E -.05(ga) --.15 G(ti).05 E -.15(ve)-.25 G F1(of)3.732 E(fset)-.18 E F0 1.081 -(is tak)3.581 F 1.081(en relati)-.1 F 1.381 -.15(ve t)-.25 H 3.581(oo) -.15 G 1.081(ne greater)-3.581 F 1.079(than the maximum inde)144 727.2 R -3.579(xo)-.15 G 3.579(ft)-3.579 G 1.079(he speci\214ed array)-3.579 F -6.079(.I)-.65 G 3.579(ti)-6.079 G 3.579(sa)-3.579 G 3.58(ne)-3.579 G -1.08(xpansion error if)-3.73 F F1(length)3.58 E F0 -.25(eva)3.58 G 1.08 -(luates to a).25 F(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(21) -190.395 E 0 Cg EP +(the last positional parameter)144 696 R 6.322(.I)-.55 G 3.822(ti)-6.322 +G 3.822(sa)-3.822 G 3.822(ne)-3.822 G 1.322(xpansion error if)-3.972 F +F1(length)3.822 E F0 -.25(eva)3.822 G 1.322 +(luates to a number less than).25 F(zero.)144 708 Q(GNU Bash 4.4)72 768 +Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(21)185.545 E 0 Cg EP %%Page: 22 22 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(number less than zero.)144 84 Q(Substring e)144 108 Q -(xpansion applied to an associati)-.15 E .3 -.15(ve a)-.25 H -(rray produces unde\214ned results.).15 E 1.931(Substring inde)144 132 R -1.931(xing is zero-based unless the positional parameters are used, in \ -which case the)-.15 F(inde)144 144 Q .306(xing starts at 1 by def)-.15 F -2.806(ault. If)-.1 F/F1 10/Times-Italic@0 SF(of)2.807 E(fset)-.18 E F0 -.307(is 0, and the positional parameters are used,)2.807 F/F2 10 -/Times-Bold@0 SF($0)2.807 E F0 .307(is pre\214x)2.807 F(ed)-.15 E -(to the list.)144 156 Q(${)108 172.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2 -(*)A F0(})A(${)108 184.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(@)A F0(})A F2 -.085(Names matching pr)144 196.8 R(e\214x)-.18 E F0 5.085(.E)C .084 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(If)144 84 Q/F1 10 +/Times-Italic@0 SF(par)3.013 E(ameter)-.15 E F0 .514(is an inde)3.013 F +-.15(xe)-.15 G 3.014(da).15 G .514 +(rray name subscripted by @ or *, the result is the)-3.014 F F1(length) +3.014 E F0 .514(members of)3.014 F 1.082(the array be)144 96 R 1.082 +(ginning with ${)-.15 F F1(par)A(ameter)-.15 E F0([)A F1(of)A(fset)-.18 +E F0 3.582(]}. A)B(ne)3.582 E -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G F1 +(of)3.732 E(fset)-.18 E F0 1.081(is tak)3.581 F 1.081(en relati)-.1 F +1.381 -.15(ve t)-.25 H 3.581(oo).15 G 1.081(ne greater)-3.581 F 1.079 +(than the maximum inde)144 108 R 3.579(xo)-.15 G 3.579(ft)-3.579 G 1.079 +(he speci\214ed array)-3.579 F 6.079(.I)-.65 G 3.579(ti)-6.079 G 3.579 +(sa)-3.579 G 3.58(ne)-3.579 G 1.08(xpansion error if)-3.73 F F1(length) +3.58 E F0 -.25(eva)3.58 G 1.08(luates to a).25 F(number less than zero.) +144 120 Q(Substring e)144 144 Q(xpansion applied to an associati)-.15 E +.3 -.15(ve a)-.25 H(rray produces unde\214ned results.).15 E 1.931 +(Substring inde)144 168 R 1.931(xing is zero-based unless the positiona\ +l parameters are used, in which case the)-.15 F(inde)144 180 Q .306 +(xing starts at 1 by def)-.15 F 2.806(ault. If)-.1 F F1(of)2.807 E(fset) +-.18 E F0 .307(is 0, and the positional parameters are used,)2.807 F/F2 +10/Times-Bold@0 SF($0)2.807 E F0 .307(is pre\214x)2.807 F(ed)-.15 E +(to the list.)144 192 Q(${)108 208.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2 +(*)A F0(})A(${)108 220.8 Q F2(!)A F1(pr)A(e\214x)-.37 E F2(@)A F0(})A F2 +.085(Names matching pr)144 232.8 R(e\214x)-.18 E F0 5.085(.E)C .084 (xpands to the names of v)-5.085 F .084(ariables whose names be)-.25 F .084(gin with)-.15 F F1(pr)2.584 E(e\214x)-.37 E F0 2.584(,s)C(epa-) --2.584 E .257(rated by the \214rst character of the)144 208.8 R/F3 9 +-2.584 E .257(rated by the \214rst character of the)144 244.8 R/F3 9 /Times-Bold@0 SF(IFS)2.757 E F0 .257(special v)2.507 F 2.757 (ariable. When)-.25 F F1(@)2.758 E F0 .258(is used and the e)2.758 F -.258(xpansion appears)-.15 F(within double quotes, each v)144 220.8 Q +.258(xpansion appears)-.15 F(within double quotes, each v)144 256.8 Q (ariable name e)-.25 E(xpands to a separate w)-.15 E(ord.)-.1 E(${)108 -237.6 Q F2(!)A F1(name)A F0([)A F1(@)A F0(]})A(${)108 249.6 Q F2(!)A F1 -(name)A F0([)A F1(*)A F0(]})A F2 2.036(List of array k)144 261.6 R(eys) +273.6 Q F2(!)A F1(name)A F0([)A F1(@)A F0(]})A(${)108 285.6 Q F2(!)A F1 +(name)A F0([)A F1(*)A F0(]})A F2 2.036(List of array k)144 297.6 R(eys) -.1 E F0 7.036(.I)C(f)-7.036 E F1(name)4.536 E F0 2.036(is an array v) 4.536 F 2.036(ariable, e)-.25 F 2.036 (xpands to the list of array indices \(k)-.15 F -.15(ey)-.1 G(s\)).15 E -.595(assigned in)144 273.6 R F1(name)3.095 E F0 5.595(.I)C(f)-5.595 E F1 +.595(assigned in)144 309.6 R F1(name)3.095 E F0 5.595(.I)C(f)-5.595 E F1 (name)3.095 E F0 .595(is not an array)3.095 F 3.095(,e)-.65 G .595 (xpands to 0 if)-3.245 F F1(name)3.095 E F0 .596 -(is set and null otherwise.)3.095 F(When)5.596 E F1(@)144 285.6 Q F0 +(is set and null otherwise.)3.095 F(When)5.596 E F1(@)144 321.6 Q F0 (is used and the e)2.5 E(xpansion appears within double quotes, each k) -.15 E .3 -.15(ey ex)-.1 H(pands to a separate w).15 E(ord.)-.1 E(${)108 -302.4 Q F2(#)A F1(par)A(ameter)-.15 E F0(})A F2 -.1(Pa)144 314.4 S .471 +338.4 Q F2(#)A F1(par)A(ameter)-.15 E F0(})A F2 -.1(Pa)144 350.4 S .471 (rameter length).1 F F0 5.471(.T)C .471 (he length in characters of the v)-5.471 F .471(alue of)-.25 F F1(par) 2.971 E(ameter)-.15 E F0 .47(is substituted.)2.97 F(If)5.47 E F1(par) -4.22 E(ame-)-.15 E(ter)144 326.4 Q F0(is)4.438 E F2(*)3.708 E F0(or) +4.22 E(ame-)-.15 E(ter)144 362.4 Q F0(is)4.438 E F2(*)3.708 E F0(or) 3.708 E F2(@)3.708 E F0 3.708(,t)C 1.208(he v)-3.708 F 1.208 (alue substituted is the number of positional parameters.)-.25 F(If) 6.209 E F1(par)4.959 E(ameter)-.15 E F0 1.209(is an)4.439 F .349 -(array name subscripted by)144 338.4 R F2(*)2.849 E F0(or)2.849 E F2(@) +(array name subscripted by)144 374.4 R F2(*)2.849 E F0(or)2.849 E F2(@) 2.849 E F0 2.849(,t)C .349(he v)-2.849 F .349 (alue substituted is the number of elements in the array)-.25 F 5.348 -(.I)-.65 G(f)-5.348 E F1(par)145.25 350.4 Q(ameter)-.15 E F0 .455 +(.I)-.65 G(f)-5.348 E F1(par)145.25 386.4 Q(ameter)-.15 E F0 .455 (is an inde)3.685 F -.15(xe)-.15 G 2.955(da).15 G .456 (rray name subscripted by a ne)-2.955 F -.05(ga)-.15 G(ti).05 E .756 -.15(ve n)-.25 H(umber).15 E 2.956(,t)-.4 G .456 -(hat number is interpreted)-2.956 F .973(as relati)144 362.4 R 1.273 +(hat number is interpreted)-2.956 F .973(as relati)144 398.4 R 1.273 -.15(ve t)-.25 H 3.473(oo).15 G .973(ne greater than the maximum inde) -3.473 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0 3.472(,s)C 3.472(on)-3.472 G -2.25 -.15(eg a)-3.472 H(ti).15 E 1.272 -.15(ve i)-.25 H .972(ndices count back).15 F(from the end of the array) -144 374.4 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 -G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 391.2 Q F1 -(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A(${)108 403.2 Q F1 -(par)A(ameter)-.15 E F2(##)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 415.2 +144 410.4 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 +G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 427.2 Q F1 +(par)A(ameter)-.15 E F2(#)A F1(wor)A(d)-.37 E F0(})A(${)108 439.2 Q F1 +(par)A(ameter)-.15 E F2(##)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 451.2 Q 1.396 -.1(ve m)-.1 H 1.196(atching pr).1 F 1.196(e\214x patter)-.18 F (n)-.15 E F0 6.196(.T)C(he)-6.196 E F1(wor)4.036 E(d)-.37 E F0 1.196 (is e)4.466 F 1.196(xpanded to produce a pattern just as in path-)-.15 F -.152(name e)144 427.2 R 2.652(xpansion. If)-.15 F .152 +.152(name e)144 463.2 R 2.652(xpansion. If)-.15 F .152 (the pattern matches the be)2.652 F .152(ginning of the v)-.15 F .152 (alue of)-.25 F F1(par)2.652 E(ameter)-.15 E F0 2.652(,t).73 G .151 -(hen the result of)-2.652 F 1.4(the e)144 439.2 R 1.4(xpansion is the e) +(hen the result of)-2.652 F 1.4(the e)144 475.2 R 1.4(xpansion is the e) -.15 F 1.4(xpanded v)-.15 F 1.4(alue of)-.25 F F1(par)5.15 E(ameter)-.15 E F0 1.4(with the shortest matching pattern \(the `)4.63 F(`)-.74 E F2 (#)A F0 -.74('')C .281(case\) or the longest matching pattern \(the `) -144 451.2 R(`)-.74 E F2(##)A F0 1.761 -.74('' c)D .281(ase\) deleted.) +144 487.2 R(`)-.74 E F2(##)A F0 1.761 -.74('' c)D .281(ase\) deleted.) .74 F(If)5.281 E F1(par)4.031 E(ameter)-.15 E F0(is)3.511 E F2(@)2.781 E F0(or)2.781 E F2(*)2.781 E F0 2.781(,t)C .281(he pattern)-2.781 F(remo) -144 463.2 Q -.25(va)-.15 G 3.274(lo).25 G .774 +144 499.2 Q -.25(va)-.15 G 3.274(lo).25 G .774 (peration is applied to each positional parameter in turn, and the e) --3.274 F .774(xpansion is the resul-)-.15 F .402(tant list.)144 475.2 R +-3.274 F .774(xpansion is the resul-)-.15 F .402(tant list.)144 511.2 R (If)5.402 E F1(par)4.152 E(ameter)-.15 E F0 .401(is an array v)3.632 F .401(ariable subscripted with)-.25 F F2(@)2.901 E F0(or)2.901 E F2(*) 2.901 E F0 2.901(,t)C .401(he pattern remo)-2.901 F -.25(va)-.15 G 2.901 (lo).25 G(peration)-2.901 E -(is applied to each member of the array in turn, and the e)144 487.2 Q -(xpansion is the resultant list.)-.15 E(${)108 504 Q F1(par)A(ameter) --.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 516 Q F1(par)A(ameter)-.15 -E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 528 Q .346 -.1(ve m)-.1 H +(is applied to each member of the array in turn, and the e)144 523.2 Q +(xpansion is the resultant list.)-.15 E(${)108 540 Q F1(par)A(ameter) +-.15 E F2(%)A F1(wor)A(d)-.37 E F0(})A(${)108 552 Q F1(par)A(ameter)-.15 +E F2(%%)A F1(wor)A(d)-.37 E F0(})A F2(Remo)144 564 Q .346 -.1(ve m)-.1 H .146(atching suf\214x patter).1 F(n)-.15 E F0 5.146(.T)C(he)-5.146 E F1 (wor)2.646 E(d)-.37 E F0 .147(is e)2.647 F .147 -(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 540 +(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 576 S 3.088(pansion. If).15 F .588 (the pattern matches a trailing portion of the e)3.088 F .588(xpanded v) -.15 F .588(alue of)-.25 F F1(par)3.088 E(ameter)-.15 E F0 3.088(,t).73 -G .588(hen the)-3.088 F .226(result of the e)144 552 R .226 +G .588(hen the)-3.088 F .226(result of the e)144 588 R .226 (xpansion is the e)-.15 F .226(xpanded v)-.15 F .226(alue of)-.25 F F1 (par)3.976 E(ameter)-.15 E F0 .226 -(with the shortest matching pattern \(the)3.456 F -.74(``)144 564 S F2 +(with the shortest matching pattern \(the)3.456 F -.74(``)144 600 S F2 (%).74 E F0 1.522 -.74('' c)D .042 (ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2(%%)A F0 1.522 -.74('' c)D .042(ase\) deleted.).74 F(If)5.042 E F1(par)3.792 E (ameter)-.15 E F0(is)3.272 E F2(@)2.541 E F0(or)2.541 E F2(*)2.541 E F0 -2.541(,t)C(he)-2.541 E .44(pattern remo)144 576 R -.25(va)-.15 G 2.94 +2.541(,t)C(he)-2.541 E .44(pattern remo)144 612 R -.25(va)-.15 G 2.94 (lo).25 G .441 (peration is applied to each positional parameter in turn, and the e) --2.94 F .441(xpansion is the)-.15 F .241(resultant list.)144 588 R(If) +-2.94 F .441(xpansion is the)-.15 F .241(resultant list.)144 624 R(If) 5.241 E F1(par)3.991 E(ameter)-.15 E F0 .241(is an array v)3.471 F .241 (ariable subscripted with)-.25 F F2(@)2.741 E F0(or)2.74 E F2(*)2.74 E F0 2.74(,t)C .24(he pattern remo)-2.74 F -.25(va)-.15 G 2.74(lo).25 G (per)-2.74 E(-)-.2 E -(ation is applied to each member of the array in turn, and the e)144 600 -Q(xpansion is the resultant list.)-.15 E(${)108 616.8 Q F1(par)A(ameter) --.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0(})A F2 -.1(Pa)144 628.8 +(ation is applied to each member of the array in turn, and the e)144 636 +Q(xpansion is the resultant list.)-.15 E(${)108 652.8 Q F1(par)A(ameter) +-.15 E F2(/)A F1(pattern)A F2(/)A F1(string)A F0(})A F2 -.1(Pa)144 664.8 S(tter).1 E 3.606(ns)-.15 G(ubstitution)-3.606 E F0 6.106(.T)C(he)-6.106 E F1(pattern)3.606 E F0 1.106(is e)3.606 F 1.107 (xpanded to produce a pattern just as in pathname e)-.15 F(xpan-)-.15 E -(sion.)144 640.8 Q F1 -.8(Pa)6.034 G -.15(ra).8 G(meter).15 E F0 1.034 +(sion.)144 676.8 Q F1 -.8(Pa)6.034 G -.15(ra).8 G(meter).15 E F0 1.034 (is e)3.534 F 1.033(xpanded and the longest match of)-.15 F F1(pattern) 3.533 E F0(ag)3.533 E 1.033(ainst its v)-.05 F 1.033 -(alue is replaced with)-.25 F F1(string)144 652.8 Q F0 5.16(.I)C(f)-5.16 +(alue is replaced with)-.25 F F1(string)144 688.8 Q F0 5.16(.I)C(f)-5.16 E F1(pattern)2.66 E F0(be)2.66 E .16(gins with)-.15 F F2(/)2.66 E F0 2.66(,a)C .161(ll matches of)-2.66 F F1(pattern)2.661 E F0 .161 (are replaced with)2.661 F F1(string)2.661 E F0 5.161(.N)C .161 -(ormally only the)-5.161 F .807(\214rst match is replaced.)144 664.8 R +(ormally only the)-5.161 F .807(\214rst match is replaced.)144 700.8 R (If)5.807 E F1(pattern)3.307 E F0(be)3.307 E .807(gins with)-.15 F F2(#) 3.307 E F0 3.306(,i)C 3.306(tm)-3.306 G .806(ust match at the be)-3.306 -F .806(ginning of the e)-.15 F(xpanded)-.15 E -.25(va)144 676.8 S .62 +F .806(ginning of the e)-.15 F(xpanded)-.15 E -.25(va)144 712.8 S .62 (lue of).25 F F1(par)3.12 E(ameter)-.15 E F0 5.62(.I)C(f)-5.62 E F1 (pattern)3.12 E F0(be)3.12 E .62(gins with)-.15 F F2(%)3.12 E F0 3.12 (,i)C 3.121(tm)-3.12 G .621(ust match at the end of the e)-3.121 F .621 -(xpanded v)-.15 F .621(alue of)-.25 F F1(par)144 688.8 Q(ameter)-.15 E +(xpanded v)-.15 F .621(alue of)-.25 F F1(par)144 724.8 Q(ameter)-.15 E F0 6.254(.I)C(f)-6.254 E F1(string)3.754 E F0 1.253(is null, matches of) 3.753 F F1(pattern)3.753 E F0 1.253(are deleted and the)3.753 F F2(/) 3.753 E F0(follo)3.753 E(wing)-.25 E F1(pattern)3.753 E F0 1.253(may be) -3.753 F 2.731(omitted. If)144 700.8 R(the)2.731 E F2(nocasematch)2.731 E -F0 .231(shell option is enabled, the match is performed without re)2.731 -F -.05(ga)-.15 G .232(rd to the).05 F .188 -(case of alphabetic characters.)144 712.8 R(If)5.188 E F1(par)3.938 E -(ameter)-.15 E F0(is)3.418 E F2(@)2.688 E F0(or)2.688 E F2(*)2.687 E F0 -2.687(,t)C .187(he substitution operation is applied to each)-2.687 F -1.884(positional parameter in turn, and the e)144 724.8 R 1.884 -(xpansion is the resultant list.)-.15 F(If)6.884 E F1(par)5.634 E -(ameter)-.15 E F0 1.884(is an array)5.114 F(GNU Bash 4.4)72 768 Q -(2015 October 11)141.235 E(22)190.395 E 0 Cg EP +3.753 F(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16) +.15 E(22)185.545 E 0 Cg EP %%Page: 23 23 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)144 84 S -.178(riable subscripted with).25 F/F1 10/Times-Bold@0 SF(@)2.678 E F0 -(or)2.678 E F1(*)2.678 E F0 2.678(,t)C .177 -(he substitution operation is applied to each member of the array)-2.678 -F(in turn, and the e)144 96 Q(xpansion is the resultant list.)-.15 E(${) -108 112.8 Q/F2 10/Times-Italic@0 SF(par)A(ameter)-.15 E F1(^)A F2 -(pattern)A F0(})A(${)108 124.8 Q F2(par)A(ameter)-.15 E F1(^^)A F2 -(pattern)A F0(})A(${)108 136.8 Q F2(par)A(ameter)-.15 E F1(,)A F2 -(pattern)A F0(})A(${)108 148.8 Q F2(par)A(ameter)-.15 E F1(,,)A F2 -(pattern)A F0(})A F1 .437(Case modi\214cation)144 160.8 R F0 5.437(.T)C -.437(his e)-5.437 F .438 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.731(omitted. If) +144 84 R(the)2.731 E/F1 10/Times-Bold@0 SF(nocasematch)2.731 E F0 .231 +(shell option is enabled, the match is performed without re)2.731 F -.05 +(ga)-.15 G .232(rd to the).05 F .188(case of alphabetic characters.)144 +96 R(If)5.188 E/F2 10/Times-Italic@0 SF(par)3.938 E(ameter)-.15 E F0(is) +3.418 E F1(@)2.688 E F0(or)2.688 E F1(*)2.687 E F0 2.687(,t)C .187 +(he substitution operation is applied to each)-2.687 F .445 +(positional parameter in turn, and the e)144 108 R .446 +(xpansion is the resultant list.)-.15 F(If)5.446 E F2(par)4.196 E +(ameter)-.15 E F0 .446(is an array v)3.676 F(ari-)-.25 E .463 +(able subscripted with)144 120 R F1(@)2.963 E F0(or)2.963 E F1(*)2.963 E +F0 2.963(,t)C .462 +(he substitution operation is applied to each member of the array in) +-2.963 F(turn, and the e)144 132 Q(xpansion is the resultant list.)-.15 +E(${)108 148.8 Q F2(par)A(ameter)-.15 E F1(^)A F2(pattern)A F0(})A(${) +108 160.8 Q F2(par)A(ameter)-.15 E F1(^^)A F2(pattern)A F0(})A(${)108 +172.8 Q F2(par)A(ameter)-.15 E F1(,)A F2(pattern)A F0(})A(${)108 184.8 Q +F2(par)A(ameter)-.15 E F1(,,)A F2(pattern)A F0(})A F1 .437 +(Case modi\214cation)144 196.8 R F0 5.437(.T)C .437(his e)-5.437 F .438 (xpansion modi\214es the case of alphabetic characters in)-.15 F F2(par) -2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F2(pattern)144 172.8 Q +2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F2(pattern)144 208.8 Q F0 1.407(is e)3.907 F 1.407 (xpanded to produce a pattern just as in pathname e)-.15 F 3.906 -(xpansion. Each)-.15 F 1.406(character in the)3.906 F -.15(ex)144 184.8 +(xpansion. Each)-.15 F 1.406(character in the)3.906 F -.15(ex)144 220.8 S 1.231(panded v).15 F 1.231(alue of)-.25 F F2(par)3.732 E(ameter)-.15 E F0 1.232(is tested ag)3.732 F(ainst)-.05 E F2(pattern)3.732 E F0 3.732 (,a)C 1.232(nd, if it matches the pattern, its case is)-3.732 F(con)144 -196.8 Q -.15(ve)-.4 G 2.924(rted. The).15 F .424 +232.8 Q -.15(ve)-.4 G 2.924(rted. The).15 F .424 (pattern should not attempt to match more than one character)2.924 F 5.424(.T)-.55 G(he)-5.424 E F1(^)2.924 E F0 .424(operator con-)2.924 F --.15(ve)144 208.8 S .61(rts lo).15 F .61(wercase letters matching)-.25 F +-.15(ve)144 244.8 S .61(rts lo).15 F .61(wercase letters matching)-.25 F F2(pattern)3.11 E F0 .61(to uppercase; the)3.11 F F1(,)3.11 E F0 .61 (operator con)3.11 F -.15(ve)-.4 G .61(rts matching uppercase).15 F -1.548(letters to lo)144 220.8 R 4.047(wercase. The)-.25 F F1(^^)4.047 E +1.548(letters to lo)144 256.8 R 4.047(wercase. The)-.25 F F1(^^)4.047 E F0(and)4.047 E F1(,,)4.047 E F0 -.15(ex)4.047 G 1.547(pansions con).15 F -.15(ve)-.4 G 1.547(rt each matched character in the e).15 F(xpanded) --.15 E -.25(va)144 232.8 S .633(lue; the).25 F F1(^)3.133 E F0(and)3.133 +-.15 E -.25(va)144 268.8 S .633(lue; the).25 F F1(^)3.133 E F0(and)3.133 E F1(,)3.133 E F0 -.15(ex)3.133 G .633(pansions match and con).15 F -.15 (ve)-.4 G .634(rt only the \214rst character in the e).15 F .634 -(xpanded v)-.15 F 3.134(alue. If)-.25 F F2(pattern)144 244.8 Q F0 .78 +(xpanded v)-.15 F 3.134(alue. If)-.25 F F2(pattern)144 280.8 Q F0 .78 (is omitted, it is treated lik)3.28 F 3.28(ea)-.1 G F1(?)A F0 3.28(,w)C .78(hich matches e)-3.28 F -.15(ve)-.25 G .78(ry character).15 F 5.78 (.I)-.55 G(f)-5.78 E F2(par)4.53 E(ameter)-.15 E F0(is)4.01 E F1(@)3.28 E F0(or)3.28 E F1(*)3.28 E F0(,)A .582(the case modi\214cation operatio\ -n is applied to each positional parameter in turn, and the e)144 256.8 R -(xpansion)-.15 E .469(is the resultant list.)144 268.8 R(If)5.469 E F2 +n is applied to each positional parameter in turn, and the e)144 292.8 R +(xpansion)-.15 E .469(is the resultant list.)144 304.8 R(If)5.469 E F2 (par)4.218 E(ameter)-.15 E F0 .468(is an array v)3.698 F .468 (ariable subscripted with)-.25 F F1(@)2.968 E F0(or)2.968 E F1(*)2.968 E F0 2.968(,t)C .468(he case modi\214ca-)-2.968 F(tion operation is appli\ -ed to each member of the array in turn, and the e)144 280.8 Q -(xpansion is the resultant list.)-.15 E(${)108 297.6 Q F2(par)A(ameter) --.15 E F1(@)A F2(oper)A(ator)-.15 E F0(})A F1 -.1(Pa)144 309.6 S .86 +ed to each member of the array in turn, and the e)144 316.8 Q +(xpansion is the resultant list.)-.15 E(${)108 333.6 Q F2(par)A(ameter) +-.15 E F1(@)A F2(oper)A(ator)-.15 E F0(})A F1 -.1(Pa)144 345.6 S .86 (rameter transf).1 F(ormation)-.25 E F0 5.86(.T)C .86(he e)-5.86 F .86 (xpansion is either a transformation of the v)-.15 F .86(alue of)-.25 F -F2(par)3.36 E(ameter)-.15 E F0 .154(or information about)144 321.6 R F2 +F2(par)3.36 E(ameter)-.15 E F0 .154(or information about)144 357.6 R F2 (par)2.654 E(ameter)-.15 E F0 .153(itself, depending on the v)2.654 F .153(alue of)-.25 F F2(oper)2.653 E(ator)-.15 E F0 5.153(.E)C(ach)-5.153 E F2(oper)2.653 E(ator)-.15 E F0 .153(is a sin-)2.653 F(gle letter:)144 -333.6 Q F1(Q)144 357.6 Q F0 1.064(The e)180 357.6 R 1.064 +369.6 Q F1(Q)144 393.6 Q F0 1.064(The e)180 393.6 R 1.064 (xpansion is a string that is the v)-.15 F 1.065(alue of)-.25 F F2(par) 3.565 E(ameter)-.15 E F0 1.065(quoted in a format that can be)3.565 F -(reused as input.)180 369.6 Q F1(E)144 381.6 Q F0 .441(The e)180 381.6 R +(reused as input.)180 405.6 Q F1(E)144 417.6 Q F0 .441(The e)180 417.6 R .441(xpansion is a string that is the v)-.15 F .441(alue of)-.25 F F2 (par)2.941 E(ameter)-.15 E F0 .44(with backslash escape sequences)2.94 F --.15(ex)180 393.6 S(panded as with the).15 E F1($'...)2.5 E(')-.55 E F0 -(quoting mechansim.)2.5 E F1(P)144 405.6 Q F0 1.072(The e)180 405.6 R +-.15(ex)180 429.6 S(panded as with the).15 E F1($'...)2.5 E(')-.55 E F0 +(quoting mechansim.)2.5 E F1(P)144 441.6 Q F0 1.072(The e)180 441.6 R 1.073(xpansion is a string that is the result of e)-.15 F 1.073 (xpanding the v)-.15 F 1.073(alue of)-.25 F F2(par)3.573 E(ameter)-.15 E -F0 1.073(as if it)3.573 F(were a prompt string \(see)180 417.6 Q F1(PR) -2.5 E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F1(A)144 429.6 Q F0 1.138 -(The e)180 429.6 R 1.138 +F0 1.073(as if it)3.573 F(were a prompt string \(see)180 453.6 Q F1(PR) +2.5 E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F1(A)144 465.6 Q F0 1.138 +(The e)180 465.6 R 1.138 (xpansion is a string in the form of an assignment statement or)-.15 F -F1(declar)3.637 E(e)-.18 E F0(command)3.637 E(that, if e)180 441.6 Q +F1(declar)3.637 E(e)-.18 E F0(command)3.637 E(that, if e)180 477.6 Q -.25(va)-.25 G(luated, will recreate).25 E F2(par)2.5 E(ameter)-.15 E F0 -(with its attrib)2.5 E(utes and v)-.2 E(alue.)-.25 E F1(a)144 453.6 Q F0 -(The e)180 453.6 Q(xpansion is a string consisting of \215ag v)-.15 E +(with its attrib)2.5 E(utes and v)-.2 E(alue.)-.25 E F1(a)144 489.6 Q F0 +(The e)180 489.6 Q(xpansion is a string consisting of \215ag v)-.15 E (alues representing)-.25 E F2(par)2.5 E(ameter)-.15 E F0 1.1 -.55('s a)D -(ttrib).55 E(utes.)-.2 E(If)144 470.4 Q F2(par)5.33 E(ameter)-.15 E F0 +(ttrib).55 E(utes.)-.2 E(If)144 506.4 Q F2(par)5.33 E(ameter)-.15 E F0 (is)4.81 E F1(@)4.08 E F0(or)4.08 E F1(*)4.08 E F0 4.08(,t)C 1.581 (he operation is applied to each positional parameter in turn, and the) --4.08 F -.15(ex)144 482.4 S .347(pansion is the resultant list.).15 F +-4.08 F -.15(ex)144 518.4 S .347(pansion is the resultant list.).15 F (If)5.347 E F2(par)4.097 E(ameter)-.15 E F0 .346(is an array v)3.577 F .346(ariable subscripted with)-.25 F F1(@)2.846 E F0(or)2.846 E F1(*) 2.846 E F0 2.846(,t)C .346(he case)-2.846 F 1.204(modi\214cation operat\ -ion is applied to each member of the array in turn, and the e)144 494.4 -R 1.204(xpansion is the)-.15 F(resultant list.)144 506.4 Q 1.85 -(The result of the e)144 530.4 R 1.849(xpansion is subject to w)-.15 F +ion is applied to each member of the array in turn, and the e)144 530.4 +R 1.204(xpansion is the)-.15 F(resultant list.)144 542.4 Q 1.85 +(The result of the e)144 566.4 R 1.849(xpansion is subject to w)-.15 F 1.849(ord splitting and pathname e)-.1 F 1.849(xpansion as described) --.15 F(belo)144 542.4 Q -.65(w.)-.25 G F1(Command Substitution)87 559.2 -Q F2 1.697(Command substitution)108 571.2 R F0(allo)4.197 E 1.697 +-.15 F(belo)144 578.4 Q -.65(w.)-.25 G F1(Command Substitution)87 595.2 +Q F2 1.697(Command substitution)108 607.2 R F0(allo)4.197 E 1.697 (ws the output of a command to replace the command name.)-.25 F 1.698 -(There are tw)6.698 F(o)-.1 E(forms:)108 583.2 Q F1($\()144 600 Q F2 -(command)A F1(\))1.666 E F0(or)108 612 Q F1<92>144 624 Q F2(command)A F1 -<92>A(Bash)108 640.8 Q F0 .02(performs the e)2.52 F .02(xpansion by e) --.15 F -.15(xe)-.15 G(cuting).15 E F2(command)2.519 E F0 .019 -(and replacing the command substitution with the stan-)2.519 F .768 -(dard output of the command, with an)108 652.8 R 3.268(yt)-.15 G .768 -(railing ne)-3.268 F .768(wlines deleted.)-.25 F .768(Embedded ne)5.768 -F .768(wlines are not deleted, b)-.25 F(ut)-.2 E(the)108 664.8 Q 3.219 -(ym)-.15 G .719(ay be remo)-3.219 F -.15(ve)-.15 G 3.219(dd).15 G .719 -(uring w)-3.219 F .719(ord splitting.)-.1 F .719 -(The command substitution)5.719 F F1($\(cat)3.219 E F2(\214le)3.219 E F1 -(\))A F0 .718(can be replaced by the)3.219 F(equi)108 676.8 Q -.25(va) --.25 G(lent b).25 E(ut f)-.2 E(aster)-.1 E F1($\(<)2.5 E F2(\214le)2.5 E -F1(\))A F0(.)A 1.724(When the old-style backquote form of substitution \ -is used, backslash retains its literal meaning e)108 693.6 R(xcept)-.15 -E .315(when follo)108 705.6 R .315(wed by)-.25 F F1($)2.815 E F0(,)A F1 -<92>2.815 E F0 2.815(,o)C(r)-2.815 E F1(\\)2.815 E F0 5.315(.T)C .314(h\ -e \214rst backquote not preceded by a backslash terminates the command \ -sub-)-5.315 F 3.886(stitution. When)108 717.6 R 1.386(using the $\() -3.886 F F2(command).833 E F0 3.886(\)f)1.666 G 1.387 -(orm, all characters between the parentheses mak)-3.886 F 3.887(eu)-.1 G -3.887(pt)-3.887 G 1.387(he com-)-3.887 F -(mand; none are treated specially)108 729.6 Q(.)-.65 E(GNU Bash 4.4)72 -768 Q(2015 October 11)141.235 E(23)190.395 E 0 Cg EP +(There are tw)6.698 F(o)-.1 E(forms:)108 619.2 Q F1($\()144 636 Q F2 +(command)A F1(\))1.666 E F0(or)108 648 Q F1<92>144 660 Q F2(command)A F1 +<92>A(Bash)108 676.8 Q F0 .089(performs the e)2.589 F .089 +(xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F2(command)2.589 E F0 +.088(in a subshell en)2.589 F .088(vironment and replacing the command) +-.4 F .41(substitution with the standard output of the command, with an) +108 688.8 R 2.91(yt)-.15 G .41(railing ne)-2.91 F .41(wlines deleted.) +-.25 F .41(Embedded ne)5.41 F(w-)-.25 E .192(lines are not deleted, b) +108 700.8 R .192(ut the)-.2 F 2.692(ym)-.15 G .192(ay be remo)-2.692 F +-.15(ve)-.15 G 2.692(dd).15 G .192(uring w)-2.692 F .192(ord splitting.) +-.1 F .192(The command substitution)5.192 F F1($\(cat)2.691 E F2(\214le) +2.691 E F1(\))A F0(can be replaced by the equi)108 712.8 Q -.25(va)-.25 +G(lent b).25 E(ut f)-.2 E(aster)-.1 E F1($\(<)2.5 E F2(\214le)2.5 E F1 +(\))A F0(.)A 1.724(When the old-style backquote form of substitution is\ + used, backslash retains its literal meaning e)108 729.6 R(xcept)-.15 E +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(23)185.545 E 0 Cg EP %%Page: 24 24 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .894 -(Command substitutions may be nested.)108 84 R 2.494 -.8(To n)5.894 H +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .315(when follo) +108 84 R .315(wed by)-.25 F/F1 10/Times-Bold@0 SF($)2.815 E F0(,)A F1 +<92>2.815 E F0 2.815(,o)C(r)-2.815 E F1(\\)2.815 E F0 5.315(.T)C .314(h\ +e \214rst backquote not preceded by a backslash terminates the command \ +sub-)-5.315 F 3.886(stitution. When)108 96 R 1.386(using the $\()3.886 F +/F2 10/Times-Italic@0 SF(command).833 E F0 3.886(\)f)1.666 G 1.387 +(orm, all characters between the parentheses mak)-3.886 F 3.887(eu)-.1 G +3.887(pt)-3.887 G 1.387(he com-)-3.887 F +(mand; none are treated specially)108 108 Q(.)-.65 E .894 +(Command substitutions may be nested.)108 124.8 R 2.494 -.8(To n)5.894 H .894(est when using the backquoted form, escape the inner back-).8 F -(quotes with backslashes.)108 96 Q .422 -(If the substitution appears within double quotes, w)108 112.8 R .422 +(quotes with backslashes.)108 136.8 Q .422 +(If the substitution appears within double quotes, w)108 153.6 R .422 (ord splitting and pathname e)-.1 F .423(xpansion are not performed)-.15 -F(on the results.)108 124.8 Q/F1 10/Times-Bold@0 SF -(Arithmetic Expansion)87 141.6 Q F0 1.035(Arithmetic e)108 153.6 R 1.035 -(xpansion allo)-.15 F 1.035(ws the e)-.25 F -.25(va)-.25 G 1.034 -(luation of an arithmetic e).25 F 1.034 -(xpression and the substitution of the result.)-.15 F -(The format for arithmetic e)108 165.6 Q(xpansion is:)-.15 E F1($\(\() -144 182.4 Q/F2 10/Times-Italic@0 SF -.2(ex)C(pr).2 E(ession)-.37 E F1 -(\)\))A F0(The)108 199.2 Q F2 -.2(ex)2.665 G(pr).2 E(ession)-.37 E F0 -.165(is treated as if it were within double quotes, b)2.905 F .166 +F(on the results.)108 165.6 Q F1(Arithmetic Expansion)87 182.4 Q F0 +1.035(Arithmetic e)108 194.4 R 1.035(xpansion allo)-.15 F 1.035 +(ws the e)-.25 F -.25(va)-.25 G 1.034(luation of an arithmetic e).25 F +1.034(xpression and the substitution of the result.)-.15 F +(The format for arithmetic e)108 206.4 Q(xpansion is:)-.15 E F1($\(\() +144 223.2 Q F2 -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A F0(The)108 240 Q +F2 -.2(ex)2.665 G(pr).2 E(ession)-.37 E F0 .165 +(is treated as if it were within double quotes, b)2.905 F .166 (ut a double quote inside the parentheses is not)-.2 F .231 -(treated specially)108 211.2 R 5.231(.A)-.65 G .231(ll tok)-5.231 F .231 +(treated specially)108 252 R 5.231(.A)-.65 G .231(ll tok)-5.231 F .231 (ens in the e)-.1 F .231(xpression under)-.15 F .231(go parameter and v) -.18 F .23(ariable e)-.25 F .23(xpansion, command substi-)-.15 F 1.059 -(tution, and quote remo)108 223.2 R -.25(va)-.15 G 3.559(l. The).25 F +(tution, and quote remo)108 264 R -.25(va)-.15 G 3.559(l. The).25 F 1.059(result is treated as the arithmetic e)3.559 F 1.06 (xpression to be e)-.15 F -.25(va)-.25 G 3.56(luated. Arithmetic).25 F --.15(ex)108 235.2 S(pansions may be nested.).15 E 1.379(The e)108 252 R +-.15(ex)108 276 S(pansions may be nested.).15 E 1.379(The e)108 292.8 R -.25(va)-.25 G 1.378 (luation is performed according to the rules listed belo).25 F 3.878(wu) -.25 G(nder)-3.878 E/F3 9/Times-Bold@0 SF 1.378(ARITHMETIC EV)3.878 F (ALU)-1.215 E -.855(AT)-.54 G(ION).855 E/F4 9/Times-Roman@0 SF(.)A F0 -(If)5.878 E F2 -.2(ex)108 264 S(pr).2 E(ession)-.37 E F0(is in)2.74 E +(If)5.878 E F2 -.2(ex)108 304.8 S(pr).2 E(ession)-.37 E F0(is in)2.74 E -.25(va)-.4 G(lid,).25 E F1(bash)2.5 E F0(prints a message indicating f) -2.5 E(ailure and no substitution occurs.)-.1 E F1(Pr)87 280.8 Q -(ocess Substitution)-.18 E F2(Pr)108 292.8 Q .97(ocess substitution)-.45 -F F0 .971(is supported on systems that support named pipes \()3.47 F F2 -(FIFOs)A F0 3.471(\)o)C 3.471(rt)-3.471 G(he)-3.471 E F1(/de)3.471 E -(v/fd)-.15 E F0 .971(method of)3.471 F .022(naming open \214les.)108 -304.8 R .021(It tak)5.022 F .021(es the form of)-.1 F F1(<\()2.521 E F2 -(list)A F1(\)).833 E F0(or)2.521 E F1(>\()2.521 E F2(list)A F1(\)).833 E -F0 5.021(.T)C .021(he process)-5.021 F F2(list)2.521 E F0 .021 -(is run with its input or output con-)2.521 F .058(nected to a)108 316.8 -R F2(FIFO)2.558 E F0 .058(or some \214le in)2.558 F F1(/de)2.558 E(v/fd) --.15 E F0 5.058(.T)C .058(he name of this \214le is passed as an ar) --5.058 F .059(gument to the current com-)-.18 F .131 -(mand as the result of the e)108 328.8 R 2.631(xpansion. If)-.15 F(the) -2.63 E F1(>\()2.63 E F2(list)A F1(\)).833 E F0 .13 -(form is used, writing to the \214le will pro)2.63 F .13(vide input for) --.15 F F2(list)2.63 E F0(.)A(If the)108 340.8 Q F1(<\()2.5 E F2(list)A -F1(\)).833 E F0(form is used, the \214le passed as an ar)2.5 E -(gument should be read to obtain the output of)-.18 E F2(list)2.5 E F0 -(.)A .896(When a)108 357.6 R -.25(va)-.2 G .896(ilable, process substit\ -ution is performed simultaneously with parameter and v).25 F .897 -(ariable e)-.25 F(xpansion,)-.15 E -(command substitution, and arithmetic e)108 369.6 Q(xpansion.)-.15 E F1 --.75(Wo)87 386.4 S(rd Splitting).75 E F0 1.143 -(The shell scans the results of parameter e)108 398.4 R 1.142 -(xpansion, command substitution, and arithmetic e)-.15 F 1.142 -(xpansion that)-.15 F(did not occur within double quotes for)108 410.4 Q +2.5 E(ailure and no substitution occurs.)-.1 E F1(Pr)87 321.6 Q +(ocess Substitution)-.18 E F2(Pr)108 333.6 Q .405(ocess substitution) +-.45 F F0(allo)2.905 E .405(ws a process')-.25 F 2.905(si)-.55 G .405 +(nput or output to be referred to using a \214lename.)-2.905 F .405 +(It tak)5.405 F .405(es the form)-.1 F(of)108 345.6 Q F1(<\()3.251 E F2 +(list)A F1(\)).833 E F0(or)3.251 E F1(>\()3.251 E F2(list)A F1(\)).833 E +F0 5.751(.T)C .751(he process)-5.751 F F2(list)3.251 E F0 .751 +(is run asynchronously)3.251 F 3.251(,a)-.65 G .751 +(nd its input or output appears as a \214lename.)-3.251 F .147 +(This \214lename is passed as an ar)108 357.6 R .148 +(gument to the current command as the result of the e)-.18 F 2.648 +(xpansion. If)-.15 F(the)2.648 E F1(>\()2.648 E F2(list)A F1(\)).833 E +F0 .56(form is used, writing to the \214le will pro)108 369.6 R .56 +(vide input for)-.15 F F2(list)3.059 E F0 5.559(.I)C 3.059(ft)-5.559 G +(he)-3.059 E F1(<\()3.059 E F2(list)A F1(\)).833 E F0 .559 +(form is used, the \214le passed as an)3.059 F(ar)108 381.6 Q .308 +(gument should be read to obtain the output of)-.18 F F2(list)2.808 E F0 +5.308(.P)C .309(rocess substitution is supported on systems that sup-) +-5.308 F(port named pipes \()108 393.6 Q F2(FIFOs)A F0 2.5(\)o)C 2.5(rt) +-2.5 G(he)-2.5 E F1(/de)2.5 E(v/fd)-.15 E F0 +(method of naming open \214les.)2.5 E .897(When a)108 410.4 R -.25(va) +-.2 G .896(ilable, process substitution is performed simultaneously wit\ +h parameter and v).25 F .896(ariable e)-.25 F(xpansion,)-.15 E +(command substitution, and arithmetic e)108 422.4 Q(xpansion.)-.15 E F1 +-.75(Wo)87 439.2 S(rd Splitting).75 E F0 1.142 +(The shell scans the results of parameter e)108 451.2 R 1.143 +(xpansion, command substitution, and arithmetic e)-.15 F 1.143 +(xpansion that)-.15 F(did not occur within double quotes for)108 463.2 Q F2(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 E F0(.).22 E .063 -(The shell treats each character of)108 427.2 R F3(IFS)2.563 E F0 .063 +(The shell treats each character of)108 480 R F3(IFS)2.563 E F0 .063 (as a delimiter)2.313 F 2.563(,a)-.4 G .063 (nd splits the results of the other e)-2.563 F .063(xpansions into w) -.15 F(ords)-.1 E .207(using these characters as \214eld terminators.) -108 439.2 R(If)5.207 E F3(IFS)2.707 E F0 .207(is unset, or its v)2.457 F -.207(alue is e)-.25 F(xactly)-.15 E F1()2.707 E F0 -(,)A .836(the def)108 451.2 R .836(ault, then sequences of)-.1 F F1 -()3.336 E F0(,)A F1()3.336 E F0 3.336(,a)C(nd)-3.336 E F1 -()3.336 E F0 .837(at the be)3.336 F .837 -(ginning and end of the results of)-.15 F .346(the pre)108 463.2 R .345 +108 492 R(If)5.207 E F3(IFS)2.707 E F0 .207(is unset, or its v)2.457 F +.207(alue is e)-.25 F(xactly)-.15 E F1()2.708 E F0 +(,)A .837(the def)108 504 R .837(ault, then sequences of)-.1 F F1 +()3.337 E F0(,)A F1()3.337 E F0 3.337(,a)C(nd)-3.337 E F1 +()3.337 E F0 .836(at the be)3.336 F .836 +(ginning and end of the results of)-.15 F .345(the pre)108 516 R .345 (vious e)-.25 F .345(xpansions are ignored, and an)-.15 F 2.845(ys)-.15 G .345(equence of)-2.845 F F3(IFS)2.845 E F0 .345 (characters not at the be)2.595 F .345(ginning or end serv)-.15 F(es) --.15 E 1.236(to delimit w)108 475.2 R 3.736(ords. If)-.1 F F3(IFS)3.736 -E F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.237 +-.15 E 1.237(to delimit w)108 528 R 3.737(ords. If)-.1 F F3(IFS)3.737 E +F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.236 (ault, then sequences of the whitespace characters)-.1 F F1(space)108 -487.2 Q F0(and)3.187 E F1(tab)3.187 E F0 .687(are ignored at the be) -3.187 F .687(ginning and end of the w)-.15 F .686 -(ord, as long as the whitespace character is in)-.1 F .276(the v)108 -499.2 R .276(alue of)-.25 F F3(IFS)2.777 E F0(\(an)2.527 E F3(IFS)2.777 -E F0 .277(whitespace character\).)2.527 F(An)5.277 E 2.777(yc)-.15 G -.277(haracter in)-2.777 F F3(IFS)2.777 E F0 .277(that is not)2.527 F F3 -(IFS)2.777 E F0 .277(whitespace, along with)2.527 F(an)108 511.2 Q 3.336 -(ya)-.15 G(djacent)-3.336 E F3(IFS)3.336 E F0 .836 -(whitespace characters, delimits a \214eld.)3.086 F 3.335(As)5.835 G -.835(equence of)-3.335 F F3(IFS)3.335 E F0 .835 -(whitespace characters is also)3.085 F(treated as a delimiter)108 523.2 -Q 5(.I)-.55 G 2.5(ft)-5 G(he v)-2.5 E(alue of)-.25 E F3(IFS)2.5 E F0 -(is null, no w)2.25 E(ord splitting occurs.)-.1 E 1.878 -(Explicit null ar)108 540 R 1.878(guments \()-.18 F F1 .833("").833 G F0 -(or)3.545 E F1 .833<0808>5.211 G F0 4.378(\)a)C 1.878(re retained.) --4.378 F 1.878(Unquoted implicit null ar)6.878 F 1.879 -(guments, resulting from the)-.18 F -.15(ex)108 552 S .177 -(pansion of parameters that ha).15 F .477 -.15(ve n)-.2 H 2.677(ov).15 G -.177(alues, are remo)-2.927 F -.15(ve)-.15 G 2.676(d. If).15 F 2.676(ap) -2.676 G .176(arameter with no v)-2.676 F .176(alue is e)-.25 F .176 -(xpanded within)-.15 F(double quotes, a null ar)108 564 Q -(gument results and is retained.)-.18 E(Note that if no e)108 580.8 Q -(xpansion occurs, no splitting is performed.)-.15 E F1 -.1(Pa)87 597.6 S -(thname Expansion).1 E F0 .37(After w)108 609.6 R .37 -(ord splitting, unless the)-.1 F F12.87 E F0 .37 -(option has been set,)2.87 F F1(bash)2.87 E F0 .371(scans each w)2.871 F -.371(ord for the characters)-.1 F F1(*)2.871 E F0(,)A F1(?)2.871 E F0 -2.871(,a)C(nd)-2.871 E F1([)2.871 E F0(.)A .678 -(If one of these characters appears, then the w)108 621.6 R .677 +540 Q F0(,)A F1(tab)2.506 E F0 2.506(,a)C(nd)-2.506 E F1(newline)2.506 E +F0 .006(are ignored at the be)2.506 F .006(ginning and end of the w)-.15 +F .007(ord, as long as the whitespace charac-)-.1 F .921 +(ter is in the v)108 552 R .92(alue of)-.25 F F3(IFS)3.42 E F0(\(an)3.17 +E F3(IFS)3.42 E F0 .92(whitespace character\).)3.17 F(An)5.92 E 3.42(yc) +-.15 G .92(haracter in)-3.42 F F3(IFS)3.42 E F0 .92(that is not)3.17 F +F3(IFS)3.42 E F0(whitespace,)3.17 E .428(along with an)108 564 R 2.928 +(ya)-.15 G(djacent)-2.928 E F3(IFS)2.928 E F0 .428 +(whitespace characters, delimits a \214eld.)2.678 F 2.928(As)5.428 G +.428(equence of)-2.928 F F3(IFS)2.928 E F0 .429(whitespace charac-)2.679 +F(ters is also treated as a delimiter)108 576 Q 5(.I)-.55 G 2.5(ft)-5 G +(he v)-2.5 E(alue of)-.25 E F3(IFS)2.5 E F0(is null, no w)2.25 E +(ord splitting occurs.)-.1 E 1.879(Explicit null ar)108 592.8 R 1.879 +(guments \()-.18 F F1 .833("").833 G F0(or)3.545 E F1 .833<0808>5.211 G +F0 4.378(\)a)C 1.878(re retained.)-4.378 F 1.878 +(Unquoted implicit null ar)6.878 F 1.878(guments, resulting from the) +-.18 F -.15(ex)108 604.8 S .176(pansion of parameters that ha).15 F .476 +-.15(ve n)-.2 H 2.676(ov).15 G .176(alues, are remo)-2.926 F -.15(ve) +-.15 G 2.676(d. If).15 F 2.677(ap)2.677 G .177(arameter with no v)-2.677 +F .177(alue is e)-.25 F .177(xpanded within)-.15 F +(double quotes, a null ar)108 616.8 Q(gument results and is retained.) +-.18 E(Note that if no e)108 633.6 Q +(xpansion occurs, no splitting is performed.)-.15 E F1 -.1(Pa)87 650.4 S +(thname Expansion).1 E F0 .371(After w)108 662.4 R .371 +(ord splitting, unless the)-.1 F F12.871 E F0 .371 +(option has been set,)2.871 F F1(bash)2.871 E F0 .37(scans each w)2.87 F +.37(ord for the characters)-.1 F F1(*)2.87 E F0(,)A F1(?)2.87 E F0 2.87 +(,a)C(nd)-2.87 E F1([)2.87 E F0(.)A .677 +(If one of these characters appears, then the w)108 674.4 R .677 (ord is re)-.1 F -.05(ga)-.15 G .677(rded as a).05 F F2(pattern)3.177 E -F0 3.177(,a).24 G .677(nd replaced with an alphabeti-)-3.177 F .562 -(cally sorted list of \214lenames matching the pattern \(see)108 633.6 R +F0 3.177(,a).24 G .678(nd replaced with an alphabeti-)-3.177 F .562 +(cally sorted list of \214lenames matching the pattern \(see)108 686.4 R F3 -.09(Pa)3.062 G(tter).09 E 2.812(nM)-.135 G(atching)-2.812 E F0(belo) -2.812 E 3.062(w\). If)-.25 F .562(no matching \214lenames)3.062 F .009 -(are found, and the shell option)108 645.6 R F1(nullglob)2.509 E F0 .008 -(is not enabled, the w)2.509 F .008(ord is left unchanged.)-.1 F .008 -(If the)5.008 F F1(nullglob)2.508 E F0 .008(option is)2.508 F .442 -(set, and no matches are found, the w)108 657.6 R .442(ord is remo)-.1 F --.15(ve)-.15 G 2.942(d. If).15 F(the)2.943 E F1(failglob)2.943 E F0 .443 -(shell option is set, and no matches are)2.943 F 1.38 -(found, an error message is printed and the command is not e)108 669.6 R +2.812 E 3.062(w\). If)-.25 F .561(no matching \214lenames)3.061 F .008 +(are found, and the shell option)108 698.4 R F1(nullglob)2.508 E F0 .008 +(is not enabled, the w)2.508 F .009(ord is left unchanged.)-.1 F .009 +(If the)5.009 F F1(nullglob)2.509 E F0 .009(option is)2.509 F .443 +(set, and no matches are found, the w)108 710.4 R .443(ord is remo)-.1 F +-.15(ve)-.15 G 2.943(d. If).15 F(the)2.942 E F1(failglob)2.942 E F0 .442 +(shell option is set, and no matches are)2.942 F 1.38 +(found, an error message is printed and the command is not e)108 722.4 R -.15(xe)-.15 G 3.88(cuted. If).15 F 1.38(the shell option)3.88 F F1 -(nocaseglob)3.88 E F0(is)3.88 E .103 -(enabled, the match is performed without re)108 681.6 R -.05(ga)-.15 G -.104(rd to the case of alphabetic characters.).05 F .104 -(When a pattern is used)5.104 F .378(for pathname e)108 693.6 R .378 -(xpansion, the character)-.15 F F1 -.63(``)2.878 G -.55(.').63 G(')-.08 -E F0 .378(at the start of a name or immediately follo)5.378 F .377 -(wing a slash must be)-.25 F .578(matched e)108 705.6 R(xplicitly)-.15 E -3.078(,u)-.65 G .578(nless the shell option)-3.078 F F1(dotglob)3.079 E -F0 .579(is set.)3.079 F .579 -(When matching a pathname, the slash character)5.579 F 1.789(must al)108 -717.6 R -.1(wa)-.1 G 1.788(ys be matched e).1 F(xplicitly)-.15 E 6.788 -(.I)-.65 G 4.288(no)-6.788 G 1.788(ther cases, the)-4.288 F F1 -.63(``) -4.288 G -.55(.').63 G(')-.08 E F0 1.788 -(character is not treated specially)6.788 F 6.788(.S)-.65 G 1.788 -(ee the)-6.788 F 1.909(description of)108 729.6 R F1(shopt)4.409 E F0 -(belo)4.409 E 4.409(wu)-.25 G(nder)-4.409 E F3 1.91(SHELL B)4.41 F(UIL) --.09 E 1.91(TIN COMMANDS)-.828 F F0 1.91(for a description of the)4.16 F -F1(nocaseglob)4.41 E F0(,)A(GNU Bash 4.4)72 768 Q(2015 October 11) -141.235 E(24)190.395 E 0 Cg EP +(nocaseglob)3.88 E F0(is)3.88 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E +-.15(ve)-.15 G(mber 16).15 E(24)185.545 E 0 Cg EP %%Page: 25 25 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(nullglob)108 84 Q F0(,)A F1(failglob)2.5 E F0 2.5(,a)C(nd)-2.5 E F1 -(dotglob)2.5 E F0(shell options.)2.5 E(The)108 100.8 Q/F2 9/Times-Bold@0 -SF(GLOBIGNORE)2.786 E F0 .286(shell v)2.536 F .285 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .104 +(enabled, the match is performed without re)108 84 R -.05(ga)-.15 G .104 +(rd to the case of alphabetic characters.).05 F .103 +(When a pattern is used)5.103 F .377(for pathname e)108 96 R .377 +(xpansion, the character)-.15 F/F1 10/Times-Bold@0 SF -.63(``)2.878 G +-.55(.').63 G(')-.08 E F0 .378 +(at the start of a name or immediately follo)5.378 F .378 +(wing a slash must be)-.25 F .579(matched e)108 108 R(xplicitly)-.15 E +3.079(,u)-.65 G .579(nless the shell option)-3.079 F F1(dotglob)3.079 E +F0 .579(is set.)3.079 F .578 +(When matching a pathname, the slash character)5.579 F 1.788(must al)108 +120 R -.1(wa)-.1 G 1.788(ys be matched e).1 F(xplicitly)-.15 E 6.788(.I) +-.65 G 4.288(no)-6.788 G 1.788(ther cases, the)-4.288 F F1 -.63(``)4.288 +G -.55(.').63 G(')-.08 E F0 1.788(character is not treated specially) +6.788 F 6.789(.S)-.65 G 1.789(ee the)-6.789 F .166(description of)108 +132 R F1(shopt)2.666 E F0(belo)2.666 E 2.666(wu)-.25 G(nder)-2.666 E/F2 +9/Times-Bold@0 SF .166(SHELL B)2.666 F(UIL)-.09 E .165(TIN COMMANDS) +-.828 F F0 .165(for a description of the)2.415 F F1(nocaseglob)2.665 E +F0(,)A F1(null-)2.665 E(glob)108 144 Q F0(,)A F1(failglob)2.5 E F0 2.5 +(,a)C(nd)-2.5 E F1(dotglob)2.5 E F0(shell options.)2.5 E(The)108 160.8 Q +F2(GLOBIGNORE)2.785 E F0 .285(shell v)2.535 F .285 (ariable may be used to restrict the set of \214lenames matching a)-.25 -F/F3 10/Times-Italic@0 SF(pattern)2.785 E F0 5.285(.I).24 G(f)-5.285 E -F2(GLO-)2.785 E(BIGNORE)108 112.8 Q F0 2.316(is set, each matching \214\ -lename that also matches one of the patterns in)4.565 F F2(GLOBIGNORE) -4.816 E F0(is)4.566 E(remo)108 124.8 Q -.15(ve)-.15 G 3.915(df).15 G -1.415(rom the list of matches.)-3.915 F 1.415(If the)6.415 F F1 +F/F3 10/Times-Italic@0 SF(pattern)2.786 E F0 5.286(.I).24 G(f)-5.286 E +F2(GLO-)2.786 E(BIGNORE)108 172.8 Q F0 2.316(is set, each matching \214\ +lename that also matches one of the patterns in)4.566 F F2(GLOBIGNORE) +4.816 E F0(is)4.565 E(remo)108 184.8 Q -.15(ve)-.15 G 3.914(df).15 G +1.414(rom the list of matches.)-3.914 F 1.415(If the)6.415 F F1 (nocaseglob)3.915 E F0 1.415(option is set, the matching ag)3.915 F -1.414(ainst the patterns in)-.05 F F2(GLOBIGNORE)108 136.8 Q F0 .146 -(is performed without re)2.396 F -.05(ga)-.15 G .146(rd to case.).05 F +1.415(ainst the patterns in)-.05 F F2(GLOBIGNORE)108 196.8 Q F0 .147 +(is performed without re)2.397 F -.05(ga)-.15 G .147(rd to case.).05 F .146(The \214lenames)5.146 F F1 -.63(``)2.646 G -.55(.').63 G(')-.08 E -F0(and)5.147 E F1 -.63(``)2.647 G(..).63 E -.63('')-.55 G F0 .147 -(are al)5.777 F -.1(wa)-.1 G .147(ys ignored when).1 F F2(GLOBIGNORE)108 -148.8 Q F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15 +F0(and)5.146 E F1 -.63(``)2.646 G(..).63 E -.63('')-.55 G F0 .146 +(are al)5.776 F -.1(wa)-.1 G .146(ys ignored when).1 F F2(GLOBIGNORE)108 +208.8 Q F0 .827(is set and not null.)3.077 F(Ho)5.827 E(we)-.25 E -.15 (ve)-.25 G 1.627 -.4(r, s).15 H(etting).4 E F2(GLOBIGNORE)3.327 E F0 .827(to a non-null v)3.077 F .827(alue has the ef)-.25 F .827(fect of) --.25 F .682(enabling the)108 160.8 R F1(dotglob)3.182 E F0 .682 -(shell option, so all other \214lenames be)3.182 F .682(ginning with a) +-.25 F .683(enabling the)108 220.8 R F1(dotglob)3.183 E F0 .682 +(shell option, so all other \214lenames be)3.183 F .682(ginning with a) -.15 F F1 -.63(``)3.182 G -.55(.').63 G(')-.08 E F0 .682(will match.) -5.682 F 2.283 -.8(To g)5.683 H .683(et the old).8 F(beha)108 172.8 Q -1.185(vior of ignoring \214lenames be)-.2 F 1.185(ginning with a)-.15 F +5.682 F 2.282 -.8(To g)5.682 H .682(et the old).8 F(beha)108 232.8 Q +1.184(vior of ignoring \214lenames be)-.2 F 1.184(ginning with a)-.15 F F1 -.63(``)3.684 G -.55(.').63 G(')-.08 E F0 3.684(,m)C(ak)-3.684 E(e) --.1 E F1 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.184 -(one of the patterns in)6.184 F F2(GLOBIGNORE)3.684 E/F4 9/Times-Roman@0 -SF(.)A F0(The)108 184.8 Q F1(dotglob)2.5 E F0(option is disabled when) -2.5 E F2(GLOBIGNORE)2.5 E F0(is unset.)2.25 E F1 -.1(Pa)108 201.6 S -(tter).1 E 2.5(nM)-.15 G(atching)-2.5 E F0(An)108 218.4 Q 3.138(yc)-.15 -G .638(haracter that appears in a pattern, other than the special patte\ -rn characters described belo)-3.138 F 1.938 -.65(w, m)-.25 H(atches).65 -E 3.62(itself. The)108 230.4 R 1.12 +-.1 E F1 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.185 +(one of the patterns in)6.185 F F2(GLOBIGNORE)3.685 E/F4 9/Times-Roman@0 +SF(.)A F0(The)108 244.8 Q F1(dotglob)3.132 E F0 .632 +(option is disabled when)3.132 F F2(GLOBIGNORE)3.132 E F0 .632 +(is unset.)2.882 F .631(The pattern matching honors the setting of)5.632 +F(the)108 256.8 Q F1(extglob)2.5 E F0(shell option.)2.5 E F1 -.1(Pa)108 +273.6 S(tter).1 E 2.5(nM)-.15 G(atching)-2.5 E F0(An)108 290.4 Q 3.138 +(yc)-.15 G .638(haracter that appears in a pattern, other than the spec\ +ial pattern characters described belo)-3.138 F 1.938 -.65(w, m)-.25 H +(atches).65 E 3.62(itself. The)108 302.4 R 1.12 (NUL character may not occur in a pattern.)3.62 F 3.62(Ab)6.12 G 1.12 (ackslash escapes the follo)-3.62 F 1.12(wing character; the)-.25 F .576 -(escaping backslash is discarded when matching.)108 242.4 R .576 +(escaping backslash is discarded when matching.)108 314.4 R .576 (The special pattern characters must be quoted if the)5.576 F 3.076(ya) --.15 G(re)-3.076 E(to be matched literally)108 254.4 Q(.)-.65 E -(The special pattern characters ha)108 271.2 Q .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E F1(*)144 288 Q F0 .377(Matches an) -180 288 R 2.877(ys)-.15 G .376(tring, including the null string.)-2.877 +-.15 G(re)-3.076 E(to be matched literally)108 326.4 Q(.)-.65 E +(The special pattern characters ha)108 343.2 Q .3 -.15(ve t)-.2 H +(he follo).15 E(wing meanings:)-.25 E F1(*)144 360 Q F0 .377(Matches an) +180 360 R 2.877(ys)-.15 G .376(tring, including the null string.)-2.877 F .376(When the)5.376 F F1(globstar)2.876 E F0 .376 -(shell option is enabled,)2.876 F(and)180 300 Q F1(*)3.275 E F0 .775 +(shell option is enabled,)2.876 F(and)180 372 Q F1(*)3.275 E F0 .775 (is used in a pathname e)3.275 F .775(xpansion conte)-.15 F .775(xt, tw) -.15 F 3.275(oa)-.1 G(djacent)-3.275 E F1(*)3.275 E F0 3.275(su)C .775 (sed as a single pattern)-3.275 F 1.058(will match all \214les and zero\ - or more directories and subdirectories.)180 312 R 1.058(If follo)6.058 -F 1.058(wed by a)-.25 F F1(/)3.558 E F0(,)A(tw)180 324 Q 2.5(oa)-.1 G + or more directories and subdirectories.)180 384 R 1.058(If follo)6.058 +F 1.058(wed by a)-.25 F F1(/)3.558 E F0(,)A(tw)180 396 Q 2.5(oa)-.1 G (djacent)-2.5 E F1(*)2.5 E F0 2.5(sw)C -(ill match only directories and subdirectories.)-2.5 E F1(?)144 336 Q F0 -(Matches an)180 336 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F1 -([...])144 348 Q F0 .578(Matches an)180 348 R 3.078(yo)-.15 G .578 +(ill match only directories and subdirectories.)-2.5 E F1(?)144 408 Q F0 +(Matches an)180 408 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F1 +([...])144 420 Q F0 .578(Matches an)180 420 R 3.078(yo)-.15 G .578 (ne of the enclosed characters.)-3.078 F 3.079(Ap)5.579 G .579 (air of characters separated by a h)-3.079 F(yphen)-.05 E .685 -(denotes a)180 360 R F3 -.15(ra)3.185 G(ng).15 E 3.184(ee)-.1 G(xpr) +(denotes a)180 432 R F3 -.15(ra)3.185 G(ng).15 E 3.184(ee)-.1 G(xpr) -3.384 E(ession)-.37 E F0 3.184(;a)C .984 -.15(ny c)-3.184 H .684 (haracter that f).15 F .684(alls between those tw)-.1 F 3.184(oc)-.1 G -.684(haracters, inclu-)-3.184 F(si)180 372 Q -.15(ve)-.25 G 3.712(,u).15 +.684(haracters, inclu-)-3.184 F(si)180 444 Q -.15(ve)-.25 G 3.712(,u).15 G 1.212(sing the current locale')-3.712 F 3.712(sc)-.55 G 1.212 (ollating sequence and character set, is matched.)-3.712 F 1.213(If the) -6.213 F 1.124(\214rst character follo)180 384 R 1.124(wing the)-.25 F F1 +6.213 F 1.124(\214rst character follo)180 456 R 1.124(wing the)-.25 F F1 ([)3.624 E F0 1.124(is a)3.624 F F1(!)3.624 E F0 1.124(or a)6.124 F F1 (^)3.623 E F0 1.123(then an)3.623 F 3.623(yc)-.15 G 1.123 (haracter not enclosed is matched.)-3.623 F .894 -(The sorting order of characters in range e)180 396 R .895 +(The sorting order of characters in range e)180 468 R .895 (xpressions is determined by the current locale)-.15 F .376(and the v) -180 408 R .376(alues of the)-.25 F F2(LC_COLLA)2.875 E(TE)-.855 E F0(or) +180 480 R .376(alues of the)-.25 F F2(LC_COLLA)2.875 E(TE)-.855 E F0(or) 2.625 E F2(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375 (ariables, if set.)-.25 F 1.975 -.8(To o)5.375 H .375(btain the tra-).8 -F .067(ditional interpretation of range e)180 420 R .067 +F .067(ditional interpretation of range e)180 492 R .067 (xpressions, where)-.15 F F1([a\255d])2.567 E F0 .068(is equi)2.568 F -.25(va)-.25 G .068(lent to).25 F F1([abcd])2.568 E F0 2.568(,s)C .068 -(et v)-2.568 F(alue)-.25 E .157(of the)180 432 R F1(LC_ALL)2.657 E F0 +(et v)-2.568 F(alue)-.25 E .157(of the)180 504 R F1(LC_ALL)2.657 E F0 .157(shell v)2.657 F .157(ariable to)-.25 F F1(C)2.657 E F0 2.657(,o)C 2.657(re)-2.657 G .157(nable the)-2.657 F F1(globasciiranges)2.657 E F0 .156(shell option.)2.656 F(A)5.156 E F12.656 E F0(may)2.656 E .193(\ be matched by including it as the \214rst or last character in the set.) -180 444 R(A)5.193 E F1(])2.693 E F0 .194(may be matched by)2.693 F -(including it as the \214rst character in the set.)180 456 Q -.4(Wi)180 -474 S(thin).4 E F1([)3.071 E F0(and)3.071 E F1(])3.071 E F0(,)A F3 -.15 +180 516 R(A)5.193 E F1(])2.693 E F0 .194(may be matched by)2.693 F +(including it as the \214rst character in the set.)180 528 Q -.4(Wi)180 +546 S(thin).4 E F1([)3.071 E F0(and)3.071 E F1(])3.071 E F0(,)A F3 -.15 (ch)3.071 G(ar).15 E .571(acter classes)-.15 F F0 .571 (can be speci\214ed using the syntax)3.071 F F1([:)3.07 E F3(class)A F1 (:])A F0 3.07(,w)C(here)-3.07 E F3(class)3.07 E F0(is one of the follo) -180 486 Q(wing classes de\214ned in the POSIX standard:)-.25 E F1 8.173 -(alnum alpha ascii blank cntrl digit graph lo)180 498 R 8.173 -(wer print punct space)-.1 F 5(upper w)180 510 R 5(ord xdigit)-.1 F F0 -4.29(Ac)180 522 S 1.789(haracter class matches an)-4.29 F 4.289(yc)-.15 +180 558 Q(wing classes de\214ned in the POSIX standard:)-.25 E F1 8.173 +(alnum alpha ascii blank cntrl digit graph lo)180 570 R 8.173 +(wer print punct space)-.1 F 5(upper w)180 582 R 5(ord xdigit)-.1 F F0 +4.29(Ac)180 594 S 1.789(haracter class matches an)-4.29 F 4.289(yc)-.15 G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E F1 -.1 (wo)4.289 G(rd).1 E F0(character)4.289 E -(class matches letters, digits, and the character _.)180 534 Q -.4(Wi) -180 552 S(thin).4 E F1([)4.536 E F0(and)4.536 E F1(])4.536 E F0 4.536 +(class matches letters, digits, and the character _.)180 606 Q -.4(Wi) +180 624 S(thin).4 E F1([)4.536 E F0(and)4.536 E F1(])4.536 E F0 4.536 (,a)C(n)-4.536 E F3 2.036(equivalence class)4.536 F F0 2.037 (can be speci\214ed using the syntax)4.536 F F1([=)4.537 E F3(c)A F1(=]) A F0 4.537(,w)C(hich)-4.537 E .125(matches all characters with the same\ - collation weight \(as de\214ned by the current locale\) as)180 564 R -(the character)180 576 Q F3(c)2.5 E F0(.)A -.4(Wi)180 594 S(thin).4 E F1 + collation weight \(as de\214ned by the current locale\) as)180 636 R +(the character)180 648 Q F3(c)2.5 E F0(.)A -.4(Wi)180 666 S(thin).4 E F1 ([)2.5 E F0(and)2.5 E F1(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F1([.)2.5 E F3(symbol)A F1(.])A F0(matches the collating symbol)2.5 E F3(symbol) -2.5 E F0(.)A .704(If the)108 610.8 R F1(extglob)3.204 E F0 .705 +2.5 E F0(.)A .704(If the)108 682.8 R F1(extglob)3.204 E F0 .705 (shell option is enabled using the)3.204 F F1(shopt)3.205 E F0 -.2(bu) 3.205 G .705(iltin, se).2 F -.15(ve)-.25 G .705(ral e).15 F .705 (xtended pattern matching operators)-.15 F .256(are recognized.)108 -622.8 R .256(In the follo)5.256 F .256(wing description, a)-.25 F F3 +694.8 R .256(In the follo)5.256 F .256(wing description, a)-.25 F F3 (pattern-list)2.755 E F0 .255 (is a list of one or more patterns separated by a)2.755 F F1(|)2.755 E F0(.)A(Composite patterns may be formed using one or more of the follo) -108 634.8 Q(wing sub-patterns:)-.25 E F1(?\()144 658.8 Q F3 -(pattern-list).833 E F1(\)).833 E F0 -(Matches zero or one occurrence of the gi)180 670.8 Q -.15(ve)-.25 G 2.5 -(np).15 G(atterns)-2.5 E F1(*\()144 682.8 Q F3(pattern-list).833 E F1 -(\)).833 E F0(Matches zero or more occurrences of the gi)180 694.8 Q --.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(+\()144 706.8 Q F3 -(pattern-list).833 E F1(\)).833 E F0 -(Matches one or more occurrences of the gi)180 718.8 Q -.15(ve)-.25 G -2.5(np).15 G(atterns)-2.5 E(GNU Bash 4.4)72 768 Q(2015 October 11) -141.235 E(25)190.395 E 0 Cg EP +108 706.8 Q(wing sub-patterns:)-.25 E(GNU Bash 4.4)72 768 Q(2015 No) +136.385 E -.15(ve)-.15 G(mber 16).15 E(25)185.545 E 0 Cg EP %%Page: 26 26 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(@\()144 84 Q/F2 10/Times-Italic@0 SF(pattern-list).833 E F1(\)).833 E -F0(Matches one of the gi)180 96 Q -.15(ve)-.25 G 2.5(np).15 G(atterns) --2.5 E F1(!\()144 108 Q F2(pattern-list).833 E F1(\)).833 E F0 -(Matches an)180 120 Q(ything e)-.15 E(xcept one of the gi)-.15 E -.15 -(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(Quote Remo)87 136.8 Q -.1(va) --.1 G(l).1 E F0 1.112(After the preceding e)108 148.8 R 1.112 +SF(?\()144 84 Q/F2 10/Times-Italic@0 SF(pattern-list).833 E F1(\)).833 E +F0(Matches zero or one occurrence of the gi)180 96 Q -.15(ve)-.25 G 2.5 +(np).15 G(atterns)-2.5 E F1(*\()144 108 Q F2(pattern-list).833 E F1(\)) +.833 E F0(Matches zero or more occurrences of the gi)180 120 Q -.15(ve) +-.25 G 2.5(np).15 G(atterns)-2.5 E F1(+\()144 132 Q F2(pattern-list).833 +E F1(\)).833 E F0(Matches one or more occurrences of the gi)180 144 Q +-.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(@\()144 156 Q F2 +(pattern-list).833 E F1(\)).833 E F0(Matches one of the gi)180 168 Q +-.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E F1(!\()144 180 Q F2 +(pattern-list).833 E F1(\)).833 E F0(Matches an)180 192 Q(ything e)-.15 +E(xcept one of the gi)-.15 E -.15(ve)-.25 G 2.5(np).15 G(atterns)-2.5 E +F1(Quote Remo)87 208.8 Q -.1(va)-.1 G(l).1 E F0 1.112 +(After the preceding e)108 220.8 R 1.112 (xpansions, all unquoted occurrences of the characters)-.15 F F1(\\) 3.613 E F0(,)A F1<08>3.613 E F0 3.613(,a)C(nd)-3.613 E F1(")4.446 E F0 -1.113(that did not result)4.446 F(from one of the abo)108 160.8 Q .3 +1.113(that did not result)4.446 F(from one of the abo)108 232.8 Q .3 -.15(ve ex)-.15 H(pansions are remo).15 E -.15(ve)-.15 G(d.).15 E/F3 -10.95/Times-Bold@0 SF(REDIRECTION)72 177.6 Q F0 .545 -(Before a command is e)108 189.6 R -.15(xe)-.15 G .545 +10.95/Times-Bold@0 SF(REDIRECTION)72 249.6 Q F0 .545 +(Before a command is e)108 261.6 R -.15(xe)-.15 G .545 (cuted, its input and output may be).15 F F2 -.37(re)3.045 G(dir).37 E (ected)-.37 E F0 .545(using a special notation interpreted)3.815 F .405 -(by the shell.)108 201.6 R .405(Redirection allo)5.405 F .405(ws comman\ +(by the shell.)108 273.6 R .405(Redirection allo)5.405 F .405(ws comman\ ds' \214le handles to be duplicated, opened, closed, made to refer to) --.25 F(dif)108 213.6 Q 1.02(ferent \214les, and can change the \214les \ +-.25 F(dif)108 285.6 Q 1.02(ferent \214les, and can change the \214les \ the command reads from and writes to.)-.25 F 1.019 (Redirection may also be)6.019 F .215 -(used to modify \214le handles in the current shell e)108 225.6 R -.15 +(used to modify \214le handles in the current shell e)108 297.6 R -.15 (xe)-.15 G .215(cution en).15 F 2.715(vironment. The)-.4 F(follo)2.715 E .215(wing redirection operators)-.25 F .876(may precede or appear an)108 -237.6 R .876(ywhere within a)-.15 F F2 .875(simple command)3.715 F F0 +309.6 R .876(ywhere within a)-.15 F F2 .875(simple command)3.715 F F0 .875(or may follo)4.145 F 3.375(wa)-.25 G F2(command)A F0 5.875(.R).77 G -.875(edirections are)-5.875 F(processed in the order the)108 249.6 Q 2.5 +.875(edirections are)-5.875 F(processed in the order the)108 321.6 Q 2.5 (ya)-.15 G(ppear)-2.5 E 2.5(,f)-.4 G(rom left to right.)-2.5 E .771(Eac\ h redirection that may be preceded by a \214le descriptor number may in\ -stead be preceded by a w)108 266.4 R .772(ord of)-.1 F .293(the form {) -108 278.4 R F2(varname)A F0 2.793(}. In)B .293 +stead be preceded by a w)108 338.4 R .772(ord of)-.1 F .293(the form {) +108 350.4 R F2(varname)A F0 2.793(}. In)B .293 (this case, for each redirection operator e)2.793 F .293 -(xcept >&- and <&-, the shell will allocate)-.15 F 3.179<618c>108 290.4 +(xcept >&- and <&-, the shell will allocate)-.15 F 3.179<618c>108 362.4 S .679(le descriptor greater than or equal to 10 and assign it to)-3.179 F F2(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679 -(&- or <&- is preceded by {)-3.179 F F2(var)A(-)-.2 E(name)108 302.4 Q +(&- or <&- is preceded by {)-3.179 F F2(var)A(-)-.2 E(name)108 374.4 Q F0(}, the v)A(alue of)-.25 E F2(varname)2.5 E F0 (de\214nes the \214le descriptor to close.)2.5 E .284(In the follo)108 -319.2 R .283(wing descriptions, if the \214le descriptor number is omit\ +391.2 R .283(wing descriptions, if the \214le descriptor number is omit\ ted, and the \214rst character of the redirect-)-.25 F .512 -(ion operator is)108 331.2 R F1(<)3.012 E F0 3.012(,t)C .512 +(ion operator is)108 403.2 R F1(<)3.012 E F0 3.012(,t)C .512 (he redirection refers to the standard input \(\214le descriptor 0\).) -3.012 F .512(If the \214rst character of the)5.512 F -(redirection operator is)108 343.2 Q F1(>)2.5 E F0 2.5(,t)C +(redirection operator is)108 415.2 Q F1(>)2.5 E F0 2.5(,t)C (he redirection refers to the standard output \(\214le descriptor 1\).) --2.5 E .825(The w)108 360 R .825(ord follo)-.1 F .824 +-2.5 E .825(The w)108 432 R .825(ord follo)-.1 F .824 (wing the redirection operator in the follo)-.25 F .824 (wing descriptions, unless otherwise noted, is sub-)-.25 F .462 -(jected to brace e)108 372 R .462(xpansion, tilde e)-.15 F .463 +(jected to brace e)108 444 R .462(xpansion, tilde e)-.15 F .463 (xpansion, parameter and v)-.15 F .463(ariable e)-.25 F .463 -(xpansion, command substitution, arith-)-.15 F .867(metic e)108 384 R +(xpansion, command substitution, arith-)-.15 F .867(metic e)108 456 R .867(xpansion, quote remo)-.15 F -.25(va)-.15 G .867(l, pathname e).25 F .867(xpansion, and w)-.15 F .867(ord splitting.)-.1 F .867(If it e)5.867 -F .866(xpands to more than one)-.15 F -.1(wo)108 396 S(rd,).1 E F1(bash) +F .866(xpands to more than one)-.15 F -.1(wo)108 468 S(rd,).1 E F1(bash) 2.5 E F0(reports an error)2.5 E(.)-.55 E -(Note that the order of redirections is signi\214cant.)108 412.8 Q -.15 -(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 429.6 Q F1(>)2.5 +(Note that the order of redirections is signi\214cant.)108 484.8 Q -.15 +(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 501.6 Q F1(>)2.5 E F0(dirlist 2)2.5 E F1(>&)A F0(1)A -(directs both standard output and standard error to the \214le)108 446.4 +(directs both standard output and standard error to the \214le)108 518.4 Q F2(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 -463.2 Q F1(>&)A F0(1)A F1(>)2.5 E F0(dirlist)2.5 E .527 -(directs only the standard output to \214le)108 480 R F2(dirlist)3.027 E +535.2 Q F1(>&)A F0(1)A F1(>)2.5 E F0(dirlist)2.5 E .527 +(directs only the standard output to \214le)108 552 R F2(dirlist)3.027 E F0 3.027(,b).68 G .527(ecause the standard error w)-3.027 F .527 (as duplicated from the standard)-.1 F -(output before the standard output w)108 492 Q(as redirected to)-.1 E F2 -(dirlist)2.5 E F0(.).68 E F1(Bash)108 508.8 Q F0 .599(handles se)3.099 F +(output before the standard output w)108 564 Q(as redirected to)-.1 E F2 +(dirlist)2.5 E F0(.).68 E F1(Bash)108 580.8 Q F0 .599(handles se)3.099 F -.15(ve)-.25 G .599(ral \214lenames specially when the).15 F 3.099(ya) -.15 G .598(re used in redirections, as described in the follo)-3.099 F -(wing)-.25 E(table:)108 520.8 Q F1(/de)144 537.6 Q(v/fd/)-.15 E F2(fd)A -F0(If)180 549.6 Q F2(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E(ger)-.15 +(wing)-.25 E(table:)108 592.8 Q F1(/de)144 609.6 Q(v/fd/)-.15 E F2(fd)A +F0(If)180 621.6 Q F2(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E(ger)-.15 E 2.5<2c8c>-.4 G(le descriptor)-2.5 E F2(fd)2.5 E F0(is duplicated.)2.5 -E F1(/de)144 561.6 Q(v/stdin)-.15 E F0(File descriptor 0 is duplicated.) -180 573.6 Q F1(/de)144 585.6 Q(v/stdout)-.15 E F0 -(File descriptor 1 is duplicated.)180 597.6 Q F1(/de)144 609.6 Q -(v/stderr)-.15 E F0(File descriptor 2 is duplicated.)180 621.6 Q F1(/de) -144 633.6 Q(v/tcp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If)180 645.6 Q +E F1(/de)144 633.6 Q(v/stdin)-.15 E F0(File descriptor 0 is duplicated.) +180 645.6 Q F1(/de)144 657.6 Q(v/stdout)-.15 E F0 +(File descriptor 1 is duplicated.)180 669.6 Q F1(/de)144 681.6 Q +(v/stderr)-.15 E F0(File descriptor 2 is duplicated.)180 693.6 Q F1(/de) +144 705.6 Q(v/tcp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If)180 717.6 Q F2(host)2.996 E F0 .496(is a v)2.996 F .496 (alid hostname or Internet address, and)-.25 F F2(port)2.997 E F0 .497 (is an inte)2.997 F .497(ger port number or ser)-.15 F(-)-.2 E -(vice name,)180 657.6 Q F1(bash)2.5 E F0 -(attempts to open the corresponding TCP sock)2.5 E(et.)-.1 E F1(/de)144 -669.6 Q(v/udp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If)180 681.6 Q F2 -(host)2.997 E F0 .497(is a v)2.997 F .497 -(alid hostname or Internet address, and)-.25 F F2(port)2.996 E F0 .496 -(is an inte)2.996 F .496(ger port number or ser)-.15 F(-)-.2 E -(vice name,)180 693.6 Q F1(bash)2.5 E F0 -(attempts to open the corresponding UDP sock)2.5 E(et.)-.1 E 2.5(Af)108 -710.4 S(ailure to open or create a \214le causes the redirection to f) --2.6 E(ail.)-.1 E .946(Redirections using \214le descriptors greater th\ -an 9 should be used with care, as the)108 727.2 R 3.447(ym)-.15 G .947 -(ay con\215ict with \214le)-3.447 F(GNU Bash 4.4)72 768 Q -(2015 October 11)141.235 E(26)190.395 E 0 Cg EP +(vice name,)180 729.6 Q F1(bash)2.5 E F0 +(attempts to open the corresponding TCP sock)2.5 E(et.)-.1 E +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(26)185.545 E 0 Cg EP %%Page: 27 27 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(descriptors the shell uses internally)108 84 Q(.)-.65 E/F1 10 -/Times-Bold@0 SF(Redir)87 100.8 Q(ecting Input)-.18 E F0 .391 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(/de)144 84 Q(v/udp/)-.15 E/F2 10/Times-Italic@0 SF(host)A F1(/)A F2 +(port)A F0(If)180 96 Q F2(host)2.997 E F0 .497(is a v)2.997 F .497 +(alid hostname or Internet address, and)-.25 F F2(port)2.996 E F0 .496 +(is an inte)2.996 F .496(ger port number or ser)-.15 F(-)-.2 E +(vice name,)180 108 Q F1(bash)2.5 E F0 +(attempts to open the corresponding UDP sock)2.5 E(et.)-.1 E 2.5(Af)108 +124.8 S(ailure to open or create a \214le causes the redirection to f) +-2.6 E(ail.)-.1 E .946(Redirections using \214le descriptors greater th\ +an 9 should be used with care, as the)108 141.6 R 3.447(ym)-.15 G .947 +(ay con\215ict with \214le)-3.447 F +(descriptors the shell uses internally)108 153.6 Q(.)-.65 E F1(Redir)87 +170.4 Q(ecting Input)-.18 E F0 .391 (Redirection of input causes the \214le whose name results from the e) -108 112.8 R .391(xpansion of)-.15 F/F2 10/Times-Italic@0 SF(wor)3.231 E -(d)-.37 E F0 .391(to be opened for read-)3.661 F -(ing on \214le descriptor)108 124.8 Q F2(n)2.5 E F0 2.5(,o).24 G 2.5(rt) --2.5 G(he standard input \(\214le descriptor 0\) if)-2.5 E F2(n)2.86 E -F0(is not speci\214ed.)2.74 E -(The general format for redirecting input is:)108 141.6 Q([)144 158.4 Q -F2(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 175.2 Q -(ecting Output)-.18 E F0 .174 +108 182.4 R .391(xpansion of)-.15 F F2(wor)3.231 E(d)-.37 E F0 .391 +(to be opened for read-)3.661 F(ing on \214le descriptor)108 194.4 Q F2 +(n)2.5 E F0 2.5(,o).24 G 2.5(rt)-2.5 G +(he standard input \(\214le descriptor 0\) if)-2.5 E F2(n)2.86 E F0 +(is not speci\214ed.)2.74 E +(The general format for redirecting input is:)108 211.2 Q([)144 228 Q F2 +(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 244.8 Q(ecting Output) +-.18 E F0 .174 (Redirection of output causes the \214le whose name results from the e) -108 187.2 R .175(xpansion of)-.15 F F2(wor)3.015 E(d)-.37 E F0 .175 -(to be opened for writ-)3.445 F .825(ing on \214le descriptor)108 199.2 +108 256.8 R .175(xpansion of)-.15 F F2(wor)3.015 E(d)-.37 E F0 .175 +(to be opened for writ-)3.445 F .825(ing on \214le descriptor)108 268.8 R F2(n)3.325 E F0 3.325(,o).24 G 3.325(rt)-3.325 G .824 (he standard output \(\214le descriptor 1\) if)-3.325 F F2(n)3.684 E F0 .824(is not speci\214ed.)3.564 F .824(If the \214le does not)5.824 F --.15(ex)108 211.2 S(ist it is created; if it does e).15 E +-.15(ex)108 280.8 S(ist it is created; if it does e).15 E (xist it is truncated to zero size.)-.15 E -(The general format for redirecting output is:)108 228 Q([)144 244.8 Q +(The general format for redirecting output is:)108 297.6 Q([)144 314.4 Q F2(n)A F0(])A F1(>)A F2(wor)A(d)-.37 E F0 .154 -(If the redirection operator is)108 261.6 R F1(>)2.654 E F0 2.654(,a)C +(If the redirection operator is)108 331.2 R F1(>)2.654 E F0 2.654(,a)C .154(nd the)-2.654 F F1(noclob)2.654 E(ber)-.1 E F0 .154(option to the) 2.654 F F1(set)2.655 E F0 -.2(bu)2.655 G .155 -(iltin has been enabled, the redirection).2 F .658(will f)108 273.6 R +(iltin has been enabled, the redirection).2 F .658(will f)108 343.2 R .658(ail if the \214le whose name results from the e)-.1 F .658 (xpansion of)-.15 F F2(wor)3.158 E(d)-.37 E F0 -.15(ex)3.158 G .657 (ists and is a re).15 F .657(gular \214le.)-.15 F .657(If the redi-) -5.657 F .408(rection operator is)108 285.6 R F1(>|)2.909 E F0 2.909(,o)C +5.657 F .408(rection operator is)108 355.2 R F1(>|)2.909 E F0 2.909(,o)C 2.909(rt)-2.909 G .409(he redirection operator is)-2.909 F F1(>)2.909 E F0 .409(and the)2.909 F F1(noclob)2.909 E(ber)-.1 E F0 .409 (option to the)2.909 F F1(set)2.909 E F0 -.2(bu)2.909 G .409 (iltin command).2 F(is not enabled, the redirection is attempted e)108 -297.6 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214le named by) +367.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214le named by) -2.5 E F2(wor)2.5 E(d)-.37 E F0 -.15(ex)2.5 G(ists.).15 E F1 -.25(Ap)87 -314.4 S(pending Redir).25 E(ected Output)-.18 E F0 .642 -(Redirection of output in this f)108 326.4 R .642 +384 S(pending Redir).25 E(ected Output)-.18 E F0 .642 +(Redirection of output in this f)108 396 R .642 (ashion causes the \214le whose name results from the e)-.1 F .641 (xpansion of)-.15 F F2(wor)3.481 E(d)-.37 E F0 .641(to be)3.911 F .473 -(opened for appending on \214le descriptor)108 338.4 R F2(n)2.973 E F0 +(opened for appending on \214le descriptor)108 408 R F2(n)2.973 E F0 2.974(,o).24 G 2.974(rt)-2.974 G .474 (he standard output \(\214le descriptor 1\) if)-2.974 F F2(n)3.334 E F0 .474(is not speci\214ed.)3.214 F(If)5.474 E(the \214le does not e)108 -350.4 Q(xist it is created.)-.15 E -(The general format for appending output is:)108 367.2 Q([)144 384 Q F2 -(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 400.8 Q +420 Q(xist it is created.)-.15 E +(The general format for appending output is:)108 436.8 Q([)144 453.6 Q +F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 470.4 Q (ecting Standard Output and Standard Err)-.18 E(or)-.18 E F0 .249 -(This construct allo)108 412.8 R .249(ws both the standard output \(\ +(This construct allo)108 482.4 R .249(ws both the standard output \(\ \214le descriptor 1\) and the standard error output \(\214le descrip-) -.25 F(tor 2\) to be redirected to the \214le whose name is the e)108 -424.8 Q(xpansion of)-.15 E F2(wor)2.5 E(d)-.37 E F0(.).77 E -(There are tw)108 441.6 Q 2.5(of)-.1 G +494.4 Q(xpansion of)-.15 E F2(wor)2.5 E(d)-.37 E F0(.).77 E +(There are tw)108 511.2 Q 2.5(of)-.1 G (ormats for redirecting standard output and standard error:)-2.5 E F1 -(&>)144 458.4 Q F2(wor)A(d)-.37 E F0(and)108 470.4 Q F1(>&)144 482.4 Q -F2(wor)A(d)-.37 E F0(Of the tw)108 499.2 Q 2.5(of)-.1 G +(&>)144 528 Q F2(wor)A(d)-.37 E F0(and)108 540 Q F1(>&)144 552 Q F2(wor) +A(d)-.37 E F0(Of the tw)108 568.8 Q 2.5(of)-.1 G (orms, the \214rst is preferred.)-2.5 E(This is semantically equi)5 E --.25(va)-.25 G(lent to).25 E F1(>)144 516 Q F2(wor)A(d)-.37 E F0(2)2.5 E -F1(>&)A F0(1)A .114(When using the second form,)108 532.8 R F2(wor)2.614 -E(d)-.37 E F0 .114(may not e)2.614 F .114(xpand to a number or)-.15 F F1 -2.614 E F0 5.114(.I)C 2.614(fi)-5.114 G 2.615(td)-2.614 G .115 -(oes, other redirection operators)-2.615 F(apply \(see)108 544.8 Q F1 -(Duplicating File Descriptors)2.5 E F0(belo)2.5 E -(w\) for compatibility reasons.)-.25 E F1 -.25(Ap)87 561.6 S +-.25(va)-.25 G(lent to).25 E F1(>)144 585.6 Q F2(wor)A(d)-.37 E F0(2)2.5 +E F1(>&)A F0(1)A .114(When using the second form,)108 602.4 R F2(wor) +2.614 E(d)-.37 E F0 .114(may not e)2.614 F .114(xpand to a number or) +-.15 F F12.614 E F0 5.114(.I)C 2.614(fi)-5.114 G 2.615(td)-2.614 G +.115(oes, other redirection operators)-2.615 F(apply \(see)108 614.4 Q +F1(Duplicating File Descriptors)2.5 E F0(belo)2.5 E +(w\) for compatibility reasons.)-.25 E F1 -.25(Ap)87 631.2 S (pending Standard Output and Standard Err).25 E(or)-.18 E F0 .249 -(This construct allo)108 573.6 R .249(ws both the standard output \(\ +(This construct allo)108 643.2 R .249(ws both the standard output \(\ \214le descriptor 1\) and the standard error output \(\214le descrip-) -.25 F(tor 2\) to be appended to the \214le whose name is the e)108 -585.6 Q(xpansion of)-.15 E F2(wor)2.5 E(d)-.37 E F0(.).77 E -(The format for appending standard output and standard error is:)108 -602.4 Q F1(&>>)144 619.2 Q F2(wor)A(d)-.37 E F0 -(This is semantically equi)108 636 Q -.25(va)-.25 G(lent to).25 E F1(>>) -144 652.8 Q F2(wor)A(d)-.37 E F0(2)2.5 E F1(>&)A F0(1)A(\(see)108 669.6 -Q F1(Duplicating File Descriptors)2.5 E F0(belo)2.5 E(w\).)-.25 E F1 -(Her)87 686.4 Q 2.5(eD)-.18 G(ocuments)-2.5 E F0 .33(This type of redir\ -ection instructs the shell to read input from the current source until \ -a line containing only)108 698.4 R F2(delimiter)108.35 710.4 Q F0 .615 -(\(with no trailing blanks\) is seen.)3.845 F .615 -(All of the lines read up to that point are then used as the stan-)5.615 -F(dard input \(or \214le descriptor)108 722.4 Q F2(n)2.5 E F0(if)2.5 E -F2(n)2.5 E F0(is speci\214ed\) for a command.)2.5 E(GNU Bash 4.4)72 768 -Q(2015 October 11)141.235 E(27)190.395 E 0 Cg EP +655.2 Q(xpansion of)-.15 E F2(wor)2.5 E(d)-.37 E F0(.).77 E +(The format for appending standard output and standard error is:)108 672 +Q F1(&>>)144 688.8 Q F2(wor)A(d)-.37 E F0(This is semantically equi)108 +705.6 Q -.25(va)-.25 G(lent to).25 E F1(>>)144 722.4 Q F2(wor)A(d)-.37 E +F0(2)2.5 E F1(>&)A F0(1)A(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15 +(ve)-.15 G(mber 16).15 E(27)185.545 E 0 Cg EP %%Page: 28 28 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(The format of here-documents is:)108 84 Q([)144 100.8 Q/F1 10 -/Times-Italic@0 SF(n)A F0(])A/F2 10/Times-Bold@0 SF(<<)A F0([)A F2A -F0(])A F1(wor)A(d)-.37 E(her)164 112.8 Q(e-document)-.37 E(delimiter)144 -124.8 Q F0 .301(No parameter and v)108 141.6 R .302(ariable e)-.25 F -.302(xpansion, command substitution, arithmetic e)-.15 F .302 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(\(see)108 84 Q/F1 +10/Times-Bold@0 SF(Duplicating File Descriptors)2.5 E F0(belo)2.5 E +(w\).)-.25 E F1(Her)87 100.8 Q 2.5(eD)-.18 G(ocuments)-2.5 E F0 .33(Thi\ +s type of redirection instructs the shell to read input from the curren\ +t source until a line containing only)108 112.8 R/F2 10/Times-Italic@0 +SF(delimiter)108.35 124.8 Q F0 .615 +(\(with no trailing blanks\) is seen.)3.845 F .615 +(All of the lines read up to that point are then used as the stan-)5.615 +F(dard input \(or \214le descriptor)108 136.8 Q F2(n)2.5 E F0(if)2.5 E +F2(n)2.5 E F0(is speci\214ed\) for a command.)2.5 E +(The format of here-documents is:)108 153.6 Q([)144 170.4 Q F2(n)A F0(]) +A F1(<<)A F0([)A F1A F0(])A F2(wor)A(d)-.37 E(her)164 182.4 Q +(e-document)-.37 E(delimiter)144 194.4 Q F0 .301(No parameter and v)108 +211.2 R .302(ariable e)-.25 F .302 +(xpansion, command substitution, arithmetic e)-.15 F .302 (xpansion, or pathname e)-.15 F(xpansion)-.15 E .226(is performed on)108 -153.6 R F1(wor)2.726 E(d)-.37 E F0 5.226(.I).77 G 2.726(fa)-5.226 G .526 --.15(ny c)-2.726 H .226(haracters in).15 F F1(wor)3.066 E(d)-.37 E F0 -.226(are quoted, the)3.496 F F1(delimiter)3.076 E F0 .225 +223.2 R F2(wor)2.726 E(d)-.37 E F0 5.226(.I).77 G 2.726(fa)-5.226 G .526 +-.15(ny c)-2.726 H .226(haracters in).15 F F2(wor)3.066 E(d)-.37 E F0 +.226(are quoted, the)3.496 F F2(delimiter)3.076 E F0 .225 (is the result of quote remo)3.456 F -.25(va)-.15 G 2.725(lo).25 G(n) --2.725 E F1(wor)108 165.6 Q(d)-.37 E F0 2.714(,a).77 G .214 +-2.725 E F2(wor)108 235.2 Q(d)-.37 E F0 2.714(,a).77 G .214 (nd the lines in the here-document are not e)-2.714 F 2.714(xpanded. If) --.15 F F1(wor)2.715 E(d)-.37 E F0 .215 +-.15 F F2(wor)2.715 E(d)-.37 E F0 .215 (is unquoted, all lines of the here-docu-)2.715 F .499 -(ment are subjected to parameter e)108 177.6 R .499 +(ment are subjected to parameter e)108 247.2 R .499 (xpansion, command substitution, and arithmetic e)-.15 F .499 -(xpansion, the character)-.15 F(sequence)108 189.6 Q F2(\\)2.5 -E F0(is ignored, and)2.5 E F2(\\)2.5 E F0 -(must be used to quote the characters)2.5 E F2(\\)2.5 E F0(,)A F2($)2.5 -E F0 2.5(,a)C(nd)-2.5 E F2<92>2.5 E F0(.)A .601 -(If the redirection operator is)108 206.4 R F2(<<\255)3.101 E F0 3.101 -(,t)C .601(hen all leading tab characters are stripped from input lines\ - and the line)-3.101 F(containing)108 218.4 Q F1(delimiter)2.5 E F0 5 -(.T).73 G(his allo)-5 E +(xpansion, the character)-.15 F(sequence)108 259.2 Q F1(\\)2.5 +E F0(is ignored, and)2.5 E F1(\\)2.5 E F0 +(must be used to quote the characters)2.5 E F1(\\)2.5 E F0(,)A F1($)2.5 +E F0 2.5(,a)C(nd)-2.5 E F1<92>2.5 E F0(.)A .601 +(If the redirection operator is)108 276 R F1(<<\255)3.101 E F0 3.101(,t) +C .601(hen all leading tab characters are stripped from input lines and\ + the line)-3.101 F(containing)108 288 Q F2(delimiter)2.5 E F0 5(.T).73 G +(his allo)-5 E (ws here-documents within shell scripts to be indented in a natural f) --.25 E(ashion.)-.1 E F2(Her)87 235.2 Q 2.5(eS)-.18 G(trings)-2.5 E F0 -2.5(Av)108 247.2 S(ariant of here documents, the format is:)-2.75 E([) -144 264 Q F1(n)A F0(])A F2(<<<)A F1(wor)A(d)-.37 E F0(The)108 280.8 Q F1 -(wor)2.894 E(d)-.37 E F0(under)2.894 E .394(goes brace e)-.18 F .393 +-.25 E(ashion.)-.1 E F1(Her)87 304.8 Q 2.5(eS)-.18 G(trings)-2.5 E F0 +2.5(Av)108 316.8 S(ariant of here documents, the format is:)-2.75 E([) +144 333.6 Q F2(n)A F0(])A F1(<<<)A F2(wor)A(d)-.37 E F0(The)108 350.4 Q +F2(wor)2.894 E(d)-.37 E F0(under)2.894 E .394(goes brace e)-.18 F .393 (xpansion, tilde e)-.15 F .393(xpansion, parameter and v)-.15 F .393 (ariable e)-.25 F .393(xpansion, command substi-)-.15 F 2.147 -(tution, arithmetic e)108 292.8 R 2.147(xpansion, and quote remo)-.15 F +(tution, arithmetic e)108 362.4 R 2.147(xpansion, and quote remo)-.15 F -.25(va)-.15 G 4.648(l. P).25 F 2.148(athname e)-.15 F 2.148 (xpansion and w)-.15 F 2.148(ord splitting are not per)-.1 F(-)-.2 E -2.574(formed. The)108 304.8 R .074(result is supplied as a single strin\ -g to the command on its standard input \(or \214le descriptor)2.574 F F1 -(n)2.574 E F0(if)2.574 E F1(n)108 316.8 Q F0(is speci\214ed\).)2.5 E F2 -(Duplicating File Descriptors)87 333.6 Q F0(The redirection operator)108 -345.6 Q([)144 362.4 Q F1(n)A F0(])A F2(<&)A F1(wor)A(d)-.37 E F0 .126 -(is used to duplicate input \214le descriptors.)108 379.2 R(If)5.127 E -F1(wor)2.967 E(d)-.37 E F0 -.15(ex)3.397 G .127 +2.813(formed. The)108 374.4 R .313 +(result is supplied as a single string, with a ne)2.813 F .312 +(wline appended, to the command on its standard)-.25 F +(input \(or \214le descriptor)108 386.4 Q F2(n)2.5 E F0(if)2.5 E F2(n) +2.5 E F0(is speci\214ed\).)2.5 E F1(Duplicating File Descriptors)87 +403.2 Q F0(The redirection operator)108 415.2 Q([)144 432 Q F2(n)A F0(]) +A F1(<&)A F2(wor)A(d)-.37 E F0 .126 +(is used to duplicate input \214le descriptors.)108 448.8 R(If)5.127 E +F2(wor)2.967 E(d)-.37 E F0 -.15(ex)3.397 G .127 (pands to one or more digits, the \214le descriptor denoted).15 F(by)108 -391.2 Q F1(n)3.318 E F0 .458(is made to be a cop)3.198 F 2.958(yo)-.1 G +460.8 Q F2(n)3.318 E F0 .458(is made to be a cop)3.198 F 2.958(yo)-.1 G 2.958(ft)-2.958 G .457(hat \214le descriptor)-2.958 F 5.457(.I)-.55 G -2.957(ft)-5.457 G .457(he digits in)-2.957 F F1(wor)3.297 E(d)-.37 E F0 +2.957(ft)-5.457 G .457(he digits in)-2.957 F F2(wor)3.297 E(d)-.37 E F0 .457(do not specify a \214le descriptor open)3.727 F .149 -(for input, a redirection error occurs.)108 403.2 R(If)5.149 E F1(wor) -2.989 E(d)-.37 E F0 -.25(eva)3.419 G .149(luates to).25 F F22.649 E -F0 2.65<2c8c>C .15(le descriptor)-2.65 F F1(n)3.01 E F0 .15(is closed.) -2.89 F(If)5.15 E F1(n)3.01 E F0 .15(is not speci\214ed,)2.89 F -(the standard input \(\214le descriptor 0\) is used.)108 415.2 Q -(The operator)108 432 Q([)144 448.8 Q F1(n)A F0(])A F2(>&)A F1(wor)A(d) --.37 E F0 .444 -(is used similarly to duplicate output \214le descriptors.)108 465.6 R -(If)5.444 E F1(n)3.304 E F0 .443 +(for input, a redirection error occurs.)108 472.8 R(If)5.149 E F2(wor) +2.989 E(d)-.37 E F0 -.25(eva)3.419 G .149(luates to).25 F F12.649 E +F0 2.65<2c8c>C .15(le descriptor)-2.65 F F2(n)3.01 E F0 .15(is closed.) +2.89 F(If)5.15 E F2(n)3.01 E F0 .15(is not speci\214ed,)2.89 F +(the standard input \(\214le descriptor 0\) is used.)108 484.8 Q +(The operator)108 501.6 Q([)144 518.4 Q F2(n)A F0(])A F1(>&)A F2(wor)A +(d)-.37 E F0 .444 +(is used similarly to duplicate output \214le descriptors.)108 535.2 R +(If)5.444 E F2(n)3.304 E F0 .443 (is not speci\214ed, the standard output \(\214le descrip-)3.183 F 1.357 -(tor 1\) is used.)108 477.6 R 1.357(If the digits in)6.357 F F1(wor) +(tor 1\) is used.)108 547.2 R 1.357(If the digits in)6.357 F F2(wor) 4.197 E(d)-.37 E F0 1.358(do not specify a \214le descriptor open for o\ -utput, a redirection error)4.627 F 2.754(occurs. If)108 489.6 R F1(wor) -3.094 E(d)-.37 E F0 -.25(eva)3.524 G .254(luates to).25 F F22.754 E -F0 2.754<2c8c>C .254(le descriptor)-2.754 F F1(n)3.114 E F0 .254 -(is closed.)2.994 F .254(As a special case, if)5.254 F F1(n)2.754 E F0 -.253(is omitted, and)2.754 F F1(wor)2.753 E(d)-.37 E F0(does)2.753 E -.965(not e)108 501.6 R .965(xpand to one or more digits or)-.15 F F2 +utput, a redirection error)4.627 F 2.754(occurs. If)108 559.2 R F2(wor) +3.094 E(d)-.37 E F0 -.25(eva)3.524 G .254(luates to).25 F F12.754 E +F0 2.754<2c8c>C .254(le descriptor)-2.754 F F2(n)3.114 E F0 .254 +(is closed.)2.994 F .254(As a special case, if)5.254 F F2(n)2.754 E F0 +.253(is omitted, and)2.754 F F2(wor)2.753 E(d)-.37 E F0(does)2.753 E +.965(not e)108 571.2 R .965(xpand to one or more digits or)-.15 F F1 3.465 E F0 3.466(,t)C .966 (he standard output and standard error are redirected as described) --3.466 F(pre)108 513.6 Q(viously)-.25 E(.)-.65 E F2(Mo)87 530.4 Q -(ving File Descriptors)-.1 E F0(The redirection operator)108 542.4 Q([) -144 559.2 Q F1(n)A F0(])A F2(<&)A F1(digit)A F2A F0(mo)108 576 Q --.15(ve)-.15 G 3.036(st).15 G .536(he \214le descriptor)-3.036 F F1 -(digit)3.036 E F0 .536(to \214le descriptor)3.036 F F1(n)3.036 E F0 -3.036(,o).24 G 3.036(rt)-3.036 G .535 -(he standard input \(\214le descriptor 0\) if)-3.036 F F1(n)3.035 E F0 -.535(is not speci-)3.035 F(\214ed.)108 588 Q F1(digit)5 E F0 -(is closed after being duplicated to)2.5 E F1(n)2.5 E F0(.)A(Similarly) -108 604.8 Q 2.5(,t)-.65 G(he redirection operator)-2.5 E([)144 621.6 Q -F1(n)A F0(])A F2(>&)A F1(digit)A F2A F0(mo)108 638.4 Q -.15(ve)-.15 -G 2.785(st).15 G .285(he \214le descriptor)-2.785 F F1(digit)2.785 E F0 -.285(to \214le descriptor)2.785 F F1(n)2.785 E F0 2.785(,o).24 G 2.785 +-3.466 F(pre)108 583.2 Q(viously)-.25 E(.)-.65 E F1(Mo)87 600 Q +(ving File Descriptors)-.1 E F0(The redirection operator)108 612 Q([)144 +628.8 Q F2(n)A F0(])A F1(<&)A F2(digit)A F1A F0(mo)108 645.6 Q -.15 +(ve)-.15 G 3.036(st).15 G .536(he \214le descriptor)-3.036 F F2(digit) +3.036 E F0 .536(to \214le descriptor)3.036 F F2(n)3.036 E F0 3.036(,o) +.24 G 3.036(rt)-3.036 G .535 +(he standard input \(\214le descriptor 0\) if)-3.036 F F2(n)3.035 E F0 +.535(is not speci-)3.035 F(\214ed.)108 657.6 Q F2(digit)5 E F0 +(is closed after being duplicated to)2.5 E F2(n)2.5 E F0(.)A(Similarly) +108 674.4 Q 2.5(,t)-.65 G(he redirection operator)-2.5 E([)144 691.2 Q +F2(n)A F0(])A F1(>&)A F2(digit)A F1A F0(mo)108 708 Q -.15(ve)-.15 G +2.785(st).15 G .285(he \214le descriptor)-2.785 F F2(digit)2.785 E F0 +.285(to \214le descriptor)2.785 F F2(n)2.785 E F0 2.785(,o).24 G 2.785 (rt)-2.785 G .286(he standard output \(\214le descriptor 1\) if)-2.785 F -F1(n)2.786 E F0 .286(is not speci-)2.786 F(\214ed.)108 650.4 Q F2 -(Opening File Descriptors f)87 667.2 Q(or Reading and Writing)-.25 E F0 -(The redirection operator)108 679.2 Q([)144 696 Q F1(n)A F0(])A F2(<>)A -F1(wor)A(d)-.37 E F0 1.349(causes the \214le whose name is the e)108 -712.8 R 1.349(xpansion of)-.15 F F1(wor)4.189 E(d)-.37 E F0 1.349 -(to be opened for both reading and writing on \214le)4.619 F(descriptor) -108 724.8 Q F1(n)2.5 E F0 2.5(,o).24 G 2.5(ro)-2.5 G 2.5<6e8c>-2.5 G -(le descriptor 0 if)-2.5 E F1(n)2.86 E F0(is not speci\214ed.)2.74 E -(If the \214le does not e)5 E(xist, it is created.)-.15 E(GNU Bash 4.4) -72 768 Q(2015 October 11)141.235 E(28)190.395 E 0 Cg EP +F2(n)2.786 E F0 .286(is not speci-)2.786 F(\214ed.)108 720 Q +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(28)185.545 E 0 Cg EP %%Page: 29 29 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95 -/Times-Bold@0 SF(ALIASES)72 84 Q/F2 10/Times-Italic@0 SF(Aliases)108 96 -Q F0(allo)3.173 E 3.173(was)-.25 G .674(tring to be substituted for a w) --3.173 F .674(ord when it is used as the \214rst w)-.1 F .674 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(Opening File Descriptors f)87 84 Q(or Reading and Writing)-.25 E F0 +(The redirection operator)108 96 Q([)144 112.8 Q/F2 10/Times-Italic@0 SF +(n)A F0(])A F1(<>)A F2(wor)A(d)-.37 E F0 1.349 +(causes the \214le whose name is the e)108 129.6 R 1.349(xpansion of) +-.15 F F2(wor)4.189 E(d)-.37 E F0 1.349 +(to be opened for both reading and writing on \214le)4.619 F(descriptor) +108 141.6 Q F2(n)2.5 E F0 2.5(,o).24 G 2.5(ro)-2.5 G 2.5<6e8c>-2.5 G +(le descriptor 0 if)-2.5 E F2(n)2.86 E F0(is not speci\214ed.)2.74 E +(If the \214le does not e)5 E(xist, it is created.)-.15 E/F3 10.95 +/Times-Bold@0 SF(ALIASES)72 158.4 Q F2(Aliases)108 170.4 Q F0(allo)3.173 +E 3.173(was)-.25 G .674(tring to be substituted for a w)-3.173 F .674 +(ord when it is used as the \214rst w)-.1 F .674 (ord of a simple command.)-.1 F .394(The shell maintains a list of alia\ -ses that may be set and unset with the)108 108 R/F3 10/Times-Bold@0 SF -(alias)2.893 E F0(and)2.893 E F3(unalias)2.893 E F0 -.2(bu)2.893 G .393 -(iltin commands).2 F(\(see)108 120 Q/F4 9/Times-Bold@0 SF 1.979(SHELL B) -4.479 F(UIL)-.09 E 1.979(TIN COMMANDS)-.828 F F0(belo)4.229 E 4.48 -(w\). The)-.25 F 1.98(\214rst w)4.48 F 1.98 -(ord of each simple command, if unquoted, is)-.1 F(check)108 132 Q .473 -(ed to see if it has an alias.)-.1 F .473(If so, that w)5.473 F .472 -(ord is replaced by the te)-.1 F .472(xt of the alias.)-.15 F .472 -(The characters)5.472 F F3(/)2.972 E F0(,)A F3($)2.972 E F0(,)A F3<92> -2.972 E F0(,)A(and)108 144 Q F3(=)3.611 E F0 1.111(and an)3.611 F 3.611 -(yo)-.15 G 3.611(ft)-3.611 G 1.111(he shell)-3.611 F F2(metac)3.612 E -(har)-.15 E(acter)-.15 E(s)-.1 E F0 1.112 +ses that may be set and unset with the)108 182.4 R F1(alias)2.893 E F0 +(and)2.893 E F1(unalias)2.893 E F0 -.2(bu)2.893 G .393(iltin commands).2 +F(\(see)108 194.4 Q/F4 9/Times-Bold@0 SF 1.979(SHELL B)4.479 F(UIL)-.09 +E 1.979(TIN COMMANDS)-.828 F F0(belo)4.229 E 4.48(w\). The)-.25 F 1.98 +(\214rst w)4.48 F 1.98(ord of each simple command, if unquoted, is)-.1 F +(check)108 206.4 Q .473(ed to see if it has an alias.)-.1 F .473 +(If so, that w)5.473 F .472(ord is replaced by the te)-.1 F .472 +(xt of the alias.)-.15 F .472(The characters)5.472 F F1(/)2.972 E F0(,)A +F1($)2.972 E F0(,)A F1<92>2.972 E F0(,)A(and)108 218.4 Q F1(=)3.611 E F0 +1.111(and an)3.611 F 3.611(yo)-.15 G 3.611(ft)-3.611 G 1.111(he shell) +-3.611 F F2(metac)3.612 E(har)-.15 E(acter)-.15 E(s)-.1 E F0 1.112 (or quoting characters listed abo)3.612 F 1.412 -.15(ve m)-.15 H 1.112 -(ay not appear in an alias).15 F 3.62(name. The)108 156 R 1.12 +(ay not appear in an alias).15 F 3.62(name. The)108 230.4 R 1.12 (replacement te)3.62 F 1.119(xt may contain an)-.15 F 3.619(yv)-.15 G 1.119(alid shell input, including shell metacharacters.)-3.869 F 1.119 -(The \214rst)6.119 F -.1(wo)108 168 S .513(rd of the replacement te).1 F -.513(xt is tested for aliases, b)-.15 F .513(ut a w)-.2 F .514 +(The \214rst)6.119 F -.1(wo)108 242.4 S .513(rd of the replacement te).1 +F .513(xt is tested for aliases, b)-.15 F .513(ut a w)-.2 F .514 (ord that is identical to an alias being e)-.1 F .514(xpanded is)-.15 F -.296(not e)108 180 R .296(xpanded a second time.)-.15 F .296 -(This means that one may alias)5.296 F F3(ls)2.796 E F0(to)2.796 E F3 -.296(ls \255F)2.796 F F0 2.796(,f)C .295(or instance, and)-2.796 F F3 -(bash)2.795 E F0 .295(does not try)2.795 F .542(to recursi)108 192 R +.296(not e)108 254.4 R .296(xpanded a second time.)-.15 F .296 +(This means that one may alias)5.296 F F1(ls)2.796 E F0(to)2.796 E F1 +.296(ls \255F)2.796 F F0 2.796(,f)C .295(or instance, and)-2.796 F F1 +(bash)2.795 E F0 .295(does not try)2.795 F .542(to recursi)108 266.4 R -.15(ve)-.25 G .542(ly e).15 F .542(xpand the replacement te)-.15 F 3.042(xt. If)-.15 F .543(the last character of the alias v)3.042 F .543 (alue is a)-.25 F F2(blank)3.043 E F0 3.043(,t).67 G .543(hen the ne) --3.043 F(xt)-.15 E(command w)108 204 Q(ord follo)-.1 E +-3.043 F(xt)-.15 E(command w)108 278.4 Q(ord follo)-.1 E (wing the alias is also check)-.25 E(ed for alias e)-.1 E(xpansion.)-.15 -E(Aliases are created and listed with the)108 220.8 Q F3(alias)2.5 E F0 -(command, and remo)2.5 E -.15(ve)-.15 G 2.5(dw).15 G(ith the)-2.5 E F3 +E(Aliases are created and listed with the)108 295.2 Q F1(alias)2.5 E F0 +(command, and remo)2.5 E -.15(ve)-.15 G 2.5(dw).15 G(ith the)-2.5 E F1 (unalias)2.5 E F0(command.)2.5 E .284 -(There is no mechanism for using ar)108 237.6 R .284 +(There is no mechanism for using ar)108 312 R .284 (guments in the replacement te)-.18 F 2.784(xt. If)-.15 F(ar)2.784 E .284(guments are needed, a shell func-)-.18 F(tion should be used \(see) -108 249.6 Q F4(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E 1.22 -(Aliases are not e)108 266.4 R 1.22 +108 324 Q F4(FUNCTIONS)2.5 E F0(belo)2.25 E(w\).)-.25 E 1.22 +(Aliases are not e)108 340.8 R 1.22 (xpanded when the shell is not interacti)-.15 F -.15(ve)-.25 G 3.72(,u) -.15 G 1.22(nless the)-3.72 F F3(expand_aliases)3.72 E F0 1.22 -(shell option is set)3.72 F(using)108 278.4 Q F3(shopt)2.5 E F0 -(\(see the description of)2.5 E F3(shopt)2.5 E F0(under)2.5 E F4 +.15 G 1.22(nless the)-3.72 F F1(expand_aliases)3.72 E F0 1.22 +(shell option is set)3.72 F(using)108 352.8 Q F1(shopt)2.5 E F0 +(\(see the description of)2.5 E F1(shopt)2.5 E F0(under)2.5 E F4 (SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E .436 (The rules concerning the de\214nition and use of aliases are some)108 -295.2 R .435(what confusing.)-.25 F F3(Bash)5.435 E F0(al)2.935 E -.1 +369.6 R .435(what confusing.)-.25 F F1(Bash)5.435 E F0(al)2.935 E -.1 (wa)-.1 G .435(ys reads at least).1 F .337 -(one complete line of input before e)108 307.2 R -.15(xe)-.15 G .338 +(one complete line of input before e)108 381.6 R -.15(xe)-.15 G .338 (cuting an).15 F 2.838(yo)-.15 G 2.838(ft)-2.838 G .338 (he commands on that line.)-2.838 F .338(Aliases are e)5.338 F .338 -(xpanded when)-.15 F 3.404(ac)108 319.2 S .904 +(xpanded when)-.15 F 3.404(ac)108 393.6 S .904 (ommand is read, not when it is e)-3.404 F -.15(xe)-.15 G 3.404 (cuted. Therefore,).15 F .904 (an alias de\214nition appearing on the same line as)3.404 F 1.161 -(another command does not tak)108 331.2 R 3.662(ee)-.1 G -.25(ff)-3.662 +(another command does not tak)108 405.6 R 3.662(ee)-.1 G -.25(ff)-3.662 G 1.162(ect until the ne).25 F 1.162(xt line of input is read.)-.15 F 1.162(The commands follo)6.162 F 1.162(wing the)-.25 F .277 -(alias de\214nition on that line are not af)108 343.2 R .277 +(alias de\214nition on that line are not af)108 417.6 R .277 (fected by the ne)-.25 F 2.777(wa)-.25 G 2.777(lias. This)-2.777 F(beha) 2.777 E .277(vior is also an issue when functions)-.2 F .698(are e)108 -355.2 R -.15(xe)-.15 G 3.198(cuted. Aliases).15 F .698(are e)3.198 F +429.6 R -.15(xe)-.15 G 3.198(cuted. Aliases).15 F .698(are e)3.198 F .699(xpanded when a function de\214nition is read, not when the functio\ n is e)-.15 F -.15(xe)-.15 G(cuted,).15 E .613 -(because a function de\214nition is itself a command.)108 367.2 R .612 +(because a function de\214nition is itself a command.)108 441.6 R .612 (As a consequence, aliases de\214ned in a function are not)5.612 F -.2 -(av)108 379.2 S .058(ailable until after that function is e)-.05 F -.15 +(av)108 453.6 S .058(ailable until after that function is e)-.05 F -.15 (xe)-.15 G 2.558(cuted. T).15 F 2.558(ob)-.8 G 2.558(es)-2.558 G .058 (afe, al)-2.558 F -.1(wa)-.1 G .059 (ys put alias de\214nitions on a separate line, and).1 F(do not use)108 -391.2 Q F3(alias)2.5 E F0(in compound commands.)2.5 E -.15(Fo)108 408 S -2.5(ra).15 G(lmost e)-2.5 E -.15(ve)-.25 G -(ry purpose, aliases are superseded by shell functions.).15 E F1 -(FUNCTIONS)72 424.8 Q F0 3.468(As)108 436.8 S .968 +465.6 Q F1(alias)2.5 E F0(in compound commands.)2.5 E -.15(Fo)108 482.4 +S 2.5(ra).15 G(lmost e)-2.5 E -.15(ve)-.25 G +(ry purpose, aliases are superseded by shell functions.).15 E F3 +(FUNCTIONS)72 499.2 Q F0 3.468(As)108 511.2 S .968 (hell function, de\214ned as described abo)-3.468 F 1.267 -.15(ve u)-.15 H(nder).15 E F4 .967(SHELL GRAMMAR)3.467 F/F5 9/Times-Roman@0 SF(,)A F0 -.967(stores a series of commands for)3.217 F 1.001(later e)108 448.8 R +.967(stores a series of commands for)3.217 F 1.001(later e)108 523.2 R -.15(xe)-.15 G 3.501(cution. When).15 F 1.002(the name of a shell funct\ ion is used as a simple command name, the list of com-)3.501 F .316 -(mands associated with that function name is e)108 460.8 R -.15(xe)-.15 +(mands associated with that function name is e)108 535.2 R -.15(xe)-.15 G 2.816(cuted. Functions).15 F .316(are e)2.816 F -.15(xe)-.15 G .315 (cuted in the conte).15 F .315(xt of the current)-.15 F .035 -(shell; no ne)108 472.8 R 2.535(wp)-.25 G .036 +(shell; no ne)108 547.2 R 2.535(wp)-.25 G .036 (rocess is created to interpret them \(contrast this with the e)-2.535 F -.15(xe)-.15 G .036(cution of a shell script\).).15 F .036(When a)5.036 -F .64(function is e)108 484.8 R -.15(xe)-.15 G .64(cuted, the ar).15 F +F .64(function is e)108 559.2 R -.15(xe)-.15 G .64(cuted, the ar).15 F .639 (guments to the function become the positional parameters during its e) --.18 F -.15(xe)-.15 G(cution.).15 E .532(The special parameter)108 496.8 -R F3(#)3.032 E F0 .532(is updated to re\215ect the change.)3.032 F .532 -(Special parameter)5.532 F F3(0)3.033 E F0 .533(is unchanged.)3.033 F -.533(The \214rst ele-)5.533 F(ment of the)108 508.8 Q F4(FUNCN)2.5 E +-.18 F -.15(xe)-.15 G(cution.).15 E .532(The special parameter)108 571.2 +R F1(#)3.032 E F0 .532(is updated to re\215ect the change.)3.032 F .532 +(Special parameter)5.532 F F1(0)3.033 E F0 .533(is unchanged.)3.033 F +.533(The \214rst ele-)5.533 F(ment of the)108 583.2 Q F4(FUNCN)2.5 E (AME)-.18 E F0 -.25(va)2.25 G (riable is set to the name of the function while the function is e).25 E -.15(xe)-.15 G(cuting.).15 E 1.25(All other aspects of the shell e)108 -525.6 R -.15(xe)-.15 G 1.25(cution en).15 F 1.25 +600 R -.15(xe)-.15 G 1.25(cution en).15 F 1.25 (vironment are identical between a function and its caller with)-.4 F -1.214(these e)108 537.6 R 1.214(xceptions: the)-.15 F F4(DEB)3.714 E(UG) --.09 E F0(and)3.464 E F3(RETURN)3.715 E F0 1.215 -(traps \(see the description of the)3.715 F F3(trap)3.715 E F0 -.2(bu) -3.715 G 1.215(iltin under).2 F F4(SHELL)3.715 E -.09(BU)108 549.6 S(IL) -.09 E .479(TIN COMMANDS)-.828 F F0(belo)2.729 E .479 +1.214(these e)108 612 R 1.214(xceptions: the)-.15 F F4(DEB)3.714 E(UG) +-.09 E F0(and)3.464 E F1(RETURN)3.715 E F0 1.215 +(traps \(see the description of the)3.715 F F1(trap)3.715 E F0 -.2(bu) +3.715 G 1.215(iltin under).2 F F4(SHELL)3.715 E -.09(BU)108 624 S(IL).09 +E .479(TIN COMMANDS)-.828 F F0(belo)2.729 E .479 (w\) are not inherited unless the function has been gi)-.25 F -.15(ve) --.25 G 2.978(nt).15 G(he)-2.978 E F3(trace)2.978 E F0(attrib)2.978 E -.478(ute \(see)-.2 F .42(the description of the)108 561.6 R F4(declar) -2.92 E(e)-.162 E F0 -.2(bu)2.67 G .42(iltin belo).2 F .42(w\) or the) --.25 F F3 .42(\255o functrace)2.92 F F0 .42 -(shell option has been enabled with the)2.92 F F3(set)2.921 E F0 -.2(bu) -108 573.6 S .072(iltin \(in which case all functions inherit the).2 F F3 -(DEB)2.572 E(UG)-.1 E F0(and)2.572 E F3(RETURN)2.572 E F0 .072 +-.25 G 2.978(nt).15 G(he)-2.978 E F1(trace)2.978 E F0(attrib)2.978 E +.478(ute \(see)-.2 F .42(the description of the)108 636 R F4(declar)2.92 +E(e)-.162 E F0 -.2(bu)2.67 G .42(iltin belo).2 F .42(w\) or the)-.25 F +F1 .42(\255o functrace)2.92 F F0 .42 +(shell option has been enabled with the)2.92 F F1(set)2.921 E F0 -.2(bu) +108 648 S .072(iltin \(in which case all functions inherit the).2 F F1 +(DEB)2.572 E(UG)-.1 E F0(and)2.572 E F1(RETURN)2.572 E F0 .072 (traps\), and the)2.572 F F4(ERR)2.571 E F0 .071(trap is not inher)2.321 -F(-)-.2 E(ited unless the)108 585.6 Q F3(\255o errtrace)2.5 E F0 -(shell option has been enabled.)2.5 E -1.11(Va)108 602.4 S .655 -(riables local to the function may be declared with the)1.11 F F3(local) +F(-)-.2 E(ited unless the)108 660 Q F1(\255o errtrace)2.5 E F0 +(shell option has been enabled.)2.5 E -1.11(Va)108 676.8 S .655 +(riables local to the function may be declared with the)1.11 F F1(local) 3.155 E F0 -.2(bu)3.156 G .656(iltin command.).2 F(Ordinarily)5.656 E -3.156(,v)-.65 G .656(ariables and)-3.406 F(their v)108 614.4 Q +3.156(,v)-.65 G .656(ariables and)-3.406 F(their v)108 688.8 Q (alues are shared between the function and its caller)-.25 E(.)-.55 E -(The)108 631.2 Q F3(FUNCNEST)3.529 E F0 -.25(va)3.529 G 1.028 +(The)108 705.6 Q F1(FUNCNEST)3.529 E F0 -.25(va)3.529 G 1.028 (riable, if set to a numeric v).25 F 1.028 (alue greater than 0, de\214nes a maximum function nesting)-.25 F(le)108 -643.2 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G +717.6 Q -.15(ve)-.25 G 2.5(l. Function).15 F(in)2.5 E -.2(vo)-.4 G (cations that e).2 E(xceed the limit cause the entire command to abort.) --.15 E .043(If the b)108 660 R .043(uiltin command)-.2 F F3 -.18(re) -2.543 G(tur).18 E(n)-.15 E F0 .043(is e)2.543 F -.15(xe)-.15 G .043 -(cuted in a function, the function completes and e).15 F -.15(xe)-.15 G -.044(cution resumes with).15 F 1.012(the ne)108 672 R 1.012 -(xt command after the function call.)-.15 F(An)6.011 E 3.511(yc)-.15 G -1.011(ommand associated with the)-3.511 F F3(RETURN)3.511 E F0 1.011 -(trap is e)3.511 F -.15(xe)-.15 G(cuted).15 E .213(before e)108 684 R --.15(xe)-.15 G .213(cution resumes.).15 F .213 -(When a function completes, the v)5.213 F .214 -(alues of the positional parameters and the spe-)-.25 F(cial parameter) -108 696 Q F3(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E 2.5 -(yh)-.15 G(ad prior to the function')-2.5 E 2.5(se)-.55 G -.15(xe)-2.65 -G(cution.).15 E 1.359 -(Function names and de\214nitions may be listed with the)108 712.8 R F3 -3.858 E F0 1.358(option to the)3.858 F F3(declar)3.858 E(e)-.18 E -F0(or)3.858 E F3(typeset)3.858 E F0 -.2(bu)3.858 G 1.358(iltin com-).2 F -3.39(mands. The)108 724.8 R F33.39 E F0 .89(option to)3.39 F F3 -(declar)3.39 E(e)-.18 E F0(or)3.39 E F3(typeset)3.39 E F0 .89 -(will list the function names only \(and optionally the source)3.39 F -(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(29)190.395 E 0 Cg EP +-.15 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16) +.15 E(29)185.545 E 0 Cg EP %%Page: 30 30 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .327 -(\214le and line number)108 84 R 2.827(,i)-.4 G 2.827(ft)-2.827 G(he) --2.827 E/F1 10/Times-Bold@0 SF(extdeb)2.827 E(ug)-.2 E F0 .326 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .043(If the b)108 +84 R .043(uiltin command)-.2 F/F1 10/Times-Bold@0 SF -.18(re)2.543 G +(tur).18 E(n)-.15 E F0 .043(is e)2.543 F -.15(xe)-.15 G .043 +(cuted in a function, the function completes and e).15 F -.15(xe)-.15 G +.044(cution resumes with).15 F 1.012(the ne)108 96 R 1.012 +(xt command after the function call.)-.15 F(An)6.011 E 3.511(yc)-.15 G +1.011(ommand associated with the)-3.511 F F1(RETURN)3.511 E F0 1.011 +(trap is e)3.511 F -.15(xe)-.15 G(cuted).15 E .213(before e)108 108 R +-.15(xe)-.15 G .213(cution resumes.).15 F .213 +(When a function completes, the v)5.213 F .214 +(alues of the positional parameters and the spe-)-.25 F(cial parameter) +108 120 Q F1(#)2.5 E F0(are restored to the v)2.5 E(alues the)-.25 E 2.5 +(yh)-.15 G(ad prior to the function')-2.5 E 2.5(se)-.55 G -.15(xe)-2.65 +G(cution.).15 E 1.359 +(Function names and de\214nitions may be listed with the)108 136.8 R F1 +3.858 E F0 1.358(option to the)3.858 F F1(declar)3.858 E(e)-.18 E +F0(or)3.858 E F1(typeset)3.858 E F0 -.2(bu)3.858 G 1.358(iltin com-).2 F +3.39(mands. The)108 148.8 R F13.39 E F0 .89(option to)3.39 F F1 +(declar)3.39 E(e)-.18 E F0(or)3.39 E F1(typeset)3.39 E F0 .89 +(will list the function names only \(and optionally the source)3.39 F +.327(\214le and line number)108 160.8 R 2.827(,i)-.4 G 2.827(ft)-2.827 G +(he)-2.827 E F1(extdeb)2.827 E(ug)-.2 E F0 .326 (shell option is enabled\).)2.827 F .326(Functions may be e)5.326 F .326 -(xported so that subshells)-.15 F 1.297(automatically ha)108 96 R 1.597 --.15(ve t)-.2 H 1.297(hem de\214ned with the).15 F F13.797 E F0 -1.297(option to the)3.797 F F1(export)3.798 E F0 -.2(bu)3.798 G 3.798 +(xported so that subshells)-.15 F 1.297(automatically ha)108 172.8 R +1.597 -.15(ve t)-.2 H 1.297(hem de\214ned with the).15 F F13.797 E +F0 1.297(option to the)3.797 F F1(export)3.798 E F0 -.2(bu)3.798 G 3.798 (iltin. A).2 F 1.298(function de\214nition may be)3.798 F .161 -(deleted using the)108 108 R F12.661 E F0 .161(option to the)2.661 -F F1(unset)2.661 E F0 -.2(bu)2.661 G 2.661(iltin. Note).2 F .16 +(deleted using the)108 184.8 R F12.661 E F0 .161(option to the) +2.661 F F1(unset)2.661 E F0 -.2(bu)2.661 G 2.661(iltin. Note).2 F .16 (that shell functions and v)2.661 F .16(ariables with the same name)-.25 F 1.325(may result in multiple identically-named entries in the en)108 -120 R 1.325(vironment passed to the shell')-.4 F 3.825(sc)-.55 G 3.825 -(hildren. Care)-3.825 F(should be tak)108 132 Q +196.8 R 1.325(vironment passed to the shell')-.4 F 3.825(sc)-.55 G 3.825 +(hildren. Care)-3.825 F(should be tak)108 208.8 Q (en in cases where this may cause a problem.)-.1 E .372 -(Functions may be recursi)108 148.8 R -.15(ve)-.25 G 5.371(.T).15 G(he) +(Functions may be recursi)108 225.6 R -.15(ve)-.25 G 5.371(.T).15 G(he) -5.371 E F1(FUNCNEST)2.871 E F0 -.25(va)2.871 G .371 (riable may be used to limit the depth of the function call).25 F 1.141 -(stack and restrict the number of function in)108 160.8 R -.2(vo)-.4 G +(stack and restrict the number of function in)108 237.6 R -.2(vo)-.4 G 3.641(cations. By).2 F(def)3.641 E 1.141 -(ault, no limit is imposed on the number of)-.1 F(recursi)108 172.8 Q .3 +(ault, no limit is imposed on the number of)-.1 F(recursi)108 249.6 Q .3 -.15(ve c)-.25 H(alls.).15 E/F2 10.95/Times-Bold@0 SF(ARITHMETIC EV)72 -189.6 Q(ALU)-1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 2.298 -(The shell allo)108 201.6 R 2.297(ws arithmetic e)-.25 F 2.297 +266.4 Q(ALU)-1.478 E -1.04(AT)-.657 G(ION)1.04 E F0 2.298 +(The shell allo)108 278.4 R 2.297(ws arithmetic e)-.25 F 2.297 (xpressions to be e)-.15 F -.25(va)-.25 G 2.297 (luated, under certain circumstances \(see the).25 F F1(let)4.797 E F0 -(and)4.797 E F1(declar)108 213.6 Q(e)-.18 E F0 -.2(bu)2.705 G .205 +(and)4.797 E F1(declar)108 290.4 Q(e)-.18 E F0 -.2(bu)2.705 G .205 (iltin commands and).2 F F1 .205(Arithmetic Expansion)2.705 F F0 2.705 (\). Ev)B .205(aluation is done in \214x)-.25 F .206(ed-width inte)-.15 -F .206(gers with no)-.15 F .429(check for o)108 225.6 R -.15(ve)-.15 G +F .206(gers with no)-.15 F .429(check for o)108 302.4 R -.15(ve)-.15 G (r\215o).15 E 1.729 -.65(w, t)-.25 H .429(hough di).65 F .428 (vision by 0 is trapped and \215agged as an error)-.25 F 5.428(.T)-.55 G .428(he operators and their prece-)-5.428 F 1.919(dence, associati)108 -237.6 R(vity)-.25 E 4.419(,a)-.65 G 1.919(nd v)-4.419 F 1.919 +314.4 R(vity)-.25 E 4.419(,a)-.65 G 1.919(nd v)-4.419 F 1.919 (alues are the same as in the C language.)-.25 F 1.92(The follo)6.92 F -1.92(wing list of operators is)-.25 F(grouped into le)108 249.6 Q -.15 +1.92(wing list of operators is)-.25 F(grouped into le)108 326.4 Q -.15 (ve)-.25 G(ls of equal-precedence operators.).15 E(The le)5 E -.15(ve) -.25 G(ls are listed in order of decreasing precedence.).15 E/F3 10 -/Times-Italic@0 SF(id)108 266.4 Q F1(++)A F3(id)2.5 E F1A F0 -.25 -(va)144 278.4 S(riable post-increment and post-decrement).25 E F1(++)108 -290.4 Q F3(id)A F12.5 E F3(id)A F0 -.25(va)144 302.4 S -(riable pre-increment and pre-decrement).25 E F1 2.5108 314.4 S F0 -(unary minus and plus)144 314.4 Q F1 2.5(!~)108 326.4 S F0 -(logical and bitwise ne)144 326.4 Q -.05(ga)-.15 G(tion).05 E F1(**)108 -338.4 Q F0 -.15(ex)144 338.4 S(ponentiation).15 E F1 2.5(*/%)108 350.4 S -F0(multiplication, di)144 350.4 Q(vision, remainder)-.25 E F1 2.5<2bad> -108 362.4 S F0(addition, subtraction)144 362.4 Q F1(<< >>)108 374.4 Q F0 -(left and right bitwise shifts)144 374.4 Q F1(<= >= < >)108 386.4 Q F0 -(comparison)144 398.4 Q F1(== !=)108 410.4 Q F0(equality and inequality) -144 410.4 Q F1(&)108 422.4 Q F0(bitwise AND)144 422.4 Q F1(^)108 434.4 Q -F0(bitwise e)144 434.4 Q(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F1(|) -108 446.4 Q F0(bitwise OR)144 446.4 Q F1(&&)108 458.4 Q F0(logical AND) -144 458.4 Q F1(||)108 470.4 Q F0(logical OR)144 470.4 Q F3 -.2(ex)108 -482.4 S(pr).2 E F1(?)A F3 -.2(ex)C(pr).2 E F1(:)A F3 -.2(ex)C(pr).2 E F0 -(conditional operator)144 494.4 Q F1 2.5(=*)108 506.4 S 2.5(=/)-2.5 G +/Times-Italic@0 SF(id)108 343.2 Q F1(++)A F3(id)2.5 E F1A F0 -.25 +(va)144 355.2 S(riable post-increment and post-decrement).25 E F1(++)108 +367.2 Q F3(id)A F12.5 E F3(id)A F0 -.25(va)144 379.2 S +(riable pre-increment and pre-decrement).25 E F1 2.5108 391.2 S F0 +(unary minus and plus)144 391.2 Q F1 2.5(!~)108 403.2 S F0 +(logical and bitwise ne)144 403.2 Q -.05(ga)-.15 G(tion).05 E F1(**)108 +415.2 Q F0 -.15(ex)144 415.2 S(ponentiation).15 E F1 2.5(*/%)108 427.2 S +F0(multiplication, di)144 427.2 Q(vision, remainder)-.25 E F1 2.5<2bad> +108 439.2 S F0(addition, subtraction)144 439.2 Q F1(<< >>)108 451.2 Q F0 +(left and right bitwise shifts)144 451.2 Q F1(<= >= < >)108 463.2 Q F0 +(comparison)144 475.2 Q F1(== !=)108 487.2 Q F0(equality and inequality) +144 487.2 Q F1(&)108 499.2 Q F0(bitwise AND)144 499.2 Q F1(^)108 511.2 Q +F0(bitwise e)144 511.2 Q(xclusi)-.15 E .3 -.15(ve O)-.25 H(R).15 E F1(|) +108 523.2 Q F0(bitwise OR)144 523.2 Q F1(&&)108 535.2 Q F0(logical AND) +144 535.2 Q F1(||)108 547.2 Q F0(logical OR)144 547.2 Q F3 -.2(ex)108 +559.2 S(pr).2 E F1(?)A F3 -.2(ex)C(pr).2 E F1(:)A F3 -.2(ex)C(pr).2 E F0 +(conditional operator)144 571.2 Q F1 2.5(=*)108 583.2 S 2.5(=/)-2.5 G 2.5(=%)-2.5 G 2.5(=+)-2.5 G 2.5<3dad>-2.5 G 2.5(=<)-2.5 G -(<= >>= &= ^= |=)-2.5 E F0(assignment)144 518.4 Q F3 -.2(ex)108 530.4 S -(pr1).2 E F1(,)2.5 E F3 -.2(ex)2.5 G(pr2).2 E F0(comma)144 542.4 Q .68 -(Shell v)108 559.2 R .68(ariables are allo)-.25 F .68 +(<= >>= &= ^= |=)-2.5 E F0(assignment)144 595.2 Q F3 -.2(ex)108 607.2 S +(pr1).2 E F1(,)2.5 E F3 -.2(ex)2.5 G(pr2).2 E F0(comma)144 619.2 Q .68 +(Shell v)108 636 R .68(ariables are allo)-.25 F .68 (wed as operands; parameter e)-.25 F .68 (xpansion is performed before the e)-.15 F .68(xpression is e)-.15 F --.25(va)-.25 G(lu-).25 E 3.507(ated. W)108 571.2 R 1.007(ithin an e)-.4 -F 1.007(xpression, shell v)-.15 F 1.007 +-.25(va)-.25 G(lu-).25 E 3.507(ated. W)108 648 R 1.007(ithin an e)-.4 F +1.007(xpression, shell v)-.15 F 1.007 (ariables may also be referenced by name without using the parameter) --.25 F -.15(ex)108 583.2 S 1.041(pansion syntax.).15 F 3.541(As)6.041 G +-.25 F -.15(ex)108 660 S 1.041(pansion syntax.).15 F 3.541(As)6.041 G 1.041(hell v)-3.541 F 1.041(ariable that is null or unset e)-.25 F -.25 (va)-.25 G 1.04(luates to 0 when referenced by name without).25 F 1.466 -(using the parameter e)108 595.2 R 1.466(xpansion syntax.)-.15 F 1.467 +(using the parameter e)108 672 R 1.466(xpansion syntax.)-.15 F 1.467 (The v)6.466 F 1.467(alue of a v)-.25 F 1.467(ariable is e)-.25 F -.25 (va)-.25 G 1.467(luated as an arithmetic e).25 F(xpression)-.15 E 1.39 -(when it is referenced, or when a v)108 607.2 R 1.389 +(when it is referenced, or when a v)108 684 R 1.389 (ariable which has been gi)-.25 F -.15(ve)-.25 G 3.889(nt).15 G(he) -3.889 E F3(inte)3.889 E -.1(ge)-.4 G(r).1 E F0(attrib)3.889 E 1.389 (ute using)-.2 F F1(declar)3.889 E 3.889(e-)-.18 G(i)-3.889 E F0(is) -3.889 E .332(assigned a v)108 619.2 R 2.832(alue. A)-.25 F .332(null v) +3.889 E .332(assigned a v)108 696 R 2.832(alue. A)-.25 F .332(null v) 2.832 F .332(alue e)-.25 F -.25(va)-.25 G .332(luates to 0.).25 F 2.832 (As)5.332 G .332(hell v)-2.832 F .332(ariable need not ha)-.25 F .632 -.15(ve i)-.2 H(ts).15 E F3(inte)2.832 E -.1(ge)-.4 G(r).1 E F0(attrib) -2.832 E .333(ute turned on)-.2 F(to be used in an e)108 631.2 Q +2.832 E .333(ute turned on)-.2 F(to be used in an e)108 708 Q (xpression.)-.15 E 1.406 -(Constants with a leading 0 are interpreted as octal numbers.)108 648 R -3.906(Al)6.406 G 1.406(eading 0x or 0X denotes he)-3.906 F(xadecimal.) --.15 E .112(Otherwise, numbers tak)108 660 R 2.612(et)-.1 G .112 -(he form [)-2.612 F F3(base#)A F0 .112(]n, where the optional)B F3(base) -2.612 E F0 .113(is a decimal number between 2 and 64)2.612 F .534 -(representing the arithmetic base, and)108 672 R F3(n)3.034 E F0 .534 -(is a number in that base.)3.034 F(If)5.533 E F3(base#)3.033 E F0 .533 -(is omitted, then base 10 is used.)3.033 F .512(When specifying)108 684 -R F3(n)3.012 E F0 3.012(,t)C .512 -(he digits greater than 9 are represented by the lo)-3.012 F .513 -(wercase letters, the uppercase letters,)-.25 F .943 -(@, and _, in that order)108 696 R 5.943(.I)-.55 G(f)-5.943 E F3(base) -3.443 E F0 .942(is less than or equal to 36, lo)3.443 F .942 -(wercase and uppercase letters may be used)-.25 F -(interchangeably to represent numbers between 10 and 35.)108 708 Q .234 -(Operators are e)108 724.8 R -.25(va)-.25 G .234 -(luated in order of precedence.).25 F(Sub-e)5.234 E .234 -(xpressions in parentheses are e)-.15 F -.25(va)-.25 G .235 -(luated \214rst and may).25 F(GNU Bash 4.4)72 768 Q(2015 October 11) -141.235 E(30)190.395 E 0 Cg EP +(Constants with a leading 0 are interpreted as octal numbers.)108 724.8 +R 3.906(Al)6.406 G 1.406(eading 0x or 0X denotes he)-3.906 F(xadecimal.) +-.15 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16) +.15 E(30)185.545 E 0 Cg EP %%Page: 31 31 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.15(ove)108 84 S -(rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E/F1 10.95 -/Times-Bold@0 SF(CONDITION)72 100.8 Q(AL EXPRESSIONS)-.219 E F0 .256 -(Conditional e)108 112.8 R .256(xpressions are used by the)-.15 F/F2 10 -/Times-Bold@0 SF([[)2.755 E F0 .255(compound command and the)2.755 F F2 -(test)2.755 E F0(and)2.755 E F2([)2.755 E F0 -.2(bu)2.755 G .255 -(iltin commands to test).2 F .77(\214le attrib)108 124.8 R .77 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .112 +(Otherwise, numbers tak)108 84 R 2.612(et)-.1 G .112(he form [)-2.612 F +/F1 10/Times-Italic@0 SF(base#)A F0 .112(]n, where the optional)B F1 +(base)2.612 E F0 .113(is a decimal number between 2 and 64)2.612 F .534 +(representing the arithmetic base, and)108 96 R F1(n)3.034 E F0 .534 +(is a number in that base.)3.034 F(If)5.533 E F1(base#)3.033 E F0 .533 +(is omitted, then base 10 is used.)3.033 F .512(When specifying)108 108 +R F1(n)3.012 E F0 3.012(,t)C .512 +(he digits greater than 9 are represented by the lo)-3.012 F .513 +(wercase letters, the uppercase letters,)-.25 F .943 +(@, and _, in that order)108 120 R 5.943(.I)-.55 G(f)-5.943 E F1(base) +3.443 E F0 .942(is less than or equal to 36, lo)3.443 F .942 +(wercase and uppercase letters may be used)-.25 F +(interchangeably to represent numbers between 10 and 35.)108 132 Q .234 +(Operators are e)108 148.8 R -.25(va)-.25 G .234 +(luated in order of precedence.).25 F(Sub-e)5.234 E .234 +(xpressions in parentheses are e)-.15 F -.25(va)-.25 G .235 +(luated \214rst and may).25 F -.15(ove)108 160.8 S +(rride the precedence rules abo).15 E -.15(ve)-.15 G(.).15 E/F2 10.95 +/Times-Bold@0 SF(CONDITION)72 177.6 Q(AL EXPRESSIONS)-.219 E F0 .256 +(Conditional e)108 189.6 R .256(xpressions are used by the)-.15 F/F3 10 +/Times-Bold@0 SF([[)2.755 E F0 .255(compound command and the)2.755 F F3 +(test)2.755 E F0(and)2.755 E F3([)2.755 E F0 -.2(bu)2.755 G .255 +(iltin commands to test).2 F .77(\214le attrib)108 201.6 R .77 (utes and perform string and arithmetic comparisons.)-.2 F .77 (Expressions are formed from the follo)5.77 F(wing)-.25 E 1.041 -(unary or binary primaries.)108 136.8 R 1.041(If an)6.041 F(y)-.15 E/F3 -10/Times-Italic@0 SF(\214le)3.541 E F0(ar)3.541 E 1.04 -(gument to one of the primaries is of the form)-.18 F F3(/de)3.54 E -(v/fd/n)-.15 E F0 3.54(,t)C 1.04(hen \214le)-3.54 F(descriptor)108 148.8 -Q F3(n)3.788 E F0 1.289(is check)3.788 F 3.789(ed. If)-.1 F(the)3.789 E -F3(\214le)3.789 E F0(ar)3.789 E 1.289 -(gument to one of the primaries is one of)-.18 F F3(/de)3.789 E(v/stdin) --.15 E F0(,)A F3(/de)3.789 E(v/stdout)-.15 E F0 3.789(,o)C(r)-3.789 E F3 -(/de)108 160.8 Q(v/stderr)-.15 E F0 2.5<2c8c>C +(unary or binary primaries.)108 213.6 R 1.041(If an)6.041 F(y)-.15 E F1 +(\214le)3.541 E F0(ar)3.541 E 1.04 +(gument to one of the primaries is of the form)-.18 F F1(/de)3.54 E +(v/fd/n)-.15 E F0 3.54(,t)C 1.04(hen \214le)-3.54 F(descriptor)108 225.6 +Q F1(n)3.788 E F0 1.289(is check)3.788 F 3.789(ed. If)-.1 F(the)3.789 E +F1(\214le)3.789 E F0(ar)3.789 E 1.289 +(gument to one of the primaries is one of)-.18 F F1(/de)3.789 E(v/stdin) +-.15 E F0(,)A F1(/de)3.789 E(v/stdout)-.15 E F0 3.789(,o)C(r)-3.789 E F1 +(/de)108 237.6 Q(v/stderr)-.15 E F0 2.5<2c8c>C (le descriptor 0, 1, or 2, respecti)-2.5 E -.15(ve)-.25 G(ly).15 E 2.5 (,i)-.65 G 2.5(sc)-2.5 G(heck)-2.5 E(ed.)-.1 E .722 (Unless otherwise speci\214ed, primaries that operate on \214les follo) -108 177.6 R 3.221(ws)-.25 G .721(ymbolic links and operate on the tar) --3.221 F(get)-.18 E(of the link, rather than the link itself.)108 189.6 -Q 1.095(When used with)108 207.6 R F2([[)3.595 E F0 3.595(,t)C(he)-3.595 -E F2(<)3.595 E F0(and)3.595 E F2(>)3.595 E F0 1.095(operators sort le) +108 254.4 R 3.221(ws)-.25 G .721(ymbolic links and operate on the tar) +-3.221 F(get)-.18 E(of the link, rather than the link itself.)108 266.4 +Q 1.095(When used with)108 284.4 R F3([[)3.595 E F0 3.595(,t)C(he)-3.595 +E F3(<)3.595 E F0(and)3.595 E F3(>)3.595 E F0 1.095(operators sort le) 3.595 F 1.095(xicographically using the current locale.)-.15 F(The)6.096 -E F2(test)3.596 E F0(com-)3.596 E(mand sorts using ASCII ordering.)108 -219.6 Q F2108 243.6 Q F3(\214le)2.5 E F0 -.35(Tr)144 243.6 S -(ue if).35 E F3(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F2108 -255.6 Q F3(\214le)2.5 E F0 -.35(Tr)144 255.6 S(ue if).35 E F3(\214le)2.5 -E F0 -.15(ex)2.5 G(ists and is a block special \214le.).15 E F2108 -267.6 Q F3(\214le)2.5 E F0 -.35(Tr)144 267.6 S(ue if).35 E F3(\214le)2.5 -E F0 -.15(ex)2.5 G(ists and is a character special \214le.).15 E F2 -108 279.6 Q F3(\214le)2.5 E F0 -.35(Tr)144 279.6 S(ue if).35 E F3 -(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F2 -108 291.6 Q F3(\214le)2.5 E F0 -.35(Tr)144 291.6 S(ue if).35 E F3 -(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F2108 303.6 Q F3 -(\214le)2.5 E F0 -.35(Tr)144 303.6 S(ue if).35 E F3(\214le)2.5 E F0 -.15 -(ex)2.5 G(ists and is a re).15 E(gular \214le.)-.15 E F2108 315.6 -Q F3(\214le)2.5 E F0 -.35(Tr)144 315.6 S(ue if).35 E F3(\214le)2.5 E F0 --.15(ex)2.5 G(ists and is set-group-id.).15 E F2108 327.6 Q F3 -(\214le)2.5 E F0 -.35(Tr)144 327.6 S(ue if).35 E F3(\214le)2.5 E F0 -.15 -(ex)2.5 G(ists and is a symbolic link.).15 E F2108 339.6 Q F3 -(\214le)2.5 E F0 -.35(Tr)144 339.6 S(ue if).35 E F3(\214le)2.5 E F0 -.15 +E F3(test)3.596 E F0(com-)3.596 E(mand sorts using ASCII ordering.)108 +296.4 Q F3108 320.4 Q F1(\214le)2.5 E F0 -.35(Tr)144 320.4 S +(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F3108 +332.4 Q F1(\214le)2.5 E F0 -.35(Tr)144 332.4 S(ue if).35 E F1(\214le)2.5 +E F0 -.15(ex)2.5 G(ists and is a block special \214le.).15 E F3108 +344.4 Q F1(\214le)2.5 E F0 -.35(Tr)144 344.4 S(ue if).35 E F1(\214le)2.5 +E F0 -.15(ex)2.5 G(ists and is a character special \214le.).15 E F3 +108 356.4 Q F1(\214le)2.5 E F0 -.35(Tr)144 356.4 S(ue if).35 E F1 +(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is a directory).15 E(.)-.65 E F3 +108 368.4 Q F1(\214le)2.5 E F0 -.35(Tr)144 368.4 S(ue if).35 E F1 +(\214le)2.5 E F0 -.15(ex)2.5 G(ists.).15 E F3108 380.4 Q F1 +(\214le)2.5 E F0 -.35(Tr)144 380.4 S(ue if).35 E F1(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is a re).15 E(gular \214le.)-.15 E F3108 392.4 +Q F1(\214le)2.5 E F0 -.35(Tr)144 392.4 S(ue if).35 E F1(\214le)2.5 E F0 +-.15(ex)2.5 G(ists and is set-group-id.).15 E F3108 404.4 Q F1 +(\214le)2.5 E F0 -.35(Tr)144 404.4 S(ue if).35 E F1(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is a symbolic link.).15 E F3108 416.4 Q F1 +(\214le)2.5 E F0 -.35(Tr)144 416.4 S(ue if).35 E F1(\214le)2.5 E F0 -.15 (ex)2.5 G(ists and its `).15 E(`stick)-.74 E(y')-.15 E 2.5('b)-.74 G -(it is set.)-2.5 E F2108 351.6 Q F3(\214le)2.5 E F0 -.35(Tr)144 -351.6 S(ue if).35 E F3(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is a named pipe \(FIFO\).).15 E F2108 363.6 Q F3(\214le) -2.5 E F0 -.35(Tr)144 363.6 S(ue if).35 E F3(\214le)2.5 E F0 -.15(ex)2.5 -G(ists and is readable.).15 E F2108 375.6 Q F3(\214le)2.5 E F0 --.35(Tr)144 375.6 S(ue if).35 E F3(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and has a size greater than zero.).15 E F2108 387.6 Q F3(fd) -2.5 E F0 -.35(Tr)144 387.6 S(ue if \214le descriptor).35 E F3(fd)4.47 E -F0(is open and refers to a terminal.)3.27 E F2108 399.6 Q F3 -(\214le)2.5 E F0 -.35(Tr)144 399.6 S(ue if).35 E F3(\214le)2.5 E F0 -.15 -(ex)2.5 G(ists and its set-user).15 E(-id bit is set.)-.2 E F2108 -411.6 Q F3(\214le)2.5 E F0 -.35(Tr)144 411.6 S(ue if).35 E F3(\214le)2.5 -E F0 -.15(ex)2.5 G(ists and is writable.).15 E F2108 423.6 Q F3 -(\214le)2.5 E F0 -.35(Tr)144 423.6 S(ue if).35 E F3(\214le)2.5 E F0 -.15 -(ex)2.5 G(ists and is e).15 E -.15(xe)-.15 G(cutable.).15 E F2108 -435.6 Q F3(\214le)2.5 E F0 -.35(Tr)144 435.6 S(ue if).35 E F3(\214le)2.5 +(it is set.)-2.5 E F3108 428.4 Q F1(\214le)2.5 E F0 -.35(Tr)144 +428.4 S(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and is a named pipe \(FIFO\).).15 E F3108 440.4 Q F1(\214le) +2.5 E F0 -.35(Tr)144 440.4 S(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 +G(ists and is readable.).15 E F3108 452.4 Q F1(\214le)2.5 E F0 +-.35(Tr)144 452.4 S(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and has a size greater than zero.).15 E F3108 464.4 Q F1(fd) +2.5 E F0 -.35(Tr)144 464.4 S(ue if \214le descriptor).35 E F1(fd)4.47 E +F0(is open and refers to a terminal.)3.27 E F3108 476.4 Q F1 +(\214le)2.5 E F0 -.35(Tr)144 476.4 S(ue if).35 E F1(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and its set-user).15 E(-id bit is set.)-.2 E F3108 +488.4 Q F1(\214le)2.5 E F0 -.35(Tr)144 488.4 S(ue if).35 E F1(\214le)2.5 +E F0 -.15(ex)2.5 G(ists and is writable.).15 E F3108 500.4 Q F1 +(\214le)2.5 E F0 -.35(Tr)144 500.4 S(ue if).35 E F1(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is e).15 E -.15(xe)-.15 G(cutable.).15 E F3108 +512.4 Q F1(\214le)2.5 E F0 -.35(Tr)144 512.4 S(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E(fecti)-.25 -E .3 -.15(ve g)-.25 H(roup id.).15 E F2108 447.6 Q F3(\214le)2.5 E -F0 -.35(Tr)144 447.6 S(ue if).35 E F3(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and is a symbolic link.).15 E F2108 459.6 Q F3(\214le)2.5 E -F0 -.35(Tr)144 459.6 S(ue if).35 E F3(\214le)2.5 E F0 -.15(ex)2.5 G -(ists and has been modi\214ed since it w).15 E(as last read.)-.1 E F2 -108 471.6 Q F3(\214le)2.5 E F0 -.35(Tr)144 471.6 S(ue if).35 E F3 +E .3 -.15(ve g)-.25 H(roup id.).15 E F3108 524.4 Q F1(\214le)2.5 E +F0 -.35(Tr)144 524.4 S(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and is a symbolic link.).15 E F3108 536.4 Q F1(\214le)2.5 E +F0 -.35(Tr)144 536.4 S(ue if).35 E F1(\214le)2.5 E F0 -.15(ex)2.5 G +(ists and has been modi\214ed since it w).15 E(as last read.)-.1 E F3 +108 548.4 Q F1(\214le)2.5 E F0 -.35(Tr)144 548.4 S(ue if).35 E F1 (\214le)2.5 E F0 -.15(ex)2.5 G(ists and is o).15 E(wned by the ef)-.25 E -(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id.).15 E F2108 483.6 Q F3 -(\214le)2.5 E F0 -.35(Tr)144 483.6 S(ue if).35 E F3(\214le)2.5 E F0 -.15 -(ex)2.5 G(ists and is a sock).15 E(et.)-.1 E F3(\214le1)108 495.6 Q F2 -(\255ef)2.5 E F3(\214le2)2.5 E F0 -.35(Tr)144 507.6 S(ue if).35 E F3 -(\214le1)2.5 E F0(and)2.5 E F3(\214le2)2.5 E F0(refer to the same de)2.5 -E(vice and inode numbers.)-.25 E F3(\214le1)108 519.6 Q F02.5 E F2 -(nt)A F3(\214le2)2.5 E F0 -.35(Tr)144 531.6 S(ue if).35 E F3(\214le1)2.5 -E F0(is ne)2.5 E(wer \(according to modi\214cation date\) than)-.25 E F3 -(\214le2)2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F3(\214le1)2.5 E F0 --.15(ex)2.5 G(ists and).15 E F3(\214le2)2.5 E F0(does not.)2.5 E F3 -(\214le1)108 543.6 Q F02.5 E F2(ot)A F3(\214le2)2.5 E F0 -.35(Tr)144 -555.6 S(ue if).35 E F3(\214le1)2.5 E F0(is older than)2.5 E F3(\214le2) -2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F3(\214le2)2.5 E F0 -.15(ex)2.5 -G(ists and).15 E F3(\214le1)2.5 E F0(does not.)2.5 E F2108 567.6 Q -F3(optname)2.5 E F0 -.35(Tr)144 579.6 S .263(ue if the shell option).35 -F F3(optname)2.992 E F0 .262(is enabled.)2.942 F .262 -(See the list of options under the description of the)5.262 F F2 -2.762 E F0(option to the)144 591.6 Q F2(set)2.5 E F0 -.2(bu)2.5 G -(iltin belo).2 E -.65(w.)-.25 G F2108 603.6 Q F3(varname)2.5 E F0 --.35(Tr)144 615.6 S(ue if the shell v).35 E(ariable)-.25 E F3(varname) -2.79 E F0(is set \(has been assigned a v)2.68 E(alue\).)-.25 E F2 -108 627.6 Q F3(varname)2.5 E F0 -.35(Tr)144 639.6 S(ue if the shell v) -.35 E(ariable)-.25 E F3(varname)2.79 E F0 -(is set and is a name reference.)2.68 E F2108 651.6 Q F3(string) -2.5 E F0 -.35(Tr)144 663.6 S(ue if the length of).35 E F3(string)2.5 E -F0(is zero.)2.5 E F3(string)108 675.6 Q F2108 687.6 Q F3(string) -2.5 E F0 -.35(Tr)144 699.6 S(ue if the length of).35 E F3(string)2.84 E -F0(is non-zero.)2.72 E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E -(31)190.395 E 0 Cg EP +(fecti)-.25 E .3 -.15(ve u)-.25 H(ser id.).15 E F3108 560.4 Q F1 +(\214le)2.5 E F0 -.35(Tr)144 560.4 S(ue if).35 E F1(\214le)2.5 E F0 -.15 +(ex)2.5 G(ists and is a sock).15 E(et.)-.1 E F1(\214le1)108 572.4 Q F3 +(\255ef)2.5 E F1(\214le2)2.5 E F0 -.35(Tr)144 584.4 S(ue if).35 E F1 +(\214le1)2.5 E F0(and)2.5 E F1(\214le2)2.5 E F0(refer to the same de)2.5 +E(vice and inode numbers.)-.25 E F1(\214le1)108 596.4 Q F02.5 E F3 +(nt)A F1(\214le2)2.5 E F0 -.35(Tr)144 608.4 S(ue if).35 E F1(\214le1)2.5 +E F0(is ne)2.5 E(wer \(according to modi\214cation date\) than)-.25 E F1 +(\214le2)2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F1(\214le1)2.5 E F0 +-.15(ex)2.5 G(ists and).15 E F1(\214le2)2.5 E F0(does not.)2.5 E F1 +(\214le1)108 620.4 Q F02.5 E F3(ot)A F1(\214le2)2.5 E F0 -.35(Tr)144 +632.4 S(ue if).35 E F1(\214le1)2.5 E F0(is older than)2.5 E F1(\214le2) +2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G(f)-2.5 E F1(\214le2)2.5 E F0 -.15(ex)2.5 +G(ists and).15 E F1(\214le1)2.5 E F0(does not.)2.5 E F3108 644.4 Q +F1(optname)2.5 E F0 -.35(Tr)144 656.4 S .263(ue if the shell option).35 +F F1(optname)2.992 E F0 .262(is enabled.)2.942 F .262 +(See the list of options under the description of the)5.262 F F3 +2.762 E F0(option to the)144 668.4 Q F3(set)2.5 E F0 -.2(bu)2.5 G +(iltin belo).2 E -.65(w.)-.25 G F3108 680.4 Q F1(varname)2.5 E F0 +-.35(Tr)144 692.4 S(ue if the shell v).35 E(ariable)-.25 E F1(varname) +2.79 E F0(is set \(has been assigned a v)2.68 E(alue\).)-.25 E F3 +108 704.4 Q F1(varname)2.5 E F0 -.35(Tr)144 716.4 S(ue if the shell v) +.35 E(ariable)-.25 E F1(varname)2.79 E F0 +(is set and is a name reference.)2.68 E(GNU Bash 4.4)72 768 Q(2015 No) +136.385 E -.15(ve)-.15 G(mber 16).15 E(31)185.545 E 0 Cg EP %%Page: 32 32 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 -/Times-Italic@0 SF(string1)108 84 Q/F2 10/Times-Bold@0 SF(==)2.5 E F1 -(string2)2.5 E(string1)108 96 Q F2(=)2.5 E F1(string2)2.5 E F0 -.35(Tr) -144 108 S .861(ue if the strings are equal.).35 F F2(=)5.861 E F0 .861 -(should be used with the)3.361 F F2(test)3.361 E F0 .862 -(command for POSIX conformance.)3.362 F .447(When used with the)144 120 -R F2([[)2.946 E F0 .446 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF108 84 Q/F2 10/Times-Italic@0 SF(string)2.5 E F0 -.35(Tr)144 96 +S(ue if the length of).35 E F2(string)2.5 E F0(is zero.)2.5 E F2(string) +108 108 Q F1108 120 Q F2(string)2.5 E F0 -.35(Tr)144 132 S +(ue if the length of).35 E F2(string)2.84 E F0(is non-zero.)2.72 E F2 +(string1)108 148.8 Q F1(==)2.5 E F2(string2)2.5 E(string1)108 160.8 Q F1 +(=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 172.8 S .861 +(ue if the strings are equal.).35 F F1(=)5.861 E F0 .861 +(should be used with the)3.361 F F1(test)3.361 E F0 .862 +(command for POSIX conformance.)3.362 F .447(When used with the)144 +184.8 R F1([[)2.946 E F0 .446 (command, this performs pattern matching as described abo)2.946 F .746 --.15(ve \()-.15 H F2(Compound).15 E(Commands)144 132 Q F0(\).)A F1 -(string1)108 148.8 Q F2(!=)2.5 E F1(string2)2.5 E F0 -.35(Tr)144 160.8 S -(ue if the strings are not equal.).35 E F1(string1)108 177.6 Q F2(<)2.5 -E F1(string2)2.5 E F0 -.35(Tr)144 189.6 S(ue if).35 E F1(string1)2.5 E -F0(sorts before)2.5 E F1(string2)2.5 E F0(le)2.5 E(xicographically)-.15 -E(.)-.65 E F1(string1)108 206.4 Q F2(>)2.5 E F1(string2)2.5 E F0 -.35 -(Tr)144 218.4 S(ue if).35 E F1(string1)2.5 E F0(sorts after)2.5 E F1 -(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E F1(ar)108.33 -235.2 Q(g1)-.37 E F2(OP)2.5 E F1(ar)2.5 E(g2)-.37 E/F3 9/Times-Bold@0 SF -(OP)144 247.2 Q F0 .385(is one of)2.634 F F2(\255eq)2.885 E F0(,)A F2 -(\255ne)2.885 E F0(,)A F2(\255lt)2.885 E F0(,)A F2(\255le)2.885 E F0(,)A -F2(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F2(\255ge)2.885 E F0 5.385 -(.T)C .385(hese arithmetic binary operators return true if)-5.385 F F1 +-.15(ve \()-.15 H F1(Compound).15 E(Commands)144 196.8 Q F0(\).)A F2 +(string1)108 213.6 Q F1(!=)2.5 E F2(string2)2.5 E F0 -.35(Tr)144 225.6 S +(ue if the strings are not equal.).35 E F2(string1)108 242.4 Q F1(<)2.5 +E F2(string2)2.5 E F0 -.35(Tr)144 254.4 S(ue if).35 E F2(string1)2.5 E +F0(sorts before)2.5 E F2(string2)2.5 E F0(le)2.5 E(xicographically)-.15 +E(.)-.65 E F2(string1)108 271.2 Q F1(>)2.5 E F2(string2)2.5 E F0 -.35 +(Tr)144 283.2 S(ue if).35 E F2(string1)2.5 E F0(sorts after)2.5 E F2 +(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E F2(ar)108.33 +300 Q(g1)-.37 E F1(OP)2.5 E F2(ar)2.5 E(g2)-.37 E/F3 9/Times-Bold@0 SF +(OP)144 312 Q F0 .385(is one of)2.634 F F1(\255eq)2.885 E F0(,)A F1 +(\255ne)2.885 E F0(,)A F1(\255lt)2.885 E F0(,)A F1(\255le)2.885 E F0(,)A +F1(\255gt)2.885 E F0 2.885(,o)C(r)-2.885 E F1(\255ge)2.885 E F0 5.385 +(.T)C .385(hese arithmetic binary operators return true if)-5.385 F F2 (ar)2.885 E(g1)-.37 E F0 .845(is equal to, not equal to, less than, les\ -s than or equal to, greater than, or greater than or equal to)144 259.2 -R F1(ar)144 271.2 Q(g2)-.37 E F0 2.5(,r)C(especti)-2.5 E -.15(ve)-.25 G -(ly).15 E(.)-.65 E F1(Ar)6.01 E(g1)-.37 E F0(and)2.5 E F1(ar)2.83 E(g2) --.37 E F0(may be positi)2.52 E .3 -.15(ve o)-.25 H 2.5(rn).15 G -2.25 --.15(eg a)-2.5 H(ti).15 E .3 -.15(ve i)-.25 H(nte).15 E(gers.)-.15 E/F4 -10.95/Times-Bold@0 SF(SIMPLE COMMAND EXP)72 288 Q(ANSION)-.81 E F0 .613 -(When a simple command is e)108 300 R -.15(xe)-.15 G .614 +s than or equal to, greater than, or greater than or equal to)144 324 R +F2(ar)144 336 Q(g2)-.37 E F0 2.5(,r)C(especti)-2.5 E -.15(ve)-.25 G(ly) +.15 E(.)-.65 E F2(Ar)6.01 E(g1)-.37 E F0(and)2.5 E F2(ar)2.83 E(g2)-.37 +E F0(may be positi)2.52 E .3 -.15(ve o)-.25 H 2.5(rn).15 G -2.25 -.15 +(eg a)-2.5 H(ti).15 E .3 -.15(ve i)-.25 H(nte).15 E(gers.)-.15 E/F4 +10.95/Times-Bold@0 SF(SIMPLE COMMAND EXP)72 352.8 Q(ANSION)-.81 E F0 +.613(When a simple command is e)108 364.8 R -.15(xe)-.15 G .614 (cuted, the shell performs the follo).15 F .614(wing e)-.25 F .614 (xpansions, assignments, and redi-)-.15 F(rections, from left to right.) -108 312 Q(1.)108 328.8 Q 1.849(The w)144 328.8 R 1.849 +108 376.8 Q(1.)108 393.6 Q 1.849(The w)144 393.6 R 1.849 (ords that the parser has mark)-.1 F 1.848(ed as v)-.1 F 1.848 (ariable assignments \(those preceding the command)-.25 F -(name\) and redirections are sa)144 340.8 Q -.15(ve)-.2 G 2.5(df).15 G -(or later processing.)-2.5 E(2.)108 357.6 Q 1.163(The w)144 357.6 R +(name\) and redirections are sa)144 405.6 Q -.15(ve)-.2 G 2.5(df).15 G +(or later processing.)-2.5 E(2.)108 422.4 Q 1.163(The w)144 422.4 R 1.163(ords that are not v)-.1 F 1.164 (ariable assignments or redirections are e)-.25 F 3.664(xpanded. If)-.15 F(an)3.664 E 3.664(yw)-.15 G 1.164(ords remain)-3.764 F .776(after e)144 -369.6 R .776(xpansion, the \214rst w)-.15 F .776(ord is tak)-.1 F .775 +434.4 R .776(xpansion, the \214rst w)-.15 F .776(ord is tak)-.1 F .775 (en to be the name of the command and the remaining w)-.1 F(ords)-.1 E -(are the ar)144 381.6 Q(guments.)-.18 E(3.)108 398.4 Q -(Redirections are performed as described abo)144 398.4 Q .3 -.15(ve u) +(are the ar)144 446.4 Q(guments.)-.18 E(3.)108 463.2 Q +(Redirections are performed as described abo)144 463.2 Q .3 -.15(ve u) -.15 H(nder).15 E F3(REDIRECTION)2.5 E/F5 9/Times-Roman@0 SF(.)A F0(4.) -108 415.2 Q .716(The te)144 415.2 R .717(xt after the)-.15 F F2(=)3.217 -E F0 .717(in each v)3.217 F .717(ariable assignment under)-.25 F .717 +108 480 Q .716(The te)144 480 R .717(xt after the)-.15 F F1(=)3.217 E F0 +.717(in each v)3.217 F .717(ariable assignment under)-.25 F .717 (goes tilde e)-.18 F .717(xpansion, parameter e)-.15 F(xpansion,)-.15 E -.34(command substitution, arithmetic e)144 427.2 R .339 +.34(command substitution, arithmetic e)144 492 R .339 (xpansion, and quote remo)-.15 F -.25(va)-.15 G 2.839(lb).25 G .339 -(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 439.2 Q -.332(If no command name results, the v)108 456 R .332 +(efore being assigned to the v)-2.839 F(ari-)-.25 E(able.)144 504 Q .332 +(If no command name results, the v)108 520.8 R .332 (ariable assignments af)-.25 F .332(fect the current shell en)-.25 F -2.833(vironment. Otherwise,)-.4 F(the)2.833 E -.25(va)108 468 S .757 +2.833(vironment. Otherwise,)-.4 F(the)2.833 E -.25(va)108 532.8 S .757 (riables are added to the en).25 F .757(vironment of the e)-.4 F -.15 (xe)-.15 G .757(cuted command and do not af).15 F .757 -(fect the current shell en)-.25 F(vi-)-.4 E 3.176(ronment. If)108 480 R -(an)3.176 E 3.176(yo)-.15 G 3.176(ft)-3.176 G .677 +(fect the current shell en)-.25 F(vi-)-.4 E 3.176(ronment. If)108 544.8 +R(an)3.176 E 3.176(yo)-.15 G 3.176(ft)-3.176 G .677 (he assignments attempts to assign a v)-3.176 F .677 (alue to a readonly v)-.25 F .677(ariable, an error occurs, and)-.25 F -(the command e)108 492 Q(xits with a non-zero status.)-.15 E .15 -(If no command name results, redirections are performed, b)108 508.8 R +(the command e)108 556.8 Q(xits with a non-zero status.)-.15 E .15 +(If no command name results, redirections are performed, b)108 573.6 R .149(ut do not af)-.2 F .149(fect the current shell en)-.25 F 2.649 -(vironment. A)-.4 F(redirection error causes the command to e)108 520.8 +(vironment. A)-.4 F(redirection error causes the command to e)108 585.6 Q(xit with a non-zero status.)-.15 E 1.064 -(If there is a command name left after e)108 537.6 R 1.064(xpansion, e) +(If there is a command name left after e)108 602.4 R 1.064(xpansion, e) -.15 F -.15(xe)-.15 G 1.064(cution proceeds as described belo).15 F 4.864 -.65(w. O)-.25 H 1.064(therwise, the).65 F .069(command e)108 -549.6 R 2.569(xits. If)-.15 F .069(one of the e)2.569 F .069 +614.4 R 2.569(xits. If)-.15 F .069(one of the e)2.569 F .069 (xpansions contained a command substitution, the e)-.15 F .068 -(xit status of the command)-.15 F .466(is the e)108 561.6 R .466 +(xit status of the command)-.15 F .466(is the e)108 626.4 R .466 (xit status of the last command substitution performed.)-.15 F .467 -(If there were no command substitutions, the)5.466 F(command e)108 573.6 -Q(xits with a status of zero.)-.15 E F4(COMMAND EXECUTION)72 590.4 Q F0 -.547(After a command has been split into w)108 602.4 R .546 +(If there were no command substitutions, the)5.466 F(command e)108 638.4 +Q(xits with a status of zero.)-.15 E F4(COMMAND EXECUTION)72 655.2 Q F0 +.547(After a command has been split into w)108 667.2 R .546 (ords, if it results in a simple command and an optional list of ar)-.1 -F(gu-)-.18 E(ments, the follo)108 614.4 Q(wing actions are tak)-.25 E +F(gu-)-.18 E(ments, the follo)108 679.2 Q(wing actions are tak)-.25 E (en.)-.1 E .379(If the command name contains no slashes, the shell atte\ -mpts to locate it.)108 631.2 R .379(If there e)5.379 F .379 +mpts to locate it.)108 696 R .379(If there e)5.379 F .379 (xists a shell function by)-.15 F .246(that name, that function is in) -108 643.2 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G -.246(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E F3(FUNCTIONS) -2.746 E F5(.)A F0 .246(If the name does not match a func-)4.746 F -(tion, the shell searches for it in the list of shell b)108 655.2 Q 2.5 +108 708 R -.2(vo)-.4 G -.1(ke).2 G 2.746(da).1 G 2.746(sd)-2.746 G .246 +(escribed abo)-2.746 F .546 -.15(ve i)-.15 H(n).15 E F3(FUNCTIONS)2.746 +E F5(.)A F0 .246(If the name does not match a func-)4.746 F +(tion, the shell searches for it in the list of shell b)108 720 Q 2.5 (uiltins. If)-.2 F 2.5(am)2.5 G(atch is found, that b)-2.5 E -(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E .309 -(If the name is neither a shell function nor a b)108 672 R .31 -(uiltin, and contains no slashes,)-.2 F F2(bash)2.81 E F0 .31 -(searches each element of)2.81 F(the)108 684 Q F3 -.666(PA)3.163 G(TH) --.189 E F0 .662(for a directory containing an e)2.913 F -.15(xe)-.15 G -.662(cutable \214le by that name.).15 F F2(Bash)5.662 E F0 .662 -(uses a hash table to remember)3.162 F 1.914(the full pathnames of e)108 -696 R -.15(xe)-.15 G 1.915(cutable \214les \(see).15 F F2(hash)4.415 E -F0(under)4.415 E F3 1.915(SHELL B)4.415 F(UIL)-.09 E 1.915(TIN COMMANDS) --.828 F F0(belo)4.165 E 4.415(w\). A)-.25 F(full)4.415 E .72 -(search of the directories in)108 708 R F3 -.666(PA)3.22 G(TH)-.189 E F0 -.719(is performed only if the command is not found in the hash table.) -2.97 F .719(If the)5.719 F 11.754(search is unsuccessful, the shell sea\ -rches for a de\214ned shell function named)108 720 R(GNU Bash 4.4)72 768 -Q(2015 October 11)141.235 E(32)190.395 E 0 Cg EP +(uiltin is in)-.2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E(GNU Bash 4.4)72 768 +Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(32)185.545 E 0 Cg EP %%Page: 33 33 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(command_not_f)108 84 Q(ound_handle)-.25 E F0 6.435(.I)C 3.935(ft) --6.435 G 1.435(hat function e)-3.935 F 1.435(xists, it is in)-.15 F -.2 -(vo)-.4 G -.1(ke).2 G 3.935(dw).1 G 1.434 -(ith the original command and the)-3.935 F .116(original command')108 96 -R 2.616(sa)-.55 G -.18(rg)-2.616 G .116(uments as its ar).18 F .116 -(guments, and the function')-.18 F 2.616(se)-.55 G .116 -(xit status becomes the e)-2.766 F .117(xit status of the)-.15 F 2.5 -(shell. If)108 108 R(that function is not de\214ned, the shell prints a\ -n error message and returns an e)2.5 E(xit status of 127.)-.15 E 1.089(\ -If the search is successful, or if the command name contains one or mor\ -e slashes, the shell e)108 124.8 R -.15(xe)-.15 G 1.089(cutes the).15 F -.197(named program in a separate e)108 136.8 R -.15(xe)-.15 G .197 -(cution en).15 F 2.698(vironment. Ar)-.4 F .198 -(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .198 -(n, and the remain-).15 F(ing ar)108 148.8 Q +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .309 +(If the name is neither a shell function nor a b)108 84 R .31 +(uiltin, and contains no slashes,)-.2 F/F1 10/Times-Bold@0 SF(bash)2.81 +E F0 .31(searches each element of)2.81 F(the)108 96 Q/F2 9/Times-Bold@0 +SF -.666(PA)3.163 G(TH)-.189 E F0 .662(for a directory containing an e) +2.913 F -.15(xe)-.15 G .662(cutable \214le by that name.).15 F F1(Bash) +5.662 E F0 .662(uses a hash table to remember)3.162 F 1.914 +(the full pathnames of e)108 108 R -.15(xe)-.15 G 1.915 +(cutable \214les \(see).15 F F1(hash)4.415 E F0(under)4.415 E F2 1.915 +(SHELL B)4.415 F(UIL)-.09 E 1.915(TIN COMMANDS)-.828 F F0(belo)4.165 E +4.415(w\). A)-.25 F(full)4.415 E .72(search of the directories in)108 +120 R F2 -.666(PA)3.22 G(TH)-.189 E F0 .719 +(is performed only if the command is not found in the hash table.)2.97 F +.719(If the)5.719 F .956(search is unsuccessful, the shell searches for\ + a de\214ned shell function named)108 132 R F1(command_not_f)3.456 E +(ound_han-)-.25 E(dle)108 144 Q F0 5.278(.I)C 2.778(ft)-5.278 G .278 +(hat function e)-2.778 F .278(xists, it is in)-.15 F -.2(vo)-.4 G -.1 +(ke).2 G 2.778(dw).1 G .277 +(ith the original command and the original command')-2.778 F 2.777(sa) +-.55 G -.18(rg)-2.777 G(uments).18 E .775(as its ar)108 156 R .775 +(guments, and the function')-.18 F 3.275(se)-.55 G .775 +(xit status becomes the e)-3.425 F .775(xit status of the shell.)-.15 F +.776(If that function is not)5.776 F +(de\214ned, the shell prints an error message and returns an e)108 168 Q +(xit status of 127.)-.15 E 1.089(If the search is successful, or if the\ + command name contains one or more slashes, the shell e)108 184.8 R -.15 +(xe)-.15 G 1.089(cutes the).15 F .197(named program in a separate e)108 +196.8 R -.15(xe)-.15 G .197(cution en).15 F 2.698(vironment. Ar)-.4 F +.198(gument 0 is set to the name gi)-.18 F -.15(ve)-.25 G .198 +(n, and the remain-).15 F(ing ar)108 208.8 Q (guments to the command are set to the ar)-.18 E(guments gi)-.18 E -.15 -(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.809(If this e)108 165.6 R +(ve)-.25 G(n, if an).15 E -.65(y.)-.15 G 1.809(If this e)108 225.6 R -.15(xe)-.15 G 1.809(cution f).15 F 1.809 (ails because the \214le is not in e)-.1 F -.15(xe)-.15 G 1.809 (cutable format, and the \214le is not a directory).15 F 4.309(,i)-.65 G -4.309(ti)-4.309 G(s)-4.309 E .677(assumed to be a)108 177.6 R/F2 10 +4.309(ti)-4.309 G(s)-4.309 E .677(assumed to be a)108 237.6 R/F3 10 /Times-Italic@0 SF .678(shell script)3.177 F F0 3.178(,a\214)C .678 (le containing shell commands.)-3.178 F 3.178(As)5.678 G .678 (ubshell is spa)-3.178 F .678(wned to e)-.15 F -.15(xe)-.15 G .678 (cute it.).15 F(This)5.678 E .33 -(subshell reinitializes itself, so that the ef)108 189.6 R .33 +(subshell reinitializes itself, so that the ef)108 249.6 R .33 (fect is as if a ne)-.25 F 2.829(ws)-.25 G .329(hell had been in)-2.829 F -.2(vo)-.4 G -.1(ke).2 G 2.829(dt).1 G 2.829(oh)-2.829 G .329 -(andle the script, with)-2.829 F 1.219(the e)108 201.6 R 1.219 +(andle the script, with)-2.829 F 1.219(the e)108 261.6 R 1.219 (xception that the locations of commands remembered by the parent \(see) --.15 F F1(hash)3.719 E F0(belo)3.719 E 3.719(wu)-.25 G(nder)-3.719 E/F3 -9/Times-Bold@0 SF(SHELL)3.719 E -.09(BU)108 213.6 S(IL).09 E -(TIN COMMANDS)-.828 E/F4 9/Times-Roman@0 SF(\))A F0 -(are retained by the child.)2.25 E .348(If the program is a \214le be) -108 230.4 R .348(ginning with)-.15 F F1(#!)2.848 E F0 2.848(,t)C .347(h\ -e remainder of the \214rst line speci\214es an interpreter for the pro-) --2.848 F 3.178(gram. The)108 242.4 R .678(shell e)3.178 F -.15(xe)-.15 G -.678(cutes the speci\214ed interpreter on operating systems that do not\ - handle this e).15 F -.15(xe)-.15 G(cutable).15 E 1.193(format themselv) -108 254.4 R 3.693(es. The)-.15 F(ar)3.693 E 1.193 +-.15 F F1(hash)3.719 E F0(belo)3.719 E 3.719(wu)-.25 G(nder)-3.719 E F2 +(SHELL)3.719 E -.09(BU)108 273.6 S(IL).09 E(TIN COMMANDS)-.828 E/F4 9 +/Times-Roman@0 SF(\))A F0(are retained by the child.)2.25 E .348 +(If the program is a \214le be)108 290.4 R .348(ginning with)-.15 F F1 +(#!)2.848 E F0 2.848(,t)C .347(he remainder of the \214rst line speci\ +\214es an interpreter for the pro-)-2.848 F 3.178(gram. The)108 302.4 R +.678(shell e)3.178 F -.15(xe)-.15 G .678(cutes the speci\214ed interpre\ +ter on operating systems that do not handle this e).15 F -.15(xe)-.15 G +(cutable).15 E 1.193(format themselv)108 314.4 R 3.693(es. The)-.15 F +(ar)3.693 E 1.193 (guments to the interpreter consist of a single optional ar)-.18 F 1.192 (gument follo)-.18 F 1.192(wing the)-.25 F 1.13 -(interpreter name on the \214rst line of the program, follo)108 266.4 R +(interpreter name on the \214rst line of the program, follo)108 326.4 R 1.131(wed by the name of the program, follo)-.25 F 1.131(wed by the)-.25 -F(command ar)108 278.4 Q(guments, if an)-.18 E -.65(y.)-.15 G/F5 10.95 -/Times-Bold@0 SF(COMMAND EXECUTION ENVIR)72 295.2 Q(ONMENT)-.329 E F0 -(The shell has an)108 307.2 Q F2 -.2(ex)2.5 G(ecution en).2 E(vir)-.4 E +F(command ar)108 338.4 Q(guments, if an)-.18 E -.65(y.)-.15 G/F5 10.95 +/Times-Bold@0 SF(COMMAND EXECUTION ENVIR)72 355.2 Q(ONMENT)-.329 E F0 +(The shell has an)108 367.2 Q F3 -.2(ex)2.5 G(ecution en).2 E(vir)-.4 E (onment)-.45 E F0 2.5(,w)C(hich consists of the follo)-2.5 E(wing:)-.25 -E<83>108 324 Q 1.406(open \214les inherited by the shell at in)144 324 R +E<83>108 384 Q 1.406(open \214les inherited by the shell at in)144 384 R -.2(vo)-.4 G 1.405 (cation, as modi\214ed by redirections supplied to the).2 F F1(exec) -3.905 E F0 -.2(bu)144 336 S(iltin).2 E<83>108 352.8 Q(the current w)144 -352.8 Q(orking directory as set by)-.1 E F1(cd)2.5 E F0(,)A F1(pushd)2.5 +3.905 E F0 -.2(bu)144 396 S(iltin).2 E<83>108 412.8 Q(the current w)144 +412.8 Q(orking directory as set by)-.1 E F1(cd)2.5 E F0(,)A F1(pushd)2.5 E F0 2.5(,o)C(r)-2.5 E F1(popd)2.5 E F0 2.5(,o)C 2.5(ri)-2.5 G (nherited by the shell at in)-2.5 E -.2(vo)-.4 G(cation).2 E<83>108 -369.6 Q(the \214le creation mode mask as set by)144 369.6 Q F1(umask)2.5 +429.6 Q(the \214le creation mode mask as set by)144 429.6 Q F1(umask)2.5 E F0(or inherited from the shell')2.5 E 2.5(sp)-.55 G(arent)-2.5 E<83> -108 386.4 Q(current traps set by)144 386.4 Q F1(trap)2.5 E F0<83>108 -403.2 Q .256(shell parameters that are set by v)144 403.2 R .256 +108 446.4 Q(current traps set by)144 446.4 Q F1(trap)2.5 E F0<83>108 +463.2 Q .256(shell parameters that are set by v)144 463.2 R .256 (ariable assignment or with)-.25 F F1(set)2.756 E F0 .257 (or inherited from the shell')2.756 F 2.757(sp)-.55 G(arent)-2.757 E -(in the en)144 415.2 Q(vironment)-.4 E<83>108 432 Q -(shell functions de\214ned during e)144 432 Q -.15(xe)-.15 G +(in the en)144 475.2 Q(vironment)-.4 E<83>108 492 Q +(shell functions de\214ned during e)144 492 Q -.15(xe)-.15 G (cution or inherited from the shell').15 E 2.5(sp)-.55 G -(arent in the en)-2.5 E(vironment)-.4 E<83>108 448.8 Q -(options enabled at in)144 448.8 Q -.2(vo)-.4 G(cation \(either by def) +(arent in the en)-2.5 E(vironment)-.4 E<83>108 508.8 Q +(options enabled at in)144 508.8 Q -.2(vo)-.4 G(cation \(either by def) .2 E(ault or with command-line ar)-.1 E(guments\) or by)-.18 E F1(set) -2.5 E F0<83>108 465.6 Q(options enabled by)144 465.6 Q F1(shopt)2.5 E F0 -<83>108 482.4 Q(shell aliases de\214ned with)144 482.4 Q F1(alias)2.5 E -F0<83>108 499.2 Q -.25(va)144 499.2 S +2.5 E F0<83>108 525.6 Q(options enabled by)144 525.6 Q F1(shopt)2.5 E F0 +<83>108 542.4 Q(shell aliases de\214ned with)144 542.4 Q F1(alias)2.5 E +F0<83>108 559.2 Q -.25(va)144 559.2 S (rious process IDs, including those of background jobs, the v).25 E (alue of)-.25 E F1($$)2.5 E F0 2.5(,a)C(nd the v)-2.5 E(alue of)-.25 E -F3(PPID)2.5 E F0 .427(When a simple command other than a b)108 516 R +F2(PPID)2.5 E F0 .427(When a simple command other than a b)108 576 R .426(uiltin or shell function is to be e)-.2 F -.15(xe)-.15 G .426 (cuted, it is in).15 F -.2(vo)-.4 G -.1(ke).2 G 2.926(di).1 G 2.926(nas) --2.926 G(eparate)-2.926 E -.15(exe)108 528 S .133(cution en).15 F .133 +-2.926 G(eparate)-2.926 E -.15(exe)108 588 S .133(cution en).15 F .133 (vironment that consists of the follo)-.4 F 2.634(wing. Unless)-.25 F .134(otherwise noted, the v)2.634 F .134(alues are inherited from)-.25 F -(the shell.)108 540 Q<83>108 556.8 Q 1.056(the shell')144 556.8 R 3.556 +(the shell.)108 600 Q<83>108 616.8 Q 1.056(the shell')144 616.8 R 3.556 (so)-.55 G 1.056(pen \214les, plus an)-3.556 F 3.556(ym)-.15 G 1.056 (odi\214cations and additions speci\214ed by redirections to the com-) --3.556 F(mand)144 568.8 Q<83>108 585.6 Q(the current w)144 585.6 Q -(orking directory)-.1 E<83>108 602.4 Q(the \214le creation mode mask)144 -602.4 Q<83>108 619.2 Q .856(shell v)144 619.2 R .857 +-3.556 F(mand)144 628.8 Q<83>108 645.6 Q(the current w)144 645.6 Q +(orking directory)-.1 E<83>108 662.4 Q(the \214le creation mode mask)144 +662.4 Q<83>108 679.2 Q .856(shell v)144 679.2 R .857 (ariables and functions mark)-.25 F .857(ed for e)-.1 F .857 (xport, along with v)-.15 F .857(ariables e)-.25 F .857 -(xported for the command,)-.15 F(passed in the en)144 631.2 Q(vironment) --.4 E<83>108 648 Q .307(traps caught by the shell are reset to the v)144 -648 R .306(alues inherited from the shell')-.25 F 2.806(sp)-.55 G .306 -(arent, and traps ignored)-2.806 F(by the shell are ignored)144 660 Q -2.5(Ac)108 676.8 S(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5(di).1 G -2.5(nt)-2.5 G(his separate en)-2.5 E(vironment cannot af)-.4 E -(fect the shell')-.25 E 2.5(se)-.55 G -.15(xe)-2.65 G(cution en).15 E -(vironment.)-.4 E .577(Command substitution, commands grouped with pare\ -ntheses, and asynchronous commands are in)108 693.6 R -.2(vo)-.4 G -.1 -(ke).2 G 3.078(di).1 G(n)-3.078 E 2.745(as)108 705.6 S .245(ubshell en) --2.745 F .245(vironment that is a duplicate of the shell en)-.4 F .244 -(vironment, e)-.4 F .244(xcept that traps caught by the shell are)-.15 F -.358(reset to the v)108 717.6 R .358 -(alues that the shell inherited from its parent at in)-.25 F -.2(vo)-.4 -G 2.858(cation. Builtin).2 F .359(commands that are in)2.859 F -.2(vo) --.4 G -.1(ke).2 G(d).1 E 3.159(as part of a pipeline are also e)108 -729.6 R -.15(xe)-.15 G 3.159(cuted in a subshell en).15 F 5.659 -(vironment. Changes)-.4 F 3.158(made to the subshell)5.658 F -(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(33)190.395 E 0 Cg EP +(xported for the command,)-.15 F(passed in the en)144 691.2 Q(vironment) +-.4 E<83>108 708 Q .307(traps caught by the shell are reset to the v)144 +708 R .306(alues inherited from the shell')-.25 F 2.806(sp)-.55 G .306 +(arent, and traps ignored)-2.806 F(by the shell are ignored)144 720 Q +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(33)185.545 E 0 Cg EP %%Page: 34 34 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(en)108 84 Q -(vironment cannot af)-.4 E(fect the shell')-.25 E 2.5(se)-.55 G -.15(xe) --2.65 G(cution en).15 E(vironment.)-.4 E 1.376(Subshells spa)108 100.8 R -1.376(wned to e)-.15 F -.15(xe)-.15 G 1.377 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.5(Ac)108 84 S +(ommand in)-2.5 E -.2(vo)-.4 G -.1(ke).2 G 2.5(di).1 G 2.5(nt)-2.5 G +(his separate en)-2.5 E(vironment cannot af)-.4 E(fect the shell')-.25 E +2.5(se)-.55 G -.15(xe)-2.65 G(cution en).15 E(vironment.)-.4 E .577(Com\ +mand substitution, commands grouped with parentheses, and asynchronous \ +commands are in)108 100.8 R -.2(vo)-.4 G -.1(ke).2 G 3.078(di).1 G(n) +-3.078 E 2.745(as)108 112.8 S .245(ubshell en)-2.745 F .245 +(vironment that is a duplicate of the shell en)-.4 F .244(vironment, e) +-.4 F .244(xcept that traps caught by the shell are)-.15 F .358 +(reset to the v)108 124.8 R .358 +(alues that the shell inherited from its parent at in)-.25 F -.2(vo)-.4 +G 2.858(cation. Builtin).2 F .359(commands that are in)2.859 F -.2(vo) +-.4 G -.1(ke).2 G(d).1 E .857(as part of a pipeline are also e)108 136.8 +R -.15(xe)-.15 G .856(cuted in a subshell en).15 F 3.356 +(vironment. Changes)-.4 F .856(made to the subshell en)3.356 F(viron-) +-.4 E(ment cannot af)108 148.8 Q(fect the shell')-.25 E 2.5(se)-.55 G +-.15(xe)-2.65 G(cution en).15 E(vironment.)-.4 E 1.376(Subshells spa)108 +165.6 R 1.376(wned to e)-.15 F -.15(xe)-.15 G 1.377 (cute command substitutions inherit the v).15 F 1.377(alue of the)-.25 F /F1 10/Times-Bold@0 SF3.877 E F0 1.377(option from the parent) -3.877 F 2.5(shell. When)108 112.8 R(not in)2.5 E/F2 10/Times-Italic@0 SF +3.877 F 2.5(shell. When)108 177.6 R(not in)2.5 E/F2 10/Times-Italic@0 SF (posix)2.5 E F0(mode,)2.5 E F1(bash)2.5 E F0(clears the)2.5 E F1 2.5 E F0(option in such subshells.)2.5 E .405(If a command is follo)108 -129.6 R .405(wed by a)-.25 F F1(&)2.905 E F0 .404 +194.4 R .405(wed by a)-.25 F F1(&)2.905 E F0 .404 (and job control is not acti)2.905 F -.15(ve)-.25 G 2.904(,t).15 G .404 (he def)-2.904 F .404(ault standard input for the command)-.1 F .197 -(is the empty \214le)108 141.6 R F2(/de)2.697 E(v/null)-.15 E F0 5.197 +(is the empty \214le)108 206.4 R F2(/de)2.697 E(v/null)-.15 E F0 5.197 (.O)C .197(therwise, the in)-5.197 F -.2(vo)-.4 G -.1(ke).2 G 2.697(dc) .1 G .198(ommand inherits the \214le descriptors of the calling shell) --2.697 F(as modi\214ed by redirections.)108 153.6 Q/F3 10.95 -/Times-Bold@0 SF(ENVIR)72 170.4 Q(ONMENT)-.329 E F0 2.354 -(When a program is in)108 182.4 R -.2(vo)-.4 G -.1(ke).2 G 4.853(di).1 G +-2.697 F(as modi\214ed by redirections.)108 218.4 Q/F3 10.95 +/Times-Bold@0 SF(ENVIR)72 235.2 Q(ONMENT)-.329 E F0 2.354 +(When a program is in)108 247.2 R -.2(vo)-.4 G -.1(ke).2 G 4.853(di).1 G 4.853(ti)-4.853 G 4.853(sg)-4.853 G -2.15 -.25(iv e)-4.853 H 4.853(na) .25 G 4.853(na)-4.853 G 2.353(rray of strings called the)-4.853 F F2(en) 4.853 E(vir)-.4 E(onment)-.45 E F0 7.353(.T).68 G 2.353 -(his is a list of)-7.353 F F2(name)108 194.4 Q F0A F2(value)A F0 +(his is a list of)-7.353 F F2(name)108 259.2 Q F0A F2(value)A F0 (pairs, of the form)2.5 E F2(name)2.5 E F0(=)A F2(value)A F0(.).18 E -1.485(The shell pro)108 211.2 R 1.485(vides se)-.15 F -.15(ve)-.25 G -1.485(ral w).15 F 1.485(ays to manipulate the en)-.1 F 3.985 -(vironment. On)-.4 F(in)3.985 E -.2(vo)-.4 G 1.486 -(cation, the shell scans its o).2 F(wn)-.25 E(en)108 223.2 Q .144(viron\ -ment and creates a parameter for each name found, automatically marking\ - it for)-.4 F F2 -.2(ex)2.643 G(port).2 E F0 .143(to child pro-)3.323 F -2.703(cesses. Ex)108 235.2 R .203(ecuted commands inherit the en)-.15 F -2.703(vironment. The)-.4 F F1(export)2.703 E F0(and)2.703 E F1(declar) -2.703 E 2.703<65ad>-.18 G(x)-2.703 E F0 .203(commands allo)2.703 F 2.704 -(wp)-.25 G(aram-)-2.704 E 1.153 -(eters and functions to be added to and deleted from the en)108 247.2 R -3.653(vironment. If)-.4 F 1.153(the v)3.653 F 1.153 -(alue of a parameter in the)-.25 F(en)108 259.2 Q .64 +1.485(The shell pro)108 276 R 1.485(vides se)-.15 F -.15(ve)-.25 G 1.485 +(ral w).15 F 1.485(ays to manipulate the en)-.1 F 3.985(vironment. On) +-.4 F(in)3.985 E -.2(vo)-.4 G 1.486(cation, the shell scans its o).2 F +(wn)-.25 E(en)108 288 Q .144(vironment and creates a parameter for each\ + name found, automatically marking it for)-.4 F F2 -.2(ex)2.643 G(port) +.2 E F0 .143(to child pro-)3.323 F 2.703(cesses. Ex)108 300 R .203 +(ecuted commands inherit the en)-.15 F 2.703(vironment. The)-.4 F F1 +(export)2.703 E F0(and)2.703 E F1(declar)2.703 E 2.703<65ad>-.18 G(x) +-2.703 E F0 .203(commands allo)2.703 F 2.704(wp)-.25 G(aram-)-2.704 E +1.153(eters and functions to be added to and deleted from the en)108 312 +R 3.653(vironment. If)-.4 F 1.153(the v)3.653 F 1.153 +(alue of a parameter in the)-.25 F(en)108 324 Q .64 (vironment is modi\214ed, the ne)-.4 F 3.14(wv)-.25 G .64 (alue becomes part of the en)-3.39 F .64(vironment, replacing the old.) --.4 F .64(The en)5.64 F(viron-)-.4 E .58(ment inherited by an)108 271.2 -R 3.08(ye)-.15 G -.15(xe)-3.23 G .58 -(cuted command consists of the shell').15 F 3.08(si)-.55 G .58 -(nitial en)-3.08 F .58(vironment, whose v)-.4 F .58(alues may be)-.25 F -.3(modi\214ed in the shell, less an)108 283.2 R 2.8(yp)-.15 G .3 -(airs remo)-2.8 F -.15(ve)-.15 G 2.8(db).15 G 2.801(yt)-2.8 G(he)-2.801 -E F1(unset)2.801 E F0 .301(command, plus an)2.801 F 2.801(ya)-.15 G .301 -(dditions via the)-2.801 F F1(export)2.801 E F0(and)2.801 E F1(declar) -108 295.2 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)2.5 E .563(The en)108 -312 R .563(vironment for an)-.4 F(y)-.15 E F2 .563(simple command)3.403 -F F0 .562 +-.4 F .64(The en)5.64 F(viron-)-.4 E .58(ment inherited by an)108 336 R +3.08(ye)-.15 G -.15(xe)-3.23 G .58(cuted command consists of the shell') +.15 F 3.08(si)-.55 G .58(nitial en)-3.08 F .58(vironment, whose v)-.4 F +.58(alues may be)-.25 F .3(modi\214ed in the shell, less an)108 348 R +2.8(yp)-.15 G .3(airs remo)-2.8 F -.15(ve)-.15 G 2.8(db).15 G 2.801(yt) +-2.8 G(he)-2.801 E F1(unset)2.801 E F0 .301(command, plus an)2.801 F +2.801(ya)-.15 G .301(dditions via the)-2.801 F F1(export)2.801 E F0(and) +2.801 E F1(declar)108 360 Q 2.5<65ad>-.18 G(x)-2.5 E F0(commands.)2.5 E +.563(The en)108 376.8 R .563(vironment for an)-.4 F(y)-.15 E F2 .563 +(simple command)3.403 F F0 .562 (or function may be augmented temporarily by pre\214xing it with)3.833 F -.202(parameter assignments, as described abo)108 324 R .502 -.15(ve i) +.202(parameter assignments, as described abo)108 388.8 R .502 -.15(ve i) -.15 H(n).15 E/F4 9/Times-Bold@0 SF -.666(PA)2.702 G(RAMETERS).666 E/F5 9/Times-Roman@0 SF(.)A F0 .202(These assignment statements af)4.702 F -.203(fect only the)-.25 F(en)108 336 Q(vironment seen by that command.) --.4 E .81(If the)108 352.8 R F13.31 E F0 .81 -(option is set \(see the)3.31 F F1(set)3.31 E F0 -.2(bu)3.31 G .81 -(iltin command belo).2 F .81(w\), then)-.25 F F2(all)3.64 E F0 .81 -(parameter assignments are placed in)3.82 F(the en)108 364.8 Q +.203(fect only the)-.25 F(en)108 400.8 Q +(vironment seen by that command.)-.4 E .81(If the)108 417.6 R F1 +3.31 E F0 .81(option is set \(see the)3.31 F F1(set)3.31 E F0 -.2(bu) +3.31 G .81(iltin command belo).2 F .81(w\), then)-.25 F F2(all)3.64 E F0 +.81(parameter assignments are placed in)3.82 F(the en)108 429.6 Q (vironment for a command, not just those that precede the command name.) --.4 E(When)108 381.6 Q F1(bash)3.585 E F0(in)3.585 E -.2(vo)-.4 G -.1 +-.4 E(When)108 446.4 Q F1(bash)3.585 E F0(in)3.585 E -.2(vo)-.4 G -.1 (ke).2 G 3.585(sa).1 G 3.585(ne)-3.585 G 1.085(xternal command, the v) -3.735 F(ariable)-.25 E F1(_)3.585 E F0 1.086 (is set to the full \214lename of the command and)3.586 F -(passed to that command in its en)108 393.6 Q(vironment.)-.4 E F3 -(EXIT ST)72 410.4 Q -1.04(AT)-.986 G(US)1.04 E F0 .151(The e)108 422.4 R +(passed to that command in its en)108 458.4 Q(vironment.)-.4 E F3 +(EXIT ST)72 475.2 Q -1.04(AT)-.986 G(US)1.04 E F0 .151(The e)108 487.2 R .151(xit status of an e)-.15 F -.15(xe)-.15 G .151 (cuted command is the v).15 F .15(alue returned by the)-.25 F F2 (waitpid)2.65 E F0 .15(system call or equi)2.65 F -.25(va)-.25 G .15 -(lent func-).25 F 2.847(tion. Exit)108 434.4 R .347(statuses f)2.847 F +(lent func-).25 F 2.847(tion. Exit)108 499.2 R .347(statuses f)2.847 F .347(all between 0 and 255, though, as e)-.1 F .347(xplained belo)-.15 F 1.647 -.65(w, t)-.25 H .347(he shell may use v).65 F .348(alues abo)-.25 -F .648 -.15(ve 1)-.15 H(25).15 E(specially)108 446.4 Q 5.507(.E)-.65 G +F .648 -.15(ve 1)-.15 H(25).15 E(specially)108 511.2 Q 5.507(.E)-.65 G .507(xit statuses from shell b)-5.507 F .507 (uiltins and compound commands are also limited to this range.)-.2 F (Under)5.506 E(certain circumstances, the shell will use special v)108 -458.4 Q(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E -.15 -(Fo)108 475.2 S 3.372(rt).15 G .872(he shell')-3.372 F 3.372(sp)-.55 G +523.2 Q(alues to indicate speci\214c f)-.25 E(ailure modes.)-.1 E -.15 +(Fo)108 540 S 3.372(rt).15 G .872(he shell')-3.372 F 3.372(sp)-.55 G .873(urposes, a command which e)-3.372 F .873(xits with a zero e)-.15 F .873(xit status has succeeded.)-.15 F .873(An e)5.873 F .873 -(xit status of)-.15 F .049(zero indicates success.)108 487.2 R 2.549(An) +(xit status of)-.15 F .049(zero indicates success.)108 552 R 2.549(An) 5.049 G .049(on-zero e)-2.549 F .049(xit status indicates f)-.15 F 2.549 (ailure. When)-.1 F 2.549(ac)2.549 G .048(ommand terminates on a f) --2.549 F .048(atal sig-)-.1 F(nal)108 499.2 Q F2(N)2.5 E F0(,)A F1(bash) +-2.549 F .048(atal sig-)-.1 F(nal)108 564 Q F2(N)2.5 E F0(,)A F1(bash) 2.5 E F0(uses the v)2.5 E(alue of 128+)-.25 E F2(N)A F0(as the e)2.5 E (xit status.)-.15 E .404 -(If a command is not found, the child process created to e)108 516 R +(If a command is not found, the child process created to e)108 580.8 R -.15(xe)-.15 G .404(cute it returns a status of 127.).15 F .405 -(If a command is)5.405 F(found b)108 528 Q(ut is not e)-.2 E -.15(xe) --.15 G(cutable, the return status is 126.).15 E(If a command f)108 544.8 +(If a command is)5.405 F(found b)108 592.8 Q(ut is not e)-.2 E -.15(xe) +-.15 G(cutable, the return status is 126.).15 E(If a command f)108 609.6 Q(ails because of an error during e)-.1 E (xpansion or redirection, the e)-.15 E(xit status is greater than zero.) --.15 E .081(Shell b)108 561.6 R .081 +-.15 E .081(Shell b)108 626.4 R .081 (uiltin commands return a status of 0 \()-.2 F F2(true)A F0 2.581(\)i)C 2.581(fs)-2.581 G .08(uccessful, and non-zero \()-2.581 F F2(false)A F0 2.58(\)i)C 2.58(fa)-2.58 G 2.58(ne)-2.58 G .08(rror occurs while)-2.58 F -(the)108 573.6 Q 2.967(ye)-.15 G -.15(xe)-3.117 G 2.967(cute. All).15 F +(the)108 638.4 Q 2.967(ye)-.15 G -.15(xe)-3.117 G 2.967(cute. All).15 F -.2(bu)2.967 G .467(iltins return an e).2 F .468 (xit status of 2 to indicate incorrect usage, generally in)-.15 F -.25 -(va)-.4 G .468(lid options or).25 F(missing ar)108 585.6 Q(guments.)-.18 -E F1(Bash)108 602.4 Q F0 .202(itself returns the e)2.702 F .202 +(va)-.4 G .468(lid options or).25 F(missing ar)108 650.4 Q(guments.)-.18 +E F1(Bash)108 667.2 Q F0 .202(itself returns the e)2.702 F .202 (xit status of the last command e)-.15 F -.15(xe)-.15 G .201 -(cuted, unless a syntax error occurs, in which case).15 F(it e)108 614.4 +(cuted, unless a syntax error occurs, in which case).15 F(it e)108 679.2 Q(xits with a non-zero v)-.15 E 2.5(alue. See)-.25 F(also the)2.5 E F1 (exit)2.5 E F0 -.2(bu)2.5 G(iltin command belo).2 E -.65(w.)-.25 G F3 -(SIGN)72 631.2 Q(ALS)-.219 E F0(When)108 643.2 Q F1(bash)3.182 E F0 .682 +(SIGN)72 696 Q(ALS)-.219 E F0(When)108 708 Q F1(bash)3.182 E F0 .682 (is interacti)3.182 F -.15(ve)-.25 G 3.182(,i).15 G 3.182(nt)-3.182 G .682(he absence of an)-3.182 F 3.183(yt)-.15 G .683(raps, it ignores) -3.183 F F4(SIGTERM)3.183 E F0 .683(\(so that)2.933 F F1 .683(kill 0) -3.183 F F0 .683(does not kill an)3.183 F(interacti)108 655.2 Q .758 -.15 +3.183 F F0 .683(does not kill an)3.183 F(interacti)108 720 Q .758 -.15 (ve s)-.25 H .458(hell\), and).15 F F4(SIGINT)2.958 E F0 .458 (is caught and handled \(so that the)2.708 F F1(wait)2.958 E F0 -.2(bu) 2.958 G .457(iltin is interruptible\).).2 F .457(In all cases,)5.457 F -F1(bash)108 667.2 Q F0(ignores)2.5 E F4(SIGQ)2.5 E(UIT)-.09 E F5(.)A F0 -(If job control is in ef)4.5 E(fect,)-.25 E F1(bash)2.5 E F0(ignores)2.5 -E F4(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 -E F4(SIGTSTP)2.5 E F5(.)A F0(Non-b)108 684 Q 1.064 -(uiltin commands run by)-.2 F F1(bash)3.564 E F0(ha)3.564 E 1.365 -.15 -(ve s)-.2 H 1.065(ignal handlers set to the v).15 F 1.065 -(alues inherited by the shell from its)-.25 F 3.248(parent. When)108 696 -R .748(job control is not in ef)3.248 F .747 -(fect, asynchronous commands ignore)-.25 F F4(SIGINT)3.247 E F0(and) -2.997 E F4(SIGQ)3.247 E(UIT)-.09 E F0 .747(in addi-)2.997 F .652 -(tion to these inherited handlers.)108 708 R .653 -(Commands run as a result of command substitution ignore the k)5.652 F --.15(ey)-.1 G(board-).15 E(generated job control signals)108 720 Q F4 -(SIGTTIN)2.5 E F5(,)A F4(SIGTT)2.25 E(OU)-.162 E F5(,)A F0(and)2.25 E F4 -(SIGTSTP)2.5 E F5(.)A F0(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E -(34)190.395 E 0 Cg EP +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(34)185.545 E 0 Cg EP %%Page: 35 35 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.046(The shell e) -108 84 R 2.046(xits by def)-.15 F 2.045(ault upon receipt of a)-.1 F/F1 -9/Times-Bold@0 SF(SIGHUP)4.545 E/F2 9/Times-Roman@0 SF(.)A F0 2.045 -(Before e)6.545 F 2.045(xiting, an interacti)-.15 F 2.345 -.15(ve s)-.25 -H 2.045(hell resends the).15 F F1(SIGHUP)108 96 Q F0 1.004 -(to all jobs, running or stopped.)3.254 F 1.004(Stopped jobs are sent) -6.004 F F1(SIGCONT)3.505 E F0 1.005(to ensure that the)3.255 F 3.505(yr) --.15 G(ecei)-3.505 E 1.305 -.15(ve t)-.25 H(he).15 E F1(SIGHUP)108 108 Q -F2(.)A F0 2.53 -.8(To p)5.43 H(re).8 E -.15(ve)-.25 G .93(nt the shell \ -from sending the signal to a particular job, it should be remo).15 F --.15(ve)-.15 G 3.429(df).15 G .929(rom the)-3.429 F 1.356 -(jobs table with the)108 120 R/F3 10/Times-Bold@0 SF(diso)3.856 E(wn)-.1 -E F0 -.2(bu)3.856 G 1.356(iltin \(see).2 F F1 1.356(SHELL B)3.856 F(UIL) --.09 E 1.356(TIN COMMANDS)-.828 F F0(belo)3.607 E 1.357(w\) or mark)-.25 -F 1.357(ed to not recei)-.1 F -.15(ve)-.25 G F1(SIGHUP)108 132 Q F0 -(using)2.25 E F3(diso)2.5 E(wn \255h)-.1 E F0(.)A .166(If the)108 148.8 -R F3(huponexit)2.666 E F0 .166(shell option has been set with)2.666 F F3 -(shopt)2.666 E F0(,)A F3(bash)2.666 E F0 .166(sends a)2.666 F F1(SIGHUP) -2.666 E F0 .166(to all jobs when an interacti)2.416 F -.15(ve)-.25 G -(login shell e)108 160.8 Q(xits.)-.15 E(If)108 177.6 Q F3(bash)3.046 E -F0 .546(is w)3.046 F .546(aiting for a command to complete and recei)-.1 -F -.15(ve)-.25 G 3.046(sas).15 G .546 -(ignal for which a trap has been set, the trap)-3.046 F .663 -(will not be e)108 189.6 R -.15(xe)-.15 G .663 -(cuted until the command completes.).15 F(When)5.663 E F3(bash)3.163 E +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(bash)108 84 Q F0(ignores)2.5 E/F2 9/Times-Bold@0 SF(SIGQ)2.5 E(UIT) +-.09 E/F3 9/Times-Roman@0 SF(.)A F0(If job control is in ef)4.5 E(fect,) +-.25 E F1(bash)2.5 E F0(ignores)2.5 E F2(SIGTTIN)2.5 E F3(,)A F2(SIGTT) +2.25 E(OU)-.162 E F3(,)A F0(and)2.25 E F2(SIGTSTP)2.5 E F3(.)A F0(Non-b) +108 100.8 Q 1.064(uiltin commands run by)-.2 F F1(bash)3.564 E F0(ha) +3.564 E 1.365 -.15(ve s)-.2 H 1.065(ignal handlers set to the v).15 F +1.065(alues inherited by the shell from its)-.25 F 3.248(parent. When) +108 112.8 R .748(job control is not in ef)3.248 F .747 +(fect, asynchronous commands ignore)-.25 F F2(SIGINT)3.247 E F0(and) +2.997 E F2(SIGQ)3.247 E(UIT)-.09 E F0 .747(in addi-)2.997 F .652 +(tion to these inherited handlers.)108 124.8 R .653 +(Commands run as a result of command substitution ignore the k)5.652 F +-.15(ey)-.1 G(board-).15 E(generated job control signals)108 136.8 Q F2 +(SIGTTIN)2.5 E F3(,)A F2(SIGTT)2.25 E(OU)-.162 E F3(,)A F0(and)2.25 E F2 +(SIGTSTP)2.5 E F3(.)A F0 2.046(The shell e)108 153.6 R 2.046 +(xits by def)-.15 F 2.045(ault upon receipt of a)-.1 F F2(SIGHUP)4.545 E +F3(.)A F0 2.045(Before e)6.545 F 2.045(xiting, an interacti)-.15 F 2.345 +-.15(ve s)-.25 H 2.045(hell resends the).15 F F2(SIGHUP)108 165.6 Q F0 +1.004(to all jobs, running or stopped.)3.254 F 1.004 +(Stopped jobs are sent)6.004 F F2(SIGCONT)3.505 E F0 1.005 +(to ensure that the)3.255 F 3.505(yr)-.15 G(ecei)-3.505 E 1.305 -.15 +(ve t)-.25 H(he).15 E F2(SIGHUP)108 177.6 Q F3(.)A F0 2.53 -.8(To p)5.43 +H(re).8 E -.15(ve)-.25 G .93(nt the shell from sending the signal to a \ +particular job, it should be remo).15 F -.15(ve)-.15 G 3.429(df).15 G +.929(rom the)-3.429 F 1.356(jobs table with the)108 189.6 R F1(diso) +3.856 E(wn)-.1 E F0 -.2(bu)3.856 G 1.356(iltin \(see).2 F F2 1.356 +(SHELL B)3.856 F(UIL)-.09 E 1.356(TIN COMMANDS)-.828 F F0(belo)3.607 E +1.357(w\) or mark)-.25 F 1.357(ed to not recei)-.1 F -.15(ve)-.25 G F2 +(SIGHUP)108 201.6 Q F0(using)2.25 E F1(diso)2.5 E(wn \255h)-.1 E F0(.)A +.166(If the)108 218.4 R F1(huponexit)2.666 E F0 .166 +(shell option has been set with)2.666 F F1(shopt)2.666 E F0(,)A F1(bash) +2.666 E F0 .166(sends a)2.666 F F2(SIGHUP)2.666 E F0 .166 +(to all jobs when an interacti)2.416 F -.15(ve)-.25 G(login shell e)108 +230.4 Q(xits.)-.15 E(If)108 247.2 Q F1(bash)3.046 E F0 .546(is w)3.046 F +.546(aiting for a command to complete and recei)-.1 F -.15(ve)-.25 G +3.046(sas).15 G .546(ignal for which a trap has been set, the trap) +-3.046 F .663(will not be e)108 259.2 R -.15(xe)-.15 G .663 +(cuted until the command completes.).15 F(When)5.663 E F1(bash)3.163 E F0 .662(is w)3.163 F .662(aiting for an asynchronous command)-.1 F .99 -(via the)108 201.6 R F3(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin, the rec\ -eption of a signal for which a trap has been set will cause the).2 F F3 +(via the)108 271.2 R F1(wait)3.49 E F0 -.2(bu)3.49 G .99(iltin, the rec\ +eption of a signal for which a trap has been set will cause the).2 F F1 (wait)3.49 E F0 -.2(bu)3.49 G .99(iltin to).2 F -(return immediately with an e)108 213.6 Q +(return immediately with an e)108 283.2 Q (xit status greater than 128, immediately after which the trap is e)-.15 -E -.15(xe)-.15 G(cuted.).15 E/F4 10.95/Times-Bold@0 SF(JOB CONTR)72 -230.4 Q(OL)-.329 E/F5 10/Times-Italic@0 SF -.25(Jo)108 242.4 S 4.568(bc) -.25 G(ontr)-4.568 E(ol)-.45 E F0 2.068(refers to the ability to selecti) -5.078 F -.15(ve)-.25 G 2.067(ly stop \().15 F F5(suspend)A F0 4.567(\)t) -C 2.067(he e)-4.567 F -.15(xe)-.15 G 2.067 -(cution of processes and continue).15 F(\()108 254.4 Q F5 -.37(re)C -(sume).37 E F0 3.201(\)t)C .701(heir e)-3.201 F -.15(xe)-.15 G .702 +E -.15(xe)-.15 G(cuted.).15 E/F4 10.95/Times-Bold@0 SF(JOB CONTR)72 300 +Q(OL)-.329 E/F5 10/Times-Italic@0 SF -.25(Jo)108 312 S 4.568(bc).25 G +(ontr)-4.568 E(ol)-.45 E F0 2.068(refers to the ability to selecti)5.078 +F -.15(ve)-.25 G 2.067(ly stop \().15 F F5(suspend)A F0 4.567(\)t)C +2.067(he e)-4.567 F -.15(xe)-.15 G 2.067 +(cution of processes and continue).15 F(\()108 324 Q F5 -.37(re)C(sume) +.37 E F0 3.201(\)t)C .701(heir e)-3.201 F -.15(xe)-.15 G .702 (cution at a later point.).15 F 3.202(Au)5.702 G .702 (ser typically emplo)-3.202 F .702(ys this f)-.1 F .702 (acility via an interacti)-.1 F 1.002 -.15(ve i)-.25 H(nterf).15 E(ace) --.1 E(supplied jointly by the operating system k)108 266.4 Q(ernel')-.1 -E 2.5(st)-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(ra).15 G(nd)-2.5 E -F3(bash)2.5 E F0(.)A .785(The shell associates a)108 283.2 R F5(job) +-.1 E(supplied jointly by the operating system k)108 336 Q(ernel')-.1 E +2.5(st)-.55 G(erminal dri)-2.5 E -.15(ve)-.25 G 2.5(ra).15 G(nd)-2.5 E +F1(bash)2.5 E F0(.)A .785(The shell associates a)108 352.8 R F5(job) 5.025 E F0 .785(with each pipeline.)3.515 F .784(It k)5.785 F .784 (eeps a table of currently e)-.1 F -.15(xe)-.15 G .784 -(cuting jobs, which may be).15 F .34(listed with the)108 295.2 R F3 -(jobs)2.84 E F0 2.84(command. When)2.84 F F3(bash)2.84 E F0 .341 +(cuting jobs, which may be).15 F .34(listed with the)108 364.8 R F1 +(jobs)2.84 E F0 2.84(command. When)2.84 F F1(bash)2.84 E F0 .341 (starts a job asynchronously \(in the)2.84 F F5(bac)2.841 E(kgr)-.2 E -(ound)-.45 E F0 .341(\), it prints a line).77 F(that looks lik)108 307.2 -Q(e:)-.1 E([1] 25647)144 324 Q .241(indicating that this job is job num\ -ber 1 and that the process ID of the last process in the pipeline assoc\ -iated)108 340.8 R .732(with this job is 25647.)108 352.8 R .733 +(ound)-.45 E F0 .341(\), it prints a line).77 F(that looks lik)108 376.8 +Q(e:)-.1 E([1] 25647)144 393.6 Q .241(indicating that this job is job n\ +umber 1 and that the process ID of the last process in the pipeline ass\ +ociated)108 410.4 R .732(with this job is 25647.)108 422.4 R .733 (All of the processes in a single pipeline are members of the same job) -5.732 F(.)-.4 E F3(Bash)5.733 E F0(uses)3.233 E(the)108 364.8 Q F5(job) +5.732 F(.)-.4 E F1(Bash)5.733 E F0(uses)3.233 E(the)108 434.4 Q F5(job) 4.24 E F0(abstraction as the basis for job control.)2.73 E 3.063 -.8 -(To f)108 381.6 T 1.463(acilitate the implementation of the user interf) +(To f)108 451.2 T 1.463(acilitate the implementation of the user interf) .7 F 1.462(ace to job control, the operating system maintains the)-.1 F -.87(notion of a)108 393.6 R F5(curr)3.37 E .87(ent terminal pr)-.37 F +.87(notion of a)108 463.2 R F5(curr)3.37 E .87(ent terminal pr)-.37 F .871(ocess gr)-.45 F .871(oup ID)-.45 F F0 5.871(.M)C .871 (embers of this process group \(processes whose process)-5.871 F .023 (group ID is equal to the current terminal process group ID\) recei)108 -405.6 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023 -(board-generated signals such as).15 F F1(SIG-)2.522 E(INT)108 417.6 Q -F2(.)A F0 1.346(These processes are said to be in the)5.846 F F5(for) +475.2 R .323 -.15(ve k)-.25 H -.15(ey).05 G .023 +(board-generated signals such as).15 F F2(SIG-)2.522 E(INT)108 487.2 Q +F3(.)A F0 1.346(These processes are said to be in the)5.846 F F5(for) 3.847 E -.4(eg)-.37 G -.45(ro).4 G(und).45 E F0(.).77 E F5(Bac)6.927 E (kgr)-.2 E(ound)-.45 E F0 1.347(processes are those whose process)4.617 -F .146(group ID dif)108 429.6 R .146(fers from the terminal')-.25 F .146 +F .146(group ID dif)108 499.2 R .146(fers from the terminal')-.25 F .146 (s; such processes are immune to k)-.55 F -.15(ey)-.1 G .145 (board-generated signals.).15 F .145(Only fore-)5.145 F .16 -(ground processes are allo)108 441.6 R .16(wed to read from or)-.25 F +(ground processes are allo)108 511.2 R .16(wed to read from or)-.25 F 2.66(,i)-.4 G 2.66(ft)-2.66 G .16(he user so speci\214es with)-2.66 F/F6 10/Courier@0 SF .16(stty tostop)2.66 F F0 2.66(,w)C .16(rite to the ter) --2.66 F(-)-.2 E 3.052(minal. Background)108 453.6 R .551 +-2.66 F(-)-.2 E 3.052(minal. Background)108 523.2 R .551 (processes which attempt to read from \(write to when)3.052 F F6 .551 (stty tostop)3.051 F F0 .551(is in ef)3.051 F .551(fect\) the)-.25 F -.717(terminal are sent a)108 465.6 R F1 .717(SIGTTIN \(SIGTT)3.217 F +.717(terminal are sent a)108 535.2 R F2 .717(SIGTTIN \(SIGTT)3.217 F (OU\))-.162 E F0 .718(signal by the k)2.967 F(ernel')-.1 E 3.218(st)-.55 G .718(erminal dri)-3.218 F -.15(ve)-.25 G 1.518 -.4(r, w).15 H .718 -(hich, unless caught, sus-).4 F(pends the process.)108 477.6 Q 1.088 -(If the operating system on which)108 494.4 R F3(bash)3.588 E F0 1.088 -(is running supports job control,)3.588 F F3(bash)3.587 E F0 1.087 -(contains f)3.587 F 1.087(acilities to use it.)-.1 F -.8(Ty)108 506.4 S +(hich, unless caught, sus-).4 F(pends the process.)108 547.2 Q 1.088 +(If the operating system on which)108 564 R F1(bash)3.588 E F0 1.088 +(is running supports job control,)3.588 F F1(bash)3.587 E F0 1.087 +(contains f)3.587 F 1.087(acilities to use it.)-.1 F -.8(Ty)108 576 S .301(ping the).8 F F5(suspend)3.141 E F0 .301(character \(typically) -3.571 F F3(^Z)2.801 E F0 2.801(,C)C .301 +3.571 F F1(^Z)2.801 E F0 2.801(,C)C .301 (ontrol-Z\) while a process is running causes that process to be)-2.801 -F 2.143(stopped and returns control to)108 518.4 R F3(bash)4.642 E F0 +F 2.143(stopped and returns control to)108 588 R F1(bash)4.642 E F0 7.142(.T)C 2.142(yping the)-7.942 F F5 2.142(delayed suspend)4.992 F F0 -2.142(character \(typically)5.412 F F3(^Y)4.642 E F0 4.642(,C)C +2.142(character \(typically)5.412 F F1(^Y)4.642 E F0 4.642(,C)C (ontrol-Y\))-4.642 E .021(causes the process to be stopped when it atte\ -mpts to read input from the terminal, and control to be returned)108 -530.4 R(to)108 542.4 Q F3(bash)3.392 E F0 5.892(.T)C .892 +mpts to read input from the terminal, and control to be returned)108 600 +R(to)108 612 Q F1(bash)3.392 E F0 5.892(.T)C .892 (he user may then manipulate the state of this job, using the)-5.892 F -F3(bg)3.392 E F0 .892(command to continue it in the)3.392 F .894 -(background, the)108 554.4 R F3(fg)3.394 E F0 .895 +F1(bg)3.392 E F0 .892(command to continue it in the)3.392 F .894 +(background, the)108 624 R F1(fg)3.394 E F0 .895 (command to continue it in the fore)3.394 F .895(ground, or the)-.15 F -F3(kill)3.395 E F0 .895(command to kill it.)3.395 F(A)5.895 E F3(^Z) -3.395 E F0(tak)3.395 E(es)-.1 E(ef)108 566.4 Q .949(fect immediately) --.25 F 3.449(,a)-.65 G .948(nd has the additional side ef)-3.449 F .948 +F1(kill)3.395 E F0 .895(command to kill it.)3.395 F(A)5.895 E F1(^Z) +3.395 E F0(tak)3.395 E(es)-.1 E(ef)108 636 Q .949(fect immediately)-.25 +F 3.449(,a)-.65 G .948(nd has the additional side ef)-3.449 F .948 (fect of causing pending output and typeahead to be dis-)-.25 F(carded.) -108 578.4 Q .777(There are a number of w)108 595.2 R .777 -(ays to refer to a job in the shell.)-.1 F .777(The character)5.777 F F3 -(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 607.2 +108 648 Q .777(There are a number of w)108 664.8 R .777 +(ays to refer to a job in the shell.)-.1 F .777(The character)5.777 F F1 +(%)3.277 E F0 .777(introduces a job speci\214cation)3.277 F(\()108 676.8 Q F5(jobspec)A F0 3.458(\). Job)B(number)3.458 E F5(n)3.818 E F0 .957 -(may be referred to as)3.697 F F3(%n)3.457 E F0 5.957(.A)C .957 +(may be referred to as)3.697 F F1(%n)3.457 E F0 5.957(.A)C .957 (job may also be referred to using a pre\214x of the)-2.5 F .59(name us\ ed to start it, or using a substring that appears in its command line.) -108 619.2 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F3(%ce)3.09 E -F0 .59(refers to a)3.09 F(stopped)108 631.2 Q F3(ce)3.464 E F0(job)3.464 +108 688.8 R -.15(Fo)5.59 G 3.09(re).15 G(xample,)-3.24 E F1(%ce)3.09 E +F0 .59(refers to a)3.09 F(stopped)108 700.8 Q F1(ce)3.464 E F0(job)3.464 E 5.964(.I)-.4 G 3.463(fap)-5.964 G .963 -(re\214x matches more than one job,)-3.463 F F3(bash)3.463 E F0 .963 -(reports an error)3.463 F 5.963(.U)-.55 G(sing)-5.963 E F3(%?ce)3.463 E +(re\214x matches more than one job,)-3.463 F F1(bash)3.463 E F0 .963 +(reports an error)3.463 F 5.963(.U)-.55 G(sing)-5.963 E F1(%?ce)3.463 E F0 3.463(,o)C 3.463(nt)-3.463 G .963(he other)-3.463 F .086 -(hand, refers to an)108 643.2 R 2.587(yj)-.15 G .087 -(ob containing the string)-2.587 F F3(ce)2.587 E F0 .087 +(hand, refers to an)108 712.8 R 2.587(yj)-.15 G .087 +(ob containing the string)-2.587 F F1(ce)2.587 E F0 .087 (in its command line.)2.587 F .087 -(If the substring matches more than one)5.087 F(job,)108 655.2 Q F3 +(If the substring matches more than one)5.087 F(job,)108 724.8 Q F1 (bash)2.518 E F0 .018(reports an error)2.518 F 5.018(.T)-.55 G .018 -(he symbols)-5.018 F F3(%%)2.518 E F0(and)2.518 E F3(%+)2.518 E F0 .018 +(he symbols)-5.018 F F1(%%)2.518 E F0(and)2.518 E F1(%+)2.518 E F0 .018 (refer to the shell')2.518 F 2.518(sn)-.55 G .018(otion of the)-2.518 F F5(curr)2.518 E .018(ent job)-.37 F F0 2.518(,w).23 G .018(hich is) --2.518 F .494(the last job stopped while it w)108 667.2 R .495 -(as in the fore)-.1 F .495(ground or started in the background.)-.15 F -(The)5.495 E F5(pr)4.245 E -.15(ev)-.37 G .495(ious job).15 F F0 .495 -(may be)3.225 F .788(referenced using)108 679.2 R F3<25ad>3.288 E F0 -5.788(.I)C 3.288(ft)-5.788 G .787(here is only a single job,)-3.288 F F3 -(%+)3.287 E F0(and)3.287 E F3<25ad>3.287 E F0 .787 -(can both be used to refer to that job)3.287 F 5.787(.I)-.4 G(n)-5.787 E -.256(output pertaining to jobs \(e.g., the output of the)108 691.2 R F3 -(jobs)2.756 E F0 .256(command\), the current job is al)2.756 F -.1(wa) --.1 G .257(ys \215agged with a).1 F F3(+)2.757 E F0(,)A .411 -(and the pre)108 703.2 R .411(vious job with a)-.25 F F32.911 E F0 -5.411(.A)C .411(single % \(with no accompan)-2.5 F .41 -(ying job speci\214cation\) also refers to the cur)-.15 F(-)-.2 E -(rent job)108 715.2 Q(.)-.4 E(GNU Bash 4.4)72 768 Q(2015 October 11) -141.235 E(35)190.395 E 0 Cg EP +-2.518 F(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16) +.15 E(35)185.545 E 0 Cg EP %%Page: 36 36 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .443 -(Simply naming a job can be used to bring it into the fore)108 84 R -(ground:)-.15 E/F1 10/Times-Bold@0 SF(%1)2.944 E F0 .444(is a synon) -2.944 F .444(ym for)-.15 F F1 -.63(``)2.944 G .444(fg %1').63 F(')-.63 E -F0 2.944(,b)C(ringing)-2.944 E 1.473 -(job 1 from the background into the fore)108 96 R 3.973 -(ground. Similarly)-.15 F(,)-.65 E F1 -.63(``)3.972 G 1.472(%1 &').63 F -(')-.63 E F0 1.472(resumes job 1 in the background,)3.972 F(equi)108 108 -Q -.25(va)-.25 G(lent to).25 E F1 -.63(``)2.5 G(bg %1').63 E(')-.63 E F0 -(.)A .13(The shell learns immediately whene)108 124.8 R -.15(ve)-.25 G -2.63(raj).15 G .13(ob changes state.)-2.63 F(Normally)5.131 E(,)-.65 E -F1(bash)2.631 E F0 -.1(wa)2.631 G .131(its until it is about to print a) -.1 F .158(prompt before reporting changes in a job')108 136.8 R 2.658 -(ss)-.55 G .158(tatus so as to not interrupt an)-2.658 F 2.657(yo)-.15 G -.157(ther output.)-2.657 F .157(If the)5.157 F F12.657 E F0 .157 -(option to)2.657 F(the)108 148.8 Q F1(set)2.647 E F0 -.2(bu)2.647 G .147 -(iltin command is enabled,).2 F F1(bash)2.647 E F0 .148 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .494 +(the last job stopped while it w)108 84 R .495(as in the fore)-.1 F .495 +(ground or started in the background.)-.15 F(The)5.495 E/F1 10 +/Times-Italic@0 SF(pr)4.245 E -.15(ev)-.37 G .495(ious job).15 F F0 .495 +(may be)3.225 F .788(referenced using)108 96 R/F2 10/Times-Bold@0 SF +<25ad>3.288 E F0 5.788(.I)C 3.288(ft)-5.788 G .787 +(here is only a single job,)-3.288 F F2(%+)3.287 E F0(and)3.287 E F2 +<25ad>3.287 E F0 .787(can both be used to refer to that job)3.287 F +5.787(.I)-.4 G(n)-5.787 E .256 +(output pertaining to jobs \(e.g., the output of the)108 108 R F2(jobs) +2.756 E F0 .256(command\), the current job is al)2.756 F -.1(wa)-.1 G +.257(ys \215agged with a).1 F F2(+)2.757 E F0(,)A .411(and the pre)108 +120 R .411(vious job with a)-.25 F F22.911 E F0 5.411(.A)C .411 +(single % \(with no accompan)-2.5 F .41 +(ying job speci\214cation\) also refers to the cur)-.15 F(-)-.2 E +(rent job)108 132 Q(.)-.4 E .443 +(Simply naming a job can be used to bring it into the fore)108 148.8 R +(ground:)-.15 E F2(%1)2.944 E F0 .444(is a synon)2.944 F .444(ym for) +-.15 F F2 -.63(``)2.944 G .444(fg %1').63 F(')-.63 E F0 2.944(,b)C +(ringing)-2.944 E 1.473(job 1 from the background into the fore)108 +160.8 R 3.973(ground. Similarly)-.15 F(,)-.65 E F2 -.63(``)3.972 G 1.472 +(%1 &').63 F(')-.63 E F0 1.472(resumes job 1 in the background,)3.972 F +(equi)108 172.8 Q -.25(va)-.25 G(lent to).25 E F2 -.63(``)2.5 G(bg %1') +.63 E(')-.63 E F0(.)A .13(The shell learns immediately whene)108 189.6 R +-.15(ve)-.25 G 2.63(raj).15 G .13(ob changes state.)-2.63 F(Normally) +5.131 E(,)-.65 E F2(bash)2.631 E F0 -.1(wa)2.631 G .131 +(its until it is about to print a).1 F .158 +(prompt before reporting changes in a job')108 201.6 R 2.658(ss)-.55 G +.158(tatus so as to not interrupt an)-2.658 F 2.657(yo)-.15 G .157 +(ther output.)-2.657 F .157(If the)5.157 F F22.657 E F0 .157 +(option to)2.657 F(the)108 213.6 Q F2(set)2.647 E F0 -.2(bu)2.647 G .147 +(iltin command is enabled,).2 F F2(bash)2.647 E F0 .148 (reports such changes immediately)2.648 F 5.148(.A)-.65 G .448 -.15 -(ny t)-5.148 H .148(rap on).15 F/F2 9/Times-Bold@0 SF(SIGCHLD)2.648 E F0 +(ny t)-5.148 H .148(rap on).15 F/F3 9/Times-Bold@0 SF(SIGCHLD)2.648 E F0 .148(is e)2.398 F -.15(xe)-.15 G(-).15 E(cuted for each child that e)108 -160.8 Q(xits.)-.15 E .033(If an attempt to e)108 177.6 R(xit)-.15 E F1 +225.6 Q(xits.)-.15 E .033(If an attempt to e)108 242.4 R(xit)-.15 E F2 (bash)2.533 E F0 .033(is made while jobs are stopped \(or)2.533 F 2.532 -(,i)-.4 G 2.532(ft)-2.532 G(he)-2.532 E F1(checkjobs)2.532 E F0 .032 -(shell option has been enabled)2.532 F 2.019(using the)108 189.6 R F1 +(,i)-.4 G 2.532(ft)-2.532 G(he)-2.532 E F2(checkjobs)2.532 E F0 .032 +(shell option has been enabled)2.532 F 2.019(using the)108 254.4 R F2 (shopt)4.519 E F0 -.2(bu)4.519 G 2.019 (iltin, running\), the shell prints a w).2 F 2.02 -(arning message, and, if the)-.1 F F1(checkjobs)4.52 E F0 2.02 +(arning message, and, if the)-.1 F F2(checkjobs)4.52 E F0 2.02 (option is)4.52 F .459(enabled, lists the jobs and their statuses.)108 -201.6 R(The)5.459 E F1(jobs)2.959 E F0 .458 +266.4 R(The)5.459 E F2(jobs)2.959 E F0 .458 (command may then be used to inspect their status.)2.958 F .458(If a) -5.458 F .603(second attempt to e)108 213.6 R .604 +5.458 F .603(second attempt to e)108 278.4 R .604 (xit is made without an interv)-.15 F .604 (ening command, the shell does not print another w)-.15 F(arning,)-.1 E -(and an)108 225.6 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E/F3 -10.95/Times-Bold@0 SF(PR)72 242.4 Q(OMPTING)-.329 E F0 .645(When e)108 -254.4 R -.15(xe)-.15 G .645(cuting interacti).15 F -.15(ve)-.25 G(ly).15 -E(,)-.65 E F1(bash)3.145 E F0 .645(displays the primary prompt)3.145 F -F2(PS1)3.145 E F0 .645(when it is ready to read a command,)2.895 F 1.825 -(and the secondary prompt)108 266.4 R F2(PS2)4.325 E F0 1.825 -(when it needs more input to complete a command.)4.075 F F1(Bash)6.826 E -F0(allo)4.326 E 1.826(ws these)-.25 F 1.499(prompt strings to be custom\ -ized by inserting a number of backslash-escaped special characters that\ - are)108 278.4 R(decoded as follo)108 290.4 Q(ws:)-.25 E F1(\\a)144 -302.4 Q F0(an ASCII bell character \(07\))180 302.4 Q F1(\\d)144 314.4 Q -F0(the date in "W)180 314.4 Q(eekday Month Date" format \(e.g., "T)-.8 E -(ue May 26"\))-.45 E F1(\\D{)144 326.4 Q/F4 10/Times-Italic@0 SF(format) -A F1(})A F0(the)180 338.4 Q F4(format)3.926 E F0 1.426(is passed to) -3.926 F F4(strftime)3.926 E F0 1.427 +(and an)108 290.4 Q 2.5(ys)-.15 G(topped jobs are terminated.)-2.5 E/F4 +10.95/Times-Bold@0 SF(PR)72 307.2 Q(OMPTING)-.329 E F0 .645(When e)108 +319.2 R -.15(xe)-.15 G .645(cuting interacti).15 F -.15(ve)-.25 G(ly).15 +E(,)-.65 E F2(bash)3.145 E F0 .645(displays the primary prompt)3.145 F +F3(PS1)3.145 E F0 .645(when it is ready to read a command,)2.895 F .314 +(and the secondary prompt)108 331.2 R F3(PS2)2.814 E F0 .315 +(when it needs more input to complete a command.)2.564 F F2(Bash)5.315 E +F0(displays)2.815 E F2(PS0)2.815 E F0(after)2.815 E .05 +(it reads a command b)108 343.2 R .05(ut before e)-.2 F -.15(xe)-.15 G +.05(cuting it.).15 F F2(Bash)5.049 E F0(allo)2.549 E .049 +(ws these prompt strings to be customized by inserting)-.25 F 2.5(an)108 +355.2 S(umber of backslash-escaped special characters that are decoded \ +as follo)-2.5 E(ws:)-.25 E F2(\\a)144 367.2 Q F0 +(an ASCII bell character \(07\))180 367.2 Q F2(\\d)144 379.2 Q F0 +(the date in "W)180 379.2 Q(eekday Month Date" format \(e.g., "T)-.8 E +(ue May 26"\))-.45 E F2(\\D{)144 391.2 Q F1(format)A F2(})A F0(the)180 +403.2 Q F1(format)3.926 E F0 1.426(is passed to)3.926 F F1(strftime) +3.926 E F0 1.427 (\(3\) and the result is inserted into the prompt string; an)B(empty)180 -350.4 Q F4(format)2.5 E F0 +415.2 Q F1(format)2.5 E F0 (results in a locale-speci\214c time representation.)2.5 E -(The braces are required)5 E F1(\\e)144 362.4 Q F0 -(an ASCII escape character \(033\))180 362.4 Q F1(\\h)144 374.4 Q F0 -(the hostname up to the \214rst `.)180 374.4 Q(')-.7 E F1(\\H)144 386.4 -Q F0(the hostname)180 386.4 Q F1(\\j)144 398.4 Q F0 -(the number of jobs currently managed by the shell)180 398.4 Q F1(\\l) -144 410.4 Q F0(the basename of the shell')180 410.4 Q 2.5(st)-.55 G -(erminal de)-2.5 E(vice name)-.25 E F1(\\n)144 422.4 Q F0(ne)180 422.4 Q -(wline)-.25 E F1(\\r)144 434.4 Q F0(carriage return)180 434.4 Q F1(\\s) -144 446.4 Q F0(the name of the shell, the basename of)180 446.4 Q F1($0) -2.5 E F0(\(the portion follo)2.5 E(wing the \214nal slash\))-.25 E F1 -(\\t)144 458.4 Q F0(the current time in 24-hour HH:MM:SS format)180 -458.4 Q F1(\\T)144 470.4 Q F0 -(the current time in 12-hour HH:MM:SS format)180 470.4 Q F1(\\@)144 -482.4 Q F0(the current time in 12-hour am/pm format)180 482.4 Q F1(\\A) -144 494.4 Q F0(the current time in 24-hour HH:MM format)180 494.4 Q F1 -(\\u)144 506.4 Q F0(the username of the current user)180 506.4 Q F1(\\v) -144 518.4 Q F0(the v)180 518.4 Q(ersion of)-.15 E F1(bash)2.5 E F0 -(\(e.g., 2.00\))2.5 E F1(\\V)144 530.4 Q F0(the release of)180 530.4 Q -F1(bash)2.5 E F0 2.5(,v)C(ersion + patch le)-2.65 E -.15(ve)-.25 G 2.5 -(l\().15 G(e.g., 2.00.0\))-2.5 E F1(\\w)144 542.4 Q F0 .116 -(the current w)180 542.4 R .116(orking directory)-.1 F 2.616(,w)-.65 G -(ith)-2.616 E F2($HOME)2.616 E F0(abbre)2.366 E .115 -(viated with a tilde \(uses the v)-.25 F .115(alue of the)-.25 F F2(PR) -180 554.4 Q(OMPT_DIR)-.27 E(TRIM)-.36 E F0 -.25(va)2.25 G(riable\)).25 E -F1(\\W)144 566.4 Q F0(the basename of the current w)180 566.4 Q -(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F2($HOME)2.5 E F0 -(abbre)2.25 E(viated with a tilde)-.25 E F1(\\!)144 578.4 Q F0 -(the history number of this command)180 578.4 Q F1(\\#)144 590.4 Q F0 -(the command number of this command)180 590.4 Q F1(\\$)144 602.4 Q F0 -(if the ef)180 602.4 Q(fecti)-.25 E .3 -.15(ve U)-.25 H(ID is 0, a).15 E -F1(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F1($)2.5 E(\\)144 614.4 Q F4 -(nnn)A F0(the character corresponding to the octal number)180 614.4 Q F4 -(nnn)2.5 E F1(\\\\)144 626.4 Q F0 2.5(ab)180 626.4 S(ackslash)-2.5 E F1 -(\\[)144 638.4 Q F0(be)180 638.4 Q 1.257(gin a sequence of non-printing\ +(The braces are required)5 E F2(\\e)144 427.2 Q F0 +(an ASCII escape character \(033\))180 427.2 Q F2(\\h)144 439.2 Q F0 +(the hostname up to the \214rst `.)180 439.2 Q(')-.7 E F2(\\H)144 451.2 +Q F0(the hostname)180 451.2 Q F2(\\j)144 463.2 Q F0 +(the number of jobs currently managed by the shell)180 463.2 Q F2(\\l) +144 475.2 Q F0(the basename of the shell')180 475.2 Q 2.5(st)-.55 G +(erminal de)-2.5 E(vice name)-.25 E F2(\\n)144 487.2 Q F0(ne)180 487.2 Q +(wline)-.25 E F2(\\r)144 499.2 Q F0(carriage return)180 499.2 Q F2(\\s) +144 511.2 Q F0(the name of the shell, the basename of)180 511.2 Q F2($0) +2.5 E F0(\(the portion follo)2.5 E(wing the \214nal slash\))-.25 E F2 +(\\t)144 523.2 Q F0(the current time in 24-hour HH:MM:SS format)180 +523.2 Q F2(\\T)144 535.2 Q F0 +(the current time in 12-hour HH:MM:SS format)180 535.2 Q F2(\\@)144 +547.2 Q F0(the current time in 12-hour am/pm format)180 547.2 Q F2(\\A) +144 559.2 Q F0(the current time in 24-hour HH:MM format)180 559.2 Q F2 +(\\u)144 571.2 Q F0(the username of the current user)180 571.2 Q F2(\\v) +144 583.2 Q F0(the v)180 583.2 Q(ersion of)-.15 E F2(bash)2.5 E F0 +(\(e.g., 2.00\))2.5 E F2(\\V)144 595.2 Q F0(the release of)180 595.2 Q +F2(bash)2.5 E F0 2.5(,v)C(ersion + patch le)-2.65 E -.15(ve)-.25 G 2.5 +(l\().15 G(e.g., 2.00.0\))-2.5 E F2(\\w)144 607.2 Q F0 .116 +(the current w)180 607.2 R .116(orking directory)-.1 F 2.616(,w)-.65 G +(ith)-2.616 E F3($HOME)2.616 E F0(abbre)2.366 E .115 +(viated with a tilde \(uses the v)-.25 F .115(alue of the)-.25 F F3(PR) +180 619.2 Q(OMPT_DIR)-.27 E(TRIM)-.36 E F0 -.25(va)2.25 G(riable\)).25 E +F2(\\W)144 631.2 Q F0(the basename of the current w)180 631.2 Q +(orking directory)-.1 E 2.5(,w)-.65 G(ith)-2.5 E F3($HOME)2.5 E F0 +(abbre)2.25 E(viated with a tilde)-.25 E F2(\\!)144 643.2 Q F0 +(the history number of this command)180 643.2 Q F2(\\#)144 655.2 Q F0 +(the command number of this command)180 655.2 Q F2(\\$)144 667.2 Q F0 +(if the ef)180 667.2 Q(fecti)-.25 E .3 -.15(ve U)-.25 H(ID is 0, a).15 E +F2(#)2.5 E F0 2.5(,o)C(therwise a)-2.5 E F2($)2.5 E(\\)144 679.2 Q F1 +(nnn)A F0(the character corresponding to the octal number)180 679.2 Q F1 +(nnn)2.5 E F2(\\\\)144 691.2 Q F0 2.5(ab)180 691.2 S(ackslash)-2.5 E F2 +(\\[)144 703.2 Q F0(be)180 703.2 Q 1.257(gin a sequence of non-printing\ characters, which could be used to embed a terminal)-.15 F -(control sequence into the prompt)180 650.4 Q F1(\\])144 662.4 Q F0 -(end a sequence of non-printing characters)180 662.4 Q .12 -(The command number and the history number are usually dif)108 679.2 R -.119(ferent: the history number of a command is its)-.25 F 1.585(positi\ -on in the history list, which may include commands restored from the hi\ -story \214le \(see)108 691.2 R F2(HIST)4.085 E(OR)-.162 E(Y)-.315 E F0 -(belo)108 703.2 Q .541(w\), while the command number is the position in\ - the sequence of commands e)-.25 F -.15(xe)-.15 G .54 -(cuted during the cur).15 F(-)-.2 E .546(rent shell session.)108 715.2 R -.546(After the string is decoded, it is e)5.546 F .546 -(xpanded via parameter e)-.15 F .546(xpansion, command substitu-)-.15 F -.352(tion, arithmetic e)108 727.2 R .352(xpansion, and quote remo)-.15 F --.25(va)-.15 G .352(l, subject to the v).25 F .352(alue of the)-.25 F F1 -(pr)2.852 E(omptv)-.18 E(ars)-.1 E F0 .351(shell option \(see the)2.852 -F(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(36)190.395 E 0 Cg EP +(control sequence into the prompt)180 715.2 Q(GNU Bash 4.4)72 768 Q +(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(36)185.545 E 0 Cg EP %%Page: 37 37 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(description of the)108 84 Q/F1 10/Times-Bold@0 SF(shopt)2.5 E F0 -(command under)2.5 E/F2 9/Times-Bold@0 SF(SHELL B)2.5 E(UIL)-.09 E -(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E/F3 10.95/Times-Bold@0 -SF(READLINE)72 100.8 Q F0 .15 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(\\])144 84 Q F0(end a sequence of non-printing characters)180 84 Q +.12(The command number and the history number are usually dif)108 100.8 +R .119(ferent: the history number of a command is its)-.25 F 1.585(posi\ +tion in the history list, which may include commands restored from the \ +history \214le \(see)108 112.8 R/F2 9/Times-Bold@0 SF(HIST)4.085 E(OR) +-.162 E(Y)-.315 E F0(belo)108 124.8 Q .541(w\), while the command numbe\ +r is the position in the sequence of commands e)-.25 F -.15(xe)-.15 G +.54(cuted during the cur).15 F(-)-.2 E .546(rent shell session.)108 +136.8 R .546(After the string is decoded, it is e)5.546 F .546 +(xpanded via parameter e)-.15 F .546(xpansion, command substitu-)-.15 F +.352(tion, arithmetic e)108 148.8 R .352(xpansion, and quote remo)-.15 F +-.25(va)-.15 G .352(l, subject to the v).25 F .352(alue of the)-.25 F F1 +(pr)2.852 E(omptv)-.18 E(ars)-.1 E F0 .351(shell option \(see the)2.852 +F(description of the)108 160.8 Q F1(shopt)2.5 E F0(command under)2.5 E +F2(SHELL B)2.5 E(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).) +-.25 E/F3 10.95/Times-Bold@0 SF(READLINE)72 177.6 Q F0 .15 (This is the library that handles reading input when using an interacti) -108 112.8 R .451 -.15(ve s)-.25 H .151(hell, unless the).15 F F1 -(\255\255noediting)2.651 E F0(option)2.651 E 1.209(is gi)108 124.8 R +108 189.6 R .451 -.15(ve s)-.25 H .151(hell, unless the).15 F F1 +(\255\255noediting)2.651 E F0(option)2.651 E 1.209(is gi)108 201.6 R -.15(ve)-.25 G 3.709(na).15 G 3.709(ts)-3.709 G 1.209(hell in)-3.709 F -.2(vo)-.4 G 3.709(cation. Line).2 F 1.208 (editing is also used when using the)3.709 F F13.708 E F0 1.208 (option to the)3.708 F F1 -.18(re)3.708 G(ad).18 E F0 -.2(bu)3.708 G -3.708(iltin. By).2 F(def)108 136.8 Q .851 +3.708(iltin. By).2 F(def)108 213.6 Q .851 (ault, the line editing commands are similar to those of Emacs.)-.1 F 3.351(Av)5.851 G .851(i-style line editing interf)-3.351 F .852 -(ace is also)-.1 F -.2(av)108 148.8 S 3.35(ailable. Line)-.05 F .85 +(ace is also)-.1 F -.2(av)108 225.6 S 3.35(ailable. Line)-.05 F .85 (editing can be enabled at an)3.35 F 3.35(yt)-.15 G .85(ime using the) -3.35 F F1 .85(\255o emacs)3.35 F F0(or)3.35 E F1 .85(\255o vi)3.35 F F0 .85(options to the)3.35 F F1(set)3.35 E F0 -.2(bu)3.35 G(iltin).2 E -(\(see)108 160.8 Q F2 .762(SHELL B)3.262 F(UIL)-.09 E .762(TIN COMMANDS) +(\(see)108 237.6 Q F2 .762(SHELL B)3.262 F(UIL)-.09 E .762(TIN COMMANDS) -.828 F F0(belo)3.012 E 3.262(w\). T)-.25 F 3.263(ot)-.8 G .763(urn of) -3.263 F 3.263(fl)-.25 G .763 (ine editing after the shell is running, use the)-3.263 F F1(+o)3.263 E -(emacs)108 172.8 Q F0(or)2.5 E F1(+o vi)2.5 E F0(options to the)2.5 E F1 -(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(Readline Notation)87 189.6 Q +(emacs)108 249.6 Q F0(or)2.5 E F1(+o vi)2.5 E F0(options to the)2.5 E F1 +(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(Readline Notation)87 266.4 Q F0 .463(In this section, the Emacs-style notation is used to denote k) -108 201.6 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke) +108 278.4 R -.15(ey)-.1 G(strok).15 E 2.963(es. Control)-.1 F -.1(ke) 2.963 G .463(ys are denoted by C\255)-.05 F/F4 10/Times-Italic@0 SF -.1 -(ke)C(y)-.2 E F0(,)A 1.152(e.g., C\255n means Control\255N.)108 213.6 R +(ke)C(y)-.2 E F0(,)A 1.152(e.g., C\255n means Control\255N.)108 290.4 R (Similarly)6.152 E(,)-.65 E F4(meta)4.032 E F0 -.1(ke)3.913 G 1.153 (ys are denoted by M\255)-.05 F F4 -.1(ke)C(y)-.2 E F0 3.653(,s)C 3.653 (oM)-3.653 G 1.153(\255x means Meta\255X.)-3.653 F(\(On)6.153 E -.1(ke) -108 225.6 S .831(yboards without a)-.05 F F4(meta)3.711 E F0 -.1(ke) +108 302.4 S .831(yboards without a)-.05 F F4(meta)3.711 E F0 -.1(ke) 3.591 G 2.131 -.65(y, M)-.05 H.65 E F4(x)A F0 .831(means ESC)3.331 F F4(x)3.331 E F0 3.331(,i)C .83(.e., press the Escape k)-3.331 F 1.13 -.15(ey t)-.1 H .83(hen the).15 F F4(x)4.1 E F0 -.1(ke)3.86 G 4.63 -.65 -(y. T)-.05 H .83(his mak).65 F(es)-.1 E .599(ESC the)108 237.6 R F4 .599 +(y. T)-.05 H .83(his mak).65 F(es)-.1 E .599(ESC the)108 314.4 R F4 .599 (meta pr)3.099 F(e\214x)-.37 E F0 5.599(.T)C .599 (he combination M\255C\255)-5.599 F F4(x)A F0 .599 (means ESC\255Control\255)3.099 F F4(x)A F0 3.099(,o)C 3.099(rp)-3.099 G .6(ress the Escape k)-3.099 F .9 -.15(ey t)-.1 H .6(hen hold).15 F -(the Control k)108 249.6 Q .3 -.15(ey w)-.1 H(hile pressing the).15 E F4 +(the Control k)108 326.4 Q .3 -.15(ey w)-.1 H(hile pressing the).15 E F4 (x)3.27 E F0 -.1(ke)3.03 G -.65(y.)-.05 G(\)).65 E .62 -(Readline commands may be gi)108 266.4 R -.15(ve)-.25 G 3.119(nn).15 G +(Readline commands may be gi)108 343.2 R -.15(ve)-.25 G 3.119(nn).15 G (umeric)-3.119 E F4(ar)3.119 E(guments)-.37 E F0 3.119(,w).27 G .619 (hich normally act as a repeat count.)-3.119 F(Sometimes,)5.619 E(ho)108 -278.4 Q(we)-.25 E -.15(ve)-.25 G 1.418 -.4(r, i).15 H 3.118(ti).4 G +355.2 Q(we)-.25 E -.15(ve)-.25 G 1.418 -.4(r, i).15 H 3.118(ti).4 G 3.119(st)-3.118 G .619(he sign of the ar)-3.119 F .619 (gument that is signi\214cant.)-.18 F -.15(Pa)5.619 G .619(ssing a ne) .15 F -.05(ga)-.15 G(ti).05 E .919 -.15(ve a)-.25 H -.18(rg).15 G .619 -(ument to a command that).18 F 1.019(acts in the forw)108 290.4 R 1.018 +(ument to a command that).18 F 1.019(acts in the forw)108 367.2 R 1.018 (ard direction \(e.g.,)-.1 F F1(kill\255line)3.518 E F0 3.518(\)c)C 1.018(auses that command to act in a backw)-3.518 F 1.018 -(ard direction.)-.1 F(Com-)6.018 E(mands whose beha)108 302.4 Q +(ard direction.)-.1 F(Com-)6.018 E(mands whose beha)108 379.2 Q (vior with ar)-.2 E(guments de)-.18 E(viates from this are noted belo) --.25 E -.65(w.)-.25 G .811(When a command is described as)108 319.2 R F4 +-.25 E -.65(w.)-.25 G .811(When a command is described as)108 396 R F4 (killing)3.311 E F0(te)3.311 E .811(xt, the te)-.15 F .811 (xt deleted is sa)-.15 F -.15(ve)-.2 G 3.311(df).15 G .812 (or possible future retrie)-3.311 F -.25(va)-.25 G 3.312(l\().25 G F4 -(yank-)-3.312 E(ing)108 331.2 Q F0 2.529(\). The)B .029(killed te)2.529 -F .029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F4 +(yank-)-3.312 E(ing)108 408 Q F0 2.529(\). The)B .029(killed te)2.529 F +.029(xt is sa)-.15 F -.15(ve)-.2 G 2.529(di).15 G 2.529(na)-2.529 G F4 .029(kill ring)B F0 5.029(.C)C(onsecuti)-5.029 E .329 -.15(ve k)-.25 H .029(ills cause the te).15 F .029(xt to be accumulated into one unit,) --.15 F .567(which can be yank)108 343.2 R .567(ed all at once.)-.1 F -.567(Commands which do not kill te)5.567 F .567 +-.15 F .567(which can be yank)108 420 R .567(ed all at once.)-.1 F .567 +(Commands which do not kill te)5.567 F .567 (xt separate the chunks of te)-.15 F .567(xt on the kill)-.15 F(ring.) -108 355.2 Q F1(Readline Initialization)87 372 Q F0 .091(Readline is cus\ -tomized by putting commands in an initialization \214le \(the)108 384 R -F4(inputr)2.591 E(c)-.37 E F0 2.591(\214le\). The)2.591 F .091 -(name of this \214le)2.591 F .196(is tak)108 396 R .196(en from the v) +108 432 Q F1(Readline Initialization)87 448.8 Q F0 .091(Readline is cus\ +tomized by putting commands in an initialization \214le \(the)108 460.8 +R F4(inputr)2.591 E(c)-.37 E F0 2.591(\214le\). The)2.591 F .091 +(name of this \214le)2.591 F .196(is tak)108 472.8 R .196(en from the v) -.1 F .196(alue of the)-.25 F F2(INPUTRC)2.696 E F0 -.25(va)2.446 G 2.696(riable. If).25 F .196(that v)2.696 F .196 (ariable is unset, the def)-.25 F .196(ault is)-.1 F F4(~/.inputr)2.696 E(c)-.37 E F0 5.196(.W).31 G .197(hen a)-5.196 F 1.034(program which us\ es the readline library starts up, the initialization \214le is read, a\ -nd the k)108 408 R 1.334 -.15(ey b)-.1 H 1.034(indings and).15 F -.25 -(va)108 420 S 1.149(riables are set.).25 F 1.149(There are only a fe) +nd the k)108 484.8 R 1.334 -.15(ey b)-.1 H 1.034(indings and).15 F -.25 +(va)108 496.8 S 1.149(riables are set.).25 F 1.149(There are only a fe) 6.149 F 3.649(wb)-.25 G 1.149(asic constructs allo)-3.649 F 1.15 (wed in the readline initialization \214le.)-.25 F(Blank)6.15 E .737 -(lines are ignored.)108 432 R .737(Lines be)5.737 F .737(ginning with a) --.15 F F1(#)3.237 E F0 .737(are comments.)3.237 F .737(Lines be)5.737 F -.737(ginning with a)-.15 F F1($)3.237 E F0 .736(indicate conditional) -3.236 F 2.5(constructs. Other)108 444 R(lines denote k)2.5 E .3 -.15 -(ey b)-.1 H(indings and v).15 E(ariable settings.)-.25 E .986(The def) -108 460.8 R .986(ault k)-.1 F -.15(ey)-.1 G .987 -(-bindings may be changed with an).15 F F4(inputr)3.497 E(c)-.37 E F0 -3.487(\214le. Other)3.797 F .987(programs that use this library may) -3.487 F(add their o)108 472.8 Q(wn commands and bindings.)-.25 E -.15 -(Fo)108 489.6 S 2.5(re).15 G(xample, placing)-2.65 E -(M\255Control\255u: uni)144 506.4 Q -.15(ve)-.25 G(rsal\255ar).15 E -(gument)-.18 E(or)108 518.4 Q(C\255Meta\255u: uni)144 530.4 Q -.15(ve) --.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 542.4 Q F4(inputr) -2.51 E(c)-.37 E F0 -.1(wo)2.81 G(uld mak).1 E 2.5(eM)-.1 G(\255C\255u e) --2.5 E -.15(xe)-.15 G(cute the readline command).15 E F4(univer)2.5 E -(sal\255ar)-.1 E(gument)-.37 E F0(.).68 E 1.261(The follo)108 559.2 R -1.261(wing symbolic character names are recognized:)-.25 F F4 -.4(RU) -3.761 G(BOUT).4 E F0(,)1.27 E F4(DEL)3.761 E F0(,).53 E F4(ESC)3.761 E -F0(,).72 E F4(LFD)3.761 E F0(,).28 E F4(NEWLINE)3.76 E F0(,).73 E F4 -(RET)3.76 E F0(,)1.27 E F4(RETURN)108 571.2 Q F0(,)1.1 E F4(SPC)2.5 E F0 -(,).72 E F4(SP)2.5 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 G(nd)-2.5 E F4 +(lines are ignored.)108 508.8 R .737(Lines be)5.737 F .737 +(ginning with a)-.15 F F1(#)3.237 E F0 .737(are comments.)3.237 F .737 +(Lines be)5.737 F .737(ginning with a)-.15 F F1($)3.237 E F0 .736 +(indicate conditional)3.236 F 2.5(constructs. Other)108 520.8 R +(lines denote k)2.5 E .3 -.15(ey b)-.1 H(indings and v).15 E +(ariable settings.)-.25 E .986(The def)108 537.6 R .986(ault k)-.1 F +-.15(ey)-.1 G .987(-bindings may be changed with an).15 F F4(inputr) +3.497 E(c)-.37 E F0 3.487(\214le. Other)3.797 F .987 +(programs that use this library may)3.487 F(add their o)108 549.6 Q +(wn commands and bindings.)-.25 E -.15(Fo)108 566.4 S 2.5(re).15 G +(xample, placing)-2.65 E(M\255Control\255u: uni)144 583.2 Q -.15(ve)-.25 +G(rsal\255ar).15 E(gument)-.18 E(or)108 595.2 Q(C\255Meta\255u: uni)144 +607.2 Q -.15(ve)-.25 G(rsal\255ar).15 E(gument)-.18 E(into the)108 619.2 +Q F4(inputr)2.51 E(c)-.37 E F0 -.1(wo)2.81 G(uld mak).1 E 2.5(eM)-.1 G +(\255C\255u e)-2.5 E -.15(xe)-.15 G(cute the readline command).15 E F4 +(univer)2.5 E(sal\255ar)-.1 E(gument)-.37 E F0(.).68 E 1.261(The follo) +108 636 R 1.261(wing symbolic character names are recognized:)-.25 F F4 +-.4(RU)3.761 G(BOUT).4 E F0(,)1.27 E F4(DEL)3.761 E F0(,).53 E F4(ESC) +3.761 E F0(,).72 E F4(LFD)3.761 E F0(,).28 E F4(NEWLINE)3.76 E F0(,).73 +E F4(RET)3.76 E F0(,)1.27 E F4(RETURN)108 648 Q F0(,)1.1 E F4(SPC)2.5 E +F0(,).72 E F4(SP)2.5 E -.3(AC)-.9 G(E).3 E F0 2.5(,a).73 G(nd)-2.5 E F4 -.5(TA)2.5 G(B).5 E F0(.).27 E .209 -(In addition to command names, readline allo)108 588 R .209(ws k)-.25 F --.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209 +(In addition to command names, readline allo)108 664.8 R .209(ws k)-.25 +F -.15(ey)-.1 G 2.709(st).15 G 2.709(ob)-2.709 G 2.709(eb)-2.709 G .209 (ound to a string that is inserted when the k)-2.709 F .509 -.15(ey i) --.1 H(s).15 E(pressed \(a)108 600 Q F4(macr)2.5 E(o)-.45 E F0(\).)A F1 -(Readline K)87 616.8 Q(ey Bindings)-.25 E F0 .366 -(The syntax for controlling k)108 628.8 R .666 -.15(ey b)-.1 H .366 +-.1 H(s).15 E(pressed \(a)108 676.8 Q F4(macr)2.5 E(o)-.45 E F0(\).)A F1 +(Readline K)87 693.6 Q(ey Bindings)-.25 E F0 .366 +(The syntax for controlling k)108 705.6 R .666 -.15(ey b)-.1 H .366 (indings in the).15 F F4(inputr)2.876 E(c)-.37 E F0 .366 (\214le is simple.)3.176 F .366(All that is required is the name of the) -5.366 F .263(command or the te)108 640.8 R .264(xt of a macro and a k) +5.366 F .263(command or the te)108 717.6 R .264(xt of a macro and a k) -.15 F .564 -.15(ey s)-.1 H .264(equence to which it should be bound.) .15 F .264(The name may be speci-)5.264 F .853(\214ed in one of tw)108 -652.8 R 3.353(ow)-.1 G .853(ays: as a symbolic k)-3.453 F 1.153 -.15 +729.6 R 3.353(ow)-.1 G .853(ays: as a symbolic k)-3.453 F 1.153 -.15 (ey n)-.1 H .853(ame, possibly with).15 F F4(Meta\255)3.353 E F0(or) 3.353 E F4(Contr)3.353 E(ol\255)-.45 E F0(pre\214x)3.353 E .853 -(es, or as a k)-.15 F -.15(ey)-.1 G(sequence.)108 664.8 Q .16 -(When using the form)108 681.6 R F1 -.1(ke)2.66 G(yname).1 E F0(:)A F4 -(function\255name).833 E F0(or)2.66 E F4(macr)2.66 E(o)-.45 E F0(,)A F4 --.1(ke)2.66 G(yname)-.2 E F0 .161(is the name of a k)2.84 F .461 -.15 -(ey s)-.1 H .161(pelled out in Eng-).15 F 2.5(lish. F)108 693.6 R(or e) --.15 E(xample:)-.15 E(Control-u: uni)144 717.6 Q -.15(ve)-.25 G -(rsal\255ar).15 E(gument)-.18 E(Meta-Rubout: backw)144 729.6 Q -(ard-kill-w)-.1 E(ord)-.1 E(GNU Bash 4.4)72 768 Q(2015 October 11) -141.235 E(37)190.395 E 0 Cg EP +(es, or as a k)-.15 F -.15(ey)-.1 G(GNU Bash 4.4)72 768 Q(2015 No) +136.385 E -.15(ve)-.15 G(mber 16).15 E(37)185.545 E 0 Cg EP %%Page: 38 38 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -(Control-o: "> output")144 84 Q .699(In the abo)108 100.8 R .998 -.15 -(ve ex)-.15 H(ample,).15 E/F1 10/Times-Italic@0 SF(C\255u)3.038 E F0 -.698(is bound to the function)3.448 F/F2 10/Times-Bold@0 SF(uni)3.198 E --.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(,)A F1(M\255DEL)3.878 E F0 -.698(is bound to the func-)3.728 F(tion)108 112.8 Q F2 -(backward\255kill\255w)2.758 E(ord)-.1 E F0 2.758(,a)C(nd)-2.758 E F1 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(sequence.)108 84 Q +.16(When using the form)108 100.8 R/F1 10/Times-Bold@0 SF -.1(ke)2.66 G +(yname).1 E F0(:)A/F2 10/Times-Italic@0 SF(function\255name).833 E F0 +(or)2.66 E F2(macr)2.66 E(o)-.45 E F0(,)A F2 -.1(ke)2.66 G(yname)-.2 E +F0 .161(is the name of a k)2.84 F .461 -.15(ey s)-.1 H .161 +(pelled out in Eng-).15 F 2.5(lish. F)108 112.8 R(or e)-.15 E(xample:) +-.15 E(Control-u: uni)144 136.8 Q -.15(ve)-.25 G(rsal\255ar).15 E +(gument)-.18 E(Meta-Rubout: backw)144 148.8 Q(ard-kill-w)-.1 E(ord)-.1 E +(Control-o: "> output")144 160.8 Q .699(In the abo)108 177.6 R .998 -.15 +(ve ex)-.15 H(ample,).15 E F2(C\255u)3.038 E F0 .698 +(is bound to the function)3.448 F F1(uni)3.198 E -.1(ve)-.1 G +(rsal\255ar).1 E(gument)-.1 E F0(,)A F2(M\255DEL)3.878 E F0 .698 +(is bound to the func-)3.728 F(tion)108 189.6 Q F1 +(backward\255kill\255w)2.758 E(ord)-.1 E F0 2.758(,a)C(nd)-2.758 E F2 (C\255o)2.598 E F0 .258(is bound to run the macro e)2.938 F .259 (xpressed on the right hand side \(that is, to)-.15 F(insert the te)108 -124.8 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0 -(into the line\).)2.5 E .056(In the second form,)108 141.6 R F2("k)2.556 -E(eyseq")-.1 E F0(:)A F1(function\255name).833 E F0(or)2.556 E F1(macr) -2.556 E(o)-.45 E F0(,)A F2 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055 -(fers from)-.25 F F2 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15 +201.6 Q(xt)-.15 E/F3 10/Courier@0 SF 6(>o)2.5 G(utput)-6 E F0 +(into the line\).)2.5 E .056(In the second form,)108 218.4 R F1("k)2.556 +E(eyseq")-.1 E F0(:)A F2(function\255name).833 E F0(or)2.556 E F2(macr) +2.556 E(o)-.45 E F0(,)A F1 -.1(ke)2.556 G(yseq).1 E F0(dif)2.555 E .055 +(fers from)-.25 F F1 -.1(ke)2.555 G(yname).1 E F0(abo)2.555 E .355 -.15 (ve i)-.15 H 2.555(nt).15 G .055(hat strings)-2.555 F 1.284 -(denoting an entire k)108 153.6 R 1.584 -.15(ey s)-.1 H 1.284(equence m\ +(denoting an entire k)108 230.4 R 1.584 -.15(ey s)-.1 H 1.284(equence m\ ay be speci\214ed by placing the sequence within double quotes.).15 F -(Some)6.284 E .386(GNU Emacs style k)108 165.6 R .686 -.15(ey e)-.1 H +(Some)6.284 E .386(GNU Emacs style k)108 242.4 R .686 -.15(ey e)-.1 H .385(scapes can be used, as in the follo).15 F .385(wing e)-.25 F .385 (xample, b)-.15 F .385(ut the symbolic character names)-.2 F -(are not recognized.)108 177.6 Q("\\C\255u": uni)144 201.6 Q -.15(ve) +(are not recognized.)108 254.4 Q("\\C\255u": uni)144 278.4 Q -.15(ve) -.25 G(rsal\255ar).15 E(gument)-.18 E -("\\C\255x\\C\255r": re\255read\255init\255\214le)144 213.6 Q -("\\e[11~": "Function K)144 225.6 Q .3 -.15(ey 1)-.25 H(").15 E .314 -(In this e)108 242.4 R(xample,)-.15 E F1(C\255u)2.654 E F0 .314(is ag) -3.064 F .315(ain bound to the function)-.05 F F2(uni)2.815 E -.1(ve)-.1 -G(rsal\255ar).1 E(gument)-.1 E F0(.)A F1 .315(C\255x C\255r)5.155 F F0 -.315(is bound to the func-)3.545 F(tion)108 254.4 Q F2 -.18(re)2.5 G -.18 E(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F1 +("\\C\255x\\C\255r": re\255read\255init\255\214le)144 290.4 Q +("\\e[11~": "Function K)144 302.4 Q .3 -.15(ey 1)-.25 H(").15 E .314 +(In this e)108 319.2 R(xample,)-.15 E F2(C\255u)2.654 E F0 .314(is ag) +3.064 F .315(ain bound to the function)-.05 F F1(uni)2.815 E -.1(ve)-.1 +G(rsal\255ar).1 E(gument)-.1 E F0(.)A F2 .315(C\255x C\255r)5.155 F F0 +.315(is bound to the func-)3.545 F(tion)108 331.2 Q F1 -.18(re)2.5 G +.18 E(ead\255init\255\214le)-.18 E F0 2.5(,a)C(nd)-2.5 E F2 (ESC [ 1 1 ~)3.01 E F0(is bound to insert the te)3.94 E(xt)-.15 E F3 (Function Key 1)2.5 E F0(.)A -(The full set of GNU Emacs style escape sequences is)108 271.2 Q F2 -<5c43ad>144 283.2 Q F0(control pre\214x)180 283.2 Q F2<5c4dad>144 295.2 -Q F0(meta pre\214x)180 295.2 Q F2(\\e)144 307.2 Q F0 -(an escape character)180 307.2 Q F2(\\\\)144 319.2 Q F0(backslash)180 -319.2 Q F2(\\")144 331.2 Q F0(literal ")180 331.2 Q F2<5c08>144 343.2 Q -F0(literal \010)180 343.2 Q(In addition to the GNU Emacs style escape s\ -equences, a second set of backslash escapes is a)108 360 Q -.25(va)-.2 G -(ilable:).25 E F2(\\a)144 372 Q F0(alert \(bell\))180 372 Q F2(\\b)144 -384 Q F0(backspace)180 384 Q F2(\\d)144 396 Q F0(delete)180 396 Q F2 -(\\f)144 408 Q F0(form feed)180 408 Q F2(\\n)144 420 Q F0(ne)180 420 Q -(wline)-.25 E F2(\\r)144 432 Q F0(carriage return)180 432 Q F2(\\t)144 -444 Q F0(horizontal tab)180 444 Q F2(\\v)144 456 Q F0 -.15(ve)180 456 S -(rtical tab).15 E F2(\\)144 468 Q F1(nnn)A F0 -(the eight-bit character whose v)180 468 Q(alue is the octal v)-.25 E -(alue)-.25 E F1(nnn)2.5 E F0(\(one to three digits\))2.5 E F2(\\x)144 -480 Q F1(HH)A F0(the eight-bit character whose v)180 480 Q -(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0 +(The full set of GNU Emacs style escape sequences is)108 348 Q F1 +<5c43ad>144 360 Q F0(control pre\214x)180 360 Q F1<5c4dad>144 372 Q F0 +(meta pre\214x)180 372 Q F1(\\e)144 384 Q F0(an escape character)180 384 +Q F1(\\\\)144 396 Q F0(backslash)180 396 Q F1(\\")144 408 Q F0 +(literal ")180 408 Q F1<5c08>144 420 Q F0(literal \010)180 420 Q(In add\ +ition to the GNU Emacs style escape sequences, a second set of backslas\ +h escapes is a)108 436.8 Q -.25(va)-.2 G(ilable:).25 E F1(\\a)144 448.8 +Q F0(alert \(bell\))180 448.8 Q F1(\\b)144 460.8 Q F0(backspace)180 +460.8 Q F1(\\d)144 472.8 Q F0(delete)180 472.8 Q F1(\\f)144 484.8 Q F0 +(form feed)180 484.8 Q F1(\\n)144 496.8 Q F0(ne)180 496.8 Q(wline)-.25 E +F1(\\r)144 508.8 Q F0(carriage return)180 508.8 Q F1(\\t)144 520.8 Q F0 +(horizontal tab)180 520.8 Q F1(\\v)144 532.8 Q F0 -.15(ve)180 532.8 S +(rtical tab).15 E F1(\\)144 544.8 Q F2(nnn)A F0 +(the eight-bit character whose v)180 544.8 Q(alue is the octal v)-.25 E +(alue)-.25 E F2(nnn)2.5 E F0(\(one to three digits\))2.5 E F1(\\x)144 +556.8 Q F2(HH)A F0(the eight-bit character whose v)180 556.8 Q +(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0 (\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E 1.142 -(When entering the te)108 496.8 R 1.141(xt of a macro, single or double\ +(When entering the te)108 573.6 R 1.141(xt of a macro, single or double\ quotes must be used to indicate a macro de\214nition.)-.15 F .089 -(Unquoted te)108 508.8 R .089(xt is assumed to be a function name.)-.15 +(Unquoted te)108 585.6 R .089(xt is assumed to be a function name.)-.15 F .09(In the macro body)5.089 F 2.59(,t)-.65 G .09 (he backslash escapes described abo)-2.59 F -.15(ve)-.15 G(are e)108 -520.8 Q 2.5(xpanded. Backslash)-.15 F(will quote an)2.5 E 2.5(yo)-.15 G +597.6 Q 2.5(xpanded. Backslash)-.15 F(will quote an)2.5 E 2.5(yo)-.15 G (ther character in the macro te)-2.5 E(xt, including " and \010.)-.15 E -F2(Bash)108 537.6 Q F0(allo)2.93 E .43(ws the current readline k)-.25 F +F1(Bash)108 614.4 Q F0(allo)2.93 E .43(ws the current readline k)-.25 F .73 -.15(ey b)-.1 H .429(indings to be displayed or modi\214ed with the) -.15 F F2(bind)2.929 E F0 -.2(bu)2.929 G .429(iltin command.).2 F .045 -(The editing mode may be switched during interacti)108 549.6 R .345 -.15 -(ve u)-.25 H .046(se by using the).15 F F22.546 E F0 .046 -(option to the)2.546 F F2(set)2.546 E F0 -.2(bu)2.546 G .046 -(iltin command).2 F(\(see)108 561.6 Q/F4 9/Times-Bold@0 SF(SHELL B)2.5 E -(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F2 -(Readline V)87 578.4 Q(ariables)-.92 E F0 .044(Readline has v)108 590.4 +.15 F F1(bind)2.929 E F0 -.2(bu)2.929 G .429(iltin command.).2 F .045 +(The editing mode may be switched during interacti)108 626.4 R .345 -.15 +(ve u)-.25 H .046(se by using the).15 F F12.546 E F0 .046 +(option to the)2.546 F F1(set)2.546 E F0 -.2(bu)2.546 G .046 +(iltin command).2 F(\(see)108 638.4 Q/F4 9/Times-Bold@0 SF(SHELL B)2.5 E +(UIL)-.09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1 +(Readline V)87 655.2 Q(ariables)-.92 E F0 .044(Readline has v)108 667.2 R .043(ariables that can be used to further customize its beha)-.25 F (vior)-.2 E 5.043(.A)-.55 G -.25(va)-2.5 G .043 -(riable may be set in the).25 F F1(inpu-)2.553 E(tr)108 602.4 Q(c)-.37 E -F0(\214le with a statement of the form)2.81 E F2(set)144 619.2 Q F1 +(riable may be set in the).25 F F2(inpu-)2.553 E(tr)108 679.2 Q(c)-.37 E +F0(\214le with a statement of the form)2.81 E F1(set)144 696 Q F2 (variable\255name value)2.5 E F0 .79(Except where noted, readline v)108 -636 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F(alues) --.25 E F2(On)3.29 E F0(or)3.29 E F2(Off)3.29 E F0 .79(\(without re)3.29 -F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-)5.79 E .449(nized v) -108 648 R .448(ariable names are ignored.)-.25 F .448(When a v)5.448 F -.448(ariable v)-.25 F .448(alue is read, empty or null v)-.25 F .448 -(alues, "on" \(case-insensi-)-.25 F(ti)108 660 Q -.15(ve)-.25 G .467 -(\), and "1" are equi).15 F -.25(va)-.25 G .468(lent to).25 F F2(On) -2.968 E F0 5.468(.A)C .468(ll other v)-5.468 F .468(alues are equi)-.25 -F -.25(va)-.25 G .468(lent to).25 F F2(Off)2.968 E F0 5.468(.T)C .468 -(he v)-5.468 F .468(ariables and their def)-.25 F(ault)-.1 E -.25(va)108 -672 S(lues are:).25 E F2(bell\255style \(audible\))108 688.8 Q F0 .011 -(Controls what happens when readline w)144 700.8 R .011 -(ants to ring the terminal bell.)-.1 F .01(If set to)5.01 F F2(none)2.51 -E F0 2.51(,r)C .01(eadline ne)-2.51 F -.15(ve)-.25 G(r).15 E .94 -(rings the bell.)144 712.8 R .94(If set to)5.94 F F2(visible)3.44 E F0 -3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25(va) --.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F2(audible)3.44 E F0(,)A -(readline attempts to ring the terminal')144 724.8 Q 2.5(sb)-.55 G(ell.) --2.5 E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(38)190.395 E 0 Cg -EP +712.8 R .79(ariables can tak)-.25 F 3.29(et)-.1 G .79(he v)-3.29 F +(alues)-.25 E F1(On)3.29 E F0(or)3.29 E F1(Off)3.29 E F0 .79 +(\(without re)3.29 F -.05(ga)-.15 G .79(rd to case\).).05 F(Unrecog-) +5.79 E 2.393(nized v)108 724.8 R 2.393(ariable names are ignored.)-.25 F +2.393(When a v)7.393 F 2.393(ariable v)-.25 F 2.392 +(alue is read, empty or null v)-.25 F 2.392(alues, "on" \(case-)-.25 F +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(38)185.545 E 0 Cg EP %%Page: 39 39 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(bind\255tty\255special\255chars \(On\))108 84 Q F0 .056(If set to)144 -96 R F1(On)2.556 E F0 2.556(,r)C .056(eadline attempts to bind the cont\ -rol characters treated specially by the k)-2.556 F(ernel')-.1 E 2.555 -(st)-.55 G(ermi-)-2.555 E(nal dri)144 108 Q -.15(ve)-.25 G 2.5(rt).15 G -2.5(ot)-2.5 G(heir readline equi)-2.5 E -.25(va)-.25 G(lents.).25 E F1 -(color)108 120 Q(ed\255completion\255pr)-.18 E(e\214x \(Off\))-.18 E F0 -.515(If set to)144 132 R F1(On)3.015 E F0 3.015(,w)C .515(hen listing c\ -ompletions, readline displays the common pre\214x of the set of possibl\ -e)-3.015 F 2.936(completions using a dif)144 144 R 2.936(ferent color) --.25 F 7.936(.T)-.55 G 2.936(he color de\214nitions are tak)-7.936 F -2.935(en from the v)-.1 F 2.935(alue of the)-.25 F F1(LS_COLORS)144 156 -Q F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1(color)108 168 Q -(ed\255stats \(Off\))-.18 E F0 1.579(If set to)144 180 R F1(On)4.079 E -F0 4.079(,r)C 1.579(eadline displays possible completions using dif) --4.079 F 1.58(ferent colors to indicate their \214le)-.25 F 2.5 -(type. The)144 192 R(color de\214nitions are tak)2.5 E(en from the v)-.1 -E(alue of the)-.25 E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E -(ariable.)-.25 E F1(comment\255begin \(`)108 204 Q(`#')-.63 E('\))-.63 E -F0 .885(The string that is inserted when the readline)144 216 R F1 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(insensiti)108 84 Q +-.15(ve)-.25 G .635(\), and "1" are equi).15 F -.25(va)-.25 G .636 +(lent to).25 F/F1 10/Times-Bold@0 SF(On)3.136 E F0 5.636(.A)C .636 +(ll other v)-5.636 F .636(alues are equi)-.25 F -.25(va)-.25 G .636 +(lent to).25 F F1(Off)3.136 E F0 5.636(.T)C .636(he v)-5.636 F .636 +(ariables and their)-.25 F(def)108 96 Q(ault v)-.1 E(alues are:)-.25 E +F1(bell\255style \(audible\))108 112.8 Q F0 .011 +(Controls what happens when readline w)144 124.8 R .011 +(ants to ring the terminal bell.)-.1 F .01(If set to)5.01 F F1(none)2.51 +E F0 2.51(,r)C .01(eadline ne)-2.51 F -.15(ve)-.25 G(r).15 E .94 +(rings the bell.)144 136.8 R .94(If set to)5.94 F F1(visible)3.44 E F0 +3.44(,r)C .94(eadline uses a visible bell if one is a)-3.44 F -.25(va) +-.2 G 3.44(ilable. If).25 F .94(set to)3.44 F F1(audible)3.44 E F0(,)A +(readline attempts to ring the terminal')144 148.8 Q 2.5(sb)-.55 G(ell.) +-2.5 E F1(bind\255tty\255special\255chars \(On\))108 160.8 Q F0 .056 +(If set to)144 172.8 R F1(On)2.556 E F0 2.556(,r)C .056(eadline attempt\ +s to bind the control characters treated specially by the k)-2.556 F +(ernel')-.1 E 2.555(st)-.55 G(ermi-)-2.555 E(nal dri)144 184.8 Q -.15 +(ve)-.25 G 2.5(rt).15 G 2.5(ot)-2.5 G(heir readline equi)-2.5 E -.25(va) +-.25 G(lents.).25 E F1(color)108 196.8 Q(ed\255completion\255pr)-.18 E +(e\214x \(Off\))-.18 E F0 .515(If set to)144 208.8 R F1(On)3.015 E F0 +3.015(,w)C .515(hen listing completions, readline displays the common p\ +re\214x of the set of possible)-3.015 F 2.936(completions using a dif) +144 220.8 R 2.936(ferent color)-.25 F 7.936(.T)-.55 G 2.936 +(he color de\214nitions are tak)-7.936 F 2.935(en from the v)-.1 F 2.935 +(alue of the)-.25 F F1(LS_COLORS)144 232.8 Q F0(en)2.5 E(vironment v)-.4 +E(ariable.)-.25 E F1(color)108 244.8 Q(ed\255stats \(Off\))-.18 E F0 +1.579(If set to)144 256.8 R F1(On)4.079 E F0 4.079(,r)C 1.579 +(eadline displays possible completions using dif)-4.079 F 1.58 +(ferent colors to indicate their \214le)-.25 F 2.5(type. The)144 268.8 R +(color de\214nitions are tak)2.5 E(en from the v)-.1 E(alue of the)-.25 +E F1(LS_COLORS)2.5 E F0(en)2.5 E(vironment v)-.4 E(ariable.)-.25 E F1 +(comment\255begin \(`)108 280.8 Q(`#')-.63 E('\))-.63 E F0 .885 +(The string that is inserted when the readline)144 292.8 R F1 (insert\255comment)3.385 E F0 .884(command is e)3.384 F -.15(xe)-.15 G -3.384(cuted. This).15 F(com-)3.384 E(mand is bound to)144 228 Q F1 +3.384(cuted. This).15 F(com-)3.384 E(mand is bound to)144 304.8 Q F1 (M\255#)2.5 E F0(in emacs mode and to)2.5 E F1(#)2.5 E F0 -(in vi command mode.)2.5 E F1(completion\255ignor)108 240 Q -(e\255case \(Off\))-.18 E F0(If set to)144 252 Q F1(On)2.5 E F0 2.5(,r)C -(eadline performs \214lename matching and completion in a case\255insen\ -siti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1(completion\255pr)108 -264 Q(e\214x\255display\255length \(0\))-.18 E F0 .829(The length in ch\ -aracters of the common pre\214x of a list of possible completions that \ -is displayed)144 276 R 1.275(without modi\214cation.)144 288 R 1.275 -(When set to a v)6.275 F 1.274(alue greater than zero, common pre\214x) --.25 F 1.274(es longer than this)-.15 F -.25(va)144 300 S(lue are repla\ -ced with an ellipsis when displaying possible completions.).25 E F1 -(completion\255query\255items \(100\))108 312 Q F0 .529 -(This determines when the user is queried about vie)144 324 R .53 +(in vi command mode.)2.5 E F1(completion\255ignor)108 316.8 Q +(e\255case \(Off\))-.18 E F0(If set to)144 328.8 Q F1(On)2.5 E F0 2.5 +(,r)C(eadline performs \214lename matching and completion in a case\255\ +insensiti)-2.5 E .3 -.15(ve f)-.25 H(ashion.).05 E F1(completion\255pr) +108 340.8 Q(e\214x\255display\255length \(0\))-.18 E F0 .829(The length\ + in characters of the common pre\214x of a list of possible completions\ + that is displayed)144 352.8 R 1.275(without modi\214cation.)144 364.8 R +1.275(When set to a v)6.275 F 1.274 +(alue greater than zero, common pre\214x)-.25 F 1.274 +(es longer than this)-.15 F -.25(va)144 376.8 S(lue are replaced with a\ +n ellipsis when displaying possible completions.).25 E F1 +(completion\255query\255items \(100\))108 388.8 Q F0 .529 +(This determines when the user is queried about vie)144 400.8 R .53 (wing the number of possible completions gen-)-.25 F .561(erated by the) -144 336 R F1(possible\255completions)3.061 E F0 3.061(command. It)3.061 -F .561(may be set to an)3.061 F 3.06(yi)-.15 G(nte)-3.06 E .56(ger v) --.15 F .56(alue greater than or)-.25 F .782(equal to zero.)144 348 R -.783(If the number of possible completions is greater than or equal to \ -the v)5.782 F .783(alue of this)-.25 F -.25(va)144 360 S .237 +144 412.8 R F1(possible\255completions)3.061 E F0 3.061(command. It) +3.061 F .561(may be set to an)3.061 F 3.06(yi)-.15 G(nte)-3.06 E .56 +(ger v)-.15 F .56(alue greater than or)-.25 F .782(equal to zero.)144 +424.8 R .783(If the number of possible completions is greater than or e\ +qual to the v)5.782 F .783(alue of this)-.25 F -.25(va)144 436.8 S .237 (riable, the user is ask).25 F .237(ed whether or not he wishes to vie) -.1 F 2.737(wt)-.25 G .237(hem; otherwise the)-2.737 F 2.737(ya)-.15 G -.237(re simply listed)-2.737 F(on the terminal.)144 372 Q F1(con)108 384 -Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .612(If set to)144 396 R F1(On) -3.112 E F0 3.112(,r)C .613(eadline will con)-3.112 F -.15(ve)-.4 G .613 -(rt characters with the eighth bit set to an ASCII k).15 F .913 -.15 -(ey s)-.1 H .613(equence by).15 F .541 +.237(re simply listed)-2.737 F(on the terminal.)144 448.8 Q F1(con)108 +460.8 Q -.1(ve)-.4 G(rt\255meta \(On\)).1 E F0 .612(If set to)144 472.8 +R F1(On)3.112 E F0 3.112(,r)C .613(eadline will con)-3.112 F -.15(ve)-.4 +G .613(rt characters with the eighth bit set to an ASCII k).15 F .913 +-.15(ey s)-.1 H .613(equence by).15 F .541 (stripping the eighth bit and pre\214xing an escape character \(in ef) -144 408 R .541(fect, using escape as the)-.25 F/F2 10/Times-Italic@0 SF -.541(meta pr)3.041 F(e-)-.37 E<8c78>144 420 Q F0(\).)A F1 -(disable\255completion \(Off\))108 432 Q F0 .038(If set to)144 444 R F1 -(On)2.538 E F0 2.538(,r)C .038(eadline will inhibit w)-2.538 F .038 +144 484.8 R .541(fect, using escape as the)-.25 F/F2 10/Times-Italic@0 +SF .541(meta pr)3.041 F(e-)-.37 E<8c78>144 496.8 Q F0(\).)A F1 +(disable\255completion \(Off\))108 508.8 Q F0 .038(If set to)144 520.8 R +F1(On)2.538 E F0 2.538(,r)C .038(eadline will inhibit w)-2.538 F .038 (ord completion.)-.1 F .038 (Completion characters will be inserted into the)5.038 F(line as if the) -144 456 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E F0 -(.)A F1(editing\255mode \(emacs\))108 468 Q F0 .142 -(Controls whether readline be)144 480 R .141(gins with a set of k)-.15 F -.441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.641 E F0 +144 532.8 Q 2.5(yh)-.15 G(ad been mapped to)-2.5 E F1(self-insert)2.5 E +F0(.)A F1(editing\255mode \(emacs\))108 544.8 Q F0 .142 +(Controls whether readline be)144 556.8 R .141(gins with a set of k)-.15 +F .441 -.15(ey b)-.1 H .141(indings similar to).15 F F2(Emacs)2.641 E F0 (or)2.641 E F2(vi)2.641 E F0(.)A F1(editing\255mode)5.141 E F0 -(can be set to either)144 492 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E -F0(.)A F1(echo\255contr)108 504 Q(ol\255characters \(On\))-.18 E F0 1.21 -(When set to)144 516 R F1(On)3.71 E F0 3.71(,o)C 3.71(no)-3.71 G 1.211 -(perating systems that indicate the)-3.71 F 3.711(ys)-.15 G 1.211 +(can be set to either)144 568.8 Q F1(emacs)2.5 E F0(or)2.5 E F1(vi)2.5 E +F0(.)A F1(echo\255contr)108 580.8 Q(ol\255characters \(On\))-.18 E F0 +1.21(When set to)144 592.8 R F1(On)3.71 E F0 3.71(,o)C 3.71(no)-3.71 G +1.211(perating systems that indicate the)-3.71 F 3.711(ys)-.15 G 1.211 (upport it, readline echoes a character)-3.711 F -(corresponding to a signal generated from the k)144 528 Q -.15(ey)-.1 G -(board.).15 E F1(enable\255brack)108 540 Q(eted\255paste \(Off\))-.1 E -F0 1.222(When set to)144 552 R F1(On)3.721 E F0 3.721(,r)C 1.221 +(corresponding to a signal generated from the k)144 604.8 Q -.15(ey)-.1 +G(board.).15 E F1(enable\255brack)108 616.8 Q(eted\255paste \(Off\))-.1 +E F0 1.222(When set to)144 628.8 R F1(On)3.721 E F0 3.721(,r)C 1.221 (eadline will con\214gure the terminal in a w)-3.721 F 1.221 (ay that will enable it to insert each)-.1 F .353 -(paste into the editing b)144 564 R(uf)-.2 E .353(fer as a single strin\ -g of characters, instead of treating each character as if)-.25 F .544 -(it had been read from the k)144 576 R -.15(ey)-.1 G 3.043(board. This) -.15 F .543(can pre)3.043 F -.15(ve)-.25 G .543 +(paste into the editing b)144 640.8 R(uf)-.2 E .353(fer as a single str\ +ing of characters, instead of treating each character as if)-.25 F .544 +(it had been read from the k)144 652.8 R -.15(ey)-.1 G 3.043 +(board. This).15 F .543(can pre)3.043 F -.15(ve)-.25 G .543 (nt pasted characters from being interpreted as).15 F(editing commands.) -144 588 Q F1(enable\255k)108 600 Q(eypad \(Off\))-.1 E F0 .892 -(When set to)144 612 R F1(On)3.393 E F0 3.393(,r)C .893 +144 664.8 Q F1(enable\255k)108 676.8 Q(eypad \(Off\))-.1 E F0 .892 +(When set to)144 688.8 R F1(On)3.393 E F0 3.393(,r)C .893 (eadline will try to enable the application k)-3.393 F -.15(ey)-.1 G .893(pad when it is called.).15 F .893(Some sys-)5.893 F -(tems need this to enable the arro)144 624 Q 2.5(wk)-.25 G -.15(ey)-2.6 -G(s.).15 E F1(enable\255meta\255k)108 636 Q(ey \(On\))-.1 E F0 .64 -(When set to)144 648 R F1(On)3.14 E F0 3.14(,r)C .64 -(eadline will try to enable an)-3.14 F 3.14(ym)-.15 G .64 -(eta modi\214er k)-3.14 F .94 -.15(ey t)-.1 H .64 -(he terminal claims to support).15 F(when it is called.)144 660 Q -(On man)5 E 2.5(yt)-.15 G(erminals, the meta k)-2.5 E .3 -.15(ey i)-.1 H -2.5(su).15 G(sed to send eight-bit characters.)-2.5 E F1 -(expand\255tilde \(Off\))108 672 Q F0(If set to)144 684 Q F1(On)2.5 E F0 -2.5(,t)C(ilde e)-2.5 E(xpansion is performed when readline attempts w) --.15 E(ord completion.)-.1 E F1(history\255pr)108 696 Q(eser)-.18 E -.1 -(ve)-.1 G(\255point \(Off\)).1 E F0 1.338(If set to)144 708 R F1(On) -3.838 E F0 3.838(,t)C 1.338(he history code attempts to place point at \ -the same location on each history line)-3.838 F(retrie)144 720 Q -.15 -(ve)-.25 G 2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G -(ious-history).15 E F0(or)2.5 E F1(next-history)2.5 E F0(.)A -(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(39)190.395 E 0 Cg EP +(tems need this to enable the arro)144 700.8 Q 2.5(wk)-.25 G -.15(ey) +-2.6 G(s.).15 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G +(mber 16).15 E(39)185.545 E 0 Cg EP %%Page: 40 40 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(history\255size \(unset\))108 84 Q F0 .949 -(Set the maximum number of history entries sa)144 96 R -.15(ve)-.2 G +SF(enable\255meta\255k)108 84 Q(ey \(On\))-.1 E F0 .64(When set to)144 +96 R F1(On)3.14 E F0 3.14(,r)C .64(eadline will try to enable an)-3.14 F +3.14(ym)-.15 G .64(eta modi\214er k)-3.14 F .94 -.15(ey t)-.1 H .64 +(he terminal claims to support).15 F(when it is called.)144 108 Q +(On man)5 E 2.5(yt)-.15 G(erminals, the meta k)-2.5 E .3 -.15(ey i)-.1 H +2.5(su).15 G(sed to send eight-bit characters.)-2.5 E F1 +(expand\255tilde \(Off\))108 120 Q F0(If set to)144 132 Q F1(On)2.5 E F0 +2.5(,t)C(ilde e)-2.5 E(xpansion is performed when readline attempts w) +-.15 E(ord completion.)-.1 E F1(history\255pr)108 144 Q(eser)-.18 E -.1 +(ve)-.1 G(\255point \(Off\)).1 E F0 1.338(If set to)144 156 R F1(On) +3.838 E F0 3.838(,t)C 1.338(he history code attempts to place point at \ +the same location on each history line)-3.838 F(retrie)144 168 Q -.15 +(ve)-.25 G 2.5(dw).15 G(ith)-2.5 E F1(pr)2.5 E -.15(ev)-.18 G +(ious-history).15 E F0(or)2.5 E F1(next-history)2.5 E F0(.)A F1 +(history\255size \(unset\))108 180 Q F0 .949 +(Set the maximum number of history entries sa)144 192 R -.15(ve)-.2 G 3.448(di).15 G 3.448(nt)-3.448 G .948(he history list.)-3.448 F .948 (If set to zero, an)5.948 F 3.448(ye)-.15 G(xisting)-3.598 E .482 -(history entries are deleted and no ne)144 108 R 2.982(we)-.25 G .483 +(history entries are deleted and no ne)144 204 R 2.982(we)-.25 G .483 (ntries are sa)-2.982 F -.15(ve)-.2 G 2.983(d. If).15 F .483(set to a v) 2.983 F .483(alue less than zero, the num-)-.25 F -(ber of history entries is not limited.)144 120 Q(By def)5 E +(ber of history entries is not limited.)144 216 Q(By def)5 E (ault, the number of history entries is not limited.)-.1 E F1 -(horizontal\255scr)108 132 Q(oll\255mode \(Off\))-.18 E F0 .449 -(When set to)144 144 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E .448 +(horizontal\255scr)108 228 Q(oll\255mode \(Off\))-.18 E F0 .449 +(When set to)144 240 R F1(On)2.949 E F0 2.949(,m)C(ak)-2.949 E .448 (es readline use a single line for display)-.1 F 2.948(,s)-.65 G .448 (crolling the input horizontally on a)-2.948 F 1.194(single screen line\ when it becomes longer than the screen width rather than wrapping to a\ - ne)144 156 R(w)-.25 E(line.)144 168 Q F1(input\255meta \(Off\))108 180 -Q F0 .228(If set to)144 192 R F1(On)2.728 E F0 2.728(,r)C .227(eadline \ + ne)144 252 R(w)-.25 E(line.)144 264 Q F1(input\255meta \(Off\))108 276 +Q F0 .228(If set to)144 288 R F1(On)2.728 E F0 2.728(,r)C .227(eadline \ will enable eight-bit input \(that is, it will not strip the high bit f\ -rom the char)-2.728 F(-)-.2 E .956(acters it reads\), re)144 204 R -.05 +rom the char)-2.728 F(-)-.2 E .956(acters it reads\), re)144 300 R -.05 (ga)-.15 G .956(rdless of what the terminal claims it can support.).05 F .957(The name)5.956 F F1(meta\255\215ag)3.457 E F0 .957(is a)3.457 F -(synon)144 216 Q(ym for this v)-.15 E(ariable.)-.25 E F1(isear)108 228 Q +(synon)144 312 Q(ym for this v)-.15 E(ariable.)-.25 E F1(isear)108 324 Q (ch\255terminators \(`)-.18 E(`C\255[C\255J')-.63 E('\))-.63 E F0 .439(\ The string of characters that should terminate an incremental search wi\ -thout subsequently e)144 240 R -.15(xe)-.15 G(cut-).15 E .934 -(ing the character as a command.)144 252 R .935(If this v)5.935 F .935 +thout subsequently e)144 336 R -.15(xe)-.15 G(cut-).15 E .934 +(ing the character as a command.)144 348 R .935(If this v)5.935 F .935 (ariable has not been gi)-.25 F -.15(ve)-.25 G 3.435(nav).15 G .935 (alue, the characters)-3.685 F/F2 10/Times-Italic@0 SF(ESC)3.435 E F0 -(and)144 264 Q F2(C\255J)2.5 E F0(will terminate an incremental search.) -2.5 E F1 -.1(ke)108 276 S(ymap \(emacs\)).1 E F0 2.021 -(Set the current readline k)144 288 R -.15(ey)-.1 G 4.521(map. The).15 F +(and)144 360 Q F2(C\255J)2.5 E F0(will terminate an incremental search.) +2.5 E F1 -.1(ke)108 372 S(ymap \(emacs\)).1 E F0 2.021 +(Set the current readline k)144 384 R -.15(ey)-.1 G 4.521(map. The).15 F 2.021(set of v)4.521 F 2.021(alid k)-.25 F -.15(ey)-.1 G 2.021 (map names is).15 F F2 2.02(emacs, emacs\255standar)4.52 F(d,)-.37 E -.068(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 300 R F0 2.568 +.068(emacs\255meta, emacs\255ctlx, vi, vi\255command)144 396 R F0 2.568 (,a)C(nd)-2.568 E F2(vi\255insert)2.568 E F0(.).68 E F2(vi)5.068 E F0 .068(is equi)2.568 F -.25(va)-.25 G .068(lent to).25 F F2(vi\255command) -2.569 E F0(;)A F2(emacs)2.569 E F0 1.544(is equi)144 312 R -.25(va)-.25 +2.569 E F0(;)A F2(emacs)2.569 E F0 1.544(is equi)144 408 R -.25(va)-.25 G 1.544(lent to).25 F F2(emacs\255standar)4.044 E(d)-.37 E F0 6.544(.T)C 1.544(he def)-6.544 F 1.544(ault v)-.1 F 1.544(alue is)-.25 F F2(emacs) 4.044 E F0 4.044(;t).27 G 1.544(he v)-4.044 F 1.544(alue of)-.25 F F1 -(editing\255mode)4.043 E F0(also)4.043 E(af)144 324 Q(fects the def)-.25 +(editing\255mode)4.043 E F0(also)4.043 E(af)144 420 Q(fects the def)-.25 E(ault k)-.1 E -.15(ey)-.1 G(map.).15 E F1 -(emacs\255mode\255string \(@\))108 336 Q F0 .051(This string is display\ +(emacs\255mode\255string \(@\))108 432 Q F0 .051(This string is display\ ed immediately before the last line of the primary prompt when emacs ed\ -iting)144 348 R .293(mode is acti)144 360 R -.15(ve)-.25 G 5.293(.T).15 +iting)144 444 R .293(mode is acti)144 456 R -.15(ve)-.25 G 5.293(.T).15 G .293(he v)-5.293 F .293(alue is e)-.25 F .293(xpanded lik)-.15 F 2.793 (eak)-.1 G .593 -.15(ey b)-2.893 H .293 -(inding, so the standard set of meta- and control).15 F(pre\214x)144 372 +(inding, so the standard set of meta- and control).15 F(pre\214x)144 468 Q .601(es and backslash escape sequences is a)-.15 F -.25(va)-.2 G 3.101 (ilable. Use).25 F .601(the \\1 and \\2 escapes to be)3.101 F .602 (gin and end)-.15 F .019(sequences of non-printing characters, which ca\ -n be used to embed a terminal control sequence into)144 384 R -(the mode string.)144 396 Q F1 -.1(ke)108 408 S(yseq\255timeout \(500\)) -.1 E F0 .367(Speci\214es the duration)144 420 R F2 -.37(re)2.867 G +n be used to embed a terminal control sequence into)144 480 R +(the mode string.)144 492 Q F1 -.1(ke)108 504 S(yseq\255timeout \(500\)) +.1 E F0 .367(Speci\214es the duration)144 516 R F2 -.37(re)2.867 G (adline).37 E F0 .367(will w)2.867 F .367 (ait for a character when reading an ambiguous k)-.1 F .668 -.15(ey s) --.1 H(equence).15 E 1.356(\(one that can form a complete k)144 432 R +-.1 H(equence).15 E 1.356(\(one that can form a complete k)144 528 R 1.656 -.15(ey s)-.1 H 1.356(equence using the input read so f).15 F(ar) -.1 E 3.856(,o)-.4 G 3.856(rc)-3.856 G 1.355(an tak)-3.856 F 3.855(ea) --.1 G(dditional)-3.855 E .32(input to complete a longer k)144 444 R .62 +-.1 G(dditional)-3.855 E .32(input to complete a longer k)144 540 R .62 -.15(ey s)-.1 H 2.82(equence\). If).15 F .32(no input is recei)2.82 F -.15(ve)-.25 G 2.82(dw).15 G .32(ithin the timeout,)-2.82 F F2 -.37(re) -2.82 G(adline).37 E F0(will)2.82 E .907(use the shorter b)144 456 R .907 +2.82 G(adline).37 E F0(will)2.82 E .907(use the shorter b)144 552 R .907 (ut complete k)-.2 F 1.207 -.15(ey s)-.1 H 3.407(equence. The).15 F -.25 (va)3.407 G .907(lue is speci\214ed in milliseconds, so a v).25 F .906 -(alue of)-.25 F .05(1000 means that)144 468 R F2 -.37(re)2.55 G(adline) +(alue of)-.25 F .05(1000 means that)144 564 R F2 -.37(re)2.55 G(adline) .37 E F0 .05(will w)2.55 F .05(ait one second for additional input.)-.1 F .05(If this v)5.05 F .05(ariable is set to a v)-.25 F(alue)-.25 E .051 -(less than or equal to zero, or to a non-numeric v)144 480 R(alue,)-.25 +(less than or equal to zero, or to a non-numeric v)144 576 R(alue,)-.25 E F2 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051 (ait until another k)-.1 F .351 -.15(ey i)-.1 H 2.551(sp).15 G(ressed) --2.551 E(to decide which k)144 492 Q .3 -.15(ey s)-.1 H -(equence to complete.).15 E F1(mark\255dir)108 504 Q(ectories \(On\)) --.18 E F0(If set to)144 516 Q F1(On)2.5 E F0 2.5(,c)C +-2.551 E(to decide which k)144 588 Q .3 -.15(ey s)-.1 H +(equence to complete.).15 E F1(mark\255dir)108 600 Q(ectories \(On\)) +-.18 E F0(If set to)144 612 Q F1(On)2.5 E F0 2.5(,c)C (ompleted directory names ha)-2.5 E .3 -.15(ve a s)-.2 H(lash appended.) -.15 E F1(mark\255modi\214ed\255lines \(Off\))108 528 Q F0(If set to)144 -540 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b) +.15 E F1(mark\255modi\214ed\255lines \(Off\))108 624 Q F0(If set to)144 +636 Q F1(On)2.5 E F0 2.5(,h)C(istory lines that ha)-2.5 E .3 -.15(ve b) -.2 H(een modi\214ed are displayed with a preceding asterisk \().15 E F1 -(*)A F0(\).)A F1(mark\255symlink)108 552 Q(ed\255dir)-.1 E -(ectories \(Off\))-.18 E F0 .175(If set to)144 564 R F1(On)2.675 E F0 +(*)A F0(\).)A F1(mark\255symlink)108 648 Q(ed\255dir)-.1 E +(ectories \(Off\))-.18 E F0 .175(If set to)144 660 R F1(On)2.675 E F0 2.675(,c)C .175 (ompleted names which are symbolic links to directories ha)-2.675 F .475 --.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 576 +-.15(ve a s)-.2 H .175(lash appended \(sub-).15 F(ject to the v)144 672 Q(alue of)-.25 E F1(mark\255dir)2.5 E(ectories)-.18 E F0(\).)A F1 -(match\255hidden\255\214les \(On\))108 588 Q F0 .193(This v)144 600 R +(match\255hidden\255\214les \(On\))108 684 Q F0 .193(This v)144 696 R .193(ariable, when set to)-.25 F F1(On)2.693 E F0 2.693(,c)C .192 (auses readline to match \214les whose names be)-2.693 F .192 (gin with a `.)-.15 F 2.692('\()-.7 G(hidden)-2.692 E .456 -(\214les\) when performing \214lename completion.)144 612 R .456 +(\214les\) when performing \214lename completion.)144 708 R .456 (If set to)5.456 F F1(Off)2.956 E F0 2.956(,t)C .456(he leading `.) -2.956 F 2.956('m)-.7 G .457(ust be supplied by the)-2.956 F -(user in the \214lename to be completed.)144 624 Q F1 -(menu\255complete\255display\255pr)108 636 Q(e\214x \(Off\))-.18 E F0 -1.586(If set to)144 648 R F1(On)4.086 E F0 4.086(,m)C 1.585(enu complet\ -ion displays the common pre\214x of the list of possible completions) --4.086 F(\(which may be empty\) before c)144 660 Q -(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 672 Q F0 -.506(If set to)144 684 R F1(On)3.006 E F0 3.006(,r)C .507(eadline will \ -display characters with the eighth bit set directly rather than as a me\ -ta-)-3.006 F(pre\214x)144 696 Q(ed escape sequence.)-.15 E(GNU Bash 4.4) -72 768 Q(2015 October 11)141.235 E(40)190.395 E 0 Cg EP +(user in the \214lename to be completed.)144 720 Q(GNU Bash 4.4)72 768 Q +(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(40)185.545 E 0 Cg EP %%Page: 41 41 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(page\255completions \(On\))108 84 Q F0 .809(If set to)144 96 R F1(On) +SF(menu\255complete\255display\255pr)108 84 Q(e\214x \(Off\))-.18 E F0 +1.586(If set to)144 96 R F1(On)4.086 E F0 4.086(,m)C 1.585(enu completi\ +on displays the common pre\214x of the list of possible completions) +-4.086 F(\(which may be empty\) before c)144 108 Q +(ycling through the list.)-.15 E F1(output\255meta \(Off\))108 120 Q F0 +.506(If set to)144 132 R F1(On)3.006 E F0 3.006(,r)C .507(eadline will \ +display characters with the eighth bit set directly rather than as a me\ +ta-)-3.006 F(pre\214x)144 144 Q(ed escape sequence.)-.15 E F1 +(page\255completions \(On\))108 156 Q F0 .809(If set to)144 168 R F1(On) 3.308 E F0 3.308(,r)C .808(eadline uses an internal)-3.308 F/F2 10 /Times-Italic@0 SF(mor)3.308 E(e)-.37 E F0(-lik)A 3.308(ep)-.1 G .808 (ager to display a screenful of possible comple-)-3.308 F -(tions at a time.)144 108 Q F1 -(print\255completions\255horizontally \(Off\))108 120 Q F0 1.318 -(If set to)144 132 R F1(On)3.818 E F0 3.818(,r)C 1.319(eadline will dis\ +(tions at a time.)144 180 Q F1 +(print\255completions\255horizontally \(Off\))108 192 Q F0 1.318 +(If set to)144 204 R F1(On)3.818 E F0 3.818(,r)C 1.319(eadline will dis\ play completions with matches sorted horizontally in alphabetical)-3.818 -F(order)144 144 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25 -E F1 -2.29 -.18(re v)108 156 T(ert\255all\255at\255newline \(Off\)).08 E -F0 .699(If set to)144 168 R F1(On)3.199 E F0 3.199(,r)C .699 +F(order)144 216 Q 2.5(,r)-.4 G(ather than do)-2.5 E(wn the screen.)-.25 +E F1 -2.29 -.18(re v)108 228 T(ert\255all\255at\255newline \(Off\)).08 E +F0 .699(If set to)144 240 R F1(On)3.199 E F0 3.199(,r)C .699 (eadline will undo all changes to history lines before returning when) --3.199 F F1(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 180 S +-3.199 F F1(accept\255line)3.198 E F0(is)3.198 E -.15(exe)144 252 S 2.686(cuted. By).15 F(def)2.686 E .186 (ault, history lines may be modi\214ed and retain indi)-.1 F .186 -(vidual undo lists across calls to)-.25 F F1 -.18(re)144 192 S(adline) -.18 E F0(.)A F1(sho)108 204 Q(w\255all\255if\255ambiguous \(Off\))-.1 E -F0 .304(This alters the def)144 216 R .304(ault beha)-.1 F .304 +(vidual undo lists across calls to)-.25 F F1 -.18(re)144 264 S(adline) +.18 E F0(.)A F1(sho)108 276 Q(w\255all\255if\255ambiguous \(Off\))-.1 E +F0 .304(This alters the def)144 288 R .304(ault beha)-.1 F .304 (vior of the completion functions.)-.2 F .304(If set to)5.304 F F1(On) 2.804 E F0 2.803(,w)C .303(ords which ha)-2.903 F .603 -.15(ve m)-.2 H (ore).15 E 1.264(than one possible completion cause the matches to be l\ -isted immediately instead of ringing the)144 228 R(bell.)144 240 Q F1 -(sho)108 252 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346 -(This alters the def)144 264 R 5.346(ault beha)-.1 F 5.345 +isted immediately instead of ringing the)144 300 R(bell.)144 312 Q F1 +(sho)108 324 Q(w\255all\255if\255unmodi\214ed \(Off\))-.1 E F0 5.346 +(This alters the def)144 336 R 5.346(ault beha)-.1 F 5.345 (vior of the completion functions in a f)-.2 F 5.345(ashion similar to) --.1 F F1(sho)144 276 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C +-.1 F F1(sho)144 348 Q(w\255all\255if\255ambiguous)-.1 E F0 6.69(.I)C 4.19(fs)-6.69 G 1.691(et to)-4.19 F F1(On)4.191 E F0 4.191(,w)C 1.691 (ords which ha)-4.291 F 1.991 -.15(ve m)-.2 H 1.691 -(ore than one possible completion).15 F 1.04(without an)144 288 R 3.54 +(ore than one possible completion).15 F 1.04(without an)144 360 R 3.54 (yp)-.15 G 1.039 (ossible partial completion \(the possible completions don')-3.54 F 3.539(ts)-.18 G 1.039(hare a common pre\214x\))-3.539 F(cause the match\ -es to be listed immediately instead of ringing the bell.)144 300 Q F1 -(sho)108 312 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.018 -(If set to)144 324 R F1(On)3.518 E F0 3.518(,a)C 1.018 +es to be listed immediately instead of ringing the bell.)144 372 Q F1 +(sho)108 384 Q(w\255mode\255in\255pr)-.1 E(ompt \(Off\))-.18 E F0 1.018 +(If set to)144 396 R F1(On)3.518 E F0 3.518(,a)C 1.018 (dd a character to the be)-3.518 F 1.018 (ginning of the prompt indicating the editing mode: emacs)-.15 F -(\(@\), vi command \(:\) or vi insertion \(+\).)144 336 Q F1 -(skip\255completed\255text \(Off\))108 348 Q F0 .095(If set to)144 360 R +(\(@\), vi command \(:\) or vi insertion \(+\).)144 408 Q F1 +(skip\255completed\255text \(Off\))108 420 Q F0 .095(If set to)144 432 R F1(On)2.595 E F0 2.595(,t)C .095(his alters the def)-2.595 F .095 (ault completion beha)-.1 F .094 -(vior when inserting a single match into the line.)-.2 F(It')144 372 Q +(vior when inserting a single match into the line.)-.2 F(It')144 444 Q 2.545(so)-.55 G .045(nly acti)-2.545 F .345 -.15(ve w)-.25 H .046 (hen performing completion in the middle of a w).15 F 2.546(ord. If)-.1 F .046(enabled, readline does not)2.546 F 1.394(insert characters from \ -the completion that match characters after point in the w)144 384 R -1.394(ord being com-)-.1 F(pleted, so portions of the w)144 396 Q +the completion that match characters after point in the w)144 456 R +1.394(ord being com-)-.1 F(pleted, so portions of the w)144 468 Q (ord follo)-.1 E(wing the cursor are not duplicated.)-.25 E F1 -(vi\255cmd\255mode\255string \(\(cmd\)\))108 408 Q F0 1.198(This string\ +(vi\255cmd\255mode\255string \(\(cmd\)\))108 480 Q F0 1.198(This string\ is displayed immediately before the last line of the primary prompt wh\ -en vi editing)144 420 R .522(mode is acti)144 432 R .822 -.15(ve a)-.25 +en vi editing)144 492 R .522(mode is acti)144 504 R .822 -.15(ve a)-.25 H .522(nd in command mode.).15 F .522(The v)5.522 F .522(alue is e)-.25 F .522(xpanded lik)-.15 F 3.022(eak)-.1 G .821 -.15(ey b)-3.122 H .521 (inding, so the standard).15 F .869(set of meta- and control pre\214x) -144 444 R .869(es and backslash escape sequences is a)-.15 F -.25(va)-.2 +144 516 R .869(es and backslash escape sequences is a)-.15 F -.25(va)-.2 G 3.37(ilable. Use).25 F .87(the \\1 and \\2)3.37 F .387(escapes to be) -144 456 R .386(gin and end sequences of non-printing characters, which \ +144 528 R .386(gin and end sequences of non-printing characters, which \ can be used to embed a ter)-.15 F(-)-.2 E -(minal control sequence into the mode string.)144 468 Q F1 -(vi\255ins\255mode\255string \(\(ins\)\))108 480 Q F0 1.198(This string\ +(minal control sequence into the mode string.)144 540 Q F1 +(vi\255ins\255mode\255string \(\(ins\)\))108 552 Q F0 1.198(This string\ is displayed immediately before the last line of the primary prompt wh\ -en vi editing)144 492 R .783(mode is acti)144 504 R 1.083 -.15(ve a)-.25 +en vi editing)144 564 R .783(mode is acti)144 576 R 1.083 -.15(ve a)-.25 H .783(nd in insertion mode.).15 F .783(The v)5.783 F .783(alue is e) -.25 F .783(xpanded lik)-.15 F 3.283(eak)-.1 G 1.083 -.15(ey b)-3.383 H .783(inding, so the standard).15 F .869 -(set of meta- and control pre\214x)144 516 R .869 +(set of meta- and control pre\214x)144 588 R .869 (es and backslash escape sequences is a)-.15 F -.25(va)-.2 G 3.37 -(ilable. Use).25 F .87(the \\1 and \\2)3.37 F .387(escapes to be)144 528 +(ilable. Use).25 F .87(the \\1 and \\2)3.37 F .387(escapes to be)144 600 R .386(gin and end sequences of non-printing characters, which can be u\ sed to embed a ter)-.15 F(-)-.2 E -(minal control sequence into the mode string.)144 540 Q F1 -(visible\255stats \(Off\))108 552 Q F0 .846(If set to)144 564 R F1(On) +(minal control sequence into the mode string.)144 612 Q F1 +(visible\255stats \(Off\))108 624 Q F0 .846(If set to)144 636 R F1(On) 3.346 E F0 3.346(,ac)C .846(haracter denoting a \214le')-3.346 F 3.346 (st)-.55 G .846(ype as reported by)-3.346 F F2(stat)3.346 E F0 .846 (\(2\) is appended to the \214lename)B -(when listing possible completions.)144 576 Q F1 -(Readline Conditional Constructs)87 592.8 Q F0 .05 -(Readline implements a f)108 604.8 R .05(acility similar in spirit to t\ +(when listing possible completions.)144 648 Q F1 +(Readline Conditional Constructs)87 664.8 Q F0 .05 +(Readline implements a f)108 676.8 R .05(acility similar in spirit to t\ he conditional compilation features of the C preprocessor)-.1 F .096 -(which allo)108 616.8 R .096(ws k)-.25 F .396 -.15(ey b)-.1 H .096 +(which allo)108 688.8 R .096(ws k)-.25 F .396 -.15(ey b)-.1 H .096 (indings and v).15 F .096 (ariable settings to be performed as the result of tests.)-.25 F .097 -(There are four parser)5.096 F(directi)108 628.8 Q -.15(ve)-.25 G 2.5 -(su).15 G(sed.)-2.5 E F1($if)108 645.6 Q F0(The)144 645.6 Q F1($if)2.963 +(There are four parser)5.096 F(directi)108 700.8 Q -.15(ve)-.25 G 2.5 +(su).15 G(sed.)-2.5 E F1($if)108 717.6 Q F0(The)144 717.6 Q F1($if)2.963 E F0 .463(construct allo)2.963 F .462(ws bindings to be made based on t\ he editing mode, the terminal being used,)-.25 F .477 -(or the application using readline.)144 657.6 R .477(The te)5.477 F .477 +(or the application using readline.)144 729.6 R .477(The te)5.477 F .477 (xt of the test e)-.15 F .477 -(xtends to the end of the line; no characters)-.15 F -(are required to isolate it.)144 669.6 Q F1(mode)144 686.4 Q F0(The)180 -686.4 Q F1(mode=)3.712 E F0 1.212(form of the)3.712 F F1($if)3.711 E F0 -(directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711(su).15 G 1.211 -(sed to test whether readline is in emacs or vi)-3.711 F 3.065 -(mode. This)180 698.4 R .565(may be used in conjunction with the)3.065 F -F1 .565(set k)3.065 F(eymap)-.1 E F0 .565(command, for instance, to) -3.065 F .735(set bindings in the)180 710.4 R F2(emacs\255standar)3.235 E -(d)-.37 E F0(and)3.235 E F2(emacs\255ctlx)3.235 E F0 -.1(ke)3.235 G .735 -(ymaps only if readline is starting)-.05 F(out in emacs mode.)180 722.4 -Q(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(41)190.395 E 0 Cg EP +(xtends to the end of the line; no characters)-.15 F(GNU Bash 4.4)72 768 +Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(41)185.545 E 0 Cg EP %%Page: 42 42 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(term)144 84 Q F0(The)180 84 Q F1(term=)3.196 E F0 .696 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(are required to isolate it.)144 84 Q/F1 10/Times-Bold@0 SF(mode)144 +100.8 Q F0(The)180 100.8 Q F1(mode=)3.712 E F0 1.212(form of the)3.712 F +F1($if)3.711 E F0(directi)3.711 E 1.511 -.15(ve i)-.25 H 3.711(su).15 G +1.211(sed to test whether readline is in emacs or vi)-3.711 F 3.065 +(mode. This)180 112.8 R .565(may be used in conjunction with the)3.065 F +F1 .565(set k)3.065 F(eymap)-.1 E F0 .565(command, for instance, to) +3.065 F .735(set bindings in the)180 124.8 R/F2 10/Times-Italic@0 SF +(emacs\255standar)3.235 E(d)-.37 E F0(and)3.235 E F2(emacs\255ctlx)3.235 +E F0 -.1(ke)3.235 G .735(ymaps only if readline is starting)-.05 F +(out in emacs mode.)180 136.8 Q F1(term)144 153.6 Q F0(The)180 153.6 Q +F1(term=)3.196 E F0 .696 (form may be used to include terminal-speci\214c k)3.196 F .996 -.15 -(ey b)-.1 H .697(indings, perhaps to bind).15 F .654(the k)180 96 R .954 --.15(ey s)-.1 H .654(equences output by the terminal').15 F 3.154(sf) --.55 G .654(unction k)-3.154 F -.15(ey)-.1 G 3.154(s. The).15 F -.1(wo) -3.154 G .654(rd on the right side of).1 F(the)180 108 Q F1(=)3.231 E F0 -.731(is tested ag)3.231 F .732(ainst both the full name of the terminal\ - and the portion of the terminal)-.05 F(name before the \214rst)180 120 -Q F12.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E/F2 10/Times-Italic@0 SF -(sun)2.84 E F0(to match both)2.74 E F2(sun)2.84 E F0(and)2.74 E F2 -(sun\255cmd)2.5 E F0 2.5(,f).77 G(or instance.)-2.5 E F1(application)144 -136.8 Q F0(The)180 148.8 Q F1(application)3.003 E F0 .503 +(ey b)-.1 H .697(indings, perhaps to bind).15 F .654(the k)180 165.6 R +.954 -.15(ey s)-.1 H .654(equences output by the terminal').15 F 3.154 +(sf)-.55 G .654(unction k)-3.154 F -.15(ey)-.1 G 3.154(s. The).15 F -.1 +(wo)3.154 G .654(rd on the right side of).1 F(the)180 177.6 Q F1(=)3.231 +E F0 .731(is tested ag)3.231 F .732(ainst both the full name of the ter\ +minal and the portion of the terminal)-.05 F(name before the \214rst)180 +189.6 Q F12.5 E F0 5(.T)C(his allo)-5 E(ws)-.25 E F2(sun)2.84 E F0 +(to match both)2.74 E F2(sun)2.84 E F0(and)2.74 E F2(sun\255cmd)2.5 E F0 +2.5(,f).77 G(or instance.)-2.5 E F1(application)144 206.4 Q F0(The)180 +218.4 Q F1(application)3.003 E F0 .503 (construct is used to include application-speci\214c settings.)3.003 F .503(Each program)5.503 F .114(using the readline library sets the)180 -160.8 R F2 .114(application name)2.614 F F0 2.614(,a)C .114 +230.4 R F2 .114(application name)2.614 F F0 2.614(,a)C .114 (nd an initialization \214le can test for a)-2.614 F .501(particular v) -180 172.8 R 3.001(alue. This)-.25 F .501(could be used to bind k)3.001 F +180 242.4 R 3.001(alue. This)-.25 F .501(could be used to bind k)3.001 F .801 -.15(ey s)-.1 H .5(equences to functions useful for a spe-).15 F -.396(ci\214c program.)180 184.8 R -.15(Fo)5.396 G 2.896(ri).15 G .396 +.396(ci\214c program.)180 254.4 R -.15(Fo)5.396 G 2.896(ri).15 G .396 (nstance, the follo)-2.896 F .396(wing command adds a k)-.25 F .696 -.15 -(ey s)-.1 H .397(equence that quotes the).15 F(current or pre)180 196.8 -Q(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 220.8 Q F0 -(Bash)2.5 E 2.5(#Q)180 232.8 S(uote the current or pre)-2.5 E(vious w) --.25 E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 244.8 Q F1($endif)180 -256.8 Q($endif)108 273.6 Q F0(This command, as seen in the pre)144 273.6 +(ey s)-.1 H .397(equence that quotes the).15 F(current or pre)180 266.4 +Q(vious w)-.25 E(ord in)-.1 E F1(bash)2.5 E F0(:)A F1($if)180 290.4 Q F0 +(Bash)2.5 E 2.5(#Q)180 302.4 S(uote the current or pre)-2.5 E(vious w) +-.25 E(ord)-.1 E("\\C\255xq": "\\eb\\"\\ef\\"")180 314.4 Q F1($endif)180 +326.4 Q($endif)108 343.2 Q F0(This command, as seen in the pre)144 343.2 Q(vious e)-.25 E(xample, terminates an)-.15 E F1($if)2.5 E F0(command.) -2.5 E F1($else)108 290.4 Q F0(Commands in this branch of the)144 290.4 Q -F1($if)2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe) --.15 G(cuted if the test f).15 E(ails.)-.1 E F1($include)108 307.2 Q F0 -.357(This directi)144 319.2 R .657 -.15(ve t)-.25 H(ak).15 E .357 +2.5 E F1($else)108 360 Q F0(Commands in this branch of the)144 360 Q F1 +($if)2.5 E F0(directi)2.5 E .3 -.15(ve a)-.25 H(re e).15 E -.15(xe)-.15 +G(cuted if the test f).15 E(ails.)-.1 E F1($include)108 376.8 Q F0 .357 +(This directi)144 388.8 R .657 -.15(ve t)-.25 H(ak).15 E .357 (es a single \214lename as an ar)-.1 F .356 (gument and reads commands and bindings from that)-.18 F 2.5(\214le. F) -144 331.2 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 +144 400.8 R(or e)-.15 E(xample, the follo)-.15 E(wing directi)-.25 E .3 -.15(ve w)-.25 H(ould read).05 E F2(/etc/inputr)2.5 E(c)-.37 E F0(:)A F1 -($include)144 355.2 Q F2(/etc/inputr)5.833 E(c)-.37 E F1(Sear)87 372 Q -(ching)-.18 E F0 .834(Readline pro)108 384 R .834 +($include)144 424.8 Q F2(/etc/inputr)5.833 E(c)-.37 E F1(Sear)87 441.6 Q +(ching)-.18 E F0 .834(Readline pro)108 453.6 R .834 (vides commands for searching through the command history \(see)-.15 F /F3 9/Times-Bold@0 SF(HIST)3.335 E(OR)-.162 E(Y)-.315 E F0(belo)3.085 E -.835(w\) for lines)-.25 F(containing a speci\214ed string.)108 396 Q +.835(w\) for lines)-.25 F(containing a speci\214ed string.)108 465.6 Q (There are tw)5 E 2.5(os)-.1 G(earch modes:)-2.5 E F2(incr)2.51 E (emental)-.37 E F0(and)3.01 E F2(non-incr)2.5 E(emental)-.37 E F0(.).51 -E .698(Incremental searches be)108 412.8 R .698 +E .698(Incremental searches be)108 482.4 R .698 (gin before the user has \214nished typing the search string.)-.15 F .697(As each character of the)5.697 F .112 -(search string is typed, readline displays the ne)108 424.8 R .112 +(search string is typed, readline displays the ne)108 494.4 R .112 (xt entry from the history matching the string typed so f)-.15 F(ar)-.1 E 5.113(.A)-.55 G(n)-5.113 E .542 -(incremental search requires only as man)108 436.8 R 3.042(yc)-.15 G +(incremental search requires only as man)108 506.4 R 3.042(yc)-.15 G .542(haracters as needed to \214nd the desired history entry)-3.042 F 5.541(.T)-.65 G .541(he char)-5.541 F(-)-.2 E .224 -(acters present in the v)108 448.8 R .224(alue of the)-.25 F F1(isear) +(acters present in the v)108 518.4 R .224(alue of the)-.25 F F1(isear) 2.724 E(ch-terminators)-.18 E F0 -.25(va)2.724 G .224 (riable are used to terminate an incremental search.).25 F .66 -(If that v)108 460.8 R .66(ariable has not been assigned a v)-.25 F .66 +(If that v)108 530.4 R .66(ariable has not been assigned a v)-.25 F .66 (alue the Escape and Control-J characters will terminate an incre-)-.25 -F .096(mental search.)108 472.8 R .096(Control-G will abort an incremen\ +F .096(mental search.)108 542.4 R .096(Control-G will abort an incremen\ tal search and restore the original line.)5.096 F .097 (When the search is)5.097 F(terminated, the history entry containing th\ -e search string becomes the current line.)108 484.8 Q 2.939 -.8(To \214) -108 501.6 T 1.339(nd other matching entries in the history list, type C\ +e search string becomes the current line.)108 554.4 Q 2.939 -.8(To \214) +108 571.2 T 1.339(nd other matching entries in the history list, type C\ ontrol-S or Control-R as appropriate.).8 F 1.338(This will)6.338 F .674 -(search backw)108 513.6 R .674(ard or forw)-.1 F .674 +(search backw)108 583.2 R .674(ard or forw)-.1 F .674 (ard in the history for the ne)-.1 F .675 (xt entry matching the search string typed so f)-.15 F(ar)-.1 E 5.675 -(.A)-.55 G -.15(ny)-5.675 G .175(other k)108 525.6 R .475 -.15(ey s)-.1 +(.A)-.55 G -.15(ny)-5.675 G .175(other k)108 595.2 R .475 -.15(ey s)-.1 H .174 (equence bound to a readline command will terminate the search and e).15 F -.15(xe)-.15 G .174(cute that command.).15 F -.15(Fo)5.174 G(r).15 E -.54(instance, a)108 537.6 R F2(ne)3.04 E(wline)-.15 E F0 .541 +.54(instance, a)108 607.2 R F2(ne)3.04 E(wline)-.15 E F0 .541 (will terminate the search and accept the line, thereby e)3.04 F -.15 (xe)-.15 G .541(cuting the command from the).15 F(history list.)108 -549.6 Q .653(Readline remembers the last incremental search string.)108 -566.4 R .653(If tw)5.653 F 3.153(oC)-.1 G .653 +619.2 Q .653(Readline remembers the last incremental search string.)108 +636 R .653(If tw)5.653 F 3.153(oC)-.1 G .653 (ontrol-Rs are typed without an)-3.153 F 3.152(yi)-.15 G(nterv)-3.152 E -(en-)-.15 E(ing characters de\214ning a ne)108 578.4 Q 2.5(ws)-.25 G +(en-)-.15 E(ing characters de\214ning a ne)108 648 Q 2.5(ws)-.25 G (earch string, an)-2.5 E 2.5(yr)-.15 G(emembered search string is used.) -2.5 E .567(Non-incremental searches read the entire search string befo\ -re starting to search for matching history lines.)108 595.2 R(The searc\ +re starting to search for matching history lines.)108 664.8 R(The searc\ h string may be typed by the user or be part of the contents of the cur\ -rent line.)108 607.2 Q F1(Readline Command Names)87 624 Q F0 1.392 -(The follo)108 636 R 1.391 +rent line.)108 676.8 Q F1(Readline Command Names)87 693.6 Q F0 1.392 +(The follo)108 705.6 R 1.391 (wing is a list of the names of the commands and the def)-.25 F 1.391 (ault k)-.1 F 1.691 -.15(ey s)-.1 H 1.391(equences to which the).15 F -3.891(ya)-.15 G(re)-3.891 E 2.621(bound. Command)108 648 R .121 +3.891(ya)-.15 G(re)-3.891 E 2.621(bound. Command)108 717.6 R .121 (names without an accompan)2.621 F .121(ying k)-.15 F .421 -.15(ey s)-.1 H .122(equence are unbound by def).15 F 2.622(ault. In)-.1 F .122 -(the follo)2.622 F(wing)-.25 E(descriptions,)108 660 Q F2(point)3.411 E -F0 .911(refers to the current cursor position, and)3.411 F F2(mark)3.411 -E F0 .91(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.41(db) -.15 G 3.41(yt)-3.41 G(he)-3.41 E F1(set\255mark)108 672 Q F0 2.5 -(command. The)2.5 F(te)2.5 E -(xt between the point and mark is referred to as the)-.15 E F2 -.37(re) -2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 688.8 Q(or Mo)-.25 E(ving)-.1 -E(beginning\255of\255line \(C\255a\))108 700.8 Q F0(Mo)144 712.8 Q .3 --.15(ve t)-.15 H 2.5(ot).15 G(he start of the current line.)-2.5 E -(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(42)190.395 E 0 Cg EP +(the follo)2.622 F(wing)-.25 E(descriptions,)108 729.6 Q F2(point)3.411 +E F0 .911(refers to the current cursor position, and)3.411 F F2(mark) +3.411 E F0 .91(refers to a cursor position sa)3.411 F -.15(ve)-.2 G 3.41 +(db).15 G 3.41(yt)-3.41 G(he)-3.41 E(GNU Bash 4.4)72 768 Q(2015 No) +136.385 E -.15(ve)-.15 G(mber 16).15 E(42)185.545 E 0 Cg EP %%Page: 43 43 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(end\255of\255line \(C\255e\))108 84 Q F0(Mo)144 96 Q .3 -.15(ve t) --.15 H 2.5(ot).15 G(he end of the line.)-2.5 E F1 -.25(fo)108 108 S -(rward\255char \(C\255f\)).25 E F0(Mo)144 120 Q .3 -.15(ve f)-.15 H(orw) -.15 E(ard a character)-.1 E(.)-.55 E F1(backward\255char \(C\255b\))108 -132 Q F0(Mo)144 144 Q .3 -.15(ve b)-.15 H(ack a character).15 E(.)-.55 E -F1 -.25(fo)108 156 S(rward\255w).25 E(ord \(M\255f\))-.1 E F0(Mo)144 168 -Q .822 -.15(ve f)-.15 H(orw).15 E .522(ard to the end of the ne)-.1 F -.523(xt w)-.15 F 3.023(ord. W)-.1 F .523 -(ords are composed of alphanumeric characters \(let-)-.8 F -(ters and digits\).)144 180 Q F1(backward\255w)108 192 Q(ord \(M\255b\)) --.1 E F0(Mo)144 204 Q 1.71 -.15(ve b)-.15 H 1.41 +SF(set\255mark)108 84 Q F0 2.5(command. The)2.5 F(te)2.5 E +(xt between the point and mark is referred to as the)-.15 E/F2 10 +/Times-Italic@0 SF -.37(re)2.5 G(gion)-.03 E F0(.)A F1(Commands f)87 +100.8 Q(or Mo)-.25 E(ving)-.1 E(beginning\255of\255line \(C\255a\))108 +112.8 Q F0(Mo)144 124.8 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G +(he start of the current line.)-2.5 E F1(end\255of\255line \(C\255e\)) +108 136.8 Q F0(Mo)144 148.8 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G +(he end of the line.)-2.5 E F1 -.25(fo)108 160.8 S +(rward\255char \(C\255f\)).25 E F0(Mo)144 172.8 Q .3 -.15(ve f)-.15 H +(orw).15 E(ard a character)-.1 E(.)-.55 E F1 +(backward\255char \(C\255b\))108 184.8 Q F0(Mo)144 196.8 Q .3 -.15(ve b) +-.15 H(ack a character).15 E(.)-.55 E F1 -.25(fo)108 208.8 S(rward\255w) +.25 E(ord \(M\255f\))-.1 E F0(Mo)144 220.8 Q .822 -.15(ve f)-.15 H(orw) +.15 E .522(ard to the end of the ne)-.1 F .523(xt w)-.15 F 3.023(ord. W) +-.1 F .523(ords are composed of alphanumeric characters \(let-)-.8 F +(ters and digits\).)144 232.8 Q F1(backward\255w)108 244.8 Q +(ord \(M\255b\))-.1 E F0(Mo)144 256.8 Q 1.71 -.15(ve b)-.15 H 1.41 (ack to the start of the current or pre).15 F 1.41(vious w)-.25 F 3.91 (ord. W)-.1 F 1.41(ords are composed of alphanumeric)-.8 F -(characters \(letters and digits\).)144 216 Q F1(shell\255f)108 228 Q -(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 240 Q .784 -.15(ve f)-.15 H(orw) -.15 E .484(ard to the end of the ne)-.1 F .484(xt w)-.15 F 2.984(ord. W) --.1 F .484(ords are delimited by non-quoted shell metacharac-)-.8 F -(ters.)144 252 Q F1(shell\255backward\255w)108 264 Q(ord)-.1 E F0(Mo)144 -276 Q .909 -.15(ve b)-.15 H .609(ack to the start of the current or pre) -.15 F .609(vious w)-.25 F 3.109(ord. W)-.1 F .608 -(ords are delimited by non-quoted shell)-.8 F(metacharacters.)144 288 Q -F1(clear\255scr)108 300 Q(een \(C\255l\))-.18 E F0 .993 -(Clear the screen lea)144 312 R .993 +(characters \(letters and digits\).)144 268.8 Q F1(shell\255f)108 280.8 +Q(orward\255w)-.25 E(ord)-.1 E F0(Mo)144 292.8 Q .784 -.15(ve f)-.15 H +(orw).15 E .484(ard to the end of the ne)-.1 F .484(xt w)-.15 F 2.984 +(ord. W)-.1 F .484(ords are delimited by non-quoted shell metacharac-) +-.8 F(ters.)144 304.8 Q F1(shell\255backward\255w)108 316.8 Q(ord)-.1 E +F0(Mo)144 328.8 Q .909 -.15(ve b)-.15 H .609 +(ack to the start of the current or pre).15 F .609(vious w)-.25 F 3.109 +(ord. W)-.1 F .608(ords are delimited by non-quoted shell)-.8 F +(metacharacters.)144 340.8 Q F1(clear\255scr)108 352.8 Q(een \(C\255l\)) +-.18 E F0 .993(Clear the screen lea)144 364.8 R .993 (ving the current line at the top of the screen.)-.2 F -.4(Wi)5.993 G .993(th an ar).4 F .993(gument, refresh the)-.18 F -(current line without clearing the screen.)144 324 Q F1 -.18(re)108 336 -S(draw\255curr).18 E(ent\255line)-.18 E F0(Refresh the current line.)144 -348 Q F1(Commands f)87 364.8 Q(or Manipulating the History)-.25 E -(accept\255line \(Newline, Retur)108 376.8 Q(n\))-.15 E F0 .159 -(Accept the line re)144 388.8 R -.05(ga)-.15 G .159 -(rdless of where the cursor is.).05 F .158(If this line is non-empty) -5.158 F 2.658(,a)-.65 G .158(dd it to the history list)-2.658 F .699 -(according to the state of the)144 400.8 R/F2 9/Times-Bold@0 SF -(HISTCONTR)3.199 E(OL)-.27 E F0 -.25(va)2.949 G 3.199(riable. If).25 F -.699(the line is a modi\214ed history line, then)3.199 F -(restore the history line to its original state.)144 412.8 Q F1(pr)108 -424.8 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0 -(Fetch the pre)144 436.8 Q(vious command from the history list, mo)-.25 -E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 448.8 -Q F0(Fetch the ne)144 460.8 Q(xt command from the history list, mo)-.15 +(current line without clearing the screen.)144 376.8 Q F1 -.18(re)108 +388.8 S(draw\255curr).18 E(ent\255line)-.18 E F0 +(Refresh the current line.)144 400.8 Q F1(Commands f)87 417.6 Q +(or Manipulating the History)-.25 E(accept\255line \(Newline, Retur)108 +429.6 Q(n\))-.15 E F0 .159(Accept the line re)144 441.6 R -.05(ga)-.15 G +.159(rdless of where the cursor is.).05 F .158 +(If this line is non-empty)5.158 F 2.658(,a)-.65 G .158 +(dd it to the history list)-2.658 F .699(according to the state of the) +144 453.6 R/F3 9/Times-Bold@0 SF(HISTCONTR)3.199 E(OL)-.27 E F0 -.25(va) +2.949 G 3.199(riable. If).25 F .699 +(the line is a modi\214ed history line, then)3.199 F +(restore the history line to its original state.)144 465.6 Q F1(pr)108 +477.6 Q -.15(ev)-.18 G(ious\255history \(C\255p\)).15 E F0 +(Fetch the pre)144 489.6 Q(vious command from the history list, mo)-.25 +E(ving back in the list.)-.15 E F1(next\255history \(C\255n\))108 501.6 +Q F0(Fetch the ne)144 513.6 Q(xt command from the history list, mo)-.15 E(ving forw)-.15 E(ard in the list.)-.1 E F1 -(beginning\255of\255history \(M\255<\))108 472.8 Q F0(Mo)144 484.8 Q .3 +(beginning\255of\255history \(M\255<\))108 525.6 Q F0(Mo)144 537.6 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G(he \214rst line in the history)-2.5 E(.) --.65 E F1(end\255of\255history \(M\255>\))108 496.8 Q F0(Mo)144 508.8 Q +-.65 E F1(end\255of\255history \(M\255>\))108 549.6 Q F0(Mo)144 561.6 Q .3 -.15(ve t)-.15 H 2.5(ot).15 G(he end of the input history)-2.5 E 2.5 (,i)-.65 G(.e., the line currently being entered.)-2.5 E F1 -2.29 -.18 -(re v)108 520.8 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 -1.471(Search backw)144 532.8 R 1.471 +(re v)108 573.6 T(erse\255sear).08 E(ch\255history \(C\255r\))-.18 E F0 +1.471(Search backw)144 585.6 R 1.471 (ard starting at the current line and mo)-.1 F 1.47 (ving `up' through the history as necessary)-.15 F(.)-.65 E -(This is an incremental search.)144 544.8 Q F1 -.25(fo)108 556.8 S +(This is an incremental search.)144 597.6 Q F1 -.25(fo)108 609.6 S (rward\255sear).25 E(ch\255history \(C\255s\))-.18 E F0 1.131 -(Search forw)144 568.8 R 1.131(ard starting at the current line and mo) +(Search forw)144 621.6 R 1.131(ard starting at the current line and mo) -.1 F 1.132(ving `do)-.15 F 1.132(wn' through the history as necessary) --.25 F(.)-.65 E(This is an incremental search.)144 580.8 Q F1 -(non\255incr)108 592.8 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H +-.25 F(.)-.65 E(This is an incremental search.)144 633.6 Q F1 +(non\255incr)108 645.6 Q(emental\255r)-.18 E -2.3 -.15(ev e)-.18 H (rse\255sear).15 E(ch\255history \(M\255p\))-.18 E F0 .165(Search backw) -144 604.8 R .164(ard through the history starting at the current line u\ -sing a non-incremental search for)-.1 F 2.5(as)144 616.8 S -(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 628.8 Q +144 657.6 R .164(ard through the history starting at the current line u\ +sing a non-incremental search for)-.1 F 2.5(as)144 669.6 S +(tring supplied by the user)-2.5 E(.)-.55 E F1(non\255incr)108 681.6 Q (emental\255f)-.18 E(orward\255sear)-.25 E(ch\255history \(M\255n\))-.18 -E F0 1.353(Search forw)144 640.8 R 1.354(ard through the history using \ +E F0 1.353(Search forw)144 693.6 R 1.354(ard through the history using \ a non-incremental search for a string supplied by the)-.1 F(user)144 -652.8 Q(.)-.55 E F1(history\255sear)108 664.8 Q(ch\255f)-.18 E(orward) --.25 E F0 .249(Search forw)144 676.8 R .249(ard through the history for\ - the string of characters between the start of the current line)-.1 F -(and the point.)144 688.8 Q(This is a non-incremental search.)5 E F1 -(history\255sear)108 700.8 Q(ch\255backward)-.18 E F0 .95(Search backw) -144 712.8 R .951(ard through the history for the string of characters b\ -etween the start of the current)-.1 F(line and the point.)144 724.8 Q -(This is a non-incremental search.)5 E(GNU Bash 4.4)72 768 Q -(2015 October 11)141.235 E(43)190.395 E 0 Cg EP +705.6 Q(.)-.55 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G +(mber 16).15 E(43)185.545 E 0 Cg EP %%Page: 44 44 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(yank\255nth\255ar)108 84 Q 2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 .622 -(Insert the \214rst ar)144 96 R .622(gument to the pre)-.18 F .622 +SF(history\255sear)108 84 Q(ch\255f)-.18 E(orward)-.25 E F0 .249 +(Search forw)144 96 R .249(ard through the history for the string of ch\ +aracters between the start of the current line)-.1 F(and the point.)144 +108 Q(This is a non-incremental search.)5 E F1(history\255sear)108 120 Q +(ch\255backward)-.18 E F0 .95(Search backw)144 132 R .951(ard through t\ +he history for the string of characters between the start of the curren\ +t)-.1 F(line and the point.)144 144 Q(This is a non-incremental search.) +5 E F1(yank\255nth\255ar)108 156 Q 2.5(g\()-.1 G<4dad43ad7929>-2.5 E F0 +.622(Insert the \214rst ar)144 168 R .622(gument to the pre)-.18 F .622 (vious command \(usually the second w)-.25 F .622(ord on the pre)-.1 F -.622(vious line\))-.25 F .794(at point.)144 108 R -.4(Wi)5.794 G .794 +.622(vious line\))-.25 F .794(at point.)144 180 R -.4(Wi)5.794 G .794 (th an ar).4 F(gument)-.18 E/F2 10/Times-Italic@0 SF(n)3.294 E F0 3.294 (,i).24 G .794(nsert the)-3.294 F F2(n)3.294 E F0 .794(th w)B .794 (ord from the pre)-.1 F .794(vious command \(the w)-.25 F .795 -(ords in the)-.1 F(pre)144 120 Q .292(vious command be)-.25 F .292 +(ords in the)-.1 F(pre)144 192 Q .292(vious command be)-.25 F .292 (gin with w)-.15 F .291(ord 0\).)-.1 F 2.791(An)5.291 G -2.25 -.15(eg a) -2.791 H(ti).15 E .591 -.15(ve a)-.25 H -.18(rg).15 G .291 (ument inserts the).18 F F2(n)2.791 E F0 .291(th w)B .291 -(ord from the end of)-.1 F .281(the pre)144 132 R .281(vious command.) +(ord from the end of)-.1 F .281(the pre)144 204 R .281(vious command.) -.25 F .281(Once the ar)5.281 F(gument)-.18 E F2(n)2.781 E F0 .281 (is computed, the ar)2.781 F .281(gument is e)-.18 F .282 -(xtracted as if the "!)-.15 F F2(n)A F0(")A(history e)144 144 Q -(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 156 Q +(xtracted as if the "!)-.15 F F2(n)A F0(")A(history e)144 216 Q +(xpansion had been speci\214ed.)-.15 E F1(yank\255last\255ar)108 228 Q 2.5(g\()-.1 G -1.667(M\255. ,)-2.5 F -1.667(M\255_ \))2.5 F F0 1.308 -(Insert the last ar)144 168 R 1.308(gument to the pre)-.18 F 1.307 +(Insert the last ar)144 240 R 1.308(gument to the pre)-.18 F 1.307 (vious command \(the last w)-.25 F 1.307(ord of the pre)-.1 F 1.307 -(vious history entry\).)-.25 F -.4(Wi)144 180 S .203(th a numeric ar).4 +(vious history entry\).)-.25 F -.4(Wi)144 252 S .203(th a numeric ar).4 F .203(gument, beha)-.18 F .504 -.15(ve ex)-.2 H .204(actly lik).15 F(e) -.1 E F1(yank\255nth\255ar)2.704 E(g)-.1 E F0 5.204(.S)C(uccessi)-5.204 E .504 -.15(ve c)-.25 H .204(alls to).15 F F1(yank\255last\255ar)2.704 E -(g)-.1 E F0(mo)144 192 Q .807 -.15(ve b)-.15 H .507 +(g)-.1 E F0(mo)144 264 Q .807 -.15(ve b)-.15 H .507 (ack through the history list, inserting the last w).15 F .507 (ord \(or the w)-.1 F .507(ord speci\214ed by the ar)-.1 F(gument)-.18 E -1.396(to the \214rst call\) of each line in turn.)144 204 R(An)6.396 E +1.396(to the \214rst call\) of each line in turn.)144 276 R(An)6.396 E 3.896(yn)-.15 G 1.396(umeric ar)-3.896 F 1.397 (gument supplied to these successi)-.18 F 1.697 -.15(ve c)-.25 H(alls) -.15 E .492(determines the direction to mo)144 216 R .792 -.15(ve t)-.15 +.15 E .492(determines the direction to mo)144 288 R .792 -.15(ve t)-.15 H .492(hrough the history).15 F 5.491(.A)-.65 G(ne)-2.5 E -.05(ga)-.15 G (ti).05 E .791 -.15(ve a)-.25 H -.18(rg).15 G .491 (ument switches the direction).18 F .494 -(through the history \(back or forw)144 228 R 2.994(ard\). The)-.1 F +(through the history \(back or forw)144 300 R 2.994(ard\). The)-.1 F .494(history e)2.994 F .494(xpansion f)-.15 F .494 (acilities are used to e)-.1 F .494(xtract the last)-.15 F -.1(wo)144 -240 S(rd, as if the "!$" history e).1 E(xpansion had been speci\214ed.) --.15 E F1(shell\255expand\255line \(M\255C\255e\))108 252 Q F0 .623 -(Expand the line as the shell does.)144 264 R .622 +312 S(rd, as if the "!$" history e).1 E(xpansion had been speci\214ed.) +-.15 E F1(shell\255expand\255line \(M\255C\255e\))108 324 Q F0 .623 +(Expand the line as the shell does.)144 336 R .622 (This performs alias and history e)5.622 F .622 -(xpansion as well as all of the)-.15 F(shell w)144 276 Q(ord e)-.1 E 2.5 +(xpansion as well as all of the)-.15 F(shell w)144 348 Q(ord e)-.1 E 2.5 (xpansions. See)-.15 F/F3 9/Times-Bold@0 SF(HIST)2.5 E(OR)-.162 E 2.25 (YE)-.315 G(XP)-2.25 E(ANSION)-.666 E F0(belo)2.25 E 2.5(wf)-.25 G (or a description of history e)-2.5 E(xpansion.)-.15 E F1 -(history\255expand\255line \(M\255^\))108 288 Q F0 .938 -(Perform history e)144 300 R .939(xpansion on the current line.)-.15 F +(history\255expand\255line \(M\255^\))108 360 Q F0 .938 +(Perform history e)144 372 R .939(xpansion on the current line.)-.15 F (See)5.939 E F3(HIST)3.439 E(OR)-.162 E 3.189(YE)-.315 G(XP)-3.189 E (ANSION)-.666 E F0(belo)3.189 E 3.439(wf)-.25 G .939(or a descrip-) --3.439 F(tion of history e)144 312 Q(xpansion.)-.15 E F1(magic\255space) -108 324 Q F0 1.627(Perform history e)144 336 R 1.627 +-3.439 F(tion of history e)144 384 Q(xpansion.)-.15 E F1(magic\255space) +108 396 Q F0 1.627(Perform history e)144 408 R 1.627 (xpansion on the current line and insert a space.)-.15 F(See)6.626 E F3 (HIST)4.126 E(OR)-.162 E 3.876(YE)-.315 G(XP)-3.876 E(ANSION)-.666 E F0 -(belo)144 348 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E -(xpansion.)-.15 E F1(alias\255expand\255line)108 360 Q F0 .394 -(Perform alias e)144 372 R .394(xpansion on the current line.)-.15 F +(belo)144 420 Q 2.5(wf)-.25 G(or a description of history e)-2.5 E +(xpansion.)-.15 E F1(alias\255expand\255line)108 432 Q F0 .394 +(Perform alias e)144 444 R .394(xpansion on the current line.)-.15 F (See)5.395 E F3(ALIASES)2.895 E F0(abo)2.645 E .695 -.15(ve f)-.15 H -.395(or a description of alias e).15 F(xpan-)-.15 E(sion.)144 384 Q F1 -(history\255and\255alias\255expand\255line)108 396 Q F0 -(Perform history and alias e)144 408 Q(xpansion on the current line.) --.15 E F1(insert\255last\255ar)108 420 Q(gument \(M\255.)-.1 E 2.5(,M) -.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 432 S(ynon)-2.5 E(ym for) +.395(or a description of alias e).15 F(xpan-)-.15 E(sion.)144 456 Q F1 +(history\255and\255alias\255expand\255line)108 468 Q F0 +(Perform history and alias e)144 480 Q(xpansion on the current line.) +-.15 E F1(insert\255last\255ar)108 492 Q(gument \(M\255.)-.1 E 2.5(,M) +.833 G -1.667(\255_ \))-2.5 F F0 2.5(As)144 504 S(ynon)-2.5 E(ym for) -.15 E F1(yank\255last\255ar)2.5 E(g)-.1 E F0(.)A F1 -(operate\255and\255get\255next \(C\255o\))108 444 Q F0 .948 -(Accept the current line for e)144 456 R -.15(xe)-.15 G .948 +(operate\255and\255get\255next \(C\255o\))108 516 Q F0 .948 +(Accept the current line for e)144 528 R -.15(xe)-.15 G .948 (cution and fetch the ne).15 F .948(xt line relati)-.15 F 1.247 -.15 (ve t)-.25 H 3.447(ot).15 G .947(he current line from the)-3.447 F -(history for editing.)144 468 Q(An)5 E 2.5(ya)-.15 G -.18(rg)-2.5 G +(history for editing.)144 540 Q(An)5 E 2.5(ya)-.15 G -.18(rg)-2.5 G (ument is ignored.).18 E F1 -(edit\255and\255execute\255command \(C\255xC\255e\))108 480 Q F0(In)144 -492 Q -.2(vo)-.4 G 1.226 -.1(ke a).2 H 3.526(ne).1 G 1.026 +(edit\255and\255execute\255command \(C\255xC\255e\))108 552 Q F0(In)144 +564 Q -.2(vo)-.4 G 1.226 -.1(ke a).2 H 3.526(ne).1 G 1.026 (ditor on the current command line, and e)-3.526 F -.15(xe)-.15 G 1.026 (cute the result as shell commands.).15 F F1(Bash)6.026 E F0 -(attempts to in)144 504 Q -.2(vo)-.4 G -.1(ke).2 G F3($VISU)2.6 E(AL) +(attempts to in)144 576 Q -.2(vo)-.4 G -.1(ke).2 G F3($VISU)2.6 E(AL) -.54 E/F4 9/Times-Roman@0 SF(,)A F3($EDIT)2.25 E(OR)-.162 E F4(,)A F0 (and)2.25 E F2(emacs)2.5 E F0(as the editor)2.5 E 2.5(,i)-.4 G 2.5(nt) --2.5 G(hat order)-2.5 E(.)-.55 E F1(Commands f)87 520.8 Q(or Changing T) --.25 E(ext)-.92 E F2(end\255of\255\214le)108 532.8 Q F1 +-2.5 G(hat order)-2.5 E(.)-.55 E F1(Commands f)87 592.8 Q(or Changing T) +-.25 E(ext)-.92 E F2(end\255of\255\214le)108 604.8 Q F1 (\(usually C\255d\))2.5 E F0 .799 -(The character indicating end-of-\214le as set, for e)144 544.8 R .799 +(The character indicating end-of-\214le as set, for e)144 616.8 R .799 (xample, by)-.15 F/F5 10/Courier@0 SF(stty)3.299 E F0 5.799(.I)C 3.298 (ft)-5.799 G .798(his character is read when)-3.298 F .592 -(there are no characters on the line, and point is at the be)144 556.8 R +(there are no characters on the line, and point is at the be)144 628.8 R .593(ginning of the line, Readline interprets it)-.15 F -(as the end of input and returns)144 568.8 Q F3(EOF)2.5 E F4(.)A F1 -(delete\255char \(C\255d\))108 580.8 Q F0 .442 -(Delete the character at point.)144 592.8 R .442 +(as the end of input and returns)144 640.8 Q F3(EOF)2.5 E F4(.)A F1 +(delete\255char \(C\255d\))108 652.8 Q F0 .442 +(Delete the character at point.)144 664.8 R .442 (If this function is bound to the same character as the tty)5.442 F F1 -(EOF)2.941 E F0(char)2.941 E(-)-.2 E(acter)144 604.8 Q 2.5(,a)-.4 G(s) +(EOF)2.941 E F0(char)2.941 E(-)-.2 E(acter)144 676.8 Q 2.5(,a)-.4 G(s) -2.5 E F1(C\255d)2.5 E F0(commonly is, see abo)2.5 E .3 -.15(ve f)-.15 H (or the ef).15 E(fects.)-.25 E F1(backward\255delete\255char \(Rubout\)) -108 616.8 Q F0 .552(Delete the character behind the cursor)144 628.8 R +108 688.8 Q F0 .552(Delete the character behind the cursor)144 700.8 R 5.553(.W)-.55 G .553(hen gi)-5.553 F -.15(ve)-.25 G 3.053(nan).15 G .553 (umeric ar)-3.053 F .553(gument, sa)-.18 F .853 -.15(ve t)-.2 H .553 -(he deleted te).15 F .553(xt on)-.15 F(the kill ring.)144 640.8 Q F1 --.25(fo)108 652.8 S(rward\255backward\255delete\255char).25 E F0 .474 -(Delete the character under the cursor)144 664.8 R 2.974(,u)-.4 G .474 -(nless the cursor is at the end of the line, in which case the)-2.974 F -(character behind the cursor is deleted.)144 676.8 Q F1 -(quoted\255insert \(C\255q, C\255v\))108 688.8 Q F0 .778(Add the ne)144 -700.8 R .779(xt character typed to the line v)-.15 F 3.279 -(erbatim. This)-.15 F .779(is ho)3.279 F 3.279(wt)-.25 G 3.279(oi)-3.279 -G .779(nsert characters lik)-3.279 F(e)-.1 E F1(C\255q)3.279 E F0 3.279 -(,f)C(or)-3.279 E -.15(ex)144 712.8 S(ample.).15 E(GNU Bash 4.4)72 768 Q -(2015 October 11)141.235 E(44)190.395 E 0 Cg EP +(he deleted te).15 F .553(xt on)-.15 F(the kill ring.)144 712.8 Q +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(44)185.545 E 0 Cg EP %%Page: 45 45 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(tab\255insert \(C\255v T)108 84 Q(AB\))-.9 E F0 -(Insert a tab character)144 96 Q(.)-.55 E F1 -(self\255insert \(a, b, A, 1, !, ...\))108 108 Q F0 -(Insert the character typed.)144 120 Q F1(transpose\255chars \(C\255t\)) -108 132 Q F0 .322(Drag the character before point forw)144 144 R .321 +SF -.25(fo)108 84 S(rward\255backward\255delete\255char).25 E F0 .474 +(Delete the character under the cursor)144 96 R 2.974(,u)-.4 G .474 +(nless the cursor is at the end of the line, in which case the)-2.974 F +(character behind the cursor is deleted.)144 108 Q F1 +(quoted\255insert \(C\255q, C\255v\))108 120 Q F0 .778(Add the ne)144 +132 R .779(xt character typed to the line v)-.15 F 3.279(erbatim. This) +-.15 F .779(is ho)3.279 F 3.279(wt)-.25 G 3.279(oi)-3.279 G .779 +(nsert characters lik)-3.279 F(e)-.1 E F1(C\255q)3.279 E F0 3.279(,f)C +(or)-3.279 E -.15(ex)144 144 S(ample.).15 E F1(tab\255insert \(C\255v T) +108 156 Q(AB\))-.9 E F0(Insert a tab character)144 168 Q(.)-.55 E F1 +(self\255insert \(a, b, A, 1, !, ...\))108 180 Q F0 +(Insert the character typed.)144 192 Q F1(transpose\255chars \(C\255t\)) +108 204 Q F0 .322(Drag the character before point forw)144 216 R .321 (ard o)-.1 F -.15(ve)-.15 G 2.821(rt).15 G .321 (he character at point, mo)-2.821 F .321(ving point forw)-.15 F .321 (ard as well.)-.1 F 1.182 -(If point is at the end of the line, then this transposes the tw)144 156 +(If point is at the end of the line, then this transposes the tw)144 228 R 3.683(oc)-.1 G 1.183(haracters before point.)-3.683 F(Ne)6.183 E -.05 -(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 168 Q(guments ha)-.18 E .3 +(ga)-.15 G(ti).05 E -.15(ve)-.25 G(ar)144 240 Q(guments ha)-.18 E .3 -.15(ve n)-.2 H 2.5(oe).15 G -.25(ff)-2.5 G(ect.).25 E F1 -(transpose\255w)108 180 Q(ords \(M\255t\))-.1 E F0 .024(Drag the w)144 -192 R .024(ord before point past the w)-.1 F .023(ord after point, mo) +(transpose\255w)108 252 Q(ords \(M\255t\))-.1 E F0 .024(Drag the w)144 +264 R .024(ord before point past the w)-.1 F .023(ord after point, mo) -.1 F .023(ving point o)-.15 F -.15(ve)-.15 G 2.523(rt).15 G .023(hat w) -2.523 F .023(ord as well.)-.1 F .023(If point)5.023 F -(is at the end of the line, this transposes the last tw)144 204 Q 2.5 -(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 216 Q -(ord \(M\255u\))-.1 E F0 1.698(Uppercase the current \(or follo)144 228 +(is at the end of the line, this transposes the last tw)144 276 Q 2.5 +(ow)-.1 G(ords on the line.)-2.6 E F1(upcase\255w)108 288 Q +(ord \(M\255u\))-.1 E F0 1.698(Uppercase the current \(or follo)144 300 R 1.698(wing\) w)-.25 F 4.198(ord. W)-.1 F 1.698(ith a ne)-.4 F -.05(ga) -.15 G(ti).05 E 1.999 -.15(ve a)-.25 H -.18(rg).15 G 1.699 -(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 240 S(rd, b).1 E -(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 252 Q -(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 264 Q 1.648 +(ument, uppercase the pre).18 F(vious)-.25 E -.1(wo)144 312 S(rd, b).1 E +(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1(do)108 324 Q +(wncase\255w)-.1 E(ord \(M\255l\))-.1 E F0(Lo)144 336 Q 1.648 (wercase the current \(or follo)-.25 F 1.648(wing\) w)-.25 F 4.148 (ord. W)-.1 F 1.647(ith a ne)-.4 F -.05(ga)-.15 G(ti).05 E 1.947 -.15 (ve a)-.25 H -.18(rg).15 G 1.647(ument, lo).18 F 1.647(wercase the pre) --.25 F(vious)-.25 E -.1(wo)144 276 S(rd, b).1 E(ut do not mo)-.2 E .3 --.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 288 Q -(ord \(M\255c\))-.1 E F0 1.974(Capitalize the current \(or follo)144 300 +-.25 F(vious)-.25 E -.1(wo)144 348 S(rd, b).1 E(ut do not mo)-.2 E .3 +-.15(ve p)-.15 H(oint.).15 E F1(capitalize\255w)108 360 Q +(ord \(M\255c\))-.1 E F0 1.974(Capitalize the current \(or follo)144 372 R 1.974(wing\) w)-.25 F 4.474(ord. W)-.1 F 1.974(ith a ne)-.4 F -.05(ga) -.15 G(ti).05 E 2.274 -.15(ve a)-.25 H -.18(rg).15 G 1.975 -(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 312 S(rd, b).1 -E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 324 -S(rwrite\255mode).1 E F0 -.8(To)144 336 S .438(ggle o).8 F -.15(ve)-.15 +(ument, capitalize the pre).18 F(vious)-.25 E -.1(wo)144 384 S(rd, b).1 +E(ut do not mo)-.2 E .3 -.15(ve p)-.15 H(oint.).15 E F1 -.1(ove)108 396 +S(rwrite\255mode).1 E F0 -.8(To)144 408 S .438(ggle o).8 F -.15(ve)-.15 G .438(rwrite mode.).15 F -.4(Wi)5.438 G .438(th an e).4 F .438 (xplicit positi)-.15 F .737 -.15(ve n)-.25 H .437(umeric ar).15 F .437 (gument, switches to o)-.18 F -.15(ve)-.15 G .437(rwrite mode.).15 F -.4 -(Wi)144 348 S .78(th an e).4 F .781(xplicit non-positi)-.15 F 1.081 -.15 +(Wi)144 420 S .78(th an e).4 F .781(xplicit non-positi)-.15 F 1.081 -.15 (ve n)-.25 H .781(umeric ar).15 F .781(gument, switches to insert mode.) --.18 F .781(This command af)5.781 F(fects)-.25 E(only)144 360 Q F1 +-.18 F .781(This command af)5.781 F(fects)-.25 E(only)144 432 Q F1 (emacs)4.395 E F0(mode;)4.395 E F1(vi)4.395 E F0 1.894(mode does o)4.395 F -.15(ve)-.15 G 1.894(rwrite dif).15 F(ferently)-.25 E 6.894(.E)-.65 G 1.894(ach call to)-6.894 F/F2 10/Times-Italic@0 SF -.37(re)4.394 G (adline\(\)).37 E F0 1.894(starts in insert)4.394 F 3.968(mode. In)144 -372 R -.15(ove)3.968 G 1.468(rwrite mode, characters bound to).15 F F1 +444 R -.15(ove)3.968 G 1.468(rwrite mode, characters bound to).15 F F1 (self\255insert)3.969 E F0 1.469(replace the te)3.969 F 1.469 -(xt at point rather than)-.15 F .958(pushing the te)144 384 R .958 +(xt at point rather than)-.15 F .958(pushing the te)144 456 R .958 (xt to the right.)-.15 F .957(Characters bound to)5.958 F F1 (backward\255delete\255char)3.457 E F0 .957(replace the character)3.457 -F(before point with a space.)144 396 Q(By def)5 E -(ault, this command is unbound.)-.1 E F1(Killing and Y)87 412.8 Q -(anking)-.85 E(kill\255line \(C\255k\))108 424.8 Q F0(Kill the te)144 -436.8 Q(xt from point to the end of the line.)-.15 E F1 -(backward\255kill\255line \(C\255x Rubout\))108 448.8 Q F0(Kill backw) -144 460.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 -(unix\255line\255discard \(C\255u\))108 472.8 Q F0(Kill backw)144 484.8 +F(before point with a space.)144 468 Q(By def)5 E +(ault, this command is unbound.)-.1 E F1(Killing and Y)87 484.8 Q +(anking)-.85 E(kill\255line \(C\255k\))108 496.8 Q F0(Kill the te)144 +508.8 Q(xt from point to the end of the line.)-.15 E F1 +(backward\255kill\255line \(C\255x Rubout\))108 520.8 Q F0(Kill backw) +144 532.8 Q(ard to the be)-.1 E(ginning of the line.)-.15 E F1 +(unix\255line\255discard \(C\255u\))108 544.8 Q F0(Kill backw)144 556.8 Q(ard from point to the be)-.1 E(ginning of the line.)-.15 E (The killed te)5 E(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt) --2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 496.8 Q F0 +-2.5 G(he kill-ring.)-2.5 E F1(kill\255whole\255line)108 568.8 Q F0 (Kill all characters on the current line, no matter where point is.)144 -508.8 Q F1(kill\255w)108 520.8 Q(ord \(M\255d\))-.1 E F0 .728 -(Kill from point to the end of the current w)144 532.8 R .729 +580.8 Q F1(kill\255w)108 592.8 Q(ord \(M\255d\))-.1 E F0 .728 +(Kill from point to the end of the current w)144 604.8 R .729 (ord, or if between w)-.1 F .729(ords, to the end of the ne)-.1 F .729 -(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 544.8 S +(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 616.8 S (rd boundaries are the same as those used by).8 E F1 -.25(fo)2.5 G -(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 556.8 Q -(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 568.8 Q(ord behind point.) +(rward\255w).25 E(ord)-.1 E F0(.)A F1(backward\255kill\255w)108 628.8 Q +(ord \(M\255Rubout\))-.1 E F0(Kill the w)144 640.8 Q(ord behind point.) -.1 E -.8(Wo)5 G(rd boundaries are the same as those used by).8 E F1 -(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(shell\255kill\255w)108 580.8 Q -(ord)-.1 E F0 .729(Kill from point to the end of the current w)144 592.8 +(backward\255w)2.5 E(ord)-.1 E F0(.)A F1(shell\255kill\255w)108 652.8 Q +(ord)-.1 E F0 .729(Kill from point to the end of the current w)144 664.8 R .728(ord, or if between w)-.1 F .728(ords, to the end of the ne)-.1 F -.728(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 604.8 S +.728(xt w)-.15 F(ord.)-.1 E -.8(Wo)144 676.8 S (rd boundaries are the same as those used by).8 E F1(shell\255f)2.5 E (orward\255w)-.25 E(ord)-.1 E F0(.)A F1(shell\255backward\255kill\255w) -108 616.8 Q(ord)-.1 E F0 3.025(Kill the w)144 628.8 R 3.025 +108 688.8 Q(ord)-.1 E F0 3.025(Kill the w)144 700.8 R 3.025 (ord behind point.)-.1 F -.8(Wo)8.025 G 3.025 (rd boundaries are the same as those used by).8 F F1(shell\255back-) -5.525 E(ward\255w)144 640.8 Q(ord)-.1 E F0(.)A F1(unix\255w)108 652.8 Q -(ord\255rubout \(C\255w\))-.1 E F0 .365(Kill the w)144 664.8 R .365 -(ord behind point, using white space as a w)-.1 F .364(ord boundary)-.1 -F 5.364(.T)-.65 G .364(he killed te)-5.364 F .364(xt is sa)-.15 F -.15 -(ve)-.2 G 2.864(do).15 G 2.864(nt)-2.864 G(he)-2.864 E(kill-ring.)144 -676.8 Q F1(unix\255\214lename\255rubout)108 688.8 Q F0 .166(Kill the w) -144 700.8 R .166 -(ord behind point, using white space and the slash character as the w) --.1 F .167(ord boundaries.)-.1 F(The)5.167 E(killed te)144 712.8 Q -(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)-2.5 G(he kill-ring.) --2.5 E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(45)190.395 E 0 Cg -EP +5.525 E(ward\255w)144 712.8 Q(ord)-.1 E F0(.)A(GNU Bash 4.4)72 768 Q +(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(45)185.545 E 0 Cg EP %%Page: 46 46 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(delete\255horizontal\255space \(M\255\\\))108 84 Q F0 -(Delete all spaces and tabs around point.)144 96 Q F1(kill\255r)108 108 -Q(egion)-.18 E F0(Kill the te)144 120 Q(xt in the current re)-.15 E -(gion.)-.15 E F1(copy\255r)108 132 Q(egion\255as\255kill)-.18 E F0(Cop) -144 144 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E +SF(unix\255w)108 84 Q(ord\255rubout \(C\255w\))-.1 E F0 .365(Kill the w) +144 96 R .365(ord behind point, using white space as a w)-.1 F .364 +(ord boundary)-.1 F 5.364(.T)-.65 G .364(he killed te)-5.364 F .364 +(xt is sa)-.15 F -.15(ve)-.2 G 2.864(do).15 G 2.864(nt)-2.864 G(he) +-2.864 E(kill-ring.)144 108 Q F1(unix\255\214lename\255rubout)108 120 Q +F0 .166(Kill the w)144 132 R .166 +(ord behind point, using white space and the slash character as the w) +-.1 F .167(ord boundaries.)-.1 F(The)5.167 E(killed te)144 144 Q +(xt is sa)-.15 E -.15(ve)-.2 G 2.5(do).15 G 2.5(nt)-2.5 G(he kill-ring.) +-2.5 E F1(delete\255horizontal\255space \(M\255\\\))108 156 Q F0 +(Delete all spaces and tabs around point.)144 168 Q F1(kill\255r)108 180 +Q(egion)-.18 E F0(Kill the te)144 192 Q(xt in the current re)-.15 E +(gion.)-.15 E F1(copy\255r)108 204 Q(egion\255as\255kill)-.18 E F0(Cop) +144 216 Q 2.5(yt)-.1 G(he te)-2.5 E(xt in the re)-.15 E (gion to the kill b)-.15 E(uf)-.2 E(fer)-.25 E(.)-.55 E F1 -(copy\255backward\255w)108 156 Q(ord)-.1 E F0(Cop)144 168 Q 4.801(yt)-.1 +(copy\255backward\255w)108 228 Q(ord)-.1 E F0(Cop)144 240 Q 4.801(yt)-.1 G 2.301(he w)-4.801 F 2.301(ord before point to the kill b)-.1 F(uf)-.2 E(fer)-.25 E 7.301(.T)-.55 G 2.301(he w)-7.301 F 2.3 -(ord boundaries are the same as)-.1 F F1(back-)4.8 E(ward\255w)144 180 Q -(ord)-.1 E F0(.)A F1(copy\255f)108 192 Q(orward\255w)-.25 E(ord)-.1 E F0 -(Cop)144 204 Q 4.507(yt)-.1 G 2.007(he w)-4.507 F 2.007(ord follo)-.1 F +(ord boundaries are the same as)-.1 F F1(back-)4.8 E(ward\255w)144 252 Q +(ord)-.1 E F0(.)A F1(copy\255f)108 264 Q(orward\255w)-.25 E(ord)-.1 E F0 +(Cop)144 276 Q 4.507(yt)-.1 G 2.007(he w)-4.507 F 2.007(ord follo)-.1 F 2.007(wing point to the kill b)-.25 F(uf)-.2 E(fer)-.25 E 7.008(.T)-.55 G 2.008(he w)-7.008 F 2.008(ord boundaries are the same as)-.1 F F1 -.25 -(fo)4.508 G -.37(r-).25 G(ward\255w)144 216 Q(ord)-.1 E F0(.)A F1 -(yank \(C\255y\))108 228 Q F0 -1(Ya)144 240 S +(fo)4.508 G -.37(r-).25 G(ward\255w)144 288 Q(ord)-.1 E F0(.)A F1 +(yank \(C\255y\))108 300 Q F0 -1(Ya)144 312 S (nk the top of the kill ring into the b)1 E(uf)-.2 E(fer at point.)-.25 -E F1(yank\255pop \(M\255y\))108 252 Q F0 -(Rotate the kill ring, and yank the ne)144 264 Q 2.5(wt)-.25 G 2.5 +E F1(yank\255pop \(M\255y\))108 324 Q F0 +(Rotate the kill ring, and yank the ne)144 336 Q 2.5(wt)-.25 G 2.5 (op. Only)-2.5 F -.1(wo)2.5 G(rks follo).1 E(wing)-.25 E F1(yank)2.5 E -F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 280.8 Q -(guments)-.1 E(digit\255ar)108 292.8 Q +F0(or)2.5 E F1(yank\255pop)2.5 E F0(.)A F1(Numeric Ar)87 352.8 Q +(guments)-.1 E(digit\255ar)108 364.8 Q (gument \(M\2550, M\2551, ..., M\255\255\))-.1 E F0 .367 -(Add this digit to the ar)144 304.8 R .367 +(Add this digit to the ar)144 376.8 R .367 (gument already accumulating, or start a ne)-.18 F 2.867(wa)-.25 G -.18 (rg)-2.867 G 2.867(ument. M\255\255).18 F .366(starts a ne)2.867 F -.05 -(ga)-.15 G(-).05 E(ti)144 316.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G -(ument.).18 E F1(uni)108 328.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 -E F0 .778(This is another w)144 340.8 R .779(ay to specify an ar)-.1 F +(ga)-.15 G(-).05 E(ti)144 388.8 Q .3 -.15(ve a)-.25 H -.18(rg).15 G +(ument.).18 E F1(uni)108 400.8 Q -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 +E F0 .778(This is another w)144 412.8 R .779(ay to specify an ar)-.1 F 3.279(gument. If)-.18 F .779(this command is follo)3.279 F .779 (wed by one or more digits,)-.25 F 1.376 (optionally with a leading minus sign, those digits de\214ne the ar)144 -352.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 -364.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni) +424.8 R 3.876(gument. If)-.18 F 1.376(the command is fol-)3.876 F(lo)144 +436.8 Q 1.17(wed by digits, e)-.25 F -.15(xe)-.15 G(cuting).15 E F1(uni) 3.67 E -.1(ve)-.1 G(rsal\255ar).1 E(gument)-.1 E F0(ag)3.67 E 1.17 (ain ends the numeric ar)-.05 F 1.17(gument, b)-.18 F 1.17(ut is other) --.2 F(-)-.2 E .899(wise ignored.)144 376.8 R .898 +-.2 F(-)-.2 E .899(wise ignored.)144 448.8 R .898 (As a special case, if this command is immediately follo)5.899 F .898 (wed by a character that is)-.25 F 1.23 -(neither a digit nor minus sign, the ar)144 388.8 R 1.23 +(neither a digit nor minus sign, the ar)144 460.8 R 1.23 (gument count for the ne)-.18 F 1.23(xt command is multiplied by four) --.15 F(.)-.55 E .823(The ar)144 400.8 R .823 +-.15 F(.)-.55 E .823(The ar)144 472.8 R .823 (gument count is initially one, so e)-.18 F -.15(xe)-.15 G .823 (cuting this function the \214rst time mak).15 F .822(es the ar)-.1 F -(gument)-.18 E(count four)144 412.8 Q 2.5(,as)-.4 G(econd time mak)-2.5 +(gument)-.18 E(count four)144 484.8 Q 2.5(,as)-.4 G(econd time mak)-2.5 E(es the ar)-.1 E(gument count sixteen, and so on.)-.18 E F1(Completing) -87 429.6 Q(complete \(T)108 441.6 Q(AB\))-.9 E F0 1.137 -(Attempt to perform completion on the te)144 453.6 R 1.137 +87 501.6 Q(complete \(T)108 513.6 Q(AB\))-.9 E F0 1.137 +(Attempt to perform completion on the te)144 525.6 R 1.137 (xt before point.)-.15 F F1(Bash)6.137 E F0 1.137 -(attempts completion treating the)3.637 F(te)144 465.6 Q .533(xt as a v) +(attempts completion treating the)3.637 F(te)144 537.6 Q .533(xt as a v) -.15 F .533(ariable \(if the te)-.25 F .533(xt be)-.15 F .533(gins with) -.15 F F1($)3.033 E F0 .533(\), username \(if the te)B .532(xt be)-.15 F .532(gins with)-.15 F F1(~)3.032 E F0 .532(\), hostname \(if the)B(te) -144 477.6 Q .701(xt be)-.15 F .701(gins with)-.15 F F1(@)3.201 E F0 .701 +144 549.6 Q .701(xt be)-.15 F .701(gins with)-.15 F F1(@)3.201 E F0 .701 (\), or command \(including aliases and functions\) in turn.)B .702 (If none of these pro-)5.701 F -(duces a match, \214lename completion is attempted.)144 489.6 Q F1 -(possible\255completions \(M\255?\))108 501.6 Q F0 -(List the possible completions of the te)144 513.6 Q(xt before point.) --.15 E F1(insert\255completions \(M\255*\))108 525.6 Q F0 .783 -(Insert all completions of the te)144 537.6 R .783 +(duces a match, \214lename completion is attempted.)144 561.6 Q F1 +(possible\255completions \(M\255?\))108 573.6 Q F0 +(List the possible completions of the te)144 585.6 Q(xt before point.) +-.15 E F1(insert\255completions \(M\255*\))108 597.6 Q F0 .783 +(Insert all completions of the te)144 609.6 R .783 (xt before point that w)-.15 F .783(ould ha)-.1 F 1.083 -.15(ve b)-.2 H .783(een generated by).15 F F1(possible\255com-)3.282 E(pletions)144 -549.6 Q F0(.)A F1(menu\255complete)108 561.6 Q F0 .928(Similar to)144 -573.6 R F1(complete)3.428 E F0 3.428(,b)C .929(ut replaces the w)-3.628 +621.6 Q F0(.)A F1(menu\255complete)108 633.6 Q F0 .928(Similar to)144 +645.6 R F1(complete)3.428 E F0 3.428(,b)C .929(ut replaces the w)-3.628 F .929(ord to be completed with a single match from the list of)-.1 F -1.194(possible completions.)144 585.6 R 1.194(Repeated e)6.194 F -.15 +1.194(possible completions.)144 657.6 R 1.194(Repeated e)6.194 F -.15 (xe)-.15 G 1.194(cution of).15 F F1(menu\255complete)3.694 E F0 1.193 (steps through the list of possible)3.694 F .828 -(completions, inserting each match in turn.)144 597.6 R .828 +(completions, inserting each match in turn.)144 669.6 R .828 (At the end of the list of completions, the bell is rung)5.828 F .727 -(\(subject to the setting of)144 609.6 R F1(bell\255style)3.227 E F0 +(\(subject to the setting of)144 681.6 R F1(bell\255style)3.227 E F0 3.227(\)a)C .727(nd the original te)-3.227 F .727(xt is restored.)-.15 F .727(An ar)5.727 F .727(gument of)-.18 F/F2 10/Times-Italic@0 SF(n)3.227 E F0(mo)3.227 E -.15(ve)-.15 G(s).15 E F2(n)3.227 E F0 1.73 -(positions forw)144 621.6 R 1.73(ard in the list of matches; a ne)-.1 F +(positions forw)144 693.6 R 1.73(ard in the list of matches; a ne)-.1 F -.05(ga)-.15 G(ti).05 E 2.03 -.15(ve a)-.25 H -.18(rg).15 G 1.73 (ument may be used to mo).18 F 2.03 -.15(ve b)-.15 H(ackw).15 E(ard)-.1 -E(through the list.)144 633.6 Q(This command is intended to be bound to) +E(through the list.)144 705.6 Q(This command is intended to be bound to) 5 E F1 -.9(TA)2.5 G(B).9 E F0 2.5(,b)C(ut is unbound by def)-2.7 E -(ault.)-.1 E F1(menu\255complete\255backward)108 645.6 Q F0 .82 -(Identical to)144 657.6 R F1(menu\255complete)3.32 E F0 3.32(,b)C .82 -(ut mo)-3.52 F -.15(ve)-.15 G 3.32(sb).15 G(ackw)-3.32 E .82 -(ard through the list of possible completions, as if)-.1 F F1 -(menu\255complete)144 669.6 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5 -(nan).15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg) -.15 G 2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E -F1(delete\255char\255or\255list)108 681.6 Q F0 .234 -(Deletes the character under the cursor if not at the be)144 693.6 R -.234(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete\255char) -2.735 E F0(\).)A .425(If at the end of the line, beha)144 705.6 R -.15 -(ve)-.2 G 2.925(si).15 G .425(dentically to)-2.925 F F1 -(possible\255completions)2.925 E F0 5.425(.T)C .425 -(his command is unbound)-5.425 F(by def)144 717.6 Q(ault.)-.1 E -(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(46)190.395 E 0 Cg EP +(ault.)-.1 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G +(mber 16).15 E(46)185.545 E 0 Cg EP %%Page: 47 47 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(complete\255\214lename \(M\255/\))108 84 Q F0 -(Attempt \214lename completion on the te)144 96 Q(xt before point.)-.15 -E F1(possible\255\214lename\255completions \(C\255x /\))108 108 Q F0 -(List the possible completions of the te)144 120 Q +SF(menu\255complete\255backward)108 84 Q F0 .82(Identical to)144 96 R F1 +(menu\255complete)3.32 E F0 3.32(,b)C .82(ut mo)-3.52 F -.15(ve)-.15 G +3.32(sb).15 G(ackw)-3.32 E .82 +(ard through the list of possible completions, as if)-.1 F F1 +(menu\255complete)144 108 Q F0(had been gi)2.5 E -.15(ve)-.25 G 2.5(nan) +.15 G -2.25 -.15(eg a)-2.5 H(ti).15 E .3 -.15(ve a)-.25 H -.18(rg).15 G +2.5(ument. This).18 F(command is unbound by def)2.5 E(ault.)-.1 E F1 +(delete\255char\255or\255list)108 120 Q F0 .234 +(Deletes the character under the cursor if not at the be)144 132 R .234 +(ginning or end of the line \(lik)-.15 F(e)-.1 E F1(delete\255char)2.735 +E F0(\).)A .425(If at the end of the line, beha)144 144 R -.15(ve)-.2 G +2.925(si).15 G .425(dentically to)-2.925 F F1(possible\255completions) +2.925 E F0 5.425(.T)C .425(his command is unbound)-5.425 F(by def)144 +156 Q(ault.)-.1 E F1(complete\255\214lename \(M\255/\))108 168 Q F0 +(Attempt \214lename completion on the te)144 180 Q(xt before point.)-.15 +E F1(possible\255\214lename\255completions \(C\255x /\))108 192 Q F0 +(List the possible completions of the te)144 204 Q (xt before point, treating it as a \214lename.)-.15 E F1 -(complete\255user)108 132 Q(name \(M\255~\))-.15 E F0 -(Attempt completion on the te)144 144 Q +(complete\255user)108 216 Q(name \(M\255~\))-.15 E F0 +(Attempt completion on the te)144 228 Q (xt before point, treating it as a username.)-.15 E F1(possible\255user) -108 156 Q(name\255completions \(C\255x ~\))-.15 E F0 -(List the possible completions of the te)144 168 Q +108 240 Q(name\255completions \(C\255x ~\))-.15 E F0 +(List the possible completions of the te)144 252 Q (xt before point, treating it as a username.)-.15 E F1(complete\255v)108 -180 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 192 Q +264 Q(ariable \(M\255$\))-.1 E F0(Attempt completion on the te)144 276 Q (xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 -(possible\255v)108 204 Q(ariable\255completions \(C\255x $\))-.1 E F0 -(List the possible completions of the te)144 216 Q +(possible\255v)108 288 Q(ariable\255completions \(C\255x $\))-.1 E F0 +(List the possible completions of the te)144 300 Q (xt before point, treating it as a shell v)-.15 E(ariable.)-.25 E F1 -(complete\255hostname \(M\255@\))108 228 Q F0 -(Attempt completion on the te)144 240 Q +(complete\255hostname \(M\255@\))108 312 Q F0 +(Attempt completion on the te)144 324 Q (xt before point, treating it as a hostname.)-.15 E F1 -(possible\255hostname\255completions \(C\255x @\))108 252 Q F0 -(List the possible completions of the te)144 264 Q +(possible\255hostname\255completions \(C\255x @\))108 336 Q F0 +(List the possible completions of the te)144 348 Q (xt before point, treating it as a hostname.)-.15 E F1 -(complete\255command \(M\255!\))108 276 Q F0 .58 -(Attempt completion on the te)144 288 R .581 +(complete\255command \(M\255!\))108 360 Q F0 .58 +(Attempt completion on the te)144 372 R .581 (xt before point, treating it as a command name.)-.15 F .581 -(Command comple-)5.581 F .715(tion attempts to match the te)144 300 R +(Command comple-)5.581 F .715(tion attempts to match the te)144 384 R .715(xt ag)-.15 F .715(ainst aliases, reserv)-.05 F .715(ed w)-.15 F .715(ords, shell functions, shell b)-.1 F .715(uiltins, and)-.2 F -(\214nally e)144 312 Q -.15(xe)-.15 G +(\214nally e)144 396 Q -.15(xe)-.15 G (cutable \214lenames, in that order).15 E(.)-.55 E F1 -(possible\255command\255completions \(C\255x !\))108 324 Q F0 -(List the possible completions of the te)144 336 Q +(possible\255command\255completions \(C\255x !\))108 408 Q F0 +(List the possible completions of the te)144 420 Q (xt before point, treating it as a command name.)-.15 E F1 -(dynamic\255complete\255history \(M\255T)108 348 Q(AB\))-.9 E F0 .424 -(Attempt completion on the te)144 360 R .425 +(dynamic\255complete\255history \(M\255T)108 432 Q(AB\))-.9 E F0 .424 +(Attempt completion on the te)144 444 R .425 (xt before point, comparing the te)-.15 F .425(xt ag)-.15 F .425 (ainst lines from the history list)-.05 F -(for possible completion matches.)144 372 Q F1(dab)108 384 Q(br)-.1 E +(for possible completion matches.)144 456 Q F1(dab)108 468 Q(br)-.1 E -.15(ev)-.18 G(\255expand).15 E F0 .611 -(Attempt menu completion on the te)144 396 R .611 +(Attempt menu completion on the te)144 480 R .611 (xt before point, comparing the te)-.15 F .61(xt ag)-.15 F .61 (ainst lines from the his-)-.05 F -(tory list for possible completion matches.)144 408 Q F1 -(complete\255into\255braces \(M\255{\))108 420 Q F0 .4(Perform \214lena\ +(tory list for possible completion matches.)144 492 Q F1 +(complete\255into\255braces \(M\255{\))108 504 Q F0 .4(Perform \214lena\ me completion and insert the list of possible completions enclosed with\ -in braces so)144 432 R(the list is a)144 444 Q -.25(va)-.2 G +in braces so)144 516 R(the list is a)144 528 Q -.25(va)-.2 G (ilable to the shell \(see).25 E F1(Brace Expansion)2.5 E F0(abo)2.5 E --.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 460.8 S(yboard Macr).25 E(os)-.18 -E(start\255kbd\255macr)108 472.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) -.833 E F0(Be)144 484.8 Q(gin sa)-.15 E +-.15(ve)-.15 G(\).).15 E F1 -.25(Ke)87 544.8 S(yboard Macr).25 E(os)-.18 +E(start\255kbd\255macr)108 556.8 Q 2.5(o\()-.18 G(C\255x \()-2.5 E(\)) +.833 E F0(Be)144 568.8 Q(gin sa)-.15 E (ving the characters typed into the current k)-.2 E -.15(ey)-.1 G -(board macro.).15 E F1(end\255kbd\255macr)108 496.8 Q 2.5(o\()-.18 G -(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 508.8 Q +(board macro.).15 E F1(end\255kbd\255macr)108 580.8 Q 2.5(o\()-.18 G +(C\255x \))-2.5 E(\)).833 E F0(Stop sa)144 592.8 Q (ving the characters typed into the current k)-.2 E -.15(ey)-.1 G (board macro and store the de\214nition.).15 E F1 -(call\255last\255kbd\255macr)108 520.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 -E F0(Re-e)144 532.8 Q -.15(xe)-.15 G 1(cute the last k).15 F -.15(ey)-.1 +(call\255last\255kbd\255macr)108 604.8 Q 2.5(o\()-.18 G(C\255x e\))-2.5 +E F0(Re-e)144 616.8 Q -.15(xe)-.15 G 1(cute the last k).15 F -.15(ey)-.1 G .999(board macro de\214ned, by making the characters in the macro app\ -ear as if).15 F(typed at the k)144 544.8 Q -.15(ey)-.1 G(board.).15 E F1 -(print\255last\255kbd\255macr)108 556.8 Q 2.5(o\()-.18 G(\))-2.5 E F0 -(Print the last k)144 568.8 Q -.15(ey)-.1 G +ear as if).15 F(typed at the k)144 628.8 Q -.15(ey)-.1 G(board.).15 E F1 +(print\255last\255kbd\255macr)108 640.8 Q 2.5(o\()-.18 G(\))-2.5 E F0 +(Print the last k)144 652.8 Q -.15(ey)-.1 G (board macro de\214ned in a format suitable for the).15 E/F2 10 /Times-Italic@0 SF(inputr)2.5 E(c)-.37 E F0(\214le.)2.5 E F1 -(Miscellaneous)87 585.6 Q -.18(re)108 597.6 S.18 E +(Miscellaneous)87 669.6 Q -.18(re)108 681.6 S.18 E (ead\255init\255\214le \(C\255x C\255r\))-.18 E F0 1.776 -(Read in the contents of the)144 609.6 R F2(inputr)4.276 E(c)-.37 E F0 +(Read in the contents of the)144 693.6 R F2(inputr)4.276 E(c)-.37 E F0 1.777(\214le, and incorporate an)4.276 F 4.277(yb)-.15 G 1.777 (indings or v)-4.277 F 1.777(ariable assignments)-.25 F(found there.)144 -621.6 Q F1(abort \(C\255g\))108 633.6 Q F0 3.249 -(Abort the current editing command and ring the terminal')144 645.6 R -5.748(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1 -(bell\255style)144 657.6 Q F0(\).)A F1(do\255upper)108 669.6 Q -(case\255v)-.18 E(ersion \(M\255a, M\255b, M\255)-.1 E F2(x)A F1 2.5(,.) -C(..\))-2.5 E F0 1.755(If the meta\214ed character)144 681.6 R F2(x) -4.255 E F0 1.755(is lo)4.255 F 1.756 -(wercase, run the command that is bound to the corresponding)-.25 F -(uppercase character)144 693.6 Q(.)-.55 E F1(pr)108 705.6 Q -(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 717.6 Q -(xt character typed.)-.15 E/F3 9/Times-Bold@0 SF(ESC)5 E F1(f)2.25 E F0 -(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1(Meta\255f)2.5 E F0(.)A -(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(47)190.395 E 0 Cg EP +705.6 Q(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16) +.15 E(47)185.545 E 0 Cg EP %%Page: 48 48 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(undo \(C\255_, C\255x C\255u\))108 84 Q F0 -(Incremental undo, separately remembered for each line.)144 96 Q F1 --2.29 -.18(re v)108 108 T(ert\255line \(M\255r\)).08 E F0 1.095 -(Undo all changes made to this line.)144 120 R 1.095(This is lik)6.095 F +SF(abort \(C\255g\))108 84 Q F0 3.249 +(Abort the current editing command and ring the terminal')144 96 R 5.748 +(sb)-.55 G 3.248(ell \(subject to the setting of)-5.748 F F1 +(bell\255style)144 108 Q F0(\).)A F1(do\255upper)108 120 Q(case\255v) +-.18 E(ersion \(M\255a, M\255b, M\255)-.1 E/F2 10/Times-Italic@0 SF(x)A +F1 2.5(,.)C(..\))-2.5 E F0 1.755(If the meta\214ed character)144 132 R +F2(x)4.255 E F0 1.755(is lo)4.255 F 1.756 +(wercase, run the command that is bound to the corresponding)-.25 F +(uppercase character)144 144 Q(.)-.55 E F1(pr)108 156 Q +(e\214x\255meta \(ESC\))-.18 E F0(Metafy the ne)144 168 Q +(xt character typed.)-.15 E/F3 9/Times-Bold@0 SF(ESC)5 E F1(f)2.25 E F0 +(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1(Meta\255f)2.5 E F0(.)A F1 +(undo \(C\255_, C\255x C\255u\))108 180 Q F0 +(Incremental undo, separately remembered for each line.)144 192 Q F1 +-2.29 -.18(re v)108 204 T(ert\255line \(M\255r\)).08 E F0 1.095 +(Undo all changes made to this line.)144 216 R 1.095(This is lik)6.095 F 3.595(ee)-.1 G -.15(xe)-3.745 G 1.095(cuting the).15 F F1(undo)3.595 E F0 1.095(command enough times to)3.595 F -(return the line to its initial state.)144 132 Q F1 -(tilde\255expand \(M\255&\))108 144 Q F0(Perform tilde e)144 156 Q +(return the line to its initial state.)144 228 Q F1 +(tilde\255expand \(M\255&\))108 240 Q F0(Perform tilde e)144 252 Q (xpansion on the current w)-.15 E(ord.)-.1 E F1 -(set\255mark \(C\255@, M\255\))108 168 Q F0 -(Set the mark to the point.)144 180 Q(If a numeric ar)5 E +(set\255mark \(C\255@, M\255\))108 264 Q F0 +(Set the mark to the point.)144 276 Q(If a numeric ar)5 E (gument is supplied, the mark is set to that position.)-.18 E F1 -(exchange\255point\255and\255mark \(C\255x C\255x\))108 192 Q F0(Sw)144 -204 Q .282(ap the point with the mark.)-.1 F .283 +(exchange\255point\255and\255mark \(C\255x C\255x\))108 288 Q F0(Sw)144 +300 Q .282(ap the point with the mark.)-.1 F .283 (The current cursor position is set to the sa)5.283 F -.15(ve)-.2 G 2.783(dp).15 G .283(osition, and the old)-2.783 F(cursor position is sa) -144 216 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1 -(character\255sear)108 228 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144 240 S +144 312 Q -.15(ve)-.2 G 2.5(da).15 G 2.5(st)-2.5 G(he mark.)-2.5 E F1 +(character\255sear)108 324 Q(ch \(C\255]\))-.18 E F0 3.036(Ac)144 336 S .536(haracter is read and point is mo)-3.036 F -.15(ve)-.15 G 3.035(dt) .15 G 3.035(ot)-3.035 G .535(he ne)-3.035 F .535 (xt occurrence of that character)-.15 F 5.535(.A)-.55 G(ne)-2.5 E -.05 (ga)-.15 G(ti).05 E .835 -.15(ve c)-.25 H(ount).15 E(searches for pre) -144 252 Q(vious occurrences.)-.25 E F1(character\255sear)108 264 Q -(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 276 S 1.043 +144 348 Q(vious occurrences.)-.25 E F1(character\255sear)108 360 Q +(ch\255backward \(M\255C\255]\))-.18 E F0 3.543(Ac)144 372 S 1.043 (haracter is read and point is mo)-3.543 F -.15(ve)-.15 G 3.544(dt).15 G 3.544(ot)-3.544 G 1.044(he pre)-3.544 F 1.044 (vious occurrence of that character)-.25 F 6.044(.A)-.55 G(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15(ve)-.25 G -(count searches for subsequent occurrences.)144 288 Q F1 -(skip\255csi\255sequence)108 300 Q F0 1.827 -(Read enough characters to consume a multi-k)144 312 R 2.126 -.15(ey s) +(count searches for subsequent occurrences.)144 384 Q F1 +(skip\255csi\255sequence)108 396 Q F0 1.827 +(Read enough characters to consume a multi-k)144 408 R 2.126 -.15(ey s) -.1 H 1.826(equence such as those de\214ned for k).15 F -.15(ey)-.1 G -4.326(sl).15 G(ik)-4.326 E(e)-.1 E .79(Home and End.)144 324 R .791 +4.326(sl).15 G(ik)-4.326 E(e)-.1 E .79(Home and End.)144 420 R .791 (Such sequences be)5.79 F .791 (gin with a Control Sequence Indicator \(CSI\), usually ESC\255[.)-.15 F -.332(If this sequence is bound to "\\[", k)144 336 R -.15(ey)-.1 G 2.831 +.332(If this sequence is bound to "\\[", k)144 432 R -.15(ey)-.1 G 2.831 (sp).15 G .331(roducing such sequences will ha)-2.831 F .631 -.15(ve n) -.2 H 2.831(oe).15 G -.25(ff)-2.831 G .331(ect unless e).25 F(xplic-) -.15 E .026(itly bound to a readline command, instead of inserting stra\ -y characters into the editing b)144 348 R(uf)-.2 E(fer)-.25 E 5.026(.T) --.55 G(his)-5.026 E(is unbound by def)144 360 Q(ault, b)-.1 E +y characters into the editing b)144 444 R(uf)-.2 E(fer)-.25 E 5.026(.T) +-.55 G(his)-5.026 E(is unbound by def)144 456 Q(ault, b)-.1 E (ut usually bound to ESC\255[.)-.2 E F1(insert\255comment \(M\255#\))108 -372 Q F0 -.4(Wi)144 384 S .481(thout a numeric ar).4 F .481 +468 Q F0 -.4(Wi)144 480 S .481(thout a numeric ar).4 F .481 (gument, the v)-.18 F .481(alue of the readline)-.25 F F1 (comment\255begin)2.981 E F0 -.25(va)2.981 G .48 -(riable is inserted at the).25 F(be)144 396 Q .244 +(riable is inserted at the).25 F(be)144 492 Q .244 (ginning of the current line.)-.15 F .245(If a numeric ar)5.244 F .245 (gument is supplied, this command acts as a toggle: if)-.18 F .322 -(the characters at the be)144 408 R .321 +(the characters at the be)144 504 R .321 (ginning of the line do not match the v)-.15 F .321(alue of)-.25 F F1 (comment\255begin)2.821 E F0 2.821(,t)C .321(he v)-2.821 F .321(alue is) --.25 F .831(inserted, otherwise the characters in)144 420 R F1 +-.25 F .831(inserted, otherwise the characters in)144 516 R F1 (comment\255begin)3.331 E F0 .832(are deleted from the be)3.331 F .832 (ginning of the line.)-.15 F 1.469 -(In either case, the line is accepted as if a ne)144 432 R 1.468 +(In either case, the line is accepted as if a ne)144 528 R 1.468 (wline had been typed.)-.25 F 1.468(The def)6.468 F 1.468(ault v)-.1 F -1.468(alue of)-.25 F F1(com-)3.968 E(ment\255begin)144 444 Q F0 .839 +1.468(alue of)-.25 F F1(com-)3.968 E(ment\255begin)144 540 Q F0 .839 (causes this command to mak)3.339 F 3.339(et)-.1 G .839 (he current line a shell comment.)-3.339 F .84(If a numeric ar)5.84 F -(gu-)-.18 E(ment causes the comment character to be remo)144 456 Q -.15 +(gu-)-.18 E(ment causes the comment character to be remo)144 552 Q -.15 (ve)-.15 G(d, the line will be e).15 E -.15(xe)-.15 G -(cuted by the shell.).15 E F1(glob\255complete\255w)108 468 Q -(ord \(M\255g\))-.1 E F0 .792(The w)144 480 R .791 +(cuted by the shell.).15 E F1(glob\255complete\255w)108 564 Q +(ord \(M\255g\))-.1 E F0 .792(The w)144 576 R .791 (ord before point is treated as a pattern for pathname e)-.1 F .791 -(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 492 +(xpansion, with an asterisk implicitly)-.15 F 2.5(appended. This)144 588 R(pattern is used to generate a list of matching \214lenames for possib\ -le completions.)2.5 E F1(glob\255expand\255w)108 504 Q(ord \(C\255x *\)) --.1 E F0 .175(The w)144 516 R .176 +le completions.)2.5 E F1(glob\255expand\255w)108 600 Q(ord \(C\255x *\)) +-.1 E F0 .175(The w)144 612 R .176 (ord before point is treated as a pattern for pathname e)-.1 F .176 (xpansion, and the list of matching \214le-)-.15 F .516 -(names is inserted, replacing the w)144 528 R 3.016(ord. If)-.1 F 3.016 +(names is inserted, replacing the w)144 624 R 3.016(ord. If)-.1 F 3.016 (an)3.016 G .516(umeric ar)-3.016 F .516 (gument is supplied, an asterisk is appended)-.18 F(before pathname e) -144 540 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\)) -108 552 Q F0 .923(The list of e)144 564 R .923(xpansions that w)-.15 F +144 636 Q(xpansion.)-.15 E F1(glob\255list\255expansions \(C\255x g\)) +108 648 Q F0 .923(The list of e)144 660 R .923(xpansions that w)-.15 F .923(ould ha)-.1 F 1.223 -.15(ve b)-.2 H .923(een generated by).15 F F1 (glob\255expand\255w)3.423 E(ord)-.1 E F0 .923(is displayed, and)3.423 F -.872(the line is redra)144 576 R 3.372(wn. If)-.15 F 3.372(an)3.372 G +.872(the line is redra)144 672 R 3.372(wn. If)-.15 F 3.372(an)3.372 G .872(umeric ar)-3.372 F .872 (gument is supplied, an asterisk is appended before pathname)-.18 F -.15 -(ex)144 588 S(pansion.).15 E F1(dump\255functions)108 600 Q F0 .626 -(Print all of the functions and their k)144 612 R .926 -.15(ey b)-.1 H +(ex)144 684 S(pansion.).15 E F1(dump\255functions)108 696 Q F0 .626 +(Print all of the functions and their k)144 708 R .926 -.15(ey b)-.1 H .627(indings to the readline output stream.).15 F .627(If a numeric ar) 5.627 F(gu-)-.18 E -(ment is supplied, the output is formatted in such a w)144 624 Q -(ay that it can be made part of an)-.1 E/F2 10/Times-Italic@0 SF(inputr) -2.5 E(c)-.37 E F0(\214le.)2.5 E F1(dump\255v)108 636 Q(ariables)-.1 E F0 -1.8(Print all of the settable readline v)144 648 R 1.799 -(ariables and their v)-.25 F 1.799(alues to the readline output stream.) --.25 F 1.799(If a)6.799 F .304(numeric ar)144 660 R .304 -(gument is supplied, the output is formatted in such a w)-.18 F .304 -(ay that it can be made part of an)-.1 F F2(inputr)144 672 Q(c)-.37 E F0 -(\214le.)2.5 E F1(dump\255macr)108 684 Q(os)-.18 E F0 .593 -(Print all of the readline k)144 696 R .893 -.15(ey s)-.1 H .592 -(equences bound to macros and the strings the).15 F 3.092(yo)-.15 G -3.092(utput. If)-3.092 F 3.092(an)3.092 G(umeric)-3.092 E(ar)144 708 Q -.528(gument is supplied, the output is formatted in such a w)-.18 F .528 -(ay that it can be made part of an)-.1 F F2(inputr)3.028 E(c)-.37 E F0 -(\214le.)144 720 Q(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(48) -190.395 E 0 Cg EP +(ment is supplied, the output is formatted in such a w)144 720 Q +(ay that it can be made part of an)-.1 E F2(inputr)2.5 E(c)-.37 E F0 +(\214le.)2.5 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G +(mber 16).15 E(48)185.545 E 0 Cg EP %%Page: 49 49 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(display\255shell\255v)108 84 Q(ersion \(C\255x C\255v\))-.1 E F0 -(Display v)144 96 Q(ersion information about the current instance of) --.15 E F1(bash)2.5 E F0(.)A F1(Pr)87 112.8 Q(ogrammable Completion)-.18 -E F0 .147(When w)108 124.8 R .147(ord completion is attempted for an ar) --.1 F .147 +SF(dump\255v)108 84 Q(ariables)-.1 E F0 1.8 +(Print all of the settable readline v)144 96 R 1.799 +(ariables and their v)-.25 F 1.799(alues to the readline output stream.) +-.25 F 1.799(If a)6.799 F .304(numeric ar)144 108 R .304 +(gument is supplied, the output is formatted in such a w)-.18 F .304 +(ay that it can be made part of an)-.1 F/F2 10/Times-Italic@0 SF(inputr) +144 120 Q(c)-.37 E F0(\214le.)2.5 E F1(dump\255macr)108 132 Q(os)-.18 E +F0 .593(Print all of the readline k)144 144 R .893 -.15(ey s)-.1 H .592 +(equences bound to macros and the strings the).15 F 3.092(yo)-.15 G +3.092(utput. If)-3.092 F 3.092(an)3.092 G(umeric)-3.092 E(ar)144 156 Q +.528(gument is supplied, the output is formatted in such a w)-.18 F .528 +(ay that it can be made part of an)-.1 F F2(inputr)3.028 E(c)-.37 E F0 +(\214le.)144 168 Q F1(display\255shell\255v)108 180 Q +(ersion \(C\255x C\255v\))-.1 E F0(Display v)144 192 Q +(ersion information about the current instance of)-.15 E F1(bash)2.5 E +F0(.)A F1(Pr)87 208.8 Q(ogrammable Completion)-.18 E F0 .147(When w)108 +220.8 R .147(ord completion is attempted for an ar)-.1 F .147 (gument to a command for which a completion speci\214cation \(a)-.18 F -/F2 10/Times-Italic@0 SF(compspec)108 136.8 Q F0 3.828(\)h)C 1.329 +F2(compspec)108 232.8 Q F0 3.828(\)h)C 1.329 (as been de\214ned using the)-3.828 F F1(complete)3.829 E F0 -.2(bu) 3.829 G 1.329(iltin \(see).2 F/F3 9/Times-Bold@0 SF 1.329(SHELL B)3.829 F(UIL)-.09 E 1.329(TIN COMMANDS)-.828 F F0(belo)3.579 E 1.329(w\), the) --.25 F(programmable completion f)108 148.8 Q(acilities are in)-.1 E -.2 +-.25 F(programmable completion f)108 244.8 Q(acilities are in)-.1 E -.2 (vo)-.4 G -.1(ke).2 G(d.).1 E .498 -(First, the command name is identi\214ed.)108 165.6 R .498 +(First, the command name is identi\214ed.)108 261.6 R .498 (If the command w)5.498 F .497 (ord is the empty string \(completion attempted at)-.1 F .233(the be)108 -177.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233 +273.6 R .233(ginning of an empty line\), an)-.15 F 2.733(yc)-.15 G .233 (ompspec de\214ned with the)-2.733 F F12.733 E F0 .233(option to) 2.733 F F1(complete)2.733 E F0 .233(is used.)2.733 F .234(If a comp-) 5.234 F .481(spec has been de\214ned for that command, the compspec is \ -used to generate the list of possible completions)108 189.6 R .822 -(for the w)108 201.6 R 3.322(ord. If)-.1 F .822(the command w)3.322 F +used to generate the list of possible completions)108 285.6 R .822 +(for the w)108 297.6 R 3.322(ord. If)-.1 F .822(the command w)3.322 F .823(ord is a full pathname, a compspec for the full pathname is search\ -ed for)-.1 F 2.867(\214rst. If)108 213.6 R .366(no compspec is found fo\ +ed for)-.1 F 2.867(\214rst. If)108 309.6 R .366(no compspec is found fo\ r the full pathname, an attempt is made to \214nd a compspec for the po\ -rtion)2.867 F(follo)108 225.6 Q .298(wing the \214nal slash.)-.25 F .298 +rtion)2.867 F(follo)108 321.6 Q .298(wing the \214nal slash.)-.25 F .298 (If those searches do not result in a compspec, an)5.298 F 2.799(yc)-.15 G .299(ompspec de\214ned with the)-2.799 F F12.799 E F0(option to) -108 237.6 Q F1(complete)2.5 E F0(is used as the def)2.5 E(ault.)-.1 E +108 333.6 Q F1(complete)2.5 E F0(is used as the def)2.5 E(ault.)-.1 E .817(Once a compspec has been found, it is used to generate the list of\ - matching w)108 254.4 R 3.317(ords. If)-.1 F 3.317(ac)3.317 G .817 -(ompspec is not)-3.317 F(found, the def)108 266.4 Q(ault)-.1 E F1(bash) + matching w)108 350.4 R 3.317(ords. If)-.1 F 3.317(ac)3.317 G .817 +(ompspec is not)-3.317 F(found, the def)108 362.4 Q(ault)-.1 E F1(bash) 2.5 E F0(completion as described abo)2.5 E .3 -.15(ve u)-.15 H(nder).15 E F1(Completing)2.5 E F0(is performed.)2.5 E .463 -(First, the actions speci\214ed by the compspec are used.)108 283.2 R +(First, the actions speci\214ed by the compspec are used.)108 379.2 R .464(Only matches which are pre\214x)5.464 F .464(ed by the w)-.15 F -.464(ord being)-.1 F .596(completed are returned.)108 295.2 R .596 +.464(ord being)-.1 F .596(completed are returned.)108 391.2 R .596 (When the)5.596 F F13.096 E F0(or)3.095 E F13.095 E F0 .595 (option is used for \214lename or directory name completion, the)3.095 F -(shell v)108 307.2 Q(ariable)-.25 E F3(FIGNORE)2.5 E F0 -(is used to \214lter the matches.)2.25 E(An)108 324 Q 4.084(yc)-.15 G +(shell v)108 403.2 Q(ariable)-.25 E F3(FIGNORE)2.5 E F0 +(is used to \214lter the matches.)2.25 E(An)108 420 Q 4.084(yc)-.15 G 1.584(ompletions speci\214ed by a pathname e)-4.084 F 1.584 (xpansion pattern to the)-.15 F F14.084 E F0 1.584 -(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 336 S +(option are generated ne)4.084 F 4.084(xt. The)-.15 F -.1(wo)108 432 S .555(rds generated by the pattern need not match the w).1 F .554 (ord being completed.)-.1 F(The)5.554 E F3(GLOBIGNORE)3.054 E F0 .554 (shell v)2.804 F(ari-)-.25 E -(able is not used to \214lter the matches, b)108 348 Q(ut the)-.2 E F3 -(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 364.8 Q +(able is not used to \214lter the matches, b)108 444 Q(ut the)-.2 E F3 +(FIGNORE)2.5 E F0 -.25(va)2.25 G(riable is used.).25 E(Ne)108 460.8 Q .32(xt, the string speci\214ed as the ar)-.15 F .32(gument to the)-.18 F F12.82 E F0 .321(option is considered.)2.821 F .321 (The string is \214rst split using the)5.321 F .413(characters in the) -108 376.8 R F3(IFS)2.913 E F0 .412(special v)2.663 F .412 +108 472.8 R F3(IFS)2.913 E F0 .412(special v)2.663 F .412 (ariable as delimiters.)-.25 F .412(Shell quoting is honored.)5.412 F .412(Each w)5.412 F .412(ord is then e)-.1 F(xpanded)-.15 E .091 -(using brace e)108 388.8 R .091(xpansion, tilde e)-.15 F .092 +(using brace e)108 484.8 R .091(xpansion, tilde e)-.15 F .092 (xpansion, parameter and v)-.15 F .092(ariable e)-.25 F .092 (xpansion, command substitution, and arith-)-.15 F 1.397(metic e)108 -400.8 R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H +496.8 R 1.396(xpansion, as described abo)-.15 F 1.696 -.15(ve u)-.15 H (nder).15 E F3(EXP)3.896 E(ANSION)-.666 E/F4 9/Times-Roman@0 SF(.)A F0 1.396(The results are split using the rules described)5.896 F(abo)108 -412.8 Q .509 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.709 G .209 +508.8 Q .509 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)2.709 G .209 (rd Splitting).75 F F0 5.209(.T)C .209(he results of the e)-5.209 F .209 (xpansion are pre\214x-matched ag)-.15 F .21(ainst the w)-.05 F .21 -(ord being com-)-.1 F(pleted, and the matching w)108 424.8 Q +(ord being com-)-.1 F(pleted, and the matching w)108 520.8 Q (ords become the possible completions.)-.1 E 1.238 -(After these matches ha)108 441.6 R 1.538 -.15(ve b)-.2 H 1.238 +(After these matches ha)108 537.6 R 1.538 -.15(ve b)-.2 H 1.238 (een generated, an).15 F 3.738(ys)-.15 G 1.237 (hell function or command speci\214ed with the)-3.738 F F13.737 E -F0(and)3.737 E F13.737 E F0 3.375(options is in)108 453.6 R -.2 +F0(and)3.737 E F13.737 E F0 3.375(options is in)108 549.6 R -.2 (vo)-.4 G -.1(ke).2 G 5.875(d. When).1 F 3.375 (the command or function is in)5.875 F -.2(vo)-.4 G -.1(ke).2 G 3.375 (d, the).1 F F3(COMP_LINE)5.876 E F4(,)A F3(COMP_POINT)5.626 E F4(,)A F3 -(COMP_KEY)108 465.6 Q F4(,)A F0(and)2.408 E F3(COMP_TYPE)2.658 E F0 -.25 +(COMP_KEY)108 561.6 Q F4(,)A F0(and)2.408 E F3(COMP_TYPE)2.658 E F0 -.25 (va)2.408 G .157(riables are assigned v).25 F .157 (alues as described abo)-.25 F .457 -.15(ve u)-.15 H(nder).15 E F1 .157 (Shell V)2.657 F(ariables)-.92 E F0 5.157(.I)C(f)-5.157 E 3.485(as)108 -477.6 S .986(hell function is being in)-3.485 F -.2(vo)-.4 G -.1(ke).2 G +573.6 S .986(hell function is being in)-3.485 F -.2(vo)-.4 G -.1(ke).2 G .986(d, the).1 F F3(COMP_W)3.486 E(ORDS)-.09 E F0(and)3.236 E F3 (COMP_CW)3.486 E(ORD)-.09 E F0 -.25(va)3.236 G .986 (riables are also set.).25 F(When)5.986 E .347 -(the function or command is in)108 489.6 R -.2(vo)-.4 G -.1(ke).2 G .347 +(the function or command is in)108 585.6 R -.2(vo)-.4 G -.1(ke).2 G .347 (d, the \214rst ar).1 F .346(gument \()-.18 F F1($1)A F0 2.846(\)i)C 2.846(st)-2.846 G .346(he name of the command whose ar)-2.846 F(guments) --.18 E .263(are being completed, the second ar)108 501.6 R .263 +-.18 E .263(are being completed, the second ar)108 597.6 R .263 (gument \()-.18 F F1($2)A F0 2.763(\)i)C 2.763(st)-2.763 G .264(he w) -2.763 F .264(ord being completed, and the third ar)-.1 F .264 -(gument \()-.18 F F1($3)A F0 2.764(\)i)C(s)-2.764 E .629(the w)108 513.6 +(gument \()-.18 F F1($3)A F0 2.764(\)i)C(s)-2.764 E .629(the w)108 609.6 R .629(ord preceding the w)-.1 F .629 (ord being completed on the current command line.)-.1 F .628 -(No \214ltering of the generated)5.629 F .714(completions ag)108 525.6 R +(No \214ltering of the generated)5.629 F .714(completions ag)108 621.6 R .714(ainst the w)-.05 F .714(ord being completed is performed; the func\ tion or command has complete free-)-.1 F(dom in generating the matches.) -108 537.6 Q(An)108 554.4 Q 2.938(yf)-.15 G .437 +108 633.6 Q(An)108 650.4 Q 2.938(yf)-.15 G .437 (unction speci\214ed with)-2.938 F F12.937 E F0 .437(is in)2.937 F -.2(vo)-.4 G -.1(ke).2 G 2.937<648c>.1 G 2.937(rst. The)-2.937 F .437 (function may use an)2.937 F 2.937(yo)-.15 G 2.937(ft)-2.937 G .437 -(he shell f)-2.937 F .437(acilities, including)-.1 F(the)108 566.4 Q F1 +(he shell f)-2.937 F .437(acilities, including)-.1 F(the)108 662.4 Q F1 (compgen)2.956 E F0 -.2(bu)2.956 G .456(iltin described belo).2 F 1.756 -.65(w, t)-.25 H 2.956(og).65 G .456(enerate the matches.)-2.956 F .457 (It must put the possible completions in the)5.456 F F3(COMPREPL)108 -578.4 Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25 -E(Ne)108 595.2 Q .081(xt, an)-.15 F 2.581(yc)-.15 G .081 +674.4 Q(Y)-.828 E F0(array v)2.25 E(ariable, one per array element.)-.25 +E(Ne)108 691.2 Q .081(xt, an)-.15 F 2.581(yc)-.15 G .081 (ommand speci\214ed with the)-2.581 F F12.581 E F0 .081 (option is in)2.581 F -.2(vo)-.4 G -.1(ke).2 G 2.581(di).1 G 2.58(na) -2.581 G 2.58(ne)-2.58 G -.4(nv)-2.58 G .08(ironment equi).4 F -.25(va) --.25 G .08(lent to command sub-).25 F 2.858(stitution. It)108 607.2 R +-.25 G .08(lent to command sub-).25 F 2.858(stitution. It)108 703.2 R .359(should print a list of completions, one per line, to the standard \ output.)2.858 F .359(Backslash may be used)5.359 F(to escape a ne)108 -619.2 Q(wline, if necessary)-.25 E(.)-.65 E .377 -(After all of the possible completions are generated, an)108 636 R 2.877 -<798c>-.15 G .377(lter speci\214ed with the)-2.877 F F12.876 E F0 -.376(option is applied to the)2.876 F 3.181(list. The)108 648 R .681 -(\214lter is a pattern as used for pathname e)3.181 F .681(xpansion; a) --.15 F F1(&)3.181 E F0 .682(in the pattern is replaced with the te)3.182 -F .682(xt of)-.15 F .523(the w)108 660 R .523(ord being completed.)-.1 F -3.023(Al)5.523 G(iteral)-3.023 E F1(&)3.023 E F0 .522 -(may be escaped with a backslash; the backslash is remo)3.022 F -.15(ve) --.15 G 3.022(db).15 G(efore)-3.022 E .849(attempting a match.)108 672 R -(An)5.849 E 3.349(yc)-.15 G .849 -(ompletion that matches the pattern will be remo)-3.349 F -.15(ve)-.15 G -3.35(df).15 G .85(rom the list.)-3.35 F 3.35(Al)5.85 G(eading)-3.35 E F1 -(!)3.35 E F0(ne)108 684 Q -.05(ga)-.15 G .764 -(tes the pattern; in this case an).05 F 3.264(yc)-.15 G .764 -(ompletion not matching the pattern will be remo)-3.264 F -.15(ve)-.15 G -3.264(d. If).15 F(the)3.264 E F1(nocase-)3.264 E(match)108 696 Q F0 -(shell option is enabled, the match is performed without re)2.5 E -.05 -(ga)-.15 G(rd to the case of alphabetic characters.).05 E(Finally)108 -712.8 Q 3.086(,a)-.65 G .886 -.15(ny p)-3.086 H .586(re\214x and suf).15 -F .587(\214x speci\214ed with the)-.25 F F13.087 E F0(and)3.087 E -F13.087 E F0 .587(options are added to each member of the com-) -3.087 F(pletion list, and the result is returned to the readline comple\ -tion code as the list of possible completions.)108 724.8 Q(GNU Bash 4.4) -72 768 Q(2015 October 11)141.235 E(49)190.395 E 0 Cg EP +715.2 Q(wline, if necessary)-.25 E(.)-.65 E(GNU Bash 4.4)72 768 Q +(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(49)185.545 E 0 Cg EP %%Page: 50 50 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .247(If the pre) -108 84 R .247(viously-applied actions do not generate an)-.25 F 2.747 -(ym)-.15 G .247(atches, and the)-2.747 F/F1 10/Times-Bold@0 SF .247 -(\255o dir)2.747 F(names)-.15 E F0 .247(option w)2.747 F .246 -(as supplied to)-.1 F F1(complete)108 96 Q F0(when the compspec w)2.5 E +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .377 +(After all of the possible completions are generated, an)108 84 R 2.877 +<798c>-.15 G .377(lter speci\214ed with the)-2.877 F/F1 10/Times-Bold@0 +SF2.876 E F0 .376(option is applied to the)2.876 F 3.181 +(list. The)108 96 R .681(\214lter is a pattern as used for pathname e) +3.181 F .681(xpansion; a)-.15 F F1(&)3.181 E F0 .682 +(in the pattern is replaced with the te)3.182 F .682(xt of)-.15 F .523 +(the w)108 108 R .523(ord being completed.)-.1 F 3.023(Al)5.523 G +(iteral)-3.023 E F1(&)3.023 E F0 .522 +(may be escaped with a backslash; the backslash is remo)3.022 F -.15(ve) +-.15 G 3.022(db).15 G(efore)-3.022 E .849(attempting a match.)108 120 R +(An)5.849 E 3.349(yc)-.15 G .849 +(ompletion that matches the pattern will be remo)-3.349 F -.15(ve)-.15 G +3.35(df).15 G .85(rom the list.)-3.35 F 3.35(Al)5.85 G(eading)-3.35 E F1 +(!)3.35 E F0(ne)108 132 Q -.05(ga)-.15 G .764 +(tes the pattern; in this case an).05 F 3.264(yc)-.15 G .764 +(ompletion not matching the pattern will be remo)-3.264 F -.15(ve)-.15 G +3.264(d. If).15 F(the)3.264 E F1(nocase-)3.264 E(match)108 144 Q F0 +(shell option is enabled, the match is performed without re)2.5 E -.05 +(ga)-.15 G(rd to the case of alphabetic characters.).05 E(Finally)108 +160.8 Q 3.086(,a)-.65 G .886 -.15(ny p)-3.086 H .586(re\214x and suf).15 +F .587(\214x speci\214ed with the)-.25 F F13.087 E F0(and)3.087 E +F13.087 E F0 .587(options are added to each member of the com-) +3.087 F(pletion list, and the result is returned to the readline comple\ +tion code as the list of possible completions.)108 172.8 Q .247 +(If the pre)108 189.6 R .247(viously-applied actions do not generate an) +-.25 F 2.747(ym)-.15 G .247(atches, and the)-2.747 F F1 .247(\255o dir) +2.747 F(names)-.15 E F0 .247(option w)2.747 F .246(as supplied to)-.1 F +F1(complete)108 201.6 Q F0(when the compspec w)2.5 E (as de\214ned, directory name completion is attempted.)-.1 E .461 -(If the)108 112.8 R F1 .462(\255o plusdirs)2.961 F F0 .462(option w) +(If the)108 218.4 R F1 .462(\255o plusdirs)2.961 F F0 .462(option w) 2.962 F .462(as supplied to)-.1 F F1(complete)2.962 E F0 .462 (when the compspec w)2.962 F .462(as de\214ned, directory name com-)-.1 -F(pletion is attempted and an)108 124.8 Q 2.5(ym)-.15 G +F(pletion is attempted and an)108 230.4 Q 2.5(ym)-.15 G (atches are added to the results of the other actions.)-2.5 E .56 -(By def)108 141.6 R .56(ault, if a compspec is found, whate)-.1 F -.15 +(By def)108 247.2 R .56(ault, if a compspec is found, whate)-.1 F -.15 (ve)-.25 G 3.06(ri).15 G 3.06(tg)-3.06 G .559 (enerates is returned to the completion code as the full set)-3.06 F -.631(of possible completions.)108 153.6 R .631(The def)5.631 F(ault)-.1 +.631(of possible completions.)108 259.2 R .631(The def)5.631 F(ault)-.1 E F1(bash)3.131 E F0 .631 (completions are not attempted, and the readline def)3.131 F .632 -(ault of \214le-)-.1 F .559(name completion is disabled.)108 165.6 R +(ault of \214le-)-.1 F .559(name completion is disabled.)108 271.2 R .559(If the)5.559 F F1 .559(\255o bashdefault)3.059 F F0 .559(option w) 3.059 F .559(as supplied to)-.1 F F1(complete)3.058 E F0 .558 -(when the compspec)3.058 F -.1(wa)108 177.6 S 3.171(sd).1 G .671 +(when the compspec)3.058 F -.1(wa)108 283.2 S 3.171(sd).1 G .671 (e\214ned, the)-3.171 F F1(bash)3.171 E F0(def)3.171 E .671 (ault completions are attempted if the compspec generates no matches.) --.1 F .672(If the)5.672 F F13.172 E(default)108 189.6 Q F0 1.207 +-.1 F .672(If the)5.672 F F13.172 E(default)108 295.2 Q F0 1.207 (option w)3.707 F 1.207(as supplied to)-.1 F F1(complete)3.707 E F0 1.207(when the compspec w)3.707 F 1.207(as de\214ned, readline')-.1 F 3.707(sd)-.55 G(ef)-3.707 E 1.206(ault completion)-.1 F (will be performed if the compspec \(and, if attempted, the def)108 -201.6 Q(ault)-.1 E F1(bash)2.5 E F0(completions\) generate no matches.) +307.2 Q(ault)-.1 E F1(bash)2.5 E F0(completions\) generate no matches.) 2.5 E .245(When a compspec indicates that directory name completion is \ -desired, the programmable completion func-)108 218.4 R .633(tions force\ - readline to append a slash to completed names which are symbolic links\ - to directories, subject)108 230.4 R 2.761(to the v)108 242.4 R 2.761 +desired, the programmable completion func-)108 324 R .633(tions force r\ +eadline to append a slash to completed names which are symbolic links t\ +o directories, subject)108 336 R 2.761(to the v)108 348 R 2.761 (alue of the)-.25 F F1(mark\255dir)5.261 E(ectories)-.18 E F0 2.761 (readline v)5.261 F 2.761(ariable, re)-.25 F -.05(ga)-.15 G 2.762 -(rdless of the setting of the).05 F F1(mark-sym-)5.262 E(link)108 254.4 -Q(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E +(rdless of the setting of the).05 F F1(mark-sym-)5.262 E(link)108 360 Q +(ed\255dir)-.1 E(ectories)-.18 E F0(readline v)2.5 E(ariable.)-.25 E .191(There is some support for dynamically modifying completions.)108 -271.2 R .19(This is most useful when used in combina-)5.191 F 1.33 -(tion with a def)108 283.2 R 1.33(ault completion speci\214ed with)-.1 F +376.8 R .19(This is most useful when used in combina-)5.191 F 1.33 +(tion with a def)108 388.8 R 1.33(ault completion speci\214ed with)-.1 F F1 1.33(complete -D)3.83 F F0 6.33(.I)C(t')-6.33 E 3.83(sp)-.55 G 1.33 (ossible for shell functions e)-3.83 F -.15(xe)-.15 G 1.33(cuted as).15 F .93(completion handlers to indicate that completion should be retried\ - by returning an e)108 295.2 R .93(xit status of 124.)-.15 F .93(If a) + by returning an e)108 400.8 R .93(xit status of 124.)-.15 F .93(If a) 5.93 F .1(shell function returns 124, and changes the compspec associat\ -ed with the command on which completion is)108 307.2 R .666 -(being attempted \(supplied as the \214rst ar)108 319.2 R .665 +ed with the command on which completion is)108 412.8 R .666 +(being attempted \(supplied as the \214rst ar)108 424.8 R .665 (gument when the function is e)-.18 F -.15(xe)-.15 G .665 (cuted\), programmable completion).15 F .083(restarts from the be)108 -331.2 R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc) +436.8 R .084(ginning, with an attempt to \214nd a ne)-.15 F 2.584(wc) -.25 G .084(ompspec for that command.)-2.584 F .084(This allo)5.084 F -.084(ws a set of)-.25 F(completions to be b)108 343.2 Q(uilt dynamicall\ +.084(ws a set of)-.25 F(completions to be b)108 448.8 Q(uilt dynamicall\ y as completion is attempted, rather than being loaded all at once.)-.2 -E -.15(Fo)108 360 S 2.637(ri).15 G .137 +E -.15(Fo)108 465.6 S 2.637(ri).15 G .137 (nstance, assuming that there is a library of compspecs, each k)-2.637 F .137(ept in a \214le corresponding to the name of)-.1 F -(the command, the follo)108 372 Q(wing def)-.25 E +(the command, the follo)108 477.6 Q(wing def)-.25 E (ault completion function w)-.1 E(ould load completions dynamically:)-.1 -E/F2 10/Courier@0 SF(_completion_loader\(\))108 388.8 Q({)108 400.8 Q 6 -(.")144 412.8 S +E/F2 10/Courier@0 SF(_completion_loader\(\))108 494.4 Q({)108 506.4 Q 6 +(.")144 518.4 S (/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124)-6 E(})108 -424.8 Q(complete -D -F _completion_loader -o bashdefault -o default)108 -436.8 Q/F3 10.95/Times-Bold@0 SF(HIST)72 465.6 Q(OR)-.197 E(Y)-.383 E F0 -.371(When the)108 477.6 R F1 .371(\255o history)2.871 F F0 .371 +530.4 Q(complete -D -F _completion_loader -o bashdefault -o default)108 +542.4 Q/F3 10.95/Times-Bold@0 SF(HIST)72 571.2 Q(OR)-.197 E(Y)-.383 E F0 +.371(When the)108 583.2 R F1 .371(\255o history)2.871 F F0 .371 (option to the)2.871 F F1(set)2.872 E F0 -.2(bu)2.872 G .372 (iltin is enabled, the shell pro).2 F .372(vides access to the)-.15 F/F4 10/Times-Italic@0 SF .372(command history)2.872 F F0(,)A .305 -(the list of commands pre)108 489.6 R .305(viously typed.)-.25 F .305 +(the list of commands pre)108 595.2 R .305(viously typed.)-.25 F .305 (The v)5.305 F .304(alue of the)-.25 F/F5 9/Times-Bold@0 SF(HISTSIZE) 2.804 E F0 -.25(va)2.554 G .304(riable is used as the number of com-).25 -F .429(mands to sa)108 501.6 R .729 -.15(ve i)-.2 H 2.929(nah).15 G .429 +F .429(mands to sa)108 607.2 R .729 -.15(ve i)-.2 H 2.929(nah).15 G .429 (istory list.)-2.929 F .429(The te)5.429 F .429(xt of the last)-.15 F F5 (HISTSIZE)2.93 E F0 .43(commands \(def)2.68 F .43(ault 500\) is sa)-.1 F -.15(ve)-.2 G 2.93(d. The).15 F(shell)2.93 E .287 (stores each command in the history list prior to parameter and v)108 -513.6 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F5(EXP)2.787 E -(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 525.6 +619.2 R .287(ariable e)-.25 F .287(xpansion \(see)-.15 F F5(EXP)2.787 E +(ANSION)-.666 E F0(abo)2.537 E -.15(ve)-.15 G(\)).15 E -.2(bu)108 631.2 S 4.065(ta).2 G 1.565(fter history e)-4.065 F 1.565 (xpansion is performed, subject to the v)-.15 F 1.565 (alues of the shell v)-.25 F(ariables)-.25 E F5(HISTIGNORE)4.065 E F0 -(and)3.816 E F5(HISTCONTR)108 537.6 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.) +(and)3.816 E F5(HISTCONTR)108 643.2 Q(OL)-.27 E/F6 9/Times-Roman@0 SF(.) A F0 .082 (On startup, the history is initialized from the \214le named by the v) -108 554.4 R(ariable)-.25 E F5(HISTFILE)2.582 E F0(\(def)2.332 E(ault)-.1 -E F4(~/.bash_history)2.582 E F0(\).)A .315(The \214le named by the v)108 -566.4 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315 +108 660 R(ariable)-.25 E F5(HISTFILE)2.582 E F0(\(def)2.332 E(ault)-.1 E +F4(~/.bash_history)2.582 E F0(\).)A .315(The \214le named by the v)108 +672 R .315(alue of)-.25 F F5(HISTFILE)2.815 E F0 .315 (is truncated, if necessary)2.565 F 2.815(,t)-.65 G 2.815(oc)-2.815 G .315(ontain no more than the number of)-2.815 F .659 -(lines speci\214ed by the v)108 578.4 R .659(alue of)-.25 F F5 +(lines speci\214ed by the v)108 684 R .659(alue of)-.25 F F5 (HISTFILESIZE)3.158 E F6(.)A F0(If)5.158 E F1(HISTFILESIZE)3.158 E F0 -.658(is unset, or set to null, a non-numeric)3.158 F -.25(va)108 590.4 S +.658(is unset, or set to null, a non-numeric)3.158 F -.25(va)108 696 S .142(lue, or a numeric v).25 F .142 (alue less than zero, the history \214le is not truncated.)-.25 F .142 -(When the history \214le is read, lines)5.142 F(be)108 602.4 Q 1.605 +(When the history \214le is read, lines)5.142 F(be)108 708 Q 1.605 (ginning with the history comment character follo)-.15 F 1.604 (wed immediately by a digit are interpreted as time-)-.25 F .098 -(stamps for the preceding history line.)108 614.4 R .098 +(stamps for the preceding history line.)108 720 R .098 (These timestamps are optionally displayed depending on the v)5.098 F -.098(alue of)-.25 F(the)108 626.4 Q F5(HISTTIMEFORMA)3.559 E(T)-.855 E -F0 -.25(va)3.309 G 3.559(riable. When).25 F 3.559(as)3.559 G 1.059 -(hell with history enabled e)-3.559 F 1.059(xits, the last)-.15 F F5 -($HISTSIZE)3.559 E F0 1.058(lines are)3.309 F .158 -(copied from the history list to)108 638.4 R F5($HISTFILE)2.658 E F6(.)A -F0 .158(If the)4.658 F F1(histappend)2.658 E F0 .159 -(shell option is enabled \(see the description of)2.659 F F1(shopt)108 -650.4 Q F0(under)2.582 E F5 .082(SHELL B)2.582 F(UIL)-.09 E .082 -(TIN COMMANDS)-.828 F F0(belo)2.332 E .082 -(w\), the lines are appended to the history \214le, otherwise the)-.25 F -.196(history \214le is o)108 662.4 R -.15(ve)-.15 G 2.696(rwritten. If) -.15 F F5(HISTFILE)2.696 E F0 .197(is unset, or if the history \214le is\ - unwritable, the history is not sa)2.446 F -.15(ve)-.2 G(d.).15 E .584 -(If the)108 674.4 R F5(HISTTIMEFORMA)3.084 E(T)-.855 E F0 -.25(va)2.834 -G .584 -(riable is set, time stamps are written to the history \214le, mark).25 -F .583(ed with the his-)-.1 F 1.147(tory comment character)108 686.4 R -3.647(,s)-.4 G 3.647(ot)-3.647 G(he)-3.647 E 3.647(ym)-.15 G 1.147 -(ay be preserv)-3.647 F 1.147(ed across shell sessions.)-.15 F 1.148 -(This uses the history comment)6.148 F 1.377 -(character to distinguish timestamps from other history lines.)108 698.4 -R 1.377(After sa)6.377 F 1.377(ving the history)-.2 F 3.876(,t)-.65 G -1.376(he history \214le is)-3.876 F .756 -(truncated to contain no more than)108 710.4 R F5(HISTFILESIZE)3.257 E -F0 3.257(lines. If)3.007 F F5(HISTFILESIZE)3.257 E F0 .757 -(is unset, or set to null, a non-)3.007 F(numeric v)108 722.4 Q -(alue, or a numeric v)-.25 E -(alue less than zero, the history \214le is not truncated.)-.25 E -(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(50)190.395 E 0 Cg EP +.098(alue of)-.25 F(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 +G(mber 16).15 E(50)185.545 E 0 Cg EP %%Page: 51 51 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .299(The b)108 84 -R .299(uiltin command)-.2 F/F1 10/Times-Bold@0 SF(fc)2.799 E F0(\(see) -2.799 E/F2 9/Times-Bold@0 SF .299(SHELL B)2.799 F(UIL)-.09 E .299 -(TIN COMMANDS)-.828 F F0(belo)2.549 E .298 -(w\) may be used to list or edit and re-e)-.25 F -.15(xe)-.15 G(-).15 E -.471(cute a portion of the history list.)108 96 R(The)5.471 E F1 -(history)2.971 E F0 -.2(bu)2.971 G .472 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(the)108 84 Q/F1 9 +/Times-Bold@0 SF(HISTTIMEFORMA)3.559 E(T)-.855 E F0 -.25(va)3.309 G +3.559(riable. When).25 F 3.559(as)3.559 G 1.059 +(hell with history enabled e)-3.559 F 1.059(xits, the last)-.15 F F1 +($HISTSIZE)3.559 E F0 1.058(lines are)3.309 F .158 +(copied from the history list to)108 96 R F1($HISTFILE)2.658 E/F2 9 +/Times-Roman@0 SF(.)A F0 .158(If the)4.658 F/F3 10/Times-Bold@0 SF +(histappend)2.658 E F0 .159 +(shell option is enabled \(see the description of)2.659 F F3(shopt)108 +108 Q F0(under)2.582 E F1 .082(SHELL B)2.582 F(UIL)-.09 E .082 +(TIN COMMANDS)-.828 F F0(belo)2.332 E .082 +(w\), the lines are appended to the history \214le, otherwise the)-.25 F +.196(history \214le is o)108 120 R -.15(ve)-.15 G 2.696(rwritten. If).15 +F F1(HISTFILE)2.696 E F0 .197(is unset, or if the history \214le is unw\ +ritable, the history is not sa)2.446 F -.15(ve)-.2 G(d.).15 E .584 +(If the)108 132 R F1(HISTTIMEFORMA)3.084 E(T)-.855 E F0 -.25(va)2.834 G +.584(riable is set, time stamps are written to the history \214le, mark) +.25 F .583(ed with the his-)-.1 F 1.147(tory comment character)108 144 R +3.647(,s)-.4 G 3.647(ot)-3.647 G(he)-3.647 E 3.647(ym)-.15 G 1.147 +(ay be preserv)-3.647 F 1.147(ed across shell sessions.)-.15 F 1.148 +(This uses the history comment)6.148 F 1.377 +(character to distinguish timestamps from other history lines.)108 156 R +1.377(After sa)6.377 F 1.377(ving the history)-.2 F 3.876(,t)-.65 G +1.376(he history \214le is)-3.876 F .756 +(truncated to contain no more than)108 168 R F1(HISTFILESIZE)3.257 E F0 +3.257(lines. If)3.007 F F1(HISTFILESIZE)3.257 E F0 .757 +(is unset, or set to null, a non-)3.007 F(numeric v)108 180 Q +(alue, or a numeric v)-.25 E +(alue less than zero, the history \214le is not truncated.)-.25 E .299 +(The b)108 196.8 R .299(uiltin command)-.2 F F3(fc)2.799 E F0(\(see) +2.799 E F1 .299(SHELL B)2.799 F(UIL)-.09 E .299(TIN COMMANDS)-.828 F F0 +(belo)2.549 E .298(w\) may be used to list or edit and re-e)-.25 F -.15 +(xe)-.15 G(-).15 E .471(cute a portion of the history list.)108 208.8 R +(The)5.471 E F3(history)2.971 E F0 -.2(bu)2.971 G .472 (iltin may be used to display or modify the history list and).2 F .002 -(manipulate the history \214le.)108 108 R .001 +(manipulate the history \214le.)108 220.8 R .001 (When using command-line editing, search commands are a)5.002 F -.25(va) --.2 G .001(ilable in each edit-).25 F(ing mode that pro)108 120 Q -(vide access to the history list.)-.15 E 1.485(The shell allo)108 136.8 +-.2 G .001(ilable in each edit-).25 F(ing mode that pro)108 232.8 Q +(vide access to the history list.)-.15 E 1.485(The shell allo)108 249.6 R 1.485(ws control o)-.25 F -.15(ve)-.15 G 3.986(rw).15 G 1.486 (hich commands are sa)-3.986 F -.15(ve)-.2 G 3.986(do).15 G 3.986(nt) --3.986 G 1.486(he history list.)-3.986 F(The)6.486 E F2(HISTCONTR)3.986 -E(OL)-.27 E F0(and)3.736 E F2(HISTIGNORE)108 148.8 Q F0 -.25(va)2.708 G +-3.986 G 1.486(he history list.)-3.986 F(The)6.486 E F1(HISTCONTR)3.986 +E(OL)-.27 E F0(and)3.736 E F1(HISTIGNORE)108 261.6 Q F0 -.25(va)2.708 G .458(riables may be set to cause the shell to sa).25 F .757 -.15(ve o) --.2 H .457(nly a subset of the commands entered.).15 F(The)5.457 E F1 -(cmdhist)108 160.8 Q F0 .75 +-.2 H .457(nly a subset of the commands entered.).15 F(The)5.457 E F3 +(cmdhist)108 273.6 Q F0 .75 (shell option, if enabled, causes the shell to attempt to sa)3.25 F 1.05 -.15(ve e)-.2 H .75(ach line of a multi-line command in).15 F 1.077 -(the same history entry)108 172.8 R 3.577(,a)-.65 G 1.077 +(the same history entry)108 285.6 R 3.577(,a)-.65 G 1.077 (dding semicolons where necessary to preserv)-3.577 F 3.577(es)-.15 G -1.077(yntactic correctness.)-3.577 F(The)6.077 E F1(lithist)3.576 E F0 -.373(shell option causes the shell to sa)108 184.8 R .674 -.15(ve t)-.2 +1.077(yntactic correctness.)-3.577 F(The)6.077 E F3(lithist)3.576 E F0 +.373(shell option causes the shell to sa)108 297.6 R .674 -.15(ve t)-.2 H .374(he command with embedded ne).15 F .374 (wlines instead of semicolons.)-.25 F .374(See the)5.374 F .319 -(description of the)108 196.8 R F1(shopt)2.819 E F0 -.2(bu)2.819 G .318 -(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F2 .318(SHELL B)2.818 F +(description of the)108 309.6 R F3(shopt)2.819 E F0 -.2(bu)2.819 G .318 +(iltin belo).2 F 2.818(wu)-.25 G(nder)-2.818 E F1 .318(SHELL B)2.818 F (UIL)-.09 E .318(TIN COMMANDS)-.828 F F0 .318 (for information on setting and)2.568 F(unsetting shell options.)108 -208.8 Q/F3 10.95/Times-Bold@0 SF(HIST)72 225.6 Q(OR)-.197 E 2.738(YE) +321.6 Q/F4 10.95/Times-Bold@0 SF(HIST)72 338.4 Q(OR)-.197 E 2.738(YE) -.383 G(XP)-2.738 E(ANSION)-.81 E F0 .61(The shell supports a history e) -108 237.6 R .611(xpansion feature that is similar to the history e)-.15 -F .611(xpansion in)-.15 F F1(csh.)3.111 E F0 .611(This section)5.611 F -.871(describes what syntax features are a)108 249.6 R -.25(va)-.2 G +108 350.4 R .611(xpansion feature that is similar to the history e)-.15 +F .611(xpansion in)-.15 F F3(csh.)3.111 E F0 .611(This section)5.611 F +.871(describes what syntax features are a)108 362.4 R -.25(va)-.2 G 3.371(ilable. This).25 F .871(feature is enabled by def)3.371 F .87 (ault for interacti)-.1 F 1.17 -.15(ve s)-.25 H .87(hells, and).15 F -2.013(can be disabled using the)108 261.6 R F1(+H)4.514 E F0 2.014 -(option to the)4.514 F F1(set)4.514 E F0 -.2(bu)4.514 G 2.014 -(iltin command \(see).2 F F2 2.014(SHELL B)4.514 F(UIL)-.09 E 2.014 -(TIN COMMANDS)-.828 F F0(belo)108 273.6 Q 2.5(w\). Non-interacti)-.25 F +2.013(can be disabled using the)108 374.4 R F3(+H)4.514 E F0 2.014 +(option to the)4.514 F F3(set)4.514 E F0 -.2(bu)4.514 G 2.014 +(iltin command \(see).2 F F1 2.014(SHELL B)4.514 F(UIL)-.09 E 2.014 +(TIN COMMANDS)-.828 F F0(belo)108 386.4 Q 2.5(w\). Non-interacti)-.25 F .3 -.15(ve s)-.25 H(hells do not perform history e).15 E -(xpansion by def)-.15 E(ault.)-.1 E 1.306(History e)108 290.4 R 1.306 +(xpansion by def)-.15 E(ault.)-.1 E 1.306(History e)108 403.2 R 1.306 (xpansions introduce w)-.15 F 1.306(ords from the history list into the\ input stream, making it easy to repeat)-.1 F .209 -(commands, insert the ar)108 302.4 R .209(guments to a pre)-.18 F .21 +(commands, insert the ar)108 415.2 R .209(guments to a pre)-.18 F .21 (vious command into the current input line, or \214x errors in pre)-.25 -F(vious)-.25 E(commands quickly)108 314.4 Q(.)-.65 E 1.164(History e)108 -331.2 R 1.163(xpansion is performed immediately after a complete line i\ -s read, before the shell breaks it into)-.15 F -.1(wo)108 343.2 S 3.2 +F(vious)-.25 E(commands quickly)108 427.2 Q(.)-.65 E 1.164(History e)108 +444 R 1.163(xpansion is performed immediately after a complete line is \ +read, before the shell breaks it into)-.15 F -.1(wo)108 456 S 3.2 (rds. It).1 F(tak)3.2 E .7(es place in tw)-.1 F 3.2(op)-.1 G 3.2 (arts. The)-3.2 F .7 (\214rst is to determine which line from the history list to use during) -3.2 F 4.368(substitution. The)108 355.2 R 1.868(second is to select por\ -tions of that line for inclusion into the current one.)4.368 F 1.867 -(The line)6.867 F .662(selected from the history is the)108 367.2 R/F4 -10/Times-Italic@0 SF -.15(ev)3.162 G(ent).15 E F0 3.162(,a)C .663 -(nd the portions of that line that are acted upon are)-3.162 F F4(wor) -3.163 E(ds)-.37 E F0 5.663(.V)C(arious)-6.773 E F4(modi\214er)108 379.2 -Q(s)-.1 E F0 .227(are a)2.727 F -.25(va)-.2 G .227 +3.2 F 4.368(substitution. The)108 468 R 1.868(second is to select porti\ +ons of that line for inclusion into the current one.)4.368 F 1.867 +(The line)6.867 F .662(selected from the history is the)108 480 R/F5 10 +/Times-Italic@0 SF -.15(ev)3.162 G(ent).15 E F0 3.162(,a)C .663 +(nd the portions of that line that are acted upon are)-3.162 F F5(wor) +3.163 E(ds)-.37 E F0 5.663(.V)C(arious)-6.773 E F5(modi\214er)108 492 Q +(s)-.1 E F0 .227(are a)2.727 F -.25(va)-.2 G .227 (ilable to manipulate the selected w).25 F 2.727(ords. The)-.1 F .226 (line is brok)2.726 F .226(en into w)-.1 F .226(ords in the same f)-.1 F -(ashion)-.1 E .351(as when reading input, so that se)108 391.2 R -.15 -(ve)-.25 G(ral).15 E F4(metac)2.852 E(har)-.15 E(acter)-.15 E F0 .352 +(ashion)-.1 E .351(as when reading input, so that se)108 504 R -.15(ve) +-.25 G(ral).15 E F5(metac)2.852 E(har)-.15 E(acter)-.15 E F0 .352 (-separated w)B .352(ords surrounded by quotes are considered)-.1 F .625 -(one w)108 403.2 R 3.125(ord. History)-.1 F -.15(ex)3.125 G .624 +(one w)108 516 R 3.125(ord. History)-.1 F -.15(ex)3.125 G .624 (pansions are introduced by the appearance of the history e).15 F .624 -(xpansion character)-.15 F 3.124(,w)-.4 G(hich)-3.124 E(is)108 415.2 Q -F1(!)3.51 E F0 .177(by def)3.51 F 2.677(ault. Only)-.1 F .177 -(backslash \()2.677 F F1(\\).833 E F0 2.678(\)a).833 G .178 +(xpansion character)-.15 F 3.124(,w)-.4 G(hich)-3.124 E(is)108 528 Q F3 +(!)3.51 E F0 .177(by def)3.51 F 2.677(ault. Only)-.1 F .177 +(backslash \()2.677 F F3(\\).833 E F0 2.678(\)a).833 G .178 (nd single quotes can quote the history e)-2.678 F .178 (xpansion character)-.15 F 2.678(,b)-.4 G .178(ut the his-)-2.878 F .67 -(tory e)108 427.2 R .67(xpansion character is also treated as quoted if\ - it immediately precedes the closing double quote in a)-.15 F -(double-quoted string.)108 439.2 Q(Se)108 456 Q -.15(ve)-.25 G .03 +(tory e)108 540 R .67(xpansion character is also treated as quoted if i\ +t immediately precedes the closing double quote in a)-.15 F +(double-quoted string.)108 552 Q(Se)108 568.8 Q -.15(ve)-.25 G .03 (ral characters inhibit history e).15 F .03 (xpansion if found immediately follo)-.15 F .03(wing the history e)-.25 -F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 468 T 3.163 -(ni).25 G 3.163(fi)-3.163 G 3.162(ti)-3.163 G 3.162(su)-3.162 G .662 -(nquoted: space, tab, ne)-3.162 F .662(wline, carriage return, and)-.25 -F F1(=)3.162 E F0 5.662(.I)C 3.162(ft)-5.662 G(he)-3.162 E F1(extglob) -3.162 E F0 .662(shell option is enabled,)3.162 F F1(\()3.162 E F0 -(will also inhibit e)108 480 Q(xpansion.)-.15 E(Se)108 496.8 Q -.15(ve) --.25 G .109(ral shell options settable with the).15 F F1(shopt)2.609 E -F0 -.2(bu)2.609 G .11(iltin may be used to tailor the beha).2 F .11 -(vior of history e)-.2 F(xpansion.)-.15 E 1.143(If the)108 508.8 R F1 +F .03(xpansion character)-.15 F(,)-.4 E -2.15 -.25(ev e)108 580.8 T +3.163(ni).25 G 3.163(fi)-3.163 G 3.162(ti)-3.163 G 3.162(su)-3.162 G +.662(nquoted: space, tab, ne)-3.162 F .662(wline, carriage return, and) +-.25 F F3(=)3.162 E F0 5.662(.I)C 3.162(ft)-5.662 G(he)-3.162 E F3 +(extglob)3.162 E F0 .662(shell option is enabled,)3.162 F F3(\()3.162 E +F0(will also inhibit e)108 592.8 Q(xpansion.)-.15 E(Se)108 609.6 Q -.15 +(ve)-.25 G .109(ral shell options settable with the).15 F F3(shopt)2.609 +E F0 -.2(bu)2.609 G .11(iltin may be used to tailor the beha).2 F .11 +(vior of history e)-.2 F(xpansion.)-.15 E 1.143(If the)108 621.6 R F3 (histv)3.643 E(erify)-.1 E F0 1.143 -(shell option is enabled \(see the description of the)3.643 F F1(shopt) -3.643 E F0 -.2(bu)3.643 G 1.143(iltin belo).2 F 1.143(w\), and)-.25 F F1 +(shell option is enabled \(see the description of the)3.643 F F3(shopt) +3.643 E F0 -.2(bu)3.643 G 1.143(iltin belo).2 F 1.143(w\), and)-.25 F F3 -.18(re)3.643 G(adline).18 E F0(is)3.642 E .461(being used, history sub\ -stitutions are not immediately passed to the shell parser)108 520.8 R +stitutions are not immediately passed to the shell parser)108 633.6 R 5.461(.I)-.55 G .461(nstead, the e)-5.461 F .461(xpanded line)-.15 F -1.516(is reloaded into the)108 532.8 R F1 -.18(re)4.016 G(adline).18 E +1.516(is reloaded into the)108 645.6 R F3 -.18(re)4.016 G(adline).18 E F0 1.516(editing b)4.016 F(uf)-.2 E 1.516 -(fer for further modi\214cation.)-.25 F(If)6.516 E F1 -.18(re)4.015 G -(adline).18 E F0 1.515(is being used, and the)4.015 F F1(histr)108 544.8 +(fer for further modi\214cation.)-.25 F(If)6.516 E F3 -.18(re)4.015 G +(adline).18 E F0 1.515(is being used, and the)4.015 F F3(histr)108 657.6 Q(eedit)-.18 E F0 1.202(shell option is enabled, a f)3.702 F 1.202 -(ailed history substitution will be reloaded into the)-.1 F F1 -.18(re) -3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 556.8 S -.25(ff).2 G -1.161(er for correction.).25 F(The)6.161 E F13.661 E F0 1.161 -(option to the)3.661 F F1(history)3.661 E F0 -.2(bu)3.661 G 1.16 -(iltin command may be used to see what a history).2 F -.15(ex)108 568.8 -S .055(pansion will do before using it.).15 F(The)5.055 E F12.555 -E F0 .055(option to the)2.555 F F1(history)2.556 E F0 -.2(bu)2.556 G +(ailed history substitution will be reloaded into the)-.1 F F3 -.18(re) +3.702 G(adline).18 E F0(editing)3.702 E -.2(bu)108 669.6 S -.25(ff).2 G +1.161(er for correction.).25 F(The)6.161 E F33.661 E F0 1.161 +(option to the)3.661 F F3(history)3.661 E F0 -.2(bu)3.661 G 1.16 +(iltin command may be used to see what a history).2 F -.15(ex)108 681.6 +S .055(pansion will do before using it.).15 F(The)5.055 E F32.555 +E F0 .055(option to the)2.555 F F3(history)2.556 E F0 -.2(bu)2.556 G .056(iltin may be used to add commands to the).2 F -(end of the history list without actually e)108 580.8 Q -.15(xe)-.15 G +(end of the history list without actually e)108 693.6 Q -.15(xe)-.15 G (cuting them, so that the).15 E 2.5(ya)-.15 G(re a)-2.5 E -.25(va)-.2 G -(ilable for subsequent recall.).25 E 2.2(The shell allo)108 597.6 R 2.2 +(ilable for subsequent recall.).25 E 2.2(The shell allo)108 710.4 R 2.2 (ws control of the v)-.25 F 2.2(arious characters used by the history e) -.25 F 2.2(xpansion mechanism \(see the)-.15 F 1.146(description of)108 -609.6 R F1(histchars)3.646 E F0(abo)3.646 E 1.446 -.15(ve u)-.15 H(nder) -.15 E F1 1.146(Shell V)3.646 F(ariables)-.92 E F0 3.646(\). The)B 1.147 -(shell uses the history comment character to)3.646 F -(mark history timestamps when writing the history \214le.)108 621.6 Q F1 -(Ev)87 638.4 Q(ent Designators)-.1 E F0 .205(An e)108 650.4 R -.15(ve) --.25 G .204(nt designator is a reference to a command line entry in the\ - history list.).15 F .204(Unless the reference is abso-)5.204 F(lute, e) -108 662.4 Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15(ve t)-.25 H 2.5 -(ot).15 G(he current position in the history list.)-2.5 E F1(!)108 679.2 -Q F0 1.607(Start a history substitution, e)144 679.2 R 1.607 -(xcept when follo)-.15 F 1.607(wed by a)-.25 F F1(blank)4.107 E F0 4.107 -(,n)C -.25(ew)-4.107 G 1.608(line, carriage return, = or \().25 F -(\(when the)144 691.2 Q F1(extglob)2.5 E F0 -(shell option is enabled using the)2.5 E F1(shopt)2.5 E F0 -.2(bu)2.5 G -(iltin\).).2 E F1(!)108 703.2 Q F4(n)A F0(Refer to command line)144 -703.2 Q F4(n)2.5 E F0(.).24 E F1<21ad>108 715.2 Q F4(n)A F0 -(Refer to the current command minus)144 715.2 Q F4(n)2.5 E F0(.).24 E -(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(51)190.395 E 0 Cg EP +722.4 R F3(histchars)3.646 E F0(abo)3.646 E 1.446 -.15(ve u)-.15 H(nder) +.15 E F3 1.146(Shell V)3.646 F(ariables)-.92 E F0 3.646(\). The)B 1.147 +(shell uses the history comment character to)3.646 F(GNU Bash 4.4)72 768 +Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(51)185.545 E 0 Cg EP %%Page: 52 52 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(!!)108 84 Q F0(Refer to the pre)144 84 Q(vious command.)-.25 E -(This is a synon)5 E(ym for `!\2551'.)-.15 E F1(!)108 96 Q/F2 10 -/Times-Italic@0 SF(string)A F0 .865(Refer to the most recent command pr\ -eceding the current position in the history list starting with)144 96 R -F2(string)144 108 Q F0(.).22 E F1(!?)108 120 Q F2(string)A F1([?])A F0 -1.503(Refer to the most recent command preceding the current position i\ -n the history list containing)144 132 R F2(string)144 144 Q F0 5(.T).22 -G(he trailing)-5 E F1(?)2.5 E F0(may be omitted if)2.5 E F2(string)2.84 -E F0(is follo)2.72 E(wed immediately by a ne)-.25 E(wline.)-.25 E/F3 12 -/Times-Bold@0 SF(^)108 161 Q F2(string1)-5 I F3(^)5 I F2(string2)-5 I F3 -(^)5 I F0 .784(Quick substitution.)144 168 R .784(Repeat the pre)5.784 F -.784(vious command, replacing)-.25 F F2(string1)3.624 E F0(with)3.283 E -F2(string2)3.283 E F0 5.783(.E).02 G(qui)-5.783 E -.25(va)-.25 G .783 -(lent to).25 F -.74(``)144 180 S(!!:s/).74 E F2(string1)A F0(/)A F2 -(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F1(Modi\214ers)2.5 E F0 -(belo)2.5 E(w\).)-.25 E F1(!#)108 192 Q F0 -(The entire command line typed so f)144 192 Q(ar)-.1 E(.)-.55 E F1 -.75 -(Wo)87 208.8 S(rd Designators).75 E F0 -.8(Wo)108 220.8 S 1.313 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E +(mark history timestamps when writing the history \214le.)108 84 Q/F1 10 +/Times-Bold@0 SF(Ev)87 100.8 Q(ent Designators)-.1 E F0 .205(An e)108 +112.8 R -.15(ve)-.25 G .204(nt designator is a reference to a command l\ +ine entry in the history list.).15 F .204(Unless the reference is abso-) +5.204 F(lute, e)108 124.8 Q -.15(ve)-.25 G(nts are relati).15 E .3 -.15 +(ve t)-.25 H 2.5(ot).15 G(he current position in the history list.)-2.5 +E F1(!)108 141.6 Q F0 1.607(Start a history substitution, e)144 141.6 R +1.607(xcept when follo)-.15 F 1.607(wed by a)-.25 F F1(blank)4.107 E F0 +4.107(,n)C -.25(ew)-4.107 G 1.608(line, carriage return, = or \().25 F +(\(when the)144 153.6 Q F1(extglob)2.5 E F0 +(shell option is enabled using the)2.5 E F1(shopt)2.5 E F0 -.2(bu)2.5 G +(iltin\).).2 E F1(!)108 165.6 Q/F2 10/Times-Italic@0 SF(n)A F0 +(Refer to command line)144 165.6 Q F2(n)2.5 E F0(.).24 E F1<21ad>108 +177.6 Q F2(n)A F0(Refer to the current command minus)144 177.6 Q F2(n) +2.5 E F0(.).24 E F1(!!)108 189.6 Q F0(Refer to the pre)144 189.6 Q +(vious command.)-.25 E(This is a synon)5 E(ym for `!\2551'.)-.15 E F1(!) +108 201.6 Q F2(string)A F0 .865(Refer to the most recent command preced\ +ing the current position in the history list starting with)144 201.6 R +F2(string)144 213.6 Q F0(.).22 E F1(!?)108 225.6 Q F2(string)A F1([?])A +F0 1.503(Refer to the most recent command preceding the current positio\ +n in the history list containing)144 237.6 R F2(string)144 249.6 Q F0 5 +(.T).22 G(he trailing)-5 E F1(?)2.5 E F0(may be omitted if)2.5 E F2 +(string)2.84 E F0(is follo)2.72 E(wed immediately by a ne)-.25 E(wline.) +-.25 E/F3 12/Times-Bold@0 SF(^)108 266.6 Q F2(string1)-5 I F3(^)5 I F2 +(string2)-5 I F3(^)5 I F0 .784(Quick substitution.)144 273.6 R .784 +(Repeat the pre)5.784 F .784(vious command, replacing)-.25 F F2(string1) +3.624 E F0(with)3.283 E F2(string2)3.283 E F0 5.783(.E).02 G(qui)-5.783 +E -.25(va)-.25 G .783(lent to).25 F -.74(``)144 285.6 S(!!:s/).74 E F2 +(string1)A F0(/)A F2(string2)A F0(/')A 2.5('\()-.74 G(see)-2.5 E F1 +(Modi\214ers)2.5 E F0(belo)2.5 E(w\).)-.25 E F1(!#)108 297.6 Q F0 +(The entire command line typed so f)144 297.6 Q(ar)-.1 E(.)-.55 E F1 +-.75(Wo)87 314.4 S(rd Designators).75 E F0 -.8(Wo)108 326.4 S 1.313 (rd designators are used to select desired w).8 F 1.314(ords from the e) -.1 F -.15(ve)-.25 G 3.814(nt. A).15 F F1(:)3.814 E F0 1.314 (separates the e)3.814 F -.15(ve)-.25 G 1.314(nt speci\214cation).15 F -.53(from the w)108 232.8 R .529(ord designator)-.1 F 5.529(.I)-.55 G +.53(from the w)108 338.4 R .529(ord designator)-.1 F 5.529(.I)-.55 G 3.029(tm)-5.529 G .529(ay be omitted if the w)-3.029 F .529 (ord designator be)-.1 F .529(gins with a)-.15 F F1(^)3.029 E F0(,)A F1 ($)3.029 E F0(,)A F1(*)3.029 E F0(,)A F13.029 E F0 3.029(,o)C(r) -3.029 E F1(%)3.029 E F0 5.529(.W)C(ords)-6.329 E 1.3 -(are numbered from the be)108 244.8 R 1.3 +(are numbered from the be)108 350.4 R 1.3 (ginning of the line, with the \214rst w)-.15 F 1.301 (ord being denoted by 0 \(zero\).)-.1 F -.8(Wo)6.301 G 1.301(rds are).8 -F(inserted into the current line separated by single spaces.)108 256.8 Q -F1 2.5(0\()108 273.6 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 285.6 Q +F(inserted into the current line separated by single spaces.)108 362.4 Q +F1 2.5(0\()108 379.2 S(zer)-2.5 E(o\))-.18 E F0(The zeroth w)144 391.2 Q 2.5(ord. F)-.1 F(or the shell, this is the command w)-.15 E(ord.)-.1 E -F2(n)108.36 297.6 Q F0(The)144 297.6 Q F2(n)2.5 E F0(th w)A(ord.)-.1 E -F1(^)108 309.6 Q F0(The \214rst ar)144 309.6 Q 2.5(gument. That)-.18 F -(is, w)2.5 E(ord 1.)-.1 E F1($)108 321.6 Q F0 .064(The last w)144 321.6 +F2(n)108.36 403.2 Q F0(The)144 403.2 Q F2(n)2.5 E F0(th w)A(ord.)-.1 E +F1(^)108 415.2 Q F0(The \214rst ar)144 415.2 Q 2.5(gument. That)-.18 F +(is, w)2.5 E(ord 1.)-.1 E F1($)108 427.2 Q F0 .064(The last w)144 427.2 R 2.564(ord. This)-.1 F .064(is usually the last ar)2.564 F .064 (gument, b)-.18 F .064(ut will e)-.2 F .064(xpand to the zeroth w)-.15 F -.063(ord if there is only)-.1 F(one w)144 333.6 Q(ord in the line.)-.1 E -F1(%)108 345.6 Q F0(The w)144 345.6 Q(ord matched by the most recent `?) --.1 E F2(string)A F0(?' search.)A F2(x)108.77 357.6 Q F1A F2(y)A F0 -2.5(Ar)144 357.6 S(ange of w)-2.5 E(ords; `\255)-.1 E F2(y)A F0 2.5('a)C -(bbre)-2.5 E(viates `0\255)-.25 E F2(y)A F0('.)A F1(*)108 369.6 Q F0 -.315(All of the w)144 369.6 R .315(ords b)-.1 F .315(ut the zeroth.)-.2 +.063(ord if there is only)-.1 F(one w)144 439.2 Q(ord in the line.)-.1 E +F1(%)108 451.2 Q F0(The w)144 451.2 Q(ord matched by the most recent `?) +-.1 E F2(string)A F0(?' search.)A F2(x)108.77 463.2 Q F1A F2(y)A F0 +2.5(Ar)144 463.2 S(ange of w)-2.5 E(ords; `\255)-.1 E F2(y)A F0 2.5('a)C +(bbre)-2.5 E(viates `0\255)-.25 E F2(y)A F0('.)A F1(*)108 475.2 Q F0 +.315(All of the w)144 475.2 R .315(ords b)-.1 F .315(ut the zeroth.)-.2 F .315(This is a synon)5.315 F .315(ym for `)-.15 F F2(1\255$)A F0 2.815 ('. It)B .315(is not an error to use)2.815 F F1(*)2.816 E F0 .316 -(if there is)2.816 F(just one w)144 381.6 Q(ord in the e)-.1 E -.15(ve) +(if there is)2.816 F(just one w)144 487.2 Q(ord in the e)-.1 E -.15(ve) -.25 G(nt; the empty string is returned in that case.).15 E F1(x*)108 -393.6 Q F0(Abbre)144 393.6 Q(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1 -<78ad>108 405.6 Q F0(Abbre)144 405.6 Q(viates)-.25 E F2(x\255$)2.5 E F0 +499.2 Q F0(Abbre)144 499.2 Q(viates)-.25 E F2(x\255$)2.5 E F0(.)A F1 +<78ad>108 511.2 Q F0(Abbre)144 511.2 Q(viates)-.25 E F2(x\255$)2.5 E F0 (lik)2.5 E(e)-.1 E F1(x*)2.5 E F0 2.5(,b)C(ut omits the last w)-2.7 E -(ord.)-.1 E(If a w)108 422.4 Q(ord designator is supplied without an e) --.1 E -.15(ve)-.25 G(nt speci\214cation, the pre).15 E +(ord.)-.1 E(If a w)108 528 Q(ord designator is supplied without an e)-.1 +E -.15(ve)-.25 G(nt speci\214cation, the pre).15 E (vious command is used as the e)-.25 E -.15(ve)-.25 G(nt.).15 E F1 -(Modi\214ers)87 439.2 Q F0 .184(After the optional w)108 451.2 R .184 +(Modi\214ers)87 544.8 Q F0 .184(After the optional w)108 556.8 R .184 (ord designator)-.1 F 2.684(,t)-.4 G .183 (here may appear a sequence of one or more of the follo)-2.684 F .183 -(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 463.2 Q F1(h)108 -480 Q F0(Remo)144 480 Q .3 -.15(ve a t)-.15 H +(wing modi\214ers,)-.25 F(each preceded by a `:'.)108 568.8 Q F1(h)108 +585.6 Q F0(Remo)144 585.6 Q .3 -.15(ve a t)-.15 H (railing \214lename component, lea).15 E(ving only the head.)-.2 E F1(t) -108 492 Q F0(Remo)144 492 Q .3 -.15(ve a)-.15 H +108 597.6 Q F0(Remo)144 597.6 Q .3 -.15(ve a)-.15 H (ll leading \214lename components, lea).15 E(ving the tail.)-.2 E F1(r) -108 504 Q F0(Remo)144 504 Q .3 -.15(ve a t)-.15 H(railing suf).15 E +108 609.6 Q F0(Remo)144 609.6 Q .3 -.15(ve a t)-.15 H(railing suf).15 E (\214x of the form)-.25 E F2(.xxx)2.5 E F0 2.5(,l)C(ea)-2.5 E -(ving the basename.)-.2 E F1(e)108 516 Q F0(Remo)144 516 Q .3 -.15(ve a) --.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 528 Q -F0(Print the ne)144 528 Q 2.5(wc)-.25 G(ommand b)-2.5 E(ut do not e)-.2 -E -.15(xe)-.15 G(cute it.).15 E F1(q)108 540 Q F0 -(Quote the substituted w)144 540 Q -(ords, escaping further substitutions.)-.1 E F1(x)108 552 Q F0 -(Quote the substituted w)144 552 Q(ords as with)-.1 E F1(q)2.5 E F0 2.5 -(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks)2.5 E F0(and ne)2.5 -E(wlines.)-.25 E F1(s/)108 564 Q F2(old)A F1(/)A F2(ne)A(w)-.15 E F1(/)A -F0(Substitute)144 576 Q F2(ne)3.081 E(w)-.15 E F0 .221 +(ving the basename.)-.2 E F1(e)108 621.6 Q F0(Remo)144 621.6 Q .3 -.15 +(ve a)-.15 H(ll b).15 E(ut the trailing suf)-.2 E(\214x.)-.25 E F1(p)108 +633.6 Q F0(Print the ne)144 633.6 Q 2.5(wc)-.25 G(ommand b)-2.5 E +(ut do not e)-.2 E -.15(xe)-.15 G(cute it.).15 E F1(q)108 645.6 Q F0 +(Quote the substituted w)144 645.6 Q +(ords, escaping further substitutions.)-.1 E F1(x)108 657.6 Q F0 +(Quote the substituted w)144 657.6 Q(ords as with)-.1 E F1(q)2.5 E F0 +2.5(,b)C(ut break into w)-2.7 E(ords at)-.1 E F1(blanks)2.5 E F0(and ne) +2.5 E(wlines.)-.25 E F1(s/)108 669.6 Q F2(old)A F1(/)A F2(ne)A(w)-.15 E +F1(/)A F0(Substitute)144 681.6 Q F2(ne)3.081 E(w)-.15 E F0 .221 (for the \214rst occurrence of)3.031 F F2(old)2.951 E F0 .221(in the e) 3.491 F -.15(ve)-.25 G .221(nt line.).15 F(An)5.221 E 2.721(yd)-.15 G -.221(elimiter can be used in place)-2.721 F .617(of /.)144 588 R .617 +.221(elimiter can be used in place)-2.721 F .617(of /.)144 693.6 R .617 (The \214nal delimiter is optional if it is the last character of the e) 5.617 F -.15(ve)-.25 G .617(nt line.).15 F .616(The delimiter may)5.616 -F .666(be quoted in)144 600 R F2(old)3.396 E F0(and)3.936 E F2(ne)3.526 -E(w)-.15 E F0 .666(with a single backslash.)3.476 F .666 +F .666(be quoted in)144 705.6 R F2(old)3.396 E F0(and)3.936 E F2(ne) +3.526 E(w)-.15 E F0 .666(with a single backslash.)3.476 F .666 (If & appears in)5.666 F F2(ne)3.166 E(w)-.15 E F0 3.166(,i).31 G 3.166 (ti)-3.166 G 3.166(sr)-3.166 G .666(eplaced by)-3.166 F F2(old)3.166 E -F0 5.666(.A).77 G .275(single backslash will quote the &.)144 612 R(If) -5.275 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544 F F2 -(old)3.004 E F0 .274(substituted, or)3.544 F 2.774(,i)-.4 G 2.774(fn) --2.774 G 2.774(op)-2.774 G(re)-2.774 E(vi-)-.25 E -(ous history substitutions took place, the last)144 624 Q F2(string)2.84 -E F0(in a)2.72 E F1(!?)2.5 E F2(string)A F1([?])A F0(search.)5 E F1(&) -108 636 Q F0(Repeat the pre)144 636 Q(vious substitution.)-.25 E F1(g) -108 648 Q F0 .397(Cause changes to be applied o)144 648 R -.15(ve)-.15 G -2.897(rt).15 G .398(he entire e)-2.897 F -.15(ve)-.25 G .398(nt line.) -.15 F .398(This is used in conjunction with `)5.398 F F1(:s)A F0 2.898 -('\()C(e.g.,)-2.898 E(`)144 660 Q F1(:gs/)A F2(old)A F1(/)A F2(ne)A(w) --.15 E F1(/)A F0 1.219('\) or `)B F1(:&)A F0 3.719('. If)B 1.219 -(used with `)3.719 F F1(:s)A F0 1.218(', an)B 3.718(yd)-.15 G 1.218 -(elimiter can be used in place of /, and the \214nal)-3.718 F .089 -(delimiter is optional if it is the last character of the e)144 672 R --.15(ve)-.25 G .09(nt line.).15 F(An)5.09 E F1(a)2.59 E F0 .09 -(may be used as a synon)2.59 F .09(ym for)-.15 F F1(g)144 684 Q F0(.)A -F1(G)108 696 Q F0(Apply the follo)144 696 Q(wing `)-.25 E F1(s)A F0 2.5 -('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15(ve)-.25 G -(nt line.).15 E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(52) -190.395 E 0 Cg EP +F0 5.666(.A).77 G .275(single backslash will quote the &.)144 717.6 R +(If)5.275 E F2(old)3.004 E F0 .274(is null, it is set to the last)3.544 +F F2(old)3.004 E F0 .274(substituted, or)3.544 F 2.774(,i)-.4 G 2.774 +(fn)-2.774 G 2.774(op)-2.774 G(re)-2.774 E(vi-)-.25 E +(ous history substitutions took place, the last)144 729.6 Q F2(string) +2.84 E F0(in a)2.72 E F1(!?)2.5 E F2(string)A F1([?])A F0(search.)5 E +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(52)185.545 E 0 Cg EP %%Page: 53 53 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95 -/Times-Bold@0 SF(SHELL B)72 84 Q(UIL)-.11 E(TIN COMMANDS)-1.007 E F0 -.063(Unless otherwise noted, each b)108 96 R .062(uiltin command docume\ -nted in this section as accepting options preceded by)-.2 F/F2 10 -/Times-Bold@0 SF108 108 Q F0(accepts)2.533 E F22.533 E F0 .034 -(to signify the end of the options.)2.533 F(The)5.034 E F2(:)2.534 E F0 -(,)A F2(true)2.534 E F0(,)A F2(false)2.534 E F0 2.534(,a)C(nd)-2.534 E -F2(test)2.534 E F0 -.2(bu)2.534 G .034(iltins do not accept options and) -.2 F 1.549(do not treat)108 120 R F24.049 E F0(specially)4.049 E -6.549(.T)-.65 G(he)-6.549 E F2(exit)4.049 E F0(,)A F2(logout)4.049 E F0 -(,)A F2 -.18(re)4.049 G(tur).18 E(n)-.15 E F0(,)A F2(br)4.049 E(eak)-.18 -E F0(,)A F2(continue)4.049 E F0(,)A F2(let)4.049 E F0 4.049(,a)C(nd) --4.049 E F2(shift)4.048 E F0 -.2(bu)4.048 G 1.548(iltins accept and).2 F -.26(process ar)108 132 R .26(guments be)-.18 F .26(ginning with)-.15 F -F22.76 E F0 .261(without requiring)2.76 F F22.761 E F0 5.261 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(&)108 84 Q F0(Repeat the pre)144 84 Q(vious substitution.)-.25 E F1 +(g)108 96 Q F0 .397(Cause changes to be applied o)144 96 R -.15(ve)-.15 +G 2.897(rt).15 G .398(he entire e)-2.897 F -.15(ve)-.25 G .398(nt line.) +.15 F .398(This is used in conjunction with `)5.398 F F1(:s)A F0 2.898 +('\()C(e.g.,)-2.898 E(`)144 108 Q F1(:gs/)A/F2 10/Times-Italic@0 SF(old) +A F1(/)A F2(ne)A(w)-.15 E F1(/)A F0 1.219('\) or `)B F1(:&)A F0 3.719 +('. If)B 1.219(used with `)3.719 F F1(:s)A F0 1.218(', an)B 3.718(yd) +-.15 G 1.218(elimiter can be used in place of /, and the \214nal)-3.718 +F .089(delimiter is optional if it is the last character of the e)144 +120 R -.15(ve)-.25 G .09(nt line.).15 F(An)5.09 E F1(a)2.59 E F0 .09 +(may be used as a synon)2.59 F .09(ym for)-.15 F F1(g)144 132 Q F0(.)A +F1(G)108 144 Q F0(Apply the follo)144 144 Q(wing `)-.25 E F1(s)A F0 2.5 +('m)C(odi\214er once to each w)-2.5 E(ord in the e)-.1 E -.15(ve)-.25 G +(nt line.).15 E/F3 10.95/Times-Bold@0 SF(SHELL B)72 160.8 Q(UIL)-.11 E +(TIN COMMANDS)-1.007 E F0 .063(Unless otherwise noted, each b)108 172.8 +R .062(uiltin command documented in this section as accepting options p\ +receded by)-.2 F F1108 184.8 Q F0(accepts)2.533 E F12.533 E F0 +.034(to signify the end of the options.)2.533 F(The)5.034 E F1(:)2.534 E +F0(,)A F1(true)2.534 E F0(,)A F1(false)2.534 E F0 2.534(,a)C(nd)-2.534 E +F1(test)2.534 E F0 -.2(bu)2.534 G .034(iltins do not accept options and) +.2 F 1.549(do not treat)108 196.8 R F14.049 E F0(specially)4.049 E +6.549(.T)-.65 G(he)-6.549 E F1(exit)4.049 E F0(,)A F1(logout)4.049 E F0 +(,)A F1 -.18(re)4.049 G(tur).18 E(n)-.15 E F0(,)A F1(br)4.049 E(eak)-.18 +E F0(,)A F1(continue)4.049 E F0(,)A F1(let)4.049 E F0 4.049(,a)C(nd) +-4.049 E F1(shift)4.048 E F0 -.2(bu)4.048 G 1.548(iltins accept and).2 F +.26(process ar)108 208.8 R .26(guments be)-.18 F .26(ginning with)-.15 F +F12.76 E F0 .261(without requiring)2.76 F F12.761 E F0 5.261 (.O)C .261(ther b)-5.261 F .261(uiltins that accept ar)-.2 F .261 (guments b)-.18 F .261(ut are not)-.2 F 1.154 -(speci\214ed as accepting options interpret ar)108 144 R 1.154 -(guments be)-.18 F 1.154(ginning with)-.15 F F23.654 E F0 1.154 -(as in)3.654 F -.25(va)-.4 G 1.154(lid options and require).25 F F2 -3.654 E F0(to)3.654 E(pre)108 156 Q -.15(ve)-.25 G -(nt this interpretation.).15 E F2(:)108 174 Q F0([)2.5 E/F3 10 -/Times-Italic@0 SF(ar)A(guments)-.37 E F0(])A .451(No ef)144 186 R .451 +(speci\214ed as accepting options interpret ar)108 220.8 R 1.154 +(guments be)-.18 F 1.154(ginning with)-.15 F F13.654 E F0 1.154 +(as in)3.654 F -.25(va)-.4 G 1.154(lid options and require).25 F F1 +3.654 E F0(to)3.654 E(pre)108 232.8 Q -.15(ve)-.25 G +(nt this interpretation.).15 E F1(:)108 250.8 Q F0([)2.5 E F2(ar)A +(guments)-.37 E F0(])A .451(No ef)144 262.8 R .451 (fect; the command does nothing be)-.25 F .452(yond e)-.15 F(xpanding) --.15 E F3(ar)3.282 E(guments)-.37 E F0 .452(and performing an)3.222 F -2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5(redirections. The)144 198 R -(return status is zero.)2.5 E F2(.)110.5 214.8 Q F3(\214lename)6.666 E -F0([)2.5 E F3(ar)A(guments)-.37 E F0(])A F2(sour)108 226.8 Q(ce)-.18 E -F3(\214lename)2.5 E F0([)2.5 E F3(ar)A(guments)-.37 E F0(])A 1.02 -(Read and e)144 238.8 R -.15(xe)-.15 G 1.02(cute commands from).15 F F3 +-.15 E F2(ar)3.282 E(guments)-.37 E F0 .452(and performing an)3.222 F +2.952(ys)-.15 G(peci\214ed)-2.952 E 2.5(redirections. The)144 274.8 R +(return status is zero.)2.5 E F1(.)110.5 291.6 Q F2(\214lename)6.666 E +F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A F1(sour)108 303.6 Q(ce)-.18 E +F2(\214lename)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.02 +(Read and e)144 315.6 R -.15(xe)-.15 G 1.02(cute commands from).15 F F2 (\214lename)5.43 E F0 1.02(in the current shell en)3.7 F 1.02 (vironment and return the e)-.4 F(xit)-.15 E 1.458 -(status of the last command e)144 250.8 R -.15(xe)-.15 G 1.458 -(cuted from).15 F F3(\214lename)3.958 E F0 6.458(.I).18 G(f)-6.458 E F3 +(status of the last command e)144 327.6 R -.15(xe)-.15 G 1.458 +(cuted from).15 F F2(\214lename)3.958 E F0 6.458(.I).18 G(f)-6.458 E F2 (\214lename)5.868 E F0 1.458(does not contain a slash, \214le-)4.138 F -.608(names in)144 262.8 R/F4 9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 -E F0 .608(are used to \214nd the directory containing)2.858 F F3 +.608(names in)144 339.6 R/F4 9/Times-Bold@0 SF -.666(PA)3.108 G(TH)-.189 +E F0 .608(are used to \214nd the directory containing)2.858 F F2 (\214lename)3.108 E F0 5.608(.T).18 G .608(he \214le searched for in) --5.608 F F4 -.666(PA)3.108 G(TH)-.189 E F0 .832(need not be e)144 274.8 -R -.15(xe)-.15 G 3.332(cutable. When).15 F F2(bash)3.332 E F0 .832 -(is not in)3.332 F F3 .832(posix mode)3.332 F F0 3.332(,t)C .833 +-5.608 F F4 -.666(PA)3.108 G(TH)-.189 E F0 .832(need not be e)144 351.6 +R -.15(xe)-.15 G 3.332(cutable. When).15 F F1(bash)3.332 E F0 .832 +(is not in)3.332 F F2 .832(posix mode)3.332 F F0 3.332(,t)C .833 (he current directory is searched if no)-3.332 F .982 -(\214le is found in)144 286.8 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9 -/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F2(sour)3.481 E(cepath)-.18 -E F0 .981(option to the)3.481 F F2(shopt)3.481 E F0 -.2(bu)3.481 G .981 +(\214le is found in)144 363.6 R F4 -.666(PA)3.481 G(TH)-.189 E/F5 9 +/Times-Roman@0 SF(.)A F0 .981(If the)5.481 F F1(sour)3.481 E(cepath)-.18 +E F0 .981(option to the)3.481 F F1(shopt)3.481 E F0 -.2(bu)3.481 G .981 (iltin command is turned of).2 F .981(f, the)-.25 F F4 -.666(PA)144 -298.8 S(TH)-.189 E F0 .112(is not searched.)2.362 F .112(If an)5.112 F -(y)-.15 E F3(ar)2.612 E(guments)-.37 E F0 .112(are supplied, the)2.612 F -2.612(yb)-.15 G .112(ecome the positional parameters when)-2.612 F F3 -(\214lename)144 310.8 Q F0 1.697(is e)4.197 F -.15(xe)-.15 G 4.197 +375.6 S(TH)-.189 E F0 .112(is not searched.)2.362 F .112(If an)5.112 F +(y)-.15 E F2(ar)2.612 E(guments)-.37 E F0 .112(are supplied, the)2.612 F +2.612(yb)-.15 G .112(ecome the positional parameters when)-2.612 F F2 +(\214lename)144 387.6 Q F0 1.697(is e)4.197 F -.15(xe)-.15 G 4.197 (cuted. Otherwise).15 F 1.697(the positional parameters are unchanged.) -4.197 F 1.697(If the)6.697 F F24.197 E F0 1.696(option is)4.197 F -(enabled,)144 322.8 Q F2(sour)3.617 E(ce)-.18 E F0 1.117(inherits an) -3.617 F 3.617(yt)-.15 G 1.117(rap on)-3.617 F F2(DEB)3.617 E(UG)-.1 E F0 +4.197 F 1.697(If the)6.697 F F14.197 E F0 1.696(option is)4.197 F +(enabled,)144 399.6 Q F1(sour)3.617 E(ce)-.18 E F0 1.117(inherits an) +3.617 F 3.617(yt)-.15 G 1.117(rap on)-3.617 F F1(DEB)3.617 E(UG)-.1 E F0 3.618(;i)C 3.618(fi)-3.618 G 3.618(ti)-3.618 G 3.618(sn)-3.618 G 1.118 -(ot, an)-3.618 F(y)-.15 E F2(DEB)3.618 E(UG)-.1 E F0 1.118 +(ot, an)-3.618 F(y)-.15 E F1(DEB)3.618 E(UG)-.1 E F0 1.118 (trap string is sa)3.618 F -.15(ve)-.2 G 3.618(da).15 G(nd)-3.618 E .36 -(restored around the call to)144 334.8 R F2(sour)2.86 E(ce)-.18 E F0 -2.86(,a)C(nd)-2.86 E F2(sour)2.86 E(ce)-.18 E F0 .36(unsets the)2.86 F -F2(DEB)2.86 E(UG)-.1 E F0 .36(trap while it e)2.86 F -.15(xe)-.15 G 2.86 -(cutes. If).15 F F22.86 E F0(is)2.86 E 1.435 -(not set, and the sourced \214le changes the)144 346.8 R F2(DEB)3.935 E +(restored around the call to)144 411.6 R F1(sour)2.86 E(ce)-.18 E F0 +2.86(,a)C(nd)-2.86 E F1(sour)2.86 E(ce)-.18 E F0 .36(unsets the)2.86 F +F1(DEB)2.86 E(UG)-.1 E F0 .36(trap while it e)2.86 F -.15(xe)-.15 G 2.86 +(cutes. If).15 F F12.86 E F0(is)2.86 E 1.435 +(not set, and the sourced \214le changes the)144 423.6 R F1(DEB)3.935 E (UG)-.1 E F0 1.435(trap, the ne)3.935 F 3.935(wv)-.25 G 1.435 -(alue is retained when)-4.185 F F2(sour)3.935 E(ce)-.18 E F0 3.763 -(completes. The)144 358.8 R 1.262 +(alue is retained when)-4.185 F F1(sour)3.935 E(ce)-.18 E F0 3.763 +(completes. The)144 435.6 R 1.262 (return status is the status of the last command e)3.763 F 1.262 -(xited within the script \(0 if no)-.15 F(commands are e)144 370.8 Q --.15(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F3(\214lename)4.41 E -F0(is not found or cannot be read.)2.68 E F2(alias)108 387.6 Q F0([)2.5 -E F2A F0 2.5(][)C F3(name)-2.5 E F0([=)A F3(value)A F0 2.5(].)C -(..])-2.5 E F2(Alias)144 399.6 Q F0 2.724(with no ar)5.224 F 2.724 -(guments or with the)-.18 F F25.224 E F0 2.724 -(option prints the list of aliases in the form)5.224 F F2(alias)5.225 E -F3(name)144 411.6 Q F0(=)A F3(value)A F0 .58(on standard output.)3.08 F +(xited within the script \(0 if no)-.15 F(commands are e)144 447.6 Q +-.15(xe)-.15 G(cuted\), and f).15 E(alse if)-.1 E F2(\214lename)4.41 E +F0(is not found or cannot be read.)2.68 E F1(alias)108 464.4 Q F0([)2.5 +E F1A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C +(..])-2.5 E F1(Alias)144 476.4 Q F0 2.724(with no ar)5.224 F 2.724 +(guments or with the)-.18 F F15.224 E F0 2.724 +(option prints the list of aliases in the form)5.224 F F1(alias)5.225 E +F2(name)144 488.4 Q F0(=)A F2(value)A F0 .58(on standard output.)3.08 F .58(When ar)5.58 F .58 -(guments are supplied, an alias is de\214ned for each)-.18 F F3(name) -3.08 E F0(whose)144 423.6 Q F3(value)2.508 E F0 .009(is gi)2.508 F -.15 -(ve)-.25 G 2.509(n. A).15 F .009(trailing space in)2.509 F F3(value) +(guments are supplied, an alias is de\214ned for each)-.18 F F2(name) +3.08 E F0(whose)144 500.4 Q F2(value)2.508 E F0 .009(is gi)2.508 F -.15 +(ve)-.25 G 2.509(n. A).15 F .009(trailing space in)2.509 F F2(value) 2.509 E F0 .009(causes the ne)2.509 F .009(xt w)-.15 F .009 (ord to be check)-.1 F .009(ed for alias substi-)-.1 F .579 -(tution when the alias is e)144 435.6 R 3.079(xpanded. F)-.15 F .579 -(or each)-.15 F F3(name)3.079 E F0 .579(in the ar)3.079 F .579 -(gument list for which no)-.18 F F3(value)3.079 E F0 .578(is sup-)3.078 -F 1.313(plied, the name and v)144 447.6 R 1.314 -(alue of the alias is printed.)-.25 F F2(Alias)6.314 E F0 1.314 -(returns true unless a)3.814 F F3(name)3.814 E F0 1.314(is gi)3.814 F +(tution when the alias is e)144 512.4 R 3.079(xpanded. F)-.15 F .579 +(or each)-.15 F F2(name)3.079 E F0 .579(in the ar)3.079 F .579 +(gument list for which no)-.18 F F2(value)3.079 E F0 .578(is sup-)3.078 +F 1.313(plied, the name and v)144 524.4 R 1.314 +(alue of the alias is printed.)-.25 F F1(Alias)6.314 E F0 1.314 +(returns true unless a)3.814 F F2(name)3.814 E F0 1.314(is gi)3.814 F -.15(ve)-.25 G 3.814(nf).15 G(or)-3.814 E -(which no alias has been de\214ned.)144 459.6 Q F2(bg)108 476.4 Q F0([) -2.5 E F3(jobspec)A F0(...])2.5 E .745(Resume each suspended job)144 -488.4 R F3(jobspec)3.245 E F0 .745 -(in the background, as if it had been started with)3.245 F F2(&)3.244 E -F0 5.744(.I)C(f)-5.744 E F3(job-)4.984 E(spec)144 500.4 Q F0 .671 +(which no alias has been de\214ned.)144 536.4 Q F1(bg)108 553.2 Q F0([) +2.5 E F2(jobspec)A F0(...])2.5 E .745(Resume each suspended job)144 +565.2 R F2(jobspec)3.245 E F0 .745 +(in the background, as if it had been started with)3.245 F F1(&)3.244 E +F0 5.744(.I)C(f)-5.744 E F2(job-)4.984 E(spec)144 577.2 Q F0 .671 (is not present, the shell')3.481 F 3.171(sn)-.55 G .672(otion of the) --3.171 F F3(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F2 -(bg)5.672 E F3(jobspec)4.912 E F0 .672(returns 0 unless run)3.482 F .419 -(when job control is disabled or)144 512.4 R 2.919(,w)-.4 G .419 +-3.171 F F2(curr)3.172 E .672(ent job)-.37 F F0 .672(is used.)3.172 F F1 +(bg)5.672 E F2(jobspec)4.912 E F0 .672(returns 0 unless run)3.482 F .419 +(when job control is disabled or)144 589.2 R 2.919(,w)-.4 G .419 (hen run with job control enabled, an)-2.919 F 2.918(ys)-.15 G -(peci\214ed)-2.918 E F3(jobspec)2.918 E F0 -.1(wa)2.918 G 2.918(sn).1 G -(ot)-2.918 E(found or w)144 524.4 Q(as started without job control.)-.1 -E F2(bind)108 541.2 Q F0([)2.5 E F2A F3 -.1(ke)2.5 G(ymap)-.2 E F0 -2.5(][)C F2(\255lpsvPSVX)-2.5 E F0(])A F2(bind)108 553.2 Q F0([)2.5 E F2 -A F3 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F2-2.5 E F3 -(function)2.5 E F0 2.5(][)C F2-2.5 E F3(function)2.5 E F0 2.5(][)C -F2-2.5 E F3 -.1(ke)2.5 G(yseq)-.2 E F0(])A F2(bind)108 565.2 Q F0 -([)2.5 E F2A F3 -.1(ke)2.5 G(ymap)-.2 E F0(])A F22.5 E F3 -(\214lename)2.5 E F2(bind)108 577.2 Q F0([)2.5 E F2A F3 -.1(ke)2.5 -G(ymap)-.2 E F0(])A F22.5 E F3 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F3 -(shell\255command)A F2(bind)108 589.2 Q F0([)2.5 E F2A F3 -.1(ke) -2.5 G(ymap)-.2 E F0(])A F3 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F3 -(function\255name)A F2(bind)108 601.2 Q F0([)2.5 E F2A F3 -.1(ke) -2.5 G(ymap)-.2 E F0(])A F3 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F3 -.37(re)C -(adline\255command).37 E F0 .238(Display current)144 613.2 R F2 -.18(re) +(peci\214ed)-2.918 E F2(jobspec)2.918 E F0 -.1(wa)2.918 G 2.918(sn).1 G +(ot)-2.918 E(found or w)144 601.2 Q(as started without job control.)-.1 +E F1(bind)108 618 Q F0([)2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0 +2.5(][)C F1(\255lpsvPSVX)-2.5 E F0(])A F1(bind)108 630 Q F0([)2.5 E F1 +A F2 -.1(ke)2.5 G(ymap)-.2 E F0 2.5(][)C F1-2.5 E F2 +(function)2.5 E F0 2.5(][)C F1-2.5 E F2(function)2.5 E F0 2.5(][)C +F1-2.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(])A F1(bind)108 642 Q F0([) +2.5 E F1A F2 -.1(ke)2.5 G(ymap)-.2 E F0(])A F12.5 E F2 +(\214lename)2.5 E F1(bind)108 654 Q F0([)2.5 E F1A F2 -.1(ke)2.5 G +(ymap)-.2 E F0(])A F12.5 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 +(shell\255command)A F1(bind)108 666 Q F0([)2.5 E F1A F2 -.1(ke)2.5 +G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 +(function\255name)A F1(bind)108 678 Q F0([)2.5 E F1A F2 -.1(ke)2.5 +G(ymap)-.2 E F0(])A F2 -.1(ke)2.5 G(yseq)-.2 E F0(:)A F2 -.37(re)C +(adline\255command).37 E F0 .238(Display current)144 690 R F1 -.18(re) 2.738 G(adline).18 E F0 -.1(ke)2.738 G 2.738(ya)-.05 G .239 (nd function bindings, bind a k)-2.738 F .539 -.15(ey s)-.1 H .239 -(equence to a).15 F F2 -.18(re)2.739 G(adline).18 E F0 .239(function or) -2.739 F .476(macro, or set a)144 625.2 R F2 -.18(re)2.976 G(adline).18 E +(equence to a).15 F F1 -.18(re)2.739 G(adline).18 E F0 .239(function or) +2.739 F .476(macro, or set a)144 702 R F1 -.18(re)2.976 G(adline).18 E F0 -.25(va)2.976 G 2.976(riable. Each).25 F .476(non-option ar)2.976 F -.475(gument is a command as it w)-.18 F .475(ould appear in)-.1 F F3 -(.inputr)144 637.2 Q(c)-.37 E F0 2.983(,b).31 G .484 +.475(gument is a command as it w)-.18 F .475(ould appear in)-.1 F F2 +(.inputr)144 714 Q(c)-.37 E F0 2.983(,b).31 G .484 (ut each binding or command must be passed as a separate ar)-3.183 F .484(gument; e.g., '"\\C\255x\\C\255r":)-.18 F 2.5 -(re\255read\255init\255\214le'. Options,)144 649.2 R(if supplied, ha)2.5 -E .3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F2144 -661.2 Q F3 -.1(ke)2.5 G(ymap)-.2 E F0(Use)180 673.2 Q F3 -.1(ke)5.159 G -(ymap)-.2 E F0 2.659(as the k)5.349 F -.15(ey)-.1 G 2.658(map to be af) -.15 F 2.658(fected by the subsequent bindings.)-.25 F(Acceptable)7.658 E -F3 -.1(ke)180 685.2 S(ymap)-.2 E F0 3.192(names are)5.882 F F3 3.192 -(emacs, emacs\255standar)5.692 F 3.193 -(d, emacs\255meta, emacs\255ctlx, vi, vi\255mo)-.37 F(ve)-.1 E(,)-.1 E -(vi\255command)180 697.2 Q F0 4.43(,a)C(nd)-4.43 E F3(vi\255insert)4.429 -E F0(.).68 E F3(vi)6.929 E F0 1.929(is equi)4.429 F -.25(va)-.25 G 1.929 -(lent to).25 F F3(vi\255command)4.429 E F0(;)A F3(emacs)4.429 E F0 1.929 -(is equi)4.429 F -.25(va)-.25 G 1.929(lent to).25 F F3(emacs\255standar) -180 709.2 Q(d)-.37 E F0(.)A(GNU Bash 4.4)72 768 Q(2015 October 11) -141.235 E(53)190.395 E 0 Cg EP +(re\255read\255init\255\214le'. Options,)144 726 R(if supplied, ha)2.5 E +.3 -.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E(GNU Bash 4.4)72 +768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(53)185.545 E 0 Cg +EP %%Page: 54 54 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q F0(List the names of all)180 84 Q F1 -.18(re)2.5 G -(adline).18 E F0(functions.)2.5 E F1144 96 Q F0(Display)180 96 Q -F1 -.18(re)2.5 G(adline).18 E F0 +SF144 84 Q/F2 10/Times-Italic@0 SF -.1(ke)2.5 G(ymap)-.2 E F0(Use) +180 96 Q F2 -.1(ke)5.159 G(ymap)-.2 E F0 2.659(as the k)5.349 F -.15(ey) +-.1 G 2.658(map to be af).15 F 2.658(fected by the subsequent bindings.) +-.25 F(Acceptable)7.658 E F2 -.1(ke)180 108 S(ymap)-.2 E F0 3.192 +(names are)5.882 F F2 3.192(emacs, emacs\255standar)5.692 F 3.193 +(d, emacs\255meta, emacs\255ctlx, vi, vi\255mo)-.37 F(ve)-.1 E(,)-.1 E +(vi\255command)180 120 Q F0 4.43(,a)C(nd)-4.43 E F2(vi\255insert)4.429 E +F0(.).68 E F2(vi)6.929 E F0 1.929(is equi)4.429 F -.25(va)-.25 G 1.929 +(lent to).25 F F2(vi\255command)4.429 E F0(;)A F2(emacs)4.429 E F0 1.929 +(is equi)4.429 F -.25(va)-.25 G 1.929(lent to).25 F F2(emacs\255standar) +180 132 Q(d)-.37 E F0(.)A F1144 144 Q F0(List the names of all)180 +144 Q F1 -.18(re)2.5 G(adline).18 E F0(functions.)2.5 E F1144 156 +Q F0(Display)180 156 Q F1 -.18(re)2.5 G(adline).18 E F0 (function names and bindings in such a w)2.5 E(ay that the)-.1 E 2.5(yc) --.15 G(an be re-read.)-2.5 E F1144 108 Q F0(List current)180 108 Q +-.15 G(an be re-read.)-2.5 E F1144 168 Q F0(List current)180 168 Q F1 -.18(re)2.5 G(adline).18 E F0(function names and bindings.)2.5 E F1 -144 120 Q F0(Display)180 120 Q F1 -.18(re)3.655 G(adline).18 E F0 +144 180 Q F0(Display)180 180 Q F1 -.18(re)3.655 G(adline).18 E F0 -.1(ke)3.655 G 3.655(ys)-.05 G 1.155 (equences bound to macros and the strings the)-3.655 F 3.655(yo)-.15 G -1.155(utput in such a)-3.655 F -.1(wa)180 132 S 2.5(yt).1 G(hat the)-2.5 -E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 144 Q F0(Display)180 -144 Q F1 -.18(re)2.5 G(adline).18 E F0 -.1(ke)2.5 G 2.5(ys)-.05 G +1.155(utput in such a)-3.655 F -.1(wa)180 192 S 2.5(yt).1 G(hat the)-2.5 +E 2.5(yc)-.15 G(an be re-read.)-2.5 E F1144 204 Q F0(Display)180 +204 Q F1 -.18(re)2.5 G(adline).18 E F0 -.1(ke)2.5 G 2.5(ys)-.05 G (equences bound to macros and the strings the)-2.5 E 2.5(yo)-.15 G -(utput.)-2.5 E F1144 156 Q F0(Display)180 156 Q F1 -.18(re)2.5 G +(utput.)-2.5 E F1144 216 Q F0(Display)180 216 Q F1 -.18(re)2.5 G (adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E (alues in such a w)-.25 E(ay that the)-.1 E 2.5(yc)-.15 G -(an be re-read.)-2.5 E F1144 168 Q F0(List current)180 168 Q F1 +(an be re-read.)-2.5 E F1144 228 Q F0(List current)180 228 Q F1 -.18(re)2.5 G(adline).18 E F0 -.25(va)2.5 G(riable names and v).25 E -(alues.)-.25 E F1144 180 Q/F2 10/Times-Italic@0 SF(\214lename)2.5 -E F0(Read k)180 192 Q .3 -.15(ey b)-.1 H(indings from).15 E F2 -(\214lename)2.5 E F0(.)A F1144 204 Q F2(function)2.5 E F0 -(Query about which k)180 216 Q -.15(ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o) --2.5 H .2 -.1(ke t).4 H(he named).1 E F2(function)2.5 E F0(.)A F1 -144 228 Q F2(function)2.5 E F0(Unbind all k)180 240 Q -.15(ey)-.1 G 2.5 -(sb).15 G(ound to the named)-2.5 E F2(function)2.5 E F0(.)A F1144 -252 Q F2 -.1(ke)2.5 G(yseq)-.2 E F0(Remo)180 264 Q .3 -.15(ve a)-.15 H -.3 -.15(ny c).15 H(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E -F0(.)A F1144 276 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2 -(shell\255command)A F0(Cause)180 288 Q F2(shell\255command)4.325 E F0 -1.825(to be e)4.325 F -.15(xe)-.15 G 1.825(cuted whene).15 F -.15(ve) --.25 G(r).15 E F2 -.1(ke)4.325 G(yseq)-.2 E F0 1.825(is entered.)4.325 F -(When)6.825 E F2(shell\255com-)4.325 E(mand)180 300 Q F0 1.764(is e) -4.264 F -.15(xe)-.15 G 1.765(cuted, the shell sets the).15 F/F3 9 -/Times-Bold@0 SF(READLINE_LINE)4.265 E F0 -.25(va)4.015 G 1.765 -(riable to the contents of the).25 F F1 -.18(re)180 312 S(adline).18 E -F0 1.353(line b)3.853 F(uf)-.2 E 1.353(fer and the)-.25 F F3 -(READLINE_POINT)3.853 E F0 -.25(va)3.603 G 1.353 +(alues.)-.25 E F1144 240 Q F2(\214lename)2.5 E F0(Read k)180 252 Q +.3 -.15(ey b)-.1 H(indings from).15 E F2(\214lename)2.5 E F0(.)A F1 +144 264 Q F2(function)2.5 E F0(Query about which k)180 276 Q -.15 +(ey)-.1 G 2.5(si).15 G -1.9 -.4(nv o)-2.5 H .2 -.1(ke t).4 H(he named).1 +E F2(function)2.5 E F0(.)A F1144 288 Q F2(function)2.5 E F0 +(Unbind all k)180 300 Q -.15(ey)-.1 G 2.5(sb).15 G(ound to the named) +-2.5 E F2(function)2.5 E F0(.)A F1144 312 Q F2 -.1(ke)2.5 G(yseq) +-.2 E F0(Remo)180 324 Q .3 -.15(ve a)-.15 H .3 -.15(ny c).15 H +(urrent binding for).15 E F2 -.1(ke)2.5 G(yseq)-.2 E F0(.)A F1144 +336 Q F2 -.1(ke)2.5 G(yseq)-.2 E F1(:)A F2(shell\255command)A F0(Cause) +180 348 Q F2(shell\255command)4.325 E F0 1.825(to be e)4.325 F -.15(xe) +-.15 G 1.825(cuted whene).15 F -.15(ve)-.25 G(r).15 E F2 -.1(ke)4.325 G +(yseq)-.2 E F0 1.825(is entered.)4.325 F(When)6.825 E F2(shell\255com-) +4.325 E(mand)180 360 Q F0 1.764(is e)4.264 F -.15(xe)-.15 G 1.765 +(cuted, the shell sets the).15 F/F3 9/Times-Bold@0 SF(READLINE_LINE) +4.265 E F0 -.25(va)4.015 G 1.765(riable to the contents of the).25 F F1 +-.18(re)180 372 S(adline).18 E F0 1.353(line b)3.853 F(uf)-.2 E 1.353 +(fer and the)-.25 F F3(READLINE_POINT)3.853 E F0 -.25(va)3.603 G 1.353 (riable to the current location of the).25 F 2.011(insertion point.)180 -324 R 2.011(If the e)7.011 F -.15(xe)-.15 G 2.011 +384 R 2.011(If the e)7.011 F -.15(xe)-.15 G 2.011 (cuted command changes the v).15 F 2.011(alue of)-.25 F F3 -(READLINE_LINE)4.512 E F0(or)4.262 E F3(READLINE_POINT)180 336 Q/F4 9 +(READLINE_LINE)4.512 E F0(or)4.262 E F3(READLINE_POINT)180 396 Q/F4 9 /Times-Roman@0 SF(,)A F0(those ne)2.25 E 2.5(wv)-.25 G -(alues will be re\215ected in the editing state.)-2.75 E F1144 348 -Q F0 .83(List all k)180 348 R 1.13 -.15(ey s)-.1 H .829 +(alues will be re\215ected in the editing state.)-2.75 E F1144 408 +Q F0 .83(List all k)180 408 R 1.13 -.15(ey s)-.1 H .829 (equences bound to shell commands and the associated commands in a for) -.15 F(-)-.2 E(mat that can be reused as input.)180 360 Q(The return v) -144 376.8 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15 +.15 F(-)-.2 E(mat that can be reused as input.)180 420 Q(The return v) +144 436.8 Q(alue is 0 unless an unrecognized option is gi)-.25 E -.15 (ve)-.25 G 2.5(no).15 G 2.5(ra)-2.5 G 2.5(ne)-2.5 G(rror occurred.)-2.5 -E F1(br)108 393.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054 -(Exit from within a)144 405.6 R F1 -.25(fo)2.554 G(r).25 E F0(,)A F1 +E F1(br)108 453.6 Q(eak)-.18 E F0([)2.5 E F2(n)A F0(])A .054 +(Exit from within a)144 465.6 R F1 -.25(fo)2.554 G(r).25 E F0(,)A F1 (while)2.554 E F0(,)A F1(until)2.555 E F0 2.555(,o)C(r)-2.555 E F1 (select)2.555 E F0 2.555(loop. If)2.555 F F2(n)2.555 E F0 .055 (is speci\214ed, break)2.555 F F2(n)2.555 E F0(le)2.555 E -.15(ve)-.25 G (ls.).15 E F2(n)5.415 E F0 .055(must be)2.795 F/F5 10/Symbol SF2.555 -E F0(1.)2.555 E(If)144 417.6 Q F2(n)3.075 E F0 .215(is greater than the\ +E F0(1.)2.555 E(If)144 477.6 Q F2(n)3.075 E F0 .215(is greater than the\ number of enclosing loops, all enclosing loops are e)2.955 F 2.714 (xited. The)-.15 F .214(return v)2.714 F(alue)-.25 E(is 0 unless)144 -429.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 -(bu)108 446.4 S(iltin).2 E F2(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E -F2(ar)A(guments)-.37 E F0(])A(Ex)144 458.4 Q .792 +489.6 Q F2(n)2.5 E F0(is not greater than or equal to 1.)2.5 E F1 -.2 +(bu)108 506.4 S(iltin).2 E F2(shell\255b)2.5 E(uiltin)-.2 E F0([)2.5 E +F2(ar)A(guments)-.37 E F0(])A(Ex)144 518.4 Q .792 (ecute the speci\214ed shell b)-.15 F .792(uiltin, passing it)-.2 F F2 (ar)3.293 E(guments)-.37 E F0 3.293(,a).27 G .793(nd return its e)-3.293 F .793(xit status.)-.15 F .793(This is useful)5.793 F .616 (when de\214ning a function whose name is the same as a shell b)144 -470.4 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144 -482.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0 +530.4 R .615(uiltin, retaining the functionality of)-.2 F .57(the b)144 +542.4 R .57(uiltin within the function.)-.2 F(The)5.57 E F1(cd)3.07 E F0 -.2(bu)3.07 G .57(iltin is commonly rede\214ned this w).2 F(ay)-.1 E -5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 494.4 Q(alse if)-.1 +5.57(.T)-.65 G .57(he return status)-5.57 F(is f)144 554.4 Q(alse if)-.1 E F2(shell\255b)2.84 E(uiltin)-.2 E F0(is not a shell b)2.74 E -(uiltin command.)-.2 E F1(caller)108 511.2 Q F0([)2.5 E F2 -.2(ex)C(pr) -.2 E F0(])A .254(Returns the conte)144 523.2 R .254(xt of an)-.15 F +(uiltin command.)-.2 E F1(caller)108 571.2 Q F0([)2.5 E F2 -.2(ex)C(pr) +.2 E F0(])A .254(Returns the conte)144 583.2 R .254(xt of an)-.15 F 2.754(ya)-.15 G(cti)-2.754 E .554 -.15(ve s)-.25 H .254 (ubroutine call \(a shell function or a script e).15 F -.15(xe)-.15 G -.254(cuted with the).15 F F1(.)2.753 E F0(or)2.753 E F1(sour)144 535.2 Q +.254(cuted with the).15 F F1(.)2.753 E F0(or)2.753 E F1(sour)144 595.2 Q (ce)-.18 E F0 -.2(bu)2.824 G 2.824(iltins\). W).2 F(ithout)-.4 E F2 -.2 (ex)2.824 G(pr).2 E F0(,)A F1(caller)2.824 E F0 .324 (displays the line number and source \214lename of the current)2.824 F -.254(subroutine call.)144 547.2 R .254(If a non-ne)5.254 F -.05(ga)-.15 +.254(subroutine call.)144 607.2 R .254(If a non-ne)5.254 F -.05(ga)-.15 G(ti).05 E .554 -.15(ve i)-.25 H(nte).15 E .253(ger is supplied as)-.15 F F2 -.2(ex)2.753 G(pr).2 E F0(,)A F1(caller)2.753 E F0 .253 (displays the line number)2.753 F 2.753(,s)-.4 G(ub-)-2.753 E 1.327(rou\ tine name, and source \214le corresponding to that position in the curr\ -ent e)144 559.2 R -.15(xe)-.15 G 1.328(cution call stack.).15 F .001 -(This e)144 571.2 R .001(xtra information may be used, for e)-.15 F .001 +ent e)144 619.2 R -.15(xe)-.15 G 1.328(cution call stack.).15 F .001 +(This e)144 631.2 R .001(xtra information may be used, for e)-.15 F .001 (xample, to print a stack trace.)-.15 F(The current frame is frame)5 E -3.019(0. The)144 583.2 R .519(return v)3.019 F .519 +3.019(0. The)144 643.2 R .519(return v)3.019 F .519 (alue is 0 unless the shell is not e)-.25 F -.15(xe)-.15 G .52 (cuting a subroutine call or).15 F F2 -.2(ex)3.02 G(pr).2 E F0 .52 -(does not corre-)3.02 F(spond to a v)144 595.2 Q -(alid position in the call stack.)-.25 E F1(cd)108 612 Q F0([)2.5 E F1 +(does not corre-)3.02 F(spond to a v)144 655.2 Q +(alid position in the call stack.)-.25 E F1(cd)108 672 Q F0([)2.5 E F1 A F0(|[)A F1A F0([)2.5 E F1A F0(]] [\255@]] [)A F2 -(dir)A F0(])A .322(Change the current directory to)144 624 R F2(dir) +(dir)A F0(])A .322(Change the current directory to)144 684 R F2(dir) 2.822 E F0 5.322(.i)C(f)-5.322 E F2(dir)2.822 E F0 .321 (is not supplied, the v)2.822 F .321(alue of the)-.25 F F3(HOME)2.821 E -F0 .321(shell v)2.571 F .321(ariable is)-.25 F 1.035(the def)144 636 R +F0 .321(shell v)2.571 F .321(ariable is)-.25 F 1.035(the def)144 696 R 3.535(ault. An)-.1 F 3.535(ya)-.15 G 1.035(dditional ar)-3.535 F 1.035 (guments follo)-.18 F(wing)-.25 E F2(dir)3.535 E F0 1.035(are ignored.) 3.535 F 1.036(The v)6.035 F(ariable)-.25 E F3(CDP)3.536 E -.855(AT)-.666 G(H).855 E F0(de\214nes)3.286 E .85 -(the search path for the directory containing)144 648 R F2(dir)3.35 E F0 +(the search path for the directory containing)144 708 R F2(dir)3.35 E F0 3.35(:e).73 G .849(ach directory name in)-3.35 F F3(CDP)3.349 E -.855 -(AT)-.666 G(H).855 E F0 .849(is searched for)3.099 F F2(dir)144 660 Q F0 +(AT)-.666 G(H).855 E F0 .849(is searched for)3.099 F F2(dir)144 720 Q F0 5.664(.A)C(lternati)-5.664 E .964 -.15(ve d)-.25 H .665 (irectory names in).15 F F3(CDP)3.165 E -.855(AT)-.666 G(H).855 E F0 .665(are separated by a colon \(:\).)2.915 F 3.165(An)5.665 G .665 -(ull directory name)-3.165 F(in)144 672 Q F3(CDP)4.163 E -.855(AT)-.666 -G(H).855 E F0 1.663(is the same as the current directory)3.913 F 4.162 -(,i)-.65 G 1.662(.e., `)-4.162 F(`)-.74 E F1(.)A F0 -.74('')C 6.662(.I) -.74 G(f)-6.662 E F2(dir)4.512 E F0(be)4.892 E 1.662 -(gins with a slash \(/\), then)-.15 F F3(CDP)144 684 Q -.855(AT)-.666 G -(H).855 E F0 .19(is not used.)2.44 F(The)5.191 E F12.691 E F0 .191 -(option causes)2.691 F F1(cd)2.691 E F0 .191(to use the ph)2.691 F .191 -(ysical directory structure by resolving)-.05 F 1.12 -(symbolic links while tra)144 696 R -.15(ve)-.2 G(rsing).15 E F2(dir) -3.62 E F0 1.12(and before processing instances of)3.62 F F2(..)3.62 E F0 -(in)3.62 E F2(dir)3.62 E F0 1.12(\(see also the)3.62 F F13.62 E F0 -.395(option to the)144 708 R F1(set)2.895 E F0 -.2(bu)2.895 G .395 -(iltin command\); the).2 F F12.895 E F0 .395 -(option forces symbolic links to be follo)2.895 F .395(wed by resolv-) --.25 F .444(ing the link after processing instances of)144 720 R F2(..) -2.943 E F0(in)2.943 E F2(dir)2.943 E F0 5.443(.I)C(f)-5.443 E F2(..) -2.943 E F0 .443(appears in)2.943 F F2(dir)2.943 E F0 2.943(,i)C 2.943 -(ti)-2.943 G 2.943(sp)-2.943 G .443(rocessed by remo)-2.943 F(ving)-.15 -E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(54)190.395 E 0 Cg EP +(ull directory name)-3.165 F(GNU Bash 4.4)72 768 Q(2015 No)136.385 E +-.15(ve)-.15 G(mber 16).15 E(54)185.545 E 0 Cg EP %%Page: 55 55 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .744 -(the immediately pre)144 84 R .744(vious pathname component from)-.25 F -/F1 10/Times-Italic@0 SF(dir)3.244 E F0 3.244(,b)C .744 -(ack to a slash or the be)-3.244 F .744(ginning of)-.15 F F1(dir)3.244 E -F0(.)A 1.466(If the)144 96 R/F2 10/Times-Bold@0 SF3.966 E F0 1.466 -(option is supplied with)3.966 F F23.965 E F0 3.965(,a)C 1.465 -(nd the current w)-3.965 F 1.465 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(in)144 84 Q/F1 9 +/Times-Bold@0 SF(CDP)4.163 E -.855(AT)-.666 G(H).855 E F0 1.663 +(is the same as the current directory)3.913 F 4.162(,i)-.65 G 1.662 +(.e., `)-4.162 F(`)-.74 E/F2 10/Times-Bold@0 SF(.)A F0 -.74('')C 6.662 +(.I).74 G(f)-6.662 E/F3 10/Times-Italic@0 SF(dir)4.512 E F0(be)4.892 E +1.662(gins with a slash \(/\), then)-.15 F F1(CDP)144 96 Q -.855(AT) +-.666 G(H).855 E F0 .19(is not used.)2.44 F(The)5.191 E F22.691 E +F0 .191(option causes)2.691 F F2(cd)2.691 E F0 .191(to use the ph)2.691 +F .191(ysical directory structure by resolving)-.05 F 1.12 +(symbolic links while tra)144 108 R -.15(ve)-.2 G(rsing).15 E F3(dir) +3.62 E F0 1.12(and before processing instances of)3.62 F F3(..)3.62 E F0 +(in)3.62 E F3(dir)3.62 E F0 1.12(\(see also the)3.62 F F23.62 E F0 +.395(option to the)144 120 R F2(set)2.895 E F0 -.2(bu)2.895 G .395 +(iltin command\); the).2 F F22.895 E F0 .395 +(option forces symbolic links to be follo)2.895 F .395(wed by resolv-) +-.25 F .444(ing the link after processing instances of)144 132 R F3(..) +2.943 E F0(in)2.943 E F3(dir)2.943 E F0 5.443(.I)C(f)-5.443 E F3(..) +2.943 E F0 .443(appears in)2.943 F F3(dir)2.943 E F0 2.943(,i)C 2.943 +(ti)-2.943 G 2.943(sp)-2.943 G .443(rocessed by remo)-2.943 F(ving)-.15 +E .744(the immediately pre)144 144 R .744(vious pathname component from) +-.25 F F3(dir)3.244 E F0 3.244(,b)C .744(ack to a slash or the be)-3.244 +F .744(ginning of)-.15 F F3(dir)3.244 E F0(.)A 1.466(If the)144 156 R F2 +3.966 E F0 1.466(option is supplied with)3.966 F F23.965 E +F0 3.965(,a)C 1.465(nd the current w)-3.965 F 1.465 (orking directory cannot be successfully)-.1 F .467 -(determined after a successful directory change,)144 108 R F2(cd)2.968 E +(determined after a successful directory change,)144 168 R F2(cd)2.968 E F0 .468(will return an unsuccessful status.)2.968 F .468(On systems) -5.468 F .337(that support it, the)144 120 R F22.837 E F0 .336 +5.468 F .337(that support it, the)144 180 R F22.837 E F0 .336 (option presents the e)2.836 F .336(xtended attrib)-.15 F .336 (utes associated with a \214le as a directory)-.2 F(.)-.65 E .71(An ar) -144 132 R .71(gument of)-.18 F F23.21 E F0 .71(is con)3.21 F -.15 -(ve)-.4 G .71(rted to).15 F/F3 9/Times-Bold@0 SF($OLDPWD)3.21 E F0 .71 +144 192 R .71(gument of)-.18 F F23.21 E F0 .71(is con)3.21 F -.15 +(ve)-.4 G .71(rted to).15 F F1($OLDPWD)3.21 E F0 .71 (before the directory change is attempted.)2.96 F .71(If a non-)5.71 F -.107(empty directory name from)144 144 R F3(CDP)2.607 E -.855(AT)-.666 G +.107(empty directory name from)144 204 R F1(CDP)2.607 E -.855(AT)-.666 G (H).855 E F0 .107(is used, or if)2.357 F F22.607 E F0 .106 (is the \214rst ar)2.607 F .106(gument, and the directory change)-.18 F -.038(is successful, the absolute pathname of the ne)144 156 R 2.538(ww) +.038(is successful, the absolute pathname of the ne)144 216 R 2.538(ww) -.25 G .038(orking directory is written to the standard output.)-2.638 F -(The return v)144 168 Q(alue is true if the directory w)-.25 E +(The return v)144 228 Q(alue is true if the directory w)-.25 E (as successfully changed; f)-.1 E(alse otherwise.)-.1 E F2(command)108 -184.8 Q F0([)2.5 E F2(\255pVv)A F0(])A F1(command)2.5 E F0([)2.5 E F1 -(ar)A(g)-.37 E F0(...])2.5 E(Run)144 196.8 Q F1(command)2.765 E F0(with) -3.335 E F1(ar)2.895 E(gs)-.37 E F0 .065 +244.8 Q F0([)2.5 E F2(\255pVv)A F0(])A F3(command)2.5 E F0([)2.5 E F3 +(ar)A(g)-.37 E F0(...])2.5 E(Run)144 256.8 Q F3(command)2.765 E F0(with) +3.335 E F3(ar)2.895 E(gs)-.37 E F0 .065 (suppressing the normal shell function lookup.)2.835 F .064(Only b)5.064 -F .064(uiltin commands or)-.2 F .501(commands found in the)144 208.8 R -F3 -.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G +F .064(uiltin commands or)-.2 F .501(commands found in the)144 268.8 R +F1 -.666(PA)3.001 G(TH)-.189 E F0 .502(are e)2.751 F -.15(xe)-.15 G 3.002(cuted. If).15 F(the)3.002 E F23.002 E F0 .502(option is gi) -3.002 F -.15(ve)-.25 G .502(n, the search for).15 F F1(command)3.202 E -F0(is)3.772 E .4(performed using a def)144 220.8 R .4(ault v)-.1 F .4 -(alue for)-.25 F F3 -.666(PA)2.9 G(TH)-.189 E F0 .399 +3.002 F -.15(ve)-.25 G .502(n, the search for).15 F F3(command)3.202 E +F0(is)3.772 E .4(performed using a def)144 280.8 R .4(ault v)-.1 F .4 +(alue for)-.25 F F1 -.666(PA)2.9 G(TH)-.189 E F0 .399 (that is guaranteed to \214nd all of the standard utilities.)2.649 F(If) -5.399 E .174(either the)144 232.8 R F22.674 E F0(or)2.674 E F2 -2.674 E F0 .175(option is supplied, a description of)2.674 F F1 +5.399 E .174(either the)144 292.8 R F22.674 E F0(or)2.674 E F2 +2.674 E F0 .175(option is supplied, a description of)2.674 F F3 (command)2.875 E F0 .175(is printed.)3.445 F(The)5.175 E F22.675 E -F0 .175(option causes)2.675 F 3.318(as)144 244.8 S .818(ingle w)-3.318 F +F0 .175(option causes)2.675 F 3.318(as)144 304.8 S .818(ingle w)-3.318 F .817(ord indicating the command or \214lename used to in)-.1 F -.2(vo) --.4 G -.1(ke).2 G F1(command)3.617 E F0 .817(to be displayed; the)4.087 -F F2144 256.8 Q F0 .249(option produces a more v)2.749 F .249 +-.4 G -.1(ke).2 G F3(command)3.617 E F0 .817(to be displayed; the)4.087 +F F2144 316.8 Q F0 .249(option produces a more v)2.749 F .249 (erbose description.)-.15 F .249(If the)5.249 F F22.749 E F0(or) 2.749 E F22.75 E F0 .25(option is supplied, the e)2.75 F .25 -(xit status)-.15 F 1.005(is 0 if)144 268.8 R F1(command)3.705 E F0 -.1 +(xit status)-.15 F 1.005(is 0 if)144 328.8 R F3(command)3.705 E F0 -.1 (wa)4.275 G 3.505(sf).1 G 1.005(ound, and 1 if not.)-3.505 F 1.004 -(If neither option is supplied and an error occurred or)6.005 F F1 -(command)144.2 280.8 Q F0 1.598(cannot be found, the e)4.868 F 1.599 +(If neither option is supplied and an error occurred or)6.005 F F3 +(command)144.2 340.8 Q F0 1.598(cannot be found, the e)4.868 F 1.599 (xit status is 127.)-.15 F 1.599(Otherwise, the e)6.599 F 1.599 -(xit status of the)-.15 F F2(command)4.099 E F0 -.2(bu)144 292.8 S -(iltin is the e).2 E(xit status of)-.15 E F1(command)2.5 E F0(.).77 E F2 -(compgen)108 309.6 Q F0([)2.5 E F1(option)A F0 2.5(][)C F1(wor)-2.5 E(d) --.37 E F0(])A .013(Generate possible completion matches for)144 321.6 R -F1(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F1(option)2.513 +(xit status of the)-.15 F F2(command)4.099 E F0 -.2(bu)144 352.8 S +(iltin is the e).2 E(xit status of)-.15 E F3(command)2.5 E F0(.).77 E F2 +(compgen)108 369.6 Q F0([)2.5 E F3(option)A F0 2.5(][)C F3(wor)-2.5 E(d) +-.37 E F0(])A .013(Generate possible completion matches for)144 381.6 R +F3(wor)2.513 E(d)-.37 E F0 .013(according to the)2.513 F F3(option)2.513 E F0 .013(s, which may be an)B 2.512(yo)-.15 G(ption)-2.512 E .981 -(accepted by the)144 333.6 R F2(complete)3.481 E F0 -.2(bu)3.481 G .981 +(accepted by the)144 393.6 R F2(complete)3.481 E F0 -.2(bu)3.481 G .981 (iltin with the e).2 F .981(xception of)-.15 F F23.481 E F0(and) 3.481 E F23.481 E F0 3.481(,a)C .982(nd write the matches to the) --3.481 F .131(standard output.)144 345.6 R .131(When using the)5.131 F +-3.481 F .131(standard output.)144 405.6 R .131(When using the)5.131 F F22.631 E F0(or)2.631 E F22.631 E F0 .131(options, the v) 2.631 F .13(arious shell v)-.25 F .13(ariables set by the program-)-.25 -F(mable completion f)144 357.6 Q(acilities, while a)-.1 E -.25(va)-.2 G +F(mable completion f)144 417.6 Q(acilities, while a)-.1 E -.25(va)-.2 G (ilable, will not ha).25 E .3 -.15(ve u)-.2 H(seful v).15 E(alues.)-.25 -E .352(The matches will be generated in the same w)144 381.6 R .352 +E .352(The matches will be generated in the same w)144 441.6 R .352 (ay as if the programmable completion code had gen-)-.1 F .02(erated th\ em directly from a completion speci\214cation with the same \215ags.)144 -393.6 R(If)5.02 E F1(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only) -2.52 F(those completions matching)144 405.6 Q F1(wor)2.5 E(d)-.37 E F0 -(will be displayed.)2.5 E(The return v)144 429.6 Q +453.6 R(If)5.02 E F3(wor)2.52 E(d)-.37 E F0 .02(is speci\214ed, only) +2.52 F(those completions matching)144 465.6 Q F3(wor)2.5 E(d)-.37 E F0 +(will be displayed.)2.5 E(The return v)144 489.6 Q (alue is true unless an in)-.25 E -.25(va)-.4 G (lid option is supplied, or no matches were generated.).25 E F2 -(complete)108 446.4 Q F0([)3.728 E F2(\255abcdefgjksuv)A F0 3.728(][)C -F2-3.728 E F1(comp-option)3.728 E F0 3.728(][)C F2(\255DE)-3.728 E -F0 3.728(][)C F2-3.728 E F1(action)3.728 E F0 3.728(][)C F2 --3.728 E F1(globpat)3.728 E F0 3.729(][)C F2-3.729 E F1(wor)3.729 -E(dlist)-.37 E F0 3.729(][)C F2-3.729 E F1(func-)3.729 E(tion)108 -458.4 Q F0 2.5(][)C F2-2.5 E F1(command)2.5 E F0(])A([)144 470.4 Q -F2A F1(\214lterpat)2.5 E F0 2.5(][)C F2-2.5 E F1(pr)2.5 E -(e\214x)-.37 E F0 2.5(][)C F2-2.5 E F1(suf)2.5 E<8c78>-.18 E F0(]) -A F1(name)2.5 E F0([)2.5 E F1(name ...)A F0(])A F2(complete \255pr)108 -482.4 Q F0([)2.5 E F2(\255DE)A F0 2.5(][)C F1(name)-2.5 E F0(...])2.5 E -.634(Specify ho)144 494.4 R 3.134(wa)-.25 G -.18(rg)-3.134 G .634 -(uments to each).18 F F1(name)3.134 E F0 .634(should be completed.)3.134 +(complete)108 506.4 Q F0([)3.728 E F2(\255abcdefgjksuv)A F0 3.728(][)C +F2-3.728 E F3(comp-option)3.728 E F0 3.728(][)C F2(\255DE)-3.728 E +F0 3.728(][)C F2-3.728 E F3(action)3.728 E F0 3.728(][)C F2 +-3.728 E F3(globpat)3.728 E F0 3.729(][)C F2-3.729 E F3(wor)3.729 +E(dlist)-.37 E F0 3.729(][)C F2-3.729 E F3(func-)3.729 E(tion)108 +518.4 Q F0 2.5(][)C F2-2.5 E F3(command)2.5 E F0(])A([)144 530.4 Q +F2A F3(\214lterpat)2.5 E F0 2.5(][)C F2-2.5 E F3(pr)2.5 E +(e\214x)-.37 E F0 2.5(][)C F2-2.5 E F3(suf)2.5 E<8c78>-.18 E F0(]) +A F3(name)2.5 E F0([)2.5 E F3(name ...)A F0(])A F2(complete \255pr)108 +542.4 Q F0([)2.5 E F2(\255DE)A F0 2.5(][)C F3(name)-2.5 E F0(...])2.5 E +.634(Specify ho)144 554.4 R 3.134(wa)-.25 G -.18(rg)-3.134 G .634 +(uments to each).18 F F3(name)3.134 E F0 .634(should be completed.)3.134 F .633(If the)5.634 F F23.133 E F0 .633 (option is supplied, or if no)3.133 F .139(options are supplied, e)144 -506.4 R .139(xisting completion speci\214cations are printed in a w)-.15 +566.4 R .139(xisting completion speci\214cations are printed in a w)-.15 F .14(ay that allo)-.1 F .14(ws them to be)-.25 F .31(reused as input.) -144 518.4 R(The)5.31 E F22.81 E F0 .31(option remo)2.81 F -.15(ve) --.15 G 2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F1 +144 578.4 R(The)5.31 E F22.81 E F0 .31(option remo)2.81 F -.15(ve) +-.15 G 2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F3 (name)2.81 E F0 2.81(,o)C 1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E -F1(name)2.81 E F0(s)A 1.346 -(are supplied, all completion speci\214cations.)144 530.4 R(The)6.347 E +F3(name)2.81 E F0(s)A 1.346 +(are supplied, all completion speci\214cations.)144 590.4 R(The)6.347 E F23.847 E F0 1.347(option indicates that the remaining options) -3.847 F .5(and actions should apply to the `)144 542.4 R(`def)-.74 E +3.847 F .5(and actions should apply to the `)144 602.4 R(`def)-.74 E (ault')-.1 E 3('c)-.74 G .5 (ommand completion; that is, completion attempted on)-3 F 3.455(ac)144 -554.4 S .955(ommand for which no completion has pre)-3.455 F .955 +614.4 S .955(ommand for which no completion has pre)-3.455 F .955 (viously been de\214ned.)-.25 F(The)5.955 E F23.455 E F0 .955 (option indicates that)3.455 F .065 -(the remaining options and actions should apply to `)144 566.4 R +(the remaining options and actions should apply to `)144 626.4 R (`empty')-.74 E 2.564('c)-.74 G .064 (ommand completion; that is, comple-)-2.564 F -(tion attempted on a blank line.)144 578.4 Q 1.437 +(tion attempted on a blank line.)144 638.4 Q 1.437 (The process of applying these completion speci\214cations when w)144 -602.4 R 1.438(ord completion is attempted is)-.1 F(described abo)144 -614.4 Q .3 -.15(ve u)-.15 H(nder).15 E F2(Pr)2.5 E +662.4 R 1.438(ord completion is attempted is)-.1 F(described abo)144 +674.4 Q .3 -.15(ve u)-.15 H(nder).15 E F2(Pr)2.5 E (ogrammable Completion)-.18 E F0(.)A .556 -(Other options, if speci\214ed, ha)144 638.4 R .856 -.15(ve t)-.2 H .555 +(Other options, if speci\214ed, ha)144 698.4 R .856 -.15(ve t)-.2 H .555 (he follo).15 F .555(wing meanings.)-.25 F .555(The ar)5.555 F .555 (guments to the)-.18 F F23.055 E F0(,)A F23.055 E F0 3.055 (,a)C(nd)-3.055 E F23.055 E F0 .722(options \(and, if necessary) -144 650.4 R 3.222(,t)-.65 G(he)-3.222 E F23.222 E F0(and)3.222 E +144 710.4 R 3.222(,t)-.65 G(he)-3.222 E F23.222 E F0(and)3.222 E F23.222 E F0 .723 (options\) should be quoted to protect them from e)3.222 F(xpan-)-.15 E -(sion before the)144 662.4 Q F2(complete)2.5 E F0 -.2(bu)2.5 G -(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F2144 674.4 Q -F1(comp-option)2.5 E F0(The)184 686.4 Q F1(comp-option)2.791 E F0 .291 -(controls se)2.791 F -.15(ve)-.25 G .291(ral aspects of the compspec') -.15 F 2.791(sb)-.55 G(eha)-2.791 E .291(vior be)-.2 F .291 -(yond the simple)-.15 F(generation of completions.)184 698.4 Q F1 -(comp-option)5 E F0(may be one of:)2.5 E(GNU Bash 4.4)72 768 Q -(2015 October 11)141.235 E(55)190.395 E 0 Cg EP +(sion before the)144 722.4 Q F2(complete)2.5 E F0 -.2(bu)2.5 G +(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E(GNU Bash 4.4)72 768 Q +(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(55)185.545 E 0 Cg EP %%Page: 56 56 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(bashdefault)184 84 Q F0 .281(Perform the rest of the def)224 96 R -(ault)-.1 E F1(bash)2.781 E F0 .281 -(completions if the compspec generates no)2.781 F(matches.)224 108 Q F1 -(default)184 120 Q F0 2.876(Use readline')224 120 R 5.376(sd)-.55 G(ef) --5.376 E 2.875(ault \214lename completion if the compspec generates no) --.1 F(matches.)224 132 Q F1(dir)184 144 Q(names)-.15 E F0(Perform direc\ -tory name completion if the compspec generates no matches.)224 156 Q F1 -(\214lenames)184 168 Q F0 -.7(Te)224 180 S .137(ll readline that the co\ -mpspec generates \214lenames, so it can perform an).7 F 2.637<798c>-.15 -G(le-)-2.637 E .134(name\255speci\214c processing \(lik)224 192 R 2.634 -(ea)-.1 G .134(dding a slash to directory names, quoting spe-)-2.634 F -.45(cial characters, or suppressing trailing spaces\).)224 204 R .45 -(Intended to be used with shell)5.45 F(functions.)224 216 Q F1(noquote) -184 228 Q F0 -.7(Te)224 228 S .814 +SF144 84 Q/F2 10/Times-Italic@0 SF(comp-option)2.5 E F0(The)184 96 +Q F2(comp-option)2.791 E F0 .291(controls se)2.791 F -.15(ve)-.25 G .291 +(ral aspects of the compspec').15 F 2.791(sb)-.55 G(eha)-2.791 E .291 +(vior be)-.2 F .291(yond the simple)-.15 F(generation of completions.) +184 108 Q F2(comp-option)5 E F0(may be one of:)2.5 E F1(bashdefault)184 +120 Q F0 .281(Perform the rest of the def)224 132 R(ault)-.1 E F1(bash) +2.781 E F0 .281(completions if the compspec generates no)2.781 F +(matches.)224 144 Q F1(default)184 156 Q F0 2.876(Use readline')224 156 +R 5.376(sd)-.55 G(ef)-5.376 E 2.875 +(ault \214lename completion if the compspec generates no)-.1 F(matches.) +224 168 Q F1(dir)184 180 Q(names)-.15 E F0(Perform directory name compl\ +etion if the compspec generates no matches.)224 192 Q F1(\214lenames)184 +204 Q F0 -.7(Te)224 216 S .137(ll readline that the compspec generates \ +\214lenames, so it can perform an).7 F 2.637<798c>-.15 G(le-)-2.637 E +.134(name\255speci\214c processing \(lik)224 228 R 2.634(ea)-.1 G .134 +(dding a slash to directory names, quoting spe-)-2.634 F .45 +(cial characters, or suppressing trailing spaces\).)224 240 R .45 +(Intended to be used with shell)5.45 F(functions.)224 252 Q F1(noquote) +184 264 Q F0 -.7(Te)224 264 S .814 (ll readline not to quote the completed w).7 F .814(ords if the)-.1 F 3.314(ya)-.15 G .814(re \214lenames \(quoting)-3.314 F -(\214lenames is the def)224 240 Q(ault\).)-.1 E F1(nosort)184 252 Q F0 --.7(Te)224 252 S(ll readline not to sort the list of possible completio\ -ns alphabetically).7 E(.)-.65 E F1(nospace)184 264 Q F0 -.7(Te)224 264 S +(\214lenames is the def)224 276 Q(ault\).)-.1 E F1(nosort)184 288 Q F0 +-.7(Te)224 288 S(ll readline not to sort the list of possible completio\ +ns alphabetically).7 E(.)-.65 E F1(nospace)184 300 Q F0 -.7(Te)224 300 S .22(ll readline not to append a space \(the def).7 F .22(ault\) to w)-.1 -F .22(ords completed at the end)-.1 F(of the line.)224 276 Q F1 -(plusdirs)184 288 Q F0 1.985(After an)224 288 R 4.485(ym)-.15 G 1.985 +F .22(ords completed at the end)-.1 F(of the line.)224 312 Q F1 +(plusdirs)184 324 Q F0 1.985(After an)224 324 R 4.485(ym)-.15 G 1.985 (atches de\214ned by the compspec are generated, directory name)-4.485 F -.583(completion is attempted and an)224 300 R 3.084(ym)-.15 G .584 -(atches are added to the results of the other)-3.084 F(actions.)224 312 -Q F1144 324 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 336 -Q F2(action)2.5 E F0(may be one of the follo)2.5 E +.583(completion is attempted and an)224 336 R 3.084(ym)-.15 G .584 +(atches are added to the results of the other)-3.084 F(actions.)224 348 +Q F1144 360 Q F2(action)2.5 E F0(The)184 372 Q F2(action)2.5 E F0 +(may be one of the follo)2.5 E (wing to generate a list of possible completions:)-.25 E F1(alias)184 -348 Q F0(Alias names.)224 348 Q(May also be speci\214ed as)5 E F1 -2.5 E F0(.)A F1(arrayv)184 360 Q(ar)-.1 E F0(Array v)224 372 Q -(ariable names.)-.25 E F1(binding)184 384 Q(Readline)224 384 Q F0 -.1 -(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 396 S(iltin) -.2 E F0(Names of shell b)224 396 Q(uiltin commands.)-.2 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 408 -Q F0(Command names.)224 420 Q(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(dir)184 432 Q(ectory)-.18 E F0(Directory names.)224 444 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 456 -Q F0(Names of disabled shell b)224 468 Q(uiltins.)-.2 E F1(enabled)184 -480 Q F0(Names of enabled shell b)224 480 Q(uiltins.)-.2 E F1(export)184 -492 Q F0(Names of e)224 492 Q(xported shell v)-.15 E 2.5(ariables. May) +384 Q F0(Alias names.)224 384 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(arrayv)184 396 Q(ar)-.1 E F0(Array v)224 408 Q +(ariable names.)-.25 E F1(binding)184 420 Q(Readline)224 420 Q F0 -.1 +(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 432 S(iltin) +.2 E F0(Names of shell b)224 432 Q(uiltin commands.)-.2 E +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 444 +Q F0(Command names.)224 456 Q(May also be speci\214ed as)5 E F12.5 +E F0(.)A F1(dir)184 468 Q(ectory)-.18 E F0(Directory names.)224 480 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 492 +Q F0(Names of disabled shell b)224 504 Q(uiltins.)-.2 E F1(enabled)184 +516 Q F0(Names of enabled shell b)224 516 Q(uiltins.)-.2 E F1(export)184 +528 Q F0(Names of e)224 528 Q(xported shell v)-.15 E 2.5(ariables. May) -.25 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(\214le)184 -504 Q F0(File names.)224 504 Q(May also be speci\214ed as)5 E F1 -2.5 E F0(.)A F1(function)184 516 Q F0(Names of shell functions.)224 528 -Q F1(gr)184 540 Q(oup)-.18 E F0(Group names.)224 540 Q +540 Q F0(File names.)224 540 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(function)184 552 Q F0(Names of shell functions.)224 564 +Q F1(gr)184 576 Q(oup)-.18 E F0(Group names.)224 576 Q (May also be speci\214ed as)5 E F12.5 E F0(.)A F1(helptopic)184 -552 Q F0(Help topics as accepted by the)224 564 Q F1(help)2.5 E F0 -.2 -(bu)2.5 G(iltin.).2 E F1(hostname)184 576 Q F0(Hostnames, as tak)224 588 +588 Q F0(Help topics as accepted by the)224 600 Q F1(help)2.5 E F0 -.2 +(bu)2.5 G(iltin.).2 E F1(hostname)184 612 Q F0(Hostnames, as tak)224 624 Q(en from the \214le speci\214ed by the)-.1 E/F3 9/Times-Bold@0 SF -(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 600 Q F0 -(Job names, if job control is acti)224 600 Q -.15(ve)-.25 G 5(.M).15 G -(ay also be speci\214ed as)-5 E F12.5 E F0(.)A F1 -.1(ke)184 612 S -(yw).1 E(ord)-.1 E F0(Shell reserv)224 624 Q(ed w)-.15 E 2.5(ords. May) +(HOSTFILE)2.5 E F0(shell v)2.25 E(ariable.)-.25 E F1(job)184 636 Q F0 +(Job names, if job control is acti)224 636 Q -.15(ve)-.25 G 5(.M).15 G +(ay also be speci\214ed as)-5 E F12.5 E F0(.)A F1 -.1(ke)184 648 S +(yw).1 E(ord)-.1 E F0(Shell reserv)224 660 Q(ed w)-.15 E 2.5(ords. May) -.1 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(running)184 -636 Q F0(Names of running jobs, if job control is acti)224 636 Q -.15 -(ve)-.25 G(.).15 E F1(ser)184 648 Q(vice)-.1 E F0(Service names.)224 648 -Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 660 -Q F0 -1.11(Va)224 660 S(lid ar)1.11 E(guments for the)-.18 E F12.5 +672 Q F0(Names of running jobs, if job control is acti)224 672 Q -.15 +(ve)-.25 G(.).15 E F1(ser)184 684 Q(vice)-.1 E F0(Service names.)224 684 +Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 696 +Q F0 -1.11(Va)224 696 S(lid ar)1.11 E(guments for the)-.18 E F12.5 E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1 -(shopt)184 672 Q F0(Shell option names as accepted by the)224 672 Q F1 -(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 684 Q F0 -(Signal names.)224 684 Q F1(stopped)184 696 Q F0 -(Names of stopped jobs, if job control is acti)224 696 Q -.15(ve)-.25 G -(.).15 E F1(user)184 708 Q F0(User names.)224 708 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A(GNU Bash 4.4)72 768 -Q(2015 October 11)141.235 E(56)190.395 E 0 Cg EP +(shopt)184 708 Q F0(Shell option names as accepted by the)224 708 Q F1 +(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E(GNU Bash 4.4)72 768 Q(2015 No) +136.385 E -.15(ve)-.15 G(mber 16).15 E(56)185.545 E 0 Cg EP %%Page: 57 57 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF -.1(va)184 84 S(riable).1 E F0(Names of all shell v)224 84 Q 2.5 -(ariables. May)-.25 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A -F1144 96 Q/F2 10/Times-Italic@0 SF(command)2.5 E(command)184 108 Q -F0 1.056(is e)3.556 F -.15(xe)-.15 G 1.056(cuted in a subshell en).15 F -1.056(vironment, and its output is used as the possible)-.4 F -(completions.)184 120 Q F1144 132 Q F2(function)2.5 E F0 .113 -(The shell function)184 144 R F2(function)2.614 E F0 .114(is e)2.614 F +SF(signal)184 84 Q F0(Signal names.)224 84 Q F1(stopped)184 96 Q F0 +(Names of stopped jobs, if job control is acti)224 96 Q -.15(ve)-.25 G +(.).15 E F1(user)184 108 Q F0(User names.)224 108 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 120 S +(riable).1 E F0(Names of all shell v)224 120 Q 2.5(ariables. May)-.25 F +(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 132 Q/F2 +10/Times-Italic@0 SF(command)2.5 E(command)184 144 Q F0 1.056(is e)3.556 +F -.15(xe)-.15 G 1.056(cuted in a subshell en).15 F 1.056 +(vironment, and its output is used as the possible)-.4 F(completions.) +184 156 Q F1144 168 Q F2(function)2.5 E F0 .113 +(The shell function)184 180 R F2(function)2.614 E F0 .114(is e)2.614 F -.15(xe)-.15 G .114(cuted in the current shell en).15 F 2.614 -(vironment. When)-.4 F .114(the func-)2.614 F .817(tion is e)184 156 R +(vironment. When)-.4 F .114(the func-)2.614 F .817(tion is e)184 192 R -.15(xe)-.15 G .817(cuted, the \214rst ar).15 F .817(gument \()-.18 F F1 ($1)A F0 3.316(\)i)C 3.316(st)-3.316 G .816 (he name of the command whose ar)-3.316 F(guments)-.18 E 1.407 -(are being completed, the second ar)184 168 R 1.407(gument \()-.18 F F1 +(are being completed, the second ar)184 204 R 1.407(gument \()-.18 F F1 ($2)A F0 3.907(\)i)C 3.907(st)-3.907 G 1.407(he w)-3.907 F 1.407 -(ord being completed, and the)-.1 F .104(third ar)184 180 R .104 +(ord being completed, and the)-.1 F .104(third ar)184 216 R .104 (gument \()-.18 F F1($3)A F0 2.604(\)i)C 2.604(st)-2.604 G .104(he w) -2.604 F .104(ord preceding the w)-.1 F .103 -(ord being completed on the current com-)-.1 F .101(mand line.)184 192 R +(ord being completed on the current com-)-.1 F .101(mand line.)184 228 R .101(When it \214nishes, the possible completions are retrie)5.101 F -.15(ve)-.25 G 2.602(df).15 G .102(rom the v)-2.602 F .102(alue of the) --.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 204 Q(Y)-.828 E F0(array v)2.25 -E(ariable.)-.25 E F1144 216 Q F2(globpat)2.5 E F0 1.008 -(The pathname e)184 228 R 1.008(xpansion pattern)-.15 F F2(globpat)3.507 +-.25 F/F3 9/Times-Bold@0 SF(COMPREPL)184 240 Q(Y)-.828 E F0(array v)2.25 +E(ariable.)-.25 E F1144 252 Q F2(globpat)2.5 E F0 1.008 +(The pathname e)184 264 R 1.008(xpansion pattern)-.15 F F2(globpat)3.507 E F0 1.007(is e)3.507 F 1.007(xpanded to generate the possible comple-) --.15 F(tions.)184 240 Q F1144 252 Q F2(pr)2.5 E(e\214x)-.37 E(pr) -184 264 Q(e\214x)-.37 E F0 .534(is added at the be)3.034 F .534 +-.15 F(tions.)184 276 Q F1144 288 Q F2(pr)2.5 E(e\214x)-.37 E(pr) +184 300 Q(e\214x)-.37 E F0 .534(is added at the be)3.034 F .534 (ginning of each possible completion after all other options ha)-.15 F --.15(ve)-.2 G(been applied.)184 276 Q F1144 288 Q F2(suf)2.5 E -<8c78>-.18 E(suf)184 288 Q<8c78>-.18 E F0 +-.15(ve)-.2 G(been applied.)184 312 Q F1144 324 Q F2(suf)2.5 E +<8c78>-.18 E(suf)184 324 Q<8c78>-.18 E F0 (is appended to each possible completion after all other options ha)2.5 -E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 300 Q F2(wor)2.5 E -(dlist)-.37 E F0(The)184 312 Q F2(wor)3.64 E(dlist)-.37 E F0 1.14 +E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 336 Q F2(wor)2.5 E +(dlist)-.37 E F0(The)184 348 Q F2(wor)3.64 E(dlist)-.37 E F0 1.14 (is split using the characters in the)3.64 F F3(IFS)3.64 E F0 1.139 (special v)3.39 F 1.139(ariable as delimiters, and)-.25 F 2.007 -(each resultant w)184 324 R 2.007(ord is e)-.1 F 4.507(xpanded. The)-.15 +(each resultant w)184 360 R 2.007(ord is e)-.1 F 4.507(xpanded. The)-.15 F 2.008(possible completions are the members of the)4.507 F -(resultant list which match the w)184 336 Q(ord being completed.)-.1 E -F1144 348 Q F2(\214lterpat)2.5 E(\214lterpat)184 360 Q F0 .456 +(resultant list which match the w)184 372 Q(ord being completed.)-.1 E +F1144 384 Q F2(\214lterpat)2.5 E(\214lterpat)184 396 Q F0 .456 (is a pattern as used for pathname e)2.956 F 2.956(xpansion. It)-.15 F .455(is applied to the list of possible)2.956 F 1.596 -(completions generated by the preceding options and ar)184 372 R 1.596 -(guments, and each completion)-.18 F(matching)184 384 Q F2(\214lterpat) +(completions generated by the preceding options and ar)184 408 R 1.596 +(guments, and each completion)-.18 F(matching)184 420 Q F2(\214lterpat) 3.205 E F0 .705(is remo)3.205 F -.15(ve)-.15 G 3.205(df).15 G .704 (rom the list.)-3.205 F 3.204(Al)5.704 G(eading)-3.204 E F1(!)3.204 E F0 (in)3.204 E F2(\214lterpat)3.204 E F0(ne)3.204 E -.05(ga)-.15 G .704 -(tes the pattern;).05 F(in this case, an)184 396 Q 2.5(yc)-.15 G +(tes the pattern;).05 F(in this case, an)184 432 Q 2.5(yc)-.15 G (ompletion not matching)-2.5 E F2(\214lterpat)2.5 E F0(is remo)2.5 E --.15(ve)-.15 G(d.).15 E .466(The return v)144 412.8 R .466 +-.15(ve)-.15 G(d.).15 E .466(The return v)144 448.8 R .466 (alue is true unless an in)-.25 F -.25(va)-.4 G .466 (lid option is supplied, an option other than).25 F F12.967 E F0 (or)2.967 E F12.967 E F0 .467(is sup-)2.967 F 1.362 -(plied without a)144 424.8 R F2(name)3.862 E F0(ar)3.862 E 1.361 +(plied without a)144 460.8 R F2(name)3.862 E F0(ar)3.862 E 1.361 (gument, an attempt is made to remo)-.18 F 1.661 -.15(ve a c)-.15 H -1.361(ompletion speci\214cation for a).15 F F2(name)144 436.8 Q F0 +1.361(ompletion speci\214cation for a).15 F F2(name)144 472.8 Q F0 (for which no speci\214cation e)2.5 E (xists, or an error occurs adding a completion speci\214cation.)-.15 E -F1(compopt)108 453.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C +F1(compopt)108 489.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C F1(\255DE)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C F2 -(name)-2.5 E F0(])A .447(Modify completion options for each)144 465.6 R +(name)-2.5 E F0(])A .447(Modify completion options for each)144 501.6 R F2(name)2.947 E F0 .447(according to the)2.947 F F2(option)2.947 E F0 .447(s, or for the currently-e)B -.15(xe)-.15 G(cuting).15 E .726 -(completion if no)144 477.6 R F2(name)3.226 E F0 3.226(sa)C .726 +(completion if no)144 513.6 R F2(name)3.226 E F0 3.226(sa)C .726 (re supplied.)-3.226 F .725(If no)5.725 F F2(option)3.225 E F0 3.225(sa) C .725(re gi)-3.225 F -.15(ve)-.25 G .725 -(n, display the completion options for).15 F(each)144 489.6 Q F2(name) +(n, display the completion options for).15 F(each)144 525.6 Q F2(name) 3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v) 5.724 F .724(alues of)-.25 F F2(option)3.224 E F0 .724(are those v)3.224 -F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 501.6 Q F0 -.2(bu) +F .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 537.6 Q F0 -.2(bu) 2.798 G .298(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) -5.297 E F12.797 E F0 .297 (option indicates that the remaining options should apply to)2.797 F -1.227(the `)144 513.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\ +1.227(the `)144 549.6 R(`def)-.74 E(ault')-.1 E 3.727('c)-.74 G 1.228(o\ mmand completion; that is, completion attempted on a command for which \ -no)-3.727 F 2.178(completion has pre)144 525.6 R 2.178 +no)-3.727 F 2.178(completion has pre)144 561.6 R 2.178 (viously been de\214ned.)-.25 F(The)7.178 E F14.678 E F0 2.177 (option indicates that the remaining options)4.677 F(should apply to `) -144 537.6 Q(`empty')-.74 E 2.5('c)-.74 G +144 573.6 Q(`empty')-.74 E 2.5('c)-.74 G (ommand completion; that is, completion attempted on a blank line.)-2.5 -E 1.387(The return v)144 561.6 R 1.387(alue is true unless an in)-.25 F +E 1.387(The return v)144 597.6 R 1.387(alue is true unless an in)-.25 F -.25(va)-.4 G 1.388 (lid option is supplied, an attempt is made to modify the).25 F -(options for a)144 573.6 Q F2(name)2.5 E F0 +(options for a)144 609.6 Q F2(name)2.5 E F0 (for which no completion speci\214cation e)2.5 E -(xists, or an output error occurs.)-.15 E F1(continue)108 590.4 Q F0([) -2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 602.4 R 1.754 +(xists, or an output error occurs.)-.15 E F1(continue)108 626.4 Q F0([) +2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 638.4 R 1.754 (xt iteration of the enclosing)-.15 F F1 -.25(fo)4.254 G(r).25 E F0(,)A F1(while)4.254 E F0(,)A F1(until)4.254 E F0 4.254(,o)C(r)-4.254 E F1 (select)4.254 E F0 4.253(loop. If)4.254 F F2(n)4.613 E F0 1.753 -(is speci\214ed,)4.493 F 1.208(resume at the)144 614.4 R F2(n)3.709 E F0 +(is speci\214ed,)4.493 F 1.208(resume at the)144 650.4 R F2(n)3.709 E F0 1.209(th enclosing loop.)B F2(n)6.569 E F0 1.209(must be)3.949 F/F4 10 /Symbol SF3.709 E F0 3.709(1. If)3.709 F F2(n)4.069 E F0 1.209 (is greater than the number of enclosing)3.949 F .514 -(loops, the last enclosing loop \(the `)144 626.4 R(`top-le)-.74 E -.15 +(loops, the last enclosing loop \(the `)144 662.4 R(`top-le)-.74 E -.15 (ve)-.25 G(l').15 E 3.014('l)-.74 G .514(oop\) is resumed.)-3.014 F .513 (The return v)5.513 F .513(alue is 0 unless)-.25 F F2(n)3.013 E F0(is) -3.013 E(not greater than or equal to 1.)144 638.4 Q F1(declar)108 655.2 +3.013 E(not greater than or equal to 1.)144 674.4 Q F1(declar)108 691.2 Q(e)-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E F1 -(typeset)108 667.2 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1 +(typeset)108 703.2 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1 -2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C -(..])-2.5 E 1.264(Declare v)144 679.2 R 1.264(ariables and/or gi)-.25 F +(..])-2.5 E 1.264(Declare v)144 715.2 R 1.264(ariables and/or gi)-.25 F 1.564 -.15(ve t)-.25 H 1.264(hem attrib).15 F 3.765(utes. If)-.2 F(no) 3.765 E F2(name)3.765 E F0 3.765(sa)C 1.265(re gi)-3.765 F -.15(ve)-.25 G 3.765(nt).15 G 1.265(hen display the v)-3.765 F 1.265(alues of)-.25 F --.25(va)144 691.2 S 3.483(riables. The).25 F F13.483 E F0 .983 +-.25(va)144 727.2 S 3.483(riables. The).25 F F13.483 E F0 .983 (option will display the attrib)3.483 F .983(utes and v)-.2 F .982 (alues of each)-.25 F F2(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F1 -3.482 E F0 .982(is used)3.482 F(with)144 703.2 Q F2(name)2.774 E -F0(ar)2.774 E .274(guments, additional options, other than)-.18 F F1 -2.775 E F0(and)2.775 E F12.775 E F0 2.775(,a)C .275 -(re ignored.)-2.775 F(When)5.275 E F12.775 E F0 .275(is supplied) -2.775 F(without)144 715.2 Q F2(name)4.814 E F0(ar)4.814 E 2.314 -(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.313 -(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2 F -(attrib)144 727.2 Q 1.181(utes speci\214ed by the additional options.) --.2 F 1.182(If no other options are supplied with)6.181 F F13.682 -E F0(,)A F1(declar)3.682 E(e)-.18 E F0(GNU Bash 4.4)72 768 Q -(2015 October 11)141.235 E(57)190.395 E 0 Cg EP +3.482 E F0 .982(is used)3.482 F(GNU Bash 4.4)72 768 Q(2015 No) +136.385 E -.15(ve)-.15 G(mber 16).15 E(57)185.545 E 0 Cg EP %%Page: 58 58 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .62 -(will display the attrib)144 84 R .62(utes and v)-.2 F .62 -(alues of all shell v)-.25 F 3.12(ariables. The)-.25 F/F1 10 -/Times-Bold@0 SF3.12 E F0 .62(option will restrict the display) -3.12 F 1.29(to shell functions.)144 96 R(The)6.29 E F13.79 E F0 -1.291(option inhibits the display of function de\214nitions; only the f\ -unction)3.791 F .948(name and attrib)144 108 R .948(utes are printed.) --.2 F .948(If the)5.948 F F1(extdeb)3.448 E(ug)-.2 E F0 .948 -(shell option is enabled using)3.448 F F1(shopt)3.448 E F0 3.448(,t)C +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(with)144 84 Q/F1 +10/Times-Italic@0 SF(name)2.774 E F0(ar)2.774 E .274 +(guments, additional options, other than)-.18 F/F2 10/Times-Bold@0 SF +2.775 E F0(and)2.775 E F22.775 E F0 2.775(,a)C .275 +(re ignored.)-2.775 F(When)5.275 E F22.775 E F0 .275(is supplied) +2.775 F(without)144 96 Q F1(name)4.814 E F0(ar)4.814 E 2.314 +(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.313 +(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2 F +(attrib)144 108 Q 1.181(utes speci\214ed by the additional options.)-.2 +F 1.182(If no other options are supplied with)6.181 F F23.682 E F0 +(,)A F2(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144 120 R +.62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12(ariables. The) +-.25 F F23.12 E F0 .62(option will restrict the display)3.12 F +1.29(to shell functions.)144 132 R(The)6.29 E F23.79 E F0 1.291(o\ +ption inhibits the display of function de\214nitions; only the function) +3.791 F .948(name and attrib)144 144 R .948(utes are printed.)-.2 F .948 +(If the)5.948 F F2(extdeb)3.448 E(ug)-.2 E F0 .948 +(shell option is enabled using)3.448 F F2(shopt)3.448 E F0 3.448(,t)C .948(he source)-3.448 F 1.69(\214le name and line number where each)144 -120 R/F2 10/Times-Italic@0 SF(name)4.19 E F0 1.69 -(is de\214ned are displayed as well.)4.19 F(The)6.69 E F14.19 E F0 -(option)4.19 E(implies)144 132 Q F13.892 E F0 6.392(.T)C(he)-6.392 -E F13.892 E F0 1.391(option forces v)3.892 F 1.391 +156 R F1(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19 F +(The)6.69 E F24.19 E F0(option)4.19 E(implies)144 168 Q F2 +3.892 E F0 6.392(.T)C(he)-6.392 E F23.892 E F0 1.391 +(option forces v)3.892 F 1.391 (ariables to be created or modi\214ed at the global scope, e)-.25 F -.15 -(ve)-.25 G(n).15 E(when)144 144 Q F1(declar)4.382 E(e)-.18 E F0 1.882 +(ve)-.25 G(n).15 E(when)144 180 Q F2(declar)4.382 E(e)-.18 E F0 1.882 (is e)4.382 F -.15(xe)-.15 G 1.882(cuted in a shell function.).15 F 1.883(It is ignored in all other cases.)6.882 F 1.883(The follo)6.883 F -(wing)-.25 E .794(options can be used to restrict output to v)144 156 R +(wing)-.25 E .794(options can be used to restrict output to v)144 192 R .794(ariables with the speci\214ed attrib)-.25 F .793(ute or to gi)-.2 F -1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 168 Q(utes:)-.2 E F1 -144 180 Q F0(Each)180 180 Q F2(name)2.5 E F0(is an inde)2.5 E -.15 -(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F1(Arrays)2.5 -E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1144 192 Q F0(Each)180 -192 Q F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v) -.15 E(ariable \(see)-.25 E F1(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G -(\).).15 E F1144 204 Q F0(Use function names only)180 204 Q(.)-.65 -E F1144 216 Q F0 .557(The v)180 216 R .558 +1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 204 Q(utes:)-.2 E F2 +144 216 Q F0(Each)180 216 Q F1(name)2.5 E F0(is an inde)2.5 E -.15 +(xe)-.15 G 2.5(da).15 G(rray v)-2.5 E(ariable \(see)-.25 E F2(Arrays)2.5 +E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F2144 228 Q F0(Each)180 +228 Q F1(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v) +.15 E(ariable \(see)-.25 E F2(Arrays)2.5 E F0(abo)2.5 E -.15(ve)-.15 G +(\).).15 E F2144 240 Q F0(Use function names only)180 240 Q(.)-.65 +E F2144 252 Q F0 .557(The v)180 252 R .558 (ariable is treated as an inte)-.25 F .558(ger; arithmetic e)-.15 F -.25 (va)-.25 G .558(luation \(see).25 F/F3 9/Times-Bold@0 SF .558 -(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 228 Q F0(abo)2.25 +(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 264 Q F0(abo)2.25 E -.15(ve)-.15 G 2.5(\)i).15 G 2.5(sp)-2.5 G(erformed when the v)-2.5 E -(ariable is assigned a v)-.25 E(alue.)-.25 E F1144 240 Q F0 .91 -(When the v)180 240 R .909(ariable is assigned a v)-.25 F .909 +(ariable is assigned a v)-.25 E(alue.)-.25 E F2144 276 Q F0 .91 +(When the v)180 276 R .909(ariable is assigned a v)-.25 F .909 (alue, all upper)-.25 F .909(-case characters are con)-.2 F -.15(ve)-.4 -G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 252 R -(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 264 Q -F0(Gi)180 264 Q 1.619 -.15(ve e)-.25 H(ach).15 E F2(name)3.819 E F0(the) -3.819 E F2(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319 +G .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 288 R +(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F2144 300 Q +F0(Gi)180 300 Q 1.619 -.15(ve e)-.25 H(ach).15 E F1(name)3.819 E F0(the) +3.819 E F1(namer)3.819 E(ef)-.37 E F0(attrib)3.819 E 1.319 (ute, making it a name reference to another v)-.2 F(ariable.)-.25 E -1.519(That other v)180 276 R 1.519(ariable is de\214ned by the v)-.25 F -1.518(alue of)-.25 F F2(name)4.018 E F0 6.518(.A)C 1.518 -(ll references, assignments, and)-6.518 F(attrib)180 288 Q .27 -(ute modi\214cations to)-.2 F F2(name)2.77 E F0 2.77(,e)C .27 -(xcept for changing the)-2.92 F F12.77 E F0(attrib)2.77 E .27 -(ute itself, are performed)-.2 F .895(on the v)180 300 R .895 -(ariable referenced by)-.25 F F2(name)3.395 E F0 1.995 -.55('s v)D 3.395 +1.519(That other v)180 312 R 1.519(ariable is de\214ned by the v)-.25 F +1.518(alue of)-.25 F F1(name)4.018 E F0 6.518(.A)C 1.518 +(ll references, assignments, and)-6.518 F(attrib)180 324 Q .27 +(ute modi\214cations to)-.2 F F1(name)2.77 E F0 2.77(,e)C .27 +(xcept for changing the)-2.92 F F22.77 E F0(attrib)2.77 E .27 +(ute itself, are performed)-.2 F .895(on the v)180 336 R .895 +(ariable referenced by)-.25 F F1(name)3.395 E F0 1.995 -.55('s v)D 3.395 (alue. The).3 F .894(nameref attrib)3.395 F .894 -(ute cannot be applied to)-.2 F(array v)180 312 Q(ariables.)-.25 E F1 -144 324 Q F0(Mak)180 324 Q(e)-.1 E F2(name)5.046 E F0 5.046(sr)C +(ute cannot be applied to)-.2 F(array v)180 348 Q(ariables.)-.25 E F2 +144 360 Q F0(Mak)180 360 Q(e)-.1 E F1(name)5.046 E F0 5.046(sr)C (eadonly)-5.046 E 7.546(.T)-.65 G 2.546 (hese names cannot then be assigned v)-7.546 F 2.547 -(alues by subsequent)-.25 F(assignment statements or unset.)180 336 Q F1 -144 348 Q F0(Gi)180 348 Q .73 -.15(ve e)-.25 H(ach).15 E F2(name) -2.93 E F0(the)2.929 E F2(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E 2.929 -(ute. T)-.2 F .429(raced functions inherit the)-.35 F F1(DEB)2.929 E(UG) --.1 E F0(and)2.929 E F1(RETURN)2.929 E F0(traps from the calling shell.) -180 360 Q(The trace attrib)5 E(ute has no special meaning for v)-.2 E -(ariables.)-.25 E F1144 372 Q F0 .909(When the v)180 372 R .909 +(alues by subsequent)-.25 F(assignment statements or unset.)180 372 Q F2 +144 384 Q F0(Gi)180 384 Q .73 -.15(ve e)-.25 H(ach).15 E F1(name) +2.93 E F0(the)2.929 E F1(tr)2.929 E(ace)-.15 E F0(attrib)2.929 E 2.929 +(ute. T)-.2 F .429(raced functions inherit the)-.35 F F2(DEB)2.929 E(UG) +-.1 E F0(and)2.929 E F2(RETURN)2.929 E F0(traps from the calling shell.) +180 396 Q(The trace attrib)5 E(ute has no special meaning for v)-.2 E +(ariables.)-.25 E F2144 408 Q F0 .909(When the v)180 408 R .909 (ariable is assigned a v)-.25 F .909(alue, all lo)-.25 F(wer)-.25 E .909 (-case characters are con)-.2 F -.15(ve)-.4 G .91(rted to upper).15 F(-) --.2 E 2.5(case. The)180 384 R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 E -(ute is disabled.)-.2 E F1144 396 Q F0(Mark)180 396 Q F2(name)2.5 +-.2 E 2.5(case. The)180 420 R(lo)2.5 E(wer)-.25 E(-case attrib)-.2 E +(ute is disabled.)-.2 E F2144 432 Q F0(Mark)180 432 Q F1(name)2.5 E F0 2.5(sf)C(or e)-2.5 E(xport to subsequent commands via the en)-.15 E -(vironment.)-.4 E .121(Using `+' instead of `\255' turns of)144 412.8 R +(vironment.)-.4 E .121(Using `+' instead of `\255' turns of)144 448.8 R 2.621(ft)-.25 G .121(he attrib)-2.621 F .121(ute instead, with the e)-.2 -F .12(xceptions that)-.15 F F1(+a)2.62 E F0 .12(may not be used)2.62 F -.644(to destro)144 424.8 R 3.144(ya)-.1 G 3.144(na)-3.144 G .644(rray v) --3.144 F .644(ariable and)-.25 F F1(+r)3.145 E F0 .645(will not remo) +F .12(xceptions that)-.15 F F2(+a)2.62 E F0 .12(may not be used)2.62 F +.644(to destro)144 460.8 R 3.144(ya)-.1 G 3.144(na)-3.144 G .644(rray v) +-3.144 F .644(ariable and)-.25 F F2(+r)3.145 E F0 .645(will not remo) 3.145 F .945 -.15(ve t)-.15 H .645(he readonly attrib).15 F 3.145 -(ute. When)-.2 F .645(used in a func-)3.145 F(tion,)144 436.8 Q F1 -(declar)2.835 E(e)-.18 E F0(and)2.835 E F1(typeset)2.835 E F0(mak)2.835 -E 2.835(ee)-.1 G(ach)-2.835 E F2(name)2.835 E F0 .335 -(local, as with the)2.835 F F1(local)2.835 E F0 .335 -(command, unless the)2.835 F F12.835 E F0(option)2.835 E 1.282 -(is supplied.)144 448.8 R 1.282(If a v)6.282 F 1.283 -(ariable name is follo)-.25 F 1.283(wed by =)-.25 F F2(value)A F0 3.783 +(ute. When)-.2 F .645(used in a func-)3.145 F(tion,)144 472.8 Q F2 +(declar)2.835 E(e)-.18 E F0(and)2.835 E F2(typeset)2.835 E F0(mak)2.835 +E 2.835(ee)-.1 G(ach)-2.835 E F1(name)2.835 E F0 .335 +(local, as with the)2.835 F F2(local)2.835 E F0 .335 +(command, unless the)2.835 F F22.835 E F0(option)2.835 E 1.282 +(is supplied.)144 484.8 R 1.282(If a v)6.282 F 1.283 +(ariable name is follo)-.25 F 1.283(wed by =)-.25 F F1(value)A F0 3.783 (,t)C 1.283(he v)-3.783 F 1.283(alue of the v)-.25 F 1.283 -(ariable is set to)-.25 F F2(value)3.783 E F0(.)A .927(When using)144 -460.8 R F13.427 E F0(or)3.427 E F13.427 E F0 .926 +(ariable is set to)-.25 F F1(value)3.783 E F0(.)A .927(When using)144 +496.8 R F23.427 E F0(or)3.427 E F23.427 E F0 .926 (and the compound assignment syntax to create array v)3.427 F .926 -(ariables, additional)-.25 F(attrib)144 472.8 Q .592(utes do not tak)-.2 +(ariables, additional)-.25 F(attrib)144 508.8 Q .592(utes do not tak)-.2 F 3.092(ee)-.1 G -.25(ff)-3.092 G .592 (ect until subsequent assignments.).25 F .592(The return v)5.592 F .592 (alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .429 (option is encountered, an attempt is made to de\214ne a function using) -144 484.8 R/F4 10/Courier@0 SF .428(\255f foo=bar)2.929 F F0 2.928(,a)C +144 520.8 R/F4 10/Courier@0 SF .428(\255f foo=bar)2.929 F F0 2.928(,a)C 2.928(na)-2.928 G .428(ttempt is)-2.928 F .062(made to assign a v)144 -496.8 R .062(alue to a readonly v)-.25 F .063 +532.8 R .062(alue to a readonly v)-.25 F .063 (ariable, an attempt is made to assign a v)-.25 F .063 (alue to an array v)-.25 F(ari-)-.25 E .102 -(able without using the compound assignment syntax \(see)144 508.8 R F1 +(able without using the compound assignment syntax \(see)144 544.8 R F2 (Arrays)2.602 E F0(abo)2.602 E -.15(ve)-.15 G .102(\), one of the).15 F -F2(names)2.602 E F0 .101(is not a)2.602 F -.25(va)144 520.8 S .171 +F1(names)2.602 E F0 .101(is not a)2.602 F -.25(va)144 556.8 S .171 (lid shell v).25 F .171(ariable name, an attempt is made to turn of)-.25 F 2.671(fr)-.25 G .171(eadonly status for a readonly v)-2.671 F .172 -(ariable, an)-.25 F .96(attempt is made to turn of)144 532.8 R 3.46(fa) +(ariable, an)-.25 F .96(attempt is made to turn of)144 568.8 R 3.46(fa) -.25 G .96(rray status for an array v)-3.46 F .96 -(ariable, or an attempt is made to display a)-.25 F(non-e)144 544.8 Q -(xistent function with)-.15 E F12.5 E F0(.)A F1 -(dirs [\255clpv] [+)108 561.6 Q F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 -(])A F0 -.4(Wi)144 573.6 S .328 +(ariable, or an attempt is made to display a)-.25 F(non-e)144 580.8 Q +(xistent function with)-.15 E F22.5 E F0(.)A F2 +(dirs [\255clpv] [+)108 597.6 Q F1(n)A F2 2.5(][)C-2.5 E F1(n)A F2 +(])A F0 -.4(Wi)144 609.6 S .328 (thout options, displays the list of currently remembered directories.) .4 F .329(The def)5.329 F .329(ault display is on a)-.1 F 1.238 -(single line with directory names separated by spaces.)144 585.6 R 1.238 -(Directories are added to the list with the)6.238 F F1(pushd)144 597.6 Q -F0 2.003(command; the)4.503 F F1(popd)4.503 E F0 2.003(command remo) +(single line with directory names separated by spaces.)144 621.6 R 1.238 +(Directories are added to the list with the)6.238 F F2(pushd)144 633.6 Q +F0 2.003(command; the)4.503 F F2(popd)4.503 E F0 2.003(command remo) 4.503 F -.15(ve)-.15 G 4.503(se).15 G 2.003(ntries from the list.)-4.503 -F 2.003(The current directory is)7.003 F(al)144 609.6 Q -.1(wa)-.1 G -(ys the \214rst directory in the stack.).1 E F1144 621.6 Q F0 -(Clears the directory stack by deleting all of the entries.)180 621.6 Q -F1144 633.6 Q F0 .882 -(Produces a listing using full pathnames; the def)180 633.6 R .881 +F 2.003(The current directory is)7.003 F(al)144 645.6 Q -.1(wa)-.1 G +(ys the \214rst directory in the stack.).1 E F2144 657.6 Q F0 +(Clears the directory stack by deleting all of the entries.)180 657.6 Q +F2144 669.6 Q F0 .882 +(Produces a listing using full pathnames; the def)180 669.6 R .881 (ault listing format uses a tilde to denote)-.1 F(the home directory)180 -645.6 Q(.)-.65 E F1144 657.6 Q F0 -(Print the directory stack with one entry per line.)180 657.6 Q F1 -144 669.6 Q F0 .272(Print the directory stack with one entry per line, \ -pre\214xing each entry with its inde)180 669.6 R 2.773(xi)-.15 G 2.773 -(nt)-2.773 G(he)-2.773 E(stack.)180 681.6 Q F1(+)144 693.6 Q F2(n)A F0 -1.565(Displays the)180 693.6 R F2(n)4.065 E F0 1.565 -(th entry counting from the left of the list sho)B 1.564(wn by)-.25 F F1 -(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E -(without options, starting with zero.)180 705.6 Q F1144 717.6 Q F2 -(n)A F0 1.194(Displays the)180 717.6 R F2(n)3.694 E F0 1.194 -(th entry counting from the right of the list sho)B 1.194(wn by)-.25 F -F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E -(without options, starting with zero.)180 729.6 Q(GNU Bash 4.4)72 768 Q -(2015 October 11)141.235 E(58)190.395 E 0 Cg EP +681.6 Q(.)-.65 E F2144 693.6 Q F0 +(Print the directory stack with one entry per line.)180 693.6 Q F2 +144 705.6 Q F0 .272(Print the directory stack with one entry per line, \ +pre\214xing each entry with its inde)180 705.6 R 2.773(xi)-.15 G 2.773 +(nt)-2.773 G(he)-2.773 E(stack.)180 717.6 Q(GNU Bash 4.4)72 768 Q +(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(58)185.545 E 0 Cg EP %%Page: 59 59 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .258(The return v) -144 84 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 -(lid option is supplied or).25 F/F1 10/Times-Italic@0 SF(n)2.758 E F0 -(inde)2.758 E -.15(xe)-.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258 -(ond the end of the direc-).15 F(tory stack.)144 96 Q/F2 10/Times-Bold@0 -SF(diso)108 112.8 Q(wn)-.1 E F0([)2.5 E F2(\255ar)A F0 2.5(][)C F2 --2.5 E F0 2.5(][)C F1(jobspec)-2.5 E F0(...])2.5 E -.4(Wi)144 124.8 S -.121(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F1 -(jobspec)4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j) --.25 H 2.622(obs. If).15 F F1(jobspec)4.362 E F0 .122 -(is not present, and)2.932 F .096(neither the)144 136.8 R F22.596 -E F0 .096(nor the)2.596 F F22.596 E F0 .096 -(option is supplied, the)2.596 F F1(curr)2.596 E .096(ent job)-.37 F F0 -.096(is used.)2.596 F .096(If the)5.096 F F22.596 E F0 .096 -(option is gi)2.596 F -.15(ve)-.25 G .096(n, each).15 F F1(jobspec) -145.74 148.8 Q F0 .585(is not remo)3.395 F -.15(ve)-.15 G 3.085(df).15 G -.585(rom the table, b)-3.085 F .585(ut is mark)-.2 F .585(ed so that)-.1 -F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .586 -(is not sent to the job if the)2.835 F .962(shell recei)144 160.8 R -.15 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(+)144 84 Q/F2 10/Times-Italic@0 SF(n)A F0 1.565(Displays the)180 84 R +F2(n)4.065 E F0 1.565(th entry counting from the left of the list sho)B +1.564(wn by)-.25 F F1(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G +-.1(ke).2 G(d).1 E(without options, starting with zero.)180 96 Q F1 +144 108 Q F2(n)A F0 1.194(Displays the)180 108 R F2(n)3.694 E F0 1.194 +(th entry counting from the right of the list sho)B 1.194(wn by)-.25 F +F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E +(without options, starting with zero.)180 120 Q .258(The return v)144 +136.8 R .258(alue is 0 unless an in)-.25 F -.25(va)-.4 G .258 +(lid option is supplied or).25 F F2(n)2.758 E F0(inde)2.758 E -.15(xe) +-.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-) +.15 F(tory stack.)144 148.8 Q F1(diso)108 165.6 Q(wn)-.1 E F0([)2.5 E F1 +(\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0 +(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 177.6 S .121 +(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec) +4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H +2.622(obs. If).15 F F2(jobspec)4.362 E F0 .122(is not present, and)2.932 +F .096(neither the)144 189.6 R F12.596 E F0 .096(nor the)2.596 F +F12.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E +.096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1 +2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each) +.15 F F2(jobspec)145.74 201.6 Q F0 .585(is not remo)3.395 F -.15(ve)-.15 +G 3.085(df).15 G .585(rom the table, b)-3.085 F .585(ut is mark)-.2 F +.585(ed so that)-.1 F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .586 +(is not sent to the job if the)2.835 F .962(shell recei)144 213.6 R -.15 (ve)-.25 G 3.462(sa).15 G F3(SIGHUP)A/F4 9/Times-Roman@0 SF(.)A F0 .962 -(If no)5.462 F F1(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F2 +(If no)5.462 F F2(jobspec)5.202 E F0 .962(is supplied, the)3.772 F F1 3.462 E F0 .962(option means to remo)3.462 F 1.262 -.15(ve o)-.15 -H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 172.8 R F2 -3.858 E F0 1.358(option without a)3.858 F F1(jobspec)5.598 E F0 +H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 225.6 R F1 +3.858 E F0 1.358(option without a)3.858 F F2(jobspec)5.598 E F0 (ar)4.169 E 1.359(gument restricts operation to running jobs.)-.18 F -1.359(The return)6.359 F -.25(va)144 184.8 S(lue is 0 unless a).25 E F1 +1.359(The return)6.359 F -.25(va)144 237.6 S(lue is 0 unless a).25 E F2 (jobspec)4.24 E F0(does not specify a v)2.81 E(alid job)-.25 E(.)-.4 E -F2(echo)108 201.6 Q F0([)2.5 E F2(\255neE)A F0 2.5(][)C F1(ar)-2.5 E(g) --.37 E F0(...])2.5 E .425(Output the)144 213.6 R F1(ar)2.925 E(g)-.37 E +F1(echo)108 254.4 Q F0([)2.5 E F1(\255neE)A F0 2.5(][)C F2(ar)-2.5 E(g) +-.37 E F0(...])2.5 E .425(Output the)144 266.4 R F2(ar)2.925 E(g)-.37 E F0 .424(s, separated by spaces, follo)B .424(wed by a ne)-.25 F 2.924 (wline. The)-.25 F .424(return status is 0 unless a write)2.924 F .307 -(error occurs.)144 225.6 R(If)5.307 E F22.807 E F0 .307 +(error occurs.)144 278.4 R(If)5.307 E F12.807 E F0 .307 (is speci\214ed, the trailing ne)2.807 F .308(wline is suppressed.)-.25 -F .308(If the)5.308 F F22.808 E F0 .308(option is gi)2.808 F -.15 +F .308(If the)5.308 F F12.808 E F0 .308(option is gi)2.808 F -.15 (ve)-.25 G .308(n, inter).15 F(-)-.2 E 1.349(pretation of the follo)144 -237.6 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) -6.348 E F23.848 E F0 1.348(option disables the)3.848 F 1.054 -(interpretation of these escape characters, e)144 249.6 R -.15(ve)-.25 G +290.4 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) +6.348 E F13.848 E F0 1.348(option disables the)3.848 F 1.054 +(interpretation of these escape characters, e)144 302.4 R -.15(ve)-.25 G 3.555(no).15 G 3.555(ns)-3.555 G 1.055(ystems where the)-3.555 F 3.555 (ya)-.15 G 1.055(re interpreted by def)-3.555 F(ault.)-.1 E(The)144 -261.6 Q F2(xpg_echo)3.459 E F0 .959 +314.4 Q F1(xpg_echo)3.459 E F0 .959 (shell option may be used to dynamically determine whether or not)3.459 -F F2(echo)3.458 E F0 -.15(ex)3.458 G(pands).15 E .715 -(these escape characters by def)144 273.6 R(ault.)-.1 E F2(echo)5.715 E -F0 .716(does not interpret)3.215 F F23.216 E F0 .716 -(to mean the end of options.)3.216 F F2(echo)5.716 E F0 -(interprets the follo)144 285.6 Q(wing escape sequences:)-.25 E F2(\\a) -144 297.6 Q F0(alert \(bell\))180 297.6 Q F2(\\b)144 309.6 Q F0 -(backspace)180 309.6 Q F2(\\c)144 321.6 Q F0(suppress further output)180 -321.6 Q F2(\\e)144 333.6 Q(\\E)144 345.6 Q F0(an escape character)180 -345.6 Q F2(\\f)144 357.6 Q F0(form feed)180 357.6 Q F2(\\n)144 369.6 Q -F0(ne)180 369.6 Q 2.5(wl)-.25 G(ine)-2.5 E F2(\\r)144 381.6 Q F0 -(carriage return)180 381.6 Q F2(\\t)144 393.6 Q F0(horizontal tab)180 -393.6 Q F2(\\v)144 405.6 Q F0 -.15(ve)180 405.6 S(rtical tab).15 E F2 -(\\\\)144 417.6 Q F0(backslash)180 417.6 Q F2(\\0)144 429.6 Q F1(nnn)A -F0(the eight-bit character whose v)180 429.6 Q(alue is the octal v)-.25 -E(alue)-.25 E F1(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F2 -(\\x)144 441.6 Q F1(HH)A F0(the eight-bit character whose v)180 441.6 Q -(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F1(HH)2.5 E F0 -(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F2 -(\\u)144 453.6 Q F1(HHHH)A F0 1.507 -(the Unicode \(ISO/IEC 10646\) character whose v)180 465.6 R 1.506 -(alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F1(HHHH) -4.006 E F0(\(one to four he)180 477.6 Q 2.5(xd)-.15 G(igits\))-2.5 E F2 -(\\U)144 489.6 Q F1(HHHHHHHH)A F0 .547 -(the Unicode \(ISO/IEC 10646\) character whose v)180 501.6 R .547 -(alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F1(HHHHH-) -3.048 E(HHH)180 513.6 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G -(igits\))-2.5 E F2(enable)108 530.4 Q F0([)2.5 E F2A F0 2.5(][)C -F2(\255dnps)-2.5 E F0 2.5(][)C F2-2.5 E F1(\214lename)2.5 E F0 2.5 -(][)C F1(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 542.4 R +F F1(echo)3.458 E F0 -.15(ex)3.458 G(pands).15 E .715 +(these escape characters by def)144 326.4 R(ault.)-.1 E F1(echo)5.715 E +F0 .716(does not interpret)3.215 F F13.216 E F0 .716 +(to mean the end of options.)3.216 F F1(echo)5.716 E F0 +(interprets the follo)144 338.4 Q(wing escape sequences:)-.25 E F1(\\a) +144 350.4 Q F0(alert \(bell\))180 350.4 Q F1(\\b)144 362.4 Q F0 +(backspace)180 362.4 Q F1(\\c)144 374.4 Q F0(suppress further output)180 +374.4 Q F1(\\e)144 386.4 Q(\\E)144 398.4 Q F0(an escape character)180 +398.4 Q F1(\\f)144 410.4 Q F0(form feed)180 410.4 Q F1(\\n)144 422.4 Q +F0(ne)180 422.4 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 434.4 Q F0 +(carriage return)180 434.4 Q F1(\\t)144 446.4 Q F0(horizontal tab)180 +446.4 Q F1(\\v)144 458.4 Q F0 -.15(ve)180 458.4 S(rtical tab).15 E F1 +(\\\\)144 470.4 Q F0(backslash)180 470.4 Q F1(\\0)144 482.4 Q F2(nnn)A +F0(the eight-bit character whose v)180 482.4 Q(alue is the octal v)-.25 +E(alue)-.25 E F2(nnn)2.5 E F0(\(zero to three octal digits\))2.5 E F1 +(\\x)144 494.4 Q F2(HH)A F0(the eight-bit character whose v)180 494.4 Q +(alue is the he)-.25 E(xadecimal v)-.15 E(alue)-.25 E F2(HH)2.5 E F0 +(\(one or tw)2.5 E 2.5(oh)-.1 G .3 -.15(ex d)-2.5 H(igits\)).15 E F1 +(\\u)144 506.4 Q F2(HHHH)A F0 1.507 +(the Unicode \(ISO/IEC 10646\) character whose v)180 518.4 R 1.506 +(alue is the he)-.25 F 1.506(xadecimal v)-.15 F(alue)-.25 E F2(HHHH) +4.006 E F0(\(one to four he)180 530.4 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 +(\\U)144 542.4 Q F2(HHHHHHHH)A F0 .547 +(the Unicode \(ISO/IEC 10646\) character whose v)180 554.4 R .547 +(alue is the he)-.25 F .548(xadecimal v)-.15 F(alue)-.25 E F2(HHHHH-) +3.048 E(HHH)180 566.4 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G +(igits\))-2.5 E F1(enable)108 583.2 Q F0([)2.5 E F1A F0 2.5(][)C +F1(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5 +(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 595.2 R .278(uiltin shell commands.)-.2 F .278(Disabling a b)5.278 F .278 (uiltin allo)-.2 F .278(ws a disk command which has)-.25 F .833 -(the same name as a shell b)144 554.4 R .834(uiltin to be e)-.2 F -.15 +(the same name as a shell b)144 607.2 R .834(uiltin to be e)-.2 F -.15 (xe)-.15 G .834(cuted without specifying a full pathname, e).15 F -.15 (ve)-.25 G 3.334(nt).15 G(hough)-3.334 E .99 -(the shell normally searches for b)144 566.4 R .989 -(uiltins before disk commands.)-.2 F(If)5.989 E F23.489 E F0 .989 -(is used, each)3.489 F F1(name)3.489 E F0 .989(is dis-)3.489 F 1.581 -(abled; otherwise,)144 578.4 R F1(names)4.082 E F0 1.582(are enabled.) +(the shell normally searches for b)144 619.2 R .989 +(uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 .989 +(is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F 1.581 +(abled; otherwise,)144 631.2 R F2(names)4.082 E F0 1.582(are enabled.) 4.082 F -.15(Fo)6.582 G 4.082(re).15 G 1.582(xample, to use the)-4.232 F -F2(test)4.082 E F0 1.582(binary found via the)4.082 F F3 -.666(PA)4.082 -G(TH)-.189 E F0 .081(instead of the shell b)144 590.4 R .081(uiltin v) +F1(test)4.082 E F0 1.582(binary found via the)4.082 F F3 -.666(PA)4.082 +G(TH)-.189 E F0 .081(instead of the shell b)144 643.2 R .081(uiltin v) -.2 F .081(ersion, run)-.15 F/F5 10/Courier@0 SF .081(enable -n test) -2.581 F F0 5.081(.T)C(he)-5.081 E F22.58 E F0 .08 -(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 602.4 S 1.524 -(iltin command).2 F F1(name)4.384 E F0 1.524(from shared object)4.204 F -F1(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524 -(ystems that support dynamic loading.)-4.024 F(The)144 614.4 Q F2 +2.581 F F0 5.081(.T)C(he)-5.081 E F12.58 E F0 .08 +(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 655.2 S 1.524 +(iltin command).2 F F2(name)4.384 E F0 1.524(from shared object)4.204 F +F2(\214lename)4.024 E F0 4.024(,o).18 G 4.024(ns)-4.024 G 1.524 +(ystems that support dynamic loading.)-4.024 F(The)144 667.2 Q F1 2.867 E F0 .367(option will delete a b)2.867 F .367(uiltin pre)-.2 F -.367(viously loaded with)-.25 F F22.866 E F0 5.366(.I)C 2.866(fn) --5.366 G(o)-2.866 E F1(name)2.866 E F0(ar)2.866 E .366(guments are gi) --.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 626.4 R F2 +.367(viously loaded with)-.25 F F12.866 E F0 5.366(.I)C 2.866(fn) +-5.366 G(o)-2.866 E F2(name)2.866 E F0(ar)2.866 E .366(guments are gi) +-.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 679.2 R F1 2.898 E F0 .399(option is supplied, a list of shell b)2.899 F .399 (uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4 F .399(guments, the)-.18 F .099(list consists of all enabled shell b)144 -638.4 R 2.598(uiltins. If)-.2 F F22.598 E F0 .098 +691.2 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 (is supplied, only disabled b)2.598 F .098(uiltins are printed.)-.2 F -(If)5.098 E F22.598 E F0 1.916 -(is supplied, the list printed includes all b)144 650.4 R 1.916 +(If)5.098 E F12.598 E F0 1.916 +(is supplied, the list printed includes all b)144 703.2 R 1.916 (uiltins, with an indication of whether or not each is)-.2 F 2.879 -(enabled. If)144 662.4 R F22.879 E F0 .379 -(is supplied, the output is restricted to the POSIX)2.879 F F1(special) +(enabled. If)144 715.2 R F12.879 E F0 .379 +(is supplied, the output is restricted to the POSIX)2.879 F F2(special) 2.879 E F0 -.2(bu)2.878 G 2.878(iltins. The).2 F .378(return v)2.878 F -(alue)-.25 E .994(is 0 unless a)144 674.4 R F1(name)3.854 E F0 .994 +(alue)-.25 E .994(is 0 unless a)144 727.2 R F2(name)3.854 E F0 .994 (is not a shell b)3.674 F .994(uiltin or there is an error loading a ne) --.2 F 3.495(wb)-.25 G .995(uiltin from a shared)-3.695 F(object.)144 -686.4 Q F2 -2.3 -.15(ev a)108 703.2 T(l).15 E F0([)2.5 E F1(ar)A(g)-.37 -E F0(...])2.5 E(The)144 715.2 Q F1(ar)3.171 E(g)-.37 E F0 3.171(sa)C -.671(re read and concatenated together into a single command.)-3.171 F -.67(This command is then read)5.67 F .495(and e)144 727.2 R -.15(xe)-.15 -G .495(cuted by the shell, and its e).15 F .495 -(xit status is returned as the v)-.15 F .495(alue of)-.25 F F2 -2.3 -.15 -(ev a)2.995 H(l).15 E F0 5.495(.I)C 2.995(ft)-5.495 G .495(here are no) --2.995 F F1(ar)2.995 E(gs)-.37 E F0(,).27 E(GNU Bash 4.4)72 768 Q -(2015 October 11)141.235 E(59)190.395 E 0 Cg EP +-.2 F 3.495(wb)-.25 G .995(uiltin from a shared)-3.695 F(GNU Bash 4.4)72 +768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(59)185.545 E 0 Cg +EP %%Page: 60 60 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(or only null ar) -144 84 Q(guments,)-.18 E/F1 10/Times-Bold@0 SF -2.3 -.15(ev a)2.5 H(l) -.15 E F0(returns 0.)2.5 E F1(exec)108 100.8 Q F0([)2.5 E F1(\255cl)A F0 -2.5(][)C F1-2.5 E/F2 10/Times-Italic@0 SF(name)2.5 E F0 2.5(][)C -F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(]])A(If)144 112.8 -Q F2(command)3.006 E F0 .306(is speci\214ed, it replaces the shell.) -3.576 F .305(No ne)5.305 F 2.805(wp)-.25 G .305(rocess is created.) --2.805 F(The)5.305 E F2(ar)3.135 E(guments)-.37 E F0(become)3.075 E .176 -(the ar)144 124.8 R .176(guments to)-.18 F F2(command)2.676 E F0 5.176 -(.I)C 2.676(ft)-5.176 G(he)-2.676 E F12.676 E F0 .176 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(object.)144 84 Q +/F1 10/Times-Bold@0 SF -2.3 -.15(ev a)108 100.8 T(l).15 E F0([)2.5 E/F2 +10/Times-Italic@0 SF(ar)A(g)-.37 E F0(...])2.5 E(The)144 112.8 Q F2(ar) +3.171 E(g)-.37 E F0 3.171(sa)C .671 +(re read and concatenated together into a single command.)-3.171 F .67 +(This command is then read)5.67 F .495(and e)144 124.8 R -.15(xe)-.15 G +.495(cuted by the shell, and its e).15 F .495 +(xit status is returned as the v)-.15 F .495(alue of)-.25 F F1 -2.3 -.15 +(ev a)2.995 H(l).15 E F0 5.495(.I)C 2.995(ft)-5.495 G .495(here are no) +-2.995 F F2(ar)2.995 E(gs)-.37 E F0(,).27 E(or only null ar)144 136.8 Q +(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E F1 +(exec)108 153.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 +(name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments) +-.37 E F0(]])A(If)144 165.6 Q F2(command)3.006 E F0 .306 +(is speci\214ed, it replaces the shell.)3.576 F .305(No ne)5.305 F 2.805 +(wp)-.25 G .305(rocess is created.)-2.805 F(The)5.305 E F2(ar)3.135 E +(guments)-.37 E F0(become)3.075 E .176(the ar)144 177.6 R .176 +(guments to)-.18 F F2(command)2.676 E F0 5.176(.I)C 2.676(ft)-5.176 G +(he)-2.676 E F12.676 E F0 .176 (option is supplied, the shell places a dash at the be)2.676 F .177 -(ginning of)-.15 F .5(the zeroth ar)144 136.8 R .5(gument passed to)-.18 +(ginning of)-.15 F .5(the zeroth ar)144 189.6 R .5(gument passed to)-.18 F F2(command)3 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2(lo)2.999 E(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.499 E F12.999 E F0 -.499(option causes)2.999 F F2(com-)3.199 E(mand)144 148.8 Q F0 .638 +.499(option causes)2.999 F F2(com-)3.199 E(mand)144 201.6 Q F0 .638 (to be e)3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 (vironment. If)-.4 F F13.138 E F0 .638 (is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the) -3.319 F 1.078(zeroth ar)144 160.8 R 1.077(gument to the e)-.18 F -.15 +3.319 F 1.078(zeroth ar)144 213.6 R 1.077(gument to the e)-.18 F -.15 (xe)-.15 G 1.077(cuted command.).15 F(If)6.077 E F2(command)3.777 E F0 1.077(cannot be e)4.347 F -.15(xe)-.15 G 1.077(cuted for some reason, a) -.15 F(non-interacti)144 172.8 Q .876 -.15(ve s)-.25 H .576(hell e).15 F +.15 F(non-interacti)144 225.6 Q .876 -.15(ve s)-.25 H .576(hell e).15 F .576(xits, unless the)-.15 F F1(execfail)3.076 E F0 .577 (shell option is enabled.)3.077 F .577(In that case, it returns f)5.577 -F(ail-)-.1 E 2.505(ure. An)144 184.8 R(interacti)2.505 E .305 -.15(ve s) +F(ail-)-.1 E 2.505(ure. An)144 237.6 R(interacti)2.505 E .305 -.15(ve s) -.25 H .005(hell returns f).15 F .005(ailure if the \214le cannot be e) -.1 F -.15(xe)-.15 G 2.505(cuted. If).15 F F2(command)2.705 E F0 .005 -(is not speci\214ed,)3.275 F(an)144 196.8 Q 3.036(yr)-.15 G .536 +(is not speci\214ed,)3.275 F(an)144 249.6 Q 3.036(yr)-.15 G .536 (edirections tak)-3.036 F 3.036(ee)-.1 G -.25(ff)-3.036 G .536 (ect in the current shell, and the return status is 0.).25 F .536 -(If there is a redirection)5.536 F(error)144 208.8 Q 2.5(,t)-.4 G -(he return status is 1.)-2.5 E F1(exit)108 225.6 Q F0([)2.5 E F2(n)A F0 -(])A .096(Cause the shell to e)144 225.6 R .096(xit with a status of) +(If there is a redirection)5.536 F(error)144 261.6 Q 2.5(,t)-.4 G +(he return status is 1.)-2.5 E F1(exit)108 278.4 Q F0([)2.5 E F2(n)A F0 +(])A .096(Cause the shell to e)144 278.4 R .096(xit with a status of) -.15 F F2(n)2.596 E F0 5.096(.I)C(f)-5.096 E F2(n)2.955 E F0 .095 (is omitted, the e)2.835 F .095(xit status is that of the last command) --.15 F -.15(exe)144 237.6 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9 +-.15 F -.15(exe)144 290.4 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9 /Times-Bold@0 SF(EXIT)2.5 E F0(is e)2.25 E -.15(xe)-.15 G -(cuted before the shell terminates.).15 E F1(export)108 254.4 Q F0([)2.5 +(cuted before the shell terminates.).15 E F1(export)108 307.2 Q F0([)2.5 E F1(\255fn)A F0 2.5(][).833 G F2(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E -F0(]] ...)A F1(export \255p)108 266.4 Q F0 .256(The supplied)144 278.4 R +F0(]] ...)A F1(export \255p)108 319.2 Q F0 .256(The supplied)144 331.2 R F2(names)3.117 E F0 .257(are mark)3.027 F .257(ed for automatic e)-.1 F .257(xport to the en)-.15 F .257(vironment of subsequently e)-.4 F -.15 -(xe)-.15 G(cuted).15 E 2.627(commands. If)144 290.4 R(the)2.627 E F1 +(xe)-.15 G(cuted).15 E 2.627(commands. If)144 343.2 R(the)2.627 E F1 2.627 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the) .15 F F2(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no) 5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .126 -(n, or if the).15 F F1144 302.4 Q F0 .048 +(n, or if the).15 F F1144 355.2 Q F0 .048 (option is supplied, a list of names of all e)2.547 F .048(xported v) -.15 F .048(ariables is printed.)-.25 F(The)5.048 E F12.548 E F0 -.048(option causes the)2.548 F -.15(ex)144 314.4 S 1.447 +.048(option causes the)2.548 F -.15(ex)144 367.2 S 1.447 (port property to be remo).15 F -.15(ve)-.15 G 3.947(df).15 G 1.447 (rom each)-3.947 F F2(name)3.947 E F0 6.447(.I)C 3.947(fav)-6.447 G 1.447(ariable name is follo)-4.197 F 1.447(wed by =)-.25 F F2(wor)A(d) --.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 326.4 S .741(lue of the v) +-.37 E F0 3.946(,t)C(he)-3.946 E -.25(va)144 379.2 S .741(lue of the v) .25 F .741(ariable is set to)-.25 F F2(wor)3.241 E(d)-.37 E F0(.)A F1 (export)5.741 E F0 .742(returns an e)3.242 F .742 (xit status of 0 unless an in)-.15 F -.25(va)-.4 G .742(lid option is) -.25 F .032(encountered, one of the)144 338.4 R F2(names)2.532 E F0 .032 +.25 F .032(encountered, one of the)144 391.2 R F2(names)2.532 E F0 .032 (is not a v)2.532 F .032(alid shell v)-.25 F .032(ariable name, or)-.25 F F12.531 E F0 .031(is supplied with a)2.531 F F2(name)2.891 E F0 -(that)2.711 E(is not a function.)144 350.4 Q F1(fc)108 367.2 Q F0([)2.5 -E F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 +(that)2.711 E(is not a function.)144 403.2 Q F1(fc)108 420 Q F0([)2.5 E +F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 <8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108 -379.2 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 +432 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 (cmd)-2.5 E F0(])A .431 -(The \214rst form selects a range of commands from)144 391.2 R F2<8c72> +(The \214rst form selects a range of commands from)144 444 R F2<8c72> 4.842 E(st)-.1 E F0(to)3.612 E F2(last)3.022 E F0 .432 (from the history list and displays or)3.612 F .142(edits and re-e)144 -403.2 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) +456 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) .45 G(t).1 E F0(and)3.321 E F2(last)2.731 E F0 .141 (may be speci\214ed as a string \(to locate the last command)3.321 F(be) -144 415.2 Q .31(ginning with that string\) or as a number \(an inde)-.15 -F 2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05 -(ga)-.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .315 -(is used as an of)144 427.2 R .315 -(fset from the current command number\).)-.25 F(If)5.315 E F2(last)2.904 -E F0 .314(is not speci\214ed it is set to the cur)3.494 F(-)-.2 E .948 -(rent command for listing \(so that)144 439.2 R/F4 10/Courier@0 SF .948 -(fc \255l \25510)3.448 F F0 .948(prints the last 10 commands\) and to) -3.448 F F2<8c72>5.359 E(st)-.1 E F0(other)4.129 E(-)-.2 E 2.5(wise. If) -144 451.2 R F2<8c72>4.41 E(st)-.1 E F0 -(is not speci\214ed it is set to the pre)3.18 E -(vious command for editing and \25516 for listing.)-.25 E(The)144 475.2 -Q F12.522 E F0 .022 +144 468 Q .31(ginning with that string\) or as a number \(an inde)-.15 F +2.811(xi)-.15 G .311(nto the history list, where a ne)-2.811 F -.05(ga) +-.15 G(ti).05 E .611 -.15(ve n)-.25 H(umber).15 E .315(is used as an of) +144 480 R .315(fset from the current command number\).)-.25 F(If)5.315 E +F2(last)2.904 E F0 .314(is not speci\214ed it is set to the cur)3.494 F +(-)-.2 E .948(rent command for listing \(so that)144 492 R/F4 10 +/Courier@0 SF .948(fc \255l \25510)3.448 F F0 .948 +(prints the last 10 commands\) and to)3.448 F F2<8c72>5.359 E(st)-.1 E +F0(other)4.129 E(-)-.2 E 2.5(wise. If)144 504 R F2<8c72>4.41 E(st)-.1 E +F0(is not speci\214ed it is set to the pre)3.18 E +(vious command for editing and \25516 for listing.)-.25 E(The)144 528 Q +F12.522 E F0 .022 (option suppresses the command numbers when listing.)2.522 F(The)5.022 E F12.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022 -(rses the order of).15 F .438(the commands.)144 487.2 R .438(If the) -5.438 F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 +(rses the order of).15 F .438(the commands.)144 540 R .438(If the)5.438 +F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 (n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E -.335(the editor gi)144 499.2 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E -F2(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835 -(do).1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 -F(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G -(n,).15 E .63(the v)144 511.2 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E -F0 -.25(va)2.88 G .631(riable is used, and the v).25 F .631(alue of)-.25 -F F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631 -(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 523.2 R .951 +.335(the editor gi)144 552 R -.15(ve)-.25 G 2.835(nb).15 G(y)-2.835 E F2 +(ename)3.025 E F0 .335(is in)3.015 F -.2(vo)-.4 G -.1(ke).2 G 2.835(do) +.1 G 2.835(na\214)-2.835 G .335(le containing those commands.)-2.835 F +(If)5.334 E F2(ename)3.024 E F0 .334(is not gi)3.014 F -.15(ve)-.25 G +(n,).15 E .63(the v)144 564 R .63(alue of the)-.25 F F3(FCEDIT)3.13 E F0 +-.25(va)2.88 G .631(riable is used, and the v).25 F .631(alue of)-.25 F +F3(EDIT)3.131 E(OR)-.162 E F0(if)2.881 E F3(FCEDIT)3.131 E F0 .631 +(is not set.)2.881 F .631(If nei-)5.631 F .951(ther v)144 576 R .951 (ariable is set,)-.25 F F2(vi)5.117 E F0 .951(is used.)5.117 F .95 (When editing is complete, the edited commands are echoed and)5.951 F --.15(exe)144 535.2 S(cuted.).15 E .788(In the second form,)144 559.2 R -F2(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 +-.15(exe)144 588 S(cuted.).15 E .788(In the second form,)144 612 R F2 +(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 (cuted after each instance of).15 F F2(pat)3.288 E F0 .788 (is replaced by)3.288 F F2 -.37(re)3.289 G(p).37 E F0(.)A F2(Com-)5.789 -E(mand)144 571.2 Q F0 .347(is intepreted the same as)2.847 F F2<8c72> -2.847 E(st)-.1 E F0(abo)2.847 E -.15(ve)-.15 G 5.347(.A).15 G .347 +E(mand)144 624 Q F0 .347(is intepreted the same as)2.847 F F2<8c72>2.847 +E(st)-.1 E F0(abo)2.847 E -.15(ve)-.15 G 5.347(.A).15 G .347 (useful alias to use with this is)-2.5 F F4 .346(r='fc \255s')2.847 F F0 -2.846(,s)C 2.846(ot)-2.846 G(hat)-2.846 E(typing)144 583.2 Q F4 7.165 -(rc)3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166 +2.846(,s)C 2.846(ot)-2.846 G(hat)-2.846 E(typing)144 636 Q F4 7.165(rc) +3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166 (ginning with)-.15 F F4(cc)3.666 E F0 1.166(and typing)3.666 F F4(r) 3.666 E F0(re-e)3.666 E -.15(xe)-.15 G 1.166(cutes the last com-).15 F -(mand.)144 595.2 Q .142(If the \214rst form is used, the return v)144 -619.2 R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 +(mand.)144 648 Q .142(If the \214rst form is used, the return v)144 672 +R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 (lid option is encountered or).25 F F2<8c72>4.552 E(st)-.1 E F0(or)3.322 -E F2(last)2.732 E F0 .454(specify history lines out of range.)144 631.2 -R .454(If the)5.454 F F12.954 E F0 .454 +E F2(last)2.732 E F0 .454(specify history lines out of range.)144 684 R +.454(If the)5.454 F F12.954 E F0 .454 (option is supplied, the return v)2.954 F .455(alue is the v)-.25 F .455 -(alue of the)-.25 F .788(last command e)144 643.2 R -.15(xe)-.15 G .788 +(alue of the)-.25 F .788(last command e)144 696 R -.15(xe)-.15 G .788 (cuted or f).15 F .787 (ailure if an error occurs with the temporary \214le of commands.)-.1 F .787(If the)5.787 F 1.135 (second form is used, the return status is that of the command re-e)144 -655.2 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136 -(does not)4.406 F(specify a v)144 667.2 Q +708 R -.15(xe)-.15 G 1.136(cuted, unless).15 F F2(cmd)3.836 E F0 1.136 +(does not)4.406 F(specify a v)144 720 Q (alid history line, in which case)-.25 E F1(fc)2.5 E F0(returns f)2.5 E -(ailure.)-.1 E F1(fg)108 684 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume)144 -696 Q F2(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413 -(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413 -(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F2(jobspec)5.653 E F0 -1.413(is not present, the)4.223 F(shell')144 708 Q 3.116(sn)-.55 G .616 -(otion of the)-3.116 F F2(curr)3.116 E .616(ent job)-.37 F F0 .617 -(is used.)3.116 F .617(The return v)5.617 F .617 -(alue is that of the command placed into the)-.25 F(fore)144 720 Q .363 -(ground, or f)-.15 F .363(ailure if run when job control is disabled or) --.1 F 2.862(,w)-.4 G .362(hen run with job control enabled, if)-2.862 F -(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(60)190.395 E 0 Cg EP +(ailure.)-.1 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G +(mber 16).15 E(60)185.545 E 0 Cg EP %%Page: 61 61 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 -/Times-Italic@0 SF(jobspec)145.74 84 Q F0(does not specify a v)2.81 E -(alid job or)-.25 E F1(jobspec)4.24 E F0(speci\214es a job that w)2.81 E -(as started without job control.)-.1 E/F2 10/Times-Bold@0 SF(getopts)108 -100.8 Q F1(optstring name)2.5 E F0([)2.5 E F1(ar)A(gs)-.37 E F0(])A F2 -(getopts)144 112.8 Q F0 .793 -(is used by shell procedures to parse positional parameters.)3.293 F F1 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(fg)108 84 Q F0([)2.5 E/F2 10/Times-Italic@0 SF(jobspec)A F0(])A +(Resume)144 96 Q F2(jobspec)5.654 E F0 1.413(in the fore)4.224 F 1.413 +(ground, and mak)-.15 F 3.913(ei)-.1 G 3.913(tt)-3.913 G 1.413 +(he current job)-3.913 F 6.413(.I)-.4 G(f)-6.413 E F2(jobspec)5.653 E F0 +1.413(is not present, the)4.223 F(shell')144 108 Q 3.116(sn)-.55 G .616 +(otion of the)-3.116 F F2(curr)3.116 E .616(ent job)-.37 F F0 .617 +(is used.)3.116 F .617(The return v)5.617 F .617 +(alue is that of the command placed into the)-.25 F(fore)144 120 Q .363 +(ground, or f)-.15 F .363(ailure if run when job control is disabled or) +-.1 F 2.862(,w)-.4 G .362(hen run with job control enabled, if)-2.862 F +F2(jobspec)145.74 132 Q F0(does not specify a v)2.81 E(alid job or)-.25 +E F2(jobspec)4.24 E F0(speci\214es a job that w)2.81 E +(as started without job control.)-.1 E F1(getopts)108 148.8 Q F2 +(optstring name)2.5 E F0([)2.5 E F2(ar)A(gs)-.37 E F0(])A F1(getopts)144 +160.8 Q F0 .793 +(is used by shell procedures to parse positional parameters.)3.293 F F2 (optstring)6.023 E F0 .793(contains the option)3.513 F .15 -(characters to be recognized; if a character is follo)144 124.8 R .149 +(characters to be recognized; if a character is follo)144 172.8 R .149 (wed by a colon, the option is e)-.25 F .149(xpected to ha)-.15 F .449 --.15(ve a)-.2 H(n).15 E(ar)144 136.8 Q .578 +-.15(ve a)-.2 H(n).15 E(ar)144 184.8 Q .578 (gument, which should be separated from it by white space.)-.18 F .579 (The colon and question mark char)5.579 F(-)-.2 E 1.665 -(acters may not be used as option characters.)144 148.8 R 1.665 -(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F2(getopts) +(acters may not be used as option characters.)144 196.8 R 1.665 +(Each time it is in)6.665 F -.2(vo)-.4 G -.1(ke).2 G(d,).1 E F1(getopts) 4.165 E F0 1.665(places the ne)4.165 F(xt)-.15 E .796 -(option in the shell v)144 160.8 R(ariable)-.25 E F1(name)3.296 E F0 -3.296(,i).18 G(nitializing)-3.296 E F1(name)3.657 E F0 .797 +(option in the shell v)144 208.8 R(ariable)-.25 E F2(name)3.296 E F0 +3.296(,i).18 G(nitializing)-3.296 E F2(name)3.657 E F0 .797 (if it does not e)3.477 F .797(xist, and the inde)-.15 F 3.297(xo)-.15 G -3.297(ft)-3.297 G .797(he ne)-3.297 F(xt)-.15 E(ar)144 172.8 Q .085 +3.297(ft)-3.297 G .797(he ne)-3.297 F(xt)-.15 E(ar)144 220.8 Q .085 (gument to be processed into the v)-.18 F(ariable)-.25 E/F3 9 /Times-Bold@0 SF(OPTIND)2.585 E/F4 9/Times-Roman@0 SF(.)A F3(OPTIND) 4.585 E F0 .085(is initialized to 1 each time the shell)2.335 F .845 -(or a shell script is in)144 184.8 R -.2(vo)-.4 G -.1(ke).2 G 3.345 -(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F2 +(or a shell script is in)144 232.8 R -.2(vo)-.4 G -.1(ke).2 G 3.345 +(d. When).1 F .845(an option requires an ar)3.345 F(gument,)-.18 E F1 (getopts)3.346 E F0 .846(places that ar)3.346 F(gument)-.18 E .804 -(into the v)144 196.8 R(ariable)-.25 E F3(OPT)3.304 E(ARG)-.81 E F4(.)A +(into the v)144 244.8 R(ariable)-.25 E F3(OPT)3.304 E(ARG)-.81 E F4(.)A F0 .803(The shell does not reset)5.304 F F3(OPTIND)3.303 E F0 .803 (automatically; it must be manually)3.053 F .293 -(reset between multiple calls to)144 208.8 R F2(getopts)2.793 E F0 .293 +(reset between multiple calls to)144 256.8 R F1(getopts)2.793 E F0 .293 (within the same shell in)2.793 F -.2(vo)-.4 G .293(cation if a ne).2 F -2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 220.8 -Q 2.044(When the end of options is encountered,)144 244.8 R F2(getopts) +2.793(ws)-.25 G .294(et of parameters)-2.793 F(is to be used.)144 268.8 +Q 2.044(When the end of options is encountered,)144 292.8 R F1(getopts) 4.543 E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.043 -(alue greater than zero.)-.25 F F3(OPTIND)144 256.8 Q F0 +(alue greater than zero.)-.25 F F3(OPTIND)144 304.8 Q F0 (is set to the inde)2.25 E 2.5(xo)-.15 G 2.5(ft)-2.5 G -(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F1(name)2.5 E F0 -(is set to ?.)2.5 E F2(getopts)144 280.8 Q F0 2.392 +(he \214rst non-option ar)-2.5 E(gument, and)-.18 E F2(name)2.5 E F0 +(is set to ?.)2.5 E F1(getopts)144 328.8 Q F0 2.392 (normally parses the positional parameters, b)4.892 F 2.392 (ut if more ar)-.2 F 2.393(guments are gi)-.18 F -.15(ve)-.25 G 4.893 -(ni).15 G(n)-4.893 E F1(ar)4.893 E(gs)-.37 E F0(,).27 E F2(getopts)144 -292.8 Q F0(parses those instead.)2.5 E F2(getopts)144 316.8 Q F0 1.166 +(ni).15 G(n)-4.893 E F2(ar)4.893 E(gs)-.37 E F0(,).27 E F1(getopts)144 +340.8 Q F0(parses those instead.)2.5 E F1(getopts)144 364.8 Q F0 1.166 (can report errors in tw)3.666 F 3.665(ow)-.1 G 3.665(ays. If)-3.765 F -1.165(the \214rst character of)3.665 F F1(optstring)3.895 E F0 1.165 -(is a colon,)3.885 F F1(silent)4.005 E F0(error)4.345 E 1.07 -(reporting is used.)144 328.8 R 1.071 +1.165(the \214rst character of)3.665 F F2(optstring)3.895 E F0 1.165 +(is a colon,)3.885 F F2(silent)4.005 E F0(error)4.345 E 1.07 +(reporting is used.)144 376.8 R 1.071 (In normal operation, diagnostic messages are printed when in)6.07 F -.25(va)-.4 G 1.071(lid options or).25 F .394(missing option ar)144 -340.8 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F +388.8 R .394(guments are encountered.)-.18 F .394(If the v)5.394 F (ariable)-.25 E F3(OPTERR)2.894 E F0 .394 -(is set to 0, no error messages)2.644 F(will be displayed, e)144 352.8 Q +(is set to 0, no error messages)2.644 F(will be displayed, e)144 400.8 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214rst character of)-2.5 E -F1(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 376.8 R --.25(va)-.4 G .666(lid option is seen,).25 F F2(getopts)3.166 E F0 .667 -(places ? into)3.167 F F1(name)3.527 E F0 .667 +F2(optstring)2.73 E F0(is not a colon.)2.72 E .666(If an in)144 424.8 R +-.25(va)-.4 G .666(lid option is seen,).25 F F1(getopts)3.166 E F0 .667 +(places ? into)3.167 F F2(name)3.527 E F0 .667 (and, if not silent, prints an error message)3.347 F .4(and unsets)144 -388.8 R F3(OPT)2.9 E(ARG)-.81 E F4(.)A F0(If)4.899 E F2(getopts)2.899 E +436.8 R F3(OPT)2.9 E(ARG)-.81 E F4(.)A F0(If)4.899 E F1(getopts)2.899 E F0 .399(is silent, the option character found is placed in)2.899 F F3 (OPT)2.899 E(ARG)-.81 E F0 .399(and no)2.649 F -(diagnostic message is printed.)144 400.8 Q 1.241(If a required ar)144 -424.8 R 1.241(gument is not found, and)-.18 F F2(getopts)3.741 E F0 -1.241(is not silent, a question mark \()3.741 F F2(?).833 E F0 3.742 -(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F1(name)144 436.8 +(diagnostic message is printed.)144 448.8 Q 1.241(If a required ar)144 +472.8 R 1.241(gument is not found, and)-.18 F F1(getopts)3.741 E F0 +1.241(is not silent, a question mark \()3.741 F F1(?).833 E F0 3.742 +(\)i).833 G 3.742(sp)-3.742 G 1.242(laced in)-3.742 F F2(name)144 484.8 Q F0(,).18 E F3(OPT)2.735 E(ARG)-.81 E F0 .234 -(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F2 -(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F2(:).833 E -F0(\)).833 E(is placed in)144 448.8 Q F1(name)2.86 E F0(and)2.68 E F3 -(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F2 -(getopts)144 472.8 Q F0 .902 +(is unset, and a diagnostic message is printed.)2.485 F(If)5.234 E F1 +(getopts)2.734 E F0 .234(is silent, then a colon \()2.734 F F1(:).833 E +F0(\)).833 E(is placed in)144 496.8 Q F2(name)2.86 E F0(and)2.68 E F3 +(OPT)2.5 E(ARG)-.81 E F0(is set to the option character found.)2.25 E F1 +(getopts)144 520.8 Q F0 .902 (returns true if an option, speci\214ed or unspeci\214ed, is found.) 3.401 F .902(It returns f)5.902 F .902(alse if the end of)-.1 F -(options is encountered or an error occurs.)144 484.8 Q F2(hash)108 -501.6 Q F0([)2.5 E F2(\255lr)A F0 2.5(][)C F2-2.5 E F1(\214lename) -2.5 E F0 2.5(][)C F2(\255dt)-2.5 E F0 2.5(][)C F1(name)-2.5 E F0(])A -.858(Each time)144 513.6 R F2(hash)3.358 E F0 .858(is in)3.358 F -.2(vo) --.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F F1(name) +(options is encountered or an error occurs.)144 532.8 Q F1(hash)108 +549.6 Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1-2.5 E F2(\214lename) +2.5 E F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A +.858(Each time)144 561.6 R F1(hash)3.358 E F0 .858(is in)3.358 F -.2(vo) +-.4 G -.1(ke).2 G .858(d, the full pathname of the command).1 F F2(name) 3.718 E F0 .858(is determined by searching)3.538 F .956 -(the directories in)144 525.6 R F2($P)3.456 E -.95(AT)-.74 G(H).95 E F0 +(the directories in)144 573.6 R F1($P)3.456 E -.95(AT)-.74 G(H).95 E F0 .956(and remembered.)3.456 F(An)5.956 E 3.456(yp)-.15 G(re)-3.456 E .956 -(viously-remembered pathname is discarded.)-.25 F .243(If the)144 537.6 -R F22.743 E F0 .243 -(option is supplied, no path search is performed, and)2.743 F F1 +(viously-remembered pathname is discarded.)-.25 F .243(If the)144 585.6 +R F12.743 E F0 .243 +(option is supplied, no path search is performed, and)2.743 F F2 (\214lename)4.653 E F0 .242(is used as the full \214lename)2.923 F 1.711 -(of the command.)144 549.6 R(The)6.711 E F24.211 E F0 1.711 +(of the command.)144 597.6 R(The)6.711 E F14.211 E F0 1.711 (option causes the shell to for)4.211 F 1.712 -(get all remembered locations.)-.18 F(The)6.712 E F24.212 E F0 -.833(option causes the shell to for)144 561.6 R .833 -(get the remembered location of each)-.18 F F1(name)3.333 E F0 5.833(.I) -C 3.333(ft)-5.833 G(he)-3.333 E F23.333 E F0 .833(option is sup-) -3.333 F .703(plied, the full pathname to which each)144 573.6 R F1(name) +(get all remembered locations.)-.18 F(The)6.712 E F14.212 E F0 +.833(option causes the shell to for)144 609.6 R .833 +(get the remembered location of each)-.18 F F2(name)3.333 E F0 5.833(.I) +C 3.333(ft)-5.833 G(he)-3.333 E F13.333 E F0 .833(option is sup-) +3.333 F .703(plied, the full pathname to which each)144 621.6 R F2(name) 3.204 E F0 .704(corresponds is printed.)3.204 F .704(If multiple)5.704 F -F1(name)3.204 E F0(ar)3.204 E(guments)-.18 E .795(are supplied with)144 -585.6 R F23.295 E F0 3.295(,t)C(he)-3.295 E F1(name)3.295 E F0 -.795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F2 +F2(name)3.204 E F0(ar)3.204 E(guments)-.18 E .795(are supplied with)144 +633.6 R F13.295 E F0 3.295(,t)C(he)-3.295 E F2(name)3.295 E F0 +.795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F1 3.295 E F0 .795(option causes)3.295 F .934 (output to be displayed in a format that may be reused as input.)144 -597.6 R .934(If no ar)5.934 F .935(guments are gi)-.18 F -.15(ve)-.25 G -.935(n, or if).15 F(only)144 609.6 Q F22.822 E F0 .322 +645.6 R .934(If no ar)5.934 F .935(guments are gi)-.18 F -.15(ve)-.25 G +.935(n, or if).15 F(only)144 657.6 Q F12.822 E F0 .322 (is supplied, information about remembered commands is printed.)2.822 F -.321(The return status is true)5.321 F(unless a)144 621.6 Q F1(name)2.86 +.321(The return status is true)5.321 F(unless a)144 669.6 Q F2(name)2.86 E F0(is not found or an in)2.68 E -.25(va)-.4 G(lid option is supplied.) -.25 E F2(help)108 638.4 Q F0([)2.5 E F2(\255dms)A F0 2.5(][)C F1 +.25 E F1(help)108 686.4 Q F0([)2.5 E F1(\255dms)A F0 2.5(][)C F2 (pattern)-2.5 E F0(])A .866(Display helpful information about b)144 -650.4 R .867(uiltin commands.)-.2 F(If)5.867 E F1(pattern)4.617 E F0 -.867(is speci\214ed,)3.607 F F2(help)3.367 E F0(gi)3.367 E -.15(ve)-.25 +698.4 R .867(uiltin commands.)-.2 F(If)5.867 E F2(pattern)4.617 E F0 +.867(is speci\214ed,)3.607 F F1(help)3.367 E F0(gi)3.367 E -.15(ve)-.25 G 3.367(sd).15 G(etailed)-3.367 E .307(help on all commands matching)144 -662.4 R F1(pattern)2.807 E F0 2.807(;o).24 G .307 +710.4 R F2(pattern)2.807 E F0 2.807(;o).24 G .307 (therwise help for all the b)-2.807 F .306 -(uiltins and shell control struc-)-.2 F(tures is printed.)144 674.4 Q F2 -144 686.4 Q F0(Display a short description of each)180 686.4 Q F1 -(pattern)2.5 E F2144 698.4 Q F0(Display the description of each) -180 698.4 Q F1(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G -(ormat)-2.5 E F2144 710.4 Q F0 -(Display only a short usage synopsis for each)180 710.4 Q F1(pattern)2.5 -E F0(The return status is 0 unless no command matches)144 727.2 Q F1 -(pattern)2.5 E F0(.).24 E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 -E(61)190.395 E 0 Cg EP +(uiltins and shell control struc-)-.2 F(tures is printed.)144 722.4 Q +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(61)185.545 E 0 Cg EP %%Page: 62 62 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(history [)108 84 Q/F2 10/Times-Italic@0 SF(n)A F1(])A(history \255c) -108 96 Q(history \255d)108 108 Q F2(of)2.5 E(fset)-.18 E F1 -(history \255anrw)108 120 Q F0([)2.5 E F2(\214lename)A F0(])A F1 -(history \255p)108 132 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5(g.) --.37 G(..)-2.5 E F0(])A F1(history \255s)108 144 Q F2(ar)2.5 E(g)-.37 E -F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 156 S .752 +SF144 84 Q F0(Display a short description of each)180 84 Q/F2 10 +/Times-Italic@0 SF(pattern)2.5 E F1144 96 Q F0 +(Display the description of each)180 96 Q F2(pattern)2.5 E F0 +(in a manpage-lik)2.5 E 2.5(ef)-.1 G(ormat)-2.5 E F1144 108 Q F0 +(Display only a short usage synopsis for each)180 108 Q F2(pattern)2.5 E +F0(The return status is 0 unless no command matches)144 124.8 Q F2 +(pattern)2.5 E F0(.).24 E F1(history [)108 141.6 Q F2(n)A F1(])A +(history \255c)108 153.6 Q(history \255d)108 165.6 Q F2(of)2.5 E(fset) +-.18 E F1(history \255anrw)108 177.6 Q F0([)2.5 E F2(\214lename)A F0(])A +F1(history \255p)108 189.6 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5 +(g.)-.37 G(..)-2.5 E F0(])A F1(history \255s)108 201.6 Q F2(ar)2.5 E(g) +-.37 E F0([)2.5 E F2(ar)A 2.5(g.)-.37 G(..)-2.5 E F0(])A -.4(Wi)144 +213.6 S .752 (th no options, display the command history list with line numbers.).4 F .752(Lines listed with a)5.752 F F1(*)3.252 E F0(ha)3.252 E -.15(ve)-.2 -G .381(been modi\214ed.)144 168 R .38(An ar)5.38 F .38(gument of)-.18 F -F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 +G .381(been modi\214ed.)144 225.6 R .38(An ar)5.38 F .38(gument of)-.18 +F F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 (lines. If)3.12 F .38(the shell v)2.88 F(ariable)-.25 E/F3 9 -/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 180 Q(T)-.855 E F0 .264 +/Times-Bold@0 SF(HISTTIMEFOR-)2.88 E(MA)144 237.6 Q(T)-.855 E F0 .264 (is set and not null, it is used as a format string for)2.514 F F2 (strftime)2.765 E F0 .265(\(3\) to display the time stamp asso-)B 1.02 -(ciated with each displayed history entry)144 192 R 6.019(.N)-.65 G +(ciated with each displayed history entry)144 249.6 R 6.019(.N)-.65 G 3.519(oi)-6.019 G(nterv)-3.519 E 1.019 (ening blank is printed between the formatted)-.15 F .176 -(time stamp and the history line.)144 204 R(If)5.176 E F2(\214lename) +(time stamp and the history line.)144 261.6 R(If)5.176 E F2(\214lename) 2.676 E F0 .176 (is supplied, it is used as the name of the history \214le; if)2.676 F -(not, the v)144 216 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.)2.25 -E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 228 Q F0 -(Clear the history list by deleting all the entries.)180 228 Q F1 -144 240 Q F2(of)2.5 E(fset)-.18 E F0 -(Delete the history entry at position)180 252 Q F2(of)2.5 E(fset)-.18 E -F0(.)A F1144 264 Q F0 .565(Append the `)180 264 R(`ne)-.74 E(w') --.25 E 3.065('h)-.74 G .564(istory lines to the history \214le.)-3.065 F -.564(These are history lines entered since)5.564 F(the be)180 276 Q -(ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E -(ut not already appended to the history \214le.)-.2 E F1144 288 Q -F0 .854(Read the history lines not already read from the history \214le\ - into the current history list.)180 288 R .773 -(These are lines appended to the history \214le since the be)180 300 R +(not, the v)144 273.6 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.) +2.25 E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 285.6 Q F0 +(Clear the history list by deleting all the entries.)180 285.6 Q F1 +144 297.6 Q F2(of)2.5 E(fset)-.18 E F0 +(Delete the history entry at position)180 309.6 Q F2(of)2.5 E(fset)-.18 +E F0(.)A F1144 321.6 Q F0 .565(Append the `)180 321.6 R(`ne)-.74 E +(w')-.25 E 3.065('h)-.74 G .564(istory lines to the history \214le.) +-3.065 F .564(These are history lines entered since)5.564 F(the be)180 +333.6 Q(ginning of the current)-.15 E F1(bash)2.5 E F0(session, b)2.5 E +(ut not already appended to the history \214le.)-.2 E F1144 345.6 +Q F0 .854(Read the history lines not already read from the history \214\ +le into the current history list.)180 345.6 R .773 +(These are lines appended to the history \214le since the be)180 357.6 R .772(ginning of the current)-.15 F F1(bash)3.272 E F0(ses-)3.272 E -(sion.)180 312 Q F1144 324 Q F0(Read the contents of the history \ -\214le and append them to the current history list.)180 324 Q F1 -144 336 Q F0(Write the current history list to the history \214le, o)180 -336 Q -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G -(ontents.)-2.5 E F1144 348 Q F0 .625 -(Perform history substitution on the follo)180 348 R(wing)-.25 E F2(ar) -3.125 E(gs)-.37 E F0 .626(and display the result on the standard)3.125 F -2.975(output. Does)180 360 R .475 +(sion.)180 369.6 Q F1144 381.6 Q F0(Read the contents of the hist\ +ory \214le and append them to the current history list.)180 381.6 Q F1 +144 393.6 Q F0 +(Write the current history list to the history \214le, o)180 393.6 Q +-.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G +(ontents.)-2.5 E F1144 405.6 Q F0 .625 +(Perform history substitution on the follo)180 405.6 R(wing)-.25 E F2 +(ar)3.125 E(gs)-.37 E F0 .626(and display the result on the standard) +3.125 F 2.975(output. Does)180 417.6 R .475 (not store the results in the history list.)2.975 F(Each)5.475 E F2(ar) 2.975 E(g)-.37 E F0 .475(must be quoted to disable)2.975 F -(normal history e)180 372 Q(xpansion.)-.15 E F1144 384 Q F0 .362 -(Store the)180 384 R F2(ar)3.192 E(gs)-.37 E F0 .363 +(normal history e)180 429.6 Q(xpansion.)-.15 E F1144 441.6 Q F0 +.362(Store the)180 441.6 R F2(ar)3.192 E(gs)-.37 E F0 .363 (in the history list as a single entry)3.132 F 5.363(.T)-.65 G .363 -(he last command in the history list is)-5.363 F(remo)180 396 Q -.15(ve) --.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 -(are added.)2.77 E .146(If the)144 412.8 R F3(HISTTIMEFORMA)2.645 E(T) +(he last command in the history list is)-5.363 F(remo)180 453.6 Q -.15 +(ve)-.15 G 2.5(db).15 G(efore the)-2.5 E F2(ar)2.83 E(gs)-.37 E F0 +(are added.)2.77 E .146(If the)144 470.4 R F3(HISTTIMEFORMA)2.645 E(T) -.855 E F0 -.25(va)2.395 G .145 (riable is set, the time stamp information associated with each history) -.25 F .668(entry is written to the history \214le, mark)144 424.8 R .669 +.25 F .668(entry is written to the history \214le, mark)144 482.4 R .669 (ed with the history comment character)-.1 F 5.669(.W)-.55 G .669 -(hen the history)-5.669 F .956(\214le is read, lines be)144 436.8 R .956 +(hen the history)-5.669 F .956(\214le is read, lines be)144 494.4 R .956 (ginning with the history comment character follo)-.15 F .955 (wed immediately by a digit)-.25 F .415 -(are interpreted as timestamps for the pre)144 448.8 R .416 +(are interpreted as timestamps for the pre)144 506.4 R .416 (vious history line.)-.25 F .416(The return v)5.416 F .416 (alue is 0 unless an in)-.25 F -.25(va)-.4 G(lid).25 E .499(option is e\ ncountered, an error occurs while reading or writing the history \214le\ -, an in)144 460.8 R -.25(va)-.4 G(lid).25 E F2(of)2.999 E(fset)-.18 E F0 -(is)2.999 E(supplied as an ar)144 472.8 Q(gument to)-.18 E F12.5 E +, an in)144 518.4 R -.25(va)-.4 G(lid).25 E F2(of)2.999 E(fset)-.18 E F0 +(is)2.999 E(supplied as an ar)144 530.4 Q(gument to)-.18 E F12.5 E F0 2.5(,o)C 2.5(rt)-2.5 G(he history e)-2.5 E (xpansion supplied as an ar)-.15 E(gument to)-.18 E F12.5 E F0 -.1 -(fa)2.5 G(ils.).1 E F1(jobs)108 489.6 Q F0([)2.5 E F1(\255lnprs)A F0 2.5 -(][)C F2(jobspec)A F0(... ])2.5 E F1(jobs \255x)108 501.6 Q F2(command) +(fa)2.5 G(ils.).1 E F1(jobs)108 547.2 Q F0([)2.5 E F1(\255lnprs)A F0 2.5 +(][)C F2(jobspec)A F0(... ])2.5 E F1(jobs \255x)108 559.2 Q F2(command) 2.5 E F0([)2.5 E F2(ar)2.5 E(gs)-.37 E F0(... ])2.5 E -(The \214rst form lists the acti)144 513.6 Q .3 -.15(ve j)-.25 H 2.5 +(The \214rst form lists the acti)144 571.2 Q .3 -.15(ve j)-.25 H 2.5 (obs. The).15 F(options ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 525.6 Q F0 -(List process IDs in addition to the normal information.)180 525.6 Q F1 -144 537.6 Q F0 .193(Display information only about jobs that ha) -180 537.6 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15 -F .194(as last noti-)-.1 F(\214ed of their status.)180 549.6 Q F1 -144 561.6 Q F0(List only the process ID of the job')180 561.6 Q 2.5(sp) --.55 G(rocess group leader)-2.5 E(.)-.55 E F1144 573.6 Q F0 -(Display only running jobs.)180 573.6 Q F1144 585.6 Q F0 -(Display only stopped jobs.)180 585.6 Q(If)144 602.4 Q F2(jobspec)4.554 -E F0 .314(is gi)3.124 F -.15(ve)-.25 G .314 +(wing meanings:)-.25 E F1144 583.2 Q F0 +(List process IDs in addition to the normal information.)180 583.2 Q F1 +144 595.2 Q F0 .193(Display information only about jobs that ha) +180 595.2 R .494 -.15(ve c)-.2 H .194(hanged status since the user w).15 +F .194(as last noti-)-.1 F(\214ed of their status.)180 607.2 Q F1 +144 619.2 Q F0(List only the process ID of the job')180 619.2 Q 2.5(sp) +-.55 G(rocess group leader)-2.5 E(.)-.55 E F1144 631.2 Q F0 +(Display only running jobs.)180 631.2 Q F1144 643.2 Q F0 +(Display only stopped jobs.)180 643.2 Q(If)144 660 Q F2(jobspec)4.554 E +F0 .314(is gi)3.124 F -.15(ve)-.25 G .314 (n, output is restricted to information about that job).15 F 5.313(.T) --.4 G .313(he return status is 0 unless)-5.313 F(an in)144 614.4 Q -.25 +-.4 G .313(he return status is 0 unless)-5.313 F(an in)144 672 Q -.25 (va)-.4 G(lid option is encountered or an in).25 E -.25(va)-.4 G(lid).25 -E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 631.2 R F1 +E F2(jobspec)4.24 E F0(is supplied.)2.81 E .394(If the)144 688.8 R F1 2.894 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0 .394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in) 3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .395 -(with the corre-)3.164 F(sponding process group ID, and e)144 643.2 Q +(with the corre-)3.164 F(sponding process group ID, and e)144 700.8 Q -.15(xe)-.15 G(cutes).15 E F2(command)2.7 E F0(passing it)3.27 E F2(ar) 2.5 E(gs)-.37 E F0 2.5(,r).27 G(eturning its e)-2.5 E(xit status.)-.15 E -F1(kill)108 660 Q F0([)2.5 E F1A F2(sigspec)2.5 E F0(|)2.5 E F1 -2.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2(sigspec)A F0 2.5 -(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..)-2.5 E F1 -(kill \255l)108 672 Q F0(|)A F1A F0([)2.5 E F2(sigspec)A F0(|)2.5 -E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .12(Send the signal named by)144 -684 R F2(sigspec)2.96 E F0(or)2.93 E F2(signum)2.96 E F0 .119 -(to the processes named by)2.939 F F2(pid)3.869 E F0(or)3.389 E F2 -(jobspec)2.619 E F0(.).31 E F2(sigspec)5.459 E F0(is)2.929 E .318 -(either a case-insensiti)144 696 R .618 -.15(ve s)-.25 H .318 -(ignal name such as).15 F F3(SIGKILL)2.818 E F0 .319 -(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319 -(pre\214x\) or a signal)2.569 F(number;)144 708 Q F2(signum)4.189 E F0 -1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec) -4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0 -1.348(is assumed.)3.599 F(An)6.348 E(ar)144 720 Q .522(gument of)-.18 F -F13.023 E F0 .523(lists the signal names.)3.023 F .523(If an)5.523 -F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when).18 F -F13.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523(n, the names) -.15 F(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(62)190.395 E 0 Cg -EP +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(62)185.545 E 0 Cg EP %%Page: 63 63 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .28 -(of the signals corresponding to the ar)144 84 R .28 -(guments are listed, and the return status is 0.)-.18 F(The)5.28 E/F1 10 -/Times-Italic@0 SF -.2(ex)2.78 G(it_status).2 E F0(ar)144 96 Q .377 -(gument to)-.18 F/F2 10/Times-Bold@0 SF2.877 E F0 .378 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(kill)108 84 Q F0([)2.5 E F1A/F2 10/Times-Italic@0 SF(sigspec) +2.5 E F0(|)2.5 E F12.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2 +(sigspec)A F0 2.5(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5 +(].)C(..)-2.5 E F1(kill \255l)108 96 Q F0(|)A F1A F0([)2.5 E F2 +(sigspec)A F0(|)2.5 E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .12 +(Send the signal named by)144 108 R F2(sigspec)2.96 E F0(or)2.93 E F2 +(signum)2.96 E F0 .119(to the processes named by)2.939 F F2(pid)3.869 E +F0(or)3.389 E F2(jobspec)2.619 E F0(.).31 E F2(sigspec)5.459 E F0(is) +2.929 E .318(either a case-insensiti)144 120 R .618 -.15(ve s)-.25 H +.318(ignal name such as).15 F/F3 9/Times-Bold@0 SF(SIGKILL)2.818 E F0 +.319(\(with or without the)2.569 F F3(SIG)2.819 E F0 .319 +(pre\214x\) or a signal)2.569 F(number;)144 132 Q F2(signum)4.189 E F0 +1.349(is a signal number)4.169 F 6.349(.I)-.55 G(f)-6.349 E F2(sigspec) +4.189 E F0 1.349(is not present, then)4.159 F F3(SIGTERM)3.849 E F0 +1.348(is assumed.)3.599 F(An)6.348 E(ar)144 144 Q .522(gument of)-.18 F +F13.023 E F0 .523(lists the signal names.)3.023 F .523(If an)5.523 +F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when).18 F +F13.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523(n, the names) +.15 F .28(of the signals corresponding to the ar)144 156 R .28 +(guments are listed, and the return status is 0.)-.18 F(The)5.28 E F2 +-.2(ex)2.78 G(it_status).2 E F0(ar)144 168 Q .377(gument to)-.18 F F1 +2.877 E F0 .378 (is a number specifying either a signal number or the e)2.877 F .378 -(xit status of a process termi-)-.15 F .963(nated by a signal.)144 108 R -(The)5.962 E F23.462 E F0 .962(option is equi)3.462 F -.25(va)-.25 -G .962(lent to).25 F F23.462 E F0(.)A F2(kill)5.962 E F0 .962 +(xit status of a process termi-)-.15 F .963(nated by a signal.)144 180 R +(The)5.962 E F13.462 E F0 .962(option is equi)3.462 F -.25(va)-.25 +G .962(lent to).25 F F13.462 E F0(.)A F1(kill)5.962 E F0 .962 (returns true if at least one signal w)3.462 F(as)-.1 E -(successfully sent, or f)144 120 Q(alse if an error occurs or an in)-.1 -E -.25(va)-.4 G(lid option is encountered.).25 E F2(let)108 136.8 Q F1 -(ar)2.5 E(g)-.37 E F0([)2.5 E F1(ar)A(g)-.37 E F0(...])2.5 E(Each)144 -148.8 Q F1(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197 -(xpression to be e)-.15 F -.25(va)-.25 G .197(luated \(see).25 F/F3 9 -/Times-Bold@0 SF .197(ARITHMETIC EV)2.697 F(ALU)-1.215 E -.855(AT)-.54 G -(ION).855 E F0(abo)2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last) -144 160.8 Q F1(ar)2.83 E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E -F2(let)2.5 E F0(returns 1; 0 is returned otherwise.)2.5 E F2(local)108 -177.6 Q F0([)2.5 E F1(option)A F0 2.5(][)C F1(name)-2.5 E F0([=)A F1 -(value)A F0 2.5(].)C(.. | \255 ])-2.5 E -.15(Fo)144 189.6 S 2.56(re).15 -G .06(ach ar)-2.56 F .06(gument, a local v)-.18 F .06(ariable named)-.25 -F F1(name)2.92 E F0 .06(is created, and assigned)2.74 F F1(value)2.56 E -F0 5.06(.T).18 G(he)-5.06 E F1(option)2.56 E F0 .06(can be)2.56 F(an)144 -201.6 Q 3.152(yo)-.15 G 3.152(ft)-3.152 G .652(he options accepted by) --3.152 F F2(declar)3.152 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F2(local) -3.152 E F0 .653(is used within a function, it causes the v)3.152 F(ari-) --.25 E(able)144 213.6 Q F1(name)3.282 E F0 .422(to ha)3.102 F .722 -.15 -(ve a v)-.2 H .422 -(isible scope restricted to that function and its children.).15 F(If) -5.421 E F1(name)2.921 E F0 .421(is \255, the set)2.921 F 1.461 -(of shell options is made local to the function in which)144 225.6 R F2 +(successfully sent, or f)144 192 Q(alse if an error occurs or an in)-.1 +E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 208.8 Q F2 +(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144 +220.8 Q F2(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197 +(xpression to be e)-.15 F -.25(va)-.25 G .197(luated \(see).25 F F3 .197 +(ARITHMETIC EV)2.697 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(abo) +2.447 E -.15(ve)-.15 G 2.697(\). If).15 F(the last)144 232.8 Q F2(ar) +2.83 E(g)-.37 E F0 -.25(eva)2.72 G(luates to 0,).25 E F1(let)2.5 E F0 +(returns 1; 0 is returned otherwise.)2.5 E F1(local)108 249.6 Q F0([)2.5 +E F2(option)A F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C +(.. | \255 ])-2.5 E -.15(Fo)144 261.6 S 2.56(re).15 G .06(ach ar)-2.56 F +.06(gument, a local v)-.18 F .06(ariable named)-.25 F F2(name)2.92 E F0 +.06(is created, and assigned)2.74 F F2(value)2.56 E F0 5.06(.T).18 G(he) +-5.06 E F2(option)2.56 E F0 .06(can be)2.56 F(an)144 273.6 Q 3.152(yo) +-.15 G 3.152(ft)-3.152 G .652(he options accepted by)-3.152 F F1(declar) +3.152 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F1(local)3.152 E F0 .653 +(is used within a function, it causes the v)3.152 F(ari-)-.25 E(able)144 +285.6 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H +.422(isible scope restricted to that function and its children.).15 F +(If)5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F 1.461 +(of shell options is made local to the function in which)144 297.6 R F1 (local)3.961 E F0 1.462(is in)3.961 F -.2(vo)-.4 G -.1(ke).2 G 1.462 -(d: shell options changed).1 F 1.563(using the)144 237.6 R F2(set)4.063 +(d: shell options changed).1 F 1.563(using the)144 309.6 R F1(set)4.063 E F0 -.2(bu)4.063 G 1.563 (iltin inside the function are restored to their original v).2 F 1.562 -(alues when the function)-.25 F 3.743(returns. W)144 249.6 R 1.243 -(ith no operands,)-.4 F F2(local)3.743 E F0 1.243 +(alues when the function)-.25 F 3.743(returns. W)144 321.6 R 1.243 +(ith no operands,)-.4 F F1(local)3.743 E F0 1.243 (writes a list of local v)3.743 F 1.244 (ariables to the standard output.)-.25 F 1.244(It is an)6.244 F .42 -(error to use)144 261.6 R F2(local)2.92 E F0 .42 +(error to use)144 333.6 R F1(local)2.92 E F0 .42 (when not within a function.)2.92 F .42(The return status is 0 unless) -5.42 F F2(local)2.92 E F0 .42(is used outside a)2.92 F(function, an in) -144 273.6 Q -.25(va)-.4 G(lid).25 E F1(name)2.86 E F0(is supplied, or) -2.68 E F1(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F2(logout) -108 290.4 Q F0(Exit a login shell.)144 290.4 Q F2(map\214le)108 307.2 Q -F0([)2.5 E F2A F1(delim)2.5 E F0 2.5(][)C F2-2.5 E F1(count) -2.5 E F0 2.5(][)C F2-2.5 E F1(origin)2.5 E F0 2.5(][)C F2 --2.5 E F1(count)2.5 E F0 2.5(][)C F2-2.5 E F0 2.5(][)C F2 --2.5 E F1(fd)2.5 E F0 2.5(][)C F2-2.5 E F1(callbac)2.5 E(k)-.2 E -F0 2.5(][)C F2-2.5 E F1(quantum)2.5 E F0 2.5(][)C F1(arr)-2.5 E -(ay)-.15 E F0(])A F2 -.18(re)108 319.2 S(adarray).18 E F0([)2.5 E F2 -A F1(delim)2.5 E F0 2.5(][)C F2-2.5 E F1(count)2.5 E F0 2.5 -(][)C F2-2.5 E F1(origin)2.5 E F0 2.5(][)C F2-2.5 E F1 -(count)2.5 E F0 2.5(][)C F2-2.5 E F0 2.5(][)C F2-2.5 E F1 -(fd)2.5 E F0 2.5(][)C F2-2.5 E F1(callbac)2.5 E(k)-.2 E F0 2.5(][) -C F2-2.5 E F1(quantum)2.5 E F0 2.5(][)C F1(arr)-2.5 E(ay)-.15 E F0 -(])A .35(Read lines from the standard input into the inde)144 331.2 R --.15(xe)-.15 G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F1 +5.42 F F1(local)2.92 E F0 .42(is used outside a)2.92 F(function, an in) +144 345.6 Q -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or) +2.68 E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout) +108 362.4 Q F0(Exit a login shell.)144 362.4 Q F1(map\214le)108 379.2 Q +F0([)2.5 E F1A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count) +2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1 +-2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1 +-2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E +F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E +(ay)-.15 E F0(])A F1 -.18(re)108 391.2 S(adarray).18 E F0([)2.5 E F1 +A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count)2.5 E F0 2.5 +(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1-2.5 E F2 +(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1-2.5 E F2 +(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][) +C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0 +(])A .35(Read lines from the standard input into the inde)144 403.2 R +-.15(xe)-.15 G 2.851(da).15 G .351(rray v)-2.851 F(ariable)-.25 E F2 (arr)2.851 E(ay)-.15 E F0 2.851(,o).32 G 2.851(rf)-2.851 G .351 -(rom \214le descriptor)-2.851 F F1(fd)2.851 E F0 1.249(if the)144 343.2 -R F23.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 +(rom \214le descriptor)-2.851 F F2(fd)2.851 E F0 1.249(if the)144 415.2 +R F13.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 F(ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1 -E F1(arr)3.748 E(ay)-.15 E F0 6.248(.O)C 1.248(ptions, if supplied,) --6.248 F(ha)144 355.2 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F2144 367.2 Q F0(The \214rst character of) -180 367.2 Q F1(delim)2.5 E F0 +E F2(arr)3.748 E(ay)-.15 E F0 6.248(.O)C 1.248(ptions, if supplied,) +-6.248 F(ha)144 427.2 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 439.2 Q F0(The \214rst character of) +180 439.2 Q F2(delim)2.5 E F0 (is used to terminate each input line, rather than ne)2.5 E(wline.)-.25 -E F2144 379.2 Q F0(Cop)180 379.2 Q 2.5(ya)-.1 G 2.5(tm)-2.5 G(ost) --2.5 E F1(count)2.7 E F0 2.5(lines. If)3.18 F F1(count)2.5 E F0 -(is 0, all lines are copied.)2.5 E F2144 391.2 Q F0(Be)180 391.2 Q -(gin assigning to)-.15 E F1(arr)2.83 E(ay)-.15 E F0(at inde)2.82 E(x) --.15 E F1(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E 2.5(xi) --.15 G 2.5(s0)-2.5 G(.)-2.5 E F2144 403.2 Q F0 -(Discard the \214rst)180 403.2 Q F1(count)2.5 E F0(lines read.)2.5 E F2 -144 415.2 Q F0(Remo)180 415.2 Q .3 -.15(ve a t)-.15 H(railing).15 -E F1(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E -(wline\) from each line read.)-.25 E F2144 427.2 Q F0 -(Read lines from \214le descriptor)180 427.2 Q F1(fd)2.5 E F0 -(instead of the standard input.)2.5 E F2144 439.2 Q F0(Ev)180 -439.2 Q(aluate)-.25 E F1(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F1 -(quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F22.5 E F0 -(option speci\214es)2.5 E F1(quantum)2.5 E F0(.).32 E F2144 451.2 -Q F0(Specify the number of lines read between each call to)180 451.2 Q -F1(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 468 Q F22.967 E F0 .467 -(is speci\214ed without)2.967 F F22.967 E F0 2.967(,t)C .467 -(he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F1 +E F1144 451.2 Q F0(Cop)180 451.2 Q 2.5(ya)-.1 G 2.5(tm)-2.5 G(ost) +-2.5 E F2(count)2.7 E F0 2.5(lines. If)3.18 F F2(count)2.5 E F0 +(is 0, all lines are copied.)2.5 E F1144 463.2 Q F0(Be)180 463.2 Q +(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 E(x) +-.15 E F2(origin)2.5 E F0 5(.T).24 G(he def)-5 E(ault inde)-.1 E 2.5(xi) +-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 475.2 Q F0 +(Discard the \214rst)180 475.2 Q F2(count)2.5 E F0(lines read.)2.5 E F1 +144 487.2 Q F0(Remo)180 487.2 Q .3 -.15(ve a t)-.15 H(railing).15 +E F2(delim)2.5 E F0(\(def)2.5 E(ault ne)-.1 E +(wline\) from each line read.)-.25 E F1144 499.2 Q F0 +(Read lines from \214le descriptor)180 499.2 Q F2(fd)2.5 E F0 +(instead of the standard input.)2.5 E F1144 511.2 Q F0(Ev)180 +511.2 Q(aluate)-.25 E F2(callbac)2.7 E(k)-.2 E F0(each time)3.17 E F2 +(quantum)2.5 E F0(lines are read.)2.5 E(The)5 E F12.5 E F0 +(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1144 523.2 +Q F0(Specify the number of lines read between each call to)180 523.2 Q +F2(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 540 Q F12.967 E F0 .467 +(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 +(he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 (callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 -(luated, it is sup-).25 F .262(plied the inde)144 480 R 2.762(xo)-.15 G +(luated, it is sup-).25 F .262(plied the inde)144 552 R 2.762(xo)-.15 G 2.762(ft)-2.762 G .262(he ne)-2.762 F .261(xt array element to be assig\ ned and the line to be assigned to that element)-.15 F .274 -(as additional ar)144 492 R(guments.)-.18 E F1(callbac)5.274 E(k)-.2 E +(as additional ar)144 564 R(guments.)-.18 E F2(callbac)5.274 E(k)-.2 E F0 .274(is e)2.774 F -.25(va)-.25 G .274 (luated after the line is read b).25 F .275 -(ut before the array element is)-.2 F(assigned.)144 504 Q -(If not supplied with an e)144 520.8 Q(xplicit origin,)-.15 E F2 -(map\214le)2.5 E F0(will clear)2.5 E F1(arr)2.5 E(ay)-.15 E F0 -(before assigning to it.)2.5 E F2(map\214le)144 537.6 Q F0 1.906 +(ut before the array element is)-.2 F(assigned.)144 576 Q +(If not supplied with an e)144 592.8 Q(xplicit origin,)-.15 E F1 +(map\214le)2.5 E F0(will clear)2.5 E F2(arr)2.5 E(ay)-.15 E F0 +(before assigning to it.)2.5 E F1(map\214le)144 609.6 Q F0 1.906 (returns successfully unless an in)4.406 F -.25(va)-.4 G 1.905 -(lid option or option ar).25 F 1.905(gument is supplied,)-.18 F F1(arr) -4.405 E(ay)-.15 E F0(is)4.405 E(in)144 549.6 Q -.25(va)-.4 G -(lid or unassignable, or if).25 E F1(arr)2.5 E(ay)-.15 E F0 +(lid option or option ar).25 F 1.905(gument is supplied,)-.18 F F2(arr) +4.405 E(ay)-.15 E F0(is)4.405 E(in)144 621.6 Q -.25(va)-.4 G +(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0 (is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E -F2(popd)108 566.4 Q F0<5bad>2.5 E F2(n)A F0 2.5(][)C(+)-2.5 E F1(n)A F0 -2.5(][)C-2.5 E F1(n)A F0(])A(Remo)144 578.4 Q -.15(ve)-.15 G 2.799 +F1(popd)108 638.4 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 +2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 650.4 Q -.15(ve)-.15 G 2.799 (se).15 G .299(ntries from the directory stack.)-2.799 F -.4(Wi)5.299 G .299(th no ar).4 F .299(guments, remo)-.18 F -.15(ve)-.15 G 2.799(st).15 G .3(he top directory from the)-2.799 F 1.479(stack, and performs a)144 -590.4 R F2(cd)3.979 E F0 1.479(to the ne)3.979 F 3.979(wt)-.25 G 1.479 +662.4 R F1(cd)3.979 E F0 1.479(to the ne)3.979 F 3.979(wt)-.25 G 1.479 (op directory)-3.979 F 6.479(.A)-.65 G -.18(rg)-6.479 G 1.478 (uments, if supplied, ha).18 F 1.778 -.15(ve t)-.2 H 1.478(he follo).15 -F(wing)-.25 E(meanings:)144 602.4 Q F2144 614.4 Q F0 .551 -(Suppresses the normal change of directory when remo)180 614.4 R .551 +F(wing)-.25 E(meanings:)144 674.4 Q F1144 686.4 Q F0 .551 +(Suppresses the normal change of directory when remo)180 686.4 R .551 (ving directories from the stack, so)-.15 F -(that only the stack is manipulated.)180 626.4 Q F2(+)144 638.4 Q F1(n)A -F0(Remo)180 638.4 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F1(n)2.64 E +(that only the stack is manipulated.)180 698.4 Q F1(+)144 710.4 Q F2(n)A +F0(Remo)180 710.4 Q -.15(ve)-.15 G 2.64(st).15 G(he)-2.64 E F2(n)2.64 E F0 .14(th entry counting from the left of the list sho)B .14(wn by)-.25 -F F2(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 -650.4 S 2.5(re).15 G(xample:)-2.65 E/F4 10/Courier@0 SF(popd +0)2.5 E F0 +F F1(dirs)2.64 E F0 2.64(,s)C .14(tarting with zero.)-2.64 F -.15(Fo)180 +722.4 S 2.5(re).15 G(xample:)-2.65 E/F4 10/Courier@0 SF(popd +0)2.5 E F0 (remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he \214rst directory)-2.5 E(,) --.65 E F4(popd +1)2.5 E F0(the second.)2.5 E F2144 662.4 Q F1(n)A F0 -(Remo)180 662.4 Q -.15(ve)-.15 G 3.759(st).15 G(he)-3.759 E F1(n)3.759 E -F0 1.259(th entry counting from the right of the list sho)B 1.26(wn by) --.25 F F2(dirs)3.76 E F0 3.76(,s)C 1.26(tarting with)-3.76 F 2.5 -(zero. F)180 674.4 R(or e)-.15 E(xample:)-.15 E F4(popd -0)2.5 E F0 -(remo)2.5 E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 -E F4(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .644(If the)144 -691.2 R F2(popd)3.144 E F0 .644(command is successful, a)3.144 F F2 -(dirs)3.143 E F0 .643(is performed as well, and the return status is 0.) -3.143 F F2(popd)5.643 E F0 .415(returns f)144 703.2 R .415 -(alse if an in)-.1 F -.25(va)-.4 G .415 -(lid option is encountered, the directory stack is empty).25 F 2.916 -(,an)-.65 G(on-e)-2.916 E .416(xistent direc-)-.15 F -(tory stack entry is speci\214ed, or the directory change f)144 715.2 Q -(ails.)-.1 E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(63)190.395 -E 0 Cg EP +-.65 E F4(popd +1)2.5 E F0(the second.)2.5 E(GNU Bash 4.4)72 768 Q +(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(63)185.545 E 0 Cg EP %%Page: 64 64 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(printf)108 84 Q F0([)2.5 E F1A/F2 10/Times-Italic@0 SF(var)2.5 -E F0(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.437 -(Write the formatted)144 96 R F2(ar)3.937 E(guments)-.37 E F0 1.437 +SF144 84 Q/F2 10/Times-Italic@0 SF(n)A F0(Remo)180 84 Q -.15(ve)-.15 +G 3.759(st).15 G(he)-3.759 E F2(n)3.759 E F0 1.259 +(th entry counting from the right of the list sho)B 1.26(wn by)-.25 F F1 +(dirs)3.76 E F0 3.76(,s)C 1.26(tarting with)-3.76 F 2.5(zero. F)180 96 R +(or e)-.15 E(xample:)-.15 E/F3 10/Courier@0 SF(popd -0)2.5 E F0(remo)2.5 +E -.15(ve)-.15 G 2.5(st).15 G(he last directory)-2.5 E(,)-.65 E F3 +(popd -1)2.5 E F0(the ne)2.5 E(xt to last.)-.15 E .644(If the)144 112.8 +R F1(popd)3.144 E F0 .644(command is successful, a)3.144 F F1(dirs)3.143 +E F0 .643(is performed as well, and the return status is 0.)3.143 F F1 +(popd)5.643 E F0 .415(returns f)144 124.8 R .415(alse if an in)-.1 F +-.25(va)-.4 G .415 +(lid option is encountered, the directory stack is empty).25 F 2.916 +(,an)-.65 G(on-e)-2.916 E .416(xistent direc-)-.15 F +(tory stack entry is speci\214ed, or the directory change f)144 136.8 Q +(ails.)-.1 E F1(printf)108 153.6 Q F0([)2.5 E F1A F2(var)2.5 E F0 +(])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.437 +(Write the formatted)144 165.6 R F2(ar)3.937 E(guments)-.37 E F0 1.437 (to the standard output under the control of the)3.937 F F2(format)3.936 E F0 6.436(.T)C(he)-6.436 E F13.936 E F0 .126 -(option causes the output to be assigned to the v)144 108 R(ariable)-.25 -E F2(var)2.626 E F0 .126(rather than being printed to the standard)2.626 -F(output.)144 120 Q(The)144 144 Q F2(format)3.018 E F0 .517(is a charac\ -ter string which contains three types of objects: plain characters, whi\ -ch are)3.018 F .704(simply copied to standard output, character escape \ -sequences, which are con)144 156 R -.15(ve)-.4 G .704 +(option causes the output to be assigned to the v)144 177.6 R(ariable) +-.25 E F2(var)2.626 E F0 .126(rather than being printed to the standard) +2.626 F(output.)144 189.6 Q(The)144 213.6 Q F2(format)3.018 E F0 .517(i\ +s a character string which contains three types of objects: plain chara\ +cters, which are)3.018 F .704(simply copied to standard output, charact\ +er escape sequences, which are con)144 225.6 R -.15(ve)-.4 G .704 (rted and copied to).15 F .036(the standard output, and format speci\ -\214cations, each of which causes printing of the ne)144 168 R .036 -(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 180 Q(gument)-.37 E F0 +\214cations, each of which causes printing of the ne)144 237.6 R .036 +(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 249.6 Q(gument)-.37 E F0 5.531(.I)C 3.031(na)-5.531 G .531(ddition to the standard)-3.031 F F2 (printf)3.032 E F0 .532(\(1\) format speci\214cations,)B F1(printf)3.032 -E F0 .532(interprets the follo)3.032 F(w-)-.25 E(ing e)144 192 Q -(xtensions:)-.15 E F1(%b)144 204 Q F0(causes)180 204 Q F1(printf)2.596 E -F0 .096(to e)2.596 F .096 +E F0 .532(interprets the follo)3.032 F(w-)-.25 E(ing e)144 261.6 Q +(xtensions:)-.15 E F1(%b)144 273.6 Q F0(causes)180 273.6 Q F1(printf) +2.596 E F0 .096(to e)2.596 F .096 (xpand backslash escape sequences in the corresponding)-.15 F F2(ar) -2.596 E(gument)-.37 E F0 .095(in the)2.595 F(same w)180 216 Q(ay as)-.1 -E F1(echo \255e)2.5 E F0(.)A F1(%q)144 228 Q F0(causes)180 228 Q F1 -(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E +2.596 E(gument)-.37 E F0 .095(in the)2.595 F(same w)180 285.6 Q(ay as) +-.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 297.6 Q F0(causes)180 297.6 Q +F1(printf)2.51 E F0 .01(to output the corresponding)2.51 F F2(ar)2.51 E (gument)-.37 E F0 .01(in a format that can be reused as shell)2.51 F -(input.)180 240 Q F1(%\()144 252 Q F2(datefmt)A F1(\)T)A F0(causes)180 -264 Q F1(printf)4.404 E F0 1.904 +(input.)180 309.6 Q F1(%\()144 321.6 Q F2(datefmt)A F1(\)T)A F0(causes) +180 333.6 Q F1(printf)4.404 E F0 1.904 (to output the date-time string resulting from using)4.404 F F2(datefmt) -4.404 E F0 1.903(as a format)4.404 F .38(string for)180 276 R F2 +4.404 E F0 1.903(as a format)4.404 F .38(string for)180 345.6 R F2 (strftime)2.881 E F0 2.881(\(3\). The)B(corresponding)2.881 E F2(ar) 2.881 E(gument)-.37 E F0 .381(is an inte)2.881 F .381 (ger representing the number)-.15 F .458(of seconds since the epoch.)180 -288 R -1 -.8(Tw o)5.458 H .458(special ar)3.758 F .458(gument v)-.18 F +357.6 R -1 -.8(Tw o)5.458 H .458(special ar)3.758 F .458(gument v)-.18 F .458(alues may be used: -1 represents the)-.25 F .847 -(current time, and -2 represents the time the shell w)180 300 R .847 +(current time, and -2 represents the time the shell w)180 369.6 R .847 (as in)-.1 F -.2(vo)-.4 G -.1(ke).2 G 3.348(d. If).1 F .848(no ar)3.348 -F .848(gument is speci-)-.18 F .355(\214ed, con)180 312 R -.15(ve)-.4 G -.355(rsion beha).15 F -.15(ve)-.2 G 2.855(sa).15 G 2.855(si)-2.855 G +F .848(gument is speci-)-.18 F .355(\214ed, con)180 381.6 R -.15(ve)-.4 +G .355(rsion beha).15 F -.15(ve)-.2 G 2.855(sa).15 G 2.855(si)-2.855 G 2.855(f-)-2.855 G 2.855(1h)-2.855 G .354(ad been gi)-2.855 F -.15(ve) -.25 G 2.854(n. This).15 F .354(is an e)2.854 F .354 -(xception to the usual)-.15 F F1(printf)2.854 E F0(beha)180 324 Q(vior) --.2 E(.)-.55 E(Ar)144 340.8 Q .463(guments to non-string format speci\ -\214ers are treated as C constants, e)-.18 F .464 -(xcept that a leading plus or)-.15 F 1.259(minus sign is allo)144 352.8 +(xception to the usual)-.15 F F1(printf)2.854 E F0(beha)180 393.6 Q +(vior)-.2 E(.)-.55 E(Ar)144 410.4 Q .463(guments to non-string format s\ +peci\214ers are treated as C constants, e)-.18 F .464 +(xcept that a leading plus or)-.15 F 1.259(minus sign is allo)144 422.4 R 1.259 (wed, and if the leading character is a single or double quote, the v) --.25 F 1.258(alue is the)-.25 F(ASCII v)144 364.8 Q(alue of the follo) --.25 E(wing character)-.25 E(.)-.55 E(The)144 381.6 Q F2(format)3.423 E +-.25 F 1.258(alue is the)-.25 F(ASCII v)144 434.4 Q(alue of the follo) +-.25 E(wing character)-.25 E(.)-.55 E(The)144 451.2 Q F2(format)3.423 E F0 .923(is reused as necessary to consume all of the)3.423 F F2(ar)3.423 E(guments)-.37 E F0 5.923(.I)C 3.423(ft)-5.923 G(he)-3.423 E F2(format) -3.423 E F0 .924(requires more)3.424 F F2(ar)144 393.6 Q(guments)-.37 E +3.423 E F0 .924(requires more)3.424 F F2(ar)144 463.2 Q(guments)-.37 E F0 .033(than are supplied, the e)2.534 F .033 (xtra format speci\214cations beha)-.15 F .333 -.15(ve a)-.2 H 2.533(si) .15 G 2.533(faz)-2.533 G .033(ero v)-2.533 F .033(alue or null string,) --.25 F(as appropriate, had been supplied.)144 405.6 Q(The return v)5 E +-.25 F(as appropriate, had been supplied.)144 475.2 Q(The return v)5 E (alue is zero on success, non-zero on f)-.25 E(ailure.)-.1 E F1(pushd) -108 422.4 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C --2.5 E F2(n)A F0(])A F1(pushd)108 434.4 Q F0([)2.5 E F1A F0 -2.5(][)C F2(dir)-2.5 E F0(])A .639(Adds a directory to the top of the d\ -irectory stack, or rotates the stack, making the ne)144 446.4 R 3.14(wt) --.25 G .64(op of the)-3.14 F .417(stack the current w)144 458.4 R .416 +108 492 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C +-2.5 E F2(n)A F0(])A F1(pushd)108 504 Q F0([)2.5 E F1A F0 2.5 +(][)C F2(dir)-2.5 E F0(])A .639(Adds a directory to the top of the dire\ +ctory stack, or rotates the stack, making the ne)144 516 R 3.14(wt)-.25 +G .64(op of the)-3.14 F .417(stack the current w)144 528 R .416 (orking directory)-.1 F 5.416(.W)-.65 G .416(ith no ar)-5.816 F (guments,)-.18 E F1(pushd)2.916 E F0 -.15(ex)2.916 G .416 (changes the top tw).15 F 2.916(od)-.1 G(irectories)-2.916 E 1.625 -(and returns 0, unless the directory stack is empty)144 470.4 R 6.625 -(.A)-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 --.15(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 482.4 Q -F1144 494.4 Q F0 1.811(Suppresses the normal change of directory \ -when rotating or adding directories to the)180 494.4 R -(stack, so that only the stack is manipulated.)180 506.4 Q F1(+)144 -518.4 Q F2(n)A F0 1.267(Rotates the stack so that the)180 518.4 R F2(n) -3.767 E F0 1.268(th directory \(counting from the left of the list sho)B -1.268(wn by)-.25 F F1(dirs)180 530.4 Q F0 2.5(,s)C -(tarting with zero\) is at the top.)-2.5 E F1144 542.4 Q F2(n)A F0 -.92(Rotates the stack so that the)180 542.4 R F2(n)3.42 E F0 .92 +(and returns 0, unless the directory stack is empty)144 540 R 6.625(.A) +-.65 G -.18(rg)-6.625 G 1.625(uments, if supplied, ha).18 F 1.925 -.15 +(ve t)-.2 H 1.625(he follo).15 F(wing)-.25 E(meanings:)144 552 Q F1 +144 564 Q F0 1.811(Suppresses the normal change of directory when\ + rotating or adding directories to the)180 564 R +(stack, so that only the stack is manipulated.)180 576 Q F1(+)144 588 Q +F2(n)A F0 1.267(Rotates the stack so that the)180 588 R F2(n)3.767 E F0 +1.268(th directory \(counting from the left of the list sho)B 1.268 +(wn by)-.25 F F1(dirs)180 600 Q F0 2.5(,s)C +(tarting with zero\) is at the top.)-2.5 E F1144 612 Q F2(n)A F0 .92 +(Rotates the stack so that the)180 612 R F2(n)3.42 E F0 .92 (th directory \(counting from the right of the list sho)B .92(wn by)-.25 -F F1(dirs)180 554.4 Q F0 2.5(,s)C(tarting with zero\) is at the top.) --2.5 E F2(dir)144.35 566.4 Q F0(Adds)180 566.4 Q F2(dir)3.137 E F0 .287 +F F1(dirs)180 624 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 +E F2(dir)144.35 636 Q F0(Adds)180 636 Q F2(dir)3.137 E F0 .287 (to the directory stack at the top, making it the ne)3.517 F 2.788(wc) -.25 G .288(urrent w)-2.788 F .288(orking directory as)-.1 F -(if it had been supplied as the ar)180 578.4 Q(gument to the)-.18 E F1 -(cd)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .489(If the)144 595.2 R F1(pushd) -2.989 E F0 .489(command is successful, a)2.989 F F1(dirs)2.988 E F0 .488 +(if it had been supplied as the ar)180 648 Q(gument to the)-.18 E F1(cd) +2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .489(If the)144 664.8 R F1(pushd)2.989 +E F0 .489(command is successful, a)2.989 F F1(dirs)2.988 E F0 .488 (is performed as well.)2.988 F .488(If the \214rst form is used,)5.488 F -F1(pushd)2.988 E F0 1.039(returns 0 unless the cd to)144 607.2 R F2(dir) +F1(pushd)2.988 E F0 1.039(returns 0 unless the cd to)144 676.8 R F2(dir) 3.889 E F0 -.1(fa)4.269 G 3.539(ils. W).1 F 1.039(ith the second form,) -.4 F F1(pushd)3.54 E F0 1.04(returns 0 unless the directory)3.54 F .847 -(stack is empty)144 619.2 R 3.347(,an)-.65 G(on-e)-3.347 E .847(xistent\ +(stack is empty)144 688.8 R 3.347(,an)-.65 G(on-e)-3.347 E .847(xistent\ directory stack element is speci\214ed, or the directory change to the) --.15 F(speci\214ed ne)144 631.2 Q 2.5(wc)-.25 G(urrent directory f)-2.5 -E(ails.)-.1 E F1(pwd)108 648 Q F0([)2.5 E F1(\255LP)A F0(])A .844 -(Print the absolute pathname of the current w)144 660 R .845 -(orking directory)-.1 F 5.845(.T)-.65 G .845 -(he pathname printed contains no)-5.845 F .182(symbolic links if the)144 -672 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 .181 -(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1(set) -2.681 E F0 -.2(bu)2.681 G .181(iltin command is).2 F 3.263(enabled. If) -144 684 R(the)3.263 E F13.263 E F0 .763 -(option is used, the pathname printed may contain symbolic links.)3.263 -F .764(The return)5.764 F 1.36(status is 0 unless an error occurs while\ - reading the name of the current directory or an in)144 696 R -.25(va) --.4 G(lid).25 E(option is supplied.)144 708 Q(GNU Bash 4.4)72 768 Q -(2015 October 11)141.235 E(64)190.395 E 0 Cg EP +-.15 F(speci\214ed ne)144 700.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5 +E(ails.)-.1 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G +(mber 16).15 E(64)185.545 E 0 Cg EP %%Page: 65 65 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF -.18(re)108 84 S(ad).18 E F0([)3.816 E F1(\255ers)A F0 3.816(][)C F1 --3.816 E/F2 10/Times-Italic@0 SF(aname)3.816 E F0 3.816(][)C F1 --3.816 E F2(delim)3.816 E F0 3.816(][)C F1-3.816 E F2(te) -3.816 E(xt)-.2 E F0 3.816(][)C F1-3.816 E F2(nc)3.816 E(har)-.15 E -(s)-.1 E F0 3.817(][)C F1-3.817 E F2(nc)3.817 E(har)-.15 E(s)-.1 E -F0 3.817(][)C F1-3.817 E F2(pr)3.817 E(ompt)-.45 E F0 3.817(][)C -F1-3.817 E F2(timeout)3.817 E F0 3.817(][)C F1-3.817 E F2 -(fd)3.817 E F0(])A([)108 96 Q F2(name)A F0(...])2.5 E .516(One line is \ -read from the standard input, or from the \214le descriptor)144 108 R F2 -(fd)3.016 E F0 .516(supplied as an ar)3.016 F .516(gument to)-.18 F(the) -144 120 Q F12.538 E F0 .038(option, and the \214rst w)2.538 F .038 +SF(pwd)108 84 Q F0([)2.5 E F1(\255LP)A F0(])A .844 +(Print the absolute pathname of the current w)144 96 R .845 +(orking directory)-.1 F 5.845(.T)-.65 G .845 +(he pathname printed contains no)-5.845 F .182(symbolic links if the)144 +108 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 .181 +(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1(set) +2.681 E F0 -.2(bu)2.681 G .181(iltin command is).2 F 3.263(enabled. If) +144 120 R(the)3.263 E F13.263 E F0 .763 +(option is used, the pathname printed may contain symbolic links.)3.263 +F .764(The return)5.764 F 1.36(status is 0 unless an error occurs while\ + reading the name of the current directory or an in)144 132 R -.25(va) +-.4 G(lid).25 E(option is supplied.)144 144 Q F1 -.18(re)108 160.8 S(ad) +.18 E F0([)3.816 E F1(\255ers)A F0 3.816(][)C F1-3.816 E/F2 10 +/Times-Italic@0 SF(aname)3.816 E F0 3.816(][)C F1-3.816 E F2 +(delim)3.816 E F0 3.816(][)C F1-3.816 E F2(te)3.816 E(xt)-.2 E F0 +3.816(][)C F1-3.816 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.817 +(][)C F1-3.817 E F2(nc)3.817 E(har)-.15 E(s)-.1 E F0 3.817(][)C F1 +-3.817 E F2(pr)3.817 E(ompt)-.45 E F0 3.817(][)C F1-3.817 E +F2(timeout)3.817 E F0 3.817(][)C F1-3.817 E F2(fd)3.817 E F0(])A +([)108 172.8 Q F2(name)A F0(...])2.5 E .516(One line is read from the s\ +tandard input, or from the \214le descriptor)144 184.8 R F2(fd)3.016 E +F0 .516(supplied as an ar)3.016 F .516(gument to)-.18 F(the)144 196.8 Q +F12.538 E F0 .038(option, and the \214rst w)2.538 F .038 (ord is assigned to the \214rst)-.1 F F2(name)2.539 E F0 2.539(,t).18 G .039(he second w)-2.539 F .039(ord to the second)-.1 F F2(name)2.539 E -F0(,).18 E .42(and so on, with lefto)144 132 R -.15(ve)-.15 G 2.92(rw) +F0(,).18 E .42(and so on, with lefto)144 208.8 R -.15(ve)-.15 G 2.92(rw) .15 G .42(ords and their interv)-3.02 F .42 (ening separators assigned to the last)-.15 F F2(name)2.92 E F0 5.42(.I) -.18 G 2.92(ft)-5.42 G(here)-2.92 E .54(are fe)144 144 R .54(wer w)-.25 F -.541(ords read from the input stream than names, the remaining names ar\ -e assigned empty)-.1 F -.25(va)144 156 S 3.357(lues. The).25 F .857 +.18 G 2.92(ft)-5.42 G(here)-2.92 E .54(are fe)144 220.8 R .54(wer w)-.25 +F .541(ords read from the input stream than names, the remaining names \ +are assigned empty)-.1 F -.25(va)144 232.8 S 3.357(lues. The).25 F .857 (characters in)3.357 F/F3 9/Times-Bold@0 SF(IFS)3.357 E F0 .857 (are used to split the line into w)3.107 F .857 -(ords using the same rules the shell)-.1 F .753(uses for e)144 168 R +(ords using the same rules the shell)-.1 F .753(uses for e)144 244.8 R .753(xpansion \(described abo)-.15 F 1.053 -.15(ve u)-.15 H(nder).15 E F1 -.75(Wo)3.253 G .753(rd Splitting).75 F F0 3.253(\). The)B .753 (backslash character \()3.253 F F1(\\)A F0 3.253(\)m)C .754(ay be)-3.253 -F .076(used to remo)144 180 R .376 -.15(ve a)-.15 H .376 -.15(ny s).15 H -.075(pecial meaning for the ne).15 F .075 +F .076(used to remo)144 256.8 R .376 -.15(ve a)-.15 H .376 -.15(ny s).15 +H .075(pecial meaning for the ne).15 F .075 (xt character read and for line continuation.)-.15 F(Options,)5.075 E -(if supplied, ha)144 192 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 204 Q F2(aname)2.5 E F0 1.049(The w) -180 216 R 1.049(ords are assigned to sequential indices of the array v) --.1 F(ariable)-.25 E F2(aname)3.55 E F0 3.55(,s).18 G 1.05 -(tarting at 0.)-3.55 F F2(aname)180.33 228 Q F0(is unset before an)2.68 -E 2.5(yn)-.15 G .5 -.25(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E -F2(name)2.5 E F0(ar)2.5 E(guments are ignored.)-.18 E F1144 240 Q -F2(delim)2.5 E F0(The \214rst character of)180 252 Q F2(delim)2.5 E F0 +(if supplied, ha)144 268.8 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 280.8 Q F2(aname)2.5 E F0 1.049 +(The w)180 292.8 R 1.049 +(ords are assigned to sequential indices of the array v)-.1 F(ariable) +-.25 E F2(aname)3.55 E F0 3.55(,s).18 G 1.05(tarting at 0.)-3.55 F F2 +(aname)180.33 304.8 Q F0(is unset before an)2.68 E 2.5(yn)-.15 G .5 -.25 +(ew va)-2.5 H(lues are assigned.).25 E(Other)5 E F2(name)2.5 E F0(ar)2.5 +E(guments are ignored.)-.18 E F1144 316.8 Q F2(delim)2.5 E F0 +(The \214rst character of)180 328.8 Q F2(delim)2.5 E F0 (is used to terminate the input line, rather than ne)2.5 E(wline.)-.25 E -F1144 264 Q F0 .373 -(If the standard input is coming from a terminal,)180 264 R F1 -.18(re) -2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.872 E F0(abo)2.622 E --.15(ve)-.15 G 2.872(\)i).15 G 2.872(su)-2.872 G(sed)-2.872 E .218 -(to obtain the line.)180 276 R .218(Readline uses the current \(or def) -5.218 F .218(ault, if line editing w)-.1 F .218(as not pre)-.1 F -(viously)-.25 E(acti)180 288 Q -.15(ve)-.25 G 2.5(\)e).15 G -(diting settings.)-2.5 E F1144 300 Q F2(te)2.5 E(xt)-.2 E F0(If) -180 300 Q F1 -.18(re)2.716 G(adline).18 E F0 .216 -(is being used to read the line,)2.716 F F2(te)2.716 E(xt)-.2 E F0 .216 -(is placed into the editing b)2.716 F(uf)-.2 E .215(fer before edit-) --.25 F(ing be)180 312 Q(gins.)-.15 E F1144 324 Q F2(nc)2.5 E(har) --.15 E(s)-.1 E F1 -.18(re)180 336 S(ad).18 E F0 1.394 -(returns after reading)3.894 F F2(nc)3.894 E(har)-.15 E(s)-.1 E F0 1.395 -(characters rather than w)3.894 F 1.395(aiting for a complete line of) --.1 F(input, b)180 348 Q(ut honors a delimiter if fe)-.2 E(wer than)-.25 -E F2(nc)2.5 E(har)-.15 E(s)-.1 E F0 -(characters are read before the delimiter)2.5 E(.)-.55 E F1144 360 -Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 372 S(ad).18 E F0 1.269 -(returns after reading e)3.77 F(xactly)-.15 E F2(nc)3.769 E(har)-.15 E -(s)-.1 E F0 1.269(characters rather than w)3.769 F 1.269 -(aiting for a complete)-.1 F .274 -(line of input, unless EOF is encountered or)180 384 R F1 -.18(re)2.775 -G(ad).18 E F0 .275(times out.)2.775 F .275(Delimiter characters encoun-) -5.275 F 1.003 -(tered in the input are not treated specially and do not cause)180 396 R -F1 -.18(re)3.502 G(ad).18 E F0 1.002(to return until)3.502 F F2(nc)3.502 -E(har)-.15 E(s)-.1 E F0 .608(characters are read.)180 408 R .608 +F1144 340.8 Q F0 .373 +(If the standard input is coming from a terminal,)180 340.8 R F1 -.18 +(re)2.873 G(adline).18 E F0(\(see)2.873 E F3(READLINE)2.872 E F0(abo) +2.622 E -.15(ve)-.15 G 2.872(\)i).15 G 2.872(su)-2.872 G(sed)-2.872 E +.218(to obtain the line.)180 352.8 R .218 +(Readline uses the current \(or def)5.218 F .218 +(ault, if line editing w)-.1 F .218(as not pre)-.1 F(viously)-.25 E +(acti)180 364.8 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings.)-2.5 E +F1144 376.8 Q F2(te)2.5 E(xt)-.2 E F0(If)180 376.8 Q F1 -.18(re) +2.716 G(adline).18 E F0 .216(is being used to read the line,)2.716 F F2 +(te)2.716 E(xt)-.2 E F0 .216(is placed into the editing b)2.716 F(uf)-.2 +E .215(fer before edit-)-.25 F(ing be)180 388.8 Q(gins.)-.15 E F1 +144 400.8 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 412.8 S(ad).18 +E F0 1.394(returns after reading)3.894 F F2(nc)3.894 E(har)-.15 E(s)-.1 +E F0 1.395(characters rather than w)3.894 F 1.395 +(aiting for a complete line of)-.1 F(input, b)180 424.8 Q +(ut honors a delimiter if fe)-.2 E(wer than)-.25 E F2(nc)2.5 E(har)-.15 +E(s)-.1 E F0(characters are read before the delimiter)2.5 E(.)-.55 E F1 +144 436.8 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 448.8 S +(ad).18 E F0 1.269(returns after reading e)3.77 F(xactly)-.15 E F2(nc) +3.769 E(har)-.15 E(s)-.1 E F0 1.269(characters rather than w)3.769 F +1.269(aiting for a complete)-.1 F .274 +(line of input, unless EOF is encountered or)180 460.8 R F1 -.18(re) +2.775 G(ad).18 E F0 .275(times out.)2.775 F .275 +(Delimiter characters encoun-)5.275 F 1.003 +(tered in the input are not treated specially and do not cause)180 472.8 +R F1 -.18(re)3.502 G(ad).18 E F0 1.002(to return until)3.502 F F2(nc) +3.502 E(har)-.15 E(s)-.1 E F0 .608(characters are read.)180 484.8 R .608 (The result is not split on the characters in)5.608 F F1(IFS)3.108 E F0 -3.108(;t)C .609(he intent is that the)-3.108 F -.25(va)180 420 S .67 +3.108(;t)C .609(he intent is that the)-3.108 F -.25(va)180 496.8 S .67 (riable is assigned e).25 F .669 (xactly the characters read \(with the e)-.15 F .669 -(xception of backslash; see the)-.15 F F1180 432 Q F0(option belo) -2.5 E(w\).)-.25 E F1144 444 Q F2(pr)2.5 E(ompt)-.45 E F0(Display) -180 456 Q F2(pr)3.66 E(ompt)-.45 E F0 1.161(on standard error)3.66 F -3.661(,w)-.4 G 1.161(ithout a trailing ne)-3.661 F 1.161 -(wline, before attempting to read)-.25 F(an)180 468 Q 2.5(yi)-.15 G 2.5 -(nput. The)-2.5 F +(xception of backslash; see the)-.15 F F1180 508.8 Q F0 +(option belo)2.5 E(w\).)-.25 E F1144 520.8 Q F2(pr)2.5 E(ompt)-.45 +E F0(Display)180 532.8 Q F2(pr)3.66 E(ompt)-.45 E F0 1.161 +(on standard error)3.66 F 3.661(,w)-.4 G 1.161(ithout a trailing ne) +-3.661 F 1.161(wline, before attempting to read)-.25 F(an)180 544.8 Q +2.5(yi)-.15 G 2.5(nput. The)-2.5 F (prompt is displayed only if input is coming from a terminal.)2.5 E F1 -144 480 Q F0 .544(Backslash does not act as an escape character) -180 480 R 5.543(.T)-.55 G .543(he backslash is considered to be part of) --5.543 F(the line.)180 492 Q(In particular)5 E 2.5(,ab)-.4 G -(ackslash-ne)-2.5 E(wline pair may not be used as a line continuation.) --.25 E F1144 504 Q F0(Silent mode.)180 504 Q +144 556.8 Q F0 .544(Backslash does not act as an escape character) +180 556.8 R 5.543(.T)-.55 G .543 +(he backslash is considered to be part of)-5.543 F(the line.)180 568.8 Q +(In particular)5 E 2.5(,ab)-.4 G(ackslash-ne)-2.5 E +(wline pair may not be used as a line continuation.)-.25 E F1144 +580.8 Q F0(Silent mode.)180 580.8 Q (If input is coming from a terminal, characters are not echoed.)5 E F1 -144 516 Q F2(timeout)2.5 E F0(Cause)180 528 Q F1 -.18(re)2.928 G -(ad).18 E F0 .428(to time out and return f)2.928 F .428 +144 592.8 Q F2(timeout)2.5 E F0(Cause)180 604.8 Q F1 -.18(re)2.928 +G(ad).18 E F0 .428(to time out and return f)2.928 F .428 (ailure if a complete line of input \(or a speci\214ed num-)-.1 F .561 -(ber of characters\) is not read within)180 540 R F2(timeout)3.061 E F0 -(seconds.)3.061 E F2(timeout)5.561 E F0 .56(may be a decimal number) -3.061 F(with a fractional portion follo)180 552 Q +(ber of characters\) is not read within)180 616.8 R F2(timeout)3.061 E +F0(seconds.)3.061 E F2(timeout)5.561 E F0 .56(may be a decimal number) +3.061 F(with a fractional portion follo)180 628.8 Q (wing the decimal point.)-.25 E(This option is only ef)5 E(fecti)-.25 E .3 -.15(ve i)-.25 H(f).15 E F1 -.18(re)2.5 G(ad).18 E F0 .506(is readin\ g input from a terminal, pipe, or other special \214le; it has no ef)180 -564 R .505(fect when reading)-.25 F .589(from re)180 576 R .589 +640.8 R .505(fect when reading)-.25 F .589(from re)180 652.8 R .589 (gular \214les.)-.15 F(If)5.589 E F1 -.18(re)3.089 G(ad).18 E F0 .589 (times out,)3.089 F F1 -.18(re)3.089 G(ad).18 E F0(sa)3.089 E -.15(ve) -.2 G 3.089(sa).15 G .889 -.15(ny p)-3.089 H .59 -(artial input read into the speci\214ed).15 F -.25(va)180 588 S(riable) -.25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 .27 -(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately)2.77 -F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 G -(ata.)-2.77 E 1.12(The e)180 600 R 1.12(xit status is 0 if input is a) --.15 F -.25(va)-.2 G 1.12(ilable on the speci\214ed \214le descriptor) -.25 F 3.62(,n)-.4 G 1.12(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 -612 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e) -.15 E(xceeded.)-.15 E F1144 624 Q F2(fd)2.5 E F0 -(Read input from \214le descriptor)180 624 Q F2(fd)2.5 E F0(.)A .477 -(If no)144 640.8 R F2(names)3.337 E F0 .477 -(are supplied, the line read is assigned to the v)3.247 F(ariable)-.25 E -F3(REPL)2.976 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A F0 .476(The e)4.976 -F .476(xit status is zero,)-.15 F .772 -(unless end-of-\214le is encountered,)144 652.8 R F1 -.18(re)3.272 G(ad) +(artial input read into the speci\214ed).15 F -.25(va)180 664.8 S +(riable).25 E F2(name)2.77 E F0 5.27(.I)C(f)-5.27 E F2(timeout)2.77 E F0 +.27(is 0,)2.77 F F1 -.18(re)2.77 G(ad).18 E F0 .27(returns immediately) +2.77 F 2.77(,w)-.65 G .27(ithout trying to read an)-2.77 F 2.77(yd)-.15 +G(ata.)-2.77 E 1.12(The e)180 676.8 R 1.12 +(xit status is 0 if input is a)-.15 F -.25(va)-.2 G 1.12 +(ilable on the speci\214ed \214le descriptor).25 F 3.62(,n)-.4 G 1.12 +(on-zero other)-3.62 F(-)-.2 E 2.5(wise. The)180 688.8 R -.15(ex)2.5 G +(it status is greater than 128 if the timeout is e).15 E(xceeded.)-.15 E +F1144 700.8 Q F2(fd)2.5 E F0(Read input from \214le descriptor)180 +700.8 Q F2(fd)2.5 E F0(.)A .477(If no)144 717.6 R F2(names)3.337 E F0 +.477(are supplied, the line read is assigned to the v)3.247 F(ariable) +-.25 E F3(REPL)2.976 E(Y)-.828 E/F4 9/Times-Roman@0 SF(.)A F0 .476 +(The e)4.976 F .476(xit status is zero,)-.15 F .772 +(unless end-of-\214le is encountered,)144 729.6 R F1 -.18(re)3.272 G(ad) .18 E F0 .773 (times out \(in which case the status is greater than 128\), a)3.272 F --.25(va)144 664.8 S 2.004 -(riable assignment error \(such as assigning to a readonly v).25 F 2.004 -(ariable\) occurs, or an in)-.25 F -.25(va)-.4 G 2.004(lid \214le).25 F -(descriptor is supplied as the ar)144 676.8 Q(gument to)-.18 E F1 -2.5 E F0(.)A F1 -.18(re)108 693.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A -F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(wor)A -(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 705.6 R -.15(ve)-.25 G -(n).15 E F2(names)3.27 E F0 .77(are mark)3.27 F .77(ed readonly; the v) --.1 F .77(alues of these)-.25 F F2(names)3.63 E F0 .77 -(may not be changed by subse-)3.54 F 1.097(quent assignment.)144 717.6 R -1.097(If the)6.097 F F13.597 E F0 1.097 -(option is supplied, the functions corresponding to the)3.597 F F2 -(names)3.596 E F0 1.096(are so)3.596 F(mark)144 729.6 Q 4.902(ed. The) --.1 F F14.902 E F0 2.403(option restricts the v)4.903 F 2.403 -(ariables to inde)-.25 F -.15(xe)-.15 G 4.903(da).15 G 2.403(rrays; the) --4.903 F F14.903 E F0 2.403(option restricts the)4.903 F -(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(65)190.395 E 0 Cg EP +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(65)185.545 E 0 Cg EP %%Page: 66 66 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E -.25(va)144 84 S -1.413(riables to associati).25 F 1.712 -.15(ve a)-.25 H 3.912(rrays. If) -.15 F 1.412(both options are supplied,)3.912 F/F1 10/Times-Bold@0 SF -3.912 E F0(tak)3.912 E 1.412(es precedence.)-.1 F 1.412(If no) -6.412 F/F2 10/Times-Italic@0 SF(name)4.272 E F0(ar)144 96 Q .853 -(guments are gi)-.18 F -.15(ve)-.25 G .853(n, or if the).15 F F1 -3.353 E F0 .853 -(option is supplied, a list of all readonly names is printed.)3.353 F -(The)5.854 E .559(other options may be used to restrict the output to a\ - subset of the set of readonly names.)144 108 R(The)5.559 E F1 -3.058 E F0 .2(option causes output to be displayed in a format that may\ - be reused as input.)144 120 R .201(If a v)5.201 F .201(ariable name is) --.25 F(follo)144 132 Q .134(wed by =)-.25 F F2(wor)A(d)-.37 E F0 2.634 -(,t)C .133(he v)-2.634 F .133(alue of the v)-.25 F .133 -(ariable is set to)-.25 F F2(wor)2.633 E(d)-.37 E F0 5.133(.T)C .133 -(he return status is 0 unless an in)-5.133 F -.25(va)-.4 G(lid).25 E .26 -(option is encountered, one of the)144 144 R F2(names)3.12 E F0 .26 -(is not a v)3.03 F .26(alid shell v)-.25 F .26(ariable name, or)-.25 F -F12.76 E F0 .26(is supplied with a)2.76 F F2(name)144.36 156 Q F0 -(that is not a function.)2.68 E F1 -.18(re)108 172.8 S(tur).18 E(n)-.15 -E F0([)2.5 E F2(n)A F0(])A .021(Causes a function to stop e)144 184.8 R +2.004(riable assignment error \(such as assigning to a readonly v).25 F +2.004(ariable\) occurs, or an in)-.25 F -.25(va)-.4 G 2.004(lid \214le) +.25 F(descriptor is supplied as the ar)144 96 Q(gument to)-.18 E/F1 10 +/Times-Bold@0 SF2.5 E F0(.)A F1 -.18(re)108 112.8 S(adonly).18 E +F0([)2.5 E F1(\255aAf)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C/F2 10 +/Times-Italic@0 SF(name)-2.5 E F0([=)A F2(wor)A(d)-.37 E F0 2.5(].)C +(..])-2.5 E .77(The gi)144 124.8 R -.15(ve)-.25 G(n).15 E F2(names)3.27 +E F0 .77(are mark)3.27 F .77(ed readonly; the v)-.1 F .77 +(alues of these)-.25 F F2(names)3.63 E F0 .77 +(may not be changed by subse-)3.54 F 1.097(quent assignment.)144 136.8 R +1.097(If the)6.097 F F13.597 E F0 1.097 +(option is supplied, the functions corresponding to the)3.597 F F2 +(names)3.596 E F0 1.096(are so)3.596 F(mark)144 148.8 Q 3.334(ed. The) +-.1 F F13.334 E F0 .834(option restricts the v)3.334 F .834 +(ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) +-3.334 F F13.334 E F0 .834(option restricts the v)3.334 F(ari-) +-.25 E .777(ables to associati)144 160.8 R 1.077 -.15(ve a)-.25 H 3.277 +(rrays. If).15 F .777(both options are supplied,)3.277 F F13.277 E +F0(tak)3.277 E .776(es precedence.)-.1 F .776(If no)5.776 F F2(name) +3.636 E F0(ar)3.456 E(gu-)-.18 E .521(ments are gi)144 172.8 R -.15(ve) +-.25 G .521(n, or if the).15 F F13.021 E F0 .521 +(option is supplied, a list of all readonly names is printed.)3.021 F +.522(The other)5.521 F .295(options may be used to restrict the output \ +to a subset of the set of readonly names.)144 184.8 R(The)5.295 E F1 +2.795 E F0(option)2.795 E .786 +(causes output to be displayed in a format that may be reused as input.) +144 196.8 R .786(If a v)5.786 F .786(ariable name is fol-)-.25 F(lo)144 +208.8 Q .718(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) +-3.218 F .718(alue of the v)-.25 F .718(ariable is set to)-.25 F F2(wor) +3.218 E(d)-.37 E F0 5.718(.T)C .718(he return status is 0 unless an in) +-5.718 F -.25(va)-.4 G(lid).25 E .26(option is encountered, one of the) +144 220.8 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) +-.25 F .26(ariable name, or)-.25 F F12.76 E F0 .26 +(is supplied with a)2.76 F F2(name)144.36 232.8 Q F0 +(that is not a function.)2.68 E F1 -.18(re)108 249.6 S(tur).18 E(n)-.15 +E F0([)2.5 E F2(n)A F0(])A .021(Causes a function to stop e)144 261.6 R -.15(xe)-.15 G .021(cuting and return the v).15 F .021 (alue speci\214ed by)-.25 F F2(n)2.88 E F0 .02(to its caller)2.76 F 5.02 (.I)-.55 G(f)-5.02 E F2(n)2.88 E F0 .02(is omitted,)2.76 F .596 -(the return status is that of the last command e)144 196.8 R -.15(xe) +(the return status is that of the last command e)144 273.6 R -.15(xe) -.15 G .597(cuted in the function body).15 F 5.597(.I)-.65 G(f)-5.597 E F1 -.18(re)3.097 G(tur).18 E(n)-.15 E F0 .597(is e)3.097 F -.15(xe)-.15 -G(cuted).15 E 1.239(by a trap handler)144 208.8 R 3.738(,t)-.4 G 1.238 +G(cuted).15 E 1.239(by a trap handler)144 285.6 R 3.738(,t)-.4 G 1.238 (he last command used to determine the status is the last command e) -3.738 F -.15(xe)-.15 G(cuted).15 E 1.066(before the trap handler)144 -220.8 R 6.067(.i)-.55 G(f)-6.067 E F1 -.18(re)3.567 G(tur).18 E(n)-.15 E +297.6 R 6.067(.i)-.55 G(f)-6.067 E F1 -.18(re)3.567 G(tur).18 E(n)-.15 E F0 1.067(is e)3.567 F -.15(xe)-.15 G 1.067(cuted during a).15 F F1(DEB) 3.567 E(UG)-.1 E F0 1.067(trap, the last command used to)3.567 F .39 -(determine the status is the last command e)144 232.8 R -.15(xe)-.15 G +(determine the status is the last command e)144 309.6 R -.15(xe)-.15 G .389(cuted by the trap handler before).15 F F1 -.18(re)2.889 G(tur).18 E (n)-.15 E F0 -.1(wa)2.889 G 2.889(si).1 G -1.9 -.4(nv o)-2.889 H -.1(ke) -.4 G(d.).1 E(If)144 244.8 Q F1 -.18(re)2.583 G(tur).18 E(n)-.15 E F0 +.4 G(d.).1 E(If)144 321.6 Q F1 -.18(re)2.583 G(tur).18 E(n)-.15 E F0 .084(is used outside a function, b)2.583 F .084(ut during e)-.2 F -.15 (xe)-.15 G .084(cution of a script by the).15 F F1(.)2.584 E F0(\()5.084 E F1(sour)A(ce)-.18 E F0 2.584(\)c)C .084(ommand, it)-2.584 F .589 -(causes the shell to stop e)144 256.8 R -.15(xe)-.15 G .589 +(causes the shell to stop e)144 333.6 R -.15(xe)-.15 G .589 (cuting that script and return either).15 F F2(n)3.448 E F0 .588 (or the e)3.328 F .588(xit status of the last com-)-.15 F .325(mand e) -144 268.8 R -.15(xe)-.15 G .325(cuted within the script as the e).15 F +144 345.6 R -.15(xe)-.15 G .325(cuted within the script as the e).15 F .326(xit status of the script.)-.15 F(If)5.326 E F2(n)2.826 E F0 .326 (is supplied, the return v)2.826 F .326(alue is)-.25 F .445 -(its least signi\214cant 8 bits.)144 280.8 R .444 +(its least signi\214cant 8 bits.)144 357.6 R .444 (The return status is non-zero if)5.445 F F1 -.18(re)2.944 G(tur).18 E (n)-.15 E F0 .444(is supplied a non-numeric ar)2.944 F(gu-)-.18 E .381 -(ment, or is used outside a function and not during e)144 292.8 R -.15 +(ment, or is used outside a function and not during e)144 369.6 R -.15 (xe)-.15 G .381(cution of a script by).15 F F1(.)2.881 E F0(or)3.714 E F1(sour)2.881 E(ce)-.18 E F0 5.381(.A)C .681 -.15(ny c)-5.381 H(om-).15 -E .75(mand associated with the)144 304.8 R F1(RETURN)3.249 E F0 .749 +E .75(mand associated with the)144 381.6 R F1(RETURN)3.249 E F0 .749 (trap is e)3.249 F -.15(xe)-.15 G .749(cuted before e).15 F -.15(xe)-.15 -G .749(cution resumes after the function).15 F(or script.)144 316.8 Q F1 -(set)108 333.6 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C +G .749(cution resumes after the function).15 F(or script.)144 393.6 Q F1 +(set)108 410.4 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E -F0(...])2.5 E F1(set)108 345.6 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 +F0(...])2.5 E F1(set)108 422.4 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1(+o)-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E -(g)-.37 E F0(...])2.5 E -.4(Wi)144 357.6 S .835 +(g)-.37 E F0(...])2.5 E -.4(Wi)144 434.4 S .835 (thout options, the name and v).4 F .835(alue of each shell v)-.25 F .836(ariable are displayed in a format that can be)-.25 F .784 -(reused as input for setting or resetting the currently-set v)144 369.6 +(reused as input for setting or resetting the currently-set v)144 446.4 R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .783 -(riables cannot be).25 F 2.911(reset. In)144 381.6 R F2(posix)2.911 E F0 +(riables cannot be).25 F 2.911(reset. In)144 458.4 R F2(posix)2.911 E F0 .412(mode, only shell v)2.912 F .412(ariables are listed.)-.25 F .412 (The output is sorted according to the current)5.412 F 3.531 -(locale. When)144 393.6 R 1.031(options are speci\214ed, the)3.531 F +(locale. When)144 470.4 R 1.031(options are speci\214ed, the)3.531 F 3.531(ys)-.15 G 1.031(et or unset shell attrib)-3.531 F 3.53(utes. An) -.2 F 3.53(ya)-.15 G -.18(rg)-3.53 G 1.03(uments remaining).18 F 1.623 -(after option processing are treated as v)144 405.6 R 1.624 +(after option processing are treated as v)144 482.4 R 1.624 (alues for the positional parameters and are assigned, in)-.25 F(order) -144 417.6 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A +144 494.4 Q 2.5(,t)-.4 G(o)-2.5 E F1($1)2.5 E F0(,)A F1($2)2.5 E F0(,)A F1 2.5(... $)2.5 F F2(n)A F0 5(.O)C(ptions, if speci\214ed, ha)-5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 429.6 Q -F0 1.378(Each v)184 429.6 R 1.377 +-.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 506.4 Q +F0 1.378(Each v)184 506.4 R 1.377 (ariable or function that is created or modi\214ed is gi)-.25 F -.15(ve) -.25 G 3.877(nt).15 G 1.377(he e)-3.877 F 1.377(xport attrib)-.15 F -1.377(ute and)-.2 F(mark)184 441.6 Q(ed for e)-.1 E(xport to the en)-.15 -E(vironment of subsequent commands.)-.4 E F1144 453.6 Q F0 .131 -(Report the status of terminated background jobs immediately)184 453.6 R +1.377(ute and)-.2 F(mark)184 518.4 Q(ed for e)-.1 E(xport to the en)-.15 +E(vironment of subsequent commands.)-.4 E F1144 530.4 Q F0 .131 +(Report the status of terminated background jobs immediately)184 530.4 R 2.632(,r)-.65 G .132(ather than before the ne)-2.632 F(xt)-.15 E -(primary prompt.)184 465.6 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) --.25 H(nly when job control is enabled.).15 E F1144 477.6 Q F0 -.088(Exit immediately if a)184 477.6 R F2(pipeline)2.588 E F0 .087 +(primary prompt.)184 542.4 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) +-.25 H(nly when job control is enabled.).15 E F1144 554.4 Q F0 +.088(Exit immediately if a)184 554.4 R F2(pipeline)2.588 E F0 .087 (\(which may consist of a single)2.588 F F2 .087(simple command)2.587 F -F0 .087(\), a)B F2(list)2.587 E F0 2.587(,o)C(r)-2.587 E(a)184 489.6 Q +F0 .087(\), a)B F2(list)2.587 E F0 2.587(,o)C(r)-2.587 E(a)184 566.4 Q F2 1.52(compound command)4.02 F F0(\(see)4.021 E/F3 9/Times-Bold@0 SF 1.521(SHELL GRAMMAR)4.021 F F0(abo)3.771 E -.15(ve)-.15 G 1.521(\), e) .15 F 1.521(xits with a non-zero status.)-.15 F .08 -(The shell does not e)184 501.6 R .079(xit if the command that f)-.15 F -.079(ails is part of the command list immediately)-.1 F(follo)184 513.6 +(The shell does not e)184 578.4 R .079(xit if the command that f)-.15 F +.079(ails is part of the command list immediately)-.1 F(follo)184 590.4 Q 1.654(wing a)-.25 F F1(while)4.154 E F0(or)4.154 E F1(until)4.154 E F0 -.1(ke)4.154 G(yw)-.05 E 1.655(ord, part of the test follo)-.1 F 1.655 (wing the)-.25 F F1(if)4.155 E F0(or)4.155 E F1(elif)4.155 E F0(reserv) -4.155 E(ed)-.15 E -.1(wo)184 525.6 S .582(rds, part of an).1 F 3.082(yc) +4.155 E(ed)-.15 E -.1(wo)184 602.4 S .582(rds, part of an).1 F 3.082(yc) -.15 G .582(ommand e)-3.082 F -.15(xe)-.15 G .581(cuted in a).15 F F1 (&&)3.081 E F0(or)3.081 E F1(||)3.081 E F0 .581(list e)3.081 F .581 -(xcept the command follo)-.15 F(wing)-.25 E .917(the \214nal)184 537.6 R +(xcept the command follo)-.15 F(wing)-.25 E .917(the \214nal)184 614.4 R F1(&&)3.417 E F0(or)3.417 E F1(||)3.417 E F0 3.417(,a)C 1.217 -.15(ny c) -3.417 H .918(ommand in a pipeline b).15 F .918 (ut the last, or if the command')-.2 F 3.418(sr)-.55 G(eturn)-3.418 E --.25(va)184 549.6 S .661(lue is being in).25 F -.15(ve)-.4 G .661 +-.25(va)184 626.4 S .661(lue is being in).25 F -.15(ve)-.4 G .661 (rted with).15 F F1(!)3.161 E F0 5.661(.I)C 3.161(fac)-5.661 G .66 (ompound command other than a subshell returns a)-3.161 F 1.112 -(non-zero status because a command f)184 561.6 R 1.112(ailed while)-.1 F +(non-zero status because a command f)184 638.4 R 1.112(ailed while)-.1 F F13.612 E F0 -.1(wa)3.612 G 3.612(sb).1 G 1.113 -(eing ignored, the shell does)-3.612 F .178(not e)184 573.6 R 2.678 +(eing ignored, the shell does)-3.612 F .178(not e)184 650.4 R 2.678 (xit. A)-.15 F .178(trap on)2.678 F F1(ERR)2.678 E F0 2.678(,i)C 2.678 (fs)-2.678 G .178(et, is e)-2.678 F -.15(xe)-.15 G .178 (cuted before the shell e).15 F 2.677(xits. This)-.15 F .177 -(option applies to)2.677 F .617(the shell en)184 585.6 R .617 +(option applies to)2.677 F .617(the shell en)184 662.4 R .617 (vironment and each subshell en)-.4 F .617(vironment separately \(see) --.4 F F3 .618(COMMAND EXE-)3.118 F .643(CUTION ENVIR)184 597.6 R(ONMENT) +-.4 F F3 .618(COMMAND EXE-)3.118 F .643(CUTION ENVIR)184 674.4 R(ONMENT) -.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 (\), and may cause subshells to e).15 F .643(xit before e)-.15 F -.15 -(xe)-.15 G .642(cuting all).15 F(the commands in the subshell.)184 609.6 -Q 2.042(If a compound command or shell function e)184 627.6 R -.15(xe) +(xe)-.15 G .642(cuting all).15 F(the commands in the subshell.)184 686.4 +Q 2.042(If a compound command or shell function e)184 704.4 R -.15(xe) -.15 G 2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F14.542 E F0 2.043(is being)4.543 F 1.436(ignored, none of the commands e)184 -639.6 R -.15(xe)-.15 G 1.435 +716.4 R -.15(xe)-.15 G 1.435 (cuted within the compound command or function).15 F .193 -(body will be af)184 651.6 R .193(fected by the)-.25 F F12.693 E +(body will be af)184 728.4 R .193(fected by the)-.25 F F12.693 E F0 .193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1 2.693 E F0 .194(is set and a command returns a f)2.693 F(ailure) --.1 E 3.39(status. If)184 663.6 R 3.39(ac)3.39 G .89 -(ompound command or shell function sets)-3.39 F F13.39 E F0 .89 -(while e)3.39 F -.15(xe)-.15 G .89(cuting in a conte).15 F(xt)-.15 E -(where)184 675.6 Q F13.153 E F0 .653 -(is ignored, that setting will not ha)3.153 F .954 -.15(ve a)-.2 H .954 --.15(ny e).15 H -.25(ff).15 G .654(ect until the compound command).25 F -(or the command containing the function call completes.)184 687.6 Q F1 -144 699.6 Q F0(Disable pathname e)184 699.6 Q(xpansion.)-.15 E F1 -144 711.6 Q F0 2.239(Remember the location of commands as the)184 -711.6 R 4.738(ya)-.15 G 2.238(re look)-4.738 F 2.238(ed up for e)-.1 F --.15(xe)-.15 G 4.738(cution. This).15 F(is)4.738 E(enabled by def)184 -723.6 Q(ault.)-.1 E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(66) -190.395 E 0 Cg EP +-.1 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 +E(66)185.545 E 0 Cg EP %%Page: 67 67 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q F0 .513(All ar)184 84 R .514 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 3.39(status. If) +184 84 R 3.39(ac)3.39 G .89(ompound command or shell function sets)-3.39 +F/F1 10/Times-Bold@0 SF3.39 E F0 .89(while e)3.39 F -.15(xe)-.15 G +.89(cuting in a conte).15 F(xt)-.15 E(where)184 96 Q F13.153 E F0 +.653(is ignored, that setting will not ha)3.153 F .954 -.15(ve a)-.2 H +.954 -.15(ny e).15 H -.25(ff).15 G .654(ect until the compound command) +.25 F(or the command containing the function call completes.)184 108 Q +F1144 120 Q F0(Disable pathname e)184 120 Q(xpansion.)-.15 E F1 +144 132 Q F0 2.239(Remember the location of commands as the)184 +132 R 4.738(ya)-.15 G 2.238(re look)-4.738 F 2.238(ed up for e)-.1 F +-.15(xe)-.15 G 4.738(cution. This).15 F(is)4.738 E(enabled by def)184 +144 Q(ault.)-.1 E F1144 156 Q F0 .513(All ar)184 156 R .514 (guments in the form of assignment statements are placed in the en)-.18 F .514(vironment for a)-.4 F -(command, not just those that precede the command name.)184 96 Q F1 -144 108 Q F0 .149(Monitor mode.)184 108 R .149 +(command, not just those that precede the command name.)184 168 Q F1 +144 180 Q F0 .149(Monitor mode.)184 180 R .149 (Job control is enabled.)5.149 F .148(This option is on by def)5.149 F .148(ault for interacti)-.1 F .448 -.15(ve s)-.25 H(hells).15 E .65 -(on systems that support it \(see)184 120 R/F2 9/Times-Bold@0 SF .651 +(on systems that support it \(see)184 192 R/F2 9/Times-Bold@0 SF .651 (JOB CONTR)3.151 F(OL)-.27 E F0(abo)2.901 E -.15(ve)-.15 G 3.151 (\). All).15 F .651(processes run in a separate)3.151 F .679 -(process group.)184 132 R .678(When a background job completes, the she\ -ll prints a line containing its)5.679 F -.15(ex)184 144 S(it status.).15 -E F1144 156 Q F0 .652(Read commands b)184 156 R .652(ut do not e) +(process group.)184 204 R .678(When a background job completes, the she\ +ll prints a line containing its)5.679 F -.15(ex)184 216 S(it status.).15 +E F1144 228 Q F0 .652(Read commands b)184 228 R .652(ut do not e) -.2 F -.15(xe)-.15 G .652(cute them.).15 F .653 (This may be used to check a shell script for)5.652 F(syntax errors.)184 -168 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 E -F1144 180 Q/F3 10/Times-Italic@0 SF(option\255name)2.5 E F0(The) -184 192 Q F3(option\255name)2.5 E F0(can be one of the follo)2.5 E -(wing:)-.25 E F1(allexport)184 204 Q F0(Same as)224 216 Q F12.5 E -F0(.)A F1(braceexpand)184 228 Q F0(Same as)224 240 Q F12.5 E F0(.) -A F1(emacs)184 252 Q F0 .089 -(Use an emacs-style command line editing interf)224 252 R 2.589 +240 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 E +F1144 252 Q/F3 10/Times-Italic@0 SF(option\255name)2.5 E F0(The) +184 264 Q F3(option\255name)2.5 E F0(can be one of the follo)2.5 E +(wing:)-.25 E F1(allexport)184 276 Q F0(Same as)224 288 Q F12.5 E +F0(.)A F1(braceexpand)184 300 Q F0(Same as)224 312 Q F12.5 E F0(.) +A F1(emacs)184 324 Q F0 .089 +(Use an emacs-style command line editing interf)224 324 R 2.589 (ace. This)-.1 F .089(is enabled by def)2.589 F(ault)-.1 E .95 -(when the shell is interacti)224 264 R -.15(ve)-.25 G 3.45(,u).15 G .95 +(when the shell is interacti)224 336 R -.15(ve)-.25 G 3.45(,u).15 G .95 (nless the shell is started with the)-3.45 F F1(\255\255noediting)3.45 E -F0 2.5(option. This)224 276 R(also af)2.5 E(fects the editing interf) +F0 2.5(option. This)224 348 R(also af)2.5 E(fects the editing interf) -.25 E(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1(err) -184 288 Q(exit)-.18 E F0(Same as)224 288 Q F12.5 E F0(.)A F1 -(errtrace)184 300 Q F0(Same as)224 300 Q F12.5 E F0(.)A F1 -(functrace)184 312 Q F0(Same as)224 324 Q F12.5 E F0(.)A F1 -(hashall)184 336 Q F0(Same as)224 336 Q F12.5 E F0(.)A F1 -(histexpand)184 348 Q F0(Same as)224 360 Q F12.5 E F0(.)A F1 -(history)184 372 Q F0 .587(Enable command history)224 372 R 3.087(,a) +184 360 Q(exit)-.18 E F0(Same as)224 360 Q F12.5 E F0(.)A F1 +(errtrace)184 372 Q F0(Same as)224 372 Q F12.5 E F0(.)A F1 +(functrace)184 384 Q F0(Same as)224 396 Q F12.5 E F0(.)A F1 +(hashall)184 408 Q F0(Same as)224 408 Q F12.5 E F0(.)A F1 +(histexpand)184 420 Q F0(Same as)224 432 Q F12.5 E F0(.)A F1 +(history)184 444 Q F0 .587(Enable command history)224 444 R 3.087(,a) -.65 G 3.087(sd)-3.087 G .587(escribed abo)-3.087 F .887 -.15(ve u)-.15 H(nder).15 E F2(HIST)3.087 E(OR)-.162 E(Y)-.315 E/F4 9/Times-Roman@0 SF -(.)A F0 .587(This option is)5.087 F(on by def)224 384 Q +(.)A F0 .587(This option is)5.087 F(on by def)224 456 Q (ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 -396 Q(eeof)-.18 E F0 1.656(The ef)224 408 R 1.656 +468 Q(eeof)-.18 E F0 1.656(The ef)224 480 R 1.656 (fect is as if the shell command)-.25 F/F5 10/Courier@0 SF(IGNOREEOF=10) 4.157 E F0 1.657(had been e)4.157 F -.15(xe)-.15 G(cuted).15 E(\(see)224 -420 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).) -.15 E F1 -.1(ke)184 432 S(yw).1 E(ord)-.1 E F0(Same as)224 444 Q F1 -2.5 E F0(.)A F1(monitor)184 456 Q F0(Same as)224 456 Q F12.5 -E F0(.)A F1(noclob)184 468 Q(ber)-.1 E F0(Same as)224 480 Q F12.5 -E F0(.)A F1(noexec)184 492 Q F0(Same as)224 492 Q F12.5 E F0(.)A -F1(noglob)184 504 Q F0(Same as)224 504 Q F12.5 E F0(.)A F1(nolog) -184 516 Q F0(Currently ignored.)224 516 Q F1(notify)184 528 Q F0 -(Same as)224 528 Q F12.5 E F0(.)A F1(nounset)184 540 Q F0(Same as) -224 540 Q F12.5 E F0(.)A F1(onecmd)184 552 Q F0(Same as)224 552 Q -F12.5 E F0(.)A F1(ph)184 564 Q(ysical)-.15 E F0(Same as)224 564 Q -F12.5 E F0(.)A F1(pipefail)184 576 Q F0 1.03(If set, the return v) -224 576 R 1.029(alue of a pipeline is the v)-.25 F 1.029 -(alue of the last \(rightmost\) com-)-.25 F 1.136(mand to e)224 588 R +492 Q F1(Shell V)2.5 E(ariables)-.92 E F0(abo)2.5 E -.15(ve)-.15 G(\).) +.15 E F1 -.1(ke)184 504 S(yw).1 E(ord)-.1 E F0(Same as)224 516 Q F1 +2.5 E F0(.)A F1(monitor)184 528 Q F0(Same as)224 528 Q F12.5 +E F0(.)A F1(noclob)184 540 Q(ber)-.1 E F0(Same as)224 552 Q F12.5 +E F0(.)A F1(noexec)184 564 Q F0(Same as)224 564 Q F12.5 E F0(.)A +F1(noglob)184 576 Q F0(Same as)224 576 Q F12.5 E F0(.)A F1(nolog) +184 588 Q F0(Currently ignored.)224 588 Q F1(notify)184 600 Q F0 +(Same as)224 600 Q F12.5 E F0(.)A F1(nounset)184 612 Q F0(Same as) +224 612 Q F12.5 E F0(.)A F1(onecmd)184 624 Q F0(Same as)224 624 Q +F12.5 E F0(.)A F1(ph)184 636 Q(ysical)-.15 E F0(Same as)224 636 Q +F12.5 E F0(.)A F1(pipefail)184 648 Q F0 1.03(If set, the return v) +224 648 R 1.029(alue of a pipeline is the v)-.25 F 1.029 +(alue of the last \(rightmost\) com-)-.25 F 1.136(mand to e)224 660 R 1.136 (xit with a non-zero status, or zero if all commands in the pipeline) --.15 F -.15(ex)224 600 S(it successfully).15 E 5(.T)-.65 G -(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 612 Q F0 -2.091(Change the beha)224 612 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 +-.15 F -.15(ex)224 672 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 684 Q F0 +2.091(Change the beha)224 684 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 2.091(where the def)4.591 F 2.091(ault operation dif)-.1 F 2.091 (fers from the)-.25 F 1.212(POSIX standard to match the standard \()224 -624 R F3 1.212(posix mode)B F0 3.712(\). See)B F2 1.212(SEE ALSO)3.712 F +696 R F3 1.212(posix mode)B F0 3.712(\). See)B F2 1.212(SEE ALSO)3.712 F F0(belo)3.463 E(w)-.25 E 2.307 -(for a reference to a document that details ho)224 636 R 4.806(wp)-.25 G +(for a reference to a document that details ho)224 708 R 4.806(wp)-.25 G 2.306(osix mode af)-4.806 F 2.306(fects bash')-.25 F(s)-.55 E(beha)224 -648 Q(vior)-.2 E(.)-.55 E F1(pri)184 660 Q(vileged)-.1 E F0(Same as)224 -672 Q F12.5 E F0(.)A F1 -.1(ve)184 684 S(rbose).1 E F0(Same as)224 -684 Q F12.5 E F0(.)A F1(vi)184 696 Q F0 1.465 -(Use a vi-style command line editing interf)224 696 R 3.966(ace. This) --.1 F 1.466(also af)3.966 F 1.466(fects the editing)-.25 F(interf)224 -708 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A -(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(67)190.395 E 0 Cg EP +720 Q(vior)-.2 E(.)-.55 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15 +(ve)-.15 G(mber 16).15 E(67)185.545 E 0 Cg EP %%Page: 68 68 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(xtrace)184 84 Q F0(Same as)224 84 Q F12.5 E F0(.)A(If)184 102 Q -F13.053 E F0 .553(is supplied with no)3.053 F/F2 10/Times-Italic@0 -SF(option\255name)3.053 E F0 3.053(,t)C .553(he v)-3.053 F .552 +SF(pri)184 84 Q(vileged)-.1 E F0(Same as)224 96 Q F12.5 E F0(.)A +F1 -.1(ve)184 108 S(rbose).1 E F0(Same as)224 108 Q F12.5 E F0(.)A +F1(vi)184 120 Q F0 1.465(Use a vi-style command line editing interf)224 +120 R 3.966(ace. This)-.1 F 1.466(also af)3.966 F 1.466 +(fects the editing)-.25 F(interf)224 132 Q(ace used for)-.1 E F1 -.18 +(re)2.5 G(ad \255e).18 E F0(.)A F1(xtrace)184 144 Q F0(Same as)224 144 Q +F12.5 E F0(.)A(If)184 162 Q F13.053 E F0 .553 +(is supplied with no)3.053 F/F2 10/Times-Italic@0 SF(option\255name) +3.053 E F0 3.053(,t)C .553(he v)-3.053 F .552 (alues of the current options are printed.)-.25 F(If)5.552 E F1(+o)184 -114 Q F0 1.071(is supplied with no)3.571 F F2(option\255name)3.571 E F0 +174 Q F0 1.071(is supplied with no)3.571 F F2(option\255name)3.571 E F0 3.571(,as)C 1.071(eries of)-3.571 F F1(set)3.572 E F0 1.072 (commands to recreate the current)3.572 F -(option settings is displayed on the standard output.)184 126 Q F1 -144 138 Q F0 -.45(Tu)184 138 S 1.072(rn on).45 F F2(privile)4.822 E -.1 +(option settings is displayed on the standard output.)184 186 Q F1 +144 198 Q F0 -.45(Tu)184 198 S 1.072(rn on).45 F F2(privile)4.822 E -.1 (ge)-.4 G(d).1 E F0 3.572(mode. In)4.342 F 1.072(this mode, the)3.572 F /F3 9/Times-Bold@0 SF($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV) -.27 E F0 1.071(\214les are not pro-)3.322 F 1.5 -(cessed, shell functions are not inherited from the en)184 150 R 1.501 +(cessed, shell functions are not inherited from the en)184 210 R 1.501 (vironment, and the)-.4 F F3(SHELLOPTS)4.001 E/F4 9/Times-Roman@0 SF(,)A -F3 -.27(BA)184 162 S(SHOPTS).27 E F4(,)A F3(CDP)2.775 E -.855(AT)-.666 G +F3 -.27(BA)184 222 S(SHOPTS).27 E F4(,)A F3(CDP)2.775 E -.855(AT)-.666 G (H).855 E F4(,)A F0(and)2.775 E F3(GLOBIGNORE)3.025 E F0 -.25(va)2.775 G .524(riables, if the).25 F 3.024(ya)-.15 G .524(ppear in the en)-3.024 F -(vironment,)-.4 E .379(are ignored.)184 174 R .379 +(vironment,)-.4 E .379(are ignored.)184 234 R .379 (If the shell is started with the ef)5.379 F(fecti)-.25 E .679 -.15 (ve u)-.25 H .38(ser \(group\) id not equal to the real).15 F .462 -(user \(group\) id, and the)184 186 R F12.961 E F0 .461 +(user \(group\) id, and the)184 246 R F12.961 E F0 .461 (option is not supplied, these actions are tak)2.961 F .461 -(en and the ef)-.1 F(fec-)-.25 E(ti)184 198 Q .694 -.15(ve u)-.25 H .394 +(en and the ef)-.1 F(fec-)-.25 E(ti)184 258 Q .694 -.15(ve u)-.25 H .394 (ser id is set to the real user id.).15 F .395(If the)5.395 F F1 2.895 E F0 .395(option is supplied at startup, the ef)2.895 F(fecti)-.25 -E -.15(ve)-.25 G .387(user id is not reset.)184 210 R -.45(Tu)5.387 G +E -.15(ve)-.25 G .387(user id is not reset.)184 270 R -.45(Tu)5.387 G .387(rning this option of).45 F 2.886(fc)-.25 G .386(auses the ef)-2.886 F(fecti)-.25 E .686 -.15(ve u)-.25 H .386(ser and group ids to be).15 F -(set to the real user and group ids.)184 222 Q F1144 234 Q F0 -(Exit after reading and e)184 234 Q -.15(xe)-.15 G(cuting one command.) -.15 E F1144 246 Q F0 -.35(Tr)184 246 S .043(eat unset v).35 F .044 +(set to the real user and group ids.)184 282 Q F1144 294 Q F0 +(Exit after reading and e)184 294 Q -.15(xe)-.15 G(cuting one command.) +.15 E F1144 306 Q F0 -.35(Tr)184 306 S .043(eat unset v).35 F .044 (ariables and parameters other than the special parameters "@" and "*" \ -as an)-.25 F .183(error when performing parameter e)184 258 R 2.683 +as an)-.25 F .183(error when performing parameter e)184 318 R 2.683 (xpansion. If)-.15 F -.15(ex)2.683 G .182 (pansion is attempted on an unset v).15 F(ari-)-.25 E .746 -(able or parameter)184 270 R 3.246(,t)-.4 G .746 +(able or parameter)184 330 R 3.246(,t)-.4 G .746 (he shell prints an error message, and, if not interacti)-3.246 F -.15 (ve)-.25 G 3.246(,e).15 G .746(xits with a)-3.396 F(non-zero status.)184 -282 Q F1144 294 Q F0(Print shell input lines as the)184 294 Q 2.5 -(ya)-.15 G(re read.)-2.5 E F1144 306 Q F0 .315(After e)184 306 R +342 Q F1144 354 Q F0(Print shell input lines as the)184 354 Q 2.5 +(ya)-.15 G(re read.)-2.5 E F1144 366 Q F0 .315(After e)184 366 R .315(xpanding each)-.15 F F2 .315(simple command)2.815 F F0(,)A F1 -.25 (fo)2.815 G(r).25 E F0(command,)2.815 E F1(case)2.815 E F0(command,) 2.815 E F1(select)2.815 E F0(command,)2.815 E 1.235(or arithmetic)184 -318 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F +378 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F 1.236(xpanded v)-.15 F 1.236(alue of)-.25 F F3(PS4)3.736 E F4(,)A F0 -(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 330 Q +(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 390 Q (xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1 -144 342 Q F0 2.579(The shell performs brace e)184 342 R 2.578 +144 402 Q F0 2.579(The shell performs brace e)184 402 R 2.578 (xpansion \(see)-.15 F F1 2.578(Brace Expansion)5.078 F F0(abo)5.078 E --.15(ve)-.15 G 5.078(\). This).15 F 2.578(is on by)5.078 F(def)184 354 Q -(ault.)-.1 E F1144 366 Q F0 .213(If set,)184 366 R F1(bash)2.713 E +-.15(ve)-.15 G 5.078(\). This).15 F 2.578(is on by)5.078 F(def)184 414 Q +(ault.)-.1 E F1144 426 Q F0 .213(If set,)184 426 R F1(bash)2.713 E F0 .213(does not o)2.713 F -.15(ve)-.15 G .214(rwrite an e).15 F .214 (xisting \214le with the)-.15 F F1(>)2.714 E F0(,)A F1(>&)2.714 E F0 2.714(,a)C(nd)-2.714 E F1(<>)2.714 E F0 .214(redirection opera-)2.714 F -3.054(tors. This)184 378 R .553(may be o)3.053 F -.15(ve)-.15 G .553 +3.054(tors. This)184 438 R .553(may be o)3.053 F -.15(ve)-.15 G .553 (rridden when creating output \214les by using the redirection opera-) -.15 F(tor)184 390 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 -144 402 Q F0 .103(If set, an)184 402 R 2.603(yt)-.15 G .103 +.15 F(tor)184 450 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 462 Q F0 .103(If set, an)184 462 R 2.603(yt)-.15 G .103 (rap on)-2.603 F F1(ERR)2.603 E F0 .104 (is inherited by shell functions, command substitutions, and com-)2.603 -F .839(mands e)184 414 R -.15(xe)-.15 G .839(cuted in a subshell en).15 +F .839(mands e)184 474 R -.15(xe)-.15 G .839(cuted in a subshell en).15 F 3.339(vironment. The)-.4 F F1(ERR)3.338 E F0 .838 -(trap is normally not inherited in)3.338 F(such cases.)184 426 Q F1 -144 438 Q F0(Enable)184 438 Q F1(!)3.031 E F0 .531 +(trap is normally not inherited in)3.338 F(such cases.)184 486 Q F1 +144 498 Q F0(Enable)184 498 Q F1(!)3.031 E F0 .531 (style history substitution.)5.531 F .531(This option is on by def)5.531 -F .532(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 450 Q -.15 -(ve)-.25 G(.).15 E F1144 462 Q F0 .96 -(If set, the shell does not resolv)184 462 R 3.459(es)-.15 G .959 +F .532(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 510 Q -.15 +(ve)-.25 G(.).15 E F1144 522 Q F0 .96 +(If set, the shell does not resolv)184 522 R 3.459(es)-.15 G .959 (ymbolic links when e)-3.459 F -.15(xe)-.15 G .959 (cuting commands such as).15 F F1(cd)3.459 E F0 2.821 -(that change the current w)184 474 R 2.822(orking directory)-.1 F 7.822 +(that change the current w)184 534 R 2.822(orking directory)-.1 F 7.822 (.I)-.65 G 5.322(tu)-7.822 G 2.822(ses the ph)-5.322 F 2.822 -(ysical directory structure)-.05 F 2.686(instead. By)184 486 R(def)2.686 +(ysical directory structure)-.05 F 2.686(instead. By)184 546 R(def)2.686 E(ault,)-.1 E F1(bash)2.686 E F0(follo)2.686 E .186 (ws the logical chain of directories when performing com-)-.25 F -(mands which change the current directory)184 498 Q(.)-.65 E F1144 -510 Q F0 .89(If set, an)184 510 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1 +(mands which change the current directory)184 558 Q(.)-.65 E F1144 +570 Q F0 .89(If set, an)184 570 R 3.39(yt)-.15 G .89(raps on)-3.39 F F1 (DEB)3.39 E(UG)-.1 E F0(and)3.39 E F1(RETURN)3.39 E F0 .89 (are inherited by shell functions, command)3.39 F 1.932 -(substitutions, and commands e)184 522 R -.15(xe)-.15 G 1.932 +(substitutions, and commands e)184 582 R -.15(xe)-.15 G 1.932 (cuted in a subshell en).15 F 4.432(vironment. The)-.4 F F1(DEB)4.432 E -(UG)-.1 E F0(and)4.432 E F1(RETURN)184 534 Q F0 -(traps are normally not inherited in such cases.)2.5 E F1144 546 Q -F0 .4(If no ar)184 546 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401 +(UG)-.1 E F0(and)4.432 E F1(RETURN)184 594 Q F0 +(traps are normally not inherited in such cases.)2.5 E F1144 606 Q +F0 .4(If no ar)184 606 R .401(guments follo)-.18 F 2.901(wt)-.25 G .401 (his option, then the positional parameters are unset.)-2.901 F -(Otherwise,)5.401 E(the positional parameters are set to the)184 558 Q +(Otherwise,)5.401 E(the positional parameters are set to the)184 618 Q F2(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G (ome of them be)-2.5 E(gin with a)-.15 E F12.5 E F0(.)A F1144 -570 Q F0 1.945(Signal the end of options, cause all remaining)184 570 R +630 Q F0 1.945(Signal the end of options, cause all remaining)184 630 R F2(ar)4.444 E(g)-.37 E F0 4.444(st)C 4.444(ob)-4.444 G 4.444(ea)-4.444 G -1.944(ssigned to the positional)-4.444 F 3.445(parameters. The)184 582 R +1.944(ssigned to the positional)-4.444 F 3.445(parameters. The)184 642 R F13.445 E F0(and)3.445 E F13.445 E F0 .945 (options are turned of)3.445 F 3.445(f. If)-.25 F .946(there are no) 3.445 F F2(ar)3.446 E(g)-.37 E F0 .946(s, the positional)B -(parameters remain unchanged.)184 594 Q .425(The options are of)144 -610.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 +(parameters remain unchanged.)184 654 Q .425(The options are of)144 +670.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 (ault unless otherwise noted.)-.1 F .425 (Using + rather than \255 causes these options)5.425 F .177 -(to be turned of)144 622.8 R 2.677(f. The)-.25 F .178 +(to be turned of)144 682.8 R 2.677(f. The)-.25 F .178 (options can also be speci\214ed as ar)2.678 F .178(guments to an in) -.18 F -.2(vo)-.4 G .178(cation of the shell.).2 F(The)5.178 E .066 -(current set of options may be found in)144 634.8 R F1<24ad>2.566 E F0 +(current set of options may be found in)144 694.8 R F1<24ad>2.566 E F0 5.066(.T)C .066(he return status is al)-5.066 F -.1(wa)-.1 G .066 (ys true unless an in).1 F -.25(va)-.4 G .066(lid option).25 F -(is encountered.)144 646.8 Q F1(shift)108 663.6 Q F0([)2.5 E F2(n)A F0 -(])A .428(The positional parameters from)144 675.6 R F2(n)2.928 E F0 -.429(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.429 G -.429(rameters represented by the num-).15 F(bers)144 687.6 Q F1($#)2.583 -E F0(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0A F2(n)A F0 .083 -(+1 are unset.)B F2(n)5.443 E F0 .083(must be a non-ne)2.823 F -.05(ga) --.15 G(ti).05 E .382 -.15(ve n)-.25 H .082(umber less than or equal to) -.15 F F1($#)2.582 E F0 5.082(.I)C(f)-5.082 E F2(n)2.942 E F0 .06 -(is 0, no parameters are changed.)144 699.6 R(If)5.06 E F2(n)2.92 E F0 -.06(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F -(If)5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56 -(,t)C(he)-2.56 E .144(positional parameters are not changed.)144 711.6 R -.144(The return status is greater than zero if)5.144 F F2(n)3.003 E F0 -.143(is greater than)2.883 F F1($#)2.643 E F0 -(or less than zero; otherwise 0.)144 723.6 Q(GNU Bash 4.4)72 768 Q -(2015 October 11)141.235 E(68)190.395 E 0 Cg EP +(is encountered.)144 706.8 Q(GNU Bash 4.4)72 768 Q(2015 No)136.385 E +-.15(ve)-.15 G(mber 16).15 E(68)185.545 E 0 Cg EP %%Page: 69 69 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(shopt)108 84 Q F0([)2.5 E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 -2.5(][)C/F2 10/Times-Italic@0 SF(optname)-2.5 E F0(...])2.5 E -.8(To)144 -96 S .639(ggle the v).8 F .639 +SF(shift)108 84 Q F0([)2.5 E/F2 10/Times-Italic@0 SF(n)A F0(])A .428 +(The positional parameters from)144 96 R F2(n)2.928 E F0 .429 +(+1 ... are renamed to)B F1 .429($1 ....)2.929 F F0 -.15(Pa)5.429 G .429 +(rameters represented by the num-).15 F(bers)144 108 Q F1($#)2.583 E F0 +(do)2.583 E .083(wn to)-.25 F F1($#)2.583 E F0A F2(n)A F0 .083 +(+1 are unset.)B F2(n)5.443 E F0 .083(must be a non-ne)2.823 F -.05(ga) +-.15 G(ti).05 E .382 -.15(ve n)-.25 H .082(umber less than or equal to) +.15 F F1($#)2.582 E F0 5.082(.I)C(f)-5.082 E F2(n)2.942 E F0 .06 +(is 0, no parameters are changed.)144 120 R(If)5.06 E F2(n)2.92 E F0 .06 +(is not gi)2.8 F -.15(ve)-.25 G .06(n, it is assumed to be 1.).15 F(If) +5.06 E F2(n)2.92 E F0 .06(is greater than)2.8 F F1($#)2.56 E F0 2.56(,t) +C(he)-2.56 E .144(positional parameters are not changed.)144 132 R .144 +(The return status is greater than zero if)5.144 F F2(n)3.003 E F0 .143 +(is greater than)2.883 F F1($#)2.643 E F0 +(or less than zero; otherwise 0.)144 144 Q F1(shopt)108 160.8 Q F0([)2.5 +E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(optname)-2.5 E +F0(...])2.5 E -.8(To)144 172.8 S .639(ggle the v).8 F .639 (alues of settings controlling optional shell beha)-.25 F(vior)-.2 E 5.639(.T)-.55 G .64(he settings can be either those)-5.639 F .375 -(listed belo)144 108 R 1.675 -.65(w, o)-.25 H 1.175 -.4(r, i).65 H 2.875 -(ft).4 G(he)-2.875 E F12.875 E F0 .375(option is used, those a) -2.875 F -.25(va)-.2 G .375(ilable with the).25 F F12.875 E F0 .374 -(option to the)2.875 F F1(set)2.874 E F0 -.2(bu)2.874 G .374(iltin com-) -.2 F 3.325(mand. W)144 120 R .825(ith no options, or with the)-.4 F F1 -3.325 E F0 .826 +(listed belo)144 184.8 R 1.675 -.65(w, o)-.25 H 1.175 -.4(r, i).65 H +2.875(ft).4 G(he)-2.875 E F12.875 E F0 .375 +(option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 +F F12.875 E F0 .374(option to the)2.875 F F1(set)2.874 E F0 -.2 +(bu)2.874 G .374(iltin com-).2 F 3.325(mand. W)144 196.8 R .825 +(ith no options, or with the)-.4 F F13.325 E F0 .826 (option, a list of all settable options is displayed, with an)3.325 F -.945(indication of whether or not each is set.)144 132 R(The)5.945 E F1 -3.445 E F0 .945(option causes output to be displayed in a form) -3.445 F(that may be reused as input.)144 144 Q(Other options ha)5 E .3 --.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 156 Q -F0(Enable \(set\) each)180 156 Q F2(optname)2.5 E F0(.)A F1144 168 -Q F0(Disable \(unset\) each)180 168 Q F2(optname)2.5 E F0(.)A F1 -144 180 Q F0 .003(Suppresses normal output \(quiet mode\); the return s\ -tatus indicates whether the)180 180 R F2(optname)2.504 E F0(is)2.504 E -.256(set or unset.)180 192 R .256(If multiple)5.256 F F2(optname)2.756 E -F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G -(ith)-2.756 E F12.756 E F0 2.755(,t)C .255 -(he return status is zero if)-2.755 F(all)180 204 Q F2(optnames)2.5 E F0 -(are enabled; non-zero otherwise.)2.5 E F1144 216 Q F0 -(Restricts the v)180 216 Q(alues of)-.25 E F2(optname)2.5 E F0 +.945(indication of whether or not each is set.)144 208.8 R(The)5.945 E +F13.445 E F0 .945(option causes output to be displayed in a form) +3.445 F(that may be reused as input.)144 220.8 Q(Other options ha)5 E .3 +-.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 232.8 Q +F0(Enable \(set\) each)180 232.8 Q F2(optname)2.5 E F0(.)A F1144 +244.8 Q F0(Disable \(unset\) each)180 244.8 Q F2(optname)2.5 E F0(.)A F1 +144 256.8 Q F0 .003(Suppresses normal output \(quiet mode\); the \ +return status indicates whether the)180 256.8 R F2(optname)2.504 E F0 +(is)2.504 E .256(set or unset.)180 268.8 R .256(If multiple)5.256 F F2 +(optname)2.756 E F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G +2.756(nw).15 G(ith)-2.756 E F12.756 E F0 2.755(,t)C .255 +(he return status is zero if)-2.755 F(all)180 280.8 Q F2(optnames)2.5 E +F0(are enabled; non-zero otherwise.)2.5 E F1144 292.8 Q F0 +(Restricts the v)180 292.8 Q(alues of)-.25 E F2(optname)2.5 E F0 (to be those de\214ned for the)2.5 E F12.5 E F0(option to the)2.5 -E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 232.8 R F1 +E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 309.6 R F1 3.124 E F0(or)3.124 E F13.124 E F0 .624(is used with no) 3.124 F F2(optname)3.124 E F0(ar)3.124 E(guments,)-.18 E F1(shopt)3.124 E F0(sho)3.124 E .624(ws only those options which are)-.25 F 2.234 -(set or unset, respecti)144 244.8 R -.15(ve)-.25 G(ly).15 E 7.234(.U) +(set or unset, respecti)144 321.6 R -.15(ve)-.25 G(ly).15 E 7.234(.U) -.65 G 2.234(nless otherwise noted, the)-7.234 F F1(shopt)4.734 E F0 -2.234(options are disabled \(unset\) by)4.734 F(def)144 256.8 Q(ault.) +2.234(options are disabled \(unset\) by)4.734 F(def)144 333.6 Q(ault.) -.1 E 1.544(The return status when listing options is zero if all)144 -273.6 R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.) +350.4 R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.) 4.045 F .696 (When setting or unsetting options, the return status is zero unless an) -144 285.6 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695 -(alid shell)-.25 F(option.)144 297.6 Q(The list of)144 314.4 Q F1(shopt) -2.5 E F0(options is:)2.5 E F1(autocd)144 332.4 Q F0 .199 -(If set, a command name that is the name of a directory is e)184 332.4 R +144 362.4 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695 +(alid shell)-.25 F(option.)144 374.4 Q(The list of)144 391.2 Q F1(shopt) +2.5 E F0(options is:)2.5 E F1(autocd)144 409.2 Q F0 .199 +(If set, a command name that is the name of a directory is e)184 409.2 R -.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E -(ment to the)184 344.4 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F +(ment to the)184 421.2 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F (option is only used by interacti)2.5 E .3 -.15(ve s)-.25 H(hells.).15 E -F1(cdable_v)144 356.4 Q(ars)-.1 E F0 .156(If set, an ar)184 368.4 R .156 +F1(cdable_v)144 433.2 Q(ars)-.1 E F0 .156(If set, an ar)184 445.2 R .156 (gument to the)-.18 F F1(cd)2.656 E F0 -.2(bu)2.656 G .155 (iltin command that is not a directory is assumed to be the).2 F -(name of a v)184 380.4 Q(ariable whose v)-.25 E -(alue is the directory to change to.)-.25 E F1(cdspell)144 392.4 Q F0 +(name of a v)184 457.2 Q(ariable whose v)-.25 E +(alue is the directory to change to.)-.25 E F1(cdspell)144 469.2 Q F0 1.055 (If set, minor errors in the spelling of a directory component in a)184 -392.4 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 -(corrected. The)184 404.4 R 1.488(errors check)3.988 F 1.487 +469.2 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 +(corrected. The)184 481.2 R 1.488(errors check)3.988 F 1.487 (ed for are transposed characters, a missing character)-.1 F 3.987(,a) --.4 G(nd)-3.987 E .77(one character too man)184 416.4 R 4.57 -.65(y. I) +-.4 G(nd)-3.987 E .77(one character too man)184 493.2 R 4.57 -.65(y. I) -.15 H 3.27(fac).65 G .77 (orrection is found, the corrected \214lename is printed, and)-3.27 F -(the command proceeds.)184 428.4 Q +(the command proceeds.)184 505.2 Q (This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(checkhash)144 440.4 Q F0 .737(If set,)184 452.4 R F1(bash)3.237 +.15 E F1(checkhash)144 517.2 Q F0 .737(If set,)184 529.2 R F1(bash)3.237 E F0 .736(checks that a command found in the hash table e)3.237 F .736 (xists before trying to e)-.15 F -.15(xe)-.15 G(-).15 E(cute it.)184 -464.4 Q(If a hashed command no longer e)5 E -(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 476.4 -Q F0 .448(If set,)184 488.4 R F1(bash)2.948 E F0 .448 +541.2 Q(If a hashed command no longer e)5 E +(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 553.2 +Q F0 .448(If set,)184 565.2 R F1(bash)2.948 E F0 .448 (lists the status of an)2.948 F 2.949(ys)-.15 G .449 (topped and running jobs before e)-2.949 F .449(xiting an interacti)-.15 -F -.15(ve)-.25 G 3.439(shell. If)184 500.4 R(an)3.439 E 3.439(yj)-.15 G +F -.15(ve)-.25 G 3.439(shell. If)184 577.2 R(an)3.439 E 3.439(yj)-.15 G .938(obs are running, this causes the e)-3.439 F .938 (xit to be deferred until a second e)-.15 F .938(xit is)-.15 F 2.203 -(attempted without an interv)184 512.4 R 2.203(ening command \(see)-.15 +(attempted without an interv)184 589.2 R 2.203(ening command \(see)-.15 F/F3 9/Times-Bold@0 SF 2.203(JOB CONTR)4.703 F(OL)-.27 E F0(abo)4.453 E --.15(ve)-.15 G 4.703(\). The).15 F(shell)4.704 E(al)184 524.4 Q -.1(wa) +-.15(ve)-.15 G 4.703(\). The).15 F(shell)4.704 E(al)184 601.2 Q -.1(wa) -.1 G(ys postpones e).1 E(xiting if an)-.15 E 2.5(yj)-.15 G -(obs are stopped.)-2.5 E F1(checkwinsize)144 536.4 Q F0 .797(If set,)184 -548.4 R F1(bash)3.297 E F0 .797(checks the windo)3.297 F 3.297(ws)-.25 G +(obs are stopped.)-2.5 E F1(checkwinsize)144 613.2 Q F0 .797(If set,)184 +625.2 R F1(bash)3.297 E F0 .797(checks the windo)3.297 F 3.297(ws)-.25 G .796(ize after each command and, if necessary)-3.297 F 3.296(,u)-.65 G -.796(pdates the)-3.296 F -.25(va)184 560.4 S(lues of).25 E F3(LINES)2.5 +.796(pdates the)-3.296 F -.25(va)184 637.2 S(lues of).25 E F3(LINES)2.5 E F0(and)2.25 E F3(COLUMNS)2.5 E/F4 9/Times-Roman@0 SF(.)A F1(cmdhist) -144 572.4 Q F0 1.202(If set,)184 572.4 R F1(bash)3.702 E F0 1.202 +144 649.2 Q F0 1.202(If set,)184 649.2 R F1(bash)3.702 E F0 1.202 (attempts to sa)3.702 F 1.502 -.15(ve a)-.2 H 1.202 (ll lines of a multiple-line command in the same history).15 F(entry)184 -584.4 Q 5(.T)-.65 G(his allo)-5 E -(ws easy re-editing of multi-line commands.)-.25 E F1(compat31)144 596.4 -Q F0 .42(If set,)184 608.4 R F1(bash)2.92 E F0 .42(changes its beha)2.92 +661.2 Q 5(.T)-.65 G(his allo)-5 E +(ws easy re-editing of multi-line commands.)-.25 E F1(compat31)144 673.2 +Q F0 .42(If set,)184 685.2 R F1(bash)2.92 E F0 .42(changes its beha)2.92 F .419(vior to that of v)-.2 F .419 (ersion 3.1 with respect to quoted ar)-.15 F(guments)-.18 E .461(to the) -184 620.4 R F1([[)2.961 E F0 .462(conditional command')2.962 F(s)-.55 E +184 697.2 R F1([[)2.961 E F0 .462(conditional command')2.962 F(s)-.55 E F1(=~)2.962 E F0 .462 (operator and locale-speci\214c string comparison when)2.962 F .71 -(using the)184 632.4 R F1([[)3.21 E F0 .71(conditional command')3.21 F +(using the)184 709.2 R F1([[)3.21 E F0 .71(conditional command')3.21 F (s)-.55 E F1(<)3.21 E F0(and)3.21 E F1(>)3.21 E F0 3.21(operators. Bash) 3.21 F -.15(ve)3.21 G .71(rsions prior to bash-4.1).15 F .82 -(use ASCII collation and)184 644.4 R F2(str)3.321 E(cmp)-.37 E F0 .821 +(use ASCII collation and)184 721.2 R F2(str)3.321 E(cmp)-.37 E F0 .821 (\(3\); bash-4.1 and later use the current locale').19 F 3.321(sc)-.55 G -(ollation)-3.321 E(sequence and)184 656.4 Q F2(str)2.5 E(coll)-.37 E F0 -(\(3\).).51 E F1(compat32)144 668.4 Q F0 1.41(If set,)184 680.4 R F1 -(bash)3.91 E F0 1.41(changes its beha)3.91 F 1.409(vior to that of v)-.2 -F 1.409(ersion 3.2 with respect to locale-speci\214c)-.15 F .422 -(string comparison when using the)184 692.4 R F1([[)2.922 E F0 .422 -(conditional command')2.922 F(s)-.55 E F1(<)2.922 E F0(and)2.922 E F1(>) -2.923 E F0 .423(operators \(see pre-)2.923 F(vious item\).)184 704.4 Q -(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(69)190.395 E 0 Cg EP +(ollation)-3.321 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 +G(mber 16).15 E(69)185.545 E 0 Cg EP %%Page: 70 70 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(compat40)144 84 Q F0 1.41(If set,)184 96 R F1(bash)3.91 E F0 1.41 -(changes its beha)3.91 F 1.409(vior to that of v)-.2 F 1.409 -(ersion 4.0 with respect to locale-speci\214c)-.15 F 2.007 -(string comparison when using the)184 108 R F1([[)4.507 E F0 2.008 -(conditional command')4.507 F(s)-.55 E F1(<)4.508 E F0(and)4.508 E F1(>) -4.508 E F0 2.008(operators \(see)4.508 F .77(description of)184 120 R F1 -(compat31)3.27 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 -(fect of interrupting a command list.)-.25 F .769(Bash v)5.769 F -(ersions)-.15 E .086 -(4.0 and later interrupt the list as if the shell recei)184 132 R -.15 -(ve)-.25 G 2.587(dt).15 G .087(he interrupt; pre)-2.587 F .087(vious v) --.25 F .087(ersions con-)-.15 F(tinue with the ne)184 144 Q -(xt command in the list.)-.15 E F1(compat41)144 156 Q F0 1.484(If set,) -184 168 R F1(bash)3.984 E F0 3.984(,w)C 1.484(hen in)-3.984 F/F2 10 -/Times-Italic@0 SF(posix)3.984 E F0 1.483 -(mode, treats a single quote in a double-quoted parameter)3.984 F -.15 -(ex)184 180 S .958(pansion as a special character).15 F 5.958(.T)-.55 G -.959(he single quotes must match \(an e)-5.958 F -.15(ve)-.25 G 3.459 -(nn).15 G .959(umber\) and)-3.459 F .59 -(the characters between the single quotes are considered quoted.)184 192 -R .59(This is the beha)5.59 F .59(vior of)-.2 F .589 -(posix mode through v)184 204 R .589(ersion 4.1.)-.15 F .589(The def) -5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .59 -(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 216 Q F1(compat42)144 228 Q -F0 1.797(If set,)184 240 R F1(bash)4.297 E F0 1.796 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(sequence and)184 +84 Q/F1 10/Times-Italic@0 SF(str)2.5 E(coll)-.37 E F0(\(3\).).51 E/F2 10 +/Times-Bold@0 SF(compat32)144 96 Q F0 1.41(If set,)184 108 R F2(bash) +3.91 E F0 1.41(changes its beha)3.91 F 1.409(vior to that of v)-.2 F +1.409(ersion 3.2 with respect to locale-speci\214c)-.15 F .422 +(string comparison when using the)184 120 R F2([[)2.922 E F0 .422 +(conditional command')2.922 F(s)-.55 E F2(<)2.922 E F0(and)2.922 E F2(>) +2.923 E F0 .423(operators \(see pre-)2.923 F .481 +(vious item\) and the ef)184 132 R .481 +(fect of interrupting a command list.)-.25 F .48(Bash v)5.481 F .48 +(ersions 3.2 and earlier)-.15 F(continue with the ne)184 144 Q +(xt command in the list after one terminates due to an interrupt.)-.15 E +F2(compat40)144 156 Q F0 1.409(If set,)184 168 R F2(bash)3.909 E F0 +1.409(changes its beha)3.909 F 1.409(vior to that of v)-.2 F 1.41 +(ersion 4.0 with respect to locale-speci\214c)-.15 F 2.008 +(string comparison when using the)184 180 R F2([[)4.508 E F0 2.007 +(conditional command')4.508 F(s)-.55 E F2(<)4.507 E F0(and)4.507 E F2(>) +4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 192 R +F2(compat31)3.269 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 +(fect of interrupting a command list.)-.25 F .77(Bash v)5.77 F(ersions) +-.15 E .087(4.0 and later interrupt the list as if the shell recei)184 +204 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F .086 +(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 216 Q +(xt command in the list.)-.15 E F2(compat41)144 228 Q F0 1.483(If set,) +184 240 R F2(bash)3.983 E F0 3.983(,w)C 1.483(hen in)-3.983 F F1(posix) +3.983 E F0 1.484 +(mode, treats a single quote in a double-quoted parameter)3.983 F -.15 +(ex)184 252 S .959(pansion as a special character).15 F 5.959(.T)-.55 G +.958(he single quotes must match \(an e)-5.959 F -.15(ve)-.25 G 3.458 +(nn).15 G .958(umber\) and)-3.458 F .59 +(the characters between the single quotes are considered quoted.)184 264 +R .59(This is the beha)5.59 F .59(vior of)-.2 F .59 +(posix mode through v)184 276 R .589(ersion 4.1.)-.15 F .589(The def) +5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .589 +(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 288 Q F2(compat42)144 300 Q +F0 1.796(If set,)184 312 R F2(bash)4.296 E F0 1.796 (does not process the replacement string in the pattern substitution w) -4.296 F(ord)-.1 E -.15(ex)184 252 S(pansion using quote remo).15 E -.25 -(va)-.15 G(l.).25 E F1(compat43)144 264 Q F0 .14(If set,)184 276 R F1 -(bash)2.64 E F0 .14(does not print a w)2.64 F .141 -(arning message if an attempt is made to use a quoted com-)-.1 F .913 -(pound array assignment as an ar)184 288 R .913(gument to)-.18 F F1 -(declar)3.412 E(e)-.18 E F0 3.412(,m)C(ak)-3.412 E .912(es w)-.1 F .912 -(ord e)-.1 F .912(xpansion errors non-)-.15 F -.1(fa)184 300 S .352 +4.296 F(ord)-.1 E -.15(ex)184 324 S(pansion using quote remo).15 E -.25 +(va)-.15 G(l.).25 E F2(compat43)144 336 Q F0 .141(If set,)184 348 R F2 +(bash)2.641 E F0 .141(does not print a w)2.641 F .14 +(arning message if an attempt is made to use a quoted com-)-.1 F .912 +(pound array assignment as an ar)184 360 R .912(gument to)-.18 F F2 +(declar)3.413 E(e)-.18 E F0 3.413(,m)C(ak)-3.413 E .913(es w)-.1 F .913 +(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 372 S .353 (tal errors that cause the current command to f).1 F .353(ail \(the def) --.1 F .353(ault beha)-.1 F .353(vior is to mak)-.2 F 2.853(et)-.1 G(hem) --2.853 E -.1(fa)184 312 S 1.058(tal errors that cause the shell to e).1 -F 1.057(xit\), and does not reset the loop state when a shell)-.15 F -.374(function is e)184 324 R -.15(xe)-.15 G .374(cuted \(this allo).15 F -(ws)-.25 E F1(br)2.874 E(eak)-.18 E F0(or)2.875 E F1(continue)2.875 E F0 -.375(in a shell function to af)2.875 F .375(fect loops in)-.25 F -(the caller')184 336 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1 -(complete_fullquote)144 348 Q F0 .654(If set,)184 360 R F1(bash)3.153 E +-.1 F .352(ault beha)-.1 F .352(vior is to mak)-.2 F 2.852(et)-.1 G(hem) +-2.852 E -.1(fa)184 384 S 1.057(tal errors that cause the shell to e).1 +F 1.058(xit\), and does not reset the loop state when a shell)-.15 F +.375(function is e)184 396 R -.15(xe)-.15 G .375(cuted \(this allo).15 F +(ws)-.25 E F2(br)2.875 E(eak)-.18 E F0(or)2.875 E F2(continue)2.875 E F0 +.374(in a shell function to af)2.875 F .374(fect loops in)-.25 F +(the caller')184 408 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F2 +(complete_fullquote)144 420 Q F0 .653(If set,)184 432 R F2(bash)3.153 E F0 .653(quotes all shell metacharacters in \214lenames and directory na\ -mes when per)3.153 F(-)-.2 E 1.524(forming completion.)184 372 R 1.524 -(If not set,)6.524 F F1(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 G +mes when per)3.153 F(-)-.2 E 1.525(forming completion.)184 444 R 1.524 +(If not set,)6.525 F F2(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524(etacharacters such as the dollar sign)-4.024 F 2.667(from the set of characters that will be quoted in completed \214l\ -enames when these)184 384 R .028(metacharacters appear in shell v)184 -396 R .028(ariable references in w)-.25 F .029(ords to be completed.)-.1 -F .029(This means)5.029 F 1.073(that dollar signs in v)184 408 R 1.073 +enames when these)184 456 R .029(metacharacters appear in shell v)184 +468 R .028(ariable references in w)-.25 F .028(ords to be completed.)-.1 +F .028(This means)5.028 F 1.072(that dollar signs in v)184 480 R 1.073 (ariable names that e)-.25 F 1.073 (xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25 -(ev e)184 420 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 +(ev e)184 492 T 1.923 -.4(r, a).25 H 1.423 -.15(ny d).4 H 1.123 (ollar signs appearing in \214lenames will not be quoted, either).15 F -6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59 +6.123(.T)-.55 G 1.122(his is acti)-6.123 F -.15(ve)-.25 G .59 (only when bash is using backslashes to quote completed \214lenames.)184 -432 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 444 Q +504 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 516 Q (ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E -(ersions through 4.2.)-.15 E F1(dir)144 456 Q(expand)-.18 E F0 .486 -(If set,)184 468 R F1(bash)2.986 E F0 .486 +(ersions through 4.2.)-.15 E F2(dir)144 528 Q(expand)-.18 E F0 .487 +(If set,)184 540 R F2(bash)2.987 E F0 .486 (replaces directory names with the results of w)2.986 F .486(ord e)-.1 F -.487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184 -480 R .179(This changes the contents of the readline editing b)5.18 F -(uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,) -184 492 Q F1(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G -(hat the user typed.)-2.5 E F1(dirspell)144 504 Q F0 .858(If set,)184 -504 R F1(bash)3.358 E F0 .858 -(attempts spelling correction on directory names during w)3.358 F .859 +.486(xpansion when perform-)-.15 F .179(ing \214lename completion.)184 +552 R .179(This changes the contents of the readline editing b)5.179 F +(uf)-.2 E(fer)-.25 E 5.18(.I)-.55 G 2.68(fn)-5.18 G(ot)-2.68 E(set,)184 +564 Q F2(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G +(hat the user typed.)-2.5 E F2(dirspell)144 576 Q F0 .859(If set,)184 +576 R F2(bash)3.359 E F0 .858 +(attempts spelling correction on directory names during w)3.359 F .858 (ord completion if)-.1 F -(the directory name initially supplied does not e)184 516 Q(xist.)-.15 E -F1(dotglob)144 528 Q F0(If set,)184 528 Q F1(bash)2.5 E F0 +(the directory name initially supplied does not e)184 588 Q(xist.)-.15 E +F2(dotglob)144 600 Q F0(If set,)184 600 Q F2(bash)2.5 E F0 (includes \214lenames be)2.5 E(ginning with a `.)-.15 E 2.5('i)-.7 G 2.5 -(nt)-2.5 G(he results of pathname e)-2.5 E(xpansion.)-.15 E F1(execfail) -144 540 Q F0 1.387(If set, a non-interacti)184 540 R 1.687 -.15(ve s) +(nt)-2.5 G(he results of pathname e)-2.5 E(xpansion.)-.15 E F2(execfail) +144 612 Q F0 1.386(If set, a non-interacti)184 612 R 1.686 -.15(ve s) -.25 H 1.386(hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15 -(xe)-.15 G 1.386(cute the \214le speci\214ed as an).15 F(ar)184 552 Q -(gument to the)-.18 E F1(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E +(xe)-.15 G 1.387(cute the \214le speci\214ed as an).15 F(ar)184 624 Q +(gument to the)-.18 E F2(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E (An interacti)5 E .3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 -E F1(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 564 Q F0 -.716(If set, aliases are e)184 576 R .717(xpanded as described abo)-.15 +E F2(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F2(expand_aliases)144 636 Q F0 +.717(If set, aliases are e)184 648 R .717(xpanded as described abo)-.15 F 1.017 -.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(ALIASES)3.217 E -/F4 9/Times-Roman@0 SF(.)A F0 .717(This option is enabled)5.217 F -(by def)184 588 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(extdeb)144 600 Q(ug)-.2 E F0(If set, beha)184 612 Q -(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F1(1.)184 -624 Q F0(The)220 624 Q F14.251 E F0 1.751(option to the)4.251 F F1 +/F4 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F +(by def)184 660 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) +.15 E F2(extdeb)144 672 Q(ug)-.2 E F0(If set, beha)184 684 Q +(vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F2(1.)184 +696 Q F0(The)220 696 Q F24.25 E F0 1.75(option to the)4.25 F F2 (declar)4.251 E(e)-.18 E F0 -.2(bu)4.251 G 1.751 (iltin displays the source \214le name and line).2 F -(number corresponding to each function name supplied as an ar)220 636 Q -(gument.)-.18 E F1(2.)184 648 Q F0 1.667(If the command run by the)220 -648 R F1(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F -1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 660 -Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 672 Q F0 .841 -(If the command run by the)220 672 R F1(DEB)3.341 E(UG)-.1 E F0 .841 -(trap returns a v)3.341 F .84(alue of 2, and the shell is)-.25 F -.15 -(exe)220 684 S .488 -(cuting in a subroutine \(a shell function or a shell script e).15 F --.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1 -(sour)220 696 Q(ce)-.18 E F0 -.2(bu)2.5 G -(iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E -(n)-.15 E F0(.)A F1(4.)184 708 Q F3 -.27(BA)220 708 S(SH_ARGC).27 E F0 -(and)3.154 E F3 -.27(BA)3.404 G(SH_ARGV).27 E F0 .904 -(are updated as described in their descriptions)3.154 F(abo)220 720 Q --.15(ve)-.15 G(.).15 E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E -(70)190.395 E 0 Cg EP +(number corresponding to each function name supplied as an ar)220 708 Q +(gument.)-.18 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G +(mber 16).15 E(70)185.545 E 0 Cg EP %%Page: 71 71 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(5.)184 84 Q F0 1.637(Function tracing is enabled: command substituti\ -on, shell functions, and sub-)220 84 R(shells in)220 96 Q -.2(vo)-.4 G --.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E/F2 10/Times-Italic@0 SF -(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0 -(and)2.5 E F1(RETURN)2.5 E F0(traps.)2.5 E F1(6.)184 108 Q F0 1.082(Err\ -or tracing is enabled: command substitution, shell functions, and subsh\ -ells)220 108 R(in)220 120 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith) --2.5 E F1(\()2.5 E F2(command)2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1 -(ERR)2.5 E F0(trap.)2.5 E F1(extglob)144 132 Q F0 .4(If set, the e)184 -132 R .4(xtended pattern matching features described abo)-.15 F .7 -.15 -(ve u)-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 -144 Q F0(are enabled.)2.5 E F1(extquote)144 156 Q F0 2.473(If set,)184 -168 R F1($)4.973 E F0<08>A F2(string)A F0 4.973<0861>C(nd)-4.973 E F1($) -4.973 E F0(")A F2(string)A F0 4.973("q)C 2.473 -(uoting is performed within)-4.973 F F1(${)4.973 E F2(par)A(ameter)-.15 -E F1(})A F0 -.15(ex)4.973 G(pansions).15 E(enclosed in double quotes.) -184 180 Q(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 -192 Q F0 1.424(If set, patterns which f)184 192 R 1.425 -(ail to match \214lenames during pathname e)-.1 F 1.425 -(xpansion result in an)-.15 F -.15(ex)184 204 S(pansion error).15 E(.) --.55 E F1 -.25(fo)144 216 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.937(If set, the suf)184 228 R<8c78>-.25 E .936(es speci\214ed by the) --.15 F/F3 9/Times-Bold@0 SF(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936 -(ariable cause w)-.25 F .936(ords to be ignored)-.1 F .32 -(when performing w)184 240 R .32(ord completion e)-.1 F -.15(ve)-.25 G -2.82(ni).15 G 2.82(ft)-2.82 G .32(he ignored w)-2.82 F .32 -(ords are the only possible com-)-.1 F 2.948(pletions. See)184 252 R F3 -.448(SHELL V)2.948 F(ARIABLES)-1.215 E F0(abo)2.698 E .748 -.15(ve f) --.15 H .448(or a description of).15 F F3(FIGNORE)2.947 E/F4 9 -/Times-Roman@0 SF(.)A F0 .447(This option is)4.947 F(enabled by def)184 -264 Q(ault.)-.1 E F1(globasciiranges)144 276 Q F0 2.518(If set, range e) -184 288 R 2.519(xpressions used in pattern matching brack)-.15 F 2.519 -(et e)-.1 F 2.519(xpressions \(see)-.15 F F3 -.09(Pa)5.019 G(tter).09 E -(n)-.135 E(Matching)184 300 Q F0(abo)2.965 E -.15(ve)-.15 G 3.215(\)b) -.15 G(eha)-3.215 E 1.015 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 -G 3.214(nt)-3.214 G .714 -(he traditional C locale when performing comparisons.)-3.214 F 1.02 -(That is, the current locale')184 312 R 3.52(sc)-.55 G 1.02 +SF(2.)184 84 Q F0 1.667(If the command run by the)220 84 R F1(DEB)4.167 +E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F 1.667 +(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 96 Q +-.15(xe)-.15 G(cuted.).15 E F1(3.)184 108 Q F0 .84 +(If the command run by the)220 108 R F1(DEB)3.34 E(UG)-.1 E F0 .841 +(trap returns a v)3.341 F .841(alue of 2, and the shell is)-.25 F -.15 +(exe)220 120 S .488 +(cuting in a subroutine \(a shell function or a shell script e).15 F +-.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1 +(sour)220 132 Q(ce)-.18 E F0 -.2(bu)2.5 G +(iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E +(n)-.15 E F0(.)A F1(4.)184 144 Q/F2 9/Times-Bold@0 SF -.27(BA)220 144 S +(SH_ARGC).27 E F0(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904 +(are updated as described in their descriptions)3.154 F(abo)220 156 Q +-.15(ve)-.15 G(.).15 E F1(5.)184 168 Q F0 1.637(Function tracing is ena\ +bled: command substitution, shell functions, and sub-)220 168 R +(shells in)220 180 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 +(\()2.5 E/F3 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0 +(inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0 +(traps.)2.5 E F1(6.)184 192 Q F0 1.082(Error tracing is enabled: comman\ +d substitution, shell functions, and subshells)220 192 R(in)220 204 Q +-.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F3(command) +2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)2.5 E F1 +(extglob)144 216 Q F0 .4(If set, the e)184 216 R .4 +(xtended pattern matching features described abo)-.15 F .7 -.15(ve u) +-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 228 Q +F0(are enabled.)2.5 E F1(extquote)144 240 Q F0 2.473(If set,)184 252 R +F1($)4.973 E F0<08>A F3(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 +E F0(")A F3(string)A F0 4.973("q)C 2.473(uoting is performed within) +-4.973 F F1(${)4.973 E F3(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G +(pansions).15 E(enclosed in double quotes.)184 264 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 276 Q F0 +1.425(If set, patterns which f)184 276 R 1.425 +(ail to match \214lenames during pathname e)-.1 F 1.424 +(xpansion result in an)-.15 F -.15(ex)184 288 S(pansion error).15 E(.) +-.55 E F1 -.25(fo)144 300 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.936(If set, the suf)184 312 R<8c78>-.25 E .936(es speci\214ed by the) +-.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w) +-.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 324 R .32 +(ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32 +(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947 +(pletions. See)184 336 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 +(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2 +(FIGNORE)2.948 E/F4 9/Times-Roman@0 SF(.)A F0 .448(This option is)4.948 +F(enabled by def)184 348 Q(ault.)-.1 E F1(globasciiranges)144 360 Q F0 +2.519(If set, range e)184 372 R 2.519 +(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518 +(xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E +(Matching)184 384 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha) +-3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214 +(nt)-3.214 G .714(he traditional C locale when performing comparisons.) +-3.214 F 1.02(That is, the current locale')184 396 R 3.52(sc)-.55 G 1.02 (ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F F1 -(b)3.52 E F0 1.02(will not)3.52 F .957(collate between)184 324 R F1(A) -3.457 E F0(and)3.457 E F1(B)3.457 E F0 3.457(,a)C .957(nd upper)-3.457 F -.957(-case and lo)-.2 F(wer)-.25 E .956 -(-case ASCII characters will collate)-.2 F(together)184 336 Q(.)-.55 E -F1(globstar)144 348 Q F0 .518(If set, the pattern)184 348 R F1(**)3.018 -E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .519 -(xt will match all \214les and zero)-.15 F .432 -(or more directories and subdirectories.)184 360 R .431 -(If the pattern is follo)5.432 F .431(wed by a)-.25 F F1(/)2.931 E F0 -2.931(,o)C .431(nly directories)-2.931 F(and subdirectories match.)184 -372 Q F1(gnu_errfmt)144 384 Q F0(If set, shell error messages are writt\ -en in the standard GNU error message format.)184 396 Q F1(histappend)144 -408 Q F0 .676 +(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 408 R F1(A) +3.456 E F0(and)3.456 E F1(B)3.456 E F0 3.457(,a)C .957(nd upper)-3.457 F +.957(-case and lo)-.2 F(wer)-.25 E .957 +(-case ASCII characters will collate)-.2 F(together)184 420 Q(.)-.55 E +F1(globstar)144 432 Q F0 .519(If set, the pattern)184 432 R F1(**)3.019 +E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .518 +(xt will match all \214les and zero)-.15 F .431 +(or more directories and subdirectories.)184 444 R .431 +(If the pattern is follo)5.431 F .432(wed by a)-.25 F F1(/)2.932 E F0 +2.932(,o)C .432(nly directories)-2.932 F(and subdirectories match.)184 +456 Q F1(gnu_errfmt)144 468 Q F0(If set, shell error messages are writt\ +en in the standard GNU error message format.)184 480 Q F1(histappend)144 +492 Q F0 .676 (If set, the history list is appended to the \214le named by the v)184 -420 R .676(alue of the)-.25 F F3(HISTFILE)3.177 E F0 -.25(va)2.927 G -(ri-).25 E(able when the shell e)184 432 Q(xits, rather than o)-.15 E --.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 444 Q(eedit)-.18 -E F0 .576(If set, and)184 456 R F1 -.18(re)3.076 G(adline).18 E F0 .575 -(is being used, a user is gi)3.076 F -.15(ve)-.25 G 3.075(nt).15 G .575 -(he opportunity to re-edit a f)-3.075 F .575(ailed his-)-.1 F -(tory substitution.)184 468 Q F1(histv)144 480 Q(erify)-.1 E F0 .402 -(If set, and)184 492 R F1 -.18(re)2.903 G(adline).18 E F0 .403 +504 R .676(alue of the)-.25 F F2(HISTFILE)3.176 E F0 -.25(va)2.926 G +(ri-).25 E(able when the shell e)184 516 Q(xits, rather than o)-.15 E +-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 528 Q(eedit)-.18 +E F0 .575(If set, and)184 540 R F1 -.18(re)3.075 G(adline).18 E F0 .575 +(is being used, a user is gi)3.075 F -.15(ve)-.25 G 3.075(nt).15 G .576 +(he opportunity to re-edit a f)-3.075 F .576(ailed his-)-.1 F +(tory substitution.)184 552 Q F1(histv)144 564 Q(erify)-.1 E F0 .403 +(If set, and)184 576 R F1 -.18(re)2.903 G(adline).18 E F0 .403 (is being used, the results of history substitution are not immediately) -2.903 F .662(passed to the shell parser)184 504 R 5.662(.I)-.55 G .661 -(nstead, the resulting line is loaded into the)-5.662 F F1 -.18(re)3.161 -G(adline).18 E F0(editing)3.161 E -.2(bu)184 516 S -.25(ff).2 G(er).25 E +2.903 F .661(passed to the shell parser)184 588 R 5.661(.I)-.55 G .662 +(nstead, the resulting line is loaded into the)-5.661 F F1 -.18(re)3.162 +G(adline).18 E F0(editing)3.162 E -.2(bu)184 600 S -.25(ff).2 G(er).25 E 2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1 -(hostcomplete)144 528 Q F0 1.181(If set, and)184 540 R F1 -.18(re)3.681 -G(adline).18 E F0 1.181(is being used,)3.681 F F1(bash)3.682 E F0 1.182 -(will attempt to perform hostname completion)3.682 F 1.381(when a w)184 -552 R 1.381(ord containing a)-.1 F F1(@)3.881 E F0 1.381 -(is being completed \(see)3.881 F F1(Completing)3.88 E F0(under)3.88 E -F3(READLINE)3.88 E F0(abo)184 564 Q -.15(ve)-.15 G 2.5(\). This).15 F -(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 576 Q F0(If set,) -184 588 Q F1(bash)2.5 E F0(will send)2.5 E F3(SIGHUP)2.5 E F0 +(hostcomplete)144 612 Q F0 1.182(If set, and)184 624 R F1 -.18(re)3.682 +G(adline).18 E F0 1.182(is being used,)3.682 F F1(bash)3.682 E F0 1.181 +(will attempt to perform hostname completion)3.681 F 1.38(when a w)184 +636 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381 +(is being completed \(see)3.881 F F1(Completing)3.881 E F0(under)3.881 E +F2(READLINE)3.881 E F0(abo)184 648 Q -.15(ve)-.15 G 2.5(\). This).15 F +(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 660 Q F0(If set,) +184 672 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 (to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e) -.15 E(xits.)-.15 E F1(interacti)144 600 Q -.1(ve)-.1 G(_comments).1 E F0 -.33(If set, allo)184 612 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33 -(ginning with)-.15 F F1(#)2.83 E F0 .33(to cause that w)2.83 F .33 -(ord and all remaining characters on)-.1 F .967 -(that line to be ignored in an interacti)184 624 R 1.267 -.15(ve s)-.25 -H .967(hell \(see).15 F F3(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)-.15 -G 3.467(\). This).15 F .967(option is)3.467 F(enabled by def)184 636 Q -(ault.)-.1 E F1(lastpipe)144 648 Q F0 .066 -(If set, and job control is not acti)184 648 R -.15(ve)-.25 G 2.566(,t) -.15 G .066(he shell runs the last command of a pipeline not e)-2.566 F --.15(xe)-.15 G(-).15 E(cuted in the background in the current shell en) -184 660 Q(vironment.)-.4 E F1(lithist)144 672 Q F0 .655(If set, and the) -184 672 R F1(cmdhist)3.155 E F0 .654 -(option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G -3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F -(with embedded ne)184 684 Q -(wlines rather than using semicolon separators where possible.)-.25 E F1 -(login_shell)144 696 Q F0 .486 -(The shell sets this option if it is started as a login shell \(see)184 -708 R F3(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve) --.15 G 2.987(\). The).15 F -.25(va)184 720 S(lue may not be changed.).25 -E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(71)190.395 E 0 Cg EP +.15 E(xits.)-.15 E F1(inherit_err)144 684 Q(exit)-.18 E F0 .22 +(If set, command substitution inherits the v)184 696 R .219(alue of the) +-.25 F F1(err)2.719 E(exit)-.18 E F0 .219(option, instead of unsetting) +2.719 F(it in the subshell en)184 708 Q 2.5(vironment. This)-.4 F +(option is enabled when)2.5 E F3(posix mode)2.5 E F0(is enabled.)2.5 E +(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E +(71)185.545 E 0 Cg EP %%Page: 72 72 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(mailwar)144 84 Q(n)-.15 E F0 .815(If set, and a \214le that)184 96 R -F1(bash)3.315 E F0 .814 +SF(interacti)144 84 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo) +184 96 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33(ginning with)-.15 F F1 +(#)2.83 E F0 .33(to cause that w)2.83 F .33 +(ord and all remaining characters on)-.1 F .967 +(that line to be ignored in an interacti)184 108 R 1.267 -.15(ve s)-.25 +H .967(hell \(see).15 F/F2 9/Times-Bold@0 SF(COMMENTS)3.467 E F0(abo) +3.217 E -.15(ve)-.15 G 3.467(\). This).15 F .967(option is)3.467 F +(enabled by def)184 120 Q(ault.)-.1 E F1(lastpipe)144 132 Q F0 .066 +(If set, and job control is not acti)184 132 R -.15(ve)-.25 G 2.566(,t) +.15 G .066(he shell runs the last command of a pipeline not e)-2.566 F +-.15(xe)-.15 G(-).15 E(cuted in the background in the current shell en) +184 144 Q(vironment.)-.4 E F1(lithist)144 156 Q F0 .655(If set, and the) +184 156 R F1(cmdhist)3.155 E F0 .654 +(option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G +3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F +(with embedded ne)184 168 Q +(wlines rather than using semicolon separators where possible.)-.25 E F1 +(login_shell)144 180 Q F0 .486 +(The shell sets this option if it is started as a login shell \(see)184 +192 R F2(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve) +-.15 G 2.987(\). The).15 F -.25(va)184 204 S(lue may not be changed.).25 +E F1(mailwar)144 216 Q(n)-.15 E F0 .815(If set, and a \214le that)184 +228 R F1(bash)3.315 E F0 .814 (is checking for mail has been accessed since the last time it)3.315 F --.1(wa)184 108 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E -(`The mail in)-.74 E/F2 10/Times-Italic@0 SF(mail\214le)2.5 E F0 +-.1(wa)184 240 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E +(`The mail in)-.74 E/F3 10/Times-Italic@0 SF(mail\214le)2.5 E F0 (has been read')2.5 E 2.5('i)-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1 -(no_empty_cmd_completion)144 120 Q F0 .324(If set, and)184 132 R F1 -.18 +(no_empty_cmd_completion)144 252 Q F0 .324(If set, and)184 264 R F1 -.18 (re)2.824 G(adline).18 E F0 .324(is being used,)2.824 F F1(bash)2.824 E -F0 .324(will not attempt to search the)2.824 F/F3 9/Times-Bold@0 SF --.666(PA)2.825 G(TH)-.189 E F0 .325(for possible)2.575 F -(completions when completion is attempted on an empty line.)184 144 Q F1 -(nocaseglob)144 156 Q F0 .437(If set,)184 168 R F1(bash)2.937 E F0 .436 +F0 .324(will not attempt to search the)2.824 F F2 -.666(PA)2.825 G(TH) +-.189 E F0 .325(for possible)2.575 F +(completions when completion is attempted on an empty line.)184 276 Q F1 +(nocaseglob)144 288 Q F0 .437(If set,)184 300 R F1(bash)2.937 E F0 .436 (matches \214lenames in a case\255insensiti)2.937 F .736 -.15(ve f)-.25 -H .436(ashion when performing pathname).05 F -.15(ex)184 180 S +H .436(ashion when performing pathname).05 F -.15(ex)184 312 S (pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E --.15(ve)-.15 G(\).).15 E F1(nocasematch)144 192 Q F0 1.193(If set,)184 -204 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti) +-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 324 Q F0 1.193(If set,)184 +336 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti) 3.693 F 1.494 -.15(ve f)-.25 H 1.194(ashion when performing matching).05 -F .551(while e)184 216 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0 +F .551(while e)184 348 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0 (or)3.051 E F1([[)3.051 E F0 .551 (conditional commands, when performing pattern substitution)3.051 F -.1 -(wo)184 228 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ -le completions as part of programmable com-)-.15 F(pletion.)184 240 Q F1 -(nullglob)144 252 Q F0 .855(If set,)184 264 R F1(bash)3.355 E F0(allo) +(wo)184 360 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ +le completions as part of programmable com-)-.15 F(pletion.)184 372 Q F1 +(nullglob)144 384 Q F0 .855(If set,)184 396 R F1(bash)3.355 E F0(allo) 3.355 E .855(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa) 3.354 G .854(thname Expansion).1 F F0(abo)3.354 E -.15(ve)-.15 G 3.354 -(\)t).15 G(o)-3.354 E -.15(ex)184 276 S +(\)t).15 G(o)-3.354 E -.15(ex)184 408 S (pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 -288 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 -300 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677 +420 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 +432 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677 (ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E -(are enabled.)184 312 Q(This option is enabled by def)5 E(ault.)-.1 E F1 -(pr)144 324 Q(omptv)-.18 E(ars)-.1 E F0 1.448 -(If set, prompt strings under)184 336 R 1.448(go parameter e)-.18 F -1.447(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 348 +(are enabled.)184 444 Q(This option is enabled by def)5 E(ault.)-.1 E F1 +(pr)144 456 Q(omptv)-.18 E(ars)-.1 E F0 1.448 +(If set, prompt strings under)184 468 R 1.448(go parameter e)-.18 F +1.447(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 480 S .17(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 -(fter being e)-2.67 F .17(xpanded as described in)-.15 F F3(PR)2.671 E +(fter being e)-2.67 F .17(xpanded as described in)-.15 F F2(PR)2.671 E (OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G(.).15 E -(This option is enabled by def)184 360 Q(ault.)-.1 E F1 -.18(re)144 372 +(This option is enabled by def)184 492 Q(ault.)-.1 E F1 -.18(re)144 504 S(stricted_shell).18 E F0 1.069 (The shell sets this option if it is started in restricted mode \(see) -184 384 R F3 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 396 Q 2.86 +184 516 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 528 Q 2.86 (w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36 (This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G -(-).15 E(cuted, allo)184 408 Q(wing the startup \214les to disco)-.25 E +(-).15 E(cuted, allo)184 540 Q(wing the startup \214les to disco)-.25 E -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E -F1(shift_v)144 420 Q(erbose)-.1 E F0 .502(If set, the)184 432 R F1 +F1(shift_v)144 552 Q(erbose)-.1 E F0 .502(If set, the)184 564 R F1 (shift)3.002 E F0 -.2(bu)3.002 G .501 (iltin prints an error message when the shift count e).2 F .501 -(xceeds the number)-.15 F(of positional parameters.)184 444 Q F1(sour) -144 456 Q(cepath)-.18 E F0 .77(If set, the)184 468 R F1(sour)3.27 E(ce) +(xceeds the number)-.15 F(of positional parameters.)184 576 Q F1(sour) +144 588 Q(cepath)-.18 E F0 .77(If set, the)184 600 R F1(sour)3.27 E(ce) -.18 E F0(\()3.27 E F1(.)A F0 3.27(\)b)C .77(uiltin uses the v)-3.47 F -.771(alue of)-.25 F F3 -.666(PA)3.271 G(TH)-.189 E F0 .771 +.771(alue of)-.25 F F2 -.666(PA)3.271 G(TH)-.189 E F0 .771 (to \214nd the directory containing the)3.021 F -(\214le supplied as an ar)184 480 Q 2.5(gument. This)-.18 F -(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 492 Q F0 -(If set, the)184 504 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E +(\214le supplied as an ar)184 612 Q 2.5(gument. This)-.18 F +(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 624 Q F0 +(If set, the)184 636 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E (xpands backslash-escape sequences by def)-.15 E(ault.)-.1 E F1(suspend) -108 520.8 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 532.8 R +108 652.8 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 664.8 R -.15(xe)-.15 G 1.002(cution of this shell until it recei).15 F -.15(ve) --.25 G 3.501(sa).15 G F3(SIGCONT)A F0 3.501(signal. A)3.251 F 1.001 -(login shell cannot be)3.501 F .022(suspended; the)144 544.8 R F1 +-.25 G 3.501(sa).15 G F2(SIGCONT)A F0 3.501(signal. A)3.251 F 1.001 +(login shell cannot be)3.501 F .022(suspended; the)144 676.8 R F1 2.522 E F0 .022(option can be used to o)2.522 F -.15(ve)-.15 G .022 (rride this and force the suspension.).15 F .023(The return status is) -5.023 F 2.5(0u)144 556.8 S(nless the shell is a login shell and)-2.5 E +5.023 F 2.5(0u)144 688.8 S(nless the shell is a login shell and)-2.5 E F12.5 E F0(is not supplied, or if job control is not enabled.)2.5 -E F1(test)108 573.6 Q F2 -.2(ex)2.5 G(pr).2 E F1([)108 585.6 Q F2 -.2 +E F1(test)108 705.6 Q F3 -.2(ex)2.5 G(pr).2 E F1([)108 717.6 Q F3 -.2 (ex)2.5 G(pr).2 E F1(])2.5 E F0 .878 -(Return a status of 0 \(true\) or 1 \(f)144 585.6 R .877 +(Return a status of 0 \(true\) or 1 \(f)144 717.6 R .877 (alse\) depending on the e)-.1 F -.25(va)-.25 G .877 -(luation of the conditional e).25 F(xpression)-.15 E F2 -.2(ex)144 597.6 +(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 729.6 S(pr).2 E F0 5.53(.E).73 G .53 (ach operator and operand must be a separate ar)-5.53 F 3.03 -(gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.08 -(primaries described abo)144 609.6 R 3.38 -.15(ve u)-.15 H(nder).15 E F3 -(CONDITION)5.58 E 3.079(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)A -F1(test)7.579 E F0 3.079(does not accept an)5.579 F(y)-.15 E -(options, nor does it accept and ignore an ar)144 621.6 Q(gument of)-.18 -E F12.5 E F0(as signifying the end of options.)2.5 E .785 -(Expressions may be combined using the follo)144 639.6 R .786 -(wing operators, listed in decreasing order of prece-)-.25 F 3.412 -(dence. The)144 651.6 R -.25(eva)3.412 G .912 -(luation depends on the number of ar).25 F .911(guments; see belo)-.18 F -4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F -(used when there are \214v)144 663.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G -(ore ar)-2.5 E(guments.)-.18 E F1(!)144 675.6 Q F2 -.2(ex)2.5 G(pr).2 E -F0 -.35(Tr)180 675.6 S(ue if).35 E F2 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 -E(alse.)-.1 E F1(\()144 687.6 Q F2 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 -.26(Returns the v)180 687.6 R .26(alue of)-.25 F F2 -.2(ex)2.76 G(pr).2 -E F0 5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26 -(rride the normal precedence of opera-).15 F(tors.)180 699.6 Q -(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(72)190.395 E 0 Cg EP +(gument. Expressions)-.18 F .53(are composed of the)3.03 F(GNU Bash 4.4) +72 768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(72)185.545 E 0 +Cg EP %%Page: 73 73 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 -/Times-Italic@0 SF -.2(ex)144 84 S(pr1).2 E F02.5 E/F2 10 -/Times-Bold@0 SF(a)A F1 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 96 S -(ue if both).35 E F1 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E F1 -.2(ex)2.5 G -(pr2).2 E F0(are true.)2.52 E F1 -.2(ex)144 108 S(pr1).2 E F02.5 E -F2(o)A F1 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 120 S(ue if either).35 E -F1 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F1 -.2(ex)2.5 G(pr2).2 E F0 -(is true.)2.52 E F2(test)144 136.8 Q F0(and)2.5 E F2([)2.5 E F0 -.25 -(eva)2.5 G(luate conditional e).25 E +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 3.08 +(primaries described abo)144 84 R 3.38 -.15(ve u)-.15 H(nder).15 E/F1 9 +/Times-Bold@0 SF(CONDITION)5.58 E 3.079(AL EXPRESSIONS)-.18 F/F2 9 +/Times-Roman@0 SF(.)A/F3 10/Times-Bold@0 SF(test)7.579 E F0 3.079 +(does not accept an)5.579 F(y)-.15 E +(options, nor does it accept and ignore an ar)144 96 Q(gument of)-.18 E +F32.5 E F0(as signifying the end of options.)2.5 E .785 +(Expressions may be combined using the follo)144 114 R .786 +(wing operators, listed in decreasing order of prece-)-.25 F 3.412 +(dence. The)144 126 R -.25(eva)3.412 G .912 +(luation depends on the number of ar).25 F .911(guments; see belo)-.18 F +4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F +(used when there are \214v)144 138 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G(ore ar) +-2.5 E(guments.)-.18 E F3(!)144 150 Q/F4 10/Times-Italic@0 SF -.2(ex)2.5 +G(pr).2 E F0 -.35(Tr)180 150 S(ue if).35 E F4 -.2(ex)2.5 G(pr).2 E F0 +(is f)3.23 E(alse.)-.1 E F3(\()144 162 Q F4 -.2(ex)2.5 G(pr).2 E F3(\)) +2.5 E F0 .26(Returns the v)180 162 R .26(alue of)-.25 F F4 -.2(ex)2.76 G +(pr).2 E F0 5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G +.26(rride the normal precedence of opera-).15 F(tors.)180 174 Q F4 -.2 +(ex)144 186 S(pr1).2 E F02.5 E F3(a)A F4 -.2(ex)2.5 G(pr2).2 E F0 +-.35(Tr)180 198 S(ue if both).35 E F4 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E +F4 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F4 -.2(ex)144 210 S(pr1).2 +E F02.5 E F3(o)A F4 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 222 S +(ue if either).35 E F4 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F4 -.2(ex)2.5 G +(pr2).2 E F0(is true.)2.52 E F3(test)144 238.8 Q F0(and)2.5 E F3([)2.5 E +F0 -.25(eva)2.5 G(luate conditional e).25 E (xpressions using a set of rules based on the number of ar)-.15 E -(guments.)-.18 E 2.5(0a)144 154.8 S -.18(rg)-2.5 G(uments).18 E(The e) -180 166.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 178.8 S -.18 -(rg)-2.5 G(ument).18 E(The e)180 190.8 Q +(guments.)-.18 E 2.5(0a)144 256.8 S -.18(rg)-2.5 G(uments).18 E(The e) +180 268.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 280.8 S -.18 +(rg)-2.5 G(ument).18 E(The e)180 292.8 Q (xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 202.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) -180 214.8 R .37(gument is)-.18 F F2(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 +E 2.5(2a)144 304.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) +180 316.8 R .37(gument is)-.18 F F3(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 F .37(xpression is true if and only if the second ar)-.15 F .37 -(gument is null.)-.18 F .379(If the \214rst ar)180 226.8 R .38 +(gument is null.)-.18 F .379(If the \214rst ar)180 328.8 R .38 (gument is one of the unary conditional operators listed abo)-.18 F .68 --.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(CONDI-)2.88 E(TION)180 -238.8 Q .553(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(,)A F0 .552 -(the e)2.802 F .552(xpression is true if the unary test is true.)-.15 F -.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 250.8 Q +-.15(ve u)-.15 H(nder).15 E F1(CONDI-)2.88 E(TION)180 340.8 Q .553 +(AL EXPRESSIONS)-.18 F F2(,)A F0 .552(the e)2.802 F .552 +(xpression is true if the unary test is true.)-.15 F .552 +(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 352.8 Q (alid unary conditional operator)-.25 E 2.5(,t)-.4 G(he e)-2.5 E -(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 262.8 S -.18(rg)-2.5 G -(uments).18 E .236(The follo)180 274.8 R .236 +(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 364.8 S -.18(rg)-2.5 G +(uments).18 E .236(The follo)180 376.8 R .236 (wing conditions are applied in the order listed.)-.25 F .236 (If the second ar)5.236 F .236(gument is one of)-.18 F .855 -(the binary conditional operators listed abo)180 286.8 R 1.155 -.15 -(ve u)-.15 H(nder).15 E F3(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F -F4(,)A F0(the)3.104 E .578(result of the e)180 298.8 R .578(xpression i\ +(the binary conditional operators listed abo)180 388.8 R 1.155 -.15 +(ve u)-.15 H(nder).15 E F1(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F +F2(,)A F0(the)3.104 E .578(result of the e)180 400.8 R .578(xpression i\ s the result of the binary test using the \214rst and third ar)-.15 F -(guments)-.18 E 1.333(as operands.)180 310.8 R(The)6.333 E F23.833 -E F0(and)3.833 E F23.832 E F0 1.332 +(guments)-.18 E 1.333(as operands.)180 412.8 R(The)6.333 E F33.833 +E F0(and)3.833 E F33.832 E F0 1.332 (operators are considered binary operators when there are)3.832 F .558 -(three ar)180 322.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 -F .558(gument is)-.18 F F2(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F +(three ar)180 424.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 +F .558(gument is)-.18 F F3(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F .558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F (o-ar)-.1 E(gument)-.18 E .521(test using the second and third ar)180 -334.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .52 -(gument is e)-.18 F(xactly)-.15 E F2(\()3.02 E F0 .52(and the third)3.02 -F(ar)180 346.8 Q .485(gument is e)-.18 F(xactly)-.15 E F2(\))2.985 E F0 +436.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .52 +(gument is e)-.18 F(xactly)-.15 E F3(\()3.02 E F0 .52(and the third)3.02 +F(ar)180 448.8 Q .485(gument is e)-.18 F(xactly)-.15 E F3(\))2.985 E F0 2.985(,t)C .485(he result is the one-ar)-2.985 F .485 (gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E -(wise, the e)180 358.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 -370.8 S -.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 382.8 R -.385(gument is)-.18 F F2(!)2.885 E F0 2.885(,t)C .385 +(wise, the e)180 460.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 +472.8 S -.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 484.8 R +.385(gument is)-.18 F F3(!)2.885 E F0 2.885(,t)C .385 (he result is the ne)-2.885 F -.05(ga)-.15 G .384(tion of the three-ar) .05 F .384(gument e)-.18 F .384(xpression com-)-.15 F 1.647 -(posed of the remaining ar)180 394.8 R 4.147(guments. Otherwise,)-.18 F +(posed of the remaining ar)180 496.8 R 4.147(guments. Otherwise,)-.18 F 1.647(the e)4.147 F 1.648(xpression is parsed and e)-.15 F -.25(va)-.25 G(luated).25 E(according to precedence using the rules listed abo)180 -406.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 418.8 S 2.5(rm)-2.5 G(ore ar) --2.5 E(guments)-.18 E 1.635(The e)180 430.8 R 1.635 +508.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 520.8 S 2.5(rm)-2.5 G(ore ar) +-2.5 E(guments)-.18 E 1.635(The e)180 532.8 R 1.635 (xpression is parsed and e)-.15 F -.25(va)-.25 G 1.635 (luated according to precedence using the rules listed).25 F(abo)180 -442.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 460.8 Q F2(test)2.5 E -F0(or)2.5 E F2([)2.5 E F0 2.5(,t)C(he)-2.5 E F2(<)2.5 E F0(and)2.5 E F2 +544.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 562.8 Q F3(test)2.5 E +F0(or)2.5 E F3([)2.5 E F0 2.5(,t)C(he)-2.5 E F3(<)2.5 E F0(and)2.5 E F3 (>)2.5 E F0(operators sort le)2.5 E -(xicographically using ASCII ordering.)-.15 E F2(times)108 477.6 Q F0 +(xicographically using ASCII ordering.)-.15 E F3(times)108 579.6 Q F0 1.229(Print the accumulated user and system times for the shell and for\ - processes run from the shell.)144 477.6 R(The return status is 0.)144 -489.6 Q F2(trap)108 506.4 Q F0([)2.5 E F2(\255lp)A F0 2.5(][)C([)-2.5 E -F1(ar)A(g)-.37 E F0(])A F1(sigspec)2.5 E F0(...])2.5 E .703(The command) -144 518.4 R F1(ar)3.533 E(g)-.37 E F0 .703(is to be read and e)3.423 F + processes run from the shell.)144 579.6 R(The return status is 0.)144 +591.6 Q F3(trap)108 608.4 Q F0([)2.5 E F3(\255lp)A F0 2.5(][)C([)-2.5 E +F4(ar)A(g)-.37 E F0(])A F4(sigspec)2.5 E F0(...])2.5 E .703(The command) +144 620.4 R F4(ar)3.533 E(g)-.37 E F0 .703(is to be read and e)3.423 F -.15(xe)-.15 G .702(cuted when the shell recei).15 F -.15(ve)-.25 G -3.202(ss).15 G(ignal\(s\))-3.202 E F1(sigspec)3.202 E F0 5.702(.I).31 G -(f)-5.702 E F1(ar)3.532 E(g)-.37 E F0(is)3.422 E .608 -(absent \(and there is a single)144 530.4 R F1(sigspec)3.108 E F0 3.108 -(\)o)C(r)-3.108 E F23.108 E F0 3.108(,e)C .608 +3.202(ss).15 G(ignal\(s\))-3.202 E F4(sigspec)3.202 E F0 5.702(.I).31 G +(f)-5.702 E F4(ar)3.532 E(g)-.37 E F0(is)3.422 E .608 +(absent \(and there is a single)144 632.4 R F4(sigspec)3.108 E F0 3.108 +(\)o)C(r)-3.108 E F33.108 E F0 3.108(,e)C .608 (ach speci\214ed signal is reset to its original disposition)-3.108 F -.659(\(the v)144 542.4 R .659(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F1(ar)3.488 E(g)-.37 E F0 .658 -(is the null string the signal speci\214ed by each)3.378 F F1(sigspec) -144.34 554.4 Q F0 .58(is ignored by the shell and by the commands it in) -3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F1(ar)3.411 E(g)-.37 E -F0 .581(is not present and)3.301 F F23.081 E F0(has)3.081 E 1.215 -(been supplied, then the trap commands associated with each)144 566.4 R -F1(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 -F(gu-)-.18 E .86(ments are supplied or if only)144 578.4 R F23.36 -E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F2(trap)3.36 E F0 .86 +.659(\(the v)144 644.4 R .659(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F4(ar)3.488 E(g)-.37 E F0 .658 +(is the null string the signal speci\214ed by each)3.378 F F4(sigspec) +144.34 656.4 Q F0 .58(is ignored by the shell and by the commands it in) +3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F4(ar)3.411 E(g)-.37 E +F0 .581(is not present and)3.301 F F33.081 E F0(has)3.081 E 1.215 +(been supplied, then the trap commands associated with each)144 668.4 R +F4(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 +F(gu-)-.18 E .86(ments are supplied or if only)144 680.4 R F33.36 +E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F3(trap)3.36 E F0 .86 (prints the list of commands associated with each)3.36 F 2.83 -(signal. The)144 590.4 R F22.83 E F0 .33(option causes the shell \ +(signal. The)144 692.4 R F32.83 E F0 .33(option causes the shell \ to print a list of signal names and their corresponding num-)2.83 F 4.31 -(bers. Each)144 602.4 R F1(sigspec)4.65 E F0 1.811 -(is either a signal name de\214ned in <)4.62 F F1(signal.h)A F0 1.811 +(bers. Each)144 704.4 R F4(sigspec)4.65 E F0 1.811 +(is either a signal name de\214ned in <)4.62 F F4(signal.h)A F0 1.811 (>, or a signal number)B 6.811(.S)-.55 G(ignal)-6.811 E -(names are case insensiti)144 614.4 Q .3 -.15(ve a)-.25 H(nd the).15 E -F3(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.649(If a)144 632.4 R F1 -(sigspec)4.489 E F0(is)4.459 E F3(EXIT)4.149 E F0 1.649 -(\(0\) the command)3.899 F F1(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F --.15(xe)-.15 G 1.649(cuted on e).15 F 1.648(xit from the shell.)-.15 F -1.648(If a)6.648 F F1(sigspec)4.488 E F0(is)4.458 E F3(DEB)144 644.4 Q -(UG)-.09 E F4(,)A F0 1.167(the command)3.417 F F1(ar)3.997 E(g)-.37 E F0 -1.167(is e)3.887 F -.15(xe)-.15 G 1.167(cuted before e).15 F -.15(ve) --.25 G(ry).15 E F1 1.168(simple command)3.667 F F0(,)A F1(for)3.668 E F0 -(command,)3.668 E F1(case)3.668 E F0(com-)3.668 E(mand,)144 656.4 Q F1 -(select)2.647 E F0 .147(command, e)2.647 F -.15(ve)-.25 G .147 -(ry arithmetic).15 F F1(for)2.647 E F0 .146 -(command, and before the \214rst command e)2.647 F -.15(xe)-.15 G .146 -(cutes in a).15 F .145(shell function \(see)144 668.4 R F3 .145 -(SHELL GRAMMAR)2.645 F F0(abo)2.395 E -.15(ve)-.15 G 2.646(\). Refer).15 -F .146(to the description of the)2.646 F F2(extdeb)2.646 E(ug)-.2 E F0 -.146(option to)2.646 F(the)144 680.4 Q F2(shopt)3.201 E F0 -.2(bu)3.201 -G .7(iltin for details of its ef).2 F .7(fect on the)-.25 F F2(DEB)3.2 E -(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F1(sigspec)3.54 E F0(is)3.51 E -F3(RETURN)3.2 E F4(,)A F0 .7(the com-)2.95 F(mand)144 692.4 Q F1(ar) -3.473 E(g)-.37 E F0 .643(is e)3.363 F -.15(xe)-.15 G .643 -(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G -.644(cuted with the).15 F F2(.)3.144 E F0(or)3.144 E F2(sour)3.144 E(ce) --.18 E F0 -.2(bu)3.144 G(iltins).2 E(\214nishes e)144 704.4 Q -.15(xe) --.15 G(cuting.).15 E .522(If a)144 722.4 R F1(sigspec)3.362 E F0(is) -3.332 E F3(ERR)3.022 E F4(,)A F0 .522(the command)2.772 F F1(ar)3.352 E -(g)-.37 E F0 .522(is e)3.242 F -.15(xe)-.15 G .522(cuted whene).15 F --.15(ve)-.25 G 3.022(raap).15 G .521(ipeline \(which may consist of a) --3.022 F(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(73)190.395 E 0 -Cg EP +(names are case insensiti)144 716.4 Q .3 -.15(ve a)-.25 H(nd the).15 E +F1(SIG)2.5 E F0(pre\214x is optional.)2.25 E(GNU Bash 4.4)72 768 Q +(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(73)185.545 E 0 Cg EP %%Page: 74 74 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .185(single simpl\ -e command\), a list, or a compound command returns a non\255zero e)144 -84 R .185(xit status, subject to)-.15 F .452(the follo)144 96 R .452 -(wing conditions.)-.25 F(The)5.452 E/F1 9/Times-Bold@0 SF(ERR)2.952 E F0 -.451(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .451 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.649(If a)144 84 +R/F1 10/Times-Italic@0 SF(sigspec)4.489 E F0(is)4.459 E/F2 9 +/Times-Bold@0 SF(EXIT)4.149 E F0 1.649(\(0\) the command)3.899 F F1(ar) +4.479 E(g)-.37 E F0 1.649(is e)4.369 F -.15(xe)-.15 G 1.649(cuted on e) +.15 F 1.648(xit from the shell.)-.15 F 1.648(If a)6.648 F F1(sigspec) +4.488 E F0(is)4.458 E F2(DEB)144 96 Q(UG)-.09 E/F3 9/Times-Roman@0 SF(,) +A F0 1.167(the command)3.417 F F1(ar)3.997 E(g)-.37 E F0 1.167(is e) +3.887 F -.15(xe)-.15 G 1.167(cuted before e).15 F -.15(ve)-.25 G(ry).15 +E F1 1.168(simple command)3.667 F F0(,)A F1(for)3.668 E F0(command,) +3.668 E F1(case)3.668 E F0(com-)3.668 E(mand,)144 108 Q F1(select)2.647 +E F0 .147(command, e)2.647 F -.15(ve)-.25 G .147(ry arithmetic).15 F F1 +(for)2.647 E F0 .146(command, and before the \214rst command e)2.647 F +-.15(xe)-.15 G .146(cutes in a).15 F .145(shell function \(see)144 120 R +F2 .145(SHELL GRAMMAR)2.645 F F0(abo)2.395 E -.15(ve)-.15 G 2.646 +(\). Refer).15 F .146(to the description of the)2.646 F/F4 10 +/Times-Bold@0 SF(extdeb)2.646 E(ug)-.2 E F0 .146(option to)2.646 F(the) +144 132 Q F4(shopt)3.201 E F0 -.2(bu)3.201 G .7 +(iltin for details of its ef).2 F .7(fect on the)-.25 F F4(DEB)3.2 E(UG) +-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F1(sigspec)3.54 E F0(is)3.51 E F2 +(RETURN)3.2 E F3(,)A F0 .7(the com-)2.95 F(mand)144 144 Q F1(ar)3.473 E +(g)-.37 E F0 .643(is e)3.363 F -.15(xe)-.15 G .643 +(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G +.644(cuted with the).15 F F4(.)3.144 E F0(or)3.144 E F4(sour)3.144 E(ce) +-.18 E F0 -.2(bu)3.144 G(iltins).2 E(\214nishes e)144 156 Q -.15(xe)-.15 +G(cuting.).15 E .961(If a)144 174 R F1(sigspec)3.801 E F0(is)3.771 E F2 +(ERR)3.461 E F3(,)A F0 .961(the command)3.211 F F1(ar)3.791 E(g)-.37 E +F0 .961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 +G 3.461(ra).15 G .96(pipeline \(which may consist of a)-.001 F .185(sin\ +gle simple command\), a list, or a compound command returns a non\255ze\ +ro e)144 186 R .185(xit status, subject to)-.15 F .452(the follo)144 198 +R .452(wing conditions.)-.25 F(The)5.452 E F2(ERR)2.952 E F0 .451 +(trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .451 (ailed command is part of the com-)-.1 F .387 -(mand list immediately follo)144 108 R .387(wing a)-.25 F/F2 10 -/Times-Bold@0 SF(while)2.887 E F0(or)2.887 E F2(until)2.888 E F0 -.1(ke) -2.888 G(yw)-.05 E .388(ord, part of the test in an)-.1 F/F3 10 -/Times-Italic@0 SF(if)2.898 E F0 .388(statement, part)4.848 F .778 -(of a command e)144 120 R -.15(xe)-.15 G .778(cuted in a).15 F F2(&&) -3.278 E F0(or)3.278 E F2(||)3.278 E F0 .778(list e)3.278 F .778 -(xcept the command follo)-.15 F .778(wing the \214nal)-.25 F F2(&&)3.278 -E F0(or)3.278 E F2(||)3.277 E F0 3.277(,a)C -.15(ny)-3.277 G 1.28 -(command in a pipeline b)144 132 R 1.28(ut the last, or if the command') --.2 F 3.78(sr)-.55 G 1.28(eturn v)-3.78 F 1.28(alue is being in)-.25 F --.15(ve)-.4 G 1.28(rted using).15 F F2(!)3.78 E F0(.)A -(These are the same conditions obe)144 144 Q(yed by the)-.15 E F2(err) -2.5 E(exit)-.18 E F0(\()2.5 E F2A F0 2.5(\)o)C(ption.)-2.5 E 1.095 +(mand list immediately follo)144 210 R .387(wing a)-.25 F F4(while)2.887 +E F0(or)2.887 E F4(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 +(ord, part of the test in an)-.1 F F1(if)2.898 E F0 .388 +(statement, part)4.848 F .778(of a command e)144 222 R -.15(xe)-.15 G +.778(cuted in a).15 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E F0 .778 +(list e)3.278 F .778(xcept the command follo)-.15 F .778 +(wing the \214nal)-.25 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.277 E F0 +3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 234 R 1.28 +(ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v)-3.78 +F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F F4(!) +3.78 E F0(.)A(These are the same conditions obe)144 246 Q(yed by the) +-.15 E F4(err)2.5 E(exit)-.18 E F0(\()2.5 E F4A F0 2.5(\)o)C +(ption.)-2.5 E 1.095 (Signals ignored upon entry to the shell cannot be trapped or reset.)144 -162 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 -(being ignored are reset to their original v)144 174 R .662 +264 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 +(being ignored are reset to their original v)144 276 R .662 (alues in a subshell or subshell en)-.25 F .662(vironment when one is) --.4 F 2.5(created. The)144 186 R(return status is f)2.5 E(alse if an)-.1 -E(y)-.15 E F3(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G -(lid; otherwise).25 E F2(trap)2.5 E F0(returns true.)2.5 E F2(type)108 -202.8 Q F0([)2.5 E F2(\255aftpP)A F0(])A F3(name)2.5 E F0([)2.5 E F3 -(name)A F0(...])2.5 E -.4(Wi)144 214.8 S .174 -(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F3(name) +-.4 F 2.5(created. The)144 288 R(return status is f)2.5 E(alse if an)-.1 +E(y)-.15 E F1(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G +(lid; otherwise).25 E F4(trap)2.5 E F0(returns true.)2.5 E F4(type)108 +304.8 Q F0([)2.5 E F4(\255aftpP)A F0(])A F1(name)2.5 E F0([)2.5 E F1 +(name)A F0(...])2.5 E -.4(Wi)144 316.8 S .174 +(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F1(name) 3.034 E F0 -.1(wo)2.854 G .173 (uld be interpreted if used as a command name.).1 F .173(If the)5.173 F -F2144 226.8 Q F0 .842(option is used,)3.342 F F2(type)3.342 E F0 -.843(prints a string which is one of)3.343 F F3(alias)3.343 E F0(,).27 E -F3 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F3(function)3.343 E F0 -(,).24 E F3 -.2(bu)3.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F3 -(\214le)5.253 E F0(if)3.523 E F3(name)144.36 238.8 Q F0 .087 +F4144 328.8 Q F0 .842(option is used,)3.342 F F4(type)3.342 E F0 +.843(prints a string which is one of)3.343 F F1(alias)3.343 E F0(,).27 E +F1 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F1(function)3.343 E F0 +(,).24 E F1 -.2(bu)3.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F1 +(\214le)5.253 E F0(if)3.523 E F1(name)144.36 340.8 Q F0 .087 (is an alias, shell reserv)2.767 F .087(ed w)-.15 F .087 (ord, function, b)-.1 F .086(uiltin, or disk \214le, respecti)-.2 F -.15 -(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F3 +(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F1 (name)2.946 E F0 .086(is not)2.766 F .118 -(found, then nothing is printed, and an e)144 250.8 R .118 +(found, then nothing is printed, and an e)144 352.8 R .118 (xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F -F22.619 E F0 .119(option is used,)2.619 F F2(type)2.619 E F0 .855 -(either returns the name of the disk \214le that w)144 262.8 R .855 -(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F3(name)3.715 E F0 +F42.619 E F0 .119(option is used,)2.619 F F4(type)2.619 E F0 .855 +(either returns the name of the disk \214le that w)144 364.8 R .855 +(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F1(name)3.715 E F0 .855(were speci\214ed as a com-)3.535 F .64(mand name, or nothing if)144 -274.8 R/F4 10/Courier@0 SF .64(type -t name)3.14 F F0 -.1(wo)3.14 G .641 -(uld not return).1 F F3(\214le)3.141 E F0 5.641(.T).18 G(he)-5.641 E F2 -3.141 E F0 .641(option forces a)3.141 F F1 -.666(PA)3.141 G(TH) --.189 E F0 .113(search for each)144 286.8 R F3(name)2.613 E F0 2.613(,e) -C -.15(ve)-2.863 G 2.613(ni).15 G(f)-2.613 E F4 .113(type -t name)2.613 -F F0 -.1(wo)2.613 G .113(uld not return).1 F F3(\214le)2.613 E F0 5.113 -(.I).18 G 2.613(fa)-5.113 G .112(command is hashed,)-.001 F F2 -2.612 E F0(and)144 298.8 Q F23.23 E F0 .73(print the hashed v)3.23 +376.8 R/F5 10/Courier@0 SF .64(type -t name)3.14 F F0 -.1(wo)3.14 G .641 +(uld not return).1 F F1(\214le)3.141 E F0 5.641(.T).18 G(he)-5.641 E F4 +3.141 E F0 .641(option forces a)3.141 F F2 -.666(PA)3.141 G(TH) +-.189 E F0 .113(search for each)144 388.8 R F1(name)2.613 E F0 2.613(,e) +C -.15(ve)-2.863 G 2.613(ni).15 G(f)-2.613 E F5 .113(type -t name)2.613 +F F0 -.1(wo)2.613 G .113(uld not return).1 F F1(\214le)2.613 E F0 5.113 +(.I).18 G 2.613(fa)-5.113 G .112(command is hashed,)-.001 F F4 +2.612 E F0(and)144 400.8 Q F43.23 E F0 .73(print the hashed v)3.23 F .731 (alue, which is not necessarily the \214le that appears \214rst in)-.25 -F F1 -.666(PA)3.231 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .731 -(If the)5.231 F F2144 310.8 Q F0 1.749(option is used,)4.249 F F2 -(type)4.248 E F0 1.748(prints all of the places that contain an e)4.248 -F -.15(xe)-.15 G 1.748(cutable named).15 F F3(name)4.248 E F0 6.748(.T) -.18 G(his)-6.748 E .744 -(includes aliases and functions, if and only if the)144 322.8 R F2 +F F2 -.666(PA)3.231 G(TH)-.189 E F3(.)A F0 .731(If the)5.231 F F4 +144 412.8 Q F0 1.749(option is used,)4.249 F F4(type)4.248 E F0 1.748 +(prints all of the places that contain an e)4.248 F -.15(xe)-.15 G 1.748 +(cutable named).15 F F1(name)4.248 E F0 6.748(.T).18 G(his)-6.748 E .744 +(includes aliases and functions, if and only if the)144 424.8 R F4 3.244 E F0 .744(option is not also used.)3.244 F .744 (The table of hashed)5.744 F 1.223(commands is not consulted when using) -144 334.8 R F23.723 E F0 6.223(.T)C(he)-6.223 E F23.723 E F0 +144 436.8 R F43.723 E F0 6.223(.T)C(he)-6.223 E F43.723 E F0 1.223(option suppresses shell function lookup, as)3.723 F .325(with the) -144 346.8 R F2(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F2(type) +144 448.8 R F4(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F4(type) 5.325 E F0 .325(returns true if all of the ar)2.825 F .326 (guments are found, f)-.18 F .326(alse if an)-.1 F 2.826(ya)-.15 G .326 -(re not)-2.826 F(found.)144 358.8 Q F2(ulimit)108 375.6 Q F0([)2.5 E F2 -(\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F3(limit)A F0(]])A(Pro)144 -387.6 Q .244(vides control o)-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244 +(re not)-2.826 F(found.)144 460.8 Q F4(ulimit)108 477.6 Q F0([)2.5 E F4 +(\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F1(limit)A F0(]])A(Pro)144 +489.6 Q .244(vides control o)-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244 (he resources a)-2.744 F -.25(va)-.2 G .244 (ilable to the shell and to processes started by it, on systems).25 F -.943(that allo)144 399.6 R 3.443(ws)-.25 G .943(uch control.)-3.443 F -(The)5.943 E F23.443 E F0(and)3.443 E F23.444 E F0 .944 +.943(that allo)144 501.6 R 3.443(ws)-.25 G .943(uch control.)-3.443 F +(The)5.943 E F43.443 E F0(and)3.443 E F43.444 E F0 .944 (options specify that the hard or soft limit is set for the)3.444 F(gi) -144 411.6 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 +144 513.6 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 (hard limit cannot be increased by a non-root user once it is set; a so\ -ft limit may)2.709 F .425(be increased up to the v)144 423.6 R .425 -(alue of the hard limit.)-.25 F .426(If neither)5.425 F F22.926 E -F0(nor)2.926 E F22.926 E F0 .426 +ft limit may)2.709 F .425(be increased up to the v)144 525.6 R .425 +(alue of the hard limit.)-.25 F .426(If neither)5.425 F F42.926 E +F0(nor)2.926 E F42.926 E F0 .426 (is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144 -435.6 R .139(The v)5.139 F .139(alue of)-.25 F F3(limit)2.729 E F0 .139 +537.6 R .139(The v)5.139 F .139(alue of)-.25 F F1(limit)2.729 E F0 .139 (can be a number in the unit speci\214ed for the resource or one)3.319 F -.741(of the special v)144 447.6 R(alues)-.25 E F2(hard)3.241 E F0(,)A F2 -(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F2(unlimited)3.241 E F0 3.241(,w) +.741(of the special v)144 549.6 R(alues)-.25 E F4(hard)3.241 E F0(,)A F4 +(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F4(unlimited)3.241 E F0 3.241(,w) C .741(hich stand for the current hard limit, the current)-3.241 F .78 -(soft limit, and no limit, respecti)144 459.6 R -.15(ve)-.25 G(ly).15 E -5.78(.I)-.65 G(f)-5.78 E F3(limit)3.37 E F0 .78 +(soft limit, and no limit, respecti)144 561.6 R -.15(ve)-.25 G(ly).15 E +5.78(.I)-.65 G(f)-5.78 E F1(limit)3.37 E F0 .78 (is omitted, the current v)3.96 F .78(alue of the soft limit of the)-.25 -F .498(resource is printed, unless the)144 471.6 R F22.999 E F0 +F .498(resource is printed, unless the)144 573.6 R F42.999 E F0 .499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .499 (more than one resource is speci\214ed, the)2.999 F -(limit name and unit are printed before the v)144 483.6 Q 2.5 -(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F2 -144 495.6 Q F0(All current limits are reported)180 495.6 Q F2 -144 507.6 Q F0(The maximum sock)180 507.6 Q(et b)-.1 E(uf)-.2 E -(fer size)-.25 E F2144 519.6 Q F0 -(The maximum size of core \214les created)180 519.6 Q F2144 531.6 -Q F0(The maximum size of a process')180 531.6 Q 2.5(sd)-.55 G(ata se) --2.5 E(gment)-.15 E F2144 543.6 Q F0 -(The maximum scheduling priority \("nice"\))180 543.6 Q F2144 -555.6 Q F0 +(limit name and unit are printed before the v)144 585.6 Q 2.5 +(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F4 +144 597.6 Q F0(All current limits are reported)180 597.6 Q F4 +144 609.6 Q F0(The maximum sock)180 609.6 Q(et b)-.1 E(uf)-.2 E +(fer size)-.25 E F4144 621.6 Q F0 +(The maximum size of core \214les created)180 621.6 Q F4144 633.6 +Q F0(The maximum size of a process')180 633.6 Q 2.5(sd)-.55 G(ata se) +-2.5 E(gment)-.15 E F4144 645.6 Q F0 +(The maximum scheduling priority \("nice"\))180 645.6 Q F4144 +657.6 Q F0 (The maximum size of \214les written by the shell and its children)180 -555.6 Q F2144 567.6 Q F0(The maximum number of pending signals)180 -567.6 Q F2144 579.6 Q F0 -(The maximum number of kqueues that may be allocated)180 579.6 Q F2 -144 591.6 Q F0(The maximum size that may be lock)180 591.6 Q -(ed into memory)-.1 E F2144 603.6 Q F0 -(The maximum resident set size \(man)180 603.6 Q 2.5(ys)-.15 G -(ystems do not honor this limit\))-2.5 E F2144 615.6 Q F0 .791(Th\ +657.6 Q F4144 669.6 Q F0(The maximum number of pending signals)180 +669.6 Q F4144 681.6 Q F0 +(The maximum number of kqueues that may be allocated)180 681.6 Q F4 +144 693.6 Q F0(The maximum size that may be lock)180 693.6 Q +(ed into memory)-.1 E F4144 705.6 Q F0 +(The maximum resident set size \(man)180 705.6 Q 2.5(ys)-.15 G +(ystems do not honor this limit\))-2.5 E F4144 717.6 Q F0 .791(Th\ e maximum number of open \214le descriptors \(most systems do not allo) -180 615.6 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F -(be set\))180 627.6 Q F2144 639.6 Q F0 -(The pipe size in 512-byte blocks \(this may not be set\))180 639.6 Q F2 -144 651.6 Q F0 -(The maximum number of bytes in POSIX message queues)180 651.6 Q F2 -144 663.6 Q F0(The maximum real-time scheduling priority)180 663.6 -Q F2144 675.6 Q F0(The maximum stack size)180 675.6 Q F2144 -687.6 Q F0(The maximum amount of cpu time in seconds)180 687.6 Q F2 -144 699.6 Q F0(The maximum number of processes a)180 699.6 Q -.25 -(va)-.2 G(ilable to a single user).25 E F2144 711.6 Q F0 .47 -(The maximum amount of virtual memory a)180 711.6 R -.25(va)-.2 G .47 -(ilable to the shell and, on some systems, to).25 F(its children)180 -723.6 Q(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(74)190.395 E 0 -Cg EP +180 717.6 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F +(be set\))180 729.6 Q(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve) +-.15 G(mber 16).15 E(74)185.545 E 0 Cg EP %%Page: 75 75 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF144 84 Q F0(The maximum number of \214le locks)180 84 Q F1 -144 96 Q F0(The maximum number of pseudoterminals)180 96 Q F1144 -108 Q F0(The maximum number of threads)180 108 Q(If)144 124.8 Q/F2 10 -/Times-Italic@0 SF(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G -.468(n, and the).15 F F12.968 E F0 .468(option is not used,)2.968 -F F2(limit)2.968 E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468 -(alue of the speci\214ed resource.)-3.218 F(If)5.468 E .044 -(no option is gi)144 136.8 R -.15(ve)-.25 G .044(n, then).15 F F1 -2.544 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 +SF144 84 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))180 84 Q F1 +144 96 Q F0(The maximum number of bytes in POSIX message queues) +180 96 Q F1144 108 Q F0(The maximum real-time scheduling priority) +180 108 Q F1144 120 Q F0(The maximum stack size)180 120 Q F1 +144 132 Q F0(The maximum amount of cpu time in seconds)180 132 Q F1 +144 144 Q F0(The maximum number of processes a)180 144 Q -.25(va) +-.2 G(ilable to a single user).25 E F1144 156 Q F0 .47 +(The maximum amount of virtual memory a)180 156 R -.25(va)-.2 G .47 +(ilable to the shell and, on some systems, to).25 F(its children)180 168 +Q F1144 180 Q F0(The maximum number of \214le locks)180 180 Q F1 +144 192 Q F0(The maximum number of pseudoterminals)180 192 Q F1 +144 204 Q F0(The maximum number of threads)180 204 Q(If)144 220.8 +Q/F2 10/Times-Italic@0 SF(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve) +-.25 G .468(n, and the).15 F F12.968 E F0 .468 +(option is not used,)2.968 F F2(limit)2.968 E F0 .468(is the ne)2.968 F +2.968(wv)-.25 G .468(alue of the speci\214ed resource.)-3.218 F(If)5.468 +E .044(no option is gi)144 232.8 R -.15(ve)-.25 G .044(n, then).15 F F1 +2.544 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 (lues are in 1024-byte increments, e)1.11 F .045(xcept for)-.15 F F1 2.545 E F0 2.545(,w)C .045(hich is)-2.545 F 1.589(in seconds;)144 -148.8 R F14.089 E F0 4.089(,w)C 1.589 +244.8 R F14.089 E F0 4.089(,w)C 1.589 (hich is in units of 512-byte blocks;)-4.089 F F14.089 E F0(,)A F1 4.089 E F0(,)A F14.089 E F0(,)A F14.089 E F0(,)A F1 4.089 E F0 4.089(,a)C(nd)-4.089 E F14.089 E F0 4.088(,w)C -1.588(hich are)-4.088 F 1.438(unscaled v)144 160.8 R 1.438 +1.588(hich are)-4.088 F 1.438(unscaled v)144 256.8 R 1.438 (alues; and, when in Posix mode,)-.25 F F13.939 E F0(and)3.939 E F13.939 E F0 3.939(,w)C 1.439(hich are in 512-byte increments.) --3.939 F(The)6.439 E .404(return status is 0 unless an in)144 172.8 R +-3.939 F(The)6.439 E .404(return status is 0 unless an in)144 268.8 R -.25(va)-.4 G .404(lid option or ar).25 F .404 (gument is supplied, or an error occurs while setting)-.18 F 2.5(an)144 -184.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 201.6 Q F0([)2.5 E +280.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 297.6 Q F0([)2.5 E F1A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(mode)-2.5 E F0(])A -.2(The user \214le-creation mask is set to)144 213.6 R F2(mode)2.7 E F0 +.2(The user \214le-creation mask is set to)144 309.6 R F2(mode)2.7 E F0 5.2(.I).18 G(f)-5.2 E F2(mode)3.08 E F0(be)2.88 E .2 (gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\ therwise it is interpreted as a symbolic mode mask similar to that acce\ -pted by)144 225.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -237.6 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 +pted by)144 321.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +333.6 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 (alue of the mask is printed.)-.25 F(The)5.382 E F12.882 E F0 .382 (option causes the mask to be)2.882 F .547 -(printed in symbolic form; the def)144 249.6 R .547 +(printed in symbolic form; the def)144 345.6 R .547 (ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G (he)-3.047 E F13.047 E F0 .547(option is supplied, and)3.047 F F2 -(mode)144.38 261.6 Q F0 .551 +(mode)144.38 357.6 Q F0 .551 (is omitted, the output is in a form that may be reused as input.)3.231 -F .552(The return status is 0 if the)5.552 F(mode w)144 273.6 Q +F .552(The return status is 0 if the)5.552 F(mode w)144 369.6 Q (as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E (gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1 -(unalias)108 290.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 -(...])2.5 E(Remo)144 302.4 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) +(unalias)108 386.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 +(...])2.5 E(Remo)144 398.4 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) 4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 F(If)6.655 E F14.155 E F0 1.655(is supplied, all alias de\214nitions are)4.155 -F(remo)144 314.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E +F(remo)144 410.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E (alue is true unless a supplied)-.25 E F2(name)2.86 E F0 -(is not a de\214ned alias.)2.68 E F1(unset)108 331.2 Q F0<5bad>2.5 E F1 +(is not a de\214ned alias.)2.68 E F1(unset)108 427.2 Q F0<5bad>2.5 E F1 (fv)A F0 2.5(][)C-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...]) -2.5 E -.15(Fo)144 343.2 S 3.827(re).15 G(ach)-3.827 E F2(name)3.827 E F0 +2.5 E -.15(Fo)144 439.2 S 3.827(re).15 G(ach)-3.827 E F2(name)3.827 E F0 3.827(,r).18 G(emo)-3.827 E 1.627 -.15(ve t)-.15 H 1.327 (he corresponding v).15 F 1.327(ariable or function.)-.25 F 1.327 (If the)6.327 F F13.828 E F0 1.328(option is gi)3.828 F -.15(ve) --.25 G 1.328(n, each).15 F F2(name)144.36 355.2 Q F0 1.551 +-.25 G 1.328(n, each).15 F F2(name)144.36 451.2 Q F0 1.551 (refers to a shell v)4.231 F 1.551(ariable, and that v)-.25 F 1.551 (ariable is remo)-.25 F -.15(ve)-.15 G 4.05(d. Read-only).15 F -.25(va) -4.05 G 1.55(riables may not be).25 F 4.641(unset. If)144 367.2 R F1 +4.05 G 1.55(riables may not be).25 F 4.641(unset. If)144 463.2 R F1 4.641 E F0 2.141(is speci\214ed, each)4.641 F F2(name)5.001 E F0 2.141(refers to a shell function, and the function de\214nition is)4.821 -F(remo)144 379.2 Q -.15(ve)-.15 G 2.538(d. If).15 F(the)2.537 E F1 +F(remo)144 475.2 Q -.15(ve)-.15 G 2.538(d. If).15 F(the)2.537 E F1 2.537 E F0 .037(option is supplied, and)2.537 F F2(name)2.537 E F0 .037 (is a v)2.537 F .037(ariable with the)-.25 F F2(namer)2.537 E(ef)-.37 E F0(attrib)2.537 E(ute,)-.2 E F2(name)2.537 E F0(will)2.537 E .492 -(be unset rather than the v)144 391.2 R .492(ariable it references.)-.25 +(be unset rather than the v)144 487.2 R .492(ariable it references.)-.25 F F15.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F1 2.992 E F0 .492(option is supplied.)2.992 F .493(If no)5.493 F -.221(options are supplied, each)144 403.2 R F2(name)2.721 E F0 .221 +.221(options are supplied, each)144 499.2 R F2(name)2.721 E F0 .221 (refers to a v)2.721 F .22(ariable; if there is no v)-.25 F .22 (ariable by that name, an)-.25 F 2.72(yf)-.15 G(unc-)-2.72 E 1.188 -(tion with that name is unset.)144 415.2 R 1.189(Each unset v)6.189 F +(tion with that name is unset.)144 511.2 R 1.189(Each unset v)6.189 F 1.189(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.689(df).15 G 1.189(rom the en)-3.689 F(vironment)-.4 E 3.206 -(passed to subsequent commands.)144 427.2 R 3.206(If an)8.206 F 5.706 +(passed to subsequent commands.)144 523.2 R 3.206(If an)8.206 F 5.706 (yo)-.15 G(f)-5.706 E/F3 9/Times-Bold@0 SF(COMP_W)5.706 E(ORDBREAKS)-.09 E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM)5.455 E F4(,)A F3(SECONDS)5.455 E -F4(,)A F3(LINENO)144 439.2 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) +F4(,)A F3(LINENO)144 535.2 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) 4.347 E(AME)-.18 E F4(,)A F3(GR)4.347 E(OUPS)-.27 E F4(,)A F0(or)4.348 E F3(DIRST)4.598 E -.495(AC)-.81 G(K).495 E F0 2.098(are unset, the)4.348 F 4.598(yl)-.15 G 2.098(ose their special)-4.598 F(properties, e)144 -451.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 +547.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 G(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a) --.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 468 Q +-.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 564 Q F0([)2.5 E F1A F0 2.5(][)C F2 2.5(n.)-2.5 G(..)-2.5 E F0(])A -.8 -(Wa)144 480 S .027(it for each speci\214ed child process and return its\ +(Wa)144 576 S .027(it for each speci\214ed child process and return its\ termination status.).8 F(Each)5.026 E F2(n)2.886 E F0 .026 (may be a process ID)2.766 F .256 -(or a job speci\214cation; if a job spec is gi)144 492 R -.15(ve)-.25 G +(or a job speci\214cation; if a job spec is gi)144 588 R -.15(ve)-.25 G .256(n, all processes in that job').15 F 2.756(sp)-.55 G .256 (ipeline are w)-2.756 F .256(aited for)-.1 F 5.256(.I)-.55 G(f)-5.256 E -F2(n)3.116 E F0 .318(is not gi)144 504 R -.15(ve)-.25 G .318 +F2(n)3.116 E F0 .318(is not gi)144 600 R -.15(ve)-.25 G .318 (n, all currently acti).15 F .618 -.15(ve c)-.25 H .318 (hild processes are w).15 F .318(aited for)-.1 F 2.818(,a)-.4 G .318 (nd the return status is zero.)-2.818 F .317(If the)5.317 F F1144 -516 Q F0 .361(option is supplied,)2.861 F F1(wait)2.861 E F0 -.1(wa) +612 Q F0 .361(option is supplied,)2.861 F F1(wait)2.861 E F0 -.1(wa) 2.861 G .361(its for an).1 F 2.862(yj)-.15 G .362 (ob to terminate and returns its e)-2.862 F .362(xit status.)-.15 F(If) -5.362 E F2(n)3.222 E F0(speci\214es)3.102 E 2.596(an)144 528 S(on-e) +5.362 E F2(n)3.222 E F0(speci\214es)3.102 E 2.596(an)144 624 S(on-e) -2.596 E .096(xistent process or job, the return status is 127.)-.15 F .095(Otherwise, the return status is the e)5.095 F .095(xit status)-.15 -F(of the last process or job w)144 540 Q(aited for)-.1 E(.)-.55 E/F5 -10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 556.8 Q F0(If)108 568.8 Q F1 +F(of the last process or job w)144 636 Q(aited for)-.1 E(.)-.55 E/F5 +10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 652.8 Q F0(If)108 664.8 Q F1 (bash)4.396 E F0 1.896(is started with the name)4.396 F F1(rbash)4.397 E F0 4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F14.397 E F0 1.897 (option is supplied at in)4.397 F -.2(vo)-.4 G 1.897 -(cation, the shell becomes).2 F 3.446(restricted. A)108 580.8 R .945 +(cation, the shell becomes).2 F 3.446(restricted. A)108 676.8 R .945 (restricted shell is used to set up an en)3.446 F .945 (vironment more controlled than the standard shell.)-.4 F(It)5.945 E -(beha)108 592.8 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1 +(beha)108 688.8 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1 (bash)2.5 E F0(with the e)2.5 E(xception that the follo)-.15 E -(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 609.6 Q -(changing directories with)144 609.6 Q F1(cd)2.5 E F0<83>108 626.4 Q -(setting or unsetting the v)144 626.4 Q(alues of)-.25 E F3(SHELL)2.5 E -F4(,)A F3 -.666(PA)2.25 G(TH)-.189 E F4(,)A F3(ENV)2.25 E F4(,)A F0(or) -2.25 E F3 -.27(BA)2.5 G(SH_ENV).27 E F0<83>108 643.2 Q -(specifying command names containing)144 643.2 Q F1(/)2.5 E F0<83>108 -660 Q(specifying a \214lename containing a)144 660 Q F1(/)2.5 E F0 -(as an ar)2.5 E(gument to the)-.18 E F1(.)2.5 E F0 -.2(bu)5 G -(iltin command).2 E<83>108 676.8 Q .449 -(specifying a \214lename containing a slash as an ar)144 676.8 R .449 -(gument to the)-.18 F F12.95 E F0 .45(option to the)2.95 F F1 -(hash)2.95 E F0 -.2(bu)2.95 G .45(iltin com-).2 F(mand)144 688.8 Q<83> -108 705.6 Q(importing function de\214nitions from the shell en)144 705.6 -Q(vironment at startup)-.4 E(GNU Bash 4.4)72 768 Q(2015 October 11) -141.235 E(75)190.395 E 0 Cg EP +(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 705.6 Q +(changing directories with)144 705.6 Q F1(cd)2.5 E F0(GNU Bash 4.4)72 +768 Q(2015 No)136.385 E -.15(ve)-.15 G(mber 16).15 E(75)185.545 E 0 Cg +EP %%Page: 76 76 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E<83>108 84 Q -(parsing the v)144 84 Q(alue of)-.25 E/F1 9/Times-Bold@0 SF(SHELLOPTS) -2.5 E F0(from the shell en)2.25 E(vironment at startup)-.4 E<83>108 -100.8 Q(redirecting output using the >, >|, <>, >&, &>, and >> redirect\ -ion operators)144 100.8 Q<83>108 117.6 Q(using the)144 117.6 Q/F2 10 -/Times-Bold@0 SF(exec)2.5 E F0 -.2(bu)2.5 G +(setting or unsetting the v)144 84 Q(alues of)-.25 E/F1 9/Times-Bold@0 +SF(SHELL)2.5 E/F2 9/Times-Roman@0 SF(,)A F1 -.666(PA)2.25 G(TH)-.189 E +F2(,)A F1(ENV)2.25 E F2(,)A F0(or)2.25 E F1 -.27(BA)2.5 G(SH_ENV).27 E +F0<83>108 100.8 Q(specifying command names containing)144 100.8 Q/F3 10 +/Times-Bold@0 SF(/)2.5 E F0<83>108 117.6 Q +(specifying a \214lename containing a)144 117.6 Q F3(/)2.5 E F0 +(as an ar)2.5 E(gument to the)-.18 E F3(.)2.5 E F0 -.2(bu)5 G +(iltin command).2 E<83>108 134.4 Q .449 +(specifying a \214lename containing a slash as an ar)144 134.4 R .449 +(gument to the)-.18 F F32.95 E F0 .45(option to the)2.95 F F3 +(hash)2.95 E F0 -.2(bu)2.95 G .45(iltin com-).2 F(mand)144 146.4 Q<83> +108 163.2 Q(importing function de\214nitions from the shell en)144 163.2 +Q(vironment at startup)-.4 E<83>108 180 Q(parsing the v)144 180 Q +(alue of)-.25 E F1(SHELLOPTS)2.5 E F0(from the shell en)2.25 E +(vironment at startup)-.4 E<83>108 196.8 Q(redirecting output using the\ + >, >|, <>, >&, &>, and >> redirection operators)144 196.8 Q<83>108 +213.6 Q(using the)144 213.6 Q F3(exec)2.5 E F0 -.2(bu)2.5 G (iltin command to replace the shell with another command).2 E<83>108 -134.4 Q(adding or deleting b)144 134.4 Q(uiltin commands with the)-.2 E -F22.5 E F0(and)2.5 E F22.5 E F0(options to the)2.5 E F2 -(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 151.2 Q -(using the)144 151.2 Q F2(enable)2.5 E F0 -.2(bu)2.5 G -(iltin command to enable disabled shell b).2 E(uiltins)-.2 E<83>108 168 -Q(specifying the)144 168 Q F22.5 E F0(option to the)2.5 E F2 -(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 184.8 Q -(turning of)144 184.8 Q 2.5(fr)-.25 G(estricted mode with)-2.5 E F2 -(set +r)2.5 E F0(or)2.5 E F2(set +o r)2.5 E(estricted)-.18 E F0(.)A -(These restrictions are enforced after an)108 201.6 Q 2.5(ys)-.15 G +230.4 Q(adding or deleting b)144 230.4 Q(uiltin commands with the)-.2 E +F32.5 E F0(and)2.5 E F32.5 E F0(options to the)2.5 E F3 +(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 247.2 Q +(using the)144 247.2 Q F3(enable)2.5 E F0 -.2(bu)2.5 G +(iltin command to enable disabled shell b).2 E(uiltins)-.2 E<83>108 264 +Q(specifying the)144 264 Q F32.5 E F0(option to the)2.5 E F3 +(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 280.8 Q +(turning of)144 280.8 Q 2.5(fr)-.25 G(estricted mode with)-2.5 E F3 +(set +r)2.5 E F0(or)2.5 E F3(set +o r)2.5 E(estricted)-.18 E F0(.)A +(These restrictions are enforced after an)108 297.6 Q 2.5(ys)-.15 G (tartup \214les are read.)-2.5 E 1.566 -(When a command that is found to be a shell script is e)108 218.4 R -.15 +(When a command that is found to be a shell script is e)108 314.4 R -.15 (xe)-.15 G 1.566(cuted \(see).15 F F1 1.566(COMMAND EXECUTION)4.066 F F0 -(abo)3.816 E -.15(ve)-.15 G(\),).15 E F2(rbash)108 230.4 Q F0(turns of) +(abo)3.816 E -.15(ve)-.15 G(\),).15 E F3(rbash)108 326.4 Q F0(turns of) 2.5 E 2.5(fa)-.25 G .3 -.15(ny r)-2.5 H(estrictions in the shell spa).15 -E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E/F3 10.95 -/Times-Bold@0 SF(SEE ALSO)72 247.2 Q/F4 10/Times-Italic@0 SF(Bash Refer) -108 259.2 Q(ence Manual)-.37 E F0 2.5(,B)C(rian F)-2.5 E -(ox and Chet Rame)-.15 E(y)-.15 E F4(The Gnu Readline Libr)108 271.2 Q +E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E/F4 10.95 +/Times-Bold@0 SF(SEE ALSO)72 343.2 Q/F5 10/Times-Italic@0 SF(Bash Refer) +108 355.2 Q(ence Manual)-.37 E F0 2.5(,B)C(rian F)-2.5 E +(ox and Chet Rame)-.15 E(y)-.15 E F5(The Gnu Readline Libr)108 367.2 Q (ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E -F4(The Gnu History Libr)108 283.2 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E -(ox and Chet Rame)-.15 E(y)-.15 E F4 -.8(Po)108 295.2 S(rtable Oper).8 E +F5(The Gnu History Libr)108 379.2 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E +(ox and Chet Rame)-.15 E(y)-.15 E F5 -.8(Po)108 391.2 S(rtable Oper).8 E (ating System Interface \(POSIX\) P)-.15 E(art 2: Shell and Utilities) --.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 307.2 Q -(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 319.2 Q -(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F4(sh) -108 331.2 Q F0(\(1\),)A F4(ksh)2.5 E F0(\(1\),)A F4(csh)2.5 E F0(\(1\))A -F4(emacs)108 343.2 Q F0(\(1\),)A F4(vi)2.5 E F0(\(1\))A F4 -.37(re)108 -355.2 S(adline).37 E F0(\(3\))A F3(FILES)72 372 Q F4(/bin/bash)109.666 -384 Q F0(The)144 396 Q F2(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E F4 -(/etc/pr)109.666 408 Q(o\214le)-.45 E F0 -(The systemwide initialization \214le, e)144 420 Q -.15(xe)-.15 G -(cuted for login shells).15 E F4(~/.bash_pr)109.666 432 Q(o\214le)-.45 E -F0(The personal initialization \214le, e)144 444 Q -.15(xe)-.15 G -(cuted for login shells).15 E F4(~/.bashr)109.666 456 Q(c)-.37 E F0 -(The indi)144 468 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G -(-shell startup \214le).15 E F4(~/.bash_lo)109.666 480 Q(gout)-.1 E F0 -(The indi)144 492 Q(vidual login shell cleanup \214le, e)-.25 E -.15(xe) --.15 G(cuted when a login shell e).15 E(xits)-.15 E F4(~/.inputr)109.666 -504 Q(c)-.37 E F0(Indi)144 516 Q(vidual)-.25 E F4 -.37(re)2.5 G(adline) -.37 E F0(initialization \214le)2.5 E F3 -.548(AU)72 532.8 S(THORS).548 E -F0(Brian F)108 544.8 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 -E(bfox@gnu.or)108 556.8 Q(g)-.18 E(Chet Rame)108 573.6 Q 1.3 -.65(y, C) +-.8 E F0 2.5(,I)C(EEE --)-2.5 E(http://pubs.opengroup.or)144 403.2 Q +(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 415.2 Q +(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F5(sh) +108 427.2 Q F0(\(1\),)A F5(ksh)2.5 E F0(\(1\),)A F5(csh)2.5 E F0(\(1\))A +F5(emacs)108 439.2 Q F0(\(1\),)A F5(vi)2.5 E F0(\(1\))A F5 -.37(re)108 +451.2 S(adline).37 E F0(\(3\))A F4(FILES)72 468 Q F5(/bin/bash)109.666 +480 Q F0(The)144 492 Q F3(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E F5 +(/etc/pr)109.666 504 Q(o\214le)-.45 E F0 +(The systemwide initialization \214le, e)144 516 Q -.15(xe)-.15 G +(cuted for login shells).15 E F5(~/.bash_pr)109.666 528 Q(o\214le)-.45 E +F0(The personal initialization \214le, e)144 540 Q -.15(xe)-.15 G +(cuted for login shells).15 E F5(~/.bashr)109.666 552 Q(c)-.37 E F0 +(The indi)144 564 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G +(-shell startup \214le).15 E F5(~/.bash_lo)109.666 576 Q(gout)-.1 E F0 +(The indi)144 588 Q(vidual login shell cleanup \214le, e)-.25 E -.15(xe) +-.15 G(cuted when a login shell e).15 E(xits)-.15 E F5(~/.inputr)109.666 +600 Q(c)-.37 E F0(Indi)144 612 Q(vidual)-.25 E F5 -.37(re)2.5 G(adline) +.37 E F0(initialization \214le)2.5 E F4 -.548(AU)72 628.8 S(THORS).548 E +F0(Brian F)108 640.8 Q(ox, Free Softw)-.15 E(are F)-.1 E(oundation)-.15 +E(bfox@gnu.or)108 652.8 Q(g)-.18 E(Chet Rame)108 669.6 Q 1.3 -.65(y, C) -.15 H(ase W).65 E(estern Reserv)-.8 E 2.5(eU)-.15 G(ni)-2.5 E -.15(ve) --.25 G(rsity).15 E(chet.rame)108 585.6 Q(y@case.edu)-.15 E F3 -.11(BU)72 -602.4 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .567 -(If you \214nd a b)108 614.4 R .568(ug in)-.2 F F2(bash,)3.068 E F0 .568 +-.25 G(rsity).15 E(chet.rame)108 681.6 Q(y@case.edu)-.15 E F4 -.11(BU)72 +698.4 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .567 +(If you \214nd a b)108 710.4 R .568(ug in)-.2 F F3(bash,)3.068 E F0 .568 (you should report it.)3.068 F .568(But \214rst, you should mak)5.568 F 3.068(es)-.1 G .568(ure that it really is a b)-3.068 F .568(ug, and)-.2 -F 5.626(that it appears in the latest v)108 626.4 R 5.625(ersion of)-.15 -F F2(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.625 +F 5.626(that it appears in the latest v)108 722.4 R 5.625(ersion of)-.15 +F F3(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.625 (ersion is al)-.15 F -.1(wa)-.1 G 5.625(ys a).1 F -.25(va)-.2 G 5.625 -(ilable from).25 F F4(ftp://ftp.gnu.or)108 638.4 Q(g/pub/gnu/bash/)-.37 -E F0(.)A .41(Once you ha)108 655.2 R .71 -.15(ve d)-.2 H .41 -(etermined that a b).15 F .41(ug actually e)-.2 F .411(xists, use the) --.15 F F4(bashb)3.181 E(ug)-.2 E F0 .411(command to submit a b)3.131 F -.411(ug report.)-.2 F(If)5.411 E .595(you ha)108 667.2 R .895 -.15 -(ve a \214)-.2 H .595(x, you are encouraged to mail that as well!).15 F -.594(Suggestions and `philosophical' b)5.595 F .594(ug reports may)-.2 F -(be mailed to)108 679.2 Q F4 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0 -(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E F2(gnu.bash.b)2.5 E(ug) --.2 E F0(.)A(ALL b)108 696 Q(ug reports should include:)-.2 E -(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 E(76)190.395 E 0 Cg EP +(ilable from).25 F(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15(ve)-.15 +G(mber 16).15 E(76)185.545 E 0 Cg EP %%Page: 77 77 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E(The v)108 84 Q -(ersion number of)-.15 E/F1 10/Times-Bold@0 SF(bash)2.5 E F0(The hardw) -108 96 Q(are and operating system)-.1 E(The compiler used to compile)108 -108 Q 2.5(Ad)108 120 S(escription of the b)-2.5 E(ug beha)-.2 E(viour) --.2 E 2.5(As)108 132 S(hort script or `recipe' which e)-2.5 E -.15(xe) --.15 G(rcises the b).15 E(ug)-.2 E/F2 10/Times-Italic@0 SF(bashb)108.27 -148.8 Q(ug)-.2 E F0 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10 +/Times-Italic@0 SF(ftp://ftp.gnu.or)108 84 Q(g/pub/gnu/bash/)-.37 E F0 +(.)A .41(Once you ha)108 100.8 R .71 -.15(ve d)-.2 H .41 +(etermined that a b).15 F .41(ug actually e)-.2 F .411(xists, use the) +-.15 F F1(bashb)3.181 E(ug)-.2 E F0 .411(command to submit a b)3.131 F +.411(ug report.)-.2 F(If)5.411 E .595(you ha)108 112.8 R .895 -.15 +(ve a \214)-.2 H .595(x, you are encouraged to mail that as well!).15 F +.594(Suggestions and `philosophical' b)5.595 F .594(ug reports may)-.2 F +(be mailed to)108 124.8 Q F1 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0 +(or posted to the Usenet ne)2.5 E(wsgroup)-.25 E/F2 10/Times-Bold@0 SF +(gnu.bash.b)2.5 E(ug)-.2 E F0(.)A(ALL b)108 141.6 Q +(ug reports should include:)-.2 E(The v)108 158.4 Q(ersion number of) +-.15 E F2(bash)2.5 E F0(The hardw)108 170.4 Q(are and operating system) +-.1 E(The compiler used to compile)108 182.4 Q 2.5(Ad)108 194.4 S +(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 E 2.5(As)108 206.4 S +(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 G(rcises the b).15 +E(ug)-.2 E F1(bashb)108.27 223.2 Q(ug)-.2 E F0 (inserts the \214rst three items automatically into the template it pro) 2.72 E(vides for \214ling a b)-.15 E(ug report.)-.2 E(Comments and b)108 -165.6 Q(ug reports concerning this manual page should be directed to)-.2 -E F2 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.) -.25 E/F3 10.95/Times-Bold@0 SF -.11(BU)72 182.4 S(GS).11 E F0(It')108 -194.4 Q 2.5(st)-.55 G(oo big and too slo)-2.5 E -.65(w.)-.25 G 1.868 -(There are some subtle dif)108 211.2 R 1.868(ferences between)-.25 F F1 +240 Q(ug reports concerning this manual page should be directed to)-.2 E +F1 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.).25 +E/F3 10.95/Times-Bold@0 SF -.11(BU)72 256.8 S(GS).11 E F0(It')108 268.8 +Q 2.5(st)-.55 G(oo big and too slo)-2.5 E -.65(w.)-.25 G 1.868 +(There are some subtle dif)108 285.6 R 1.868(ferences between)-.25 F F2 (bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869(ersions of)-.15 F -F1(sh)4.369 E F0 4.369(,m)C 1.869(ostly because of the)-4.369 F/F4 9 -/Times-Bold@0 SF(POSIX)108 223.2 Q F0(speci\214cation.)2.25 E -(Aliases are confusing in some uses.)108 240 Q(Shell b)108 256.8 Q +F2(sh)4.369 E F0 4.369(,m)C 1.869(ostly because of the)-4.369 F/F4 9 +/Times-Bold@0 SF(POSIX)108 297.6 Q F0(speci\214cation.)2.25 E +(Aliases are confusing in some uses.)108 314.4 Q(Shell b)108 331.2 Q (uiltin commands and functions are not stoppable/restartable.)-.2 E 1.315(Compound commands and command sequences of the form `a ; b ; c' a\ -re not handled gracefully when)108 273.6 R .389 -(process suspension is attempted.)108 285.6 R .389 +re not handled gracefully when)108 348 R .389 +(process suspension is attempted.)108 360 R .389 (When a process is stopped, the shell immediately e)5.389 F -.15(xe)-.15 G .39(cutes the ne).15 F .39(xt com-)-.15 F .193(mand in the sequence.) -108 297.6 R .192(It suf)5.193 F .192(\214ces to place the sequence of c\ -ommands between parentheses to force it into a)-.25 F -(subshell, which may be stopped as a unit.)108 309.6 Q(Array v)108 326.4 -Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E -(There may be only one acti)108 343.2 Q .3 -.15(ve c)-.25 H -(oprocess at a time.).15 E(GNU Bash 4.4)72 768 Q(2015 October 11)141.235 -E(77)190.395 E 0 Cg EP +108 372 R .192(It suf)5.193 F .192(\214ces to place the sequence of com\ +mands between parentheses to force it into a)-.25 F +(subshell, which may be stopped as a unit.)108 384 Q(Array v)108 400.8 Q +(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E +(There may be only one acti)108 417.6 Q .3 -.15(ve c)-.25 H +(oprocess at a time.).15 E(GNU Bash 4.4)72 768 Q(2015 No)136.385 E -.15 +(ve)-.15 G(mber 16).15 E(77)185.545 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/bashref.aux b/doc/bashref.aux index 78473290..c356dab6 100644 --- a/doc/bashref.aux +++ b/doc/bashref.aux @@ -162,7 +162,7 @@ @xrdef{The Shopt Builtin-pg}{63} @xrdef{Special Builtins-title}{Special Builtins} @xrdef{Special Builtins-snt}{Section@tie 4.4} -@xrdef{Special Builtins-pg}{68} +@xrdef{Special Builtins-pg}{69} @xrdef{Shell Variables-title}{Shell Variables} @xrdef{Shell Variables-snt}{Chapter@tie 5} @xrdef{Bourne Shell Variables-title}{Bourne Shell Variables} diff --git a/doc/bashref.cp b/doc/bashref.cp index d2c2b3e5..090ebbdb 100644 --- a/doc/bashref.cp +++ b/doc/bashref.cp @@ -71,7 +71,7 @@ \entry{exit status}{39}{exit status} \entry{signal handling}{39}{signal handling} \entry{shell script}{40}{shell script} -\entry{special builtin}{68}{special builtin} +\entry{special builtin}{69}{special builtin} \entry{login shell}{83}{login shell} \entry{interactive shell}{83}{interactive shell} \entry{startup files}{83}{startup files} diff --git a/doc/bashref.cps b/doc/bashref.cps index 5c493368..707cb88f 100644 --- a/doc/bashref.cps +++ b/doc/bashref.cps @@ -119,7 +119,7 @@ \entry {shell, interactive}{84} \entry {signal}{4} \entry {signal handling}{39} -\entry {special builtin}{4, 68} +\entry {special builtin}{4, 69} \entry {startup files}{83} \entry {suspending jobs}{99} \initial {T} diff --git a/doc/bashref.dvi b/doc/bashref.dvi index cd1fe6d1cd70c0882677aaafc97d962351825228..e58c8dafc006f0dece20ecda42e09695b096e7f0 100644 GIT binary patch delta 17070 zcmaL9d3;UB`#5gq%(-j!&6Y*%K|=P#o)CLti&_%oN^azm2-;}TYE`&BWG>N0 zh!B(#I&E!5shy&bO z2fIatb&KpC9vL0Aq)C$|NV4B*Yajih_0)g5rI=Ul44x?&^Q0-ulYcT=>_Sy`M7Qwh zlC@~zznhoR;y!vm>21^#dDiSlYE&E}{a+(O!b++=A|sdDy*vk|=9sLdLit&fwM-~K zlayt$nauf8R9I9OyHL?8*I>0tg#|EQmceGslEPyg|BI9l=48nI&Dqkk?giVr4QZm2 zA_Om2X<*72yHI{Q(O}JSNF#+36kT&uuwmpXjZsZNooYT){X$S+&Byu-go0~cx=fEk zeQTyAtn-6L*Ky~yD8A;VVTL~%Q#0x5+E7lxJx z1CkH-xj>hiHT#JgZ*5B7UXHw_)t7>$OGl#cp^s`@j-EsKtzk7keR~+5Lu=L_-;9Ko zrQtOrPBxPprkz@jd50HgW(oXRc;1tsJi<%c9aic-Fvy!9tW zRs20xdVZ%j9)G>2``twdKR8%(@ZJn01bdIEiGC0YRC+!5x+e1>!K~0l#+Hm3JggY;Mxu)6|#Kh7(hI8+UA?fgq${# z>&p&aAZRvfoVk2wurXhn1#>#2&HwuM4YQNu{;4@e=eSJxo@1~WGHphSwUn^;GV0pa zb|@q4T|<7Blu?&a+reQm+6<7OJKtD%2FdRjJSnXl$lNoqZHW)TNKPH^}){Qbi}I zkr6t4twxd1{dYBr5WH)b(GU&FAmz<$z3Ea7>W(VuF%6mx{Svh3ZFn5kqH%%;P#35} zW`Ij{C=VVlbf_2}^YmyYJf7*%9FC(G&38e8fPJ|OdJEd!T~RLY<*M{@MbiPA>?T8( z+|VX;R%QhI+#P-3jy(n{P*D)7b;GT69O}Vn7<%D?yS7!Jb3Ks575AJdLmM{?My_~B zgz~BG4fKI09&1*h>Kycw4x3^W=o>5Q|z_V*LN+j?s{1o;;2rAUD zo!ihWuCu#$AUm#*b+-pwuoG?f!Zn0r>(26zpm2BeL;$U|2JfD$IqrK5XIQ+hK1$|l<0|#1bcp?K(~BxvUvjzNAuTx5gjE3(S_20QyDa8ecxPLNQ zvdxw}t87AW!C~X<0z(cLogJ z`bbtAATU_69Ogn>L7`0o_Xy1n=eRC*vDj;f+}V&1=Bh}tSq!FJK9i#I`NmlQ8Nqx> zOR|i)M)1I4cJ+o~NqMj)IS9zg0;gQxO)^-FQoh+HIs108lQS2mz_c)Dk(6g}6e*Dd ztSHaynCXC_)U7{OwQ){23$U6kS*6032x~#E$;R0QR`r*J)Epz7aTWW~l>WF~Uug;; z;;S>xC^XHqzsl-w$mRTUVu1-uAu`E^$iZllU|)Mm_p(j7#=4N&u#$4vZ?>~PF2Vx5 z(XfHI4C@^99!X9wBcfPR@SKqq5iH=91f7rm$4NH(3dQk(pcj^IbP8u-UNqiZ8Qf2_&{*r=Q_5qR&SrTlBc?$Q(GSb%y(=cI0{}i*$2$E;07qxtI zsqolD2M@>XCOrn7Gunm6)9QLkU^t|@-cl{+JfAn$m~DfJEk>?o&|o!LK{wE5GrU`7 znXDYCQOY#uTWyxY%zEsyIuzz+m6Eg$^we0NEfl(91i(VCcd%gv(r(RA4G_fRuH-n{CQoesGt$)*1pbA`?{CHOn}& zYj&1Yn`gA;m>qtAH(P>Xd`rwQET41K${r8L1*BUo?AWHVI-6mN{I(hvUn*?sROhq~ zWx}SAT5cdrQ}fMS0cdzP>`j-aVok9_u}jh{U=J7oj%YRPPOh1&hip=vdpaw}WHVX| z44EK3oewn*vC4$bhk*r3H05wwg+e1IxNh)((T>`VhJ5)=s(p<_%3R5Vv|=Sn3jv|p z^&%l(Dsp5>^`V;`<}u|vr{|bT@qcu+Tn2b#$&H<}QQrtJETGvt22Q?giun*jzU&4J zS<`@c5V6LzjFDF)Wjg971?do)EdVQO$}`!l&dCj>!bZD`F&9iQsZCFitYH3(`I*Kt zVdHY=DjToOK_864tztp1op_8EK5(K_X&N}>#BR>!BEi=paf`wd-oT>?bxXscc&J@* zsk73sFI_zW+muM=y)>MUD%js?c!7sAAZ<0Q=A=*k&*4ypDEOkmy?yaEYcfr)gp6;G!5Hms)JHk`)4 zCQ`EvXUJ`+FWq6q?Mn->KO`H02{fP(rwM)!-Pznitb%L@-WJZp%>+IpD=)&G5YBs{ zSa)$QE_T85{1xcy_i(ZvFTSimgC(4$F1|Oc!4Ea~w%5L%J412(veef$4;aT)EY~Dk zNAB1`Q^4kcTEh!$>R(5>w}lT*rKsOpSuKtE;7q&lZ2(im4T9e3r@1!M7G*dFIoRkj z94z7$848C#TZ^ar$Lf>-CGB2*-Nc^l?`4^$nrwBUCDrb+dKy&$F07nxt-zCj_ipQO zBm{wp>+mwAu_b-54!dIYcKY`^Jj)l{K97YIOug^T0%e3yfAM-eL)pUT>#+^cm@9FR z&{DmP+ADEKEc`(CRN``IPuqZd;8-1XY``<7wnbaX9W?N5@sm2##0dLTK%?8P9;nj?FmF zU5Qj6(6JQ)mMR*$1!u#z6b6?Mv< zx7mibx#8^w1#;boPkP|}Llwy94F1_2@{5EZ6vx7U!UX~fVC!melncILp(FbX@znEI z9FKjQvSGjCpCQS2&oI!aC-^Kx;p(Tj4bNjUGHB;#I2l^zJ;N`t&~ic=ee(}|11~M1 zlm5hCz>_um3(pYo;}J4W_RYWep$mT1gzeA?|F~h7_Db{J=0c1+ZrMhG#)Syj9d}xx zKr7>fuk<+nI|fAUcE?FamF9$0VFt#Vx6oa02oG`VHmqW-a8AI#KB3k$;Sq0`k}kBv z{N?>g!cqZ`c~coUa*EJXk29B2&r?D?JC-Mux?(d?pjC5)hpu?u_X>32ec_ZAfAEh2 z9hC&gDC61nRYG$$UWt{~@CsqPD_)nUKu5L-z1{I=NP&9q7rt}F2j(!C>5LAaewWo= z5>C3{AKp;D-@PTAamBagRmZW%PlYrMe%6Ik8OIhr7eaOTpMwhYkdRP4R&`XMQ66NV z3-(;5Ko|VU6C`+_Izx{Jk{9rDnjHxulLYy#eH(HgyWshEGU|FlvX1B9ronHZro|nt zMu;3N#+fDvtsLNk@vN1?H#*om4Ok5b|98g3l& zjk9eHXcf07W0wrsJnl8;Lr`I~fUAbOnN`XHR|rwfMhoNK#Pg2*0lM+l{^+PHa8%6#A{4_j< zOc30ke@sha$R?*#NtCM`q)WU!A6*?sJZW4k8QxURhCXUiX0SW02vimM*s@sS0Bw7| zhHj1{<3Y>S@#GB5_hUTyMXuLD>7<{6H2xC>sYeoNp@(=FOt2jF(jWSf@BFI$3Mv(@ zKs0Q#7>!VzEUBQ;NraMezk&_yToQ@nY;hS#hC;~-n&`MeWNT=ZGRl+>;ho7gnFsu{ z`A~)RGFulfv>I*T5lY^o!OxM89wHaHGekRd#$1(mKdH_+45G<`(E71Fy@OHrHkcq* zgs8PtxN0g1@j*O%i#}jacEM@}H@cIk1>`o`VhV@H2S%K63;s(DdEv_Iz^oxlkTJXQ^MxRV1 zyM%yoztWA9$SwR~F#T{cd6QIo=g*_A86dh~;|-*ki^2y}$Oo8i%OYwPXe9G7&VQ4x zok~W-=tuOAsbo8bF&lH7SWM&{oU!-yjBLO(l7R)kCWuz&l1IS9)p_L4VqskpuTho? z6}_Xvd6;^wZBnigq@G(E$liDs4j+5TaRcm^!D4}A8|vr18*)5nWGoqSO+2y&dG28s z*8Krd{VXnAT=$JLAsRMXAT#N+qd}U=NU*k;B5|38RygVANZt2E;ymg~)Zl92V*zgt3I;<13NseNnlN^anQ9@*H=yHpA zUTU;~DET$PY>1fzsftC<)WkwlE+~z4BGf{1-8qxXM9(oYleK{x6(-98io#@`wc9|I zWDY}nk<`For_Mp*V9jw-1F2B1v4>q;9G=5DFiSGR=?U;xjQyFfs909lGIH1P|HEH9 zxw|ThYvO;g*y&E3^YBCtYBb4xfx7xCLj%uwJ7>6^Bqwl&bNVEivfwbg>iqNuj`vIM zudv(6Z8GyuI%F$J1)&a^NnF9~&jv-yOL#4 z9bBEwMI;Bb?P?K8!MOcY)_ERzho1|y&tco%BwurXV3|*>g3@$n0r?dhT`&q5mu*Fw`Kxsm$>m<`)@pJO zSv{8!KtpG4CV|Dy(q(<@Vui>Aa#YaMe}@i$f|}KdXI2hqWGOz9n_ZZjTZWHJhiP+U znS`33O-|BzIO0t5!9XZv<#R2P>xEE{gi>ji5vl^tIw@D2l48Z%@Df8QId~q5KV{_L z1x{f>p@pYmvLP^M^Kz!sQ^)~SJ-yD7EBFt)rdw<70l`?wn#A*VC-DXzy_Mp9i#T3c zd2$S(*bwMhip%i6h0e-EU0Q9IQv6G^ItZq0wO#l;d{A9lnpEqY&kBrL-fN6p%z>$t z1lwZbOW~oHQuc7pYK2T6_6)yll53h`F<6S^LP{C__mx~($T5Jqm{}|VS6?>agegnm zs2o$kx+$SU&^BIM1w`ETHtHhds`u5YywFya?PPhwhVZ@4fkGkF{y6^n(4l^{5L-^o z^)^qDYL&XQ8A4g^hbyRYJ&)z+>Gi|}k{(-0vf=SbB^d#Yk1Gj3zRBJ|4DdL%fn>lV zq)LXCR6*oeMgOTHeK5pmJvWj}0M~Am`=CvrI8`)%lic;(CXxc!T33?-Xq2jnC0vmN zC!?JivVrdwl(Oo}rgZ~{4Nt6B6dJRcOoq{=o5@6Y{Jxo(1}R9mNCJ1E2nYMM?=bME zOc>D2$sfBgpegSl1Z#xpCV_meW2AQ|w)(cO#qh*A6hS2ey%^ zatOmZY$tOdwe*7UVBKfrY14AACRi~}g9eXI?KeCnb=2@-V4ebYl3j58L%;u=l!C=G zGja*66?A3;z9Pc~fy^qRj(w!d7`u9;FK|Hmzr~~8l__HM|0yT`D<-fwbp(&*6% z1CvH85xsPp?1hLeJ%o-pLu`U~dMEnr8FC4@(Y?By75B<$OPnLEMpd3dzI`52A#h~tl-`UUne^7 z>OOa}>DZsZ7F5wqKY{jEQ2!fb9&Fy48$=CGl7FwPBY#3m`7NRqXxV*W&5ivHtO=yA z?h`NBFS@4=PEHyyd{lCMM6u@%xd~S$yunefxkrKl`Tlz(8crMqHGO`M4149frn^iVUA=N*4E69?iw`}hbSI=Z>| zu_6^un~Q@H_G+O_Yi=nH5`6C7qhGZYC&9~o+R|UVhK2@A_QE%?`E^p;V-N3t-v~;sz|Vb@!kJZ!^y%wI=XPzb-Ly_VG0e9=EET>hhI1^u< zO&zh~Y~beQS=2L5oC*2b;y4lZj$Vut`SpVV@#0YB^U8R!SOpdwYKF9+xvIHre`C6f zOQ6@G?&3tHSF0Z49B3%(AsSFcX-{z$0JD3FnSk+HPccX7l+;UZ-`7jzGNbD)TAC_| zc|gQ3HSzGjL?%k=E%&+ETSlAKN1Or(_xBN7!@$};GMe#y#r%50J}XiO3jTxMr@!_U z*ZTlcxZl(e9Vi&rC5YT{x+KDCtLTD68S%?R8P&{wVmctc&`;!!uYZ5Bk3#Um{xUQE z=r0a+DfgPYPq7lA2Kx0NF+>HWQ?I#u>AWQID(*Ey*~AYAh#@*W?2ZCG7$L?X-1iA> zJ4zf0HZWx?EgB^b2V<4;DLpkxyusT(W!p!Kdyo(i5<~OGh_`UcRyOJlkX4*+qW#8+ z70^KMj1$v4u4S{uH&E5a z`?E!aX9UPZv7k9%1_aMvpD;F8Y_5STTE9MK-z^Xys)V3bW$eHQFdENSR={?CC?3^g zNu#W1n?tMv-k*@@idEu8U|#NO@t_cJ%Y$_*0}00PL0Thj!G8T{-;c$moR*Kpt~|vc zyMeD@_(0NcLd!xfOYfeyOk~7D7FQ0@`+`;Hi`FnE?BWy?1ST<(7MfHK6PvnTT$y4 z(GFKg;vdshTf_j`daG!GevYl;Vfxor(Vb5FR6GO?q1(g)rQ0Xl#Iedy-|gaVyy*v- z-qO#+bisY@csltr@g`nAlqKvC^Z1s{9mkF0=Rm5dMm#1ru!vn^4$|{)OPAW4q0lJW z@w_;WzWKSxtA=yOF+V1D#*I3}(?eg0xsZ1D*e|YfaSrr)PYMsGDF;L&uoV;%zz7pBI-e~2o-etq5tj|!!8_xEyv-pjC>=m zt51$IX!roJJ^nmd*{|3Gz`ZYyh`D2xDUcn`gfG0FDc@4z;e=9nl&!5^Av2;I>wXmU4~4U@z7_i+z5C_* zFA)@4=Fx@6#RVvmYEFnhHu@MvyY3Yy;fQFuY_C`XtZo<k;rqn4I3kt;y4sXqt1vwIpcqWvZY65qa8(a&WRq>=dAdq z5=nk^Ri(x{UB6vj?D*SgtGVH>l6));du=T+EcbxoRz9ymjM-p=dy-?o zs2sro$U&DJ!5xboy!^!HbV^6VMTk-|`?egA!lj}y6Zq{-nX>q~s~1F9ntVYlL6Pj* z1yPGo6uWa#j6wBE8Wl}DUJ@@r5&Oj@aVumq)tALyu!naqi@!DWiKn-J0K*jBjjj1n z6cE*474>xU6|m+J)a9!9tiEG(B-39Ly^-Jx$z1StaSet-)`9EdMH+EK48@loamDUW zSN5f1ENmGHD{-(mWWq5cno7O^QlB4zj z)fV{+TNJE1FW`WF@=#`Pr#j|>L)$5k6rt+kj=OhYfVP@o?*}Y*fa(b3dMtXd${Q{^ zj`U(fhpHk0BYh`DRgG^l7CKyY9N~pY?5`0jxIZv>se&qfl&VUP$3IY@o|9B@uGn}& zfwoOo0f((UITXvhXRAyuxOklc?Ov#IbHN|>SD+WmRn@N8u|$D>`b5=Ai>vY!D0Y)7 z*cER-szCPLs+JhcE?m{xMBf)=a^~$tn}0|)e_jhiiIrgxT-r3dRCoKO+y$O z#8awX2%p@o%rp12D!>JQ54+M`9mmf9s2c2wYbPksn7jPjuh$i5>oe7AIFXG~p!qLV zM_dK9O5+4w)Vp=q#|fF6s<93S{;7Q160Bb7ibJ3r%BPsqRh@`%i?wWjH}yOaU*8rL ztVg7Jh#&-AZOazNsQb%b&&0wZJC4N+1`YDUi3^p{{gTx&UO4rPOg!B=S$#^@iMKP< zsmN#EI9cZ8BhRVEe7J!CT5{i@ZjQOSKwah(@|`#Sbsv8Jkq7ZdSe;SbN{y%XR(R4Q zPkmgAZSu~?vR<>)S{;7tlrm-U+v+{Ir9bWYj(R0<_4{|!28c_%Tef7e3)SCoM!USL zejl1VI&`F~-c$F0>%JX2(C^<m!LmgCH@t<7>t`gj=R16XX7Z$nT$V@Mo-a$=rl#Bw!Rxaf>Xrg@JWoA$t5@I;M7nXeItFib$Ou{M z&($Bh;(g@|(2qhq#qd3%PKOX2l8nM5>K%|!b~vgYM|WNkeCdj#u%lHp>sxg`BpK=S z`)}3D0nR?A&TXy4&^$;nTj1b~y9|CG(cnCOUt;CJnz|jLTv>o@T8iT1ecyvzX=chDcIvGy7H9#O?z5x1L&>OGNQ+))pG%w zen!o2vtK@=?hbhm^**cSHN$yl<*rZ9s`)MX$>-EODgN%9+&JJnc|7}09@yr*+5+E7 z&&v?Lpf(&K%&dC>L%8y@Er{I%sD;!P#Uai*S zYd>-*k!`%GeyG9s+9?H^b6qq6^w@oMB>I}YxUXJ=aNq#C`k~s0Tt5FrU4_tEw(*e~ z!;^0QRs9<(Vjn+-vJY}$70=WU34WUT8V@`4m-=hDP_pp3Itm!K_qqD15OC@Y`|Ka} zAYLwE&tIwsaxO7hlqItu?>G%PS~0XqrTG_Lh~`H`}h9oICF(}z}d)+lvSy1TRHds6MWYBhb)1@^y!28C*N(}f`# z4|X?H)0taDzpk2I++vOm*W3Uz0Qq-pgr*%_61Yj!bV-Ot%gj-lm(Y{Wh|xT!330Ia z$Tu5i3!s&8nqc}?tj0@Ow>?(#87+?2_^GFILkKH98>jgUCRz}$xu?T@k}2AyX~`D% z*R00rz2;{WSJKamtd|qJf(I7!L#QKS48!(IJ|S9(d$a29Spbo&o{G z1kGsHe!6C}2euR|P`h~=$rCSlONOXxiRKxG(g|Ls83`V4B{dXkyjhN2<4}ql3`v^d zh@Ky>@ufK{G`o1HxRM2|)Esd(J}=eCWj19bolZ3eyGxCnit4uQ-w!1_$pFgq z!h1ebns*%4_<7+oz6#{?qsG?*-<+*LGw*Afd*UZonEkotD^Ed-`%-ut%2v5(|8~LN z|0>Xp=GuQ%I2c0037VGl?^fD@D1;^iYh!(5;3pOE>%2R|PRpVV)igJwLNZKM4NxsMwte}0&rR#NUp-e*6x)hgNK^r*gWue-um{jxD>D{#Jc!4WU;cRy|n3weG#vnfZRLJclJ(FdI$H=$`S6} zURwEALVNmZzs2skhn>9!D7{MhX`kUB&WDehJga^3Fnu7f!g^bQj!!k(AZ@oY^i10y zsiPuGs)OGDojn|=Eky2>y1jRu-QXv81qv-*(UA}n$f%Ax{VFp=X?r98SjfDbQw(W5 z#WeF2E8Cu|eFM35d);LyaJDj8YeY>4?Wi9HXIxIq5R)-9UOOFm!*q@40K00)W%Jtu zn+PX_{XG)+<5d~-{O_r2ww&+Ok=AqIMYa zh>mKQwV=?NljX!79|73^9H*UwTwmiJRZ_*?nxLHqRWEiwO*;tTy?0pTL~ROktEU`( z`&Vem=eU!RPjpFn!0Y9Wh7GaaW{)OoXLAJE1})SfE7<8N$}>Dmdj;c;kcBv9*^|Xj z)wXwo8>tzE+8aSF-`?MG>C*Dm2Y-+^I2d>wpDMo|4`w6VXy+kyL^lwsojcj}Qmq~0 zup4vO42M=iE_{r#Wo?65?QE@0?pmpP@H1Odrd>$zgImmVt+qyu^S^8~{cjt!A9&MF zhqP|&gFV_G{pqA9S{=*#K|8<~MYCOxI3uE2&|_^M{+#?o`;#8Uu--4U&D40ihzP-nv4BVagO=T^gdvfjSM_;irq`sO~rA6IQU;=DM~BZUm>d(Dg<_9PIkXEp?+1 zo!nlhRSg@Ql9V!BkskUuOs8Y1fx1cP^_0n+zM<@3kb=xTSof0}yxOlFbrmqj@(^7g zo%jOZF&2r$H{4COJ12 zZs@RsJGJn0=L%+w){Wt&=+b1iCsrp*Yx{UzEOw2r*T3U%-lHfO?VF%;VL3f?_p!cS zhDVH!R6dee7{N~V(fx)!1I}dDQ!q-Q;7p=!KHsL{NjmtgZxv+RIxf)k+(6y+#@)Hx zZ)&k|{~#TK-Uo(3FM4*MPD4AT=)R||Q*=Ib&JvZ51q|1fV9!?W8|&vul?SrDBXtA# zvV_sPPJEuQR9#Pmu$r(Ehn*UX}TbU0_d4^U5KXHXEmU0!ddnzT?eVEaF+I)q&tZ9kRvzfXT)UP z?w&ZOL!&0&HM(E?0SEq4*Uq=o<9rbIm%mS(B=2Ven5Od8tml`y5QNXiZ=Cv-j<0L_ z9-Tip5#9MXws@Z|8@UF3S?3gvL}35R{kjC+t?$=5Z)dmEL%LIfYrq$uIJ@#FtW?px2N{y?`D0{5%B_8c?xX!{dvfjpcUZs-yTeekocE8d`c%?LX1wyqVc zxdn=)t<+sZGNp9VZQY;r?Rz>OmU~CnLhTXssHbxY+*{RbVx^CC$tqIKU++HCZ4lkc zgC6yAb{Pz-T>ZChrAi2R`1kGz{bB6-di+rMC<^*z*t7a|<1mi2nynM{rPxi;sfX#H zo*exEjeZbr%XMolR9~GEkpf0l*Ij|O^1DvelGeh zkfEou{;qm2DZZBX)b}`#=Z+Sm=K|^?w8B zfAiA2ak+-;!jNQDG2*MA%fpBHP4x!8@paAg(Y(DG+-2tNbNux|f>(K9k8$;Lj)W!Y z;@OrUz3frkgY{8}cW5ArYpkw29o1T%aCjU2K#q{M1ybO7xt%@_d-`|xsmI4PR@a@4 z>8QWSe{LKTs&CKxO$^iT72xiFiwJ#h4v&x2cS4?x=->(q<5ooJ`Tsaz`=a$W{)~v# hLu&KOiw5cNV8%FokqRedu$#U02x|s~;T!z#{{d-YDwO~L delta 15170 zcmaKTc|a6L^Qhg^vokvjatL04fF~ZH2q>aaQ4vuA5493Q@r0fQOIpZ?ScC*z|O8W1P42$gGAeL`(j5fQoAP>l8811GE zXLv-(8)G?f70ua82yicnPa5GM{g?DH+OnNavrvR0tN#@27)j1t-B{GN`k3x#f&!}d z7*Y`ms&42$B@%^H&yQW-5E@&JKCeg7)qfhN`lGk1C%+@;gr@xlROh|>Q-Jz1Vf|-% zQpTH%TZ0j*tX{P31BA+}eRo{cOGO`k@bcx$7u0wOwF;{DPOGJ5zt*d_bm?-m@4Fi{ z=4nMmMeFc_h=`@@{#kVLl=Ji#jhy83-MA{qx$pBnxWcpg-_Ju3Df29R>1^{wB`FJt zhybJnUHMW+#Kum}SoiOp>$a9SS07M-@8$z;8g4Z^NF@B(LZ|U+Bj@Lr1DsEfM&geq zRk!)(EW+z7)z7~@0?*v)gU2@`q3QL4>M180s~rnZF2lT|(V6K2e=a-kMVzTu8&`jR zc_Tt&tBqHu8c-7;+oAg9-CG!aK!8`JHkd|Rm?=cU%RtZCykS~5yfYg6GZ-()wMEhYABlR4j6Ex#Nk;H>-9 zh|x|?i}?y@CeoLAtzNs-;q4VqdpiU_eTCQRH5zDi2)?MC#)+seJw;F$`c@U5Mu?~h zb&9A#(+c1B-BjG#@fJte(6SnfX?l*?Vk#=9U&1JTmGAoojaIKub$+y^4*3DW-a2#& z9`z+Oy-9^TScYRzZA`Xl2KSf@bC%g|Yg<%F*GgzAV0p@@eIuY#$7jU-0j@t_k}M+= z;Ovo61gfMDWYk$`xN8P&rbnrys%gqKI$w`sP#Ha-M>7Dgi-P9C<1+<~7QEkgqYVtm z3h)90%7w>M11f~aR5vt@zWlG`OJBI5Ody--j+((*R!7iLst<0j>f!#eWj?(Ap}RN{`i zXRFZ0RRfVbPIyb}x-tqa@xmi#Y0z3Tx~1UkSPlBzj@o%(+jtEMdKaa*o(KLD^NB_e0c@xBluTDFu#?^7t_@3$d?YFs1>Q; zNEV9TL*?u_Z$QyBa5dVcj%JruqhnyTfWy|VMG*pCmZC{ee?6Ln@Z%@U`U$##L1T}9 zVSOvnbwPV=wi)#y+N*IptcuX=<5ISE2YRWY(zUyg1Fzf3!mH6w-guWEed>j~v(ew6 zP98|ofUhs185n28v7T3v2@3(oSJBGr=p3}rnKw`id}2Rcdjkd2=QofCJ$D0zfW#-h zpnu&!6u&sdoHx;b1f0>2PP&8M#o^xU-W^ni@kN_P{qS9M$phEsY0!mdXsQSPb-o78 z6R@Q|#+?`lRYtJq4Xyc9LmVk%-#Hr8GZ1@t;DAROv?L7A_Q0XtREYNJiJu5Qt*_F^ zUbq%suCOM(u_wmcMB2U&ejh*EK=<^)cUyY3zPi*A_I!11%aHr&*4$k1<=VDIRbH*H zsD4yq%?GpJ-xoJ46tidZoxzl!Y0b~Im5SN3z|Ebe8F@yF4fYXd8U%-#0GrYa>}E?= z$vqc2hj{r^4UmQ4ke6djhb|`!EOGTZZ3SteMVePaNU+(>b{KB86qCy_)6Mp5j_b79 zjh4a;V}6FyT42vBusf}pYP*X@2Zz|aql#>_s6yEDjb;c7Sx#4YusJhKIVRZA!ipfu z1Dm*9z*D!)j0{sovGC1DuP}}Irc&XXWfrTwZcqn@aQfr4Nx&9lnOTx+T*W7fy0Y5*?ft9*U{e#sly#RPmG;T}(E?0B&A=Y#MxRJbbfR=UY%D;9@#e^VYO zqzATwygZl-D9s@bje+&G%>>4|Hc*1m{;Jn$G3LVL^UQfACL2c#`7zU+x$N+6YmKd~ z)0)p!=9+tL#|+c7j+vnC%FLQvlRewIDhLt{zLr3Q>&^;9EKau^lP%0azWXl0?xgn; z@sPsSqw?~tV0v6s=e-=W&F&D=N7jIl`2`lIy6_OgONG`W%@)-<^6Ts*-D;2SLISFGzGqOjJo82Fsgc9O|-;laT@cp3UW={%fJS*tpzz5 znj@6tn|c|!mYvo#o&s=IC9j;-HDz__xGP!njZdI__HhX?Sy4^V)yokQ_0(M0< z1lMQdhGHx6D;7o!RB6@PjcKLAh(R^r>rQi)#hOn)jguPD`XjMaSQlHS!yLhtLFc9g zu#7oY(79_lr)Qh(CR?5{y^jBzc~P-&|C||&@&0*D3r?307l1x8owW)5hdXORjFuAZ z?KP>A^p!lhD%7&8wh%Zr1jbsNGl9~%bZ1@GRbsX{fHWUmQp1(!Qmxs>6~Kem|4Fxl z)5vAl+{9=BCNm*!WEnFigZ!{geB2vjQq*}l-<*-H1CNB}T(cc)-RWk^c@;)u9m35U zHV9NEOFFE;%?H-ZQsL(PH^^z!X!a-^)Bpy%=$P_hdh<*PnbbHEH>~fP12{Anh8-G( zhZD#bJ{XT@Qt$CN6c1d&gH|$ipMcGTJ1Cnz0Wa_b9GeAa)4y^7XPl=R*l30Y`_S(# zc(RH}ldZT^@JzTyA6fAYc)7|>;HoO7}4W_rGAq996scMk= z4t>7>8)@P+EYW8Lcr4(h7Sg0?I6-SGpN2;WjY9{s=hLtb3I2VbGCTt}76i}KcUZt| z+z#QKAGJ{X?i~D%8=kdRgL*B-gAMq-F&cDi1x^Q>`}x&|Q7Skea)nvIg6f%Od>+y6{MW<9?Kf0|5 z*QZlI!BM2lqwiI^@e>?D-8Nu1`okyqUC3uG6}S}+9za)C;OUJy%9})c-k%O$1{8xg z;HiLIyaC(cVW`A`LQ@zNT8TrjX9XQqiOZnQ<1}2dkRqV=*cqmxGpBr%=becD* zkL#Q8WUtDljy8w3xI&c;_I*0K3cmoP(VMXa9^Y=p;W%Xu{cE#2X37>^0IfA!@Kgf~ zg%rV949OhreL@VT?`*|=JhWC&oV`FLcV;W*$$FP<*bEYUvP~u9vmKyH`p$No1&<%L z<6L;8?7-1@U4pjY$9Ldu_3^g-8dQA{|Hl*WuhgJ@XYgGQd}6ksX=!~2vafsVm}=@T6l>2#j(C) zgtG$n@}|BMgh#kve?}$>tuXItpDHXB@bDYjz-Q?~4+AznWZ_ofj62Rvqwvy=b$?rU z=#FPcXpr#(;iMif9-~3oD}{zS6wL}tg(ebqrfRJh)(d0Y@wyWll=Z35(*tjxq(OHM z3FqALfvXzy^C@Aaf=_&}LHn-?%iZwh-5Rv`o^aY7-<`*Wi)M~z!Z;Z}U7|s)UkITJ z{wq*}mg-2T0h2`<^qUuncf%f!G^n5%`2`7HAFra>LF5Izl(MW~P=NY&tR;DXyMSA! z*7nd!X=iF}Pk6Ix-fy&9^KH%$o5|$N%QsCkTMKMX*nM)_h80yZ7D7CEH3JlnwIfzI zA)(tlka6&E4<+rv5PF1?&HTKiUcGv;>UoJk{4J_fbZrOXMSnRYi1bk?nW#n8!C}N5 zs<#FwPqVR|$WADv8k{`E+#*R4aN)0|UC7^Hb?{1QG#M*+&PDXMXtD`7Hi#iZe9D(D zuUBexxZDnMQqQ^d=&Tr0LRWVqp}5^Y8gC&6csJ@!Mr$!TuRA#n2K?6=)~g5kS>FI$ z4GQ$yY{-I)d3h!a4-c$AIY-;~2O`l?8jZ2*Y| zF}>^6WBCbW5Tc%XBGGRLl1e>qRLRpk52!ys8cZH)z3(QH%jyt1E{Qw^-3>`5XS9Z( zA>>7nODKzVk|{UOK66rfZpI`CuX#{cK)C`E?ior>X*?GVBU=#l9}2?uQynatE*MI@ zia*wgG&+SOG*WZS<@FX;hq{J`6;*kIPFJRoG9Ur!j~YR;iNN31jUgjJ`+i_Px#LM2 zI9ymcp3LG3pFqlRy?S)_1X#W@PndRtiA2V(<&JYL_mD(QTNB2E%99tvZq_E1v=yjzjiL3^$X&d9DSehk-i9?_Y@zma@&}m5 zVk?`HK?=DcEVi(RCbEQ^2fR+pCW|lz#D6D~;Xq?7O_@S=;Kf!d=5Sgc(w}n3d^}-< z%92&&l2j~s->_0Ck352j->}f%^T>Y-NypuJ#w=4Y@#z^E4yll?O=et<39JgzI-Z2^ zq7Ak<2l44;2P=WBG~ZY<(+S4H3shr1Pw8R%h79Bf#rXiLoBaD z>gM3e0sjA!cugIg7S@4%Ka02{A8pgC?GrnEz@)y(i9=#jiptsSIbTxRT|}Ctre%c+aX~p$mykfToJ~$zw!2en@;t zrwQOb!5@%*DoEe{fW*?}OMv_gh!;!97^(9F&BL#JKmx(TXVub99}*vG_>k-ZM?L%@ zf%J^i_FqaOWgb3Y|E}foP8yP&ki=!awh{st9kLRLE?TU~yk{k8s!tg+Bu=Hx9#HZb z#6BR-Hmo8=T*R(xNe&MqvubEX894+kS?kDV=%EWMNIv}|TCPv!4Wtz`gl{0$LKow> z(Q$nf;**kx#km%$Ce}exXQo>r4-d7O^56g!D$-(-TE)$>l%#Hg!oW1c4uKBLIxEMT zR+4A5Ly>QB1^(es!a|HGi3p1diw+BSjvE5CiH70gkZ820FB=K<1LS^SaAfrj&3~pW ziwJKES+|=7I!ehD2Tuw)S6<~n>By^h8!sib(+ss1GG&x#M>#ITp`H~a3@=}=X>D2s z@hXJqYy&q-2dBw~#Pr*p{oxP-lK1qQ>Dg9ro6G`UkQ(jTDt%`zNLP~Wv|3zsv^0~_cPaChUUdLng zOxiVpx-%)OMLqrj(kb9;#YFMSu)+ZdxHqqxj0VuM7Bv*_v=URcQLUzd5fJ9QYRA=p zW}CmLwHKOfcJ=*leymkHZk&TC-Zgc82H{G+H3Fu{J=(QCS`CIT1`qYjXKKZVVjPUNFE*U zd_zVddiZMyPCHj>EL$IifEsg*Owlr=%41|0sq#rW%AOx1HzAVxBz?m!pCDKe_}h)s zqz5Ex{I&6UBD{**gZoZOj2k{YHa>1R=w!nMvL7aDx=8GN6uo(oT&8{(fa_PyG_G?m zkcM>MC09B~n_MOjRIXIG0yzOEzwZk9Sz}K(UMEXI_~;v?jnJ&j^UHshIlYajN>?GhICr|H*5Pb-K`a2&L$=)X7x9$S@=Svl&v%STg zkQ%RV&N?*^SAzL?tZ%`N`-lgisQd0VTii&5>&NeI(;+Ry#0!4mlH7rn!cXj*F9f9H+(EpGiF#%!2L5=5`U@>0s)k(BTb8#ZP=;*BG;zfM^ zA_Fc9h}xCU;XML~cf#_7+1xNieE^Z?UkhD<@djMBpLg$KK)xK*|;?PJsDej1_tIoZLq= zYUFnI5vM~#+rDBtbT92IX2auoU$t>+KXEWX2m6UUc7?}@J{Sauk5gM$#Ho}#`ip7M zncrV*4yY^ps{`HRMGG{}i5FW4eiLrf_3`2-^!*8>zADj}0V0pRM+S&I+QuZPboL~u zBSQy@smlpa$)99T{G}~eEiDHO?`*&bdM~PDqjt`@^MvFtiRL8ZW5o5$;$mGYhrHjUhx79Xg9xHwU zCt2N}(l+D8yLen%<~9MW2U}awe2EzB#r}dUQB|ymeasgF$SQqsp6;bFc`&V z(Adr>h5$6&C=SF!mS~H5!6=3XZ`rEJI%kf0bDLw$GN&7J_#H;_Fu1(fvW*6(iSxlF zwrpb+X=0gx;Y1@YQyc(p!jCzM%;F(_lEH>d7RQL#YGqrjV7++kXEeM_jHK^O6>kFO zz4~loz6dveRUY@;X~i^goZy$fm*MH+TtQy}-RkKR?KoF#iXkX&oF&dAWpJcOgJ+9_ zK>obhVk3CGKU*vT&j_9aRsqk2Z;J|LiOFeYt2v82aKr5x3yhzti775tpjiY<`8<5dt9}xNC#h8N|J}0hYL&4y_dX zz+*)vSWP*-SSfCV$DEB~7rl1>R14MKlZ~P;J-bmH2wi@g#L4hjv`Ks$mn3R>>{cbt zgrmLcDlrTvwWfEg#AHC}vROO?%#&KtKQ==@=xGa>WF@_~MVyJptz)TM#p^H^&!kqY z=XS9r*ilF>Gwl!`sEw^@@=mcA?!A>R+bLQAt@k$AqQy_?mEEETb>9X5&h8TP;g%OV z`c{iafU>k(JWDTU$sY8F-C`P@w_9vR&3jafgQ0=+$R2SIUf)g=di!2+yxnzyo4? zT-Vi&eRB?6P|q>F-*bj{qH_<4IVhaAz9_CT06|xKXL{nII0lDD(8SYXTRP{I7=^1 zl3SH$^X4vY-HH#3vs^pgVezV4g=g~?T36>zbo^K1q&jw;!|AsiEO+&GrX7!n)3lM5 zN8Z4TU|wH?HQ~;Ytj|$#J#s61O)`p3{8r3wsKwgU+R&Od5KmnMyRhfR6h+e3m&65cP>7%j4Pqbc=e-P%3yk zv~1esq&pKO9~$;8ZdAw%4z(@_HNj0)o^}eP?n?Y9=np}RznPGw=P@89DCpzQ0xEt&*^oFhJMs{QKYeWH|PIOT% z1fy{JYpwX~4aBI);#LGT3_`X<#Z%5Ld_r-L4w2(G@AXW%|xu3BE55&C) z|K!069*WC(PHuQCc5uUY*3$4sy3TCMU*a`{gI2QsFT^-r@qhGEoP-6x>tEBSNEeEO zidhiW>9Nqj{lBaO(REVa=p>!)Gl+%me^Nh5mk41SdUGUQAi}@4&_?|1>n`C*N9y+!OH)2Scoy3&mSx~@W7?{%yuKzC0Nnp^kM*Y1fPLfD(QI+3?zkIn)j@+kh|z_5fGgFU&_%PS3A%iO zJB??iB;8TS*u6T9W9^6P8o*a9vk$P?;kpQ(eRdj03r6ay@IP%?&?wz;gtz~~9*)+* zMJZ@i#E3lHd;V!S7ml^@c5CSo>EYjz&hCF<~j z?kYr^p46=o{1#NQeJ6EK5&m6d+fM7E5MEG8zdxhvj0<$M@mbwCy!R?CIIHUq>Hpqq zbpKi12T&aBy~YNe)5XA!Vt4cKei=Wn!_!#eRpY~AT)b^lg;QU^;5eJ_L81r+|ifq>>~~E#xX0j zp%EjbF5Y z(n@fIXv&T*k&Lk2vUVRz=Xgp3O)r*8iy=wzjJih`e5Pj?;$#s3(d71PCjFR^? zcS_wc96L{PO3$&}kd0j-_2xN4bO|e6DgA)(JU>mSeN>vS#~@Q9AmXT3`o&~8!*P(`Y!)jVO-+YW75FpOkdfQXe58Gn*xDlLkQ=1a~u~+ofOuLm7B*r?h~8mg4qGl!u!;pG$rM zpsb?*?w3~Jlc(v515y`UvGX-O=5bJ35 zHQ;kv8V%tz_q23J+v=0fNES$%XVODwq-C%KL(WS4kmkTyDF6~=YaYFIR^l08!a0eT z8~e^l{b4*gFY)@sa$e%8JUuVj05V*Vcu6zsg7h{#{=5LITTbU+RQvw8DA@s;a!I9f z^O7_hpwX8lo|ArkS&D&dz4(g6Ph`wjRLomfB>oBH;Hwg^YYtvj8zZi%!z-?-<2Z zA7t_2k$ZN?Um||(G8M~_V5apDt;F(E!4KAXl^_p*P+yOIuan~;yz=w@H}8~(y<4Pgu*uWlr- z75ti%vbP$`Ay_4x-BiA+)6T7FaG>0Pmqcg$n~@iVliES z?1yk(1#QtxK92J?u*c2hC~ntnTF5$tKbpWgwv+=<>yK?=%cdDRcS9n@tI3mt7!T8VZ^=Hs`TTP?_)ZEwohvb=o1rk|T`OA23>eVF*78c9%Wbtd8ee>v2p`?rkCsu?C$lFKc$0u0lN+#YV5Z6l7p2j z9>TP#?dmOm3b_cJL#4;c_Z1x7m*xfQ{aE&3c@<9Y8=ab$ZO*aUtnh%kyG^Osw_934 z7XK=fpP=X4ZSZ9yZMIA-%L#9;f!u{$=u4w8d=Mmj-qChjNZwg^WM@YBe$-XT}1mqu5r7k zJ_XUW-SiTR>8;;~n{>V8>WwP`T4PnPtuP76$BQq zXJ?c31@NjI8p;xe>L;tO!`SX&`XuCC5m@|5-N=C;)r@P*D+TC!@Gl%xdV`9}IK84EL-8Zgu_EENcNvo(Al^A|bhO(M{Ck z>^%wbXDuz>a6>XCSva>22BOOty0}2q8sA6;*Ifm6J72N{;?I#z8w( zt7G0)ee3$LOLlu(e>>1;!NHKFOUp_Q!#7^ABEftv6Iq8f`uC6!kkW$fU8{G%hxl_J zvVrULPJ~L>t#bXl$nf9mE~T_=!Gc%l?TDJU>fP9*3jN<0|Mv#_X`{Yc!kKq8mM3=T zmoz}(Y~&IB5B?~Ey>&;Q?297V(%<=XBiWyS=zAgB8ED`Ocnu)VU>HdYSW_QmIyc(ozDgWd`PGKXLNH!Bv5E5V zHS!?P5Fn3ks*FHFV7spDQ$M8uVUVOvfHIDcThL7DiRx>)=W)2u=?hoZtkVm9PeiA9 zDSFm0SZT&jVWOG?p3oH*a#{;z7^35vK@f>UNcVQQohSpwSj2> zm-`{gElG0u5k2^!&YwQ$q`=Qpm^obOg*-tt*YuLL>3!B2#G@y=0Of#4B~x@SQnfi( zTSvCIo6-__mo*z5``UcV++QqWU&Sag!t=MWlid|?xhiG;R@U_`Wd!%@Wxb#Yg!#L- z(iIEQ5GuC!Q=anTXkENA4M9seYm%V+ioN_B{#!>E&W<@<|G~;!j=3gDfnPn9vwg`* zI-+@_6q&Xfs$70^#Be_1y^U_e6rQuVkK~8}LjiHdDCH6#;zM(tI)zOctrTIeW}|!8 zu}V<~GG(07pNlzkywZ-dnlnM^fpFJuY~Mu1#5;mgmGLn7H-sDkTl9B>D-B`-1*NDTd{f2Pt__WPw8JgMGCEHP7oO0nKY)RCne#zK3|2j*rg zdwSrB*EA@7gYvUKj2!Zn(#p5}6API3zt1L2RF^Ck77QI=OTJRtBD^qqZ;O1ps}|UxG}n^ z`0G70*3@aHA4J`zquJnlN^7hkPx}${4Eo-CU+F_6SHNUBkCfhs{`s@g5tr^)wLwQb zQiABg$I4?ER~*l_JyAj>&t`=kTypmZxm)gKKmDO3>WKQ<{U2q6SYNaLhvO4~GxR^k zhLt+O|Lq5Ck=}3wzd>LSM__EEo8co|zpPnddlzAd{p^qWhT{LNF%cS9c^L-ahGjs@ zg_)#^paSfl28Jn!>*k+za4(qSYv_RRQ9rh-p~0K)Lj}4zjU)rxcNzPlks$`Tz1lB^ z0DaWN0GAOkNN#HA1uCM0{0z@wjgR`XIDbQZuC$Z@1JpLKB{Vb4=Dv0z$e$Tzk@aKHNRenvO72Zj|2h_Jqc zA)XWbDO44Owd-ie#a;onBX#t^{W!f%;f6c#l{Z`5#n77Lf7;csUx4p8bGsXQa(HVG zLp$X4#`MAa__!b6GKBDc&t3*Qe=h88fSTj`$9(DAv(I7;Gj%xHoka{VAT0H~fp5d# F{{pL5)&Bqh diff --git a/doc/bashref.html b/doc/bashref.html index 49cc60e8..8d53368e 100644 --- a/doc/bashref.html +++ b/doc/bashref.html @@ -1,1392 +1,1452 @@ - - - - + + +Bash Reference Manual + + + + + + + + + + + + - - - - - - + - + +

Bash Reference Manual

-
- - - - - -
[Top][Contents][Index][ ? ]
-

Bash Reference Manual

-This text is a brief description of the features that are present in -the Bash shell (version 4.4, 13 October 2015). -The Bash home page is http://www.gnu.org/software/bash/. -

-This is Edition 4.4, last updated 13 October 2015, -of The GNU Bash Reference Manual, -for Bash, Version 4.4. -

-Bash contains features that appear in other popular shells, and some + + + + + + + +

Table of Contents

+ +
+ + +
+ + + +
+

+Next: , Previous: , Up: (dir)   [Contents][Index]

+
+ +

Bash Features

+ +

This text is a brief description of the features that are present in +the Bash shell (version 4.4, 16 November 2015). +The Bash home page is http://www.gnu.org/software/bash/. +

+

This is Edition 4.4, last updated 16 November 2015, +of The GNU Bash Reference Manual, +for Bash, Version 4.4. +

+

Bash contains features that appear in other popular shells, and some features that only appear in Bash. Some of the shells that Bash has -borrowed concepts from are the Bourne Shell (`sh'), the Korn Shell -(`ksh'), and the C-shell (`csh' and its successor, -`tcsh'). The following menu breaks the features up into +borrowed concepts from are the Bourne Shell (sh), the Korn Shell +(ksh), and the C-shell (csh and its successor, +tcsh). The following menu breaks the features up into categories, noting which features were inspired by other shells and which are specific to Bash. -

- -This manual is meant as a brief introduction to features found in +

+

This manual is meant as a brief introduction to features found in Bash. The Bash manual page should be used as the definitive reference on shell behavior. -

- -

- - - - - - - - - - - - + + +
1. Introduction  An introduction to the shell.
2. Definitions  Some definitions used in the rest of this - manual.
3. Basic Shell Features  The shell "building blocks".
4. Shell Builtin Commands  Commands that are a part of the shell.
5. Shell Variables  Variables used or set by Bash.
6. Bash Features  Features found only in Bash.
7. Job Control  What job control is and how Bash allows you - to use it.
8. Command Line Editing  Chapter describing the command line - editing features.
9. Using History Interactively  Command History Expansion
10. Installing Bash  How to build and install Bash on your system.
A. Reporting Bugs  How to report bugs in Bash.
B. Major Differences From The Bourne Shell  A terse list of the differences +

+ + + + + + + + + + + + + - - - -

+ versions of /bin/sh. +

GNU Free Documentation License:  Copying and sharing this documentation. +
Indexes:  Various indexes for this manual. +
-
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
- -

1. Introduction

- -
- - -
1.1 What is Bash?  A short description of Bash.
1.2 What is a shell?  A brief introduction to shells.
-

+


+ +
+

+Next: , Up: Top   [Contents][Index]

+
+ +

1 Introduction

+ + + + - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.1 What is Bash?

- -

+


+ + + +

1.1 What is Bash?

-Bash is the shell, or command language interpreter, -for the GNU operating system. -The name is an acronym for the `Bourne-Again SHell', +

Bash is the shell, or command language interpreter, +for the GNU operating system. +The name is an acronym for the ‘Bourne-Again SHell’, a pun on Stephen Bourne, the author of the direct ancestor of -the current Unix shell sh, +the current Unix shell sh, which appeared in the Seventh Edition Bell Labs Research version of Unix. -

- -Bash is largely compatible with sh and incorporates useful -features from the Korn shell ksh and the C shell csh. -It is intended to be a conformant implementation of the IEEE -POSIX Shell and Tools portion of the IEEE POSIX -specification (IEEE Standard 1003.1). -It offers functional improvements over sh for both interactive and +

+

Bash is largely compatible with sh and incorporates useful +features from the Korn shell ksh and the C shell csh. +It is intended to be a conformant implementation of the IEEE +POSIX Shell and Tools portion of the IEEE POSIX +specification (IEEE Standard 1003.1). +It offers functional improvements over sh for both interactive and programming use. -

- -While the GNU operating system provides other shells, including -a version of csh, Bash is the default shell. -Like other GNU software, Bash is quite portable. It currently runs +

+

While the GNU operating system provides other shells, including +a version of csh, Bash is the default shell. +Like other GNU software, Bash is quite portable. It currently runs on nearly every version of Unix and a few other operating systems - -independently-supported ports exist for MS-DOS, OS/2, +independently-supported ports exist for MS-DOS, OS/2, and Windows platforms. -

+

+
+ +
+

+Previous: , Up: Introduction   [Contents][Index]

+
+ +

1.2 What is a shell?

- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

1.2 What is a shell?

- -

- -At its base, a shell is simply a macro processor that executes +

At its base, a shell is simply a macro processor that executes commands. The term macro processor means functionality where text and symbols are expanded to create larger expressions. -

- -A Unix shell is both a command interpreter and a programming +

+

A Unix shell is both a command interpreter and a programming language. As a command interpreter, the shell provides the user -interface to the rich set of GNU utilities. The programming +interface to the rich set of GNU utilities. The programming language features allow these utilities to be combined. Files containing commands can be created, and become commands themselves. These new commands have the same status as -system commands in directories such as `/bin', allowing users +system commands in directories such as /bin, allowing users or groups to establish custom environments to automate their common tasks. -

- -Shells may be used interactively or non-interactively. In +

+

Shells may be used interactively or non-interactively. In interactive mode, they accept input typed from the keyboard. When executing non-interactively, shells execute commands read from a file. -

- -A shell allows execution of GNU commands, both synchronously and +

+

A shell allows execution of GNU commands, both synchronously and asynchronously. The shell waits for synchronous commands to complete before accepting more input; asynchronous commands continue to execute in parallel with the shell while it reads and executes additional commands. -The redirection constructs permit +The redirection constructs permit fine-grained control of the input and output of those commands. -Moreover, the shell allows control over the contents of commands' +Moreover, the shell allows control over the contents of commands’ environments. -

- -Shells also provide a small set of built-in -commands (builtins) implementing functionality impossible +

+

Shells also provide a small set of built-in +commands (builtins) implementing functionality impossible or inconvenient to obtain via separate utilities. -For example, cd, break, continue, and -exec cannot be implemented outside of the shell because +For example, cd, break, continue, and +exec cannot be implemented outside of the shell because they directly manipulate the shell itself. -The history, getopts, kill, or pwd +The history, getopts, kill, or pwd builtins, among others, could be implemented in separate utilities, but they are more convenient to use as builtin commands. All of the shell builtins are described in subsequent sections. -

- -While executing commands is essential, most of the power (and +

+

While executing commands is essential, most of the power (and complexity) of shells is due to their embedded programming languages. Like any high-level language, the shell provides variables, flow control constructs, quoting, and functions. -

- -Shells offer features geared specifically for +

+

Shells offer features geared specifically for interactive use rather than to augment the programming language. These interactive features include job control, command line editing, command history and aliases. Each of these features is described in this manual. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

2. Definitions

- -These definitions are used throughout the remainder of this manual. -

- -

- -
POSIX -
-A family of open system standards based on Unix. Bash +

+
+ +
+

+Next: , Previous: , Up: Top   [Contents][Index]

+
+ +

2 Definitions

+

These definitions are used throughout the remainder of this manual. +

+
+
POSIX
+
+

A family of open system standards based on Unix. Bash is primarily concerned with the Shell and Utilities portion of the -POSIX 1003.1 standard. -

- -

blank -
A space or tab character. -

- -

builtin -
-A command that is implemented internally by the shell itself, rather +POSIX 1003.1 standard. +

+
+
blank
+

A space or tab character. +

+
+
builtin
+
+

A command that is implemented internally by the shell itself, rather than by an executable program somewhere in the file system. -

- -

control operator -
-A token that performs a control function. It is a newline +

+
+
control operator
+
+

A token that performs a control function. It is a newline or one of the following: -`||', `&&', `&', `;', `;;', -`|', `|&', `(', or `)'. -

- -

exit status -
-The value returned by a command to its caller. The value is restricted +‘||’, ‘&&’, ‘&’, ‘;’, ‘;;’, +‘|’, ‘|&’, ‘(’, or ‘)’. +

+
+
exit status
+
+

The value returned by a command to its caller. The value is restricted to eight bits, so the maximum value is 255. -

- -

field -
-A unit of text that is the result of one of the shell expansions. After +

+
+
field
+
+

A unit of text that is the result of one of the shell expansions. After expansion, when executing a command, the resulting fields are used as the command name and arguments. -

- -

filename -
-A string of characters used to identify a file. -

- -

job -
-A set of processes comprising a pipeline, and any processes descended +

+
+
filename
+
+

A string of characters used to identify a file. +

+
+
job
+
+

A set of processes comprising a pipeline, and any processes descended from it, that are all in the same process group. -

- -

job control -
-A mechanism by which users can selectively stop (suspend) and restart +

+
+
job control
+
+

A mechanism by which users can selectively stop (suspend) and restart (resume) execution of processes. -

- -

metacharacter -
-A character that, when unquoted, separates words. A metacharacter is -a space, tab, newline, or one of the following characters: -`|', `&', `;', `(', `)', `<', or -`>'. -

- -

name -
- -A word consisting solely of letters, numbers, and underscores, -and beginning with a letter or underscore. Names are used as +

+
+
metacharacter
+
+

A character that, when unquoted, separates words. A metacharacter is +a space, tab, newline, or one of the following characters: +‘|’, ‘&’, ‘;’, ‘(’, ‘)’, ‘<’, or +‘>’. +

+
+
name
+
+ +

A word consisting solely of letters, numbers, and underscores, +and beginning with a letter or underscore. Names are used as shell variable and function names. -Also referred to as an identifier. -

- -

operator -
-A control operator or a redirection operator. -See section 3.6 Redirections, for a list of redirection operators. -Operators contain at least one unquoted metacharacter. -

- -

process group -
-A collection of related processes each having the same process -group ID. -

- -

process group ID -
-A unique identifier that represents a process group +Also referred to as an identifier. +

+
+
operator
+
+

A control operator or a redirection operator. +See Redirections, for a list of redirection operators. +Operators contain at least one unquoted metacharacter. +

+
+
process group
+
+

A collection of related processes each having the same process +group ID. +

+
+
process group ID
+
+

A unique identifier that represents a process group during its lifetime. -

- -

reserved word -
-A word that has a special meaning to the shell. Most reserved -words introduce shell flow control constructs, such as for and -while. -

- -

return status -
-A synonym for exit status. -

- -

signal -
-A mechanism by which a process may be notified by the kernel +

+
+
reserved word
+
+

A word that has a special meaning to the shell. Most reserved +words introduce shell flow control constructs, such as for and +while. +

+
+
return status
+
+

A synonym for exit status. +

+
+
signal
+
+

A mechanism by which a process may be notified by the kernel of an event occurring in the system. -

+

+
+
special builtin
+
+

A shell builtin command that has been classified as special by the +POSIX standard. +

+
+
token
+
+

A sequence of characters considered a single unit by the shell. +It is either a word or an operator. +

+
+
word
+
+

A sequence of characters treated as a unit by the shell. +Words may not include unquoted metacharacters. +

+
-
special builtin -
-A shell builtin command that has been classified as special by the -POSIX standard. -

+


+ +
+

+Next: , Previous: , Up: Top   [Contents][Index]

+
+ +

3 Basic Shell Features

+ -
token -
-A sequence of characters considered a single unit by the shell. -It is either a word or an operator. -

- -

word -
-A sequence of characters treated as a unit by the shell. -Words may not include unquoted metacharacters. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3. Basic Shell Features

- -

- -Bash is an acronym for `Bourne-Again SHell'. +

Bash is an acronym for ‘Bourne-Again SHell’. The Bourne shell is the traditional Unix shell originally written by Stephen Bourne. All of the Bourne shell builtin commands are available in Bash, -The rules for evaluation and quoting are taken from the POSIX -specification for the `standard' Unix shell. -

- -This chapter briefly summarizes the shell's `building blocks': -commands, control structures, shell functions, shell parameters, +The rules for evaluation and quoting are taken from the POSIX +specification for the ‘standard’ Unix shell. +

+

This chapter briefly summarizes the shell’s ‘building blocks’: +commands, control structures, shell functions, shell parameters, shell expansions, -redirections, which are a way to direct input and output from +redirections, which are a way to direct input and output from and to named files, and how the shell executes commands. -

+

+ + + + + + + + + + -
- - - - - - - - -
3.1 Shell Syntax  What your input means to the shell.
3.2 Shell Commands  The types of commands you can use.
3.3 Shell Functions  Grouping commands by name.
3.4 Shell Parameters  How the shell stores values.
3.5 Shell Expansions  How Bash expands parameters and the various - expansions available.
3.6 Redirections  A way to control where input and output go.
3.7 Executing Commands  What happens when you run a command.
3.8 Shell Scripts  Executing files of shell commands.
-

+


+ + + +

3.1 Shell Syntax

+ + + + + - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1 Shell Syntax

- -
- - - -
3.1.1 Shell Operation  The basic operation of the shell.
3.1.2 Quoting  How to remove the special meaning from characters.
3.1.3 Comments  How to specify comments.
-

- -When the shell reads input, it proceeds through a +

When the shell reads input, it proceeds through a sequence of operations. If the input indicates the beginning of a -comment, the shell ignores the comment symbol (`#'), and the rest +comment, the shell ignores the comment symbol (‘#’), and the rest of that line. - -Otherwise, roughly speaking, the shell reads its input and +

+

Otherwise, roughly speaking, the shell reads its input and divides the input into words and operators, employing the quoting rules to select which meanings to assign various words and characters. -

- -The shell then parses these tokens into commands and other constructs, +

+

The shell then parses these tokens into commands and other constructs, removes the special meaning of certain words or characters, expands others, redirects input and output as needed, executes the specified -command, waits for the command's exit status, and makes that exit status +command, waits for the command’s exit status, and makes that exit status available for further inspection or processing. -

+

+
+ +
+

+Next: , Up: Shell Syntax   [Contents][Index]

+
+ +

3.1.1 Shell Operation

- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1.1 Shell Operation

- -

- -The following is a brief description of the shell's operation when it +

The following is a brief description of the shell’s operation when it reads and executes a command. Basically, the shell does the following: -

+

+
    +
  1. Reads its input from a file (see Shell Scripts), from a string +supplied as an argument to the -c invocation option +(see Invoking Bash), or from the user’s terminal. -
      -
    1. -Reads its input from a file (see section 3.8 Shell Scripts), from a string -supplied as an argument to the `-c' invocation option -(see section 6.1 Invoking Bash), or from the user's terminal. -

      +

    2. Breaks the input into words and operators, obeying the quoting rules +described in Quoting. These tokens are separated by +metacharacters. Alias expansion is performed by this step +(see Aliases). -
    3. -Breaks the input into words and operators, obeying the quoting rules -described in 3.1.2 Quoting. These tokens are separated by -metacharacters. Alias expansion is performed by this step -(see section 6.6 Aliases). -

      +

    4. Parses the tokens into simple and compound commands +(see Shell Commands). -
    5. -Parses the tokens into simple and compound commands -(see section 3.2 Shell Commands). -

      - -

    6. -Performs the various shell expansions (see section 3.5 Shell Expansions), breaking -the expanded tokens into lists of filenames (see section 3.5.8 Filename Expansion) +
    7. Performs the various shell expansions (see Shell Expansions), breaking +the expanded tokens into lists of filenames (see Filename Expansion) and commands and arguments. -

      -

    8. -Performs any necessary redirections (see section 3.6 Redirections) and removes +
    9. Performs any necessary redirections (see Redirections) and removes the redirection operators and their operands from the argument list. -

      -

    10. -Executes the command (see section 3.7 Executing Commands). -

      +

    11. Executes the command (see Executing Commands). -
    12. -Optionally waits for the command to complete and collects its exit -status (see section 3.7.5 Exit Status). -

      +

    13. Optionally waits for the command to complete and collects its exit +status (see Exit Status). -
    -

    +

- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1.2 Quoting

- -
- - - - - -
3.1.2.1 Escape Character  How to remove the special meaning from a single - character.
3.1.2.2 Single Quotes  How to inhibit all interpretation of a sequence - of characters.
3.1.2.3 Double Quotes  How to suppress most of the interpretation of a - sequence of characters.
3.1.2.4 ANSI-C Quoting  How to expand ANSI-C sequences in quoted strings.
3.1.2.5 Locale-Specific Translation  How to translate strings into different languages.
-

+


+ +
+

+Next: , Previous: , Up: Shell Syntax   [Contents][Index]

+
+ +

3.1.2 Quoting

+ + + + + + + + -Quoting is used to remove the special meaning of certain +

Quoting is used to remove the special meaning of certain characters or words to the shell. Quoting can be used to disable special treatment for special characters, to prevent reserved words from being recognized as such, and to prevent parameter expansion. -

- -Each of the shell metacharacters (see section 2. Definitions) +

+

Each of the shell metacharacters (see Definitions) has special meaning to the shell and must be quoted if it is to represent itself. When the command history expansion facilities are being used -(see section 9.3 History Expansion), the -history expansion character, usually `!', must be quoted -to prevent history expansion. See section 9.1 Bash History Facilities, for +(see History Interaction), the +history expansion character, usually ‘!’, must be quoted +to prevent history expansion. See Bash History Facilities, for more details concerning history expansion. -

- -There are three quoting mechanisms: the -escape character, single quotes, and double quotes. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1.2.1 Escape Character

- -A non-quoted backslash `\' is the Bash escape character. +

+

There are three quoting mechanisms: the +escape character, single quotes, and double quotes. +

+
+ +
+

+Next: , Up: Quoting   [Contents][Index]

+
+ +

3.1.2.1 Escape Character

+

A non-quoted backslash ‘\’ is the Bash escape character. It preserves the literal value of the next character that follows, -with the exception of newline. If a \newline pair -appears, and the backslash itself is not quoted, the \newline +with the exception of newline. If a \newline pair +appears, and the backslash itself is not quoted, the \newline is treated as a line continuation (that is, it is removed from the input stream and effectively ignored). -

+

+
+ +
+

+Next: , Previous: , Up: Quoting   [Contents][Index]

+
+ +

3.1.2.2 Single Quotes

- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1.2.2 Single Quotes

- -

- -Enclosing characters in single quotes (`'') preserves the literal value +

Enclosing characters in single quotes (‘'’) preserves the literal value of each character within the quotes. A single quote may not occur between single quotes, even when preceded by a backslash. -

+

+
+ +
+

+Next: , Previous: , Up: Quoting   [Contents][Index]

+
+ +

3.1.2.3 Double Quotes

- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1.2.3 Double Quotes

- -

- -Enclosing characters in double quotes (`"') preserves the literal value +

Enclosing characters in double quotes (‘"’) preserves the literal value of all characters within the quotes, with the exception of -`$', ``', `\', -and, when history expansion is enabled, `!'. -The characters `$' and ``' -retain their special meaning within double quotes (see section 3.5 Shell Expansions). +‘$’, ‘`’, ‘\’, +and, when history expansion is enabled, ‘!’. +When the shell is in +POSIX mode (see Bash POSIX Mode), +the ‘!’ has no special meaning +within double quotes, even when history expansion is enabled. +The characters ‘$’ and ‘`’ +retain their special meaning within double quotes (see Shell Expansions). The backslash retains its special meaning only when followed by one of the following characters: -`$', ``', `"', `\', or newline. +‘$’, ‘`’, ‘"’, ‘\’, or newline. Within double quotes, backslashes that are followed by one of these characters are removed. Backslashes preceding characters without a special meaning are left unmodified. A double quote may be quoted within double quotes by preceding it with a backslash. -If enabled, history expansion will be performed unless an `!' +If enabled, history expansion will be performed unless an ‘!’ appearing in double quotes is escaped using a backslash. -The backslash preceding the `!' is not removed. -

+The backslash preceding the ‘!’ is not removed. +

+

The special parameters ‘*’ and ‘@’ have special meaning +when in double quotes (see Shell Parameter Expansion). +

+
+ +
+

+Next: , Previous: , Up: Quoting   [Contents][Index]

+
+ +

3.1.2.4 ANSI-C Quoting

+ -The special parameters `*' and `@' have special meaning -when in double quotes (see section 3.5.3 Shell Parameter Expansion). -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1.2.4 ANSI-C Quoting

- -

- -Words of the form $'string' are treated specially. The -word expands to string, with backslash-escaped characters replaced +

Words of the form $'string' are treated specially. The +word expands to string, with backslash-escaped characters replaced as specified by the ANSI C standard. Backslash escape sequences, if present, are decoded as follows: -

- -

-
\a -
alert (bell) -
\b -
backspace -
\e -
\E -
an escape character (not ANSI C) -
\f -
form feed -
\n -
newline -
\r -
carriage return -
\t -
horizontal tab -
\v -
vertical tab -
\\ -
backslash -
\' -
single quote -
\" -
double quote -
\? -
question mark -
\nnn -
the eight-bit character whose value is the octal value nnn +

+
+
\a
+

alert (bell) +

+
\b
+

backspace +

+
\e
+
\E
+

an escape character (not ANSI C) +

+
\f
+

form feed +

+
\n
+

newline +

+
\r
+

carriage return +

+
\t
+

horizontal tab +

+
\v
+

vertical tab +

+
\\
+

backslash +

+
\'
+

single quote +

+
\"
+

double quote +

+
\?
+

question mark +

+
\nnn
+

the eight-bit character whose value is the octal value nnn (one to three digits) -

\xHH -
the eight-bit character whose value is the hexadecimal value HH +

+
\xHH
+

the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) -

\uHHHH -
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value -HHHH (one to four hex digits) -
\UHHHHHHHH -
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value -HHHHHHHH (one to eight hex digits) -
\cx -
a control-x character -
-

+

+
\uHHHH
+

the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +HHHH (one to four hex digits) +

+
\UHHHHHHHH
+

the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +HHHHHHHH (one to eight hex digits) +

+
\cx
+

a control-x character +

+
-The expanded result is single-quoted, as if the dollar sign had not +

The expanded result is single-quoted, as if the dollar sign had not been present. -

+

+
+ +
+

+Previous: , Up: Quoting   [Contents][Index]

+
+ +

3.1.2.5 Locale-Specific Translation

+ + + + - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1.2.5 Locale-Specific Translation

- -

- -A double-quoted string preceded by a dollar sign (`$') will cause +

A double-quoted string preceded by a dollar sign (‘$’) will cause the string to be translated according to the current locale. -If the current locale is C or POSIX, the dollar sign +If the current locale is C or POSIX, the dollar sign is ignored. If the string is translated and replaced, the replacement is double-quoted. -

- - - - -Some systems use the message catalog selected by the LC_MESSAGES +

+ + + +

Some systems use the message catalog selected by the LC_MESSAGES shell variable. Others create the name of the message catalog from the -value of the TEXTDOMAIN shell variable, possibly adding a -suffix of `.mo'. If you use the TEXTDOMAIN variable, you -may need to set the TEXTDOMAINDIR variable to the location of +value of the TEXTDOMAIN shell variable, possibly adding a +suffix of ‘.mo’. If you use the TEXTDOMAIN variable, you +may need to set the TEXTDOMAINDIR variable to the location of the message catalog files. Still others use both variables in this fashion: -TEXTDOMAINDIR/LC_MESSAGES/LC_MESSAGES/TEXTDOMAIN.mo. -

+TEXTDOMAINDIR/LC_MESSAGES/LC_MESSAGES/TEXTDOMAIN.mo. +

+
+ +
+

+Previous: , Up: Shell Syntax   [Contents][Index]

+
+ +

3.1.3 Comments

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.1.3 Comments

- -

- -In a non-interactive shell, or an interactive shell in which the -interactive_comments option to the shopt -builtin is enabled (see section 4.3.2 The Shopt Builtin), -a word beginning with `#' +

In a non-interactive shell, or an interactive shell in which the +interactive_comments option to the shopt +builtin is enabled (see The Shopt Builtin), +a word beginning with ‘#’ causes that word and all remaining characters on that line to -be ignored. An interactive shell without the interactive_comments -option enabled does not allow comments. The interactive_comments +be ignored. An interactive shell without the interactive_comments +option enabled does not allow comments. The interactive_comments option is on by default in interactive shells. -See section 6.3 Interactive Shells, for a description of what makes +See Interactive Shells, for a description of what makes a shell interactive. -

+

+
+ + + +

3.2 Shell Commands

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2 Shell Commands

- -

- -A simple shell command such as echo a b c consists of the command +

A simple shell command such as echo a b c consists of the command itself followed by arguments, separated by spaces. -

- -More complex shell commands are composed of simple commands arranged together +

+

More complex shell commands are composed of simple commands arranged together in a variety of ways: in a pipeline in which the output of one command becomes the input of a second, in a loop or conditional construct, or in some other grouping. -

+

+ + + + + + + + -
- - - - - - -
3.2.1 Simple Commands  The most common type of command.
3.2.2 Pipelines  Connecting the input and output of several - commands.
3.2.3 Lists of Commands  How to execute commands sequentially.
3.2.4 Compound Commands  Shell commands for control flow.
3.2.5 Coprocesses  Two-way communication between commands.
3.2.6 GNU Parallel  Running commands in parallel.
-

+


+ +
+

+Next: , Up: Shell Commands   [Contents][Index]

+
+ +

3.2.1 Simple Commands

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.1 Simple Commands

- -

- -A simple command is the kind of command encountered most often. -It's just a sequence of words separated by blanks, terminated -by one of the shell's control operators (see section 2. Definitions). The +

A simple command is the kind of command encountered most often. +It’s just a sequence of words separated by blanks, terminated +by one of the shell’s control operators (see Definitions). The first word generally specifies a command to be executed, with the -rest of the words being that command's arguments. -

- -The return status (see section 3.7.5 Exit Status) of a simple command is +rest of the words being that command’s arguments. +

+

The return status (see Exit Status) of a simple command is its exit status as provided -by the POSIX 1003.1 waitpid function, or 128+n if -the command was terminated by signal n. -

+by the POSIX 1003.1 waitpid function, or 128+n if +the command was terminated by signal n. +

+
+ +
+

+Next: , Previous: , Up: Shell Commands   [Contents][Index]

+
+ +

3.2.2 Pipelines

+ + - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.2 Pipelines

- -

+

A pipeline is a sequence of one or more commands separated by +one of the control operators ‘|’ or ‘|&’. +

+ + + +

The format for a pipeline is +

+
[time [-p]] [!] command1 [ | or |& command2 ] …
+
-A pipeline is a sequence of one or more commands separated by -one of the control operators `|' or `|&'. -

- - - - -The format for a pipeline is -
 
[time [-p]] [!] command1 [ | or |& command2 ] ...
-

- -The output of each command in the pipeline is connected via a pipe +

The output of each command in the pipeline is connected via a pipe to the input of the next command. -That is, each command reads the previous command's output. This +That is, each command reads the previous command’s output. This connection is performed before any redirections specified by the command. -

- -If `|&' is used, command1's standard error, in addition to +

+

If ‘|&’ is used, command1’s standard error, in addition to its standard output, is connected to -command2's standard input through the pipe; -it is shorthand for 2>&1 |. +command2’s standard input through the pipe; +it is shorthand for 2>&1 |. This implicit redirection of the standard error to the standard output is performed after any redirections specified by the command. -

- -The reserved word time causes timing statistics +

+

The reserved word time causes timing statistics to be printed for the pipeline once it finishes. The statistics currently consist of elapsed (wall-clock) time and -user and system time consumed by the command's execution. -The `-p' option changes the output format to that specified -by POSIX. -When the shell is in POSIX mode (see section 6.11 Bash POSIX Mode), -it does not recognize time as a reserved word if the next -token begins with a `-'. -The TIMEFORMAT variable may be set to a format string that +user and system time consumed by the command’s execution. +The -p option changes the output format to that specified +by POSIX. +When the shell is in POSIX mode (see Bash POSIX Mode), +it does not recognize time as a reserved word if the next +token begins with a ‘-’. +The TIMEFORMAT variable may be set to a format string that specifies how the timing information should be displayed. -See section 5.2 Bash Variables, for a description of the available formats. -The use of time as a reserved word permits the timing of +See Bash Variables, for a description of the available formats. +The use of time as a reserved word permits the timing of shell builtins, shell functions, and pipelines. An external -time command cannot time these easily. -

- -When the shell is in POSIX mode (see section 6.11 Bash POSIX Mode), time +time command cannot time these easily. +

+

When the shell is in POSIX mode (see Bash POSIX Mode), time may be followed by a newline. In this case, the shell displays the total user and system time consumed by the shell and its children. -The TIMEFORMAT variable may be used to specify the format of +The TIMEFORMAT variable may be used to specify the format of the time information. -

- -If the pipeline is not executed asynchronously (see section 3.2.3 Lists of Commands), the +

+

If the pipeline is not executed asynchronously (see Lists), the shell waits for all commands in the pipeline to complete. -

- -Each command in a pipeline is executed in its own subshell -(see section 3.7.3 Command Execution Environment). The exit +

+

Each command in a pipeline is executed in its own subshell +(see Command Execution Environment). The exit status of a pipeline is the exit status of the last command in the -pipeline, unless the pipefail option is enabled -(see section 4.3.1 The Set Builtin). -If pipefail is enabled, the pipeline's return status is the +pipeline, unless the pipefail option is enabled +(see The Set Builtin). +If pipefail is enabled, the pipeline’s return status is the value of the last (rightmost) command to exit with a non-zero status, or zero if all commands exit successfully. -If the reserved word `!' precedes the pipeline, the +If the reserved word ‘!’ precedes the pipeline, the exit status is the logical negation of the exit status as described above. The shell waits for all commands in the pipeline to terminate before returning a value. -

+

+
+ +
+

+Next: , Previous: , Up: Shell Commands   [Contents][Index]

+
+ +

3.2.3 Lists of Commands

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.3 Lists of Commands

- -

- -A list is a sequence of one or more pipelines separated by one -of the operators `;', `&', `&&', or `||', -and optionally terminated by one of `;', `&', or a -newline. -

- -Of these list operators, `&&' and `||' -have equal precedence, followed by `;' and `&', +

A list is a sequence of one or more pipelines separated by one +of the operators ‘;’, ‘&’, ‘&&’, or ‘||’, +and optionally terminated by one of ‘;’, ‘&’, or a +newline. +

+

Of these list operators, ‘&&’ and ‘||’ +have equal precedence, followed by ‘;’ and ‘&’, which have equal precedence. -

- -A sequence of one or more newlines may appear in a list +

+

A sequence of one or more newlines may appear in a list to delimit commands, equivalent to a semicolon. -

- -If a command is terminated by the control operator `&', +

+

If a command is terminated by the control operator ‘&’, the shell executes the command asynchronously in a subshell. -This is known as executing the command in the background. +This is known as executing the command in the background. The shell does not wait for the command to finish, and the return status is 0 (true). -When job control is not active (see section 7. Job Control), +When job control is not active (see Job Control), the standard input for asynchronous commands, in the absence of any -explicit redirections, is redirected from /dev/null. -

- -Commands separated by a `;' are executed sequentially; the shell +explicit redirections, is redirected from /dev/null. +

+

Commands separated by a ‘;’ are executed sequentially; the shell waits for each command to terminate in turn. The return status is the exit status of the last command executed. -

- -AND and OR lists are sequences of one or more pipelines -separated by the control operators `&&' and `||', -respectively. AND and OR lists are executed with left +

+

AND and OR lists are sequences of one or more pipelines +separated by the control operators ‘&&’ and ‘||’, +respectively. AND and OR lists are executed with left associativity. -

+

+

An AND list has the form +

+
command1 && command2
+
-An AND list has the form -
 
command1 && command2
-

- -command2 is executed if, and only if, command1 +

command2 is executed if, and only if, command1 returns an exit status of zero. -

+

+

An OR list has the form +

+
command1 || command2
+
-An OR list has the form -
 
command1 || command2
-

- -command2 is executed if, and only if, command1 +

command2 is executed if, and only if, command1 returns a non-zero exit status. -

- -The return status of -AND and OR lists is the exit status of the last command +

+

The return status of +AND and OR lists is the exit status of the last command executed in the list. -

+

+
+ +
+

+Next: , Previous: , Up: Shell Commands   [Contents][Index]

+
+ +

3.2.4 Compound Commands

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.4 Compound Commands

- -

+ + + + + -

- - - -
3.2.4.1 Looping Constructs  Shell commands for iterative action.
3.2.4.2 Conditional Constructs  Shell commands for conditional execution.
3.2.4.3 Grouping Commands  Ways to group commands.
-

- -Compound commands are the shell programming constructs. +

Compound commands are the shell programming constructs. Each construct begins with a reserved word or control operator and is terminated by a corresponding reserved word or operator. -Any redirections (see section 3.6 Redirections) associated with a compound command +Any redirections (see Redirections) associated with a compound command apply to all commands within that compound command unless explicitly overridden. -

- -In most cases a list of commands in a compound command's description may be +

+

In most cases a list of commands in a compound command’s description may be separated from the rest of the command by one or more newlines, and may be followed by a newline in place of a semicolon. -

- -Bash provides looping constructs, conditional commands, and mechanisms +

+

Bash provides looping constructs, conditional commands, and mechanisms to group commands and execute them as a unit. -

+

+
+ + + +

3.2.4.1 Looping Constructs

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.4.1 Looping Constructs

- -

+

Bash supports the following looping constructs. +

+

Note that wherever a ‘;’ appears in the description of a +command’s syntax, it may be replaced with one or more newlines. +

+
+
until
+
+ + +

The syntax of the until command is: +

+
+
until test-commands; do consequent-commands; done
+
-Bash supports the following looping constructs. -

- -Note that wherever a `;' appears in the description of a -command's syntax, it may be replaced with one or more newlines. -

- -

-
until -
- - -The syntax of the until command is: -

- -
 
until test-commands; do consequent-commands; done
-

- -Execute consequent-commands as long as -test-commands has an exit status which is not zero. +

Execute consequent-commands as long as +test-commands has an exit status which is not zero. The return status is the exit status of the last command executed -in consequent-commands, or zero if none was executed. -

+in consequent-commands, or zero if none was executed. +

+
+
while
+
+

The syntax of the while command is: +

+
+
while test-commands; do consequent-commands; done
+
-
while -
-The syntax of the while command is: -

- -
 
while test-commands; do consequent-commands; done
-

- -Execute consequent-commands as long as -test-commands has an exit status of zero. +

Execute consequent-commands as long as +test-commands has an exit status of zero. The return status is the exit status of the last command executed -in consequent-commands, or zero if none was executed. -

+in consequent-commands, or zero if none was executed. +

+
+
for
+
+

The syntax of the for command is: +

+
+
for name [ [in [words …] ] ; ] do commands; done
+
-
for -
-The syntax of the for command is: -

- -
 
for name [ [in [words ...] ] ; ] do commands; done
-

- -Expand words, and execute commands once for each member -in the resultant list, with name bound to the current member. -If `in words' is not present, the for command -executes the commands once for each positional parameter that is -set, as if `in "$@"' had been specified -(see section 3.4.2 Special Parameters). +

Expand words, and execute commands once for each member +in the resultant list, with name bound to the current member. +If ‘in words’ is not present, the for command +executes the commands once for each positional parameter that is +set, as if ‘in "$@"’ had been specified +(see Special Parameters). The return status is the exit status of the last command that executes. -If there are no items in the expansion of words, no commands are +If there are no items in the expansion of words, no commands are executed, and the return status is zero. -

+

+

An alternate form of the for command is also supported: +

+
+
for (( expr1 ; expr2 ; expr3 )) ; do commands ; done
+
-An alternate form of the for command is also supported: -

- -
 
for (( expr1 ; expr2 ; expr3 )) ; do commands ; done
-

- -First, the arithmetic expression expr1 is evaluated according -to the rules described below (see section 6.5 Shell Arithmetic). -The arithmetic expression expr2 is then evaluated repeatedly +

First, the arithmetic expression expr1 is evaluated according +to the rules described below (see Shell Arithmetic). +The arithmetic expression expr2 is then evaluated repeatedly until it evaluates to zero. -Each time expr2 evaluates to a non-zero value, commands are -executed and the arithmetic expression expr3 is evaluated. +Each time expr2 evaluates to a non-zero value, commands are +executed and the arithmetic expression expr3 is evaluated. If any expression is omitted, it behaves as if it evaluates to 1. -The return value is the exit status of the last command in commands +The return value is the exit status of the last command in commands that is executed, or false if any of the expressions is invalid. -

-

+

+
-The break and continue builtins (see section 4.1 Bourne Shell Builtins) +

The break and continue builtins (see Bourne Shell Builtins) may be used to control loop execution. -

+

+
+ + + +

3.2.4.2 Conditional Constructs

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.4.2 Conditional Constructs

- -

- -

-
if -
- - - - -The syntax of the if command is: -

- -
 
if test-commands; then
-  consequent-commands;
-[elif more-test-commands; then
-  more-consequents;]
-[else alternate-consequents;]
+
+
if
+
+ + + + +

The syntax of the if command is: +

+
+
if test-commands; then
+  consequent-commands;
+[elif more-test-commands; then
+  more-consequents;]
+[else alternate-consequents;]
 fi
-

+ -The test-commands list is executed, and if its return status is zero, -the consequent-commands list is executed. -If test-commands returns a non-zero status, each elif list +

The test-commands list is executed, and if its return status is zero, +the consequent-commands list is executed. +If test-commands returns a non-zero status, each elif list is executed in turn, and if its exit status is zero, -the corresponding more-consequents is executed and the +the corresponding more-consequents is executed and the command completes. -If `else alternate-consequents' is present, and -the final command in the final if or elif clause -has a non-zero exit status, then alternate-consequents is executed. +If ‘else alternate-consequents’ is present, and +the final command in the final if or elif clause +has a non-zero exit status, then alternate-consequents is executed. The return status is the exit status of the last command executed, or zero if no condition tested true. -

+

+
+
case
+
+ + +

The syntax of the case command is: +

+
+
case word in [ [(] pattern [| pattern]…) command-list ;;]… esac
+
-
case -
- - -The syntax of the case command is: -

- -
 
case word in [ [(] pattern [| pattern]...) command-list ;;]... esac
-

- -case will selectively execute the command-list corresponding to -the first pattern that matches word. -If the nocasematch shell option -(see the description of shopt in 4.3.2 The Shopt Builtin) +

case will selectively execute the command-list corresponding to +the first pattern that matches word. +If the nocasematch shell option +(see the description of shopt in The Shopt Builtin) is enabled, the match is performed without regard to the case of alphabetic characters. -The `|' is used to separate multiple patterns, and the `)' +The ‘|’ is used to separate multiple patterns, and the ‘)’ operator terminates a pattern list. A list of patterns and an associated command-list is known -as a clause. -

- -Each clause must be terminated with `;;', `;&', or `;;&'. -The word undergoes tilde expansion, parameter expansion, command +as a clause. +

+

Each clause must be terminated with ‘;;’, ‘;&’, or ‘;;&’. +The word undergoes tilde expansion, parameter expansion, command substitution, arithmetic expansion, and quote removal before matching is -attempted. Each pattern undergoes tilde expansion, parameter +attempted. Each pattern undergoes tilde expansion, parameter expansion, command substitution, and arithmetic expansion. -

- -There may be an arbitrary number of case clauses, each terminated -by a `;;', `;&', or `;;&'. +

+

There may be an arbitrary number of case clauses, each terminated +by a ‘;;’, ‘;&’, or ‘;;&’. The first pattern that matches determines the command-list that is executed. -It's a common idiom to use `*' as the final pattern to define the +It’s a common idiom to use ‘*’ as the final pattern to define the default case, since that pattern will always match. -

- -Here is an example using case in a script that could be used to +

+

Here is an example using case in a script that could be used to describe one interesting feature of an animal: -

- -
 
echo -n "Enter the name of an animal: "
+

+
+
echo -n "Enter the name of an animal: "
 read ANIMAL
-echo -n "The $ANIMAL has "
+echo -n "The $ANIMAL has "
 case $ANIMAL in
-  horse | dog | cat) echo -n "four";;
-  man | kangaroo ) echo -n "two";;
-  *) echo -n "an unknown number of";;
+  horse | dog | cat) echo -n "four";;
+  man | kangaroo ) echo -n "two";;
+  *) echo -n "an unknown number of";;
 esac
-echo " legs."
-

+echo " legs." + -

-If the `;;' operator is used, no subsequent matches are attempted after +

If the ‘;;’ operator is used, no subsequent matches are attempted after the first pattern match. -Using `;&' in place of `;;' causes execution to continue with -the command-list associated with the next clause, if any. -Using `;;&' in place of `;;' causes the shell to test the patterns -in the next clause, if any, and execute any associated command-list +Using ‘;&’ in place of ‘;;’ causes execution to continue with +the command-list associated with the next clause, if any. +Using ‘;;&’ in place of ‘;;’ causes the shell to test the patterns +in the next clause, if any, and execute any associated command-list on a successful match. -

+

+

The return status is zero if no pattern is matched. Otherwise, the +return status is the exit status of the command-list executed. +

+
+
select
+
-The return status is zero if no pattern is matched. Otherwise, the -return status is the exit status of the command-list executed. -

+

The select construct allows the easy generation of menus. +It has almost the same syntax as the for command: +

+
+
select name [in words …]; do commands; done
+
-
select -
-

- -The select construct allows the easy generation of menus. -It has almost the same syntax as the for command: -

- -
 
select name [in words ...]; do commands; done
-

- -The list of words following in is expanded, generating a list +

The list of words following in is expanded, generating a list of items. The set of expanded words is printed on the standard error output stream, each preceded by a number. If the -`in words' is omitted, the positional parameters are printed, -as if `in "$@"' had been specified. -The PS3 prompt is then displayed and a line is read from the +‘in words’ is omitted, the positional parameters are printed, +as if ‘in "$@"’ had been specified. +The PS3 prompt is then displayed and a line is read from the standard input. If the line consists of a number corresponding to one of the displayed -words, then the value of name is set to that word. +words, then the value of name is set to that word. If the line is empty, the words and prompt are displayed again. -If EOF is read, the select command completes. -Any other value read causes name to be set to null. -The line read is saved in the variable REPLY. -

- -The commands are executed after each selection until a -break command is executed, at which -point the select command completes. -

- -Here is an example that allows the user to pick a filename from the +If EOF is read, the select command completes. +Any other value read causes name to be set to null. +The line read is saved in the variable REPLY. +

+

The commands are executed after each selection until a +break command is executed, at which +point the select command completes. +

+

Here is an example that allows the user to pick a filename from the current directory, and displays the name and index of the file selected. -

- -
 
select fname in *;
+

+
+
select fname in *;
 do
 	echo you picked $fname \($REPLY\)
 	break;
 done
-

+ -

((...)) -
 
(( expression ))
-

+

+
((…))
+
+
(( expression ))
+
-The arithmetic expression is evaluated according to the rules -described below (see section 6.5 Shell Arithmetic). +

The arithmetic expression is evaluated according to the rules +described below (see Shell Arithmetic). If the value of the expression is non-zero, the return status is 0; otherwise the return status is 1. This is exactly equivalent to -
 
let "expression"
-
See section 4.2 Bash Builtin Commands, for a full description of the let builtin. -

+

+
let "expression"
+
+

See Bash Builtins, for a full description of the let builtin. +

+
+
[[…]]
+
+ +
+
[[ expression ]]
+
-
[[...]] -
- -
 
[[ expression ]]
-

- -Return a status of 0 or 1 depending on the evaluation of -the conditional expression expression. +

Return a status of 0 or 1 depending on the evaluation of +the conditional expression expression. Expressions are composed of the primaries described below in -6.4 Bash Conditional Expressions. +Bash Conditional Expressions. Word splitting and filename expansion are not performed on the words -between the [[ and ]]; tilde expansion, parameter and +between the [[ and ]]; tilde expansion, parameter and variable expansion, arithmetic expansion, command substitution, process substitution, and quote removal are performed. -Conditional operators such as `-f' must be unquoted to be recognized +Conditional operators such as ‘-f’ must be unquoted to be recognized as primaries. -

- -When used with [[, the `<' and `>' operators sort +

+

When used with [[, the ‘<’ and ‘>’ operators sort lexicographically using the current locale. -

- -When the `==' and `!=' operators are used, the string to the +

+

When the ‘==’ and ‘!=’ operators are used, the string to the right of the operator is considered a pattern and matched according -to the rules described below in 3.5.8.1 Pattern Matching, -as if the extglob shell option were enabled. -The `=' operator is identical to `=='. -If the nocasematch shell option -(see the description of shopt in 4.3.2 The Shopt Builtin) +to the rules described below in Pattern Matching, +as if the extglob shell option were enabled. +The ‘=’ operator is identical to ‘==’. +If the nocasematch shell option +(see the description of shopt in The Shopt Builtin) is enabled, the match is performed without regard to the case of alphabetic characters. -The return value is 0 if the string matches (`==') or does not -match (`!=')the pattern, and 1 otherwise. +The return value is 0 if the string matches (‘==’) or does not +match (‘!=’)the pattern, and 1 otherwise. Any part of the pattern may be quoted to force the quoted portion to be matched as a string. -

- -An additional binary operator, `=~', is available, with the same -precedence as `==' and `!='. +

+

An additional binary operator, ‘=~’, is available, with the same +precedence as ‘==’ and ‘!=’. When it is used, the string to the right of the operator is considered -an extended regular expression and matched accordingly (as in regex3)). +an extended regular expression and matched accordingly (as in regex3)). The return value is 0 if the string matches the pattern, and 1 otherwise. If the regular expression is syntactically incorrect, the conditional -expression's return value is 2. -If the nocasematch shell option -(see the description of shopt in 4.3.2 The Shopt Builtin) +expression’s return value is 2. +If the nocasematch shell option +(see the description of shopt in The Shopt Builtin) is enabled, the match is performed without regard to the case of alphabetic characters. Any part of the pattern may be quoted to force the quoted portion @@ -1396,753 +1456,682 @@ since normal quoting characters lose their meanings between brackets. If the pattern is stored in a shell variable, quoting the variable expansion forces the entire pattern to be matched as a string. Substrings matched by parenthesized subexpressions within the regular -expression are saved in the array variable BASH_REMATCH. -The element of BASH_REMATCH with index 0 is the portion of the string +expression are saved in the array variable BASH_REMATCH. +The element of BASH_REMATCH with index 0 is the portion of the string matching the entire regular expression. -The element of BASH_REMATCH with index n is the portion of the -string matching the nth parenthesized subexpression. -

- -For example, the following will match a line -(stored in the shell variable line) +The element of BASH_REMATCH with index n is the portion of the +string matching the nth parenthesized subexpression. +

+

For example, the following will match a line +(stored in the shell variable line) if there is a sequence of characters in the value consisting of any number, including zero, of -space characters, zero or one instances of `a', then a `b': -
 
[[ $line =~ [[:space:]]*(a)?b ]]
-

+space characters, zero or one instances of ‘a’, then a ‘b’: +

+
[[ $line =~ [[:space:]]*(a)?b ]]
+
-That means values like `aab' and ` aaaaaab' will match, as -will a line containing a `b' anywhere in its value. -

- -Storing the regular expression in a shell variable is often a useful +

That means values like ‘aab’ and ‘ aaaaaab’ will match, as +will a line containing a ‘b’ anywhere in its value. +

+

Storing the regular expression in a shell variable is often a useful way to avoid problems with quoting characters that are special to the shell. It is sometimes difficult to specify a regular expression literally without using quotes, or to keep track of the quoting used by regular -expressions while paying attention to the shell's quote removal. +expressions while paying attention to the shell’s quote removal. Using a shell variable to store the pattern decreases these problems. For example, the following is equivalent to the above: -
 
pattern='[[:space:]]*(a)?b'
+

+
pattern='[[:space:]]*(a)?b'
 [[ $line =~ $pattern ]]
-

+ -If you want to match a character that's special to the regular expression +

If you want to match a character that’s special to the regular expression grammar, it has to be quoted to remove its special meaning. -This means that in the pattern `xxx.txt', the `.' matches any +This means that in the pattern ‘xxx.txt’, the ‘.’ matches any character in the string (its usual regular expression meaning), but in the -pattern `"xxx.txt"' it can only match a literal `.'. +pattern ‘"xxx.txt"’ it can only match a literal ‘.’. Shell programmers should take special care with backslashes, since backslashes are used both by the shell and regular expressions to remove the special meaning from the following character. -The following two sets of commands are not equivalent: -
 
pattern='\.'
+The following two sets of commands are not equivalent:
+

+
pattern='\.'
 
 [[ . =~ $pattern ]]
 [[ . =~ \. ]]
 
-[[ . =~ "$pattern" ]]
+[[ . =~ "$pattern" ]]
 [[ . =~ '\.' ]]
-

+ -The first two matches will succeed, but the second two will not, because +

The first two matches will succeed, but the second two will not, because in the second two the backslash will be part of the pattern to be matched. In the first two examples, the backslash removes the special meaning from -`.', so the literal `.' matches. -If the string in the first examples were anything other than `.', say -`a', the pattern would not match, because the quoted `.' in the +‘.’, so the literal ‘.’ matches. +If the string in the first examples were anything other than ‘.’, say +‘a’, the pattern would not match, because the quoted ‘.’ in the pattern loses its special meaning of matching any single character. -

- -Expressions may be combined using the following operators, listed +

+

Expressions may be combined using the following operators, listed in decreasing order of precedence: -

- -

-
( expression ) -
Returns the value of expression. +

+
+
( expression )
+

Returns the value of expression. This may be used to override the normal precedence of operators. -

+

+
+
! expression
+

True if expression is false. +

+
+
expression1 && expression2
+

True if both expression1 and expression2 are true. +

+
+
expression1 || expression2
+

True if either expression1 or expression2 is true. +

+
-
! expression -
True if expression is false. -

- -

expression1 && expression2 -
True if both expression1 and expression2 are true. -

- -

expression1 || expression2 -
True if either expression1 or expression2 is true. -
-

- -The && and || operators do not evaluate expression2 if the -value of expression1 is sufficient to determine the return +

The && and || operators do not evaluate expression2 if the +value of expression1 is sufficient to determine the return value of the entire conditional expression. -

-

+

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.4.3 Grouping Commands

- -

+


+ + + +

3.2.4.3 Grouping Commands

+ -Bash provides two ways to group a list of commands to be executed +

Bash provides two ways to group a list of commands to be executed as a unit. When commands are grouped, redirections may be applied to the entire command list. For example, the output of all the commands in the list may be redirected to a single stream. -

+

+
+
()
+
+
( list )
+
-
-
() -
 
( list )
-

- -Placing a list of commands between parentheses causes a subshell -environment to be created (see section 3.7.3 Command Execution Environment), and each -of the commands in list to be executed in that subshell. Since the -list is executed in a subshell, variable assignments do not remain in +

Placing a list of commands between parentheses causes a subshell +environment to be created (see Command Execution Environment), and each +of the commands in list to be executed in that subshell. Since the +list is executed in a subshell, variable assignments do not remain in effect after the subshell completes. -

+

+
+
{}
+
+ +
+
{ list; }
+
-
{} -
- -
 
{ list; }
-

- -Placing a list of commands between curly braces causes the list to +

Placing a list of commands between curly braces causes the list to be executed in the current shell context. No subshell is created. -The semicolon (or newline) following list is required. -

-

+The semicolon (or newline) following list is required. +

+
-In addition to the creation of a subshell, there is a subtle difference +

In addition to the creation of a subshell, there is a subtle difference between these two constructs due to historical reasons. The braces -are reserved words, so they must be separated from the list -by blanks or other shell metacharacters. -The parentheses are operators, and are +are reserved words, so they must be separated from the list +by blanks or other shell metacharacters. +The parentheses are operators, and are recognized as separate tokens by the shell even if they are not separated -from the list by whitespace. -

+from the list by whitespace. +

+

The exit status of both of these constructs is the exit status of +list. +

+
+ +
+

+Next: , Previous: , Up: Shell Commands   [Contents][Index]

+
+ +

3.2.5 Coprocesses

+ -The exit status of both of these constructs is the exit status of -list. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.5 Coprocesses

- -

- -A coprocess is a shell command preceded by the coproc +

A coprocess is a shell command preceded by the coproc reserved word. A coprocess is executed asynchronously in a subshell, as if the command -had been terminated with the `&' control operator, with a two-way pipe +had been terminated with the ‘&’ control operator, with a two-way pipe established between the executing shell and the coprocess. -

+

+

The format for a coprocess is: +

+
coproc [NAME] command [redirections]
+
-The format for a coprocess is: -
 
coproc [NAME] command [redirections]
-

- -This creates a coprocess named NAME. -If NAME is not supplied, the default name is COPROC. -NAME must not be supplied if command is a simple -command (see section 3.2.1 Simple Commands); otherwise, it is interpreted as +

This creates a coprocess named NAME. +If NAME is not supplied, the default name is COPROC. +NAME must not be supplied if command is a simple +command (see Simple Commands); otherwise, it is interpreted as the first word of the simple command. -

- -When the coprocess is executed, the shell creates an array variable -(see section 6.7 Arrays) -named NAME in the context of the executing shell. -The standard output of command +

+

When the coprocess is executed, the shell creates an array variable +(see Arrays) +named NAME in the context of the executing shell. +The standard output of command is connected via a pipe to a file descriptor in the executing shell, -and that file descriptor is assigned to NAME[0]. -The standard input of command +and that file descriptor is assigned to NAME[0]. +The standard input of command is connected via a pipe to a file descriptor in the executing shell, -and that file descriptor is assigned to NAME[1]. +and that file descriptor is assigned to NAME[1]. This pipe is established before any redirections specified by the -command (see section 3.6 Redirections). +command (see Redirections). The file descriptors can be utilized as arguments to shell commands and redirections using standard word expansions. The file descriptors are not available in subshells. -

- -The process ID of the shell spawned to execute the coprocess is -available as the value of the variable NAME_PID. -The wait +

+

The process ID of the shell spawned to execute the coprocess is +available as the value of the variable NAME_PID. +The wait builtin command may be used to wait for the coprocess to terminate. -

+

+

Since the coprocess is created as an asynchronous command, +the coproc command always returns success. +The return status of a coprocess is the exit status of command. +

+
+ +
+

+Previous: , Up: Shell Commands   [Contents][Index]

+
+ +

3.2.6 GNU Parallel

-Since the coprocess is created as an asynchronous command, -the coproc command always returns success. -The return status of a coprocess is the exit status of command. -

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.2.6 GNU Parallel

- -

- -There are ways to run commands in parallel that are not built into Bash. +

There are ways to run commands in parallel that are not built into Bash. GNU Parallel is a tool to do just that. -

- -GNU Parallel, as its name suggests, can be used to build and run commands +

+

GNU Parallel, as its name suggests, can be used to build and run commands in parallel. You may run the same command with different arguments, whether they are filenames, usernames, hostnames, or lines read from files. GNU Parallel provides shorthand references to many of the most common operations (input lines, various portions of the input line, different ways to specify -the input source, and so on). Parallel can replace xargs or feed +the input source, and so on). Parallel can replace xargs or feed commands from its input sources to several different instances of Bash. -

- -For a complete description, refer to the GNU Parallel documentation. A few +

+

For a complete description, refer to the GNU Parallel documentation. A few examples should provide a brief introduction to its use. -

- -For example, it is easy to replace xargs to gzip all html files in the +

+

For example, it is easy to replace xargs to gzip all html files in the current directory and its subdirectories: -
 
find . -type f -name '*.html' -print | parallel gzip
-
If you need to protect special characters such as newlines in file names, -use find's `-print0' option and parallel's `-0' option. -

+

+
find . -type f -name '*.html' -print | parallel gzip
+
+

If you need to protect special characters such as newlines in file names, +use find’s -print0 option and parallel’s -0 option. +

+

You can use Parallel to move files from the current directory when the +number of files is too large to process with one mv invocation: +

+
ls | parallel mv {} destdir
+
-You can use Parallel to move files from the current directory when the -number of files is too large to process with one mv invocation: -
 
ls | parallel mv {} destdir
-

- -As you can see, the {} is replaced with each line read from standard input. -While using ls will work in most instances, it is not sufficient to +

As you can see, the {} is replaced with each line read from standard input. +While using ls will work in most instances, it is not sufficient to deal with all filenames. If you need to accommodate special characters in filenames, you can use -

+

+
+
find . -depth 1 \! -name '.*' -print0 | parallel -0 mv {} destdir
+
-
 
find . -depth 1 \! -name '.*' -print0 | parallel -0 mv {} destdir
-

- -as alluded to above. -

- -This will run as many mv commands as there are files in the current +

as alluded to above. +

+

This will run as many mv commands as there are files in the current directory. -You can emulate a parallel xargs by adding the `-X' option: -
 
find . -depth 1 \! -name '.*' -print0 | parallel -0 -X mv {} destdir
-

+You can emulate a parallel xargs by adding the -X option: +

+
find . -depth 1 \! -name '.*' -print0 | parallel -0 -X mv {} destdir
+
-GNU Parallel can replace certain common idioms that operate on lines read +

GNU Parallel can replace certain common idioms that operate on lines read from a file (in this case, filenames listed one per line): -
 
	while IFS= read -r x; do
-		do-something1 "$x" "config-$x"
-		do-something2 < "$x"
-	done < file | process-output
-

+

+
	while IFS= read -r x; do
+		do-something1 "$x" "config-$x"
+		do-something2 < "$x"
+	done < file | process-output
+
-with a more compact syntax reminiscent of lambdas: -
 
cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | process-output
-

+

with a more compact syntax reminiscent of lambdas: +

+
cat list | parallel "do-something1 {} config-{} ; do-something2 < {}" | process-output
+
-Parallel provides a built-in mechanism to remove filename extensions, which +

Parallel provides a built-in mechanism to remove filename extensions, which lends itself to batch file transformations or renaming: -
 
ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}"
-
This will recompress all files in the current directory with names ending +

+
ls *.gz | parallel -j+0 "zcat {} | bzip2 >{.}.bz2 && rm {}"
+
+

This will recompress all files in the current directory with names ending in .gz using bzip2, running one job per CPU (-j+0) in parallel. -(We use ls for brevity here; using find as above is more +(We use ls for brevity here; using find as above is more robust in the face of filenames containing unexpected characters.) Parallel can take arguments from the command line; the above can also be written as -

+

+
+
parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz
+
-
 
parallel "zcat {} | bzip2 >{.}.bz2 && rm {}" ::: *.gz
-

- -If a command generates output, you may want to preserve the input order in +

If a command generates output, you may want to preserve the input order in the output. For instance, the following command -
 
{ echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel traceroute
-
will display as output the traceroute invocation that finishes first. -Adding the `-k' option -
 
{ echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel -k traceroute
-
will ensure that the output of traceroute foss.org.my is displayed first. -

- -Finally, Parallel can be used to run a sequence of shell commands in parallel, -similar to `cat file | bash'. +

+
{ echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel traceroute
+
+

will display as output the traceroute invocation that finishes first. +Adding the -k option +

+
{ echo foss.org.my ; echo debian.org; echo freenetproject.org; } | parallel -k traceroute
+
+

will ensure that the output of traceroute foss.org.my is displayed first. +

+

Finally, Parallel can be used to run a sequence of shell commands in parallel, +similar to ‘cat file | bash’. It is not uncommon to take a list of filenames, create a series of shell commands to operate on them, and feed that list of commnds to a shell. -Parallel can speed this up. Assuming that `file' contains a list of +Parallel can speed this up. Assuming that file contains a list of shell commands, one per line, -

+

+
+
parallel -j 10 < file
+
-
 
parallel -j 10 < file
-

- -will evaluate the commands using the shell (since no explicit command is +

will evaluate the commands using the shell (since no explicit command is supplied as an argument), in blocks of ten shell jobs at a time. -

+

+
+ + + +

3.3 Shell Functions

+ + - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.3 Shell Functions

- -

- -Shell functions are a way to group commands for later execution +

Shell functions are a way to group commands for later execution using a single name for the group. They are executed just like -a "regular" command. +a "regular" command. When the name of a shell function is used as a simple command name, the list of commands associated with that function name is executed. Shell functions are executed in the current shell context; no new process is created to interpret them. -

+

+

Functions are declared using this syntax: + +

+
name () compound-command [ redirections ]
+
-Functions are declared using this syntax: - -
 
name () compound-command [ redirections ]
-

+

or +

+
+
function name [()] compound-command [ redirections ]
+
-or -

- -
 
function name [()] compound-command [ redirections ]
-

- -This defines a shell function named name. The reserved -word function is optional. -If the function reserved +

This defines a shell function named name. The reserved +word function is optional. +If the function reserved word is supplied, the parentheses are optional. -The body of the function is the compound command -compound-command (see section 3.2.4 Compound Commands). -That command is usually a list enclosed between { and }, but +The body of the function is the compound command +compound-command (see Compound Commands). +That command is usually a list enclosed between { and }, but may be any compound command listed above, -with one exception: If the function reserved word is used, but the +with one exception: If the function reserved word is used, but the parentheses are not supplied, the braces are required. -compound-command is executed whenever name is specified as the +compound-command is executed whenever name is specified as the name of a command. -When the shell is in POSIX mode (see section 6.11 Bash POSIX Mode), -name may not be the same as one of the special builtins -(see section 4.4 Special Builtins). -Any redirections (see section 3.6 Redirections) associated with the shell function +When the shell is in POSIX mode (see Bash POSIX Mode), +name may not be the same as one of the special builtins +(see Special Builtins). +Any redirections (see Redirections) associated with the shell function are performed when the function is executed. -

- -A function definition may be deleted using the `-f' option to the -unset builtin (see section 4.1 Bourne Shell Builtins). -

- -The exit status of a function definition is zero unless a syntax error +

+

A function definition may be deleted using the -f option to the +unset builtin (see Bourne Shell Builtins). +

+

The exit status of a function definition is zero unless a syntax error occurs or a readonly function with the same name already exists. When executed, the exit status of a function is the exit status of the last command executed in the body. -

- -Note that for historical reasons, in the most common usage the curly braces +

+

Note that for historical reasons, in the most common usage the curly braces that surround the body of the function must be separated from the body by -blanks or newlines. +blanks or newlines. This is because the braces are reserved words and are only recognized as such when they are separated from the command list by whitespace or another shell metacharacter. -Also, when using the braces, the list must be terminated by a semicolon, -a `&', or a newline. -

- -When a function is executed, the arguments to the +Also, when using the braces, the list must be terminated by a semicolon, +a ‘&’, or a newline. +

+

When a function is executed, the arguments to the function become the positional parameters -during its execution (see section 3.4.1 Positional Parameters). -The special parameter `#' that expands to the number of +during its execution (see Positional Parameters). +The special parameter ‘#’ that expands to the number of positional parameters is updated to reflect the change. -Special parameter 0 is unchanged. -The first element of the FUNCNAME variable is set to the +Special parameter 0 is unchanged. +The first element of the FUNCNAME variable is set to the name of the function while the function is executing. -

- -All other aspects of the shell execution +

+

All other aspects of the shell execution environment are identical between a function and its caller with these exceptions: -the DEBUG and RETURN traps +the DEBUG and RETURN traps are not inherited unless the function has been given the -trace attribute using the declare builtin or -the -o functrace option has been enabled with -the set builtin, -(in which case all functions inherit the DEBUG and RETURN traps), -and the ERR trap is not inherited unless the -o errtrace +trace attribute using the declare builtin or +the -o functrace option has been enabled with +the set builtin, +(in which case all functions inherit the DEBUG and RETURN traps), +and the ERR trap is not inherited unless the -o errtrace shell option has been enabled. -See section 4.1 Bourne Shell Builtins, for the description of the -trap builtin. -

- -The FUNCNEST variable, if set to a numeric value greater +See Bourne Shell Builtins, for the description of the +trap builtin. +

+

The FUNCNEST variable, if set to a numeric value greater than 0, defines a maximum function nesting level. Function invocations that exceed the limit cause the entire command to abort. -

- -If the builtin command return +

+

If the builtin command return is executed in a function, the function completes and execution resumes with the next command after the function call. -Any command associated with the RETURN trap is executed +Any command associated with the RETURN trap is executed before execution resumes. When a function completes, the values of the -positional parameters and the special parameter `#' -are restored to the values they had prior to the function's -execution. If a numeric argument is given to return, -that is the function's return status; otherwise the function's +positional parameters and the special parameter ‘#’ +are restored to the values they had prior to the function’s +execution. If a numeric argument is given to return, +that is the function’s return status; otherwise the function’s return status is the exit status of the last command executed -before the return. -

- -Variables local to the function may be declared with the -local builtin. These variables are visible only to +before the return. +

+

Variables local to the function may be declared with the +local builtin. These variables are visible only to the function and the commands it invokes. -

- -Function names and definitions may be listed with the -`-f' option to the declare (typeset) -builtin command (see section 4.2 Bash Builtin Commands). -The `-F' option to declare or typeset +

+

Function names and definitions may be listed with the +-f option to the declare (typeset) +builtin command (see Bash Builtins). +The -F option to declare or typeset will list the function names only -(and optionally the source file and line number, if the extdebug +(and optionally the source file and line number, if the extdebug shell option is enabled). Functions may be exported so that subshells automatically have them defined with the -`-f' option to the export builtin -(see section 4.1 Bourne Shell Builtins). +-f option to the export builtin +(see Bourne Shell Builtins). Note that shell functions and variables with the same name may result in multiple identically-named entries in the environment passed to the -shell's children. +shell’s children. Care should be taken in cases where this may cause a problem. -

- -Functions may be recursive. -The FUNCNEST variable may be used to limit the depth of the +

+

Functions may be recursive. +The FUNCNEST variable may be used to limit the depth of the function call stack and restrict the number of function invocations. By default, no limit is placed on the number of recursive calls. -

+

+
+ + + +

3.4 Shell Parameters

+ + + - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.4 Shell Parameters

- -

+ + + + -

- - -
3.4.1 Positional Parameters  The shell's command-line arguments.
3.4.2 Special Parameters  Parameters denoted by special characters.
-

- -A parameter is an entity that stores values. -It can be a name, a number, or one of the special characters +

A parameter is an entity that stores values. +It can be a name, a number, or one of the special characters listed below. -A variable is a parameter denoted by a name. -A variable has a value and zero or more attributes. -Attributes are assigned using the declare builtin command -(see the description of the declare builtin in 4.2 Bash Builtin Commands). -

- -A parameter is set if it has been assigned a value. The null string is +A variable is a parameter denoted by a name. +A variable has a value and zero or more attributes. +Attributes are assigned using the declare builtin command +(see the description of the declare builtin in Bash Builtins). +

+

A parameter is set if it has been assigned a value. The null string is a valid value. Once a variable is set, it may be unset only by using -the unset builtin command. -

- -A variable may be assigned to by a statement of the form -
 
name=[value]
-
If value +the unset builtin command. +

+

A variable may be assigned to by a statement of the form +

+
name=[value]
+
+

If value is not given, the variable is assigned the null string. All -values undergo tilde expansion, parameter and variable expansion, +values undergo tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote -removal (detailed below). If the variable has its integer -attribute set, then value -is evaluated as an arithmetic expression even if the $((...)) -expansion is not used (see section 3.5.5 Arithmetic Expansion). +removal (detailed below). If the variable has its integer +attribute set, then value +is evaluated as an arithmetic expression even if the $((…)) +expansion is not used (see Arithmetic Expansion). Word splitting is not performed, with the exception -of "$@" as explained below. +of "$@" as explained below. Filename expansion is not performed. Assignment statements may also appear as arguments to the -alias, -declare, typeset, export, readonly, -and local builtin commands (declaration commands). -When in POSIX mode (see section 6.11 Bash POSIX Mode), these builtins may appear -in a command after one or more instances of the command builtin +alias, +declare, typeset, export, readonly, +and local builtin commands (declaration commands). +When in POSIX mode (see Bash POSIX Mode), these builtins may appear +in a command after one or more instances of the command builtin and retain these assignment statement properties. -

- -In the context where an assignment statement is assigning a value -to a shell variable or array index (see section 6.7 Arrays), the `+=' +

+

In the context where an assignment statement is assigning a value +to a shell variable or array index (see Arrays), the ‘+=’ operator can be used to -append to or add to the variable's previous value. -This includes arguments to builtin commands such as declare that -accept assignment statements (declaration commands). -When `+=' is applied to a variable for which the integer attribute -has been set, value is evaluated as an arithmetic expression and -added to the variable's current value, which is also evaluated. -When `+=' is applied to an array variable using compound assignment -(see section 6.7 Arrays), the -variable's value is not unset (as it is when using `='), and new -values are appended to the array beginning at one greater than the array's +append to or add to the variable’s previous value. +This includes arguments to builtin commands such as declare that +accept assignment statements (declaration commands). +When ‘+=’ is applied to a variable for which the integer attribute +has been set, value is evaluated as an arithmetic expression and +added to the variable’s current value, which is also evaluated. +When ‘+=’ is applied to an array variable using compound assignment +(see Arrays), the +variable’s value is not unset (as it is when using ‘=’), and new +values are appended to the array beginning at one greater than the array’s maximum index (for indexed arrays), or added as additional key-value pairs in an associative array. -When applied to a string-valued variable, value is expanded and -appended to the variable's value. -

- -A variable can be assigned the nameref attribute using the -`-n' option to the \fBdeclare\fP or \fBlocal\fP builtin commands -(see section 4.2 Bash Builtin Commands) -to create a nameref, or a reference to another variable. +When applied to a string-valued variable, value is expanded and +appended to the variable’s value. +

+

A variable can be assigned the nameref attribute using the +-n option to the \fBdeclare\fP or \fBlocal\fP builtin commands +(see Bash Builtins) +to create a nameref, or a reference to another variable. This allows variables to be manipulated indirectly. Whenever the nameref variable is referenced, assigned to, unset, or has its attributes modified (other than the nameref attribute itself), the operation is actually performed on the variable specified by the nameref -variable's value. +variable’s value. A nameref is commonly used within shell functions to refer to a variable whose name is passed as an argument to the function. For instance, if a variable name is passed to a shell function as its first argument, running -
 
declare -n ref=$1
-
inside the function creates a nameref variable ref whose value is +

+
declare -n ref=$1
+
+

inside the function creates a nameref variable ref whose value is the variable name passed as the first argument. -References and assignments to ref, and changes to its attributes, +References and assignments to ref, and changes to its attributes, are treated as references, assignments, and attribute modifications -to the variable whose name was passed as $1. -

- -If the control variable in a for loop has the nameref attribute, +to the variable whose name was passed as $1. +

+

If the control variable in a for loop has the nameref attribute, the list of words can be a list of shell variables, and a name reference will be established for each word in the list, in turn, when the loop is executed. Array variables cannot be given the nameref attribute. However, nameref variables can reference array variables and subscripted array variables. -Namerefs can be unset using the `-n' option to the unset builtin -(see section 4.1 Bourne Shell Builtins). -Otherwise, if unset is executed with the name of a nameref variable +Namerefs can be unset using the -n option to the unset builtin +(see Bourne Shell Builtins). +Otherwise, if unset is executed with the name of a nameref variable as an argument, the variable referenced by the nameref variable will be unset. -

+

+
+ + + +

3.4.1 Positional Parameters

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.4.1 Positional Parameters

- -

- -A positional parameter is a parameter denoted by one or more -digits, other than the single digit 0. Positional parameters are -assigned from the shell's arguments when it is invoked, -and may be reassigned using the set builtin command. -Positional parameter N may be referenced as ${N}, or -as $N when N consists of a single digit. +

A positional parameter is a parameter denoted by one or more +digits, other than the single digit 0. Positional parameters are +assigned from the shell’s arguments when it is invoked, +and may be reassigned using the set builtin command. +Positional parameter N may be referenced as ${N}, or +as $N when N consists of a single digit. Positional parameters may not be assigned to with assignment statements. -The set and shift builtins are used to set and -unset them (see section 4. Shell Builtin Commands). +The set and shift builtins are used to set and +unset them (see Shell Builtin Commands). The positional parameters are temporarily replaced when a shell function is executed -(see section 3.3 Shell Functions). -

- -When a positional parameter consisting of more than a single +(see Shell Functions). +

+

When a positional parameter consisting of more than a single digit is expanded, it must be enclosed in braces. -

+

+
+ + + +

3.4.2 Special Parameters

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.4.2 Special Parameters

- -

- -The shell treats several parameters specially. These parameters may +

The shell treats several parameters specially. These parameters may only be referenced; assignment to them is not allowed. -

- -

- - -
* -
- -($*) Expands to the positional parameters, starting from one. +

+
+
* + +
+
+

($*) Expands to the positional parameters, starting from one. When the expansion is not within double quotes, each positional parameter expands to a separate word. In contexts where it is performed, those words are subject to further word splitting and pathname expansion. When the expansion occurs within double quotes, it expands to a single word with the value of each parameter separated by the first character of the -IFS special variable. That is, "$*" is equivalent -to "$1c$2c...", where c -is the first character of the value of the IFS +IFS special variable. That is, "$*" is equivalent +to "$1c$2c…", where c +is the first character of the value of the IFS variable. -If IFS is unset, the parameters are separated by spaces. -If IFS is null, the parameters are joined without intervening +If IFS is unset, the parameters are separated by spaces. +If IFS is null, the parameters are joined without intervening separators. -

- - -

@ -
- -($@) Expands to the positional parameters, starting from one. When the +

+
+
@ + +
+
+

($@) Expands to the positional parameters, starting from one. When the expansion occurs within double quotes, each parameter expands to a -separate word. That is, "$@" is equivalent to -"$1" "$2" .... +separate word. That is, "$@" is equivalent to +"$1" "$2" …. If the double-quoted expansion occurs within a word, the expansion of the first parameter is joined with the beginning part of the original word, and the expansion of the last parameter is joined with the last part of the original word. -When there are no positional parameters, "$@" and -$@ +When there are no positional parameters, "$@" and +$@ expand to nothing (i.e., they are removed). -

- - -

# -
- -($#) Expands to the number of positional parameters in decimal. -

- - -

? -
- -($?) Expands to the exit status of the most recently executed foreground +

+
+
# + +
+
+

($#) Expands to the number of positional parameters in decimal. +

+
+
? + +
+
+

($?) Expands to the exit status of the most recently executed foreground pipeline. -

- - -

- -
- -($-, a hyphen.) Expands to the current option flags as specified upon -invocation, by the set +

+
+
- + +
+
+

($-, a hyphen.) Expands to the current option flags as specified upon +invocation, by the set builtin command, or those set by the shell itself -(such as the `-i' option). -

- - -

$ -
- -($$) Expands to the process ID of the shell. In a () subshell, it -expands to the process ID of the invoking shell, not the subshell. -

- - -

! -
- -($!) Expands to the process ID of the job most recently placed into the +(such as the -i option). +

+
+
$ + +
+
+

($$) Expands to the process ID of the shell. In a () subshell, it +expands to the process ID of the invoking shell, not the subshell. +

+
+
! + +
+
+

($!) Expands to the process ID of the job most recently placed into the background, whether executed as an asynchronous command or using -the bg builtin (see section 7.2 Job Control Builtins). -

- - -

0 -
- -($0) Expands to the name of the shell or shell script. This is set at +the bg builtin (see Job Control Builtins). +

+
+
0 + +
+
+

($0) Expands to the name of the shell or shell script. This is set at shell initialization. If Bash is invoked with a file of commands -(see section 3.8 Shell Scripts), $0 is set to the name of that file. -If Bash is started with the `-c' option (see section 6.1 Invoking Bash), -then $0 is set to the first argument after the string to be +(see Shell Scripts), $0 is set to the name of that file. +If Bash is started with the -c option (see Invoking Bash), +then $0 is set to the first argument after the string to be executed, if one is present. Otherwise, it is set to the filename used to invoke Bash, as given by argument zero. -

- - -

_ -
- -($_, an underscore.) +

+
+
_ + +
+
+

($_, an underscore.) At shell startup, set to the absolute pathname used to invoke the shell or shell script being executed as passed in the environment or argument list. @@ -2151,408 +2140,363 @@ after expansion. Also set to the full pathname used to invoke each command executed and placed in the environment exported to that command. When checking mail, this parameter holds the name of the mail file. -

-

+

+
- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5 Shell Expansions

- -

+


+ + + +

3.5 Shell Expansions

+ -Expansion is performed on the command line after it has been split into -tokens. There are seven kinds of expansion performed: -

+

Expansion is performed on the command line after it has been split into +tokens. There are seven kinds of expansion performed: +

+
    +
  • brace expansion +
  • tilde expansion +
  • parameter and variable expansion +
  • command substitution +
  • arithmetic expansion +
  • word splitting +
  • filename expansion +
-
    -
  • brace expansion -
  • tilde expansion -
  • parameter and variable expansion -
  • command substitution -
  • arithmetic expansion -
  • word splitting -
  • filename expansion -
-

+ + + + + + + + + + + -

- - - - - - - - - -
3.5.1 Brace Expansion  Expansion of expressions within braces.
3.5.2 Tilde Expansion  Expansion of the ~ character.
3.5.3 Shell Parameter Expansion  How Bash expands variables to their values.
3.5.4 Command Substitution  Using the output of a command as an argument.
3.5.5 Arithmetic Expansion  How to use arithmetic in shell expansions.
3.5.6 Process Substitution  A way to write and read to and from a - command.
3.5.7 Word Splitting  How the results of expansion are split into separate - arguments.
3.5.8 Filename Expansion  A shorthand for specifying filenames matching patterns.
3.5.9 Quote Removal  How and when quote characters are removed from - words.
-

- -The order of expansions is: +

The order of expansions is: brace expansion; tilde expansion, parameter and variable expansion, arithmetic expansion, and command substitution (done in a left-to-right fashion); word splitting; and filename expansion. -

- -On systems that can support it, there is an additional expansion -available: process substitution. +

+

On systems that can support it, there is an additional expansion +available: process substitution. This is performed at the same time as tilde, parameter, variable, and arithmetic expansion and command substitution. -

- -Only brace expansion, word splitting, and filename expansion +

+

Only brace expansion, word splitting, and filename expansion can change the number of words of the expansion; other expansions expand a single word to a single word. The only exceptions to this are the expansions of -"$@" (see section 3.4.2 Special Parameters) and "${name[@]}" -(see section 6.7 Arrays). -

- -After all expansions, quote removal (see section 3.5.9 Quote Removal) +"$@" (see Special Parameters) and "${name[@]}" +(see Arrays). +

+

After all expansions, quote removal (see Quote Removal) is performed. -

+

+
+ + + +

3.5.1 Brace Expansion

+ + - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.1 Brace Expansion

- -

- -Brace expansion is a mechanism by which arbitrary strings may be generated. +

Brace expansion is a mechanism by which arbitrary strings may be generated. This mechanism is similar to -filename expansion (see section 3.5.8 Filename Expansion), +filename expansion (see Filename Expansion), but the filenames generated need not exist. -Patterns to be brace expanded take the form of an optional preamble, +Patterns to be brace expanded take the form of an optional preamble, followed by either a series of comma-separated strings or a sequence expression between a pair of braces, -followed by an optional postscript. +followed by an optional postscript. The preamble is prefixed to each string contained within the braces, and the postscript is then appended to each resulting string, expanding left to right. -

- -Brace expansions may be nested. +

+

Brace expansions may be nested. The results of each expanded string are not sorted; left to right order is preserved. For example, -
 
bash$ echo a{d,c,b}e
+

+
bash$ echo a{d,c,b}e
 ade ace abe
-

+ -A sequence expression takes the form {x..y[..incr]}, -where x and y are either integers or single characters, -and incr, an optional increment, is an integer. +

A sequence expression takes the form {x..y[..incr]}, +where x and y are either integers or single characters, +and incr, an optional increment, is an integer. When integers are supplied, the expression expands to each number between -x and y, inclusive. -Supplied integers may be prefixed with `0' to force each term to have the +x and y, inclusive. +Supplied integers may be prefixed with ‘0’ to force each term to have the same width. -When either x or y begins with a zero, the shell +When either x or y begins with a zero, the shell attempts to force all generated terms to contain the same number of digits, zero-padding where necessary. When characters are supplied, the expression expands to each character -lexicographically between x and y, inclusive, +lexicographically between x and y, inclusive, using the default C locale. -Note that both x and y must be of the same type. +Note that both x and y must be of the same type. When the increment is supplied, it is used as the difference between each term. The default increment is 1 or -1 as appropriate. -

- -Brace expansion is performed before any other expansions, +

+

Brace expansion is performed before any other expansions, and any characters special to other expansions are preserved in the result. It is strictly textual. Bash does not apply any syntactic interpretation to the context of the expansion or the text between the braces. -To avoid conflicts with parameter expansion, the string `${' +To avoid conflicts with parameter expansion, the string ‘${’ is not considered eligible for brace expansion. -

- -A correctly-formed brace expansion must contain unquoted opening +

+

A correctly-formed brace expansion must contain unquoted opening and closing braces, and at least one unquoted comma or a valid sequence expression. Any incorrectly formed brace expansion is left unchanged. -

- -A { or `,' may be quoted with a backslash to prevent its +

+

A { or ‘,’ may be quoted with a backslash to prevent its being considered part of a brace expression. -To avoid conflicts with parameter expansion, the string `${' +To avoid conflicts with parameter expansion, the string ‘${’ is not considered eligible for brace expansion. -

- -This construct is typically used as shorthand when the common +

+

This construct is typically used as shorthand when the common prefix of the strings to be generated is longer than in the above example: -
 
mkdir /usr/local/src/bash/{old,new,dist,bugs}
-
or -
 
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
-

+

+
mkdir /usr/local/src/bash/{old,new,dist,bugs}
+
+

or +

+
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
+
- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.2 Tilde Expansion

- -

+


+ + + +

3.5.2 Tilde Expansion

+ + -If a word begins with an unquoted tilde character (`~'), all of the +

If a word begins with an unquoted tilde character (‘~’), all of the characters up to the first unquoted slash (or all characters, -if there is no unquoted slash) are considered a tilde-prefix. +if there is no unquoted slash) are considered a tilde-prefix. If none of the characters in the tilde-prefix are quoted, the characters in the tilde-prefix following the tilde are treated as a -possible login name. +possible login name. If this login name is the null string, the tilde is replaced with the -value of the HOME shell variable. -If HOME is unset, the home directory of the user executing the +value of the HOME shell variable. +If HOME is unset, the home directory of the user executing the shell is substituted instead. Otherwise, the tilde-prefix is replaced with the home directory associated with the specified login name. -

- -If the tilde-prefix is `~+', the value of -the shell variable PWD replaces the tilde-prefix. -If the tilde-prefix is `~-', the value of the shell variable -OLDPWD, if it is set, is substituted. -

- -If the characters following the tilde in the tilde-prefix consist of a -number N, optionally prefixed by a `+' or a `-', +

+

If the tilde-prefix is ‘~+’, the value of +the shell variable PWD replaces the tilde-prefix. +If the tilde-prefix is ‘~-’, the value of the shell variable +OLDPWD, if it is set, is substituted. +

+

If the characters following the tilde in the tilde-prefix consist of a +number N, optionally prefixed by a ‘+’ or a ‘-’, the tilde-prefix is replaced with the corresponding element from the directory stack, as it would be displayed -by the dirs builtin invoked with the characters following tilde -in the tilde-prefix as an argument (see section 6.8 The Directory Stack). +by the dirs builtin invoked with the characters following tilde +in the tilde-prefix as an argument (see The Directory Stack). If the tilde-prefix, sans the tilde, consists of a number without a -leading `+' or `-', `+' is assumed. -

- -If the login name is invalid, or the tilde expansion fails, the word is +leading ‘+’ or ‘-’, ‘+’ is assumed. +

+

If the login name is invalid, or the tilde expansion fails, the word is left unchanged. -

- -Each variable assignment is checked for unquoted tilde-prefixes immediately -following a `:' or the first `='. +

+

Each variable assignment is checked for unquoted tilde-prefixes immediately +following a ‘:’ or the first ‘=’. In these cases, tilde expansion is also performed. Consequently, one may use filenames with tildes in assignments to -PATH, MAILPATH, and CDPATH, +PATH, MAILPATH, and CDPATH, and the shell assigns the expanded value. -

+

+

The following table shows how Bash treats unquoted tilde-prefixes: +

+
+
~
+

The value of $HOME +

+
~/foo
+

$HOME/foo +

+
+
~fred/foo
+

The subdirectory foo of the home directory of the user +fred +

+
+
~+/foo
+

$PWD/foo +

+
+
~-/foo
+

${OLDPWD-'~-'}/foo +

+
+
~N
+

The string that would be displayed by ‘dirs +N’ +

+
+
~+N
+

The string that would be displayed by ‘dirs +N’ +

+
+
~-N
+

The string that would be displayed by ‘dirs -N’ +

+
-The following table shows how Bash treats unquoted tilde-prefixes: -

+


+ + + +

3.5.3 Shell Parameter Expansion

+ + -
-
~ -
The value of $HOME -
~/foo -
`$HOME/foo' -

- -

~fred/foo -
The subdirectory foo of the home directory of the user -fred -

- -

~+/foo -
`$PWD/foo' -

- -

~-/foo -
`${OLDPWD-'~-'}/foo' -

- -

~N -
The string that would be displayed by `dirs +N' -

- -

~+N -
The string that would be displayed by `dirs +N' -

- -

~-N -
The string that would be displayed by `dirs -N' -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.3 Shell Parameter Expansion

- -

- -The `$' character introduces parameter expansion, +

The ‘$’ character introduces parameter expansion, command substitution, or arithmetic expansion. The parameter name or symbol to be expanded may be enclosed in braces, which are optional but serve to protect the variable to be expanded from characters immediately following it which could be interpreted as part of the name. -

- -When braces are used, the matching ending brace is the first `}' +

+

When braces are used, the matching ending brace is the first ‘}’ not escaped by a backslash or within a quoted string, and not within an embedded arithmetic expansion, command substitution, or parameter expansion. -

- -The basic form of parameter expansion is ${parameter}. -The value of parameter is substituted. -The parameter is a shell parameter as described above -(see section 3.4 Shell Parameters) or an array reference (see section 6.7 Arrays). -The braces are required when parameter +

+

The basic form of parameter expansion is ${parameter}. +The value of parameter is substituted. +The parameter is a shell parameter as described above +(see Shell Parameters) or an array reference (see Arrays). +The braces are required when parameter is a positional parameter with more than one digit, -or when parameter is followed by a character that is not to be +or when parameter is followed by a character that is not to be interpreted as part of its name. -

- -If the first character of parameter is an exclamation point (!), -and parameter is not a nameref, +

+

If the first character of parameter is an exclamation point (!), +and parameter is not a nameref, it introduces a level of variable indirection. Bash uses the value of the variable formed from the rest of -parameter as the name of the variable; this variable is then +parameter as the name of the variable; this variable is then expanded and that value is used in the rest of the substitution, rather -than the value of parameter itself. -This is known as indirect expansion. -If parameter is a nameref, this expands to the name of the -variable referenced by parameter instead of performing the +than the value of parameter itself. +This is known as indirect expansion. +If parameter is a nameref, this expands to the name of the +variable referenced by parameter instead of performing the complete indirect expansion. -The exceptions to this are the expansions of ${!prefix*} -and ${!name[@]} +The exceptions to this are the expansions of ${!prefix*} +and ${!name[@]} described below. The exclamation point must immediately follow the left brace in order to introduce indirection. -

- -In each of the cases below, word is subject to tilde expansion, +

+

In each of the cases below, word is subject to tilde expansion, parameter expansion, command substitution, and arithmetic expansion. -

- -When not performing substring expansion, using the form described -below (e.g., `:-'), Bash tests for a parameter that is unset or null. +

+

When not performing substring expansion, using the form described +below (e.g., ‘:-’), Bash tests for a parameter that is unset or null. Omitting the colon results in a test only for a parameter that is unset. Put another way, if the colon is included, -the operator tests for both parameter's existence and that its value +the operator tests for both parameter’s existence and that its value is not null; if the colon is omitted, the operator tests only for existence. -

- -

- -
${parameter:-word} -
If parameter is unset or null, the expansion of -word is substituted. Otherwise, the value of -parameter is substituted. -

- -

${parameter:=word} -
If parameter -is unset or null, the expansion of word -is assigned to parameter. -The value of parameter is then substituted. +

+
+
${parameter:-word}
+

If parameter is unset or null, the expansion of +word is substituted. Otherwise, the value of +parameter is substituted. +

+
+
${parameter:=word}
+

If parameter +is unset or null, the expansion of word +is assigned to parameter. +The value of parameter is then substituted. Positional parameters and special parameters may not be assigned to in this way. -

- -

${parameter:?word} -
If parameter -is null or unset, the expansion of word (or a message -to that effect if word +

+
+
${parameter:?word}
+

If parameter +is null or unset, the expansion of word (or a message +to that effect if word is not present) is written to the standard error and the shell, if it -is not interactive, exits. Otherwise, the value of parameter is +is not interactive, exits. Otherwise, the value of parameter is substituted. -

- -

${parameter:+word} -
If parameter +

+
+
${parameter:+word}
+

If parameter is null or unset, nothing is substituted, otherwise the expansion of -word is substituted. -

- -

${parameter:offset} -
${parameter:offset:length} -
This is referred to as Substring Expansion. -It expands to up to length characters of the value of parameter -starting at the character specified by offset. -If parameter is `@', an indexed array subscripted by -`@' or `*', or an associative array name, the results differ as +word is substituted. +

+
+
${parameter:offset}
+
${parameter:offset:length}
+

This is referred to as Substring Expansion. +It expands to up to length characters of the value of parameter +starting at the character specified by offset. +If parameter is ‘@’, an indexed array subscripted by +‘@’ or ‘*’, or an associative array name, the results differ as described below. -If length is omitted, it expands to the substring of the value of -parameter starting at the character specified by offset +If length is omitted, it expands to the substring of the value of +parameter starting at the character specified by offset and extending to the end of the value. -length and offset are arithmetic expressions -(see section 6.5 Shell Arithmetic). -

- -If offset evaluates to a number less than zero, the value +length and offset are arithmetic expressions +(see Shell Arithmetic). +

+

If offset evaluates to a number less than zero, the value is used as an offset in characters -from the end of the value of parameter. -If length evaluates to a number less than zero, +from the end of the value of parameter. +If length evaluates to a number less than zero, it is interpreted as an offset in characters -from the end of the value of parameter rather than +from the end of the value of parameter rather than a number of characters, and the expansion is the characters between -offset and that result. +offset and that result. Note that a negative offset must be separated from the colon by at least -one space to avoid being confused with the `:-' expansion. -

- -Here are some examples illustrating substring expansion on parameters and +one space to avoid being confused with the ‘:-’ expansion. +

+

Here are some examples illustrating substring expansion on parameters and subscripted arrays: -

- -@verbatim -$ string=01234567890abcdefgh +

+
$ string=01234567890abcdefgh
 $ echo ${string:7}
 7890abcdefgh
 $ echo ${string:7:0}
-

$ echo ${string:7:2} 78 @@ -2561,7 +2505,6 @@ $ echo ${string:7:-2} $ echo ${string: -7} bcdefgh $ echo ${string: -7:0} -

$ echo ${string: -7:2} bc @@ -2571,7 +2514,6 @@ $ set -- 01234567890abcdefgh $ echo ${1:7} 7890abcdefgh $ echo ${1:7:0} -

$ echo ${1:7:2} 78 @@ -2580,7 +2522,6 @@ $ echo ${1:7:-2} $ echo ${1: -7} bcdefgh $ echo ${1: -7:0} -

$ echo ${1: -7:2} bc @@ -2590,7 +2531,6 @@ $ array[0]=01234567890abcdefgh $ echo ${array[0]:7} 7890abcdefgh $ echo ${array[0]:7:0} -

$ echo ${array[0]:7:2} 78 @@ -2599,60 +2539,51 @@ $ echo ${array[0]:7:-2} $ echo ${array[0]: -7} bcdefgh $ echo ${array[0]: -7:0} -

$ echo ${array[0]: -7:2} bc $ echo ${array[0]: -7:-2} bcdef -

- -If parameter is `@', the result is length positional -parameters beginning at offset. -A negative offset is taken relative to one greater than the greatest +

+

If parameter is ‘@’, the result is length positional +parameters beginning at offset. +A negative offset is taken relative to one greater than the greatest positional parameter, so an offset of -1 evaluates to the last positional parameter. -It is an expansion error if length evaluates to a number less than zero. -

- -The following examples illustrate substring expansion using positional +It is an expansion error if length evaluates to a number less than zero. +

+

The following examples illustrate substring expansion using positional parameters: -

- -@verbatim -$ set -- 1 2 3 4 5 6 7 8 9 0 a b c d e f g h -$ echo ${7} +

+
$ set -- 1 2 3 4 5 6 7 8 9 0 a b c d e f g h
+$ echo ${@:7}
 7 8 9 0 a b c d e f g h
-$ echo ${7:0}
-

+$ echo ${@:7:0} -$ echo ${7:2} +$ echo ${@:7:2} 7 8 -$ echo ${7:-2} -bash: -2: substring expression < 0 -$ echo ${ -7:2} +$ echo ${@:7:-2} +bash: -2: substring expression < 0 +$ echo ${@: -7:2} b c -$ echo ${0} +$ echo ${@:0} ./bash 1 2 3 4 5 6 7 8 9 0 a b c d e f g h -$ echo ${0:2} +$ echo ${@:0:2} ./bash 1 -$ echo ${ -7:0} -

+$ echo ${@: -7:0} -If parameter is an indexed array name subscripted -by `@' or `*', the result is the length -members of the array beginning with ${parameter[offset]}. -A negative offset is taken relative to one greater than the maximum +

+

If parameter is an indexed array name subscripted +by ‘@’ or ‘*’, the result is the length +members of the array beginning with ${parameter[offset]}. +A negative offset is taken relative to one greater than the maximum index of the specified array. -It is an expansion error if length evaluates to a number less than zero. -

- -These examples show how you can use substring expansion with indexed +It is an expansion error if length evaluates to a number less than zero. +

+

These examples show how you can use substring expansion with indexed arrays: -

- -@verbatim -$ array=(0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h) +

+
$ array=(0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h)
 $ echo ${array[@]:7}
 7 8 9 0 a b c d e f g h
 $ echo ${array[@]:7:2}
@@ -2660,612 +2591,541 @@ $ echo ${array[@]:7:2}
 $ echo ${array[@]: -7:2}
 b c
 $ echo ${array[@]: -7:-2}
-bash: -2: substring expression < 0
+bash: -2: substring expression < 0
 $ echo ${array[@]:0}
 0 1 2 3 4 5 6 7 8 9 0 a b c d e f g h
 $ echo ${array[@]:0:2}
 0 1
 $ echo ${array[@]: -7:0}
-

-Substring expansion applied to an associative array produces undefined +

+

Substring expansion applied to an associative array produces undefined results. -

- -Substring indexing is zero-based unless the positional parameters +

+

Substring indexing is zero-based unless the positional parameters are used, in which case the indexing starts at 1 by default. -If offset is 0, and the positional parameters are used, $@ is +If offset is 0, and the positional parameters are used, $@ is prefixed to the list. -

- -

${!prefix*} -
${!prefix@} -
Expands to the names of variables whose names begin with prefix, -separated by the first character of the IFS special variable. -When `@' is used and the expansion appears within double quotes, each +

+
+
${!prefix*}
+
${!prefix@}
+

Expands to the names of variables whose names begin with prefix, +separated by the first character of the IFS special variable. +When ‘@’ is used and the expansion appears within double quotes, each variable name expands to a separate word. -

- -

${!name[@]} -
${!name[*]} -
If name is an array variable, expands to the list of array indices -(keys) assigned in name. -If name is not an array, expands to 0 if name is set and null +

+
+
${!name[@]}
+
${!name[*]}
+

If name is an array variable, expands to the list of array indices +(keys) assigned in name. +If name is not an array, expands to 0 if name is set and null otherwise. -When `@' is used and the expansion appears within double quotes, each +When ‘@’ is used and the expansion appears within double quotes, each key expands to a separate word. -

- -

${#parameter} -
The length in characters of the expanded value of parameter is +

+
+
${#parameter}
+

The length in characters of the expanded value of parameter is substituted. -If parameter is `*' or `@', the value substituted +If parameter is ‘*’ or ‘@’, the value substituted is the number of positional parameters. -If parameter is an array name subscripted by `*' or `@', +If parameter is an array name subscripted by ‘*’ or ‘@’, the value substituted is the number of elements in the array. -If parameter +If parameter is an indexed array name subscripted by a negative number, that number is interpreted as relative to one greater than the maximum index of -parameter, so negative indices count back from the end of the +parameter, so negative indices count back from the end of the array, and an index of -1 references the last element. -

- -

${parameter#word} -
${parameter##word} -
The word +

+
+
${parameter#word}
+
${parameter##word}
+

The word is expanded to produce a pattern just as in filename -expansion (see section 3.5.8 Filename Expansion). If the pattern matches -the beginning of the expanded value of parameter, -then the result of the expansion is the expanded value of parameter -with the shortest matching pattern (the `#' case) or the -longest matching pattern (the `##' case) deleted. -If parameter is `@' or `*', +expansion (see Filename Expansion). If the pattern matches +the beginning of the expanded value of parameter, +then the result of the expansion is the expanded value of parameter +with the shortest matching pattern (the ‘#’ case) or the +longest matching pattern (the ‘##’ case) deleted. +If parameter is ‘@’ or ‘*’, the pattern removal operation is applied to each positional parameter in turn, and the expansion is the resultant list. -If parameter is an array variable subscripted with -`@' or `*', +If parameter is an array variable subscripted with +‘@’ or ‘*’, the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list. -

- -

${parameter%word} -
${parameter%%word} -
The word is expanded to produce a pattern just as in +

+
+
${parameter%word}
+
${parameter%%word}
+

The word is expanded to produce a pattern just as in filename expansion. If the pattern matches a trailing portion of the expanded value of -parameter, then the result of the expansion is the value of -parameter with the shortest matching pattern (the `%' case) -or the longest matching pattern (the `%%' case) deleted. -If parameter is `@' or `*', +parameter, then the result of the expansion is the value of +parameter with the shortest matching pattern (the ‘%’ case) +or the longest matching pattern (the ‘%%’ case) deleted. +If parameter is ‘@’ or ‘*’, the pattern removal operation is applied to each positional parameter in turn, and the expansion is the resultant list. -If parameter -is an array variable subscripted with `@' or `*', +If parameter +is an array variable subscripted with ‘@’ or ‘*’, the pattern removal operation is applied to each member of the array in turn, and the expansion is the resultant list. -

- -

${parameter/pattern/string} -

- -The pattern is expanded to produce a pattern just as in +

+
+
${parameter/pattern/string}
+
+

The pattern is expanded to produce a pattern just as in filename expansion. -Parameter is expanded and the longest match of pattern -against its value is replaced with string. -If pattern begins with `/', all matches of pattern are -replaced with string. Normally only the first match is replaced. -If pattern begins with `#', it must match at the beginning -of the expanded value of parameter. -If pattern begins with `%', it must match at the end -of the expanded value of parameter. -If string is null, matches of pattern are deleted -and the / following pattern may be omitted. -If the nocasematch shell option -(see the description of shopt in 4.3.2 The Shopt Builtin) +Parameter is expanded and the longest match of pattern +against its value is replaced with string. +If pattern begins with ‘/’, all matches of pattern are +replaced with string. Normally only the first match is replaced. +If pattern begins with ‘#’, it must match at the beginning +of the expanded value of parameter. +If pattern begins with ‘%’, it must match at the end +of the expanded value of parameter. +If string is null, matches of pattern are deleted +and the / following pattern may be omitted. +If the nocasematch shell option +(see the description of shopt in The Shopt Builtin) is enabled, the match is performed without regard to the case of alphabetic characters. -If parameter is `@' or `*', +If parameter is ‘@’ or ‘*’, the substitution operation is applied to each positional parameter in turn, and the expansion is the resultant list. -If parameter -is an array variable subscripted with `@' or `*', +If parameter +is an array variable subscripted with ‘@’ or ‘*’, the substitution operation is applied to each member of the array in turn, and the expansion is the resultant list. -

- -

${parameter^pattern} -
${parameter^^pattern} -
${parameter,pattern} -
${parameter,,pattern} -
This expansion modifies the case of alphabetic characters in parameter. -The pattern is expanded to produce a pattern just as in +

+
+
${parameter^pattern}
+
${parameter^^pattern}
+
${parameter,pattern}
+
${parameter,,pattern}
+

This expansion modifies the case of alphabetic characters in parameter. +The pattern is expanded to produce a pattern just as in filename expansion. -Each character in the expanded value of parameter is tested against -pattern, and, if it matches the pattern, its case is converted. +Each character in the expanded value of parameter is tested against +pattern, and, if it matches the pattern, its case is converted. The pattern should not attempt to match more than one character. -The `^' operator converts lowercase letters matching pattern -to uppercase; the `,' operator converts matching uppercase letters +The ‘^’ operator converts lowercase letters matching pattern +to uppercase; the ‘,’ operator converts matching uppercase letters to lowercase. -The `^^' and `,,' expansions convert each matched character in the -expanded value; the `^' and `,' expansions match and convert only +The ‘^^’ and ‘,,’ expansions convert each matched character in the +expanded value; the ‘^’ and ‘,’ expansions match and convert only the first character in the expanded value. -If pattern is omitted, it is treated like a `?', which matches +If pattern is omitted, it is treated like a ‘?’, which matches every character. -If parameter is `@' or `*', +If parameter is ‘@’ or ‘*’, the case modification operation is applied to each positional parameter in turn, and the expansion is the resultant list. -If parameter -is an array variable subscripted with `@' or `*', +If parameter +is an array variable subscripted with ‘@’ or ‘*’, the case modification operation is applied to each member of the array in turn, and the expansion is the resultant list. -

- -

${parameter@operator} -
The expansion is either a transformation of the value of parameter -or information about parameter itself, depending on the value of -operator. Each operator is a single letter: -

- -

-
Q -
The expansion is a string that is the value of parameter quoted in a +

+
+
${parameter@operator}
+

The expansion is either a transformation of the value of parameter +or information about parameter itself, depending on the value of +operator. Each operator is a single letter: +

+
+
Q
+

The expansion is a string that is the value of parameter quoted in a format that can be reused as input. -

E -
The expansion is a string that is the value of parameter with backslash -escape sequences expanded as with the $'...' quoting mechansim. -
P -
The expansion is a string that is the result of expanding the value of -parameter as if it were a prompt string (see section 6.9 Controlling the Prompt). -
A -
The expansion is a string in the form of -an assignment statement or declare command that, if -evaluated, will recreate parameter with its attributes and value. -
a -
The expansion is a string consisting of flag values representing -parameter's attributes. -
-

+

+
E
+

The expansion is a string that is the value of parameter with backslash +escape sequences expanded as with the $'…' quoting mechansim. +

+
P
+

The expansion is a string that is the result of expanding the value of +parameter as if it were a prompt string (see Controlling the Prompt). +

+
A
+

The expansion is a string in the form of +an assignment statement or declare command that, if +evaluated, will recreate parameter with its attributes and value. +

+
a
+

The expansion is a string consisting of flag values representing +parameter’s attributes. +

+
-If parameter is `@' or `*', +

If parameter is ‘@’ or ‘*’, the operation is applied to each positional parameter in turn, and the expansion is the resultant list. -If parameter -is an array variable subscripted with `@' or `*', +If parameter +is an array variable subscripted with ‘@’ or ‘*’, the operation is applied to each member of the array in turn, and the expansion is the resultant list. -

- -The result of the expansion is subject to word splitting and pathname +

+

The result of the expansion is subject to word splitting and pathname expansion as described below. -

-

+

+
- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.4 Command Substitution

- -

+


+ + + +

3.5.4 Command Substitution

+ -Command substitution allows the output of a command to replace +

Command substitution allows the output of a command to replace the command itself. Command substitution occurs when a command is enclosed as follows: -
 
$(command)
-
or -
 
`command`
-

+

+
$(command)
+
+

or +

+
`command`
+
-Bash performs the expansion by executing command and -replacing the command substitution with the standard output of the +

Bash performs the expansion by executing command in a subshell environment +and replacing the command substitution with the standard output of the command, with any trailing newlines deleted. Embedded newlines are not deleted, but they may be removed during word splitting. -The command substitution $(cat file) can be -replaced by the equivalent but faster $(< file). -

- -When the old-style backquote form of substitution is used, +The command substitution $(cat file) can be +replaced by the equivalent but faster $(< file). +

+

When the old-style backquote form of substitution is used, backslash retains its literal meaning except when followed by -`$', ``', or `\'. +‘$’, ‘`’, or ‘\’. The first backquote not preceded by a backslash terminates the command substitution. -When using the $(command) form, all characters between +When using the $(command) form, all characters between the parentheses make up the command; none are treated specially. -

- -Command substitutions may be nested. To nest when using the backquoted +

+

Command substitutions may be nested. To nest when using the backquoted form, escape the inner backquotes with backslashes. -

- -If the substitution appears within double quotes, word splitting and +

+

If the substitution appears within double quotes, word splitting and filename expansion are not performed on the results. -

+

+
+ + + +

3.5.5 Arithmetic Expansion

+ + - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.5 Arithmetic Expansion

- -

- -Arithmetic expansion allows the evaluation of an arithmetic expression +

Arithmetic expansion allows the evaluation of an arithmetic expression and the substitution of the result. The format for arithmetic expansion is: -

+

+
+
$(( expression ))
+
-
 
$(( expression ))
-

- -The expression is treated as if it were within double quotes, but +

The expression is treated as if it were within double quotes, but a double quote inside the parentheses is not treated specially. All tokens in the expression undergo parameter and variable expansion, command substitution, and quote removal. The result is treated as the arithmetic expression to be evaluated. Arithmetic expansions may be nested. -

- -The evaluation is performed according to the rules listed below -(see section 6.5 Shell Arithmetic). +

+

The evaluation is performed according to the rules listed below +(see Shell Arithmetic). If the expression is invalid, Bash prints a message indicating failure to the standard error and no substitution occurs. -

+

+
+ + + +

3.5.6 Process Substitution

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.6 Process Substitution

- -

- -Process substitution is supported on systems that support named -pipes (FIFOs) or the `/dev/fd' method of naming open files. +

Process substitution allows a process’s input or output to be +referred to using a filename. It takes the form of -
 
<(list)
-
or -
 
>(list)
-
The process list is run with its input or output connected to a -FIFO or some file in `/dev/fd'. The name of this file is +

+
<(list)
+
+

or +

+
>(list)
+
+

The process list is run asynchronously, and its input or output +appears as a filename. +This filename is passed as an argument to the current command as the result of the -expansion. If the >(list) form is used, writing to -the file will provide input for list. If the -<(list) form is used, the file passed as an -argument should be read to obtain the output of list. -Note that no space may appear between the < or > +expansion. +If the >(list) form is used, writing to +the file will provide input for list. If the +<(list) form is used, the file passed as an +argument should be read to obtain the output of list. +Note that no space may appear between the < or > and the left parenthesis, otherwise the construct would be interpreted as a redirection. -

- -When available, process substitution is performed simultaneously with +Process substitution is supported on systems that support named +pipes (FIFOs) or the /dev/fd method of naming open files. +

+

When available, process substitution is performed simultaneously with parameter and variable expansion, command substitution, and arithmetic expansion. -

+

+
+ + + +

3.5.7 Word Splitting

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.7 Word Splitting

- -

- -The shell scans the results of parameter expansion, command substitution, +

The shell scans the results of parameter expansion, command substitution, and arithmetic expansion that did not occur within double quotes for word splitting. -

- -The shell treats each character of $IFS as a delimiter, and splits +

+

The shell treats each character of $IFS as a delimiter, and splits the results of the other expansions into words using these characters as field terminators. -If IFS is unset, or its value is exactly <space><tab><newline>, +If IFS is unset, or its value is exactly <space><tab><newline>, the default, then sequences of - <space>, <tab>, and <newline> + <space>, <tab>, and <newline> at the beginning and end of the results of the previous -expansions are ignored, and any sequence of IFS +expansions are ignored, and any sequence of IFS characters not at the beginning or end serves to delimit words. -If IFS has a value other than the default, then sequences of -the whitespace characters space and tab +If IFS has a value other than the default, then sequences of +the whitespace characters space, tab, and newline are ignored at the beginning and end of the word, as long as the whitespace character is in the -value of IFS (an IFS whitespace character). -Any character in IFS that is not IFS -whitespace, along with any adjacent IFS -whitespace characters, delimits a field. A sequence of IFS +value of IFS (an IFS whitespace character). +Any character in IFS that is not IFS +whitespace, along with any adjacent IFS +whitespace characters, delimits a field. A sequence of IFS whitespace characters is also treated as a delimiter. -If the value of IFS is null, no word splitting occurs. -

- -Explicit null arguments ("" or ") are retained. +If the value of IFS is null, no word splitting occurs. +

+

Explicit null arguments ("" or '') are retained. Unquoted implicit null arguments, resulting from the expansion of parameters that have no values, are removed. If a parameter with no value is expanded within double quotes, a null argument results and is retained. -

- -Note that if no expansion occurs, no splitting +

+

Note that if no expansion occurs, no splitting is performed. -

+

+
+ +
+

+Next: , Previous: , Up: Shell Expansions   [Contents][Index]

+
+ +

3.5.8 Filename Expansion

+ + + + + + + - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.8 Filename Expansion

- -
- -
3.5.8.1 Pattern Matching  How the shell matches patterns.
- - - - -

- -After word splitting, unless the `-f' option has been set -(see section 4.3.1 The Set Builtin), Bash scans each word for the characters -`*', `?', and `['. +

After word splitting, unless the -f option has been set +(see The Set Builtin), Bash scans each word for the characters +‘*’, ‘?’, and ‘[’. If one of these characters appears, then the word is -regarded as a pattern, +regarded as a pattern, and replaced with an alphabetically sorted list of -filenames matching the pattern (see section 3.5.8.1 Pattern Matching). +filenames matching the pattern (see Pattern Matching). If no matching filenames are found, -and the shell option nullglob is disabled, the word is left +and the shell option nullglob is disabled, the word is left unchanged. -If the nullglob option is set, and no matches are found, the word +If the nullglob option is set, and no matches are found, the word is removed. -If the failglob shell option is set, and no matches are found, +If the failglob shell option is set, and no matches are found, an error message is printed and the command is not executed. -If the shell option nocaseglob is enabled, the match is performed +If the shell option nocaseglob is enabled, the match is performed without regard to the case of alphabetic characters. -

- -When a pattern is used for filename expansion, the character `.' +

+

When a pattern is used for filename expansion, the character ‘.’ at the start of a filename or immediately following a slash -must be matched explicitly, unless the shell option dotglob is set. +must be matched explicitly, unless the shell option dotglob is set. When matching a filename, the slash character must always be matched explicitly. -In other cases, the `.' character is not treated specially. -

- -See the description of shopt in 4.3.2 The Shopt Builtin, -for a description of the nocaseglob, nullglob, -failglob, and dotglob options. -

- -The GLOBIGNORE +In other cases, the ‘.’ character is not treated specially. +

+

See the description of shopt in The Shopt Builtin, +for a description of the nocaseglob, nullglob, +failglob, and dotglob options. +

+

The GLOBIGNORE shell variable may be used to restrict the set of filenames matching a -pattern. If GLOBIGNORE +pattern. If GLOBIGNORE is set, each matching filename that also matches one of the patterns in -GLOBIGNORE is removed from the list of matches. -If the nocaseglob option is set, the matching against the patterns in -GLOBIGNORE is performed without regard to case. +GLOBIGNORE is removed from the list of matches. +If the nocaseglob option is set, the matching against the patterns in +GLOBIGNORE is performed without regard to case. The filenames -`.' and `..' -are always ignored when GLOBIGNORE +. and .. +are always ignored when GLOBIGNORE is set and not null. -However, setting GLOBIGNORE to a non-null value has the effect of -enabling the dotglob +However, setting GLOBIGNORE to a non-null value has the effect of +enabling the dotglob shell option, so all other filenames beginning with a -`.' will match. +‘.’ will match. To get the old behavior of ignoring filenames beginning with a -`.', make `.*' one of the patterns in GLOBIGNORE. -The dotglob option is disabled when GLOBIGNORE +‘.’, make ‘.*’ one of the patterns in GLOBIGNORE. +The dotglob option is disabled when GLOBIGNORE is unset. -

+

+
+ + + +

3.5.8.1 Pattern Matching

+ + - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.8.1 Pattern Matching

- -

- -Any character that appears in a pattern, other than the special pattern +

Any character that appears in a pattern, other than the special pattern characters described below, matches itself. -The NUL character may not occur in a pattern. +The NUL character may not occur in a pattern. A backslash escapes the following character; the escaping backslash is discarded when matching. The special pattern characters must be quoted if they are to be matched literally. -

- -The special pattern characters have the following meanings: -

-
* -
Matches any string, including the null string. -When the globstar shell option is enabled, and `*' is used in -a filename expansion context, two adjacent `*'s used as a single +

+

The special pattern characters have the following meanings: +

+
*
+

Matches any string, including the null string. +When the globstar shell option is enabled, and ‘*’ is used in +a filename expansion context, two adjacent ‘*’s used as a single pattern will match all files and zero or more directories and subdirectories. -If followed by a `/', two adjacent `*'s will match only +If followed by a ‘/’, two adjacent ‘*’s will match only directories and subdirectories. -

? -
Matches any single character. -
[...] -
Matches any one of the enclosed characters. A pair of characters -separated by a hyphen denotes a range expression; +

+
?
+

Matches any single character. +

+
[…]
+

Matches any one of the enclosed characters. A pair of characters +separated by a hyphen denotes a range expression; any character that falls between those two characters, inclusive, -using the current locale's collating sequence and character set, +using the current locale’s collating sequence and character set, is matched. If the first character following the -`[' is a `!' or a `^' -then any character not enclosed is matched. A `-' +‘[’ is a ‘!’ or a ‘^’ +then any character not enclosed is matched. A ‘-’ may be matched by including it as the first or last character -in the set. A `]' may be matched by including it as the first +in the set. A ‘]’ may be matched by including it as the first character in the set. The sorting order of characters in range expressions is determined by the current locale and the values of the -LC_COLLATE and LC_ALL shell variables, if set. -

- -For example, in the default C locale, `[a-dx-z]' is equivalent to -`[abcdxyz]'. Many locales sort characters in dictionary order, and in -these locales `[a-dx-z]' is typically not equivalent to `[abcdxyz]'; -it might be equivalent to `[aBbCcDdxXyYz]', for example. To obtain +LC_COLLATE and LC_ALL shell variables, if set. +

+

For example, in the default C locale, ‘[a-dx-z]’ is equivalent to +‘[abcdxyz]’. Many locales sort characters in dictionary order, and in +these locales ‘[a-dx-z]’ is typically not equivalent to ‘[abcdxyz]’; +it might be equivalent to ‘[aBbCcDdxXyYz]’, for example. To obtain the traditional interpretation of ranges in bracket expressions, you can -force the use of the C locale by setting the LC_COLLATE or -LC_ALL environment variable to the value `C', or enable the -globasciiranges shell option. -

- -Within `[' and `]', character classes can be specified +force the use of the C locale by setting the LC_COLLATE or +LC_ALL environment variable to the value ‘C’, or enable the +globasciiranges shell option. +

+

Within ‘[’ and ‘]’, character classes can be specified using the syntax -[:class:], where class is one of the -following classes defined in the POSIX standard: -
 
alnum   alpha   ascii   blank   cntrl   digit   graph   lower
+[:class:], where class is one of the
+following classes defined in the POSIX standard:
+

+
alnum   alpha   ascii   blank   cntrl   digit   graph   lower
 print   punct   space   upper   word    xdigit
-
A character class matches any character belonging to that class. -The word character class matches letters, digits, and the character -`_'. -

- -Within `[' and `]', an equivalence class can be -specified using the syntax [=c=], which + +

A character class matches any character belonging to that class. +The word character class matches letters, digits, and the character +‘_’. +

+

Within ‘[’ and ‘]’, an equivalence class can be +specified using the syntax [=c=], which matches all characters with the same collation weight (as defined -by the current locale) as the character c. -

+by the current locale) as the character c. +

+

Within ‘[’ and ‘]’, the syntax [.symbol.] +matches the collating symbol symbol. +

+
-Within `[' and `]', the syntax [.symbol.] -matches the collating symbol symbol. -
-

- -If the extglob shell option is enabled using the shopt +

If the extglob shell option is enabled using the shopt builtin, several extended pattern matching operators are recognized. -In the following description, a pattern-list is a list of one -or more patterns separated by a `|'. +In the following description, a pattern-list is a list of one +or more patterns separated by a ‘|’. Composite patterns may be formed using one or more of the following sub-patterns: -

+

+
+
?(pattern-list)
+

Matches zero or one occurrence of the given patterns. +

+
+
*(pattern-list)
+

Matches zero or more occurrences of the given patterns. +

+
+
+(pattern-list)
+

Matches one or more occurrences of the given patterns. +

+
+
@(pattern-list)
+

Matches one of the given patterns. +

+
+
!(pattern-list)
+

Matches anything except one of the given patterns. +

+
-
-
?(pattern-list) -
Matches zero or one occurrence of the given patterns. -

+


+ + + +

3.5.9 Quote Removal

-
*(pattern-list) -
Matches zero or more occurrences of the given patterns. -

- -

+(pattern-list) -
Matches one or more occurrences of the given patterns. -

- -

@(pattern-list) -
Matches one of the given patterns. -

- -

!(pattern-list) -
Matches anything except one of the given patterns. -
-

- - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.5.9 Quote Removal

- -

- -After the preceding expansions, all unquoted occurrences of the -characters `\', `'', and `"' that did not +

After the preceding expansions, all unquoted occurrences of the +characters ‘\’, ‘'’, and ‘"’ that did not result from one of the above expansions are removed. -

+

+
+ + + +

3.6 Redirections

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6 Redirections

- -

- -Before a command is executed, its input and output -may be redirected +

Before a command is executed, its input and output +may be redirected using a special notation interpreted by the shell. -Redirection allows commands' file handles to be +Redirection allows commands’ file handles to be duplicated, opened, closed, made to refer to different files, and can change the files the command reads from and writes to. @@ -3275,3148 +3135,2822 @@ operators may precede or appear anywhere within a simple command or may follow a command. Redirections are processed in the order they appear, from left to right. -

- -Each redirection that may be preceded by a file descriptor number -may instead be preceded by a word of the form {varname}. +

+

Each redirection that may be preceded by a file descriptor number +may instead be preceded by a word of the form {varname}. In this case, for each redirection operator except ->&- and <&-, the shell will allocate a file descriptor greater -than 10 and assign it to {varname}. If >&- or <&- is preceded -by {varname}, the value of varname defines the file +>&- and <&-, the shell will allocate a file descriptor greater +than 10 and assign it to {varname}. If >&- or <&- is preceded +by {varname}, the value of varname defines the file descriptor to close. -

- -In the following descriptions, if the file descriptor number is +

+

In the following descriptions, if the file descriptor number is omitted, and the first character of the redirection operator is -`<', the redirection refers to the standard input (file +‘<’, the redirection refers to the standard input (file descriptor 0). If the first character of the redirection operator -is `>', the redirection refers to the standard output (file +is ‘>’, the redirection refers to the standard output (file descriptor 1). -

- -The word following the redirection operator in the following +

+

The word following the redirection operator in the following descriptions, unless otherwise noted, is subjected to brace expansion, tilde expansion, parameter expansion, command substitution, arithmetic expansion, quote removal, filename expansion, and word splitting. If it expands to more than one word, Bash reports an error. -

- -Note that the order of redirections is significant. For example, +

+

Note that the order of redirections is significant. For example, the command -
 
ls > dirlist 2>&1
-
directs both standard output (file descriptor 1) and standard error -(file descriptor 2) to the file dirlist, while the command -
 
ls 2>&1 > dirlist
-
directs only the standard output to file dirlist, +

+
ls > dirlist 2>&1
+
+

directs both standard output (file descriptor 1) and standard error +(file descriptor 2) to the file dirlist, while the command +

+
ls 2>&1 > dirlist
+
+

directs only the standard output to file dirlist, because the standard error was made a copy of the standard output -before the standard output was redirected to dirlist. -

- -Bash handles several filenames specially when they are used in +before the standard output was redirected to dirlist. +

+

Bash handles several filenames specially when they are used in redirections, as described in the following table: -

- -

-
/dev/fd/fd -
If fd is a valid integer, file descriptor fd is duplicated. -

- -

/dev/stdin -
File descriptor 0 is duplicated. -

- -

/dev/stdout -
File descriptor 1 is duplicated. -

- -

/dev/stderr -
File descriptor 2 is duplicated. -

- -

/dev/tcp/host/port -
If host is a valid hostname or Internet address, and port +

+
+
/dev/fd/fd
+

If fd is a valid integer, file descriptor fd is duplicated. +

+
+
/dev/stdin
+

File descriptor 0 is duplicated. +

+
+
/dev/stdout
+

File descriptor 1 is duplicated. +

+
+
/dev/stderr
+

File descriptor 2 is duplicated. +

+
+
/dev/tcp/host/port
+

If host is a valid hostname or Internet address, and port is an integer port number or service name, Bash attempts to open the corresponding TCP socket. -

- -

/dev/udp/host/port -
If host is a valid hostname or Internet address, and port +

+
+
/dev/udp/host/port
+

If host is a valid hostname or Internet address, and port is an integer port number or service name, Bash attempts to open the corresponding UDP socket. -

-

+

+
-A failure to open or create a file causes the redirection to fail. -

- -Redirections using file descriptors greater than 9 should be used with +

A failure to open or create a file causes the redirection to fail. +

+

Redirections using file descriptors greater than 9 should be used with care, as they may conflict with file descriptors the shell uses internally. -

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.1 Redirecting Input

- -Redirection of input causes the file whose name results from -the expansion of word -to be opened for reading on file descriptor n, -or the standard input (file descriptor 0) if n +

+ +

3.6.1 Redirecting Input

+

Redirection of input causes the file whose name results from +the expansion of word +to be opened for reading on file descriptor n, +or the standard input (file descriptor 0) if n is not specified. -

+

+

The general format for redirecting input is: +

+
[n]<word
+
-The general format for redirecting input is: -
 
[n]<word
-

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.2 Redirecting Output

- -Redirection of output causes the file whose name results from -the expansion of word -to be opened for writing on file descriptor n, -or the standard output (file descriptor 1) if n + +

3.6.2 Redirecting Output

+

Redirection of output causes the file whose name results from +the expansion of word +to be opened for writing on file descriptor n, +or the standard output (file descriptor 1) if n is not specified. If the file does not exist it is created; if it does exist it is truncated to zero size. -

+

+

The general format for redirecting output is: +

+
[n]>[|]word
+
-The general format for redirecting output is: -
 
[n]>[|]word
-

- -If the redirection operator is `>', and the noclobber -option to the set builtin has been enabled, the redirection +

If the redirection operator is ‘>’, and the noclobber +option to the set builtin has been enabled, the redirection will fail if the file whose name results from the expansion of -word exists and is a regular file. -If the redirection operator is `>|', or the redirection operator is -`>' and the noclobber option is not enabled, the redirection -is attempted even if the file named by word exists. -

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.3 Appending Redirected Output

- -Redirection of output in this fashion +word exists and is a regular file. +If the redirection operator is ‘>|’, or the redirection operator is +‘>’ and the noclobber option is not enabled, the redirection +is attempted even if the file named by word exists. +

+ +

3.6.3 Appending Redirected Output

+

Redirection of output in this fashion causes the file whose name results from -the expansion of word -to be opened for appending on file descriptor n, -or the standard output (file descriptor 1) if n +the expansion of word +to be opened for appending on file descriptor n, +or the standard output (file descriptor 1) if n is not specified. If the file does not exist it is created. -

+

+

The general format for appending output is: +

+
[n]>>word
+
-The general format for appending output is: -
 
[n]>>word
-

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.4 Redirecting Standard Output and Standard Error

- -This construct allows both the + +

3.6.4 Redirecting Standard Output and Standard Error

+

This construct allows both the standard output (file descriptor 1) and the standard error output (file descriptor 2) to be redirected to the file whose name is the -expansion of word. -

- -There are two formats for redirecting standard output and +expansion of word. +

+

There are two formats for redirecting standard output and standard error: -
 
&>word
-
and -
 
>&word
-
Of the two forms, the first is preferred. +

+
&>word
+
+

and +

+
>&word
+
+

Of the two forms, the first is preferred. This is semantically equivalent to -
 
>word 2>&1
-
When using the second form, word may not expand to a number or -`-'. If it does, other redirection operators apply +

+
>word 2>&1
+
+

When using the second form, word may not expand to a number or +‘-’. If it does, other redirection operators apply (see Duplicating File Descriptors below) for compatibility reasons. -

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.5 Appending Standard Output and Standard Error

- -This construct allows both the +

+ +

3.6.5 Appending Standard Output and Standard Error

+

This construct allows both the standard output (file descriptor 1) and the standard error output (file descriptor 2) to be appended to the file whose name is the -expansion of word. -

- -The format for appending standard output and standard error is: -
 
&>>word
-
This is semantically equivalent to -
 
>>word 2>&1
-
(see Duplicating File Descriptors below). -

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.6 Here Documents

- -This type of redirection instructs the shell to read input from the -current source until a line containing only word +expansion of word. +

+

The format for appending standard output and standard error is: +

+
&>>word
+
+

This is semantically equivalent to +

+
>>word 2>&1
+
+

(see Duplicating File Descriptors below). +

+ +

3.6.6 Here Documents

+

This type of redirection instructs the shell to read input from the +current source until a line containing only word (with no trailing blanks) is seen. All of the lines read up to that point are then used as the standard -input (or file descriptor n if n is specified) for a command. -

+input (or file descriptor n if n is specified) for a command. +

+

The format of here-documents is: +

+
[n]<<[-]word
+        here-document
+delimiter
+
-The format of here-documents is: -
 
[n]<<[-]word
-        here-document
-delimiter
-

- -No parameter and variable expansion, command substitution, +

No parameter and variable expansion, command substitution, arithmetic expansion, or filename expansion is performed on -word. If any characters in word are quoted, the -delimiter is the result of quote removal on word, +word. If any characters in word are quoted, the +delimiter is the result of quote removal on word, and the lines in the here-document are not expanded. -If word is unquoted, +If word is unquoted, all lines of the here-document are subjected to parameter expansion, command substitution, and arithmetic expansion, -the character sequence \newline is ignored, and `\' +the character sequence \newline is ignored, and ‘\’ must be used to quote the characters -`\', `$', and ``'. -

- -If the redirection operator is `<<-', +‘\’, ‘$’, and ‘`’. +

+

If the redirection operator is ‘<<-’, then all leading tab characters are stripped from input lines and the -line containing delimiter. +line containing delimiter. This allows here-documents within shell scripts to be indented in a natural fashion. -

+

+ +

3.6.7 Here Strings

+

A variant of here documents, the format is: +

+
[n]<<< word
+
-
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.7 Here Strings

- -A variant of here documents, the format is: -
 
[n]<<< word
-

- -The word undergoes +

The word undergoes brace expansion, tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote removal. Pathname expansion and word splitting are not performed. -The result is supplied as a single string to the command on its -standard input (or file descriptor n if n is specified). -

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.8 Duplicating File Descriptors

- -The redirection operator -
 
[n]<&word
-
is used to duplicate input file descriptors. -If word -expands to one or more digits, the file descriptor denoted by n +The result is supplied as a single string, +with a newline appended, +to the command on its +standard input (or file descriptor n if n is specified). +

+ +

3.6.8 Duplicating File Descriptors

+

The redirection operator +

+
[n]<&word
+
+

is used to duplicate input file descriptors. +If word +expands to one or more digits, the file descriptor denoted by n is made to be a copy of that file descriptor. -If the digits in word do not specify a file descriptor open for +If the digits in word do not specify a file descriptor open for input, a redirection error occurs. -If word -evaluates to `-', file descriptor n is closed. -If n is not specified, the standard input (file descriptor 0) is used. -

- -The operator -
 
[n]>&word
-
is used similarly to duplicate output file descriptors. If -n is not specified, the standard output (file descriptor 1) is used. -If the digits in word do not specify a file descriptor open for +If word +evaluates to ‘-’, file descriptor n is closed. +If n is not specified, the standard input (file descriptor 0) is used. +

+

The operator +

+
[n]>&word
+
+

is used similarly to duplicate output file descriptors. If +n is not specified, the standard output (file descriptor 1) is used. +If the digits in word do not specify a file descriptor open for output, a redirection error occurs. -If word -evaluates to `-', file descriptor n is closed. -As a special case, if n is omitted, and word does not -expand to one or more digits or `-', the standard output and standard +If word +evaluates to ‘-’, file descriptor n is closed. +As a special case, if n is omitted, and word does not +expand to one or more digits or ‘-’, the standard output and standard error are redirected as described previously. -

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.9 Moving File Descriptors

- -The redirection operator -
 
[n]<&digit-
-
moves the file descriptor digit to file descriptor n, -or the standard input (file descriptor 0) if n is not specified. -digit is closed after being duplicated to n. -

- -Similarly, the redirection operator -
 
[n]>&digit-
-
moves the file descriptor digit to file descriptor n, -or the standard output (file descriptor 1) if n is not specified. -

- -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.6.10 Opening File Descriptors for Reading and Writing

- -The redirection operator -
 
[n]<>word
-
causes the file whose name is the expansion of word +

+ +

3.6.9 Moving File Descriptors

+

The redirection operator +

+
[n]<&digit-
+
+

moves the file descriptor digit to file descriptor n, +or the standard input (file descriptor 0) if n is not specified. +digit is closed after being duplicated to n. +

+

Similarly, the redirection operator +

+
[n]>&digit-
+
+

moves the file descriptor digit to file descriptor n, +or the standard output (file descriptor 1) if n is not specified. +

+ +

3.6.10 Opening File Descriptors for Reading and Writing

+

The redirection operator +

+
[n]<>word
+
+

causes the file whose name is the expansion of word to be opened for both reading and writing on file descriptor -n, or on file descriptor 0 if n +n, or on file descriptor 0 if n is not specified. If the file does not exist, it is created. -

+

+
+ + + +

3.7 Executing Commands

- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.7 Executing Commands

- -

- -

- - - + + + +
3.7.1 Simple Command Expansion  How Bash expands simple commands before - executing them.
3.7.2 Command Search and Execution  How Bash finds commands and runs them.
3.7.3 Command Execution Environment  The environment in which Bash + + + + - - - - -

+ shell builtins. +

Environment:  The environment given to a command. +
Exit Status:  The status returned by commands and how Bash + interprets it. +
Signals:  What happens when Bash or a command it runs + receives a signal. +
- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.7.1 Simple Command Expansion

- -

+


+ + + +

3.7.1 Simple Command Expansion

+ -When a simple command is executed, the shell performs the following +

When a simple command is executed, the shell performs the following expansions, assignments, and redirections, from left to right. -

- -

    -
  1. -The words that the parser has marked as variable assignments (those +

    +
      +
    1. The words that the parser has marked as variable assignments (those preceding the command name) and redirections are saved for later processing. -

      -

    2. -The words that are not variable assignments or redirections are -expanded (see section 3.5 Shell Expansions). +
    3. The words that are not variable assignments or redirections are +expanded (see Shell Expansions). If any words remain after expansion, the first word is taken to be the name of the command and the remaining words are the arguments. -

      -

    4. -Redirections are performed as described above (see section 3.6 Redirections). -

      +

    5. Redirections are performed as described above (see Redirections). -
    6. -The text after the `=' in each variable assignment undergoes tilde +
    7. The text after the ‘=’ in each variable assignment undergoes tilde expansion, parameter expansion, command substitution, arithmetic expansion, and quote removal before being assigned to the variable. -
    -

    +

-If no command name results, the variable assignments affect the current +

If no command name results, the variable assignments affect the current shell environment. Otherwise, the variables are added to the environment of the executed command and do not affect the current shell environment. If any of the assignments attempts to assign a value to a readonly variable, an error occurs, and the command exits with a non-zero status. -

- -If no command name results, redirections are performed, but do not +

+

If no command name results, redirections are performed, but do not affect the current shell environment. A redirection error causes the command to exit with a non-zero status. -

- -If there is a command name left after expansion, execution proceeds as +

+

If there is a command name left after expansion, execution proceeds as described below. Otherwise, the command exits. If one of the expansions contained a command substitution, the exit status of the command is the exit status of the last command substitution performed. If there were no command substitutions, the command exits with a status of zero. -

+

+
+ + + +

3.7.2 Command Search and Execution

+ + - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.7.2 Command Search and Execution

- -

- -After a command has been split into words, if it results in a +

After a command has been split into words, if it results in a simple command and an optional list of arguments, the following actions are taken. -

- -

    -
  1. -If the command name contains no slashes, the shell attempts to +

    +
      +
    1. If the command name contains no slashes, the shell attempts to locate it. If there exists a shell function by that name, that -function is invoked as described in 3.3 Shell Functions. -

      +function is invoked as described in Shell Functions. -

    2. -If the name does not match a function, the shell searches for +
    3. If the name does not match a function, the shell searches for it in the list of shell builtins. If a match is found, that builtin is invoked. -

      -

    4. -If the name is neither a shell function nor a builtin, +
    5. If the name is neither a shell function nor a builtin, and contains no slashes, Bash searches each element of -$PATH for a directory containing an executable file +$PATH for a directory containing an executable file by that name. Bash uses a hash table to remember the full -pathnames of executable files to avoid multiple PATH searches -(see the description of hash in 4.1 Bourne Shell Builtins). -A full search of the directories in $PATH +pathnames of executable files to avoid multiple PATH searches +(see the description of hash in Bourne Shell Builtins). +A full search of the directories in $PATH is performed only if the command is not found in the hash table. If the search is unsuccessful, the shell searches for a defined shell -function named command_not_found_handle. +function named command_not_found_handle. If that function exists, it is invoked with the original command and -the original command's arguments as its arguments, and the function's +the original command’s arguments as its arguments, and the function’s exit status becomes the exit status of the shell. If that function is not defined, the shell prints an error message and returns an exit status of 127. -

      -

    6. -If the search is successful, or if the command name contains +
    7. If the search is successful, or if the command name contains one or more slashes, the shell executes the named program in a separate execution environment. Argument 0 is set to the name given, and the remaining arguments to the command are set to the arguments supplied, if any. -

      -

    8. -If this execution fails because the file is not in executable +
    9. If this execution fails because the file is not in executable format, and the file is not a directory, it is assumed to be a -shell script and the shell executes it as described in -3.8 Shell Scripts. -

      +shell script and the shell executes it as described in +Shell Scripts. -

    10. -If the command was not begun asynchronously, the shell waits for +
    11. If the command was not begun asynchronously, the shell waits for the command to complete and collects its exit status. -

      -

    -

    +

- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.7.3 Command Execution Environment

- -

+


+ + + +

3.7.3 Command Execution Environment

+ -The shell has an execution environment, which consists of the +

The shell has an execution environment, which consists of the following: -

+

+
    +
  • open files inherited by the shell at invocation, as modified by +redirections supplied to the exec builtin -
      -
    • -open files inherited by the shell at invocation, as modified by -redirections supplied to the exec builtin -

      +

    • the current working directory as set by cd, pushd, or +popd, or inherited by the shell at invocation -
    • -the current working directory as set by cd, pushd, or -popd, or inherited by the shell at invocation -

      +

    • the file creation mode mask as set by umask or inherited from +the shell’s parent -
    • -the file creation mode mask as set by umask or inherited from -the shell's parent -

      +

    • current traps set by trap -
    • -current traps set by trap -

      +

    • shell parameters that are set by variable assignment or with set +or inherited from the shell’s parent in the environment -
    • -shell parameters that are set by variable assignment or with set -or inherited from the shell's parent in the environment -

      - -

    • -shell functions defined during execution or inherited from the shell's +
    • shell functions defined during execution or inherited from the shell’s parent in the environment -

      -

    • -options enabled at invocation (either by default or with command-line -arguments) or by set -

      +

    • options enabled at invocation (either by default or with command-line +arguments) or by set -
    • -options enabled by shopt (see section 4.3.2 The Shopt Builtin) -

      +

    • options enabled by shopt (see The Shopt Builtin) -
    • -shell aliases defined with alias (see section 6.6 Aliases) -

      +

    • shell aliases defined with alias (see Aliases) -
    • -various process IDs, including those of background jobs -(see section 3.2.3 Lists of Commands), the value of $$, and the value of -$PPID -

      +

    • various process IDs, including those of background jobs +(see Lists), the value of $$, and the value of +$PPID -
    -

    +

-When a simple command other than a builtin or shell function +

When a simple command other than a builtin or shell function is to be executed, it is invoked in a separate execution environment that consists of the following. Unless otherwise noted, the values are inherited from the shell. -

- -

    -
  • -the shell's open files, plus any modifications and additions specified +

    +
      +
    • the shell’s open files, plus any modifications and additions specified by redirections to the command -

      -

    • -the current working directory -

      +

    • the current working directory -
    • -the file creation mode mask -

      +

    • the file creation mode mask -
    • -shell variables and functions marked for export, along with variables -exported for the command, passed in the environment (see section 3.7.4 Environment) -

      +

    • shell variables and functions marked for export, along with variables +exported for the command, passed in the environment (see Environment) -
    • -traps caught by the shell are reset to the values inherited from the -shell's parent, and traps ignored by the shell are ignored -

      +

    • traps caught by the shell are reset to the values inherited from the +shell’s parent, and traps ignored by the shell are ignored -
    -

    +

-A command invoked in this separate environment cannot affect the -shell's execution environment. -

- -Command substitution, commands grouped with parentheses, +

A command invoked in this separate environment cannot affect the +shell’s execution environment. +

+

Command substitution, commands grouped with parentheses, and asynchronous commands are invoked in a subshell environment that is a duplicate of the shell environment, except that traps caught by the shell are reset to the values that the shell inherited from its parent at invocation. Builtin commands that are invoked as part of a pipeline are also executed in a subshell environment. Changes made to the subshell environment -cannot affect the shell's execution environment. -

- -Subshells spawned to execute command substitutions inherit the value of -the `-e' option from the parent shell. When not in POSIX mode, -Bash clears the `-e' option in such subshells. -

- -If a command is followed by a `&' and job control is not active, the -default standard input for the command is the empty file `/dev/null'. +cannot affect the shell’s execution environment. +

+

Subshells spawned to execute command substitutions inherit the value of +the -e option from the parent shell. When not in POSIX mode, +Bash clears the -e option in such subshells. +

+

If a command is followed by a ‘&’ and job control is not active, the +default standard input for the command is the empty file /dev/null. Otherwise, the invoked command inherits the file descriptors of the calling shell as modified by redirections. -

+

+
+ + + +

3.7.4 Environment

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.7.4 Environment

- -

- -When a program is invoked it is given an array of strings -called the environment. -This is a list of name-value pairs, of the form name=value. -

- -Bash provides several ways to manipulate the environment. +

When a program is invoked it is given an array of strings +called the environment. +This is a list of name-value pairs, of the form name=value. +

+

Bash provides several ways to manipulate the environment. On invocation, the shell scans its own environment and creates a parameter for each name found, automatically marking -it for export +it for export to child processes. Executed commands inherit the environment. -The export and `declare -x' +The export and ‘declare -x’ commands allow parameters and functions to be added to and deleted from the environment. If the value of a parameter in the environment is modified, the new value becomes part of the environment, replacing the old. The environment -inherited by any executed command consists of the shell's +inherited by any executed command consists of the shell’s initial environment, whose values may be modified in the shell, -less any pairs removed by the unset and `export -n' -commands, plus any additions via the export and -`declare -x' commands. -

- -The environment for any simple command +less any pairs removed by the unset and ‘export -n’ +commands, plus any additions via the export and +‘declare -x’ commands. +

+

The environment for any simple command or function may be augmented temporarily by prefixing it with -parameter assignments, as described in 3.4 Shell Parameters. +parameter assignments, as described in Shell Parameters. These assignment statements affect only the environment seen by that command. -

- -If the `-k' option is set (see section 4.3.1 The Set Builtin), then all +

+

If the -k option is set (see The Set Builtin), then all parameter assignments are placed in the environment for a command, not just those that precede the command name. -

- -When Bash invokes an external command, the variable `$_' +

+

When Bash invokes an external command, the variable ‘$_’ is set to the full pathname of the command and passed to that command in its environment. -

+

+
+ +
+

+Next: , Previous: , Up: Executing Commands   [Contents][Index]

+
+ +

3.7.5 Exit Status

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.7.5 Exit Status

- -

- -The exit status of an executed command is the value returned by the -waitpid system call or equivalent function. Exit statuses +

The exit status of an executed command is the value returned by the +waitpid system call or equivalent function. Exit statuses fall between 0 and 255, though, as explained below, the shell may use values above 125 specially. Exit statuses from shell builtins and compound commands are also limited to this range. Under certain circumstances, the shell will use special values to indicate specific failure modes. -

- -For the shell's purposes, a command which exits with a +

+

For the shell’s purposes, a command which exits with a zero exit status has succeeded. A non-zero exit status indicates failure. This seemingly counter-intuitive scheme is used so there is one well-defined way to indicate success and a variety of ways to indicate various failure modes. -When a command terminates on a fatal signal whose number is N, -Bash uses the value 128+N as the exit status. -

- -If a command is not found, the child process created to +When a command terminates on a fatal signal whose number is N, +Bash uses the value 128+N as the exit status. +

+

If a command is not found, the child process created to execute it returns a status of 127. If a command is found but is not executable, the return status is 126. -

- -If a command fails because of an error during expansion or redirection, +

+

If a command fails because of an error during expansion or redirection, the exit status is greater than zero. -

- -The exit status is used by the Bash conditional commands -(see section 3.2.4.2 Conditional Constructs) and some of the list -constructs (see section 3.2.3 Lists of Commands). -

- -All of the Bash builtins return an exit status of zero if they succeed +

+

The exit status is used by the Bash conditional commands +(see Conditional Constructs) and some of the list +constructs (see Lists). +

+

All of the Bash builtins return an exit status of zero if they succeed and a non-zero status on failure, so they may be used by the conditional and list constructs. All builtins return an exit status of 2 to indicate incorrect usage, generally invalid options or missing arguments. -

+

+
+ +
+

+Previous: , Up: Executing Commands   [Contents][Index]

+
+ +

3.7.6 Signals

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.7.6 Signals

- -

- -When Bash is interactive, in the absence of any traps, it ignores -SIGTERM (so that `kill 0' does not kill an interactive shell), -and SIGINT -is caught and handled (so that the wait builtin is interruptible). -When Bash receives a SIGINT, it breaks out of any executing loops. -In all cases, Bash ignores SIGQUIT. -If job control is in effect (see section 7. Job Control), Bash -ignores SIGTTIN, SIGTTOU, and SIGTSTP. -

- -Non-builtin commands started by Bash have signal handlers set to the +

When Bash is interactive, in the absence of any traps, it ignores +SIGTERM (so that ‘kill 0’ does not kill an interactive shell), +and SIGINT +is caught and handled (so that the wait builtin is interruptible). +When Bash receives a SIGINT, it breaks out of any executing loops. +In all cases, Bash ignores SIGQUIT. +If job control is in effect (see Job Control), Bash +ignores SIGTTIN, SIGTTOU, and SIGTSTP. +

+

Non-builtin commands started by Bash have signal handlers set to the values inherited by the shell from its parent. When job control is not in effect, asynchronous commands -ignore SIGINT and SIGQUIT in addition to these inherited +ignore SIGINT and SIGQUIT in addition to these inherited handlers. Commands run as a result of command substitution ignore the keyboard-generated job control signals -SIGTTIN, SIGTTOU, and SIGTSTP. -

- -The shell exits by default upon receipt of a SIGHUP. -Before exiting, an interactive shell resends the SIGHUP to +SIGTTIN, SIGTTOU, and SIGTSTP. +

+

The shell exits by default upon receipt of a SIGHUP. +Before exiting, an interactive shell resends the SIGHUP to all jobs, running or stopped. -Stopped jobs are sent SIGCONT to ensure that they receive -the SIGHUP. -To prevent the shell from sending the SIGHUP signal to a +Stopped jobs are sent SIGCONT to ensure that they receive +the SIGHUP. +To prevent the shell from sending the SIGHUP signal to a particular job, it should be removed -from the jobs table with the disown -builtin (see section 7.2 Job Control Builtins) or marked -to not receive SIGHUP using disown -h. -

- -If the huponexit shell option has been set with shopt -(see section 4.3.2 The Shopt Builtin), Bash sends a SIGHUP to all jobs when +from the jobs table with the disown +builtin (see Job Control Builtins) or marked +to not receive SIGHUP using disown -h. +

+

If the huponexit shell option has been set with shopt +(see The Shopt Builtin), Bash sends a SIGHUP to all jobs when an interactive login shell exits. -

- -If Bash is waiting for a command to complete and receives a signal +

+

If Bash is waiting for a command to complete and receives a signal for which a trap has been set, the trap will not be executed until the command completes. When Bash is waiting for an asynchronous -command via the wait builtin, the reception of a signal for -which a trap has been set will cause the wait builtin to return +command via the wait builtin, the reception of a signal for +which a trap has been set will cause the wait builtin to return immediately with an exit status greater than 128, immediately after which the trap is executed. -

+

+
+ + + +

3.8 Shell Scripts

+ - -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

3.8 Shell Scripts

- -

- -A shell script is a text file containing shell commands. When such +

A shell script is a text file containing shell commands. When such a file is used as the first non-option argument when invoking Bash, -and neither the `-c' nor `-s' option is supplied -(see section 6.1 Invoking Bash), +and neither the -c nor -s option is supplied +(see Invoking Bash), Bash reads and executes commands from the file, then exits. This mode of operation creates a non-interactive shell. The shell first searches for the file in the current directory, and looks in the -directories in $PATH if not found there. -

- -When Bash runs -a shell script, it sets the special parameter 0 to the name +directories in $PATH if not found there. +

+

When Bash runs +a shell script, it sets the special parameter 0 to the name of the file, rather than the name of the shell, and the positional parameters are set to the remaining arguments, if any are given. If no additional arguments are supplied, the positional parameters are unset. -

- -A shell script may be made executable by using the chmod command +

+

A shell script may be made executable by using the chmod command to turn on the execute bit. When Bash finds such a file while -searching the $PATH for a command, it spawns a subshell to +searching the $PATH for a command, it spawns a subshell to execute it. In other words, executing -
 
filename arguments
-
is equivalent to executing -
 
bash filename arguments
-

+

+
filename arguments
+
+

is equivalent to executing +

+
bash filename arguments
+
-if filename is an executable shell script. +

if filename is an executable shell script. This subshell reinitializes itself, so that the effect is as if a new shell had been invoked to interpret the script, with the exception that the locations of commands remembered by the parent -(see the description of hash in 4.1 Bourne Shell Builtins) +(see the description of hash in Bourne Shell Builtins) are retained by the child. -

- -Most versions of Unix make this a part of the operating system's command +

+

Most versions of Unix make this a part of the operating system’s command execution mechanism. If the first line of a script begins with -the two characters `#!', the remainder of the line specifies +the two characters ‘#!’, the remainder of the line specifies an interpreter for the program. -Thus, you can specify Bash, awk, Perl, or some other +Thus, you can specify Bash, awk, Perl, or some other interpreter and write the rest of the script file in that language. -

- -The arguments to the interpreter +

+

The arguments to the interpreter consist of a single optional argument following the interpreter name on the first line of the script file, followed by the name of the script file, followed by the rest of the arguments. Bash will perform this action on operating systems that do not handle it themselves. Note that some older versions of Unix limit the interpreter name and argument to a maximum of 32 characters. -

- -Bash scripts often begin with #! /bin/bash (assuming that -Bash has been installed in `/bin'), since this ensures that +

+

Bash scripts often begin with #! /bin/bash (assuming that +Bash has been installed in /bin), since this ensures that Bash will be used to interpret the script, even if it is executed under another shell. -

+

+
+ +
+

+Next: , Previous: , Up: Top   [Contents][Index]

+
+ +

4 Shell Builtin Commands

- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

4. Shell Builtin Commands

- -

+ + + + + + -

- - - - -
4.1 Bourne Shell Builtins  Builtin commands inherited from the Bourne - Shell.
4.2 Bash Builtin Commands  Table of builtins specific to Bash.
4.3 Modifying Shell Behavior  Builtins to modify shell attributes and - optional behavior.
4.4 Special Builtins  Builtin commands classified specially by - POSIX.
-

- -Builtin commands are contained within the shell itself. +

Builtin commands are contained within the shell itself. When the name of a builtin command is used as the first word of -a simple command (see section 3.2.1 Simple Commands), the shell executes +a simple command (see Simple Commands), the shell executes the command directly, without invoking another program. Builtin commands are necessary to implement functionality impossible or inconvenient to obtain with separate utilities. -

- -This section briefly describes the builtins which Bash inherits from +

+

This section briefly describes the builtins which Bash inherits from the Bourne Shell, as well as the builtin commands which are unique to or have been extended in Bash. -

- -Several builtin commands are described in other chapters: builtin +

+

Several builtin commands are described in other chapters: builtin commands which provide the Bash interface to the job control -facilities (see section 7.2 Job Control Builtins), the directory stack -(see section 6.8.1 Directory Stack Builtins), the command history -(see section 9.2 Bash History Builtins), and the programmable completion -facilities (see section 8.7 Programmable Completion Builtins). -

- -Many of the builtins have been extended by POSIX or Bash. -

- -Unless otherwise noted, each builtin command documented as accepting -options preceded by `-' accepts `--' +facilities (see Job Control Builtins), the directory stack +(see Directory Stack Builtins), the command history +(see Bash History Builtins), and the programmable completion +facilities (see Programmable Completion Builtins). +

+

Many of the builtins have been extended by POSIX or Bash. +

+

Unless otherwise noted, each builtin command documented as accepting +options preceded by ‘-’ accepts ‘--’ to signify the end of the options. -The :, true, false, and test -builtins do not accept options and do not treat `--' specially. -The exit, logout, return, -break, continue, let, -and shift builtins accept and process arguments beginning -with `-' without requiring `--'. +The :, true, false, and test +builtins do not accept options and do not treat ‘--’ specially. +The exit, logout, return, +break, continue, let, +and shift builtins accept and process arguments beginning +with ‘-’ without requiring ‘--’. Other builtins that accept arguments but are not specified as accepting -options interpret arguments beginning with `-' as invalid options and -require `--' to prevent this interpretation. -

+options interpret arguments beginning with ‘-’ as invalid options and +require ‘--’ to prevent this interpretation. +

+
+ + + +

4.1 Bourne Shell Builtins

- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

4.1 Bourne Shell Builtins

- -

+

The following shell builtin commands are inherited from the Bourne Shell. +These commands are implemented as specified by the POSIX standard. +

+
+
: (a colon)
+
+
+
: [arguments]
+
-The following shell builtin commands are inherited from the Bourne Shell. -These commands are implemented as specified by the POSIX standard. -

- -

-
: (a colon) -
-
 
: [arguments]
-

- -Do nothing beyond expanding arguments and performing redirections. +

Do nothing beyond expanding arguments and performing redirections. The return status is zero. -

+

+
+
. (a period)
+
+
+
. filename [arguments]
+
-
. (a period) -
-
 
. filename [arguments]
-

- -Read and execute commands from the filename argument in the -current shell context. If filename does not contain a slash, -the PATH variable is used to find filename. -When Bash is not in POSIX mode, the current directory is searched -if filename is not found in $PATH. -If any arguments are supplied, they become the positional -parameters when filename is executed. Otherwise the positional +

Read and execute commands from the filename argument in the +current shell context. If filename does not contain a slash, +the PATH variable is used to find filename. +When Bash is not in POSIX mode, the current directory is searched +if filename is not found in $PATH. +If any arguments are supplied, they become the positional +parameters when filename is executed. Otherwise the positional parameters are unchanged. -If the `-T' option is enabled, source inherits any trap on -DEBUG; if it is not, any DEBUG trap string is saved and -restored around the call to source, and source unsets the -DEBUG trap while it executes. -If `-T' is not set, and the sourced file changes -the DEBUG trap, the new value is retained when source completes. +If the -T option is enabled, source inherits any trap on +DEBUG; if it is not, any DEBUG trap string is saved and +restored around the call to source, and source unsets the +DEBUG trap while it executes. +If -T is not set, and the sourced file changes +the DEBUG trap, the new value is retained when source completes. The return status is the exit status of the last command executed, or -zero if no commands are executed. If filename is not found, or +zero if no commands are executed. If filename is not found, or cannot be read, the return status is non-zero. -This builtin is equivalent to source. -

+This builtin is equivalent to source. +

+
+
break
+
+
+
break [n]
+
-
break -
-
 
break [n]
-

+

Exit from a for, while, until, or select loop. +If n is supplied, the nth enclosing loop is exited. +n must be greater than or equal to 1. +The return status is zero unless n is not greater than or equal to 1. +

+
+
cd
+
+
+
cd [-L|[-P [-e]] [-@] [directory]
+
-Exit from a for, while, until, or select loop. -If n is supplied, the nth enclosing loop is exited. -n must be greater than or equal to 1. -The return status is zero unless n is not greater than or equal to 1. -

- -

cd -
-
 
cd [-L|[-P [-e]] [-@] [directory]
-

- -Change the current working directory to directory. -If directory is not supplied, the value of the HOME +

Change the current working directory to directory. +If directory is not supplied, the value of the HOME shell variable is used. -Any additional arguments following directory are ignored. +Any additional arguments following directory are ignored. If the shell variable -CDPATH exists, it is used as a search path: -each directory name in CDPATH is searched for -directory, with alternative directory names in CDPATH -separated by a colon (`:'). -If directory begins with a slash, CDPATH is not used. -

- -The `-P' option means to not follow symbolic links: symbolic links -are resolved while cd is traversing directory and before -processing an instance of `..' in directory. -

- -By default, or when the `-L' option is supplied, symbolic links -in directory are resolved after cd processes an instance -of `..' in directory. -

- -If `..' appears in directory, it is processed by removing the +CDPATH exists, it is used as a search path: +each directory name in CDPATH is searched for +directory, with alternative directory names in CDPATH +separated by a colon (‘:’). +If directory begins with a slash, CDPATH is not used. +

+

The -P option means to not follow symbolic links: symbolic links +are resolved while cd is traversing directory and before +processing an instance of ‘..’ in directory. +

+

By default, or when the -L option is supplied, symbolic links +in directory are resolved after cd processes an instance +of ‘..’ in directory. +

+

If ‘..’ appears in directory, it is processed by removing the immediately preceding pathname component, back to a slash or the beginning -of directory. -

- -If the `-e' option is supplied with `-P' +of directory. +

+

If the -e option is supplied with -P and the current working directory cannot be successfully determined -after a successful directory change, cd will return an unsuccessful +after a successful directory change, cd will return an unsuccessful status. -

- -On systems that support it, the `-@' option presents the extended +

+

On systems that support it, the -@ option presents the extended attributes associated with a file as a directory. -

- -If directory is `-', it is converted to $OLDPWD +

+

If directory is ‘-’, it is converted to $OLDPWD before the directory change is attempted. -

- -If a non-empty directory name from CDPATH is used, or if -`-' is the first argument, and the directory change is +

+

If a non-empty directory name from CDPATH is used, or if +‘-’ is the first argument, and the directory change is successful, the absolute pathname of the new working directory is written to the standard output. -

- -The return status is zero if the directory is successfully changed, +

+

The return status is zero if the directory is successfully changed, non-zero otherwise. -

+

+
+
continue
+
+
+
continue [n]
+
-
continue -
-
 
continue [n]
-

- -Resume the next iteration of an enclosing for, while, -until, or select loop. -If n is supplied, the execution of the nth enclosing loop +

Resume the next iteration of an enclosing for, while, +until, or select loop. +If n is supplied, the execution of the nth enclosing loop is resumed. -n must be greater than or equal to 1. -The return status is zero unless n is not greater than or equal to 1. -

+n must be greater than or equal to 1. +The return status is zero unless n is not greater than or equal to 1. +

+
+
eval
+
+
+
eval [arguments]
+
-
eval -
-
 
eval [arguments]
-

- -The arguments are concatenated together into a single command, which is +

The arguments are concatenated together into a single command, which is then read and executed, and its exit status returned as the exit status -of eval. +of eval. If there are no arguments or only empty arguments, the return status is zero. -

+

+
+
exec
+
+
+
exec [-cl] [-a name] [command [arguments]]
+
-
exec -
-
 
exec [-cl] [-a name] [command [arguments]]
-

- -If command +

If command is supplied, it replaces the shell without creating a new process. -If the `-l' option is supplied, the shell places a dash at the -beginning of the zeroth argument passed to command. -This is what the login program does. -The `-c' option causes command to be executed with an empty +If the -l option is supplied, the shell places a dash at the +beginning of the zeroth argument passed to command. +This is what the login program does. +The -c option causes command to be executed with an empty environment. -If `-a' is supplied, the shell passes name as the zeroth -argument to command. -If command +If -a is supplied, the shell passes name as the zeroth +argument to command. +If command cannot be executed for some reason, a non-interactive shell exits, -unless the execfail shell option +unless the execfail shell option is enabled. In that case, it returns failure. An interactive shell returns failure if the file cannot be executed. -If no command is specified, redirections may be used to affect +If no command is specified, redirections may be used to affect the current shell environment. If there are no redirection errors, the return status is zero; otherwise the return status is non-zero. -

+

+
+
exit
+
+
+
exit [n]
+
-
exit -
-
 
exit [n]
-

+

Exit the shell, returning a status of n to the shell’s parent. +If n is omitted, the exit status is that of the last command executed. +Any trap on EXIT is executed before the shell terminates. +

+
+
export
+
+
+
export [-fn] [-p] [name[=value]]
+
-Exit the shell, returning a status of n to the shell's parent. -If n is omitted, the exit status is that of the last command executed. -Any trap on EXIT is executed before the shell terminates. -

- -

export -
-
 
export [-fn] [-p] [name[=value]]
-

- -Mark each name to be passed to child processes -in the environment. If the `-f' option is supplied, the names +

Mark each name to be passed to child processes +in the environment. If the -f option is supplied, the names refer to shell functions; otherwise the names refer to shell variables. -The `-n' option means to no longer mark each name for export. -If no names are supplied, or if the `-p' option is given, a +The -n option means to no longer mark each name for export. +If no names are supplied, or if the -p option is given, a list of names of all exported variables is displayed. -The `-p' option displays output in a form that may be reused as input. -If a variable name is followed by =value, the value of -the variable is set to value. -

- -The return status is zero unless an invalid option is supplied, one of -the names is not a valid shell variable name, or `-f' is supplied +The -p option displays output in a form that may be reused as input. +If a variable name is followed by =value, the value of +the variable is set to value. +

+

The return status is zero unless an invalid option is supplied, one of +the names is not a valid shell variable name, or -f is supplied with a name that is not a shell function. -

+

+
+
getopts
+
+
+
getopts optstring name [args]
+
-
getopts -
-
 
getopts optstring name [args]
-

- -getopts is used by shell scripts to parse positional parameters. -optstring contains the option characters to be recognized; if a +

getopts is used by shell scripts to parse positional parameters. +optstring contains the option characters to be recognized; if a character is followed by a colon, the option is expected to have an argument, which should be separated from it by whitespace. -The colon (`:') and question mark (`?') may not be +The colon (‘:’) and question mark (‘?’) may not be used as option characters. -Each time it is invoked, getopts -places the next option in the shell variable name, initializing -name if it does not exist, +Each time it is invoked, getopts +places the next option in the shell variable name, initializing +name if it does not exist, and the index of the next argument to be processed into the -variable OPTIND. -OPTIND is initialized to 1 each time the shell or a shell script +variable OPTIND. +OPTIND is initialized to 1 each time the shell or a shell script is invoked. When an option requires an argument, -getopts places that argument into the variable OPTARG. -The shell does not reset OPTIND automatically; it must be manually -reset between multiple calls to getopts within the same shell +getopts places that argument into the variable OPTARG. +The shell does not reset OPTIND automatically; it must be manually +reset between multiple calls to getopts within the same shell invocation if a new set of parameters is to be used. -

- -When the end of options is encountered, getopts exits with a +

+

When the end of options is encountered, getopts exits with a return value greater than zero. -OPTIND is set to the index of the first non-option argument, -and name is set to `?'. -

- -getopts +OPTIND is set to the index of the first non-option argument, +and name is set to ‘?’. +

+

getopts normally parses the positional parameters, but if more arguments are -given in args, getopts parses those instead. -

- -getopts can report errors in two ways. If the first character of -optstring is a colon, silent +given in args, getopts parses those instead. +

+

getopts can report errors in two ways. If the first character of +optstring is a colon, silent error reporting is used. In normal operation, diagnostic messages are printed when invalid options or missing option arguments are encountered. -If the variable OPTERR +If the variable OPTERR is set to 0, no error messages will be displayed, even if the first -character of optstring is not a colon. -

+character of optstring is not a colon. +

+

If an invalid option is seen, +getopts places ‘?’ into name and, if not silent, +prints an error message and unsets OPTARG. +If getopts is silent, the option character found is placed in +OPTARG and no diagnostic message is printed. +

+

If a required argument is not found, and getopts +is not silent, a question mark (‘?’) is placed in name, +OPTARG is unset, and a diagnostic message is printed. +If getopts is silent, then a colon (‘:’) is placed in +name and OPTARG is set to the option character found. +

+
+
hash
+
+
+
hash [-r] [-p filename] [-dt] [name]
+
-If an invalid option is seen, -getopts places `?' into name and, if not silent, -prints an error message and unsets OPTARG. -If getopts is silent, the option character found is placed in -OPTARG and no diagnostic message is printed. -

- -If a required argument is not found, and getopts -is not silent, a question mark (`?') is placed in name, -OPTARG is unset, and a diagnostic message is printed. -If getopts is silent, then a colon (`:') is placed in -name and OPTARG is set to the option character found. -

- -

hash -
-
 
hash [-r] [-p filename] [-dt] [name]
-

- -Each time hash is invoked, it remembers the full pathnames of the -commands specified as name arguments, +

Each time hash is invoked, it remembers the full pathnames of the +commands specified as name arguments, so they need not be searched for on subsequent invocations. The commands are found by searching through the directories listed in -$PATH. +$PATH. Any previously-remembered pathname is discarded. -The `-p' option inhibits the path search, and filename is -used as the location of name. -The `-r' option causes the shell to forget all remembered locations. -The `-d' option causes the shell to forget the remembered location -of each name. -If the `-t' option is supplied, the full pathname to which each -name corresponds is printed. If multiple name arguments are -supplied with `-t' the name is printed before the hashed +The -p option inhibits the path search, and filename is +used as the location of name. +The -r option causes the shell to forget all remembered locations. +The -d option causes the shell to forget the remembered location +of each name. +If the -t option is supplied, the full pathname to which each +name corresponds is printed. If multiple name arguments are +supplied with -t the name is printed before the hashed full pathname. -The `-l' option causes output to be displayed in a format +The -l option causes output to be displayed in a format that may be reused as input. -If no arguments are given, or if only `-l' is supplied, +If no arguments are given, or if only -l is supplied, information about remembered commands is printed. -The return status is zero unless a name is not found or an invalid +The return status is zero unless a name is not found or an invalid option is supplied. -

+

+
+
pwd
+
+
+
pwd [-LP]
+
-
pwd -
-
 
pwd [-LP]
-

- -Print the absolute pathname of the current working directory. -If the `-P' option is supplied, the pathname printed will not +

Print the absolute pathname of the current working directory. +If the -P option is supplied, the pathname printed will not contain symbolic links. -If the `-L' option is supplied, the pathname printed may contain +If the -L option is supplied, the pathname printed may contain symbolic links. The return status is zero unless an error is encountered while determining the name of the current directory or an invalid option is supplied. -

+

+
+
readonly
+
+
+
readonly [-aAf] [-p] [name[=value]] …
+
-
readonly -
-
 
readonly [-aAf] [-p] [name[=value]] ...
-

- -Mark each name as readonly. +

Mark each name as readonly. The values of these names may not be changed by subsequent assignment. -If the `-f' option is supplied, each name refers to a shell +If the -f option is supplied, each name refers to a shell function. -The `-a' option means each name refers to an indexed -array variable; the `-A' option means each name refers +The -a option means each name refers to an indexed +array variable; the -A option means each name refers to an associative array variable. -If both options are supplied, `-A' takes precedence. -If no name arguments are given, or if the `-p' +If both options are supplied, -A takes precedence. +If no name arguments are given, or if the -p option is supplied, a list of all readonly names is printed. The other options may be used to restrict the output to a subset of the set of readonly names. -The `-p' option causes output to be displayed in a format that +The -p option causes output to be displayed in a format that may be reused as input. -If a variable name is followed by =value, the value of -the variable is set to value. +If a variable name is followed by =value, the value of +the variable is set to value. The return status is zero unless an invalid option is supplied, one of -the name arguments is not a valid shell variable or function name, -or the `-f' option is supplied with a name that is not a shell function. -

+the name arguments is not a valid shell variable or function name, +or the -f option is supplied with a name that is not a shell function. +

+
+
return
+
+
+
return [n]
+
-
return -
-
 
return [n]
-

- -Cause a shell function to stop executing and return the value n +

Cause a shell function to stop executing and return the value n to its caller. -If n is not supplied, the return value is the exit status of the +If n is not supplied, the return value is the exit status of the last command executed in the function. -If return is executed by a trap handler, the last command used to +If return is executed by a trap handler, the last command used to determine the status is the last command executed before the trap handler. -if return is executed during a DEBUG trap, the last command +if return is executed during a DEBUG trap, the last command used to determine the status is the last command executed by the trap -handler before return was invoked. -return may also be used to terminate execution of a script -being executed with the . (source) builtin, -returning either n or +handler before return was invoked. +return may also be used to terminate execution of a script +being executed with the . (source) builtin, +returning either n or the exit status of the last command executed within the script as the exit status of the script. -If n is supplied, the return value is its least significant +If n is supplied, the return value is its least significant 8 bits. -Any command associated with the RETURN trap is executed +Any command associated with the RETURN trap is executed before execution resumes after the function or script. -The return status is non-zero if return is supplied a non-numeric +The return status is non-zero if return is supplied a non-numeric argument or is used outside a function -and not during the execution of a script by . or source. -

+and not during the execution of a script by . or source. +

+
+
shift
+
+
+
shift [n]
+
-
shift -
-
 
shift [n]
-

- -Shift the positional parameters to the left by n. -The positional parameters from n+1 ... $# are -renamed to $1 ... $#-n. -Parameters represented by the numbers $# to $#-n+1 +

Shift the positional parameters to the left by n. +The positional parameters from n+1 … $# are +renamed to $1$#-n. +Parameters represented by the numbers $# to $#-n+1 are unset. -n must be a non-negative number less than or equal to $#. -If n is zero or greater than $#, the positional parameters +n must be a non-negative number less than or equal to $#. +If n is zero or greater than $#, the positional parameters are not changed. -If n is not supplied, it is assumed to be 1. -The return status is zero unless n is greater than $# or +If n is not supplied, it is assumed to be 1. +The return status is zero unless n is greater than $# or less than zero, non-zero otherwise. -

+

+
+
test
+
[
+
+ +
+
test expr
+
-
test -
[ -
- -
 
test expr
-

- -Evaluate a conditional express -ion expr and return a status of 0 +

Evaluate a conditional express +ion expr and return a status of 0 (true) or 1 (false). Each operator and operand must be a separate argument. Expressions are composed of the primaries described below in -6.4 Bash Conditional Expressions. -test does not accept any options, nor does it accept and ignore -an argument of `--' as signifying the end of options. -

- -When the [ form is used, the last argument to the command must -be a ]. -

- -Expressions may be combined using the following operators, listed in +Bash Conditional Expressions. +test does not accept any options, nor does it accept and ignore +an argument of -- as signifying the end of options. +

+

When the [ form is used, the last argument to the command must +be a ]. +

+

Expressions may be combined using the following operators, listed in decreasing order of precedence. The evaluation depends on the number of arguments; see below. Operator precedence is used when there are five or more arguments. -

- -

-
! expr -
True if expr is false. -

- -

( expr ) -
Returns the value of expr. +

+
+
! expr
+

True if expr is false. +

+
+
( expr )
+

Returns the value of expr. This may be used to override the normal precedence of operators. -

+

+
+
expr1 -a expr2
+

True if both expr1 and expr2 are true. +

+
+
expr1 -o expr2
+

True if either expr1 or expr2 is true. +

+
-
expr1 -a expr2 -
True if both expr1 and expr2 are true. -

- -

expr1 -o expr2 -
True if either expr1 or expr2 is true. -
-

- -The test and [ builtins evaluate conditional +

The test and [ builtins evaluate conditional expressions using a set of rules based on the number of arguments. -

- -

-
0 arguments -
The expression is false. -

- -

1 argument -
The expression is true if and only if the argument is not null. -

- -

2 arguments -
If the first argument is `!', the expression is true if and +

+
+
0 arguments
+

The expression is false. +

+
+
1 argument
+

The expression is true if and only if the argument is not null. +

+
+
2 arguments
+

If the first argument is ‘!’, the expression is true if and only if the second argument is null. If the first argument is one of the unary conditional operators -(see section 6.4 Bash Conditional Expressions), the expression +(see Bash Conditional Expressions), the expression is true if the unary test is true. If the first argument is not a valid unary operator, the expression is false. -

- -

3 arguments -
The following conditions are applied in the order listed. +

+
+
3 arguments
+

The following conditions are applied in the order listed. If the second argument is one of the binary conditional -operators (see section 6.4 Bash Conditional Expressions), the +operators (see Bash Conditional Expressions), the result of the expression is the result of the binary test using the first and third arguments as operands. -The `-a' and `-o' operators are considered binary operators +The ‘-a’ and ‘-o’ operators are considered binary operators when there are three arguments. -If the first argument is `!', the value is the negation of +If the first argument is ‘!’, the value is the negation of the two-argument test using the second and third arguments. -If the first argument is exactly `(' and the third argument is -exactly `)', the result is the one-argument test of the second +If the first argument is exactly ‘(’ and the third argument is +exactly ‘)’, the result is the one-argument test of the second argument. Otherwise, the expression is false. -

- -

4 arguments -
If the first argument is `!', the result is the negation of +

+
+
4 arguments
+

If the first argument is ‘!’, the result is the negation of the three-argument expression composed of the remaining arguments. Otherwise, the expression is parsed and evaluated according to precedence using the rules listed above. -

- -

5 or more arguments -
The expression is parsed and evaluated according to precedence +

+
+
5 or more arguments
+

The expression is parsed and evaluated according to precedence using the rules listed above. -

-

+

+
-When used with test or `[', the `<' and `>' +

When used with test or ‘[’, the ‘<’ and ‘>’ operators sort lexicographically using ASCII ordering. -

+

+
+
times
+
+
+
times
+
-
times -
-
 
times
-

- -Print out the user and system times used by the shell and its children. +

Print out the user and system times used by the shell and its children. The return status is zero. -

+

+
+
trap
+
+
+
trap [-lp] [arg] [sigspec …]
+
-
trap -
-
 
trap [-lp] [arg] [sigspec ...]
-

- -The commands in arg are to be read and executed when the -shell receives signal sigspec. If arg is absent (and -there is a single sigspec) or -equal to `-', each specified signal's disposition is reset +

The commands in arg are to be read and executed when the +shell receives signal sigspec. If arg is absent (and +there is a single sigspec) or +equal to ‘-’, each specified signal’s disposition is reset to the value it had when the shell was started. -If arg is the null string, then the signal specified by -each sigspec is ignored by the shell and commands it invokes. -If arg is not present and `-p' has been supplied, -the shell displays the trap commands associated with each sigspec. +If arg is the null string, then the signal specified by +each sigspec is ignored by the shell and commands it invokes. +If arg is not present and -p has been supplied, +the shell displays the trap commands associated with each sigspec. If no arguments are supplied, or -only `-p' is given, trap prints the list of commands +only -p is given, trap prints the list of commands associated with each signal number in a form that may be reused as shell input. -The `-l' option causes the shell to print a list of signal names +The -l option causes the shell to print a list of signal names and their corresponding numbers. -Each sigspec is either a signal name or a signal number. -Signal names are case insensitive and the SIG prefix is optional. -

- -If a sigspec -is 0 or EXIT, arg is executed when the shell exits. -If a sigspec is DEBUG, the command arg is executed -before every simple command, for command, case command, -select command, every arithmetic for command, and before +Each sigspec is either a signal name or a signal number. +Signal names are case insensitive and the SIG prefix is optional. +

+

If a sigspec +is 0 or EXIT, arg is executed when the shell exits. +If a sigspec is DEBUG, the command arg is executed +before every simple command, for command, case command, +select command, every arithmetic for command, and before the first command executes in a shell function. -Refer to the description of the extdebug option to the -shopt builtin (see section 4.3.2 The Shopt Builtin) for details of its -effect on the DEBUG trap. -If a sigspec is RETURN, the command arg is executed -each time a shell function or a script executed with the . or -source builtins finishes executing. -

- -If a sigspec is ERR, the command arg +Refer to the description of the extdebug option to the +shopt builtin (see The Shopt Builtin) for details of its +effect on the DEBUG trap. +If a sigspec is RETURN, the command arg is executed +each time a shell function or a script executed with the . or +source builtins finishes executing. +

+

If a sigspec is ERR, the command arg is executed whenever a pipeline (which may consist of a single simple command), a list, or a compound command returns a non-zero exit status, subject to the following conditions. -The ERR trap is not executed if the failed command is part of the -command list immediately following an until or while keyword, -part of the test following the if or elif reserved words, -part of a command executed in a && or || list -except the command following the final && or ||, +The ERR trap is not executed if the failed command is part of the +command list immediately following an until or while keyword, +part of the test following the if or elif reserved words, +part of a command executed in a && or || list +except the command following the final && or ||, any command in a pipeline but the last, -or if the command's return -status is being inverted using !. -These are the same conditions obeyed by the errexit (`-e') +or if the command’s return +status is being inverted using !. +These are the same conditions obeyed by the errexit (-e) option. -

- -Signals ignored upon entry to the shell cannot be trapped or reset. +

+

Signals ignored upon entry to the shell cannot be trapped or reset. Trapped signals that are not being ignored are reset to their original values in a subshell or subshell environment when one is created. -

- -The return status is zero unless a sigspec does not specify a +

+

The return status is zero unless a sigspec does not specify a valid signal. -

+

+
+
umask
+
+
+
umask [-p] [-S] [mode]
+
-
umask -
-
 
umask [-p] [-S] [mode]
-

- -Set the shell process's file creation mask to mode. If -mode begins with a digit, it is interpreted as an octal number; +

Set the shell process’s file creation mask to mode. If +mode begins with a digit, it is interpreted as an octal number; if not, it is interpreted as a symbolic mode mask similar -to that accepted by the chmod command. If mode is -omitted, the current value of the mask is printed. If the `-S' -option is supplied without a mode argument, the mask is printed +to that accepted by the chmod command. If mode is +omitted, the current value of the mask is printed. If the -S +option is supplied without a mode argument, the mask is printed in a symbolic format. -If the `-p' option is supplied, and mode +If the -p option is supplied, and mode is omitted, the output is in a form that may be reused as input. The return status is zero if the mode is successfully changed or if -no mode argument is supplied, and non-zero otherwise. -

+no mode argument is supplied, and non-zero otherwise. +

+

Note that when the mode is interpreted as an octal number, each number +of the umask is subtracted from 7. Thus, a umask of 022 +results in permissions of 755. +

+
+
unset
+
+
+
unset [-fnv] [name]
+
-Note that when the mode is interpreted as an octal number, each number -of the umask is subtracted from 7. Thus, a umask of 022 -results in permissions of 755. -

- -

unset -
-
 
unset [-fnv] [name]
-

- -Remove each variable or function name. -If the `-v' option is given, each -name refers to a shell variable and that variable is remvoved. -If the `-f' option is given, the names refer to shell +

Remove each variable or function name. +If the -v option is given, each +name refers to a shell variable and that variable is remvoved. +If the -f option is given, the names refer to shell functions, and the function definition is removed. -If the `-n' option is supplied, and name is a variable with -the nameref attribute, name will be unset rather than the +If the -n option is supplied, and name is a variable with +the nameref attribute, name will be unset rather than the variable it references. -`-n' has no effect if the `-f' option is supplied. -If no options are supplied, each name refers to a variable; if +-n has no effect if the -f option is supplied. +If no options are supplied, each name refers to a variable; if there is no variable by that name, any function with that name is unset. Readonly variables and functions may not be unset. -The return status is zero unless a name is readonly. -

-

+The return status is zero unless a name is readonly. +

+
- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

4.2 Bash Builtin Commands

- -

+


+ + + +

4.2 Bash Builtin Commands

-This section describes builtin commands which are unique to +

This section describes builtin commands which are unique to or have been extended in Bash. -Some of these commands are specified in the POSIX standard. -

+Some of these commands are specified in the POSIX standard. +

+
+
alias
+
+
+
alias [-p] [name[=value] …]
+
-
- -
alias -
-
 
alias [-p] [name[=value] ...]
-

- -Without arguments or with the `-p' option, alias prints +

Without arguments or with the -p option, alias prints the list of aliases on the standard output in a form that allows them to be reused as input. -If arguments are supplied, an alias is defined for each name -whose value is given. If no value is given, the name +If arguments are supplied, an alias is defined for each name +whose value is given. If no value is given, the name and value of the alias is printed. -Aliases are described in 6.6 Aliases. -

+Aliases are described in Aliases. +

+
+
bind
+
+
+
bind [-m keymap] [-lpsvPSVX]
+bind [-m keymap] [-q function] [-u function] [-r keyseq]
+bind [-m keymap] -f filename
+bind [-m keymap] -x keyseq:shell-command
+bind [-m keymap] keyseq:function-name
+bind [-m keymap] keyseq:readline-command
+
-
bind -
-
 
bind [-m keymap] [-lpsvPSVX]
-bind [-m keymap] [-q function] [-u function] [-r keyseq]
-bind [-m keymap] -f filename
-bind [-m keymap] -x keyseq:shell-command
-bind [-m keymap] keyseq:function-name
-bind [-m keymap] keyseq:readline-command
-

- -Display current Readline (see section 8. Command Line Editing) +

Display current Readline (see Command Line Editing) key and function bindings, bind a key sequence to a Readline function or macro, or set a Readline variable. Each non-option argument is a command as it would appear in a -Readline initialization file (see section 8.3 Readline Init File), +Readline initialization file (see Readline Init File), but each binding or command must be passed as a separate argument; e.g., -`"\C-x\C-r":re-read-init-file'. -

- -Options, if supplied, have the following meanings: -

- -

-
-m keymap -
Use keymap as the keymap to be affected by -the subsequent bindings. Acceptable keymap +‘"\C-x\C-r":re-read-init-file’. +

+

Options, if supplied, have the following meanings: +

+
+
-m keymap
+

Use keymap as the keymap to be affected by +the subsequent bindings. Acceptable keymap names are -emacs, -emacs-standard, -emacs-meta, -emacs-ctlx, -vi, -vi-move, -vi-command, and -vi-insert. -vi is equivalent to vi-command; -emacs is equivalent to emacs-standard. -

- -

-l -
List the names of all Readline functions. -

- -

-p -
Display Readline function names and bindings in such a way that they +emacs, +emacs-standard, +emacs-meta, +emacs-ctlx, +vi, +vi-move, +vi-command, and +vi-insert. +vi is equivalent to vi-command; +emacs is equivalent to emacs-standard. +

+
+
-l
+

List the names of all Readline functions. +

+
+
-p
+

Display Readline function names and bindings in such a way that they can be used as input or in a Readline initialization file. -

- -

-P -
List current Readline function names and bindings. -

- -

-v -
Display Readline variable names and values in such a way that they +

+
+
-P
+

List current Readline function names and bindings. +

+
+
-v
+

Display Readline variable names and values in such a way that they can be used as input or in a Readline initialization file. -

- -

-V -
List current Readline variable names and values. -

- -

-s -
Display Readline key sequences bound to macros and the strings they output +

+
+
-V
+

List current Readline variable names and values. +

+
+
-s
+

Display Readline key sequences bound to macros and the strings they output in such a way that they can be used as input or in a Readline initialization file. -

- -

-S -
Display Readline key sequences bound to macros and the strings they output. -

- -

-f filename -
Read key bindings from filename. -

- -

-q function -
Query about which keys invoke the named function. -

- -

-u function -
Unbind all keys bound to the named function. -

- -

-r keyseq -
Remove any current binding for keyseq. -

- -

-x keyseq:shell-command -
Cause shell-command to be executed whenever keyseq is +

+
+
-S
+

Display Readline key sequences bound to macros and the strings they output. +

+
+
-f filename
+

Read key bindings from filename. +

+
+
-q function
+

Query about which keys invoke the named function. +

+
+
-u function
+

Unbind all keys bound to the named function. +

+
+
-r keyseq
+

Remove any current binding for keyseq. +

+
+
-x keyseq:shell-command
+

Cause shell-command to be executed whenever keyseq is entered. -When shell-command is executed, the shell sets the -READLINE_LINE variable to the contents of the Readline line -buffer and the READLINE_POINT variable to the current location +When shell-command is executed, the shell sets the +READLINE_LINE variable to the contents of the Readline line +buffer and the READLINE_POINT variable to the current location of the insertion point. -If the executed command changes the value of READLINE_LINE or -READLINE_POINT, those new values will be reflected in the +If the executed command changes the value of READLINE_LINE or +READLINE_POINT, those new values will be reflected in the editing state. -

- -

-X -
List all key sequences bound to shell commands and the associated commands +

+
+
-X
+

List all key sequences bound to shell commands and the associated commands in a format that can be reused as input. -

-

+

+
-The return status is zero unless an invalid option is supplied or an +

The return status is zero unless an invalid option is supplied or an error occurs. -

+

+
+
builtin
+
+
+
builtin [shell-builtin [args]]
+
-
builtin -
-
 
builtin [shell-builtin [args]]
-

- -Run a shell builtin, passing it args, and return its exit status. +

Run a shell builtin, passing it args, and return its exit status. This is useful when defining a shell function with the same name as a shell builtin, retaining the functionality of the builtin within the function. -The return status is non-zero if shell-builtin is not a shell +The return status is non-zero if shell-builtin is not a shell builtin command. -

+

+
+
caller
+
+
+
caller [expr]
+
-
caller -
-
 
caller [expr]
-

- -Returns the context of any active subroutine call (a shell function or -a script executed with the . or source builtins). -

- -Without expr, caller displays the line number and source +

Returns the context of any active subroutine call (a shell function or +a script executed with the . or source builtins). +

+

Without expr, caller displays the line number and source filename of the current subroutine call. -If a non-negative integer is supplied as expr, caller +If a non-negative integer is supplied as expr, caller displays the line number, subroutine name, and source file corresponding to that position in the current execution call stack. This extra information may be used, for example, to print a stack trace. The current frame is frame 0. -

- -The return value is 0 unless the shell is not executing a subroutine -call or expr does not correspond to a valid position in the +

+

The return value is 0 unless the shell is not executing a subroutine +call or expr does not correspond to a valid position in the call stack. -

+

+
+
command
+
+
+
command [-pVv] command [arguments …]
+
-
command -
-
 
command [-pVv] command [arguments ...]
-

- -Runs command with arguments ignoring any shell function -named command. +

Runs command with arguments ignoring any shell function +named command. Only shell builtin commands or commands found by searching the -PATH are executed. -If there is a shell function named ls, running `command ls' -within the function will execute the external command ls +PATH are executed. +If there is a shell function named ls, running ‘command ls’ +within the function will execute the external command ls instead of calling the function recursively. -The `-p' option means to use a default value for PATH +The -p option means to use a default value for PATH that is guaranteed to find all of the standard utilities. -The return status in this case is 127 if command cannot be -found or an error occurred, and the exit status of command +The return status in this case is 127 if command cannot be +found or an error occurred, and the exit status of command otherwise. -

- -If either the `-V' or `-v' option is supplied, a -description of command is printed. The `-v' option +

+

If either the -V or -v option is supplied, a +description of command is printed. The -v option causes a single word indicating the command or file name used to -invoke command to be displayed; the `-V' option produces +invoke command to be displayed; the -V option produces a more verbose description. In this case, the return status is -zero if command is found, and non-zero if not. -

+zero if command is found, and non-zero if not. +

+
+
declare
+
+
+
declare [-aAfFgilnrtux] [-p] [name[=value] …]
+
-
declare -
-
 
declare [-aAfFgilnrtux] [-p] [name[=value] ...]
-

- -Declare variables and give them attributes. If no names +

Declare variables and give them attributes. If no names are given, then display the values of variables instead. -

- -The `-p' option will display the attributes and values of each -name. -When `-p' is used with name arguments, additional options, -other than `-f' and `-F', are ignored. -

- -When `-p' is supplied without name arguments, declare +

+

The -p option will display the attributes and values of each +name. +When -p is used with name arguments, additional options, +other than -f and -F, are ignored. +

+

When -p is supplied without name arguments, declare will display the attributes and values of all variables having the attributes specified by the additional options. -If no other options are supplied with `-p', declare will -display the attributes and values of all shell variables. The `-f' +If no other options are supplied with -p, declare will +display the attributes and values of all shell variables. The -f option will restrict the display to shell functions. -

- -The `-F' option inhibits the display of function definitions; +

+

The -F option inhibits the display of function definitions; only the function name and attributes are printed. -If the extdebug shell option is enabled using shopt -(see section 4.3.2 The Shopt Builtin), the source file name and line number where -each name is defined are displayed as well. -`-F' implies `-f'. -

- -The `-g' option forces variables to be created or modified at -the global scope, even when declare is executed in a shell function. +If the extdebug shell option is enabled using shopt +(see The Shopt Builtin), the source file name and line number where +each name is defined are displayed as well. +-F implies -f. +

+

The -g option forces variables to be created or modified at +the global scope, even when declare is executed in a shell function. It is ignored in all other cases. -

- -The following options can be used to restrict output to variables with +

+

The following options can be used to restrict output to variables with the specified attributes or to give variables attributes: -

- -

-
-a -
Each name is an indexed array variable (see section 6.7 Arrays). -

- -

-A -
Each name is an associative array variable (see section 6.7 Arrays). -

- -

-f -
Use function names only. -

- -

-i -
The variable is to be treated as -an integer; arithmetic evaluation (see section 6.5 Shell Arithmetic) is +

+
+
-a
+

Each name is an indexed array variable (see Arrays). +

+
+
-A
+

Each name is an associative array variable (see Arrays). +

+
+
-f
+

Use function names only. +

+
+
-i
+

The variable is to be treated as +an integer; arithmetic evaluation (see Shell Arithmetic) is performed when the variable is assigned a value. -

- -

-l -
When the variable is assigned a value, all upper-case characters are +

+
+
-l
+

When the variable is assigned a value, all upper-case characters are converted to lower-case. The upper-case attribute is disabled. -

- -

-n -
Give each name the nameref attribute, making +

+
+
-n
+

Give each name the nameref attribute, making it a name reference to another variable. -That other variable is defined by the value of name. +That other variable is defined by the value of name. All references, assignments, and attribute modifications -to name, except for changing the -`-n' attribute itself, are performed on the variable referenced by -name's value. +to name, except for changing the +-n attribute itself, are performed on the variable referenced by +name’s value. The nameref attribute cannot be applied to array variables. -

- -

-r -
Make names readonly. These names cannot then be assigned values +

+
+
-r
+

Make names readonly. These names cannot then be assigned values by subsequent assignment statements or unset. -

- -

-t -
Give each name the trace attribute. -Traced functions inherit the DEBUG and RETURN traps from +

+
+
-t
+

Give each name the trace attribute. +Traced functions inherit the DEBUG and RETURN traps from the calling shell. The trace attribute has no special meaning for variables. -

- -

-u -
When the variable is assigned a value, all lower-case characters are +

+
+
-u
+

When the variable is assigned a value, all lower-case characters are converted to upper-case. The lower-case attribute is disabled. -

- -

-x -
Mark each name for export to subsequent commands via +

+
+
-x
+

Mark each name for export to subsequent commands via the environment. -

-

+

+
-Using `+' instead of `-' turns off the attribute instead, -with the exceptions that `+a' -may not be used to destroy an array variable and `+r' will not +

Using ‘+’ instead of ‘-’ turns off the attribute instead, +with the exceptions that ‘+a’ +may not be used to destroy an array variable and ‘+r’ will not remove the readonly attribute. -When used in a function, declare makes each name local, -as with the local command, unless the `-g' option is used. -If a variable name is followed by =value, the value of the variable -is set to value. -

- -When using `-a' or `-A' and the compound assignment syntax to +When used in a function, declare makes each name local, +as with the local command, unless the -g option is used. +If a variable name is followed by =value, the value of the variable +is set to value. +

+

When using -a or -A and the compound assignment syntax to create array variables, additional attributes do not take effect until subsequent assignments. -

- -The return status is zero unless an invalid option is encountered, -an attempt is made to define a function using `-f foo=bar', +

+

The return status is zero unless an invalid option is encountered, +an attempt is made to define a function using ‘-f foo=bar’, an attempt is made to assign a value to a readonly variable, an attempt is made to assign a value to an array variable without -using the compound assignment syntax (see section 6.7 Arrays), -one of the names is not a valid shell variable name, +using the compound assignment syntax (see Arrays), +one of the names is not a valid shell variable name, an attempt is made to turn off readonly status for a readonly variable, an attempt is made to turn off array status for an array variable, -or an attempt is made to display a non-existent function with `-f'. -

+or an attempt is made to display a non-existent function with -f. +

+
+
echo
+
+
+
echo [-neE] [arg …]
+
-
echo -
-
 
echo [-neE] [arg ...]
-

- -Output the args, separated by spaces, terminated with a +

Output the args, separated by spaces, terminated with a newline. The return status is 0 unless a write error occurs. -If `-n' is specified, the trailing newline is suppressed. -If the `-e' option is given, interpretation of the following +If -n is specified, the trailing newline is suppressed. +If the -e option is given, interpretation of the following backslash-escaped characters is enabled. -The `-E' option disables the interpretation of these escape characters, +The -E option disables the interpretation of these escape characters, even on systems where they are interpreted by default. -The xpg_echo shell option may be used to -dynamically determine whether or not echo expands these +The xpg_echo shell option may be used to +dynamically determine whether or not echo expands these escape characters by default. -echo does not interpret `--' to mean the end of options. -

- -echo interprets the following escape sequences: -

-
\a -
alert (bell) -
\b -
backspace -
\c -
suppress further output -
\e -
\E -
escape -
\f -
form feed -
\n -
new line -
\r -
carriage return -
\t -
horizontal tab -
\v -
vertical tab -
\\ -
backslash -
\0nnn -
the eight-bit character whose value is the octal value nnn +echo does not interpret -- to mean the end of options. +

+

echo interprets the following escape sequences: +

+
\a
+

alert (bell) +

+
\b
+

backspace +

+
\c
+

suppress further output +

+
\e
+
\E
+

escape +

+
\f
+

form feed +

+
\n
+

new line +

+
\r
+

carriage return +

+
\t
+

horizontal tab +

+
\v
+

vertical tab +

+
\\
+

backslash +

+
\0nnn
+

the eight-bit character whose value is the octal value nnn (zero to three octal digits) -

\xHH -
the eight-bit character whose value is the hexadecimal value HH +

+
\xHH
+

the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) -

\uHHHH -
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value -HHHH (one to four hex digits) -
\UHHHHHHHH -
the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value -HHHHHHHH (one to eight hex digits) -
-

+

+
\uHHHH
+

the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +HHHH (one to four hex digits) +

+
\UHHHHHHHH
+

the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value +HHHHHHHH (one to eight hex digits) +

+
-
enable -
-
 
enable [-a] [-dnps] [-f filename] [name ...]
-

+

+
enable
+
+
+
enable [-a] [-dnps] [-f filename] [name …]
+
-Enable and disable builtin shell commands. +

Enable and disable builtin shell commands. Disabling a builtin allows a disk command which has the same name as a shell builtin to be executed without specifying a full pathname, even though the shell normally searches for builtins before disk commands. -If `-n' is used, the names become disabled. Otherwise -names are enabled. For example, to use the test binary -found via $PATH instead of the shell builtin version, type -`enable -n test'. -

- -If the `-p' option is supplied, or no name arguments appear, +If -n is used, the names become disabled. Otherwise +names are enabled. For example, to use the test binary +found via $PATH instead of the shell builtin version, type +‘enable -n test’. +

+

If the -p option is supplied, or no name arguments appear, a list of shell builtins is printed. With no other arguments, the list consists of all enabled shell builtins. -The `-a' option means to list +The -a option means to list each builtin with an indication of whether or not it is enabled. -

- -The `-f' option means to load the new builtin command name -from shared object filename, on systems that support dynamic loading. -The `-d' option will delete a builtin loaded with `-f'. -

- -If there are no options, a list of the shell builtins is displayed. -The `-s' option restricts enable to the POSIX special -builtins. If `-s' is used with `-f', the new builtin becomes -a special builtin (see section 4.4 Special Builtins). -

- -The return status is zero unless a name is not a shell builtin +

+

The -f option means to load the new builtin command name +from shared object filename, on systems that support dynamic loading. +The -d option will delete a builtin loaded with -f. +

+

If there are no options, a list of the shell builtins is displayed. +The -s option restricts enable to the POSIX special +builtins. If -s is used with -f, the new builtin becomes +a special builtin (see Special Builtins). +

+

The return status is zero unless a name is not a shell builtin or there is an error loading a new builtin from a shared object. -

+

+
+
help
+
+
+
help [-dms] [pattern]
+
-
help -
-
 
help [-dms] [pattern]
-

- -Display helpful information about builtin commands. -If pattern is specified, help gives detailed help -on all commands matching pattern, otherwise a list of +

Display helpful information about builtin commands. +If pattern is specified, help gives detailed help +on all commands matching pattern, otherwise a list of the builtins is printed. -

+

+

Options, if supplied, have the following meanings: +

+
+
-d
+

Display a short description of each pattern +

+
-m
+

Display the description of each pattern in a manpage-like format +

+
-s
+

Display only a short usage synopsis for each pattern +

+
-Options, if supplied, have the following meanings: -

+

The return status is zero unless no command matches pattern. +

+
+
let
+
+
+
let expression [expression …]
+
-
-
-d -
Display a short description of each pattern -
-m -
Display the description of each pattern in a manpage-like format -
-s -
Display only a short usage synopsis for each pattern -
-

- -The return status is zero unless no command matches pattern. -

- -

let -
-
 
let expression [expression ...]
-

- -The let builtin allows arithmetic to be performed on shell -variables. Each expression is evaluated according to the -rules given below in 6.5 Shell Arithmetic. If the -last expression evaluates to 0, let returns 1; +

The let builtin allows arithmetic to be performed on shell +variables. Each expression is evaluated according to the +rules given below in Shell Arithmetic. If the +last expression evaluates to 0, let returns 1; otherwise 0 is returned. -

+

+
+
local
+
+
+
local [option] name[=value] …
+
-
local -
-
 
local [option] name[=value] ...
-

- -For each argument, a local variable named name is created, -and assigned value. -The option can be any of the options accepted by declare. -local can only be used within a function; it makes the variable -name have a visible scope restricted to that function and its +

For each argument, a local variable named name is created, +and assigned value. +The option can be any of the options accepted by declare. +local can only be used within a function; it makes the variable +name have a visible scope restricted to that function and its children. -If name is `-', the set of shell options is made local to the -function in which local is invoked: shell options changed using -the set builtin inside the function are restored to their original +If name is ‘-’, the set of shell options is made local to the +function in which local is invoked: shell options changed using +the set builtin inside the function are restored to their original values when the function returns. -The return status is zero unless local is used outside -a function, an invalid name is supplied, or name is a +The return status is zero unless local is used outside +a function, an invalid name is supplied, or name is a readonly variable. -

+

+
+
logout
+
+
+
logout [n]
+
-
logout -
-
 
logout [n]
-

- -Exit a login shell, returning a status of n to the shell's +

Exit a login shell, returning a status of n to the shell’s parent. -

+

+
+
mapfile
+
+
+
mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd]
+    [-C callback] [-c quantum] [array]
+
-
mapfile -
-
 
mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd]
-    [-C callback] [-c quantum] [array]
-

- -Read lines from the standard input into the indexed array variable array, -or from file descriptor fd -if the `-u' option is supplied. -The variable MAPFILE is the default array. +

Read lines from the standard input into the indexed array variable array, +or from file descriptor fd +if the -u option is supplied. +The variable MAPFILE is the default array. Options, if supplied, have the following meanings: -

- -

- -
-d -
The first character of delim is used to terminate each input line, +

+
+
-d
+

The first character of delim is used to terminate each input line, rather than newline. -

-n -
Copy at most count lines. If count is 0, all lines are copied. -
-O -
Begin assigning to array at index origin. +

+
-n
+

Copy at most count lines. If count is 0, all lines are copied. +

+
-O
+

Begin assigning to array at index origin. The default index is 0. -

-s -
Discard the first count lines read. -
-t -
Remove a trailing delim (default newline) from each line read. -
-u -
Read lines from file descriptor fd instead of the standard input. -
-C -
Evaluate callback each time quantumP lines are read. -The `-c' option specifies quantum. -
-c -
Specify the number of lines read between each call to callback. -
-

+

+
-s
+

Discard the first count lines read. +

+
-t
+

Remove a trailing delim (default newline) from each line read. +

+
-u
+

Read lines from file descriptor fd instead of the standard input. +

+
-C
+

Evaluate callback each time quantumP lines are read. +The -c option specifies quantum. +

+
-c
+

Specify the number of lines read between each call to callback. +

+
-If `-C' is specified without `-c', +

If -C is specified without -c, the default quantum is 5000. -When callback is evaluated, it is supplied the index of the next +When callback is evaluated, it is supplied the index of the next array element to be assigned and the line to be assigned to that element as additional arguments. -callback is evaluated after the line is read but before the +callback is evaluated after the line is read but before the array element is assigned. -

- -If not supplied with an explicit origin, mapfile will clear array +

+

If not supplied with an explicit origin, mapfile will clear array before assigning to it. -

- -mapfile returns successfully unless an invalid option or option -argument is supplied, array is invalid or unassignable, or array +

+

mapfile returns successfully unless an invalid option or option +argument is supplied, array is invalid or unassignable, or array is not an indexed array. -

+

+
+
printf
+
+
+
printf [-v var] format [arguments]
+
-
printf -
-
 
printf [-v var] format [arguments]
-

- -Write the formatted arguments to the standard output under the -control of the format. -The `-v' option causes the output to be assigned to the variable -var rather than being printed to the standard output. -

- -The format is a character string which contains three types of objects: +

Write the formatted arguments to the standard output under the +control of the format. +The -v option causes the output to be assigned to the variable +var rather than being printed to the standard output. +

+

The format is a character string which contains three types of objects: plain characters, which are simply copied to standard output, character escape sequences, which are converted and copied to the standard output, and format specifications, each of which causes printing of the next successive -argument. -In addition to the standard printf(1) formats, printf +argument. +In addition to the standard printf(1) formats, printf interprets the following extensions: -

- -

-
%b -
Causes printf to expand backslash escape sequences in the -corresponding argument in the same way as echo -e -(see section 4.2 Bash Builtin Commands). -
%q -
Causes printf to output the -corresponding argument in a format that can be reused as shell input. -
%(datefmt)T -
Causes printf to output the date-time string resulting from using -datefmt as a format string for strftime(3). -The corresponding argument is an integer representing the number of +

+
+
%b
+

Causes printf to expand backslash escape sequences in the +corresponding argument in the same way as echo -e +(see Bash Builtins). +

+
%q
+

Causes printf to output the +corresponding argument in a format that can be reused as shell input. +

+
%(datefmt)T
+

Causes printf to output the date-time string resulting from using +datefmt as a format string for strftime(3). +The corresponding argument is an integer representing the number of seconds since the epoch. Two special argument values may be used: -1 represents the current time, and -2 represents the time the shell was invoked. If no argument is specified, conversion behaves as if -1 had been given. -This is an exception to the usual printf behavior. -

-

+This is an exception to the usual printf behavior. +

+
-Arguments to non-string format specifiers are treated as C language constants, +

Arguments to non-string format specifiers are treated as C language constants, except that a leading plus or minus sign is allowed, and if the leading character is a single or double quote, the value is the ASCII value of the following character. -

- -The format is reused as necessary to consume all of the arguments. -If the format requires more arguments than are supplied, the +

+

The format is reused as necessary to consume all of the arguments. +If the format requires more arguments than are supplied, the extra format specifications behave as if a zero value or null string, as appropriate, had been supplied. The return value is zero on success, non-zero on failure. -

+

+
+
read
+
+
+
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars]
+    [-N nchars] [-p prompt] [-t timeout] [-u fd] [name …]
+
-
read -
-
 
read [-ers] [-a aname] [-d delim] [-i text] [-n nchars]
-    [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]
-

- -One line is read from the standard input, or from the file descriptor -fd supplied as an argument to the `-u' option, and the first word -is assigned to the first name, the second word to the second name, +

One line is read from the standard input, or from the file descriptor +fd supplied as an argument to the -u option, and the first word +is assigned to the first name, the second word to the second name, and so on, with leftover words and their intervening separators assigned -to the last name. +to the last name. If there are fewer words read from the input stream than names, the remaining names are assigned empty values. -The characters in the value of the IFS variable +The characters in the value of the IFS variable are used to split the line into words using the same rules the shell -uses for expansion (described above in 3.5.7 Word Splitting). -The backslash character `\' may be used to remove any special +uses for expansion (described above in Word Splitting). +The backslash character ‘\’ may be used to remove any special meaning for the next character read and for line continuation. If no names are supplied, the line read is assigned to the -variable REPLY. -The exit status is zero, unless end-of-file is encountered, read +variable REPLY. +The exit status is zero, unless end-of-file is encountered, read times out (in which case the status is greater than 128), a variable assignment error (such as assigning to a readonly variable) occurs, -or an invalid file descriptor is supplied as the argument to `-u'. -

- -Options, if supplied, have the following meanings: -

- -

-
-a aname -
The words are assigned to sequential indices of the array variable -aname, starting at 0. -All elements are removed from aname before the assignment. -Other name arguments are ignored. -

- -

-d delim -
The first character of delim is used to terminate the input line, +or an invalid file descriptor is supplied as the argument to -u. +

+

Options, if supplied, have the following meanings: +

+
+
-a aname
+

The words are assigned to sequential indices of the array variable +aname, starting at 0. +All elements are removed from aname before the assignment. +Other name arguments are ignored. +

+
+
-d delim
+

The first character of delim is used to terminate the input line, rather than newline. -

- -

-e -
Readline (see section 8. Command Line Editing) is used to obtain the line. +

+
+
-e
+

Readline (see Command Line Editing) is used to obtain the line. Readline uses the current (or default, if line editing was not previously active) editing settings. -

- -

-i text -
If Readline is being used to read the line, text is placed into +

+
+
-i text
+

If Readline is being used to read the line, text is placed into the editing buffer before editing begins. -

- -

-n nchars -
read returns after reading nchars characters rather than +

+
+
-n nchars
+

read returns after reading nchars characters rather than waiting for a complete line of input, but honors a delimiter if fewer -than nchars characters are read before the delimiter. -

- -

-N nchars -
read returns after reading exactly nchars characters rather +than nchars characters are read before the delimiter. +

+
+
-N nchars
+

read returns after reading exactly nchars characters rather than waiting for a complete line of input, unless EOF is encountered or -read times out. +read times out. Delimiter characters encountered in the input are -not treated specially and do not cause read to return until -nchars characters are read. -The result is not split on the characters in IFS; the intent is +not treated specially and do not cause read to return until +nchars characters are read. +The result is not split on the characters in IFS; the intent is that the variable is assigned exactly the characters read -(with the exception of backslash; see the `-r' option below). -

- -

-p prompt -
Display prompt, without a trailing newline, before attempting +(with the exception of backslash; see the -r option below). +

+
+
-p prompt
+

Display prompt, without a trailing newline, before attempting to read any input. The prompt is displayed only if input is coming from a terminal. -

- -

-r -
If this option is given, backslash does not act as an escape character. +

+
+
-r
+

If this option is given, backslash does not act as an escape character. The backslash is considered to be part of the line. In particular, a backslash-newline pair may not be used as a line continuation. -

- -

-s -
Silent mode. If input is coming from a terminal, characters are +

+
+
-s
+

Silent mode. If input is coming from a terminal, characters are not echoed. -

- -

-t timeout -
Cause read to time out and return failure if a complete line of +

+
+
-t timeout
+

Cause read to time out and return failure if a complete line of input (or a specified number of characters) -is not read within timeout seconds. -timeout may be a decimal number with a fractional portion following +is not read within timeout seconds. +timeout may be a decimal number with a fractional portion following the decimal point. -This option is only effective if read is reading input from a +This option is only effective if read is reading input from a terminal, pipe, or other special file; it has no effect when reading from regular files. -If read times out, read saves any partial input read into -the specified variable name. -If timeout is 0, read returns immediately, without trying to +If read times out, read saves any partial input read into +the specified variable name. +If timeout is 0, read returns immediately, without trying to read and data. The exit status is 0 if input is available on the specified file descriptor, non-zero otherwise. The exit status is greater than 128 if the timeout is exceeded. -

+

+
+
-u fd
+

Read input from file descriptor fd. +

+
-
-u fd -
Read input from file descriptor fd. -
-

+

+
readarray
+
+
+
readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd]
+    [-C callback] [-c quantum] [array]
+
-
readarray -
-
 
readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd]
-    [-C callback] [-c quantum] [array]
-

+

Read lines from the standard input into the indexed array variable array, +or from file descriptor fd +if the -u option is supplied. +

+

A synonym for mapfile. +

+
+
source
+
+
+
source filename
+
-Read lines from the standard input into the indexed array variable array, -or from file descriptor fd -if the `-u' option is supplied. -

+

A synonym for . (see Bourne Shell Builtins). +

+
+
type
+
+
+
type [-afptP] [name …]
+
-A synonym for mapfile. -

- -

source -
-
 
source filename
-

- -A synonym for . (see section 4.1 Bourne Shell Builtins). -

- -

type -
-
 
type [-afptP] [name ...]
-

- -For each name, indicate how it would be interpreted if used as a +

For each name, indicate how it would be interpreted if used as a command name. -

- -If the `-t' option is used, type prints a single word -which is one of `alias', `function', `builtin', -`file' or `keyword', -if name is an alias, shell function, shell builtin, +

+

If the -t option is used, type prints a single word +which is one of ‘alias’, ‘function’, ‘builtin’, +‘file’ or ‘keyword’, +if name is an alias, shell function, shell builtin, disk file, or shell reserved word, respectively. -If the name is not found, then nothing is printed, and -type returns a failure status. -

- -If the `-p' option is used, type either returns the name -of the disk file that would be executed, or nothing if `-t' -would not return `file'. -

- -The `-P' option forces a path search for each name, even if -`-t' would not return `file'. -

- -If a command is hashed, `-p' and `-P' print the hashed value, -which is not necessarily the file that appears first in $PATH. -

- -If the `-a' option is used, type returns all of the places -that contain an executable named file. -This includes aliases and functions, if and only if the `-p' option +If the name is not found, then nothing is printed, and +type returns a failure status. +

+

If the -p option is used, type either returns the name +of the disk file that would be executed, or nothing if -t +would not return ‘file’. +

+

The -P option forces a path search for each name, even if +-t would not return ‘file’. +

+

If a command is hashed, -p and -P print the hashed value, +which is not necessarily the file that appears first in $PATH. +

+

If the -a option is used, type returns all of the places +that contain an executable named file. +This includes aliases and functions, if and only if the -p option is not also used. -

- -If the `-f' option is used, type does not attempt to find -shell functions, as with the command builtin. -

- -The return status is zero if all of the names are found, non-zero +

+

If the -f option is used, type does not attempt to find +shell functions, as with the command builtin. +

+

The return status is zero if all of the names are found, non-zero if any are not found. -

+

+
+
typeset
+
+
+
typeset [-afFgrxilnrtux] [-p] [name[=value] …]
+
-
typeset -
-
 
typeset [-afFgrxilnrtux] [-p] [name[=value] ...]
-

- -The typeset command is supplied for compatibility with the Korn +

The typeset command is supplied for compatibility with the Korn shell. -It is a synonym for the declare builtin command. -

+It is a synonym for the declare builtin command. +

+
+
ulimit
+
+
+
ulimit [-HSabcdefiklmnpqrstuvxPT] [limit]
+
-
ulimit -
-
 
ulimit [-HSabcdefiklmnpqrstuvxPT] [limit]
-

- -ulimit provides control over the resources available to processes +

ulimit provides control over the resources available to processes started by the shell, on systems that allow such control. If an option is given, it is interpreted as follows: -

- -

-
-S -
Change and report the soft limit associated with a resource. -

- -

-H -
Change and report the hard limit associated with a resource. -

- -

-a -
All current limits are reported. -

- -

-b -
The maximum socket buffer size. -

- -

-c -
The maximum size of core files created. -

- -

-d -
The maximum size of a process's data segment. -

- -

-e -
The maximum scheduling priority ("nice"). -

- -

-f -
The maximum size of files written by the shell and its children. -

- -

-i -
The maximum number of pending signals. -

- -

-k -
The maximum number of kqueues that may be allocated. -

- -

-l -
The maximum size that may be locked into memory. -

- -

-m -
The maximum resident set size (many systems do not honor this limit). -

- -

-n -
The maximum number of open file descriptors (most systems do not +

+
+
-S
+

Change and report the soft limit associated with a resource. +

+
+
-H
+

Change and report the hard limit associated with a resource. +

+
+
-a
+

All current limits are reported. +

+
+
-b
+

The maximum socket buffer size. +

+
+
-c
+

The maximum size of core files created. +

+
+
-d
+

The maximum size of a process’s data segment. +

+
+
-e
+

The maximum scheduling priority ("nice"). +

+
+
-f
+

The maximum size of files written by the shell and its children. +

+
+
-i
+

The maximum number of pending signals. +

+
+
-k
+

The maximum number of kqueues that may be allocated. +

+
+
-l
+

The maximum size that may be locked into memory. +

+
+
-m
+

The maximum resident set size (many systems do not honor this limit). +

+
+
-n
+

The maximum number of open file descriptors (most systems do not allow this value to be set). -

- -

-p -
The pipe buffer size. -

- -

-q -
The maximum number of bytes in POSIX message queues. -

- -

-r -
The maximum real-time scheduling priority. -

- -

-s -
The maximum stack size. -

- -

-t -
The maximum amount of cpu time in seconds. -

- -

-u -
The maximum number of processes available to a single user. -

- -

-v -
The maximum amount of virtual memory available to the shell, and, on +

+
+
-p
+

The pipe buffer size. +

+
+
-q
+

The maximum number of bytes in POSIX message queues. +

+
+
-r
+

The maximum real-time scheduling priority. +

+
+
-s
+

The maximum stack size. +

+
+
-t
+

The maximum amount of cpu time in seconds. +

+
+
-u
+

The maximum number of processes available to a single user. +

+
+
-v
+

The maximum amount of virtual memory available to the shell, and, on some systems, to its children. -

+

+
+
-x
+

The maximum number of file locks. +

+
+
-P
+

The maximum number of pseudoterminals. +

+
+
-T
+

The maximum number of threads. +

+
-
-x -
The maximum number of file locks. -

- -

-P -
The maximum number of pseudoterminals. -

- -

-T -
The maximum number of threads. -
-

- -If limit is given, and the `-a' option is not used, -limit is the new value of the specified resource. -The special limit values hard, soft, and -unlimited stand for the current hard limit, the current soft limit, +

If limit is given, and the -a option is not used, +limit is the new value of the specified resource. +The special limit values hard, soft, and +unlimited stand for the current hard limit, the current soft limit, and no limit, respectively. A hard limit cannot be increased by a non-root user once it is set; a soft limit may be increased up to the value of the hard limit. Otherwise, the current value of the soft limit for the specified resource -is printed, unless the `-H' option is supplied. -When setting new limits, if neither `-H' nor `-S' is supplied, +is printed, unless the -H option is supplied. +When setting new limits, if neither -H nor -S is supplied, both the hard and soft limits are set. -If no option is given, then `-f' is assumed. Values are in 1024-byte -increments, except for `-t', which is in seconds; `-p', +If no option is given, then -f is assumed. Values are in 1024-byte +increments, except for -t, which is in seconds; -p, which is in units of 512-byte blocks; -`-P', -`-T', -`-b', -`-k', -`-n' and `-u', which are unscaled values; -and, when in POSIX Mode (see section 6.11 Bash POSIX Mode), -`-c' and `-f', which are in 512-byte increments. -

- -The return status is zero unless an invalid option or argument is supplied, +-P, +-T, +-b, +-k, +-n and -u, which are unscaled values; +and, when in POSIX Mode (see Bash POSIX Mode), +-c and -f, which are in 512-byte increments. +

+

The return status is zero unless an invalid option or argument is supplied, or an error occurs while setting a new limit. -

+

+
+
unalias
+
+
+
unalias [-a] [name … ]
+
-
unalias -
-
 
unalias [-a] [name ... ]
-

- -Remove each name from the list of aliases. If `-a' is +

Remove each name from the list of aliases. If -a is supplied, all aliases are removed. -Aliases are described in 6.6 Aliases. -

-

+Aliases are described in Aliases. +

+
- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

4.3 Modifying Shell Behavior

- +
+ + + +

4.3 Modifying Shell Behavior

-
- - -
4.3.1 The Set Builtin  Change the values of shell attributes and - positional parameters.
4.3.2 The Shopt Builtin  Modify shell optional behavior.
-

+ + + + - -


- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

4.3.1 The Set Builtin

- -

+


+ + + +

4.3.1 The Set Builtin

-This builtin is so complicated that it deserves its own section. set +

This builtin is so complicated that it deserves its own section. set allows you to change the values of shell options and set the positional 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 -
-
 
set [--abefhkmnptuvxBCEHPT] [-o option-name] [argument ...]
-set [+abefhkmnptuvxBCEHPT] [+o option-name] [argument ...]
-

- -If no options or arguments are supplied, set displays the names +

If no options or arguments are supplied, set displays the names and values of all shell variables and functions, sorted according to the current locale, in a format that may be reused as input for setting or resetting the currently-set variables. Read-only variables cannot be reset. -In POSIX mode, only shell variables are listed. -

- -When options are supplied, they set or unset shell attributes. +In POSIX mode, only shell variables are listed. +

+

When options are supplied, they set or unset shell attributes. Options, if specified, have the following meanings: -

- -

-
-a -
Each variable or function that is created or modified is given the +

+
+
-a
+

Each variable or function that is created or modified is given the export attribute and marked for export to the environment of subsequent commands. -

- -

-b -
Cause the status of terminated background jobs to be reported +

+
+
-b
+

Cause the status of terminated background jobs to be reported immediately, rather than before printing the next primary prompt. -

- -

-e -
Exit immediately if -a pipeline (see section 3.2.2 Pipelines), which may consist of a single simple command -(see section 3.2.1 Simple Commands), -a list (see section 3.2.3 Lists of Commands), -or a compound command (see section 3.2.4 Compound Commands) +

+
+
-e
+

Exit immediately if +a pipeline (see Pipelines), which may consist of a single simple command +(see Simple Commands), +a list (see Lists), +or a compound command (see Compound Commands) returns a non-zero status. The shell does not exit if the command that fails is part of the -command list immediately following a while or until keyword, -part of the test in an if statement, -part of any command executed in a && or || list except -the command following the final && or ||, +command list immediately following a while or until keyword, +part of the test in an if statement, +part of any command executed in a && or || list except +the command following the final && or ||, any command in a pipeline but the last, -or if the command's return status is being inverted with !. +or if the command’s return status is being inverted with !. If a compound command other than a subshell returns a non-zero status because a command failed -while `-e' was being ignored, the shell does not exit. -A trap on ERR, if set, is executed before the shell exits. -

- -This option applies to the shell environment and each subshell environment -separately (see section 3.7.3 Command Execution Environment), and may cause +while -e was being ignored, the shell does not exit. +A trap on ERR, if set, is executed before the shell exits. +

+

This option applies to the shell environment and each subshell environment +separately (see Command Execution Environment), and may cause subshells to exit before executing all the commands in the subshell. -

- -If a compound command or shell function executes in a context where -`-e' is being ignored, +

+

If a compound command or shell function executes in a context where +-e is being ignored, none of the commands executed within the compound command or function body -will be affected by the `-e' setting, even if `-e' is set +will be affected by the -e setting, even if -e is set and a command returns a failure status. -If a compound command or shell function sets `-e' while executing in -a context where `-e' is ignored, that setting will not have any +If a compound command or shell function sets -e while executing in +a context where -e is ignored, that setting will not have any effect until the compound command or the command containing the function call completes. -

- -

-f -
Disable filename expansion (globbing). -

- -

-h -
Locate and remember (hash) commands as they are looked up for execution. +

+
+
-f
+

Disable filename expansion (globbing). +

+
+
-h
+

Locate and remember (hash) commands as they are looked up for execution. This option is enabled by default. -

- -

-k -
All arguments in the form of assignment statements are placed +

+
+
-k
+

All arguments in the form of assignment statements are placed in the environment for a command, not just those that precede the command name. -

- -

-m -
Job control is enabled (see section 7. Job Control). +

+
+
-m
+

Job control is enabled (see Job Control). All processes run in a separate process group. When a background job completes, the shell prints a line containing its exit status. -

- -

-n -
Read commands but do not execute them. +

+
+
-n
+

Read commands but do not execute them. This may be used to check a script for syntax errors. This option is ignored by interactive shells. -

- -

-o option-name -

- -Set the option corresponding to option-name: -

- -

-
allexport -
Same as -a. -

- -

braceexpand -
Same as -B. -

- -

emacs -
Use an emacs-style line editing interface (see section 8. Command Line Editing). -This also affects the editing interface used for read -e. -

- -

errexit -
Same as -e. -

- -

errtrace -
Same as -E. -

- -

functrace -
Same as -T. -

- -

hashall -
Same as -h. -

- -

histexpand -
Same as -H. -

- -

history -
Enable command history, as described in 9.1 Bash History Facilities. +

+
+
-o option-name
+
+

Set the option corresponding to option-name: +

+
+
allexport
+

Same as -a. +

+
+
braceexpand
+

Same as -B. +

+
+
emacs
+

Use an emacs-style line editing interface (see Command Line Editing). +This also affects the editing interface used for read -e. +

+
+
errexit
+

Same as -e. +

+
+
errtrace
+

Same as -E. +

+
+
functrace
+

Same as -T. +

+
+
hashall
+

Same as -h. +

+
+
histexpand
+

Same as -H. +

+
+
history
+

Enable command history, as described in Bash History Facilities. This option is on by default in interactive shells. -

- -

ignoreeof -
An interactive shell will not exit upon reading EOF. -

- -

keyword -
Same as -k. -

- -

monitor -
Same as -m. -

- -

noclobber -
Same as -C. -

- -

noexec -
Same as -n. -

- -

noglob -
Same as -f. -

- -

nolog -
Currently ignored. -

- -

notify -
Same as -b. -

- -

nounset -
Same as -u. -

- -

onecmd -
Same as -t. -

- -

physical -
Same as -P. -

- -

pipefail -
If set, the return value of a pipeline is the value of the last +

+
+
ignoreeof
+

An interactive shell will not exit upon reading EOF. +

+
+
keyword
+

Same as -k. +

+
+
monitor
+

Same as -m. +

+
+
noclobber
+

Same as -C. +

+
+
noexec
+

Same as -n. +

+
+
noglob
+

Same as -f. +

+
+
nolog
+

Currently ignored. +

+
+
notify
+

Same as -b. +

+
+
nounset
+

Same as -u. +

+
+
onecmd
+

Same as -t. +

+
+
physical
+

Same as -P. +

+
+
pipefail
+

If set, the return value of a pipeline is the value of the last (rightmost) command to exit with a non-zero status, or zero if all commands in the pipeline exit successfully. This option is disabled by default. -

- -

posix -
Change the behavior of Bash where the default operation differs -from the POSIX standard to match the standard -(see section 6.11 Bash POSIX Mode). +

+
+
posix
+

Change the behavior of Bash where the default operation differs +from the POSIX standard to match the standard +(see Bash POSIX Mode). This is intended to make Bash behave as a strict superset of that standard. -

+

+
+
privileged
+

Same as -p. +

+
+
verbose
+

Same as -v. +

+
+
vi
+

Use a vi-style line editing interface. +This also affects the editing interface used for read -e. +

+
+
xtrace
+

Same as -x. +

+
-
privileged -
Same as -p. -

- -

verbose -
Same as -v. -

- -

vi -
Use a vi-style line editing interface. -This also affects the editing interface used for read -e. -

- -

xtrace -
Same as -x. -
-

- -

-p -
Turn on privileged mode. -In this mode, the $BASH_ENV and $ENV files are not +
+
-p
+

Turn on privileged mode. +In this mode, the $BASH_ENV and $ENV files are not processed, shell functions are not inherited from the environment, -and the SHELLOPTS, BASHOPTS, CDPATH and GLOBIGNORE +and the SHELLOPTS, BASHOPTS, CDPATH and GLOBIGNORE variables, if they appear in the environment, are ignored. If the shell is started with the effective user (group) id not equal to the -real user (group) id, and the `-p' option is not supplied, these actions +real user (group) id, and the -p option is not supplied, these actions are taken and the effective user id is set to the real user id. -If the `-p' option is supplied at startup, the effective user id is +If the -p option is supplied at startup, the effective user id is not reset. Turning this option off causes the effective user and group ids to be set to the real user and group ids. -

- -

-t -
Exit after reading and executing one command. -

- -

-u -
Treat unset variables and parameters other than the special parameters -`@' or `*' as an error when performing parameter expansion. +

+
+
-t
+

Exit after reading and executing one command. +

+
+
-u
+

Treat unset variables and parameters other than the special parameters +‘@’ or ‘*’ as an error when performing parameter expansion. An error message will be written to the standard error, and a non-interactive shell will exit. -

- -

-v -
Print shell input lines as they are read. -

- -

-x -
Print a trace of simple commands, for commands, case -commands, select commands, and arithmetic for commands +

+
+
-v
+

Print shell input lines as they are read. +

+
+
-x
+

Print a trace of simple commands, for commands, case +commands, select commands, and arithmetic for commands and their arguments or associated word lists after they are -expanded and before they are executed. The value of the PS4 +expanded and before they are executed. The value of the PS4 variable is expanded and the resultant value is printed before the command and its expanded arguments. -

- -

-B -
The shell will perform brace expansion (see section 3.5.1 Brace Expansion). +

+
+
-B
+

The shell will perform brace expansion (see Brace Expansion). This option is on by default. -

- -

-C -
Prevent output redirection using `>', `>&', and `<>' +

+
+
-C
+

Prevent output redirection using ‘>’, ‘>&’, and ‘<>’ from overwriting existing files. -

- -

-E -
If set, any trap on ERR is inherited by shell functions, command +

+
+
-E
+

If set, any trap on ERR is inherited by shell functions, command substitutions, and commands executed in a subshell environment. -The ERR trap is normally not inherited in such cases. -

- -

-H -
Enable `!' style history substitution (see section 9.3 History Expansion). +The ERR trap is normally not inherited in such cases. +

+
+
-H
+

Enable ‘!’ style history substitution (see History Interaction). This option is on by default for interactive shells. -

- -

-P -
If set, do not resolve symbolic links when performing commands such as -cd which change the current directory. The physical directory +

+
+
-P
+

If set, do not resolve symbolic links when performing commands such as +cd which change the current directory. The physical directory is used instead. By default, Bash follows the logical chain of directories when performing commands which change the current directory. -

- -For example, if `/usr/sys' is a symbolic link to `/usr/local/sys' +

+

For example, if /usr/sys is a symbolic link to /usr/local/sys then: -
 
$ cd /usr/sys; echo $PWD
+

+
$ cd /usr/sys; echo $PWD
 /usr/sys
 $ cd ..; pwd
 /usr
-

+ -If set -P is on, then: -
 
$ cd /usr/sys; echo $PWD
+

If set -P is on, then: +

+
$ cd /usr/sys; echo $PWD
 /usr/local/sys
 $ cd ..; pwd
 /usr/local
-

+ -

-T -
If set, any trap on DEBUG and RETURN are inherited by +
+
-T
+

If set, any trap on DEBUG and RETURN are inherited by shell functions, command substitutions, and commands executed in a subshell environment. -The DEBUG and RETURN traps are normally not inherited +The DEBUG and RETURN traps are normally not inherited in such cases. -

- -

-- -
If no arguments follow this option, then the positional parameters are +

+
+
--
+

If no arguments follow this option, then the positional parameters are unset. Otherwise, the positional parameters are set to the -arguments, even if some of them begin with a `-'. -

- -

- -
Signal the end of options, cause all remaining arguments -to be assigned to the positional parameters. The `-x' -and `-v' options are turned off. +arguments, even if some of them begin with a ‘-’. +

+
+
-
+

Signal the end of options, cause all remaining arguments +to be assigned to the positional parameters. The -x +and -v options are turned off. If there are no arguments, the positional parameters remain unchanged. -

-

+

+
-Using `+' rather than `-' causes these options to be +

Using ‘+’ rather than ‘-’ causes these options to be turned off. The options can also be used upon invocation of the -shell. The current set of options may be found in $-. -

+shell. The current set of options may be found in $-. +

+

The remaining N arguments are positional parameters and are +assigned, in order, to $1, $2, … $N. +The special parameter # is set to N. +

+

The return status is always zero unless an invalid option is supplied. +

+
-The remaining N arguments are positional parameters and are -assigned, in order, to $1, $2, ... $N. -The special parameter # is set to N. -

+


+ + + +

4.3.2 The Shopt Builtin

-The return status is always zero unless an invalid option is supplied. -
-

+

This builtin allows you to change additional shell optional behavior. +

+
+
shopt
+
+
+
shopt [-pqsu] [-o] [optname …]
+
- -
- - - - - - - - - - - -
[ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
-

4.3.2 The Shopt Builtin

- -

- -This builtin allows you to change additional shell optional behavior. -

- -

- -
shopt -
-
 
shopt [-pqsu] [-o] [optname ...]
-

- -Toggle the values of settings controlling optional shell behavior. +

Toggle the values of settings controlling optional shell behavior. The settings can be either those listed below, or, if the -`-o' option is used, those available with the `-o' -option to the set builtin command (see section 4.3.1 The Set Builtin). -With no options, or with the `-p' option, a list of all settable +-o option is used, those available with the -o +option to the set builtin command (see The Set Builtin). +With no options, or with the -p option, a list of all settable options is displayed, with an indication of whether or not each is set. -The `-p' option causes output to be displayed in a form that +The -p option causes output to be displayed in a form that may be reused as input. Other options have the following meanings: -

- -

-
-s -
Enable (set) each optname. -

- -

-u -
Disable (unset) each optname. -

- -

-q -
Suppresses normal output; the return status -indicates whether the optname is set or unset. -If multiple optname arguments are given with `-q', -the return status is zero if all optnames are enabled; +

+
+
-s
+

Enable (set) each optname. +

+
+
-u
+

Disable (unset) each optname. +

+
+
-q
+

Suppresses normal output; the return status +indicates whether the optname is set or unset. +If multiple optname arguments are given with -q, +the return status is zero if all optnames are enabled; non-zero otherwise. -

+

+
+
-o
+

Restricts the values of +optname to be those defined for the -o option to the +set builtin (see The Set Builtin). +

+
-
-o -
Restricts the values of -optname to be those defined for the `-o' option to the -set builtin (see section 4.3.1 The Set Builtin). -
-

- -If either `-s' or `-u' -is used with no optname arguments, shopt shows only +

If either -s or -u +is used with no optname arguments, shopt shows only those options which are set or unset, respectively. -

- -Unless otherwise noted, the shopt options are disabled (off) +

+

Unless otherwise noted, the shopt options are disabled (off) by default. -

- -The return status when listing options is zero if all optnames +

+

The return status when listing options is zero if all optnames are enabled, non-zero otherwise. When setting or unsetting options, -the return status is zero unless an optname is not a valid shell +the return status is zero unless an optname is not a valid shell option. -

- -The list of shopt options is: -

- -
autocd -
If set, a command name that is the name of a directory is executed as if -it were the argument to the cd command. +

+

The list of shopt options is: +

+
autocd
+

If set, a command name that is the name of a directory is executed as if +it were the argument to the cd command. This option is only used by interactive shells. -

- -

cdable_vars -
If this is set, an argument to the cd builtin command that +

+
+
cdable_vars
+

If this is set, an argument to the cd builtin command that is not a directory is assumed to be the name of a variable whose value is the directory to change to. -

- -

cdspell -
If set, minor errors in the spelling of a directory component in a -cd command will be corrected. +

+
+
cdspell
+

If set, minor errors in the spelling of a directory component in a +cd command will be corrected. The errors checked for are transposed characters, a missing character, and a character too many. If a correction is found, the corrected path is printed, and the command proceeds. This option is only used by interactive shells. -

- -

checkhash -
If this is set, Bash checks that a command found in the hash +

+
+
checkhash
+

If this is set, Bash checks that a command found in the hash table exists before trying to execute it. If a hashed command no longer exists, a normal path search is performed. -

- -

checkjobs -
If set, Bash lists the status of any stopped and running jobs before +

+
+
checkjobs
+

If set, Bash lists the status of any stopped and running jobs before exiting an interactive shell. If any jobs are running, this causes the exit to be deferred until a second exit is attempted without an -intervening command (see section 7. Job Control). +intervening command (see Job Control). The shell always postpones exiting if any jobs are stopped. -

- -

checkwinsize -
If set, Bash checks the window size after each command +

+
+
checkwinsize
+

If set, Bash checks the window size after each command and, if necessary, updates the values of -LINES and COLUMNS. -

- -

cmdhist -
If set, Bash +LINES and COLUMNS. +

+
+
cmdhist
+

If set, Bash attempts to save all lines of a multiple-line command in the same history entry. This allows easy re-editing of multi-line commands. -

- -

compat31 -
If set, Bash +

+
+
compat31
+

If set, Bash changes its behavior to that of version 3.1 with respect to quoted -arguments to the conditional command's `=~' operator +arguments to the conditional command’s ‘=~’ operator and with respect to locale-specific -string comparison when using the [[ -conditional command's `<' and `>' operators. +string comparison when using the [[ +conditional command’s ‘<’ and ‘>’ operators. Bash versions prior to bash-4.1 use ASCII collation and strcmp(3); -bash-4.1 and later use the current locale's collation sequence and strcoll(3). -

- -

compat32 -
If set, Bash +bash-4.1 and later use the current locale’s collation sequence and strcoll(3). +

+
+
compat32
+

If set, Bash changes its behavior to that of version 3.2 with respect to locale-specific -string comparison when using the [[ -conditional command's `<' and `>' operators (see previous item). -

- -

compat40 -
If set, Bash +string comparison when using the [[ +conditional command’s ‘<’ and ‘>’ operators (see previous item) +and the effect of interrupting a command list. +Bash versions 3.2 and earlier continue with the next command in the list +after one terminates due to an interrupt. +

+
+
compat40
+

If set, Bash changes its behavior to that of version 4.0 with respect to locale-specific -string comparison when using the [[ -conditional command's `<' and `>' operators (see description -of compat31) +string comparison when using the [[ +conditional command’s ‘<’ and ‘>’ operators (see description +of compat31) and the effect of interrupting a command list. Bash versions 4.0 and later interrupt the list as if the shell received the interrupt; previous versions continue with the next command in the list. -

- -

compat41 -
If set, Bash, when in POSIX mode, treats a single quote in a double-quoted +

+
+
compat41
+

If set, Bash, when in POSIX mode, treats a single quote in a double-quoted parameter expansion as a special character. The single quotes must match (an even number) and the characters between the single quotes are considered -quoted. This is the behavior of POSIX mode through version 4.1. +quoted. This is the behavior of POSIX mode through version 4.1. The default Bash behavior remains as in previous versions. -

- -

compat42 -
If set, Bash +

+
+
compat42
+

If set, Bash does not process the replacement string in the pattern substitution word expansion using quote removal. -

- -

compat43 -
If set, Bash +

+
+
compat43
+

If set, Bash does not print a warning message if an attempt is made to use a quoted compound -array assignment as an argument to declare, +array assignment as an argument to declare, makes word expansion errors non-fatal errors that cause the current command to fail (the default behavior is to make them fatal errors that cause the shell to exit), and does not reset the -loop state when a shell function is executed (this allows break or -continue in a shell function to affect loops in the caller's context). -

- -

complete_fullquote -
If set, Bash +loop state when a shell function is executed (this allows break or +continue in a shell function to affect loops in the caller’s context). +

+
+
complete_fullquote
+

If set, Bash quotes all shell metacharacters in filenames and directory names when performing completion. If not set, Bash @@ -6431,989 +5965,944 @@ This is active only when bash is using backslashes to quote completed filenames. This variable is set by default, which is the default Bash behavior in versions through 4.2. -

- -

direxpand -
If set, Bash +

+
+
direxpand
+

If set, Bash replaces directory names with the results of word expansion when performing filename completion. This changes the contents of the readline editing buffer. If not set, Bash attempts to preserve what the user typed. -

- -

dirspell -
If set, Bash +

+
+
dirspell
+

If set, Bash attempts spelling correction on directory names during word completion if the directory name initially supplied does not exist. -

- -

dotglob -
If set, Bash includes filenames beginning with a `.' in +

+
+
dotglob
+

If set, Bash includes filenames beginning with a ‘.’ in the results of filename expansion. -

- -

execfail -
If this is set, a non-interactive shell will not exit if -it cannot execute the file specified as an argument to the exec -builtin command. An interactive shell does not exit if exec +

+
+
execfail
+

If this is set, a non-interactive shell will not exit if +it cannot execute the file specified as an argument to the exec +builtin command. An interactive shell does not exit if exec fails. -

- -

expand_aliases -
If set, aliases are expanded as described below under Aliases, -6.6 Aliases. +

+
+
expand_aliases
+

If set, aliases are expanded as described below under Aliases, +Aliases. This option is enabled by default for interactive shells. -

- -

extdebug -
If set, behavior intended for use by debuggers is enabled: -

- -

    -
  1. -The `-F' option to the declare builtin (see section 4.2 Bash Builtin Commands) +

    +
+
extdebug
+

If set, behavior intended for use by debuggers is enabled: +

+
    +
  1. The -F option to the declare builtin (see Bash Builtins) displays the source file name and line number corresponding to each function name supplied as an argument. -

    -

  2. -If the command run by the DEBUG trap returns a non-zero value, the +
  3. If the command run by the DEBUG trap returns a non-zero value, the next command is skipped and not executed. -

    -

  4. -If the command run by the DEBUG trap returns a value of 2, and the +
  5. If the command run by the DEBUG trap returns a value of 2, and the shell is executing in a subroutine (a shell function or a shell script -executed by the . or source builtins), the shell simulates -a call to return. -

    +executed by the . or source builtins), the shell simulates +a call to return. -

  6. -BASH_ARGC and BASH_ARGV are updated as described in their -descriptions (see section 5.2 Bash Variables). -

    +

  7. BASH_ARGC and BASH_ARGV are updated as described in their +descriptions (see Bash Variables). -
  8. -Function tracing is enabled: command substitution, shell functions, and -subshells invoked with ( command ) inherit the -DEBUG and RETURN traps. -

    +

  9. Function tracing is enabled: command substitution, shell functions, and +subshells invoked with ( command ) inherit the +DEBUG and RETURN traps. -
  10. -Error tracing is enabled: command substitution, shell functions, and -subshells invoked with ( command ) inherit the -ERR trap. -
-

+

  • Error tracing is enabled: command substitution, shell functions, and +subshells invoked with ( command ) inherit the +ERR trap. +
  • -
    extglob -
    If set, the extended pattern matching features described above -(see section 3.5.8.1 Pattern Matching) are enabled. -

    - -

    extquote -
    If set, $'string' and $"string" quoting is -performed within ${parameter} expansions +
    +
    extglob
    +

    If set, the extended pattern matching features described above +(see Pattern Matching) are enabled. +

    +
    +
    extquote
    +

    If set, $'string' and $"string" quoting is +performed within ${parameter} expansions enclosed in double quotes. This option is enabled by default. -

    - -

    failglob -
    If set, patterns which fail to match filenames during filename expansion +

    +
    +
    failglob
    +

    If set, patterns which fail to match filenames during filename expansion result in an expansion error. -

    - -

    force_fignore -
    If set, the suffixes specified by the FIGNORE shell variable +

    +
    +
    force_fignore
    +

    If set, the suffixes specified by the FIGNORE shell variable cause words to be ignored when performing word completion even if the ignored words are the only possible completions. -See section 5.2 Bash Variables, for a description of FIGNORE. +See Bash Variables, for a description of FIGNORE. This option is enabled by default. -

    - -

    globasciiranges -
    If set, range expressions used in pattern matching bracket expressions -(see section 3.5.8.1 Pattern Matching) +

    +
    +
    globasciiranges
    +

    If set, range expressions used in pattern matching bracket expressions +(see Pattern Matching) behave as if in the traditional C locale when performing -comparisons. That is, the current locale's collating sequence +comparisons. That is, the current locale’s collating sequence is not taken into account, so -`b' will not collate between `A' and `B', +‘b’ will not collate between ‘A’ and ‘B’, and upper-case and lower-case ASCII characters will collate together. -

    - -

    globstar -
    If set, the pattern `**' used in a filename expansion context will +

    +
    +
    globstar
    +

    If set, the pattern ‘**’ used in a filename expansion context will match all files and zero or more directories and subdirectories. -If the pattern is followed by a `/', only directories and +If the pattern is followed by a ‘/’, only directories and subdirectories match. -

    - -

    gnu_errfmt -
    If set, shell error messages are written in the standard GNU error +

    +
    +
    gnu_errfmt
    +

    If set, shell error messages are written in the standard GNU error message format. -

    - -

    histappend -
    If set, the history list is appended to the file named by the value -of the HISTFILE +

    +
    +
    histappend
    +

    If set, the history list is appended to the file named by the value +of the HISTFILE variable when the shell exits, rather than overwriting the file. -

    - -

    histreedit -
    If set, and Readline +

    +
    +
    histreedit
    +

    If set, and Readline is being used, a user is given the opportunity to re-edit a failed history substitution. -

    - -

    histverify -
    If set, and Readline +

    +
    +
    histverify
    +

    If set, and Readline is being used, the results of history substitution are not immediately passed to the shell parser. Instead, the resulting line is loaded into the Readline editing buffer, allowing further modification. -

    - -

    hostcomplete -
    If set, and Readline is being used, Bash will attempt to perform -hostname completion when a word containing a `@' is being -completed (see section 8.4.6 Letting Readline Type For You). This option is enabled +

    +
    +
    hostcomplete
    +

    If set, and Readline is being used, Bash will attempt to perform +hostname completion when a word containing a ‘@’ is being +completed (see Commands For Completion). This option is enabled by default. -

    - -

    huponexit -
    If set, Bash will send SIGHUP to all jobs when an interactive -login shell exits (see section 3.7.6 Signals). -

    - -

    interactive_comments -
    Allow a word beginning with `#' +

    +
    +
    huponexit
    +

    If set, Bash will send SIGHUP to all jobs when an interactive +login shell exits (see Signals). +

    +
    +
    inherit_errexit
    +

    If set, command substitution inherits the value of the errexit option, +instead of unsetting it in the subshell environment. +This option is enabled when POSIX mode is enabled. +

    +
    +
    interactive_comments
    +

    Allow a word beginning with ‘#’ to cause that word and all remaining characters on that line to be ignored in an interactive shell. This option is enabled by default. -

    - -

    lastpipe -
    If set, and job control is not active, the shell runs the last command of +

    +
    +
    lastpipe
    +

    If set, and job control is not active, the shell runs the last command of a pipeline not executed in the background in the current shell environment. -

    - -

    lithist -
    If enabled, and the cmdhist +

    +
    +
    lithist
    +

    If enabled, and the cmdhist option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible. -

    - -

    login_shell -
    The shell sets this option if it is started as a login shell -(see section 6.1 Invoking Bash). +

    +
    +
    login_shell
    +

    The shell sets this option if it is started as a login shell +(see Invoking Bash). The value may not be changed. -

    - -

    mailwarn -
    If set, and a file that Bash is checking for mail has been +

    +
    +
    mailwarn
    +

    If set, and a file that Bash is checking for mail has been accessed since the last time it was checked, the message -"The mail in mailfile has been read" is displayed. -

    - -

    no_empty_cmd_completion -
    If set, and Readline is being used, Bash will not attempt to search -the PATH for possible completions when completion is attempted +"The mail in mailfile has been read" is displayed. +

    +
    +
    no_empty_cmd_completion
    +

    If set, and Readline is being used, Bash will not attempt to search +the PATH for possible completions when completion is attempted on an empty line. -

    - -

    nocaseglob -
    If set, Bash matches filenames in a case-insensitive fashion when +

    +
    +
    nocaseglob
    +

    If set, Bash matches filenames in a case-insensitive fashion when performing filename expansion. -

    - -

    nocasematch -
    If set, Bash matches patterns in a case-insensitive fashion when -performing matching while executing case or [[ +

    +
    +
    nocasematch
    +

    If set, Bash matches patterns in a case-insensitive fashion when +performing matching while executing case or [[ conditional commands, when performing pattern substitution word expansions, or when filtering possible completions as part of programmable completion. -

    - -

    nullglob -
    If set, Bash allows filename patterns which match no +

    +
    +
    nullglob
    +

    If set, Bash allows filename patterns which match no files to expand to a null string, rather than themselves. -

    - -

    progcomp -
    If set, the programmable completion facilities -(see section 8.6 Programmable Completion) are enabled. +

    +
    +
    progcomp
    +

    If set, the programmable completion facilities +(see Programmable Completion) are enabled. This option is enabled by default. -

    - -

    promptvars -
    If set, prompt strings undergo +

    +
    +
    promptvars
    +

    If set, prompt strings undergo parameter expansion, command substitution, arithmetic expansion, and quote removal after being expanded -as described below (see section 6.9 Controlling the Prompt). +as described below (see Controlling the Prompt). This option is enabled by default. -

    - -

    restricted_shell -
    The shell sets this option if it is started in restricted mode -(see section 6.10 The Restricted Shell). +

    +
    +
    restricted_shell
    +

    The shell sets this option if it is started in restricted mode +(see The Restricted Shell). The value may not be changed. This is not reset when the startup files are executed, allowing the startup files to discover whether or not a shell is restricted. -

    - -

    shift_verbose -
    If this is set, the shift +

    +
    +
    shift_verbose
    +

    If this is set, the shift builtin prints an error message when the shift count exceeds the number of positional parameters. -

    - -

    sourcepath -
    If set, the source builtin uses the value of PATH +

    +
    +
    sourcepath
    +

    If set, the source builtin uses the value of PATH to find the directory containing the file supplied as an argument. This option is enabled by default. -

    - -

    xpg_echo -
    If set, the echo builtin expands backslash-escape sequences +

    +
    +
    xpg_echo
    +

    If set, the echo builtin expands backslash-escape sequences by default. -

    +

    +
    +
    -
    -

    - -The return status when listing options is zero if all optnames +

    The return status when listing options is zero if all optnames are enabled, non-zero otherwise. When setting or unsetting options, the return status is zero unless an -optname is not a valid shell option. -

    -

    +optname is not a valid shell option. +

    +
    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    4.4 Special Builtins

    - -

    +


    + + + +

    4.4 Special Builtins

    + -For historical reasons, the POSIX standard has classified -several builtin commands as special. -When Bash is executing in POSIX mode, the special builtins +

    For historical reasons, the POSIX standard has classified +several builtin commands as special. +When Bash is executing in POSIX mode, the special builtins differ from other builtin commands in three respects: -

    +

    +
      +
    1. Special builtins are found before shell functions during command lookup. -
        -
      1. -Special builtins are found before shell functions during command lookup. -

        +

      2. If a special builtin returns an error status, a non-interactive shell exits. -
      3. -If a special builtin returns an error status, a non-interactive shell exits. -

        - -

      4. -Assignment statements preceding the command stay in effect in the shell +
      5. Assignment statements preceding the command stay in effect in the shell environment after the command completes. -
      -

      +

    -When Bash is not executing in POSIX mode, these builtins behave no +

    When Bash is not executing in POSIX mode, these builtins behave no differently than the rest of the Bash builtin commands. -The Bash POSIX mode is described in 6.11 Bash POSIX Mode. -

    +The Bash POSIX mode is described in Bash POSIX Mode. +

    +

    These are the POSIX special builtins: +

    +
    break : . continue eval exec exit export readonly return set
    +shift trap unset
    +
    -These are the POSIX special builtins: -
     
    break : . continue eval exec exit export readonly return set
    -shift trap unset
    -

    +


    + +
    +

    +Next: , Previous: , Up: Top   [Contents][Index]

    +
    + +

    5 Shell Variables

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    5. Shell Variables

    - -

    + + + + -

    - - -
    5.1 Bourne Shell Variables  Variables which Bash uses in the same way - as the Bourne Shell.
    5.2 Bash Variables  List of variables that exist in Bash.
    -

    - -This chapter describes the shell variables that Bash uses. +

    This chapter describes the shell variables that Bash uses. Bash automatically assigns default values to a number of variables. -

    +

    +
    + + + +

    5.1 Bourne Shell Variables

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    5.1 Bourne Shell Variables

    - -

    - -Bash uses certain shell variables in the same way as the Bourne shell. +

    Bash uses certain shell variables in the same way as the Bourne shell. In some cases, Bash assigns a default value to the variable. -

    - -

    - - -
    CDPATH -
    -A colon-separated list of directories used as a search path for -the cd builtin command. -

    - - -

    HOME -
    -The current user's home directory; the default for the cd builtin +

    +
    +
    CDPATH + +
    +

    A colon-separated list of directories used as a search path for +the cd builtin command. +

    +
    +
    HOME + +
    +

    The current user’s home directory; the default for the cd builtin command. The value of this variable is also used by tilde expansion -(see section 3.5.2 Tilde Expansion). -

    - - -

    IFS -
    -A list of characters that separate fields; used when the shell splits +(see Tilde Expansion). +

    +
    +
    IFS + +
    +

    A list of characters that separate fields; used when the shell splits words as part of expansion. -

    - - -

    MAIL -
    -If this parameter is set to a filename or directory name -and the MAILPATH variable +

    +
    +
    MAIL + +
    +

    If this parameter is set to a filename or directory name +and the MAILPATH variable is not set, Bash informs the user of the arrival of mail in the specified file or Maildir-format directory. -

    - - -

    MAILPATH -
    -A colon-separated list of filenames which the shell periodically checks +

    +
    +
    MAILPATH + +
    +

    A colon-separated list of filenames which the shell periodically checks for new mail. Each list entry can specify the message that is printed when new mail arrives in the mail file by separating the filename from the message with -a `?'. -When used in the text of the message, $_ expands to the name of +a ‘?’. +When used in the text of the message, $_ expands to the name of the current mail file. -

    - - -

    OPTARG -
    -The value of the last option argument processed by the getopts builtin. -

    - - -

    OPTIND -
    -The index of the last option argument processed by the getopts builtin. -

    - - -

    PATH -
    -A colon-separated list of directories in which the shell looks for +

    +
    +
    OPTARG + +
    +

    The value of the last option argument processed by the getopts builtin. +

    +
    +
    OPTIND + +
    +

    The index of the last option argument processed by the getopts builtin. +

    +
    +
    PATH + +
    +

    A colon-separated list of directories in which the shell looks for commands. -A zero-length (null) directory name in the value of PATH indicates the +A zero-length (null) directory name in the value of PATH indicates the current directory. A null directory name may appear as two adjacent colons, or as an initial or trailing colon. -

    +

    +
    +
    PS1 + +
    +

    The primary prompt string. The default value is ‘\s-\v\$ ’. +See Controlling the Prompt, for the complete list of escape +sequences that are expanded before PS1 is displayed. +

    +
    +
    PS2 + +
    +

    The secondary prompt string. The default value is ‘> ’. +

    +
    +
    - -
    PS1 -
    -The primary prompt string. The default value is `\s-\v\$ '. -See section 6.9 Controlling the Prompt, for the complete list of escape -sequences that are expanded before PS1 is displayed. -

    +


    + + + +

    5.2 Bash Variables

    - -
    PS2 -
    -The secondary prompt string. The default value is `> '. -

    - -

    -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    5.2 Bash Variables

    - -

    - -These variables are set or used by Bash, but other shells +

    These variables are set or used by Bash, but other shells do not normally treat them specially. -

    - -A few variables used by Bash are described in different chapters: +

    +

    A few variables used by Bash are described in different chapters: variables for controlling the job control facilities -(see section 7.3 Job Control Variables). -

    - -

    - - -
    BASH -
    -The full pathname used to execute the current instance of Bash. -

    - - -

    BASHOPTS -
    -A colon-separated list of enabled shell options. Each word in -the list is a valid argument for the `-s' option to the -shopt builtin command (see section 4.3.2 The Shopt Builtin). -The options appearing in BASHOPTS are those reported -as `on' by `shopt'. +(see Job Control Variables). +

    +
    +
    BASH + +
    +

    The full pathname used to execute the current instance of Bash. +

    +
    +
    BASHOPTS + +
    +

    A colon-separated list of enabled shell options. Each word in +the list is a valid argument for the -s option to the +shopt builtin command (see The Shopt Builtin). +The options appearing in BASHOPTS are those reported +as ‘on’ by ‘shopt’. If this variable is in the environment when Bash starts up, each shell option in the list will be enabled before reading any startup files. This variable is readonly. -

    - - -

    BASHPID -
    -Expands to the process ID of the current Bash process. -This differs from $$ under certain circumstances, such as subshells +

    +
    +
    BASHPID + +
    +

    Expands to the process ID of the current Bash process. +This differs from $$ under certain circumstances, such as subshells that do not require Bash to be re-initialized. -

    - - -

    BASH_ALIASES -
    -An associative array variable whose members correspond to the internal -list of aliases as maintained by the alias builtin. -(see section 4.1 Bourne Shell Builtins). -Elements added to this array appear in the alias list; unsetting array -elements cause aliases to be removed from the alias list. -

    - - -

    BASH_ARGC -
    -An array variable whose values are the number of parameters in each +

    +
    +
    BASH_ALIASES + +
    +

    An associative array variable whose members correspond to the internal +list of aliases as maintained by the alias builtin. +(see Bourne Shell Builtins). +Elements added to this array appear in the alias list; however, +unsetting array elements currently does not cause aliases to be removed +from the alias list. +If BASH_ALIASES +is unset, it loses its special properties, even if it is +subsequently reset. +

    +
    +
    BASH_ARGC + +
    +

    An array variable whose values are the number of parameters in each frame of the current bash execution call stack. The number of parameters to the current subroutine (shell function or script executed -with . or source) is at the top of the stack. When a +with . or source) is at the top of the stack. When a subroutine is executed, the number of parameters passed is pushed onto -BASH_ARGC. -The shell sets BASH_ARGC only when in extended debugging mode -(see 4.3.2 The Shopt Builtin -for a description of the extdebug option to the shopt +BASH_ARGC. +The shell sets BASH_ARGC only when in extended debugging mode +(see The Shopt Builtin +for a description of the extdebug option to the shopt builtin). -

    - - -

    BASH_ARGV -
    -An array variable containing all of the parameters in the current bash +

    +
    +
    BASH_ARGV + +
    +

    An array variable containing all of the parameters in the current bash execution call stack. The final parameter of the last subroutine call is at the top of the stack; the first parameter of the initial call is at the bottom. When a subroutine is executed, the parameters supplied -are pushed onto BASH_ARGV. -The shell sets BASH_ARGV only when in extended debugging mode -(see 4.3.2 The Shopt Builtin -for a description of the extdebug option to the shopt +are pushed onto BASH_ARGV. +The shell sets BASH_ARGV only when in extended debugging mode +(see The Shopt Builtin +for a description of the extdebug option to the shopt builtin). -

    - - -

    BASH_CMDS -
    -An associative array variable whose members correspond to the internal -hash table of commands as maintained by the hash builtin -(see section 4.1 Bourne Shell Builtins). -Elements added to this array appear in the hash table; unsetting array -elements cause commands to be removed from the hash table. -

    - - -

    BASH_COMMAND -
    -The command currently being executed or about to be executed, unless the +

    +
    +
    BASH_CMDS + +
    +

    An associative array variable whose members correspond to the internal +hash table of commands as maintained by the hash builtin +(see Bourne Shell Builtins). +Elements added to this array appear in the hash table; however, +unsetting array elements currently does not cause command names to be removed +from the hash table. +If BASH_CMDS +is unset, it loses its special properties, even if it is +subsequently reset. +

    +
    +
    BASH_COMMAND + +
    +

    The command currently being executed or about to be executed, unless the shell is executing a command as the result of a trap, in which case it is the command executing at the time of the trap. -

    - - -

    BASH_COMPAT -
    -The value is used to set the shell's compatibility level. -See section 4.3.2 The Shopt Builtin, for a description of the various compatibility +

    +
    +
    BASH_COMPAT + +
    +

    The value is used to set the shell’s compatibility level. +See The Shopt Builtin, for a description of the various compatibility levels and their effects. The value may be a decimal number (e.g., 4.2) or an integer (e.g., 42) corresponding to the desired compatibility level. -If BASH_COMPAT is unset or set to the empty string, the compatibility +If BASH_COMPAT is unset or set to the empty string, the compatibility level is set to the default for the current version. -If BASH_COMPAT is set to a value that is not one of the valid +If BASH_COMPAT is set to a value that is not one of the valid compatibility levels, the shell prints an error message and sets the compatibility level to the default for the current version. The valid compatibility levels correspond to the compatibility options -accepted by the shopt builtin described above (for example, -compat42 means that 4.2 and 42 are valid values). +accepted by the shopt builtin described above (for example, +compat42 means that 4.2 and 42 are valid values). The current version is also a valid value. -

    - - -

    BASH_ENV -
    -If this variable is set when Bash is invoked to execute a shell +

    +
    +
    BASH_ENV + +
    +

    If this variable is set when Bash is invoked to execute a shell script, its value is expanded and used as the name of a startup file -to read before executing the script. See section 6.2 Bash Startup Files. -

    - - -

    BASH_EXECUTION_STRING -
    -The command argument to the `-c' invocation option. -

    - - -

    BASH_LINENO -
    -An array variable whose members are the line numbers in source files -where each corresponding member of FUNCNAME was invoked. -${BASH_LINENO[$i]} is the line number in the source file -(${BASH_SOURCE[$i+1]}) where -${FUNCNAME[$i]} was called (or ${BASH_LINENO[$i-1]} if +to read before executing the script. See Bash Startup Files. +

    +
    +
    BASH_EXECUTION_STRING + +
    +

    The command argument to the -c invocation option. +

    +
    +
    BASH_LINENO + +
    +

    An array variable whose members are the line numbers in source files +where each corresponding member of FUNCNAME was invoked. +${BASH_LINENO[$i]} is the line number in the source file +(${BASH_SOURCE[$i+1]}) where +${FUNCNAME[$i]} was called (or ${BASH_LINENO[$i-1]} if referenced within another shell function). -Use LINENO to obtain the current line number. -

    - - -

    BASH_LOADABLES_PATH -
    -A colon-separated list of directories in which the shell looks for +Use LINENO to obtain the current line number. +

    +
    +
    BASH_LOADABLES_PATH + +
    +

    A colon-separated list of directories in which the shell looks for dynamically loadable builtins specified by the -enable command. -

    - - -

    BASH_REMATCH -
    -An array variable whose members are assigned by the `=~' binary -operator to the [[ conditional command -(see section 3.2.4.2 Conditional Constructs). +enable command. +

    +
    +
    BASH_REMATCH + +
    +

    An array variable whose members are assigned by the ‘=~’ binary +operator to the [[ conditional command +(see Conditional Constructs). The element with index 0 is the portion of the string matching the entire regular expression. -The element with index n is the portion of the -string matching the nth parenthesized subexpression. +The element with index n is the portion of the +string matching the nth parenthesized subexpression. This variable is read-only. -

    - - -

    BASH_SOURCE -
    -An array variable whose members are the source filenames where the -corresponding shell function names in the FUNCNAME array +

    +
    +
    BASH_SOURCE + +
    +

    An array variable whose members are the source filenames where the +corresponding shell function names in the FUNCNAME array variable are defined. -The shell function ${FUNCNAME[$i]} is defined in the file -${BASH_SOURCE[$i]} and called from ${BASH_SOURCE[$i+1]} -

    - - -

    BASH_SUBSHELL -
    -Incremented by one within each subshell or subshell environment when +The shell function ${FUNCNAME[$i]} is defined in the file +${BASH_SOURCE[$i]} and called from ${BASH_SOURCE[$i+1]} +

    +
    +
    BASH_SUBSHELL + +
    +

    Incremented by one within each subshell or subshell environment when the shell begins executing in that environment. The initial value is 0. -

    - - -

    BASH_VERSINFO -
    -A readonly array variable (see section 6.7 Arrays) +

    +
    +
    BASH_VERSINFO + +
    +

    A readonly array variable (see Arrays) whose members hold version information for this instance of Bash. The values assigned to the array members are as follows: -

    +

    +
    +
    BASH_VERSINFO[0]
    +

    The major version number (the release). +

    +
    +
    BASH_VERSINFO[1]
    +

    The minor version number (the version). +

    +
    +
    BASH_VERSINFO[2]
    +

    The patch level. +

    +
    +
    BASH_VERSINFO[3]
    +

    The build version. +

    +
    +
    BASH_VERSINFO[4]
    +

    The release status (e.g., beta1). +

    +
    +
    BASH_VERSINFO[5]
    +

    The value of MACHTYPE. +

    +
    -
    - -
    BASH_VERSINFO[0] -
    The major version number (the release). -

    - -

    BASH_VERSINFO[1] -
    The minor version number (the version). -

    - -

    BASH_VERSINFO[2] -
    The patch level. -

    - -

    BASH_VERSINFO[3] -
    The build version. -

    - -

    BASH_VERSINFO[4] -
    The release status (e.g., beta1). -

    - -

    BASH_VERSINFO[5] -
    The value of MACHTYPE. -
    -

    - - -

    BASH_VERSION -
    -The version number of the current instance of Bash. -

    - - -

    BASH_XTRACEFD -
    -If set to an integer corresponding to a valid file descriptor, Bash -will write the trace output generated when `set -x' +
    +
    BASH_VERSION + +
    +

    The version number of the current instance of Bash. +

    +
    +
    BASH_XTRACEFD + +
    +

    If set to an integer corresponding to a valid file descriptor, Bash +will write the trace output generated when ‘set -x’ is enabled to that file descriptor. This allows tracing output to be separated from diagnostic and error messages. -The file descriptor is closed when BASH_XTRACEFD is unset or assigned +The file descriptor is closed when BASH_XTRACEFD is unset or assigned a new value. -Unsetting BASH_XTRACEFD or assigning it the empty string causes the +Unsetting BASH_XTRACEFD or assigning it the empty string causes the trace output to be sent to the standard error. -Note that setting BASH_XTRACEFD to 2 (the standard error file +Note that setting BASH_XTRACEFD to 2 (the standard error file descriptor) and then unsetting it will result in the standard error being closed. -

    - - -

    CHILD_MAX -
    -Set the number of exited child status values for the shell to remember. -Bash will not allow this value to be decreased below a POSIX-mandated +

    +
    +
    CHILD_MAX + +
    +

    Set the number of exited child status values for the shell to remember. +Bash will not allow this value to be decreased below a POSIX-mandated minimum, and there is a maximum value (currently 8192) that this may not exceed. The minimum value is system-dependent. -

    - - -

    COLUMNS -
    -Used by the select command to determine the terminal width +

    +
    +
    COLUMNS + +
    +

    Used by the select command to determine the terminal width when printing selection lists. -Automatically set if the checkwinsize option is enabled -(see section 4.3.2 The Shopt Builtin), or in an interactive shell upon receipt of a -SIGWINCH. -

    - - -

    COMP_CWORD -
    -An index into ${COMP_WORDS} of the word containing the current +Automatically set if the checkwinsize option is enabled +(see The Shopt Builtin), or in an interactive shell upon receipt of a +SIGWINCH. +

    +
    +
    COMP_CWORD + +
    +

    An index into ${COMP_WORDS} of the word containing the current cursor position. This variable is available only in shell functions invoked by the -programmable completion facilities (see section 8.6 Programmable Completion). -

    - - -

    COMP_LINE -
    -The current command line. +programmable completion facilities (see Programmable Completion). +

    +
    +
    COMP_LINE + +
    +

    The current command line. This variable is available only in shell functions and external commands invoked by the -programmable completion facilities (see section 8.6 Programmable Completion). -

    - - -

    COMP_POINT -
    -The index of the current cursor position relative to the beginning of +programmable completion facilities (see Programmable Completion). +

    +
    +
    COMP_POINT + +
    +

    The index of the current cursor position relative to the beginning of the current command. If the current cursor position is at the end of the current command, -the value of this variable is equal to ${#COMP_LINE}. +the value of this variable is equal to ${#COMP_LINE}. This variable is available only in shell functions and external commands invoked by the -programmable completion facilities (see section 8.6 Programmable Completion). -

    - - -

    COMP_TYPE -
    -Set to an integer value corresponding to the type of completion attempted +programmable completion facilities (see Programmable Completion). +

    +
    +
    COMP_TYPE + +
    +

    Set to an integer value corresponding to the type of completion attempted that caused a completion function to be called: -TAB, for normal completion, -`?', for listing completions after successive tabs, -`!', for listing alternatives on partial word completion, -`@', to list completions if the word is not unmodified, +TAB, for normal completion, +‘?’, for listing completions after successive tabs, +‘!’, for listing alternatives on partial word completion, +‘@’, to list completions if the word is not unmodified, or -`%', for menu completion. +‘%’, for menu completion. This variable is available only in shell functions and external commands invoked by the -programmable completion facilities (see section 8.6 Programmable Completion). -

    - - -

    COMP_KEY -
    -The key (or final key of a key sequence) used to invoke the current +programmable completion facilities (see Programmable Completion). +

    +
    +
    COMP_KEY + +
    +

    The key (or final key of a key sequence) used to invoke the current completion function. -

    - - -

    COMP_WORDBREAKS -
    -The set of characters that the Readline library treats as word +

    +
    +
    COMP_WORDBREAKS + +
    +

    The set of characters that the Readline library treats as word separators when performing word completion. -If COMP_WORDBREAKS is unset, it loses its special properties, +If COMP_WORDBREAKS is unset, it loses its special properties, even if it is subsequently reset. -

    - - -

    COMP_WORDS -
    -An array variable consisting of the individual +

    +
    +
    COMP_WORDS + +
    +

    An array variable consisting of the individual words in the current command line. The line is split into words as Readline would split it, using -COMP_WORDBREAKS as described above. +COMP_WORDBREAKS as described above. This variable is available only in shell functions invoked by the -programmable completion facilities (see section 8.6 Programmable Completion). -

    - - -

    COMPREPLY -
    -An array variable from which Bash reads the possible completions +programmable completion facilities (see Programmable Completion). +

    +
    +
    COMPREPLY + +
    +

    An array variable from which Bash reads the possible completions generated by a shell function invoked by the programmable completion -facility (see section 8.6 Programmable Completion). +facility (see Programmable Completion). Each array element contains one possible completion. -

    - - -

    COPROC -
    -An array variable created to hold the file descriptors -for output from and input to an unnamed coprocess (see section 3.2.5 Coprocesses). -

    - - -

    DIRSTACK -
    -An array variable containing the current contents of the directory stack. +

    +
    +
    COPROC + +
    +

    An array variable created to hold the file descriptors +for output from and input to an unnamed coprocess (see Coprocesses). +

    +
    +
    DIRSTACK + +
    +

    An array variable containing the current contents of the directory stack. Directories appear in the stack in the order they are displayed by the -dirs builtin. +dirs builtin. Assigning to members of this array variable may be used to modify -directories already in the stack, but the pushd and popd +directories already in the stack, but the pushd and popd builtins must be used to add and remove directories. Assignment to this variable will not change the current directory. -If DIRSTACK is unset, it loses its special properties, even if +If DIRSTACK is unset, it loses its special properties, even if it is subsequently reset. -

    - - -

    EMACS -
    -If Bash finds this variable in the environment when the shell -starts with value `t', it assumes that the shell is running in an +

    +
    +
    EMACS + +
    +

    If Bash finds this variable in the environment when the shell +starts with value ‘t’, it assumes that the shell is running in an Emacs shell buffer and disables line editing. -

    - - -

    ENV -
    -Similar to BASH_ENV; used when the shell is invoked in -POSIX Mode (see section 6.11 Bash POSIX Mode). -

    - - -

    EUID -
    -The numeric effective user id of the current user. This variable +

    +
    +
    ENV + +
    +

    Similar to BASH_ENV; used when the shell is invoked in +POSIX Mode (see Bash POSIX Mode). +

    +
    +
    EUID + +
    +

    The numeric effective user id of the current user. This variable is readonly. -

    - - -

    EXECIGNORE -
    -A colon-separated list of extended glob patterns (see section 3.5.8.1 Pattern Matching) +

    +
    +
    EXECIGNORE + +
    +

    A colon-separated list of shell patterns (see Pattern Matching) defining the list of filenames to be ignored by command search. Files whose full pathnames match one of these patterns are not considered executable files for the purposes of completion and command execution. -This does not affect the behavior of the [, test, and [[ +This does not affect the behavior of the [, test, and [[ commands. Use this variable to ignore shared library files that have the executable bit set, but are not executable files. -

    - - -

    FCEDIT -
    -The editor used as a default by the `-e' option to the fc +The pattern matching honors the setting of the extglob shell +option. +

    +
    +
    FCEDIT + +
    +

    The editor used as a default by the -e option to the fc builtin command. -

    - - -

    FIGNORE -
    -A colon-separated list of suffixes to ignore when performing +

    +
    +
    FIGNORE + +
    +

    A colon-separated list of suffixes to ignore when performing filename completion. A filename whose suffix matches one of the entries in -FIGNORE +FIGNORE is excluded from the list of matched filenames. A sample -value is `.o:~' -

    - - -

    FUNCNAME -
    -An array variable containing the names of all shell functions +value is ‘.o:~’ +

    +
    +
    FUNCNAME + +
    +

    An array variable containing the names of all shell functions currently in the execution call stack. The element with index 0 is the name of any currently-executing shell function. The bottom-most element (the one with the highest index) -is "main". +is "main". This variable exists only when a shell function is executing. -Assignments to FUNCNAME have no effect. -If FUNCNAME is unset, it loses its special properties, even if +Assignments to FUNCNAME have no effect. +If FUNCNAME is unset, it loses its special properties, even if it is subsequently reset. -

    - -This variable can be used with BASH_LINENO and BASH_SOURCE. -Each element of FUNCNAME has corresponding elements in -BASH_LINENO and BASH_SOURCE to describe the call stack. -For instance, ${FUNCNAME[$i]} was called from the file -${BASH_SOURCE[$i+1]} at line number ${BASH_LINENO[$i]}. -The caller builtin displays the current call stack using this +

    +

    This variable can be used with BASH_LINENO and BASH_SOURCE. +Each element of FUNCNAME has corresponding elements in +BASH_LINENO and BASH_SOURCE to describe the call stack. +For instance, ${FUNCNAME[$i]} was called from the file +${BASH_SOURCE[$i+1]} at line number ${BASH_LINENO[$i]}. +The caller builtin displays the current call stack using this information. -

    - - -

    FUNCNEST -
    -If set to a numeric value greater than 0, defines a maximum function +

    +
    +
    FUNCNEST + +
    +

    If set to a numeric value greater than 0, defines a maximum function nesting level. Function invocations that exceed this nesting level will cause the current command to abort. -

    - - -

    GLOBIGNORE -
    -A colon-separated list of patterns defining the set of filenames to +

    +
    +
    GLOBIGNORE + +
    +

    A colon-separated list of patterns defining the set of filenames to be ignored by filename expansion. If a filename matched by a filename expansion pattern also matches one -of the patterns in GLOBIGNORE, it is removed from the list +of the patterns in GLOBIGNORE, it is removed from the list of matches. -

    - - -

    GROUPS -
    -An array variable containing the list of groups of which the current +The pattern matching honors the setting of the extglob shell +option. +

    +
    +
    GROUPS + +
    +

    An array variable containing the list of groups of which the current user is a member. -Assignments to GROUPS have no effect. -If GROUPS is unset, it loses its special properties, even if it is +Assignments to GROUPS have no effect. +If GROUPS is unset, it loses its special properties, even if it is subsequently reset. -

    - - -

    histchars -
    -Up to three characters which control history expansion, quick -substitution, and tokenization (see section 9.3 History Expansion). +

    +
    +
    histchars + +
    +

    Up to three characters which control history expansion, quick +substitution, and tokenization (see History Interaction). The first character is the -history expansion character, that is, the character which signifies the -start of a history expansion, normally `!'. The second character is the -character which signifies `quick substitution' when seen as the first -character on a line, normally `^'. The optional third character is the +history expansion character, that is, the character which signifies the +start of a history expansion, normally ‘!’. The second character is the +character which signifies ‘quick substitution’ when seen as the first +character on a line, normally ‘^’. The optional third character is the character which indicates that the remainder of the line is a comment when -found as the first character of a word, usually `#'. The history +found as the first character of a word, usually ‘#’. The history comment character causes history substitution to be skipped for the remaining words on the line. It does not necessarily cause the shell parser to treat the rest of the line as a comment. -

    - - -

    HISTCMD -
    -The history number, or index in the history list, of the current -command. If HISTCMD is unset, it loses its special properties, +

    +
    +
    HISTCMD + +
    +

    The history number, or index in the history list, of the current +command. If HISTCMD is unset, it loses its special properties, even if it is subsequently reset. -

    - - -

    HISTCONTROL -
    -A colon-separated list of values controlling how commands are saved on +

    +
    +
    HISTCONTROL + +
    +

    A colon-separated list of values controlling how commands are saved on the history list. -If the list of values includes `ignorespace', lines which begin +If the list of values includes ‘ignorespace’, lines which begin with a space character are not saved in the history list. -A value of `ignoredups' causes lines which match the previous +A value of ‘ignoredups’ causes lines which match the previous history entry to not be saved. -A value of `ignoreboth' is shorthand for -`ignorespace' and `ignoredups'. -A value of `erasedups' causes all previous lines matching the +A value of ‘ignoreboth’ is shorthand for +‘ignorespace’ and ‘ignoredups’. +A value of ‘erasedups’ causes all previous lines matching the current line to be removed from the history list before that line is saved. Any value not in the above list is ignored. -If HISTCONTROL is unset, or does not include a valid value, +If HISTCONTROL is unset, or does not include a valid value, all lines read by the shell parser are saved on the history list, -subject to the value of HISTIGNORE. +subject to the value of HISTIGNORE. The second and subsequent lines of a multi-line compound command are not tested, and are added to the history regardless of the value of -HISTCONTROL. -

    - - -

    HISTFILE -
    -The name of the file to which the command history is saved. The -default value is `~/.bash_history'. -

    - - -

    HISTFILESIZE -
    -The maximum number of lines contained in the history file. +HISTCONTROL. +

    +
    +
    HISTFILE + +
    +

    The name of the file to which the command history is saved. The +default value is ~/.bash_history. +

    +
    +
    HISTFILESIZE + +
    +

    The maximum number of lines contained in the history file. When this variable is assigned a value, the history file is truncated, if necessary, to contain no more than that number of lines by removing the oldest entries. @@ -7421,1385 +6910,1249 @@ The history file is also truncated to this size after writing it when a shell exits. If the value is 0, the history file is truncated to zero size. Non-numeric values and numeric values less than zero inhibit truncation. -The shell sets the default value to the value of HISTSIZE +The shell sets the default value to the value of HISTSIZE after reading any startup files. -

    - - -

    HISTIGNORE -
    -A colon-separated list of patterns used to decide which command +

    +
    +
    HISTIGNORE + +
    +

    A colon-separated list of patterns used to decide which command lines should be saved on the history list. Each pattern is anchored at the beginning of the line and must match the complete -line (no implicit `*' is appended). Each pattern is tested -against the line after the checks specified by HISTCONTROL +line (no implicit ‘*’ is appended). Each pattern is tested +against the line after the checks specified by HISTCONTROL are applied. In addition to the normal shell pattern matching -characters, `&' matches the previous history line. `&' +characters, ‘&’ matches the previous history line. ‘&’ may be escaped using a backslash; the backslash is removed before attempting a match. The second and subsequent lines of a multi-line compound command are not tested, and are added to the history regardless of the value of -HISTIGNORE. -

    - -HISTIGNORE subsumes the function of HISTCONTROL. A -pattern of `&' is identical to ignoredups, and a -pattern of `[ ]*' is identical to ignorespace. +HISTIGNORE. +The pattern matching honors the setting of the extglob shell +option. +

    +

    HISTIGNORE subsumes the function of HISTCONTROL. A +pattern of ‘&’ is identical to ignoredups, and a +pattern of ‘[ ]*’ is identical to ignorespace. Combining these two patterns, separating them with a colon, -provides the functionality of ignoreboth. -

    - - -

    HISTSIZE -
    -The maximum number of commands to remember on the history list. +provides the functionality of ignoreboth. +

    +
    +
    HISTSIZE + +
    +

    The maximum number of commands to remember on the history list. If the value is 0, commands are not saved in the history list. Numeric values less than zero result in every command being saved on the history list (there is no limit). The shell sets the default value to 500 after reading any startup files. -

    - - -

    HISTTIMEFORMAT -
    -If this variable is set and not null, its value is used as a format string -for strftime to print the time stamp associated with each history -entry displayed by the history builtin. +

    +
    +
    HISTTIMEFORMAT + +
    +

    If this variable is set and not null, its value is used as a format string +for strftime to print the time stamp associated with each history +entry displayed by the history builtin. If this variable is set, time stamps are written to the history file so they may be preserved across shell sessions. This uses the history comment character to distinguish timestamps from other history lines. -

    - - -

    HOSTFILE -
    -Contains the name of a file in the same format as `/etc/hosts' that +

    +
    +
    HOSTFILE + +
    +

    Contains the name of a file in the same format as /etc/hosts that should be read when the shell needs to complete a hostname. The list of possible hostname completions may be changed while the shell is running; the next time hostname completion is attempted after the value is changed, Bash adds the contents of the new file to the existing list. -If HOSTFILE is set, but has no value, or does not name a readable file, +If HOSTFILE is set, but has no value, or does not name a readable file, Bash attempts to read -`/etc/hosts' to obtain the list of possible hostname completions. -When HOSTFILE is unset, the hostname list is cleared. -

    - - -

    HOSTNAME -
    -The name of the current host. -

    - - -

    HOSTTYPE -
    -A string describing the machine Bash is running on. -

    - - -

    IGNOREEOF -
    -Controls the action of the shell on receipt of an EOF character +/etc/hosts to obtain the list of possible hostname completions. +When HOSTFILE is unset, the hostname list is cleared. +

    +
    +
    HOSTNAME + +
    +

    The name of the current host. +

    +
    +
    HOSTTYPE + +
    +

    A string describing the machine Bash is running on. +

    +
    +
    IGNOREEOF + +
    +

    Controls the action of the shell on receipt of an EOF character as the sole input. If set, the value denotes the number -of consecutive EOF characters that can be read as the +of consecutive EOF characters that can be read as the first character on an input line before the shell will exit. If the variable exists but does not have a numeric value (or has no value) then the default is 10. -If the variable does not exist, then EOF signifies the end of +If the variable does not exist, then EOF signifies the end of input to the shell. This is only in effect for interactive shells. -

    - - -

    INPUTRC -
    -The name of the Readline initialization file, overriding the default -of `~/.inputrc'. -

    - - -

    LANG -
    -Used to determine the locale category for any category not specifically -selected with a variable starting with LC_. -

    - - -

    LC_ALL -
    -This variable overrides the value of LANG and any other -LC_ variable specifying a locale category. -

    - - -

    LC_COLLATE -
    -This variable determines the collation order used when sorting the +

    +
    +
    INPUTRC + +
    +

    The name of the Readline initialization file, overriding the default +of ~/.inputrc. +

    +
    +
    LANG + +
    +

    Used to determine the locale category for any category not specifically +selected with a variable starting with LC_. +

    +
    +
    LC_ALL + +
    +

    This variable overrides the value of LANG and any other +LC_ variable specifying a locale category. +

    +
    +
    LC_COLLATE + +
    +

    This variable determines the collation order used when sorting the results of filename expansion, and determines the behavior of range expressions, equivalence classes, and collating sequences within filename expansion and pattern matching -(see section 3.5.8 Filename Expansion). -

    - - -

    LC_CTYPE -
    -This variable determines the interpretation of characters and the +(see Filename Expansion). +

    +
    +
    LC_CTYPE + +
    +

    This variable determines the interpretation of characters and the behavior of character classes within filename expansion and pattern -matching (see section 3.5.8 Filename Expansion). -

    - - -

    LC_MESSAGES -
    -This variable determines the locale used to translate double-quoted -strings preceded by a `$' (see section 3.1.2.5 Locale-Specific Translation). -

    - - -

    LC_NUMERIC -
    -This variable determines the locale category used for number formatting. -

    - - -

    LC_TIME -
    -This variable determines the locale category used for data and time +matching (see Filename Expansion). +

    +
    +
    LC_MESSAGES + +
    +

    This variable determines the locale used to translate double-quoted +strings preceded by a ‘$’ (see Locale Translation). +

    +
    +
    LC_NUMERIC + +
    +

    This variable determines the locale category used for number formatting. +

    +
    +
    LC_TIME + +
    +

    This variable determines the locale category used for data and time formatting. -

    - - -

    LINENO -
    -The line number in the script or shell function currently executing. -

    - - -

    LINES -
    -Used by the select command to determine the column length +

    +
    +
    LINENO + +
    +

    The line number in the script or shell function currently executing. +

    +
    +
    LINES + +
    +

    Used by the select command to determine the column length for printing selection lists. -Automatically set if the checkwinsize option is enabled -(see section 4.3.2 The Shopt Builtin), or in an interactive shell upon receipt of a -SIGWINCH. -

    - - -

    MACHTYPE -
    -A string that fully describes the system type on which Bash -is executing, in the standard GNU cpu-company-system format. -

    - - -

    MAILCHECK -
    -How often (in seconds) that the shell should check for mail in the -files specified in the MAILPATH or MAIL variables. +Automatically set if the checkwinsize option is enabled +(see The Shopt Builtin), or in an interactive shell upon receipt of a +SIGWINCH. +

    +
    +
    MACHTYPE + +
    +

    A string that fully describes the system type on which Bash +is executing, in the standard GNU cpu-company-system format. +

    +
    +
    MAILCHECK + +
    +

    How often (in seconds) that the shell should check for mail in the +files specified in the MAILPATH or MAIL variables. The default is 60 seconds. When it is time to check for mail, the shell does so before displaying the primary prompt. If this variable is unset, or set to a value that is not a number greater than or equal to zero, the shell disables mail checking. -

    - - -

    MAPFILE -
    -An array variable created to hold the text read by the -mapfile builtin when no variable name is supplied. -

    - - -

    OLDPWD -
    -The previous working directory as set by the cd builtin. -

    - - -

    OPTERR -
    -If set to the value 1, Bash displays error messages -generated by the getopts builtin command. -

    - - -

    OSTYPE -
    -A string describing the operating system Bash is running on. -

    - - -

    PIPESTATUS -
    -An array variable (see section 6.7 Arrays) +

    +
    +
    MAPFILE + +
    +

    An array variable created to hold the text read by the +mapfile builtin when no variable name is supplied. +

    +
    +
    OLDPWD + +
    +

    The previous working directory as set by the cd builtin. +

    +
    +
    OPTERR + +
    +

    If set to the value 1, Bash displays error messages +generated by the getopts builtin command. +

    +
    +
    OSTYPE + +
    +

    A string describing the operating system Bash is running on. +

    +
    +
    PIPESTATUS + +
    +

    An array variable (see Arrays) containing a list of exit status values from the processes in the most-recently-executed foreground pipeline (which may contain only a single command). -

    - - -

    POSIXLY_CORRECT -
    -If this variable is in the environment when Bash starts, the shell -enters POSIX mode (see section 6.11 Bash POSIX Mode) before reading the -startup files, as if the `--posix' invocation option had been supplied. -If it is set while the shell is running, Bash enables POSIX mode, +

    +
    +
    POSIXLY_CORRECT + +
    +

    If this variable is in the environment when Bash starts, the shell +enters POSIX mode (see Bash POSIX Mode) before reading the +startup files, as if the --posix invocation option had been supplied. +If it is set while the shell is running, Bash enables POSIX mode, as if the command -
     
    set -o posix
    -
    had been executed. -

    - - -

    PPID -
    -The process ID of the shell's parent process. This variable +

    +
    set -o posix
    +
    +

    had been executed. +

    +
    +
    PPID + +
    +

    The process ID of the shell’s parent process. This variable is readonly. -

    - - -

    PROMPT_COMMAND -
    -If set, the value is interpreted as a command to execute -before the printing of each primary prompt ($PS1). -

    - - -

    PROMPT_DIRTRIM -
    -If set to a number greater than zero, the value is used as the number of -trailing directory components to retain when expanding the \w and -\W prompt string escapes (see section 6.9 Controlling the Prompt). +

    +
    +
    PROMPT_COMMAND + +
    +

    If set, the value is interpreted as a command to execute +before the printing of each primary prompt ($PS1). +

    +
    +
    PROMPT_DIRTRIM + +
    +

    If set to a number greater than zero, the value is used as the number of +trailing directory components to retain when expanding the \w and +\W prompt string escapes (see Controlling the Prompt). Characters removed are replaced with an ellipsis. -

    - - -

    PS3 -
    -The value of this variable is used as the prompt for the -select command. If this variable is not set, the -select command prompts with `#? ' -

    - - -

    PS4 -
    -The value is the prompt printed before the command line is echoed -when the `-x' option is set (see section 4.3.1 The Set Builtin). -The first character of PS4 is replicated multiple times, as +

    +
    +
    PS0 + +
    +

    The value of this parameter is expanded like PS1 +and displayed by interactive shells after reading a command +and before the command is executed. +

    +
    +
    PS3 + +
    +

    The value of this variable is used as the prompt for the +select command. If this variable is not set, the +select command prompts with ‘#? ’ +

    +
    +
    PS4 + +
    +

    The value is the prompt printed before the command line is echoed +when the -x option is set (see The Set Builtin). +The first character of PS4 is replicated multiple times, as necessary, to indicate multiple levels of indirection. -The default is `+ '. -

    - - -

    PWD -
    -The current working directory as set by the cd builtin. -

    - - -

    RANDOM -
    -Each time this parameter is referenced, a random integer +The default is ‘+ ’. +

    +
    +
    PWD + +
    +

    The current working directory as set by the cd builtin. +

    +
    +
    RANDOM + +
    +

    Each time this parameter is referenced, a random integer between 0 and 32767 is generated. Assigning a value to this variable seeds the random number generator. -

    - - -

    READLINE_LINE -
    -The contents of the Readline line buffer, for use -with `bind -x' (see section 4.2 Bash Builtin Commands). -

    - - -

    READLINE_POINT -
    -The position of the insertion point in the Readline line buffer, for use -with `bind -x' (see section 4.2 Bash Builtin Commands). -

    - - -

    REPLY -
    -The default variable for the read builtin. -

    - - -

    SECONDS -
    -This variable expands to the number of seconds since the +

    +
    +
    READLINE_LINE + +
    +

    The contents of the Readline line buffer, for use +with ‘bind -x’ (see Bash Builtins). +

    +
    +
    READLINE_POINT + +
    +

    The position of the insertion point in the Readline line buffer, for use +with ‘bind -x’ (see Bash Builtins). +

    +
    +
    REPLY + +
    +

    The default variable for the read builtin. +

    +
    +
    SECONDS + +
    +

    This variable expands to the number of seconds since the shell was started. Assignment to this variable resets the count to the value assigned, and the expanded value becomes the value assigned plus the number of seconds since the assignment. -

    - - -

    SHELL -
    -The full pathname to the shell is kept in this environment variable. +

    +
    +
    SHELL + +
    +

    The full pathname to the shell is kept in this environment variable. If it is not set when the shell starts, -Bash assigns to it the full pathname of the current user's login shell. -

    - - -

    SHELLOPTS -
    -A colon-separated list of enabled shell options. Each word in -the list is a valid argument for the `-o' option to the -set builtin command (see section 4.3.1 The Set Builtin). -The options appearing in SHELLOPTS are those reported -as `on' by `set -o'. +Bash assigns to it the full pathname of the current user’s login shell. +

    +
    +
    SHELLOPTS + +
    +

    A colon-separated list of enabled shell options. Each word in +the list is a valid argument for the -o option to the +set builtin command (see The Set Builtin). +The options appearing in SHELLOPTS are those reported +as ‘on’ by ‘set -o’. If this variable is in the environment when Bash starts up, each shell option in the list will be enabled before reading any startup files. This variable is readonly. -

    - - -

    SHLVL -
    -Incremented by one each time a new instance of Bash is started. This is +

    +
    +
    SHLVL + +
    +

    Incremented by one each time a new instance of Bash is started. This is intended to be a count of how deeply your Bash shells are nested. -

    - - -

    TIMEFORMAT -
    -The value of this parameter is used as a format string specifying -how the timing information for pipelines prefixed with the time +

    +
    +
    TIMEFORMAT + +
    +

    The value of this parameter is used as a format string specifying +how the timing information for pipelines prefixed with the time reserved word should be displayed. -The `%' character introduces an +The ‘%’ character introduces an escape sequence that is expanded to a time value or other information. The escape sequences and their meanings are as follows; the braces denote optional portions. -

    +

    +
    +
    %%
    +

    A literal ‘%’. +

    +
    +
    %[p][l]R
    +

    The elapsed time in seconds. +

    +
    +
    %[p][l]U
    +

    The number of CPU seconds spent in user mode. +

    +
    +
    %[p][l]S
    +

    The number of CPU seconds spent in system mode. +

    +
    +
    %P
    +

    The CPU percentage, computed as (%U + %S) / %R. +

    +
    -
    - -
    %% -
    A literal `%'. -

    - -

    %[p][l]R -
    The elapsed time in seconds. -

    - -

    %[p][l]U -
    The number of CPU seconds spent in user mode. -

    - -

    %[p][l]S -
    The number of CPU seconds spent in system mode. -

    - -

    %P -
    The CPU percentage, computed as (%U + %S) / %R. -
    -

    - -The optional p is a digit specifying the precision, the number of +

    The optional p is a digit specifying the precision, the number of fractional digits after a decimal point. A value of 0 causes no decimal point or fraction to be output. At most three places after the decimal point may be specified; values -of p greater than 3 are changed to 3. -If p is not specified, the value 3 is used. -

    - -The optional l specifies a longer format, including minutes, of -the form MMmSS.FFs. -The value of p determines whether or not the fraction is included. -

    - -If this variable is not set, Bash acts as if it had the value -
     
    $'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
    -
    If the value is null, no timing information is displayed. +of p greater than 3 are changed to 3. +If p is not specified, the value 3 is used. +

    +

    The optional l specifies a longer format, including minutes, of +the form MMmSS.FFs. +The value of p determines whether or not the fraction is included. +

    +

    If this variable is not set, Bash acts as if it had the value +

    +
    $'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS'
    +
    +

    If the value is null, no timing information is displayed. A trailing newline is added when the format string is displayed. -

    - - -

    TMOUT -
    -If set to a value greater than zero, TMOUT is treated as the -default timeout for the read builtin (see section 4.2 Bash Builtin Commands). -The select command (see section 3.2.4.2 Conditional Constructs) terminates -if input does not arrive after TMOUT seconds when input is coming +

    +
    +
    TMOUT + +
    +

    If set to a value greater than zero, TMOUT is treated as the +default timeout for the read builtin (see Bash Builtins). +The select command (see Conditional Constructs) terminates +if input does not arrive after TMOUT seconds when input is coming from a terminal. -

    - -In an interactive shell, the value is interpreted as +

    +

    In an interactive shell, the value is interpreted as the number of seconds to wait for a line of input after issuing the primary prompt. Bash terminates after waiting for that number of seconds if a complete line of input does not arrive. -

    +

    +
    +
    TMPDIR + +
    +

    If set, Bash uses its value as the name of a directory in which +Bash creates temporary files for the shell’s use. +

    +
    +
    UID + +
    +

    The numeric real user id of the current user. This variable is readonly. +

    +
    +
    - -
    TMPDIR -
    -If set, Bash uses its value as the name of a directory in which -Bash creates temporary files for the shell's use. -

    +


    + +
    +

    +Next: , Previous: , Up: Top   [Contents][Index]

    +
    + +

    6 Bash Features

    - -
    UID -
    -The numeric real user id of the current user. This variable is readonly. -

    +

    This chapter describes features unique to Bash. +

    + + + + + + + + + + + + + -
    -

    +


    + + + +

    6.1 Invoking Bash

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    6. Bash Features

    - -

    +

    +
    bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] [argument …]
    +bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] -c string [argument …]
    +bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] [argument …]
    +
    -This chapter describes features unique to Bash. -

    - -

    - - - - - - - - - - - -
    6.1 Invoking Bash  Command line options that you can give - to Bash.
    6.2 Bash Startup Files  When and how Bash executes scripts.
    6.3 Interactive Shells  What an interactive shell is.
    6.4 Bash Conditional Expressions  Primitives used in composing expressions for - the test builtin.
    6.5 Shell Arithmetic  Arithmetic on shell variables.
    6.6 Aliases  Substituting one command for another.
    6.7 Arrays  Array Variables.
    6.8 The Directory Stack  History of visited directories.
    6.9 Controlling the Prompt  Customizing the various prompt strings.
    6.10 The Restricted Shell  A more controlled mode of shell execution.
    6.11 Bash POSIX Mode  Making Bash behave more closely to what - the POSIX standard specifies.
    -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    6.1 Invoking Bash

    - -

    - -
     
    bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] [argument ...]
    -bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] -c string [argument ...]
    -bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o option] [-O shopt_option] [argument ...]
    -

    - -All of the single-character options used with the set builtin -(see section 4.3.1 The Set Builtin) can be used as options when the shell is invoked. +

    All of the single-character options used with the set builtin +(see The Set Builtin) can be used as options when the shell is invoked. In addition, there are several multi-character options that you can use. These options must appear on the command line before the single-character options to be recognized. -

    - -

    -
    --debugger -
    Arrange for the debugger profile to be executed before the shell -starts. Turns on extended debugging mode (see 4.3.2 The Shopt Builtin -for a description of the extdebug option to the shopt +

    +
    +
    --debugger
    +

    Arrange for the debugger profile to be executed before the shell +starts. Turns on extended debugging mode (see The Shopt Builtin +for a description of the extdebug option to the shopt builtin). -

    - -

    --dump-po-strings -
    A list of all double-quoted strings preceded by `$' +

    +
    +
    --dump-po-strings
    +

    A list of all double-quoted strings preceded by ‘$’ is printed on the standard output -in the GNU gettext PO (portable object) file format. -Equivalent to `-D' except for the output format. -

    - -

    --dump-strings -
    Equivalent to `-D'. -

    - -

    --help -
    Display a usage message on standard output and exit successfully. -

    - -

    --init-file filename -
    --rcfile filename -
    Execute commands from filename (instead of `~/.bashrc') +in the GNU gettext PO (portable object) file format. +Equivalent to -D except for the output format. +

    +
    +
    --dump-strings
    +

    Equivalent to -D. +

    +
    +
    --help
    +

    Display a usage message on standard output and exit successfully. +

    +
    +
    --init-file filename
    +
    --rcfile filename
    +

    Execute commands from filename (instead of ~/.bashrc) in an interactive shell. -

    - -

    --login -
    Equivalent to `-l'. -

    - -

    --noediting -
    Do not use the GNU Readline library (see section 8. Command Line Editing) +

    +
    +
    --login
    +

    Equivalent to -l. +

    +
    +
    --noediting
    +

    Do not use the GNU Readline library (see Command Line Editing) to read command lines when the shell is interactive. -

    - -

    --noprofile -
    Don't load the system-wide startup file `/etc/profile' +

    +
    +
    --noprofile
    +

    Don’t load the system-wide startup file /etc/profile or any of the personal initialization files -`~/.bash_profile', `~/.bash_login', or `~/.profile' +~/.bash_profile, ~/.bash_login, or ~/.profile when Bash is invoked as a login shell. -

    - -

    --norc -
    Don't read the `~/.bashrc' initialization file in an +

    +
    +
    --norc
    +

    Don’t read the ~/.bashrc initialization file in an interactive shell. This is on by default if the shell is -invoked as sh. -

    - -

    --posix -
    Change the behavior of Bash where the default operation differs -from the POSIX standard to match the standard. This +invoked as sh. +

    +
    +
    --posix
    +

    Change the behavior of Bash where the default operation differs +from the POSIX standard to match the standard. This is intended to make Bash behave as a strict superset of that -standard. See section 6.11 Bash POSIX Mode, for a description of the Bash -POSIX mode. -

    - -

    --restricted -
    Make the shell a restricted shell (see section 6.10 The Restricted Shell). -

    - -

    --verbose -
    Equivalent to `-v'. Print shell input lines as they're read. -

    - -

    --version -
    Show version information for this instance of +standard. See Bash POSIX Mode, for a description of the Bash +POSIX mode. +

    +
    +
    --restricted
    +

    Make the shell a restricted shell (see The Restricted Shell). +

    +
    +
    --verbose
    +

    Equivalent to -v. Print shell input lines as they’re read. +

    +
    +
    --version
    +

    Show version information for this instance of Bash on the standard output and exit successfully. -

    -

    +

    +
    -There are several single-character options that may be supplied at -invocation which are not available with the set builtin. -

    - -

    -
    -c -
    Read and execute commands from the first non-option argument -command_string, then exit. -If there are arguments after the command_string, -the first argument is assigned to $0 +

    There are several single-character options that may be supplied at +invocation which are not available with the set builtin. +

    +
    +
    -c
    +

    Read and execute commands from the first non-option argument +command_string, then exit. +If there are arguments after the command_string, +the first argument is assigned to $0 and any remaining arguments are assigned to the positional parameters. -The assignment to $0 sets the name of the shell, which is used +The assignment to $0 sets the name of the shell, which is used in warning and error messages. -

    - -

    -i -
    Force the shell to run interactively. Interactive shells are -described in 6.3 Interactive Shells. -

    - -

    -l -
    Make this shell act as if it had been directly invoked by login. +

    +
    +
    -i
    +

    Force the shell to run interactively. Interactive shells are +described in Interactive Shells. +

    +
    +
    -l
    +

    Make this shell act as if it had been directly invoked by login. When the shell is interactive, this is equivalent to starting a -login shell with `exec -l bash'. +login shell with ‘exec -l bash’. When the shell is not interactive, the login shell startup files will be executed. -`exec bash -l' or `exec bash --login' +‘exec bash -l’ or ‘exec bash --login’ will replace the current shell with a Bash login shell. -See section 6.2 Bash Startup Files, for a description of the special behavior +See Bash Startup Files, for a description of the special behavior of a login shell. -

    - -

    -r -
    Make the shell a restricted shell (see section 6.10 The Restricted Shell). -

    - -

    -s -
    If this option is present, or if no arguments remain after option +

    +
    +
    -r
    +

    Make the shell a restricted shell (see The Restricted Shell). +

    +
    +
    -s
    +

    If this option is present, or if no arguments remain after option processing, then commands are read from the standard input. This option allows the positional parameters to be set when invoking an interactive shell. -

    - -

    -D -
    A list of all double-quoted strings preceded by `$' +

    +
    +
    -D
    +

    A list of all double-quoted strings preceded by ‘$’ is printed on the standard output. These are the strings that are subject to language translation when the current locale -is not C or POSIX (see section 3.1.2.5 Locale-Specific Translation). -This implies the `-n' option; no commands will be executed. -

    - -

    [-+]O [shopt_option] -
    shopt_option is one of the shell options accepted by the -shopt builtin (see section 4.3.2 The Shopt Builtin). -If shopt_option is present, `-O' sets the value of that option; -`+O' unsets it. -If shopt_option is not supplied, the names and values of the shell -options accepted by shopt are printed on the standard output. -If the invocation option is `+O', the output is displayed in a format +is not C or POSIX (see Locale Translation). +This implies the -n option; no commands will be executed. +

    +
    +
    [-+]O [shopt_option]
    +

    shopt_option is one of the shell options accepted by the +shopt builtin (see The Shopt Builtin). +If shopt_option is present, -O sets the value of that option; ++O unsets it. +If shopt_option is not supplied, the names and values of the shell +options accepted by shopt are printed on the standard output. +If the invocation option is +O, the output is displayed in a format that may be reused as input. -

    - -

    -- -
    A -- signals the end of options and disables further option +

    +
    +
    --
    +

    A -- signals the end of options and disables further option processing. -Any arguments after the -- are treated as filenames and arguments. -

    -

    +Any arguments after the -- are treated as filenames and arguments. +

    +
    - -A login shell is one whose first character of argument zero is -`-', or one invoked with the `--login' option. -

    - - -An interactive shell is one started without non-option arguments, -unless `-s' is specified, -without specifying the `-c' option, and whose input and output are both -connected to terminals (as determined by isatty(3)), or one -started with the `-i' option. See section 6.3 Interactive Shells, for more + +

    A login shell is one whose first character of argument zero is +‘-’, or one invoked with the --login option. +

    + +

    An interactive shell is one started without non-option arguments, +unless -s is specified, +without specifying the -c option, and whose input and output are both +connected to terminals (as determined by isatty(3)), or one +started with the -i option. See Interactive Shells, for more information. -

    - -If arguments remain after option processing, and neither the -`-c' nor the `-s' +

    +

    If arguments remain after option processing, and neither the +-c nor the -s option has been supplied, the first argument is assumed to -be the name of a file containing shell commands (see section 3.8 Shell Scripts). -When Bash is invoked in this fashion, $0 +be the name of a file containing shell commands (see Shell Scripts). +When Bash is invoked in this fashion, $0 is set to the name of the file, and the positional parameters are set to the remaining arguments. Bash reads and executes commands from this file, then exits. -Bash's exit status is the exit status of the last command executed +Bash’s exit status is the exit status of the last command executed in the script. If no commands are executed, the exit status is 0. -

    +

    +
    + +
    +

    +Next: , Previous: , Up: Bash Features   [Contents][Index]

    +
    + +

    6.2 Bash Startup Files

    + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    6.2 Bash Startup Files

    - -

    - -This section describes how Bash executes its startup files. +

    This section describes how Bash executes its startup files. If any of the files exist but cannot be read, Bash reports an error. Tildes are expanded in filenames as described above under -Tilde Expansion (see section 3.5.2 Tilde Expansion). -

    +Tilde Expansion (see Tilde Expansion). +

    +

    Interactive shells are described in Interactive Shells. +

    + +

    Invoked as an interactive login shell, or with --login

    -Interactive shells are described in 6.3 Interactive Shells. -

    - - -

    Invoked as an interactive login shell, or with `--login'

    - -

    - -When Bash is invoked as an interactive login shell, or as a -non-interactive shell with the `--login' option, it first reads and -executes commands from the file `/etc/profile', if that file exists. -After reading that file, it looks for `~/.bash_profile', -`~/.bash_login', and `~/.profile', in that order, and reads +

    When Bash is invoked as an interactive login shell, or as a +non-interactive shell with the --login option, it first reads and +executes commands from the file /etc/profile, if that file exists. +After reading that file, it looks for ~/.bash_profile, +~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. -The `--noprofile' option may be used when the shell is started to +The --noprofile option may be used when the shell is started to inhibit this behavior. -

    - -When an interactive login shell exits, -or a non-interactive login shell executes the exit builtin command, +

    +

    When an interactive login shell exits, +or a non-interactive login shell executes the exit builtin command, Bash reads and executes commands from -the file `~/.bash_logout', if it exists. -

    +the file ~/.bash_logout, if it exists. +

    + +

    Invoked as an interactive non-login shell

    - -

    Invoked as an interactive non-login shell

    - -

    +

    When an interactive shell that is not a login shell is started, Bash +reads and executes commands from ~/.bashrc, if that file exists. +This may be inhibited by using the --norc option. +The --rcfile file option will force Bash to read and +execute commands from file instead of ~/.bashrc. +

    +

    So, typically, your ~/.bash_profile contains the line +

    +
    if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
    +
    +

    after (or before) any login-specific initializations. +

    + +

    Invoked non-interactively

    -When an interactive shell that is not a login shell is started, Bash -reads and executes commands from `~/.bashrc', if that file exists. -This may be inhibited by using the `--norc' option. -The `--rcfile file' option will force Bash to read and -execute commands from file instead of `~/.bashrc'. -

    - -So, typically, your `~/.bash_profile' contains the line -
     
    if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
    -
    after (or before) any login-specific initializations. -

    - - -

    Invoked non-interactively

    - -

    - -When Bash is started non-interactively, to run a shell script, -for example, it looks for the variable BASH_ENV in the environment, +

    When Bash is started non-interactively, to run a shell script, +for example, it looks for the variable BASH_ENV in the environment, expands its value if it appears there, and uses the expanded value as the name of a file to read and execute. Bash behaves as if the following command were executed: -
     
    if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
    -
    but the value of the PATH variable is not used to search for the +

    +
    if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
    +
    +

    but the value of the PATH variable is not used to search for the filename. -

    - -As noted above, if a non-interactive shell is invoked with the -`--login' option, Bash attempts to read and execute commands from the +

    +

    As noted above, if a non-interactive shell is invoked with the +--login option, Bash attempts to read and execute commands from the login shell startup files. -

    +

    + +

    Invoked with name sh

    - -

    Invoked with name sh

    - -

    - -If Bash is invoked with the name sh, it tries to mimic the -startup behavior of historical versions of sh as closely as -possible, while conforming to the POSIX standard as well. -

    - -When invoked as an interactive login shell, or as a non-interactive -shell with the `--login' option, it first attempts to read -and execute commands from `/etc/profile' and `~/.profile', in +

    If Bash is invoked with the name sh, it tries to mimic the +startup behavior of historical versions of sh as closely as +possible, while conforming to the POSIX standard as well. +

    +

    When invoked as an interactive login shell, or as a non-interactive +shell with the --login option, it first attempts to read +and execute commands from /etc/profile and ~/.profile, in that order. -The `--noprofile' option may be used to inhibit this behavior. -When invoked as an interactive shell with the name sh, Bash -looks for the variable ENV, expands its value if it is defined, +The --noprofile option may be used to inhibit this behavior. +When invoked as an interactive shell with the name sh, Bash +looks for the variable ENV, expands its value if it is defined, and uses the expanded value as the name of a file to read and execute. -Since a shell invoked as sh does not attempt to read and execute -commands from any other startup files, the `--rcfile' option has +Since a shell invoked as sh does not attempt to read and execute +commands from any other startup files, the --rcfile option has no effect. -A non-interactive shell invoked with the name sh does not attempt +A non-interactive shell invoked with the name sh does not attempt to read any other startup files. -

    - -When invoked as sh, Bash enters POSIX mode after +

    +

    When invoked as sh, Bash enters POSIX mode after the startup files are read. -

    +

    + +

    Invoked in POSIX mode

    - -

    Invoked in POSIX mode

    - -

    - -When Bash is started in POSIX mode, as with the -`--posix' command line option, it follows the POSIX standard +

    When Bash is started in POSIX mode, as with the +--posix command line option, it follows the POSIX standard for startup files. -In this mode, interactive shells expand the ENV variable +In this mode, interactive shells expand the ENV variable and commands are read and executed from the file whose name is the expanded value. No other startup files are read. -

    +

    + +

    Invoked by remote shell daemon

    - -

    Invoked by remote shell daemon

    - -

    - -Bash attempts to determine when it is being run with its standard input +

    Bash attempts to determine when it is being run with its standard input connected to a network connection, as when executed by the remote shell -daemon, usually rshd, or the secure shell daemon sshd. +daemon, usually rshd, or the secure shell daemon sshd. If Bash determines it is being run in -this fashion, it reads and executes commands from `~/.bashrc', if that +this fashion, it reads and executes commands from ~/.bashrc, if that file exists and is readable. -It will not do this if invoked as sh. -The `--norc' option may be used to inhibit this behavior, and the -`--rcfile' option may be used to force another file to be read, but -neither rshd nor sshd generally invoke the shell with those +It will not do this if invoked as sh. +The --norc option may be used to inhibit this behavior, and the +--rcfile option may be used to force another file to be read, but +neither rshd nor sshd generally invoke the shell with those options or allow them to be specified. -

    +

    + +

    Invoked with unequal effective and real UID/GIDs

    - -

    Invoked with unequal effective and real UID/GIDs

    - -

    - -If Bash is started with the effective user (group) id not equal to the -real user (group) id, and the `-p' option is not supplied, no startup +

    If Bash is started with the effective user (group) id not equal to the +real user (group) id, and the -p option is not supplied, no startup files are read, shell functions are not inherited from the environment, -the SHELLOPTS, BASHOPTS, CDPATH, and GLOBIGNORE +the SHELLOPTS, BASHOPTS, CDPATH, and GLOBIGNORE variables, if they appear in the environment, are ignored, and the effective user id is set to the real user id. -If the `-p' option is supplied at invocation, the startup behavior is +If the -p option is supplied at invocation, the startup behavior is the same, but the effective user id is not reset. -

    +

    +
    + + + +

    6.3 Interactive Shells

    + + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    6.3 Interactive Shells

    - -

    + + + + + -

    - - - -
    6.3.1 What is an Interactive Shell?  What determines whether a shell is Interactive.
    6.3.2 Is this Shell Interactive?  How to tell if a shell is interactive.
    6.3.3 Interactive Shell Behavior  What changes in a interactive shell?
    -

    +


    + + + +

    6.3.1 What is an Interactive Shell?

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    6.3.1 What is an Interactive Shell?

    - -

    - -An interactive shell -is one started without non-option arguments, unless `-s' is -specified, without specifying the `-c' option, and +

    An interactive shell +is one started without non-option arguments, unless -s is +specified, without specifying the -c option, and whose input and error output are both -connected to terminals (as determined by isatty(3)), -or one started with the `-i' option. -

    - -An interactive shell generally reads from and writes to a user's +connected to terminals (as determined by isatty(3)), +or one started with the -i option. +

    +

    An interactive shell generally reads from and writes to a user’s terminal. -

    - -The `-s' invocation option may be used to set the positional parameters +

    +

    The -s invocation option may be used to set the positional parameters when an interactive shell is started. -

    +

    +
    + + + +

    6.3.2 Is this Shell Interactive?

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    6.3.2 Is this Shell Interactive?

    - -

    - -To determine within a startup script whether or not Bash is +

    To determine within a startup script whether or not Bash is running interactively, -test the value of the `-' special parameter. -It contains i when the shell is interactive. For example: -

    - -
     
    case "$-" in
    +test the value of the ‘-’ special parameter.
    +It contains i when the shell is interactive.  For example:
    +

    +
    +
    case "$-" in
     *i*)	echo This shell is interactive ;;
     *)	echo This shell is not interactive ;;
     esac
    -

    + -Alternatively, startup scripts may examine the variable -PS1; it is unset in non-interactive shells, and set in +

    Alternatively, startup scripts may examine the variable +PS1; it is unset in non-interactive shells, and set in interactive shells. Thus: -

    - -
     
    if [ -z "$PS1" ]; then
    +

    +
    +
    if [ -z "$PS1" ]; then
             echo This shell is not interactive
     else
             echo This shell is interactive
     fi
    -

    + - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    6.3.3 Interactive Shell Behavior

    - -

    +


    + + + +

    6.3.3 Interactive Shell Behavior

    -When the shell is running interactively, it changes its behavior in +

    When the shell is running interactively, it changes its behavior in several ways. -

    +

    +
      +
    1. Startup files are read and executed as described in Bash Startup Files. -
        -
      1. -Startup files are read and executed as described in 6.2 Bash Startup Files. -

        - -

      2. -Job Control (see section 7. Job Control) is enabled by default. When job +
      3. Job Control (see Job Control) is enabled by default. When job control is in effect, Bash ignores the keyboard-generated job control -signals SIGTTIN, SIGTTOU, and SIGTSTP. -

        +signals SIGTTIN, SIGTTOU, and SIGTSTP. -

      4. -Bash expands and displays PS1 before reading the first line -of a command, and expands and displays PS2 before reading the +
      5. Bash expands and displays PS1 before reading the first line +of a command, and expands and displays PS2 before reading the second and subsequent lines of a multi-line command. -

        +Bash displays PS0 after it reads a command but before executing it. -

      6. -Bash executes the value of the PROMPT_COMMAND variable as a command -before printing the primary prompt, $PS1 -(see section 5.2 Bash Variables). -

        +

      7. Bash executes the value of the PROMPT_COMMAND variable as a command +before printing the primary prompt, $PS1 +(see Bash Variables). -
      8. -Readline (see section 8. Command Line Editing) is used to read commands from -the user's terminal. -

        +

      9. Readline (see Command Line Editing) is used to read commands from +the user’s terminal. -
      10. -Bash inspects the value of the ignoreeof option to set -o -instead of exiting immediately when it receives an EOF on its -standard input when reading a command (see section 4.3.1 The Set Builtin). -

        +

      11. Bash inspects the value of the ignoreeof option to set -o +instead of exiting immediately when it receives an EOF on its +standard input when reading a command (see The Set Builtin). -
      12. -Command history (see section 9.1 Bash History Facilities) -and history expansion (see section 9.3 History Expansion) +
      13. Command history (see Bash History Facilities) +and history expansion (see History Interaction) are enabled by default. -Bash will save the command history to the file named by $HISTFILE +Bash will save the command history to the file named by $HISTFILE when a shell with history enabled exits. -

        -

      14. -Alias expansion (see section 6.6 Aliases) is performed by default. -

        +

      15. Alias expansion (see Aliases) is performed by default. -
      16. -In the absence of any traps, Bash ignores SIGTERM -(see section 3.7.6 Signals). -

        +

      17. In the absence of any traps, Bash ignores SIGTERM +(see Signals). -
      18. -In the absence of any traps, SIGINT is caught and handled -((see section 3.7.6 Signals). -SIGINT will interrupt some shell builtins. -

        +

      19. In the absence of any traps, SIGINT is caught and handled +((see Signals). +SIGINT will interrupt some shell builtins. -
      20. -An interactive login shell sends a SIGHUP to all jobs on exit -if the huponexit shell option has been enabled (see section 3.7.6 Signals). -

        +

      21. An interactive login shell sends a SIGHUP to all jobs on exit +if the huponexit shell option has been enabled (see Signals). -
      22. -The `-n' invocation option is ignored, and `set -n' has -no effect (see section 4.3.1 The Set Builtin). -

        +

      23. The -n invocation option is ignored, and ‘set -n’ has +no effect (see The Set Builtin). -
      24. -Bash will check for mail periodically, depending on the values of the -MAIL, MAILPATH, and MAILCHECK shell variables -(see section 5.2 Bash Variables). -

        +

      25. Bash will check for mail periodically, depending on the values of the +MAIL, MAILPATH, and MAILCHECK shell variables +(see Bash Variables). -
      26. -Expansion errors due to references to unbound shell variables after -`set -u' has been enabled will not cause the shell to exit -(see section 4.3.1 The Set Builtin). -

        +

      27. Expansion errors due to references to unbound shell variables after +‘set -u’ has been enabled will not cause the shell to exit +(see The Set Builtin). -
      28. -The shell will not exit on expansion errors caused by var being unset -or null in ${var:?word} expansions -(see section 3.5.3 Shell Parameter Expansion). -

        +

      29. The shell will not exit on expansion errors caused by var being unset +or null in ${var:?word} expansions +(see Shell Parameter Expansion). -
      30. -Redirection errors encountered by shell builtins will not cause the +
      31. Redirection errors encountered by shell builtins will not cause the shell to exit. -

        -

      32. -When running in POSIX mode, a special builtin returning an error -status will not cause the shell to exit (see section 6.11 Bash POSIX Mode). -

        +

      33. When running in POSIX mode, a special builtin returning an error +status will not cause the shell to exit (see Bash POSIX Mode). -
      34. -A failed exec will not cause the shell to exit -(see section 4.1 Bourne Shell Builtins). -

        +

      35. A failed exec will not cause the shell to exit +(see Bourne Shell Builtins). -
      36. -Parser syntax errors will not cause the shell to exit. -

        +

      37. Parser syntax errors will not cause the shell to exit. -
      38. -Simple spelling correction for directory arguments to the cd -builtin is enabled by default (see the description of the cdspell -option to the shopt builtin in 4.3.2 The Shopt Builtin). -

        +

      39. Simple spelling correction for directory arguments to the cd +builtin is enabled by default (see the description of the cdspell +option to the shopt builtin in The Shopt Builtin). -
      40. -The shell will check the value of the TMOUT variable and exit +
      41. The shell will check the value of the TMOUT variable and exit if a command is not read within the specified number of seconds after -printing $PS1 (see section 5.2 Bash Variables). -

        +printing $PS1 (see Bash Variables). -

      -

      +

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    6.4 Bash Conditional Expressions

    - -

    +


    + + + +

    6.4 Bash Conditional Expressions

    + -Conditional expressions are used by the [[ compound command -and the test and [ builtin commands. -

    - -Expressions may be unary or binary. +

    Conditional expressions are used by the [[ compound command +and the test and [ builtin commands. +

    +

    Expressions may be unary or binary. Unary expressions are often used to examine the status of a file. There are string operators and numeric comparison operators as well. -If the file argument to one of the primaries is of the form -`/dev/fd/N', then file descriptor N is checked. -If the file argument to one of the primaries is one of -`/dev/stdin', `/dev/stdout', or `/dev/stderr', file +If the file argument to one of the primaries is of the form +/dev/fd/N, then file descriptor N is checked. +If the file argument to one of the primaries is one of +/dev/stdin, /dev/stdout, or /dev/stderr, file descriptor 0, 1, or 2, respectively, is checked. -

    - -When used with [[, the `<' and `>' operators sort +

    +

    When used with [[, the ‘<’ and ‘>’ operators sort lexicographically using the current locale. -The test command uses ASCII ordering. -

    - -Unless otherwise specified, primaries that operate on files follow symbolic +The test command uses ASCII ordering. +

    +

    Unless otherwise specified, primaries that operate on files follow symbolic links and operate on the target of the link, rather than the link itself. -

    - -

    -
    -a file -
    True if file exists. -

    - -

    -b file -
    True if file exists and is a block special file. -

    - -

    -c file -
    True if file exists and is a character special file. -

    - -

    -d file -
    True if file exists and is a directory. -

    - -

    -e file -
    True if file exists. -

    - -

    -f file -
    True if file exists and is a regular file. -

    - -

    -g file -
    True if file exists and its set-group-id bit is set. -

    - -

    -h file -
    True if file exists and is a symbolic link. -

    - -

    -k file -
    True if file exists and its "sticky" bit is set. -

    - -

    -p file -
    True if file exists and is a named pipe (FIFO). -

    - -

    -r file -
    True if file exists and is readable. -

    - -

    -s file -
    True if file exists and has a size greater than zero. -

    - -

    -t fd -
    True if file descriptor fd is open and refers to a terminal. -

    - -

    -u file -
    True if file exists and its set-user-id bit is set. -

    - -

    -w file -
    True if file exists and is writable. -

    - -

    -x file -
    True if file exists and is executable. -

    - -

    -G file -
    True if file exists and is owned by the effective group id. -

    - -

    -L file -
    True if file exists and is a symbolic link. -

    - -

    -N file -
    True if file exists and has been modified since it was last read. -

    - -

    -O file -
    True if file exists and is owned by the effective user id. -

    - -

    -S file -
    True if file exists and is a socket. -

    - -

    file1 -ef file2 -
    True if file1 and file2 refer to the same device and +

    +
    +
    -a file
    +

    True if file exists. +

    +
    +
    -b file
    +

    True if file exists and is a block special file. +

    +
    +
    -c file
    +

    True if file exists and is a character special file. +

    +
    +
    -d file
    +

    True if file exists and is a directory. +

    +
    +
    -e file
    +

    True if file exists. +

    +
    +
    -f file
    +

    True if file exists and is a regular file. +

    +
    +
    -g file
    +

    True if file exists and its set-group-id bit is set. +

    +
    +
    -h file
    +

    True if file exists and is a symbolic link. +

    +
    +
    -k file
    +

    True if file exists and its "sticky" bit is set. +

    +
    +
    -p file
    +

    True if file exists and is a named pipe (FIFO). +

    +
    +
    -r file
    +

    True if file exists and is readable. +

    +
    +
    -s file
    +

    True if file exists and has a size greater than zero. +

    +
    +
    -t fd
    +

    True if file descriptor fd is open and refers to a terminal. +

    +
    +
    -u file
    +

    True if file exists and its set-user-id bit is set. +

    +
    +
    -w file
    +

    True if file exists and is writable. +

    +
    +
    -x file
    +

    True if file exists and is executable. +

    +
    +
    -G file
    +

    True if file exists and is owned by the effective group id. +

    +
    +
    -L file
    +

    True if file exists and is a symbolic link. +

    +
    +
    -N file
    +

    True if file exists and has been modified since it was last read. +

    +
    +
    -O file
    +

    True if file exists and is owned by the effective user id. +

    +
    +
    -S file
    +

    True if file exists and is a socket. +

    +
    +
    file1 -ef file2
    +

    True if file1 and file2 refer to the same device and inode numbers. -

    - -

    file1 -nt file2 -
    True if file1 is newer (according to modification date) -than file2, or if file1 exists and file2 does not. -

    - -

    file1 -ot file2 -
    True if file1 is older than file2, -or if file2 exists and file1 does not. -

    - -

    -o optname -
    True if the shell option optname is enabled. -The list of options appears in the description of the `-o' -option to the set builtin (see section 4.3.1 The Set Builtin). -

    - -

    -v varname -
    True if the shell variable varname is set (has been assigned a value). -

    - -

    -R varname -
    True if the shell variable varname is set and is a name reference. -

    - -

    -z string -
    True if the length of string is zero. -

    - -

    -n string -
    string -
    True if the length of string is non-zero. -

    - -

    string1 == string2 -
    string1 = string2 -
    True if the strings are equal. -When used with the [[ command, this performs pattern matching as -described above (see section 3.2.4.2 Conditional Constructs). -

    - -`=' should be used with the test command for POSIX conformance. -

    - -

    string1 != string2 -
    True if the strings are not equal. -

    - -

    string1 < string2 -
    True if string1 sorts before string2 lexicographically. -

    - -

    string1 > string2 -
    True if string1 sorts after string2 lexicographically. -

    - -

    arg1 OP arg2 -
    OP is one of -`-eq', `-ne', `-lt', `-le', `-gt', or `-ge'. -These arithmetic binary operators return true if arg1 +

    +
    +
    file1 -nt file2
    +

    True if file1 is newer (according to modification date) +than file2, or if file1 exists and file2 does not. +

    +
    +
    file1 -ot file2
    +

    True if file1 is older than file2, +or if file2 exists and file1 does not. +

    +
    +
    -o optname
    +

    True if the shell option optname is enabled. +The list of options appears in the description of the -o +option to the set builtin (see The Set Builtin). +

    +
    +
    -v varname
    +

    True if the shell variable varname is set (has been assigned a value). +

    +
    +
    -R varname
    +

    True if the shell variable varname is set and is a name reference. +

    +
    +
    -z string
    +

    True if the length of string is zero. +

    +
    +
    -n string
    +
    string
    +

    True if the length of string is non-zero. +

    +
    +
    string1 == string2
    +
    string1 = string2
    +

    True if the strings are equal. +When used with the [[ command, this performs pattern matching as +described above (see Conditional Constructs). +

    +

    =’ should be used with the test command for POSIX conformance. +

    +
    +
    string1 != string2
    +

    True if the strings are not equal. +

    +
    +
    string1 < string2
    +

    True if string1 sorts before string2 lexicographically. +

    +
    +
    string1 > string2
    +

    True if string1 sorts after string2 lexicographically. +

    +
    +
    arg1 OP arg2
    +

    OP is one of +‘-eq’, ‘-ne’, ‘-lt’, ‘-le’, ‘-gt’, or ‘-ge’. +These arithmetic binary operators return true if arg1 is equal to, not equal to, less than, less than or equal to, -greater than, or greater than or equal to arg2, -respectively. Arg1 and arg2 +greater than, or greater than or equal to arg2, +respectively. Arg1 and arg2 may be positive or negative integers. -

    -

    +

    +
    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    6.5 Shell Arithmetic

    - -

    +


    + + + +

    6.5 Shell Arithmetic

    + + + + + -The shell allows arithmetic expressions to be evaluated, as one of -the shell expansions or by the let and the `-i' option -to the declare builtins. -

    - -Evaluation is done in fixed-width integers with no check for overflow, +

    The shell allows arithmetic expressions to be evaluated, as one of +the shell expansions or by the let and the -i option +to the declare builtins. +

    +

    Evaluation is done in fixed-width integers with no check for overflow, though division by 0 is trapped and flagged as an error. The operators and their precedence, associativity, and values are the same as in the C language. The following list of operators is grouped into levels of equal-precedence operators. The levels are listed in order of decreasing precedence. -

    +

    +
    +
    id++ id--
    +

    variable post-increment and post-decrement +

    +
    +
    ++id --id
    +

    variable pre-increment and pre-decrement +

    +
    +
    - +
    +

    unary minus and plus +

    +
    +
    ! ~
    +

    logical and bitwise negation +

    +
    +
    **
    +

    exponentiation +

    +
    +
    * / %
    +

    multiplication, division, remainder +

    +
    +
    + -
    +

    addition, subtraction +

    +
    +
    << >>
    +

    left and right bitwise shifts +

    +
    +
    <= >= < >
    +

    comparison +

    +
    +
    == !=
    +

    equality and inequality +

    +
    +
    &
    +

    bitwise AND +

    +
    +
    ^
    +

    bitwise exclusive OR +

    +
    +
    |
    +

    bitwise OR +

    +
    +
    &&
    +

    logical AND +

    +
    +
    ||
    +

    logical OR +

    +
    +
    expr ? expr : expr
    +

    conditional operator +

    +
    +
    = *= /= %= += -= <<= >>= &= ^= |=
    +

    assignment +

    +
    +
    expr1 , expr2
    +

    comma +

    +
    -
    - -
    id++ id-- -
    variable post-increment and post-decrement -

    - -

    ++id --id -
    variable pre-increment and pre-decrement -

    - -

    - + -
    unary minus and plus -

    - -

    ! ~ -
    logical and bitwise negation -

    - -

    ** -
    exponentiation -

    - -

    * / % -
    multiplication, division, remainder -

    - -

    + - -
    addition, subtraction -

    - -

    << >> -
    left and right bitwise shifts -

    - -

    <= >= < > -
    comparison -

    - -

    == != -
    equality and inequality -

    - -

    & -
    bitwise AND -

    - -

    ^ -
    bitwise exclusive OR -

    - -

    | -
    bitwise OR -

    - -

    && -
    logical AND -

    - -

    || -
    logical OR -

    - -

    expr ? expr : expr -
    conditional operator -

    - -

    = *= /= %= += -= <<= >>= &= ^= |= -
    assignment -

    - -

    expr1 , expr2 -
    comma -
    -

    - -Shell variables are allowed as operands; parameter expansion is +

    Shell variables are allowed as operands; parameter expansion is performed before the expression is evaluated. Within an expression, shell variables may also be referenced by name without using the parameter expansion syntax. @@ -8807,59 +8160,47 @@ A shell variable that is null or unset evaluates to 0 when referenced by name without using the parameter expansion syntax. The value of a variable is evaluated as an arithmetic expression when it is referenced, or when a variable which has been given the -integer attribute using `declare -i' is assigned a value. +integer attribute using ‘declare -i’ is assigned a value. A null value evaluates to 0. -A shell variable need not have its integer attribute turned on +A shell variable need not have its integer attribute turned on to be used in an expression. -

    - -Constants with a leading 0 are interpreted as octal numbers. -A leading `0x' or `0X' denotes hexadecimal. Otherwise, -numbers take the form [base#]n, where the optional base +

    +

    Constants with a leading 0 are interpreted as octal numbers. +A leading ‘0x’ or ‘0X’ denotes hexadecimal. Otherwise, +numbers take the form [base#]n, where the optional base is a decimal number between 2 and 64 representing the arithmetic -base, and n is a number in that base. -If base# is omitted, then base 10 is used. -When specifying n, +base, and n is a number in that base. +If base# is omitted, then base 10 is used. +When specifying n, the digits greater than 9 are represented by the lowercase letters, -the uppercase letters, `@', and `_', in that order. -If base is less than or equal to 36, lowercase and uppercase +the uppercase letters, ‘@’, and ‘_’, in that order. +If base is less than or equal to 36, lowercase and uppercase letters may be used interchangeably to represent numbers between 10 and 35. -

    - -Operators are evaluated in order of precedence. Sub-expressions in +

    +

    Operators are evaluated in order of precedence. Sub-expressions in parentheses are evaluated first and may override the precedence rules above. -

    +

    +
    + +
    +

    +Next: , Previous: , Up: Bash Features   [Contents][Index]

    +
    + +

    6.6 Aliases

    + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    6.6 Aliases

    - -

    - -Aliases allow a string to be substituted for a word when it is used +

    Aliases allow a string to be substituted for a word when it is used as the first word of a simple command. The shell maintains a list of aliases that may be set and unset with -the alias and unalias builtin commands. -

    - -The first word of each simple command, if unquoted, is checked to see +the alias and unalias builtin commands. +

    +

    The first word of each simple command, if unquoted, is checked to see if it has an alias. If so, that word is replaced by the text of the alias. -The characters `/', `$', ``', `=' and any of the +The characters ‘/’, ‘$’, ‘`’, ‘=’ and any of the shell metacharacters or quoting characters listed above may not appear in an alias name. The replacement text may contain any valid @@ -8867,30 +8208,26 @@ shell input, including shell metacharacters. The first word of the replacement text is tested for aliases, but a word that is identical to an alias being expanded is not expanded a second time. -This means that one may alias ls to "ls -F", +This means that one may alias ls to "ls -F", for instance, and Bash does not try to recursively expand the replacement text. If the last character of the alias value is a -blank, then the next command word following the +blank, then the next command word following the alias is also checked for alias expansion. -

    - -Aliases are created and listed with the alias -command, and removed with the unalias command. -

    - -There is no mechanism for using arguments in the replacement text, -as in csh. +

    +

    Aliases are created and listed with the alias +command, and removed with the unalias command. +

    +

    There is no mechanism for using arguments in the replacement text, +as in csh. If arguments are needed, a shell function should be used -(see section 3.3 Shell Functions). -

    - -Aliases are not expanded when the shell is not interactive, -unless the expand_aliases shell option is set using -shopt (see section 4.3.2 The Shopt Builtin). -

    - -The rules concerning the definition and use of aliases are +(see Shell Functions). +

    +

    Aliases are not expanded when the shell is not interactive, +unless the expand_aliases shell option is set using +shopt (see The Shopt Builtin). +

    +

    The rules concerning the definition and use of aliases are somewhat confusing. Bash always reads at least one complete line of input before executing any @@ -8906,2411 +8243,2112 @@ not when the function is executed, because a function definition is itself a command. As a consequence, aliases defined in a function are not available until after that function is executed. To be safe, always put -alias definitions on a separate line, and do not use alias +alias definitions on a separate line, and do not use alias in compound commands. -

    +

    +

    For almost every purpose, shell functions are preferred over aliases. +

    +
    + +
    +

    +Next: , Previous: , Up: Bash Features   [Contents][Index]

    +
    + +

    6.7 Arrays

    + -For almost every purpose, shell functions are preferred over aliases. -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    6.7 Arrays

    - -

    - -Bash provides one-dimensional indexed and associative array variables. +

    Bash provides one-dimensional indexed and associative array variables. Any variable may be used as an indexed array; -the declare builtin will explicitly declare an array. +the declare builtin will explicitly declare an array. There is no maximum limit on the size of an array, nor any requirement that members be indexed or assigned contiguously. Indexed arrays are referenced using integers (including arithmetic -expressions (see section 6.5 Shell Arithmetic)) and are zero-based; +expressions (see Shell Arithmetic)) and are zero-based; associative arrays use arbitrary strings. Unless otherwise noted, indexed array indices must be non-negative integers. -

    - -An indexed array is created automatically if any variable is assigned to +

    +

    An indexed array is created automatically if any variable is assigned to using the syntax -
     
    name[subscript]=value
    -

    +

    +
    name[subscript]=value
    +
    -The subscript +

    The subscript is treated as an arithmetic expression that must evaluate to a number. To explicitly declare an array, use -
     
    declare -a name
    -
    The syntax -
     
    declare -a name[subscript]
    -
    is also accepted; the subscript is ignored. -

    +

    +
    declare -a name
    +
    +

    The syntax +

    +
    declare -a name[subscript]
    +
    +

    is also accepted; the subscript is ignored. +

    +

    Associative arrays are created using +

    +
    declare -A name.
    +
    -Associative arrays are created using -
     
    declare -A name.
    -

    - -Attributes may be -specified for an array variable using the declare and -readonly builtins. Each attribute applies to all members of +

    Attributes may be +specified for an array variable using the declare and +readonly builtins. Each attribute applies to all members of an array. -

    - -Arrays are assigned to using compound assignments of the form -
     
    name=(value1 value2 ... )
    -
    where each -value is of the form [subscript]=string. -Indexed array assignments do not require anything but string. +

    +

    Arrays are assigned to using compound assignments of the form +

    +
    name=(value1 value2 … )
    +
    +

    where each +value is of the form [subscript]=string. +Indexed array assignments do not require anything but string. When assigning to indexed arrays, if the optional subscript is supplied, that index is assigned to; otherwise the index of the element assigned is the last index assigned to by the statement plus one. Indexing starts at zero. -

    - -When assigning to an associative array, the subscript is required. -

    - -This syntax is also accepted by the declare +

    +

    When assigning to an associative array, the subscript is required. +

    +

    This syntax is also accepted by the declare builtin. Individual array elements may be assigned to using the -name[subscript]=value syntax introduced above. -

    - -When assigning to an indexed array, if name +name[subscript]=value syntax introduced above. +

    +

    When assigning to an indexed array, if name is subscripted by a negative number, that number is interpreted as relative to one greater than the maximum index of -name, so negative indices count back from the end of the +name, so negative indices count back from the end of the array, and an index of -1 references the last element. -

    - -Any element of an array may be referenced using -${name[subscript]}. +

    +

    Any element of an array may be referenced using +${name[subscript]}. The braces are required to avoid -conflicts with the shell's filename expansion operators. If the -subscript is `@' or `*', the word expands to all members -of the array name. These subscripts differ only when the word +conflicts with the shell’s filename expansion operators. If the +subscript is ‘@’ or ‘*’, the word expands to all members +of the array name. These subscripts differ only when the word appears within double quotes. If the word is double-quoted, -${name[*]} expands to a single word with +${name[*]} expands to a single word with the value of each array member separated by the first character of the -IFS variable, and ${name[@]} expands each element of -name to a separate word. When there are no array members, -${name[@]} expands to nothing. +IFS variable, and ${name[@]} expands each element of +name to a separate word. When there are no array members, +${name[@]} expands to nothing. If the double-quoted expansion occurs within a word, the expansion of the first parameter is joined with the beginning part of the original word, and the expansion of the last parameter is joined with the last part of the original word. This is analogous to the -expansion of the special parameters `@' and `*'. -${#name[subscript]} expands to the length of -${name[subscript]}. -If subscript is `@' or -`*', the expansion is the number of elements in the array. -If the subscript +expansion of the special parameters ‘@’ and ‘*’. +${#name[subscript]} expands to the length of +${name[subscript]}. +If subscript is ‘@’ or +‘*’, the expansion is the number of elements in the array. +If the subscript used to reference an element of an indexed array evaluates to a number less than zero, it is interpreted as relative to one greater than the maximum index of the array, so negative indices count back from the end of the array, and an index of -1 refers to the last element. -

    - -Referencing an array variable without a subscript is equivalent to +

    +

    Referencing an array variable without a subscript is equivalent to referencing with a subscript of 0. Any reference to a variable using a valid subscript is legal, and -bash will create an array if necessary. -

    - -An array variable is considered set if a subscript has been assigned a +bash will create an array if necessary. +

    +

    An array variable is considered set if a subscript has been assigned a value. The null string is a valid value. -

    - -It is possible to obtain the keys (indices) of an array as well as the values. -${!name[@]} and ${!name[*]} expand to the indices -assigned in array variable name. +

    +

    It is possible to obtain the keys (indices) of an array as well as the values. +${!name[@]} and ${!name[*]} expand to the indices +assigned in array variable name. The treatment when in double quotes is similar to the expansion of the -special parameters `@' and `*' within double quotes. -

    - -The unset builtin is used to destroy arrays. -unset name[subscript] -destroys the array element at index subscript. +special parameters ‘@’ and ‘*’ within double quotes. +

    +

    The unset builtin is used to destroy arrays. +unset name[subscript] +destroys the array element at index subscript. Negative subscripts to indexed arrays are interpreted as described above. Care must be taken to avoid unwanted side effects caused by filename expansion. -unset name, where name is an array, removes the -entire array. A subscript of `*' or `@' also removes the +unset name, where name is an array, removes the +entire array. A subscript of ‘*’ or ‘@’ also removes the entire array. -

    - -The declare, local, and readonly -builtins each accept a `-a' option to specify an indexed -array and a `-A' option to specify an associative array. -If both options are supplied, `-A' takes precedence. -The read builtin accepts a `-a' +

    +

    The declare, local, and readonly +builtins each accept a -a option to specify an indexed +array and a -A option to specify an associative array. +If both options are supplied, -A takes precedence. +The read builtin accepts a -a option to assign a list of words read from the standard input to an array, and can read values from the standard input into -individual array elements. The set and declare +individual array elements. The set and declare builtins display array values in a way that allows them to be reused as input. -

    +

    +
    + +
    +

    +Next: , Previous: , Up: Bash Features   [Contents][Index]

    +
    + +

    6.8 The Directory Stack

    + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    6.8 The Directory Stack

    - -

    + + + -

    - -
    6.8.1 Directory Stack Builtins  Bash builtin commands to manipulate - the directory stack.
    -

    - -The directory stack is a list of recently-visited directories. The -pushd builtin adds directories to the stack as it changes -the current directory, and the popd builtin removes specified +

    The directory stack is a list of recently-visited directories. The +pushd builtin adds directories to the stack as it changes +the current directory, and the popd builtin removes specified directories from the stack and changes the current directory to -the directory removed. The dirs builtin displays the contents -of the directory stack. The current directory is always the "top" +the directory removed. The dirs builtin displays the contents +of the directory stack. The current directory is always the "top" of the directory stack. -

    +

    +

    The contents of the directory stack are also visible +as the value of the DIRSTACK shell variable. +

    +
    + + + +

    6.8.1 Directory Stack Builtins

    -The contents of the directory stack are also visible -as the value of the DIRSTACK shell variable. -

    +

    +
    dirs
    +
    +
    +
    dirs [-clpv] [+N | -N]
    +
    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    6.8.1 Directory Stack Builtins

    - -

    - -

    - -
    dirs -
    -
     
    dirs [-clpv] [+N | -N]
    -

    - -Display the list of currently remembered directories. Directories -are added to the list with the pushd command; the -popd command removes directories from the list. +

    Display the list of currently remembered directories. Directories +are added to the list with the pushd command; the +popd command removes directories from the list. The current directory is always the first directory in the stack. -

    - -

    -
    -c -
    Clears the directory stack by deleting all of the elements. -
    -l -
    Produces a listing using full pathnames; +

    +
    +
    -c
    +

    Clears the directory stack by deleting all of the elements. +

    +
    -l
    +

    Produces a listing using full pathnames; the default listing format uses a tilde to denote the home directory. -

    -p -
    Causes dirs to print the directory stack with one entry per +

    +
    -p
    +

    Causes dirs to print the directory stack with one entry per line. -

    -v -
    Causes dirs to print the directory stack with one entry per +

    +
    -v
    +

    Causes dirs to print the directory stack with one entry per line, prefixing each entry with its index in the stack. -

    +N -
    Displays the Nth directory (counting from the left of the -list printed by dirs when invoked without options), starting +

    +
    +N
    +

    Displays the Nth directory (counting from the left of the +list printed by dirs when invoked without options), starting with zero. -

    -N -
    Displays the Nth directory (counting from the right of the -list printed by dirs when invoked without options), starting +

    +
    -N
    +

    Displays the Nth directory (counting from the right of the +list printed by dirs when invoked without options), starting with zero. -

    -

    +

    +
    -
    popd -
    -
     
    popd [-n] [+N | -N]
    -

    +

    +
    popd
    +
    +
    +
    popd [-n] [+N | -N]
    +
    -When no arguments are given, popd +

    When no arguments are given, popd removes the top directory from the stack and -performs a cd to the new top directory. +performs a cd to the new top directory. The elements are numbered from 0 starting at the first directory -listed with dirs; that is, popd is equivalent to popd +0. -

    - -

    -
    -n -
    Suppresses the normal change of directory when removing directories +listed with dirs; that is, popd is equivalent to popd +0. +

    +
    +
    -n
    +

    Suppresses the normal change of directory when removing directories from the stack, so that only the stack is manipulated. -

    +N -
    Removes the Nth directory (counting from the left of the -list printed by dirs), starting with zero. -
    -N -
    Removes the Nth directory (counting from the right of the -list printed by dirs), starting with zero. -
    -

    +

    +
    +N
    +

    Removes the Nth directory (counting from the left of the +list printed by dirs), starting with zero. +

    +
    -N
    +

    Removes the Nth directory (counting from the right of the +list printed by dirs), starting with zero. +

    +
    - -
    pushd -
     
    pushd [-n] [+N | -N | dir]
    -

    + +

    +
    pushd
    +
    +
    pushd [-n] [+N | -N | dir]
    +
    -Save the current directory on the top of the directory stack -and then cd to dir. -With no arguments, pushd exchanges the top two directories +

    Save the current directory on the top of the directory stack +and then cd to dir. +With no arguments, pushd exchanges the top two directories and makes the new top the current directory. -

    - -

    -
    -n -
    Suppresses the normal change of directory when rotating or +

    +
    +
    -n
    +

    Suppresses the normal change of directory when rotating or adding directories to the stack, so that only the stack is manipulated. -

    +N -
    Brings the Nth directory (counting from the left of the -list printed by dirs, starting with zero) to the top of +

    +
    +N
    +

    Brings the Nth directory (counting from the left of the +list printed by dirs, starting with zero) to the top of the list by rotating the stack. -

    -N -
    Brings the Nth directory (counting from the right of the -list printed by dirs, starting with zero) to the top of +

    +
    -N
    +

    Brings the Nth directory (counting from the right of the +list printed by dirs, starting with zero) to the top of the list by rotating the stack. -

    dir -
    Makes dir be the top of the stack, making +

    +
    dir
    +

    Makes dir be the top of the stack, making it the new current directory as if it had been supplied as an argument -to the cd builtin. -

    -
    -

    +to the cd builtin. +

    +
    +
    +
    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    6.9 Controlling the Prompt

    - -

    +


    + + + +

    6.9 Controlling the Prompt

    + -The value of the variable PROMPT_COMMAND is examined just before -Bash prints each primary prompt. If PROMPT_COMMAND is set and +

    The value of the variable PROMPT_COMMAND is examined just before +Bash prints each primary prompt. If PROMPT_COMMAND is set and has a non-null value, then the value is executed just as if it had been typed on the command line. -

    - -In addition, the following table describes the special characters which -can appear in the prompt variables PS1 to PS4: -

    - -

    -
    \a -
    A bell character. -
    \d -
    The date, in "Weekday Month Date" format (e.g., "Tue May 26"). -
    \D{format} -
    The format is passed to strftime(3) and the result is inserted -into the prompt string; an empty format results in a locale-specific +

    +

    In addition, the following table describes the special characters which +can appear in the prompt variables PS1 to PS4: +

    +
    +
    \a
    +

    A bell character. +

    +
    \d
    +

    The date, in "Weekday Month Date" format (e.g., "Tue May 26"). +

    +
    \D{format}
    +

    The format is passed to strftime(3) and the result is inserted +into the prompt string; an empty format results in a locale-specific time representation. The braces are required. -

    \e -
    An escape character. -
    \h -
    The hostname, up to the first `.'. -
    \H -
    The hostname. -
    \j -
    The number of jobs currently managed by the shell. -
    \l -
    The basename of the shell's terminal device name. -
    \n -
    A newline. -
    \r -
    A carriage return. -
    \s -
    The name of the shell, the basename of $0 (the portion +

    +
    \e
    +

    An escape character. +

    +
    \h
    +

    The hostname, up to the first ‘.’. +

    +
    \H
    +

    The hostname. +

    +
    \j
    +

    The number of jobs currently managed by the shell. +

    +
    \l
    +

    The basename of the shell’s terminal device name. +

    +
    \n
    +

    A newline. +

    +
    \r
    +

    A carriage return. +

    +
    \s
    +

    The name of the shell, the basename of $0 (the portion following the final slash). -

    \t -
    The time, in 24-hour HH:MM:SS format. -
    \T -
    The time, in 12-hour HH:MM:SS format. -
    \@ -
    The time, in 12-hour am/pm format. -
    \A -
    The time, in 24-hour HH:MM format. -
    \u -
    The username of the current user. -
    \v -
    The version of Bash (e.g., 2.00) -
    \V -
    The release of Bash, version + patchlevel (e.g., 2.00.0) -
    \w -
    The current working directory, with $HOME abbreviated with a tilde -(uses the $PROMPT_DIRTRIM variable). -
    \W -
    The basename of $PWD, with $HOME abbreviated with a tilde. -
    \! -
    The history number of this command. -
    \# -
    The command number of this command. -
    \$ -
    If the effective uid is 0, #, otherwise $. -
    \nnn -
    The character whose ASCII code is the octal value nnn. -
    \\ -
    A backslash. -
    \[ -
    Begin a sequence of non-printing characters. This could be used to +

    +
    \t
    +

    The time, in 24-hour HH:MM:SS format. +

    +
    \T
    +

    The time, in 12-hour HH:MM:SS format. +

    +
    \@
    +

    The time, in 12-hour am/pm format. +

    +
    \A
    +

    The time, in 24-hour HH:MM format. +

    +
    \u
    +

    The username of the current user. +

    +
    \v
    +

    The version of Bash (e.g., 2.00) +

    +
    \V
    +

    The release of Bash, version + patchlevel (e.g., 2.00.0) +

    +
    \w
    +

    The current working directory, with $HOME abbreviated with a tilde +(uses the $PROMPT_DIRTRIM variable). +

    +
    \W
    +

    The basename of $PWD, with $HOME abbreviated with a tilde. +

    +
    \!
    +

    The history number of this command. +

    +
    \#
    +

    The command number of this command. +

    +
    \$
    +

    If the effective uid is 0, #, otherwise $. +

    +
    \nnn
    +

    The character whose ASCII code is the octal value nnn. +

    +
    \\
    +

    A backslash. +

    +
    \[
    +

    Begin a sequence of non-printing characters. This could be used to embed a terminal control sequence into the prompt. -

    \] -
    End a sequence of non-printing characters. -
    -

    +

    +
    \]
    +

    End a sequence of non-printing characters. +

    +
    -The command number and the history number are usually different: +

    The command number and the history number are usually different: the history number of a command is its position in the history list, which may include commands restored from the history file -(see section 9.1 Bash History Facilities), while the command number is +(see Bash History Facilities), while the command number is the position in the sequence of commands executed during the current shell session. -

    - -After the string is decoded, it is expanded via +

    +

    After the string is decoded, it is expanded via parameter expansion, command substitution, arithmetic expansion, and quote removal, subject to the value of the -promptvars shell option (see section 4.2 Bash Builtin Commands). -

    +promptvars shell option (see Bash Builtins). +

    +
    + + + +

    6.10 The Restricted Shell

    + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    6.10 The Restricted Shell

    - -

    - -If Bash is started with the name rbash, or the -`--restricted' +

    If Bash is started with the name rbash, or the +--restricted or -`-r' +-r option is supplied at invocation, the shell becomes restricted. A restricted shell is used to set up an environment more controlled than the standard shell. -A restricted shell behaves identically to bash +A restricted shell behaves identically to bash with the exception that the following are disallowed or not performed: -

    - -

      -
    • -Changing directories with the cd builtin. -
    • -Setting or unsetting the values of the SHELL, PATH, -ENV, or BASH_ENV variables. -
    • -Specifying command names containing slashes. -
    • -Specifying a filename containing a slash as an argument to the . +

      +
        +
      • Changing directories with the cd builtin. +
      • Setting or unsetting the values of the SHELL, PATH, +ENV, or BASH_ENV variables. +
      • Specifying command names containing slashes. +
      • Specifying a filename containing a slash as an argument to the . builtin command. -
      • -Specifying a filename containing a slash as an argument to the `-p' -option to the hash builtin command. -
      • -Importing function definitions from the shell environment at startup. -
      • -Parsing the value of SHELLOPTS from the shell environment at startup. -
      • -Redirecting output using the `>', `>|', `<>', `>&', -`&>', and `>>' redirection operators. -
      • -Using the exec builtin to replace the shell with another command. -
      • -Adding or deleting builtin commands with the -`-f' and `-d' options to the enable builtin. -
      • -Using the enable builtin command to enable disabled shell builtins. -
      • -Specifying the `-p' option to the command builtin. -
      • -Turning off restricted mode with `set +r' or `set +o restricted'. -
      -

      +

    • Specifying a filename containing a slash as an argument to the -p +option to the hash builtin command. +
    • Importing function definitions from the shell environment at startup. +
    • Parsing the value of SHELLOPTS from the shell environment at startup. +
    • Redirecting output using the ‘>’, ‘>|’, ‘<>’, ‘>&’, +‘&>’, and ‘>>’ redirection operators. +
    • Using the exec builtin to replace the shell with another command. +
    • Adding or deleting builtin commands with the +-f and -d options to the enable builtin. +
    • Using the enable builtin command to enable disabled shell builtins. +
    • Specifying the -p option to the command builtin. +
    • Turning off restricted mode with ‘set +r’ or ‘set +o restricted’. +
    -These restrictions are enforced after any startup files are read. -

    - -When a command that is found to be a shell script is executed -(see section 3.8 Shell Scripts), rbash turns off any restrictions in +

    These restrictions are enforced after any startup files are read. +

    +

    When a command that is found to be a shell script is executed +(see Shell Scripts), rbash turns off any restrictions in the shell spawned to execute the script. -

    +

    +
    + + + +

    6.11 Bash POSIX Mode

    + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    6.11 Bash POSIX Mode

    - -

    - -Starting Bash with the `--posix' command-line option or executing -`set -o posix' while Bash is running will cause Bash to conform more -closely to the POSIX standard by changing the behavior to -match that specified by POSIX in areas where the Bash default differs. -

    - -When invoked as sh, Bash enters POSIX mode after reading the +

    Starting Bash with the --posix command-line option or executing +‘set -o posix’ while Bash is running will cause Bash to conform more +closely to the POSIX standard by changing the behavior to +match that specified by POSIX in areas where the Bash default differs. +

    +

    When invoked as sh, Bash enters POSIX mode after reading the startup files. -

    +

    +

    The following list is what’s changed when ‘POSIX mode’ is in effect: +

    +
      +
    1. When a command in the hash table no longer exists, Bash will re-search +$PATH to find the new location. This is also available with +‘shopt -s checkhash’. -The following list is what's changed when `POSIX mode' is in effect: -

      +

    2. The message printed by the job control code and builtins when a job +exits with a non-zero status is ‘Done(status)’. -
        -
      1. -When a command in the hash table no longer exists, Bash will re-search -$PATH to find the new location. This is also available with -`shopt -s checkhash'. -

        +

      2. The message printed by the job control code and builtins when a job +is stopped is ‘Stopped(signame)’, where signame is, for +example, SIGTSTP. -
      3. -The message printed by the job control code and builtins when a job -exits with a non-zero status is `Done(status)'. -

        +

      4. Alias expansion is always enabled, even in non-interactive shells. -
      5. -The message printed by the job control code and builtins when a job -is stopped is `Stopped(signame)', where signame is, for -example, SIGTSTP. -

        - -

      6. -The bg builtin uses the required format to describe each job placed -in the background, which does not include an indication of whether the job -is the current or previous job. -

        - -

      7. -Reserved words appearing in a context where reserved words are recognized +
      8. Reserved words appearing in a context where reserved words are recognized do not undergo alias expansion. -

        -

      9. -The POSIX PS1 and PS2 expansions of `!' to -the history number and `!!' to `!' are enabled, -and parameter expansion is performed on the values of PS1 and -PS2 regardless of the setting of the promptvars option. -

        +

      10. The POSIX PS1 and PS2 expansions of ‘!’ to +the history number and ‘!!’ to ‘!’ are enabled, +and parameter expansion is performed on the values of PS1 and +PS2 regardless of the setting of the promptvars option. -
      11. -The POSIX startup files are executed ($ENV) rather than +
      12. The POSIX startup files are executed ($ENV) rather than the normal Bash files. -

        -

      13. -Tilde expansion is only performed on assignments preceding a command +
      14. Tilde expansion is only performed on assignments preceding a command name, rather than on all assignment statements on the line. -

        -

      15. -The command builtin does not prevent builtins that take assignment -statements as arguments from expanding them as assignment statements; -when not in POSIX mode, assignment builtins lose their assignment -statement expansion properties when preceded by command. -

        +

      16. The default history file is ~/.sh_history (this is the +default value of $HISTFILE). -
      17. -The default history file is `~/.sh_history' (this is the -default value of $HISTFILE). -

        - -

      18. -The output of `kill -l' prints all the signal names on a single line, -separated by spaces, without the `SIG' prefix. -

        - -

      19. -The kill builtin does not accept signal names with a `SIG' -prefix. -

        - -

      20. -Non-interactive shells exit if filename in . filename -is not found. -

        - -

      21. -Non-interactive shells exit if a syntax error in an arithmetic expansion -results in an invalid expression. -

        - -

      22. -Non-interactive shells exit on word expansion errors. -

        - -

      23. -Non-interactive shells exit if there is a syntax error in a script read -with the . or source builtins, or in a string processed by -the eval builtin. -

        - -

      24. -Redirection operators do not perform filename expansion on the word +
      25. Redirection operators do not perform filename expansion on the word in the redirection unless the shell is interactive. -

        -

      26. -Redirection operators do not perform word splitting on the word in the +
      27. Redirection operators do not perform word splitting on the word in the redirection. -

        -

      28. -Function names must be valid shell names. That is, they may not +
      29. Function names must be valid shell names. That is, they may not contain characters other than letters, digits, and underscores, and may not start with a digit. Declaring a function with an invalid name causes a fatal syntax error in non-interactive shells. -

        -

      30. -Function names may not be the same as one of the POSIX special +
      31. Function names may not be the same as one of the POSIX special builtins. -

        -

      32. -POSIX special builtins are found before shell functions +
      33. POSIX special builtins are found before shell functions during command lookup. -

        -

      34. -Literal tildes that appear as the first character in elements of -the PATH variable are not expanded as described above -under 3.5.2 Tilde Expansion. -

        +

      35. Literal tildes that appear as the first character in elements of +the PATH variable are not expanded as described above +under Tilde Expansion. -
      36. -The time reserved word may be used by itself as a command. When +
      37. The time reserved word may be used by itself as a command. When used in this way, it displays timing statistics for the shell and its -completed children. The TIMEFORMAT variable controls the format +completed children. The TIMEFORMAT variable controls the format of the timing information. -

        -

      38. -When parsing and expanding a ${...} expansion that appears within +
      39. When parsing and expanding a ${…} expansion that appears within double quotes, single quotes are no longer special and cannot be used to quote a closing brace or other special character, unless the operator is one of those defined to perform pattern removal. In this case, they do not have to appear as matched pairs. -

        -

      40. -The parser does not recognize time as a reserved word if the next -token begins with a `-'. -

        +

      41. The parser does not recognize time as a reserved word if the next +token begins with a ‘-’. -
      42. -If a POSIX special builtin returns an error status, a +
      43. The ‘!’ character does not introduce history expansion within a +double-quoted string, even if the histexpand option is enabled. + +
      44. If a POSIX special builtin returns an error status, a non-interactive shell exits. The fatal errors are those listed in -the POSIX standard, and include things like passing incorrect options, +the POSIX standard, and include things like passing incorrect options, redirection errors, variable assignment errors for assignments preceding the command name, and so on. -

        -

      45. -A non-interactive shell exits with an error status if a variable +
      46. A non-interactive shell exits with an error status if a variable assignment error occurs when no command name follows the assignment statements. A variable assignment error occurs, for example, when trying to assign a value to a readonly variable. -

        -

      47. -A non-interactive shell exits with an error status if a variable +
      48. A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a special builtin, but not with any other simple command. -

        -

      49. -A non-interactive shell exits with an error status if the iteration -variable in a for statement or the selection variable in a -select statement is a readonly variable. -

        +

      50. A non-interactive shell exits with an error status if the iteration +variable in a for statement or the selection variable in a +select statement is a readonly variable. -
      51. -Process substitution is not available. -

        +

      52. Non-interactive shells exit if filename in . filename +is not found. -
      53. -While variable indirection is available, it may not be applied to the -`#' and `?' special parameters. -

        +

      54. Non-interactive shells exit if a syntax error in an arithmetic expansion +results in an invalid expression. -
      55. -Assignment statements preceding POSIX special builtins +
      56. Non-interactive shells exit on word expansion errors. + +
      57. Non-interactive shells exit if there is a syntax error in a script read +with the . or source builtins, or in a string processed by +the eval builtin. + +
      58. Process substitution is not available. + +
      59. While variable indirection is available, it may not be applied to the +‘#’ and ‘?’ special parameters. + +
      60. Assignment statements preceding POSIX special builtins persist in the shell environment after the builtin completes. -

        -

      61. -Assignment statements preceding shell function calls persist in the -shell environment after the function returns, as if a POSIX +
      62. Assignment statements preceding shell function calls persist in the +shell environment after the function returns, as if a POSIX special builtin command had been executed. -

        -

      63. -The export and readonly builtin commands display their -output in the format required by POSIX. -

        +

      64. The command builtin does not prevent builtins that take assignment +statements as arguments from expanding them as assignment statements; +when not in POSIX mode, assignment builtins lose their assignment +statement expansion properties when preceded by command. -
      65. -The trap builtin displays signal names without the leading -SIG. -

        +

      66. The bg builtin uses the required format to describe each job placed +in the background, which does not include an indication of whether the job +is the current or previous job. -
      67. -The trap builtin doesn't check the first argument for a possible +
      68. The output of ‘kill -l’ prints all the signal names on a single line, +separated by spaces, without the ‘SIG’ prefix. + +
      69. The kill builtin does not accept signal names with a ‘SIG’ +prefix. + +
      70. The export and readonly builtin commands display their +output in the format required by POSIX. + +
      71. The trap builtin displays signal names without the leading +SIG. + +
      72. The trap builtin doesn’t check the first argument for a possible signal specification and revert the signal handling to the original disposition if it is, unless that argument consists solely of digits and is a valid signal number. If users want to reset the handler for a given -signal to the original disposition, they should use `-' as the +signal to the original disposition, they should use ‘-’ as the first argument. -

        -

      73. -The . and source builtins do not search the current directory -for the filename argument if it is not found by searching PATH. -

        +

      74. The . and source builtins do not search the current directory +for the filename argument if it is not found by searching PATH. -
      75. -Subshells spawned to execute command substitutions inherit the value of -the `-e' option from the parent shell. When not in POSIX mode, -Bash clears the `-e' option in such subshells. -

        +

      76. Enabling POSIX mode has the effect of setting the +inherit_errexit option, so +subshells spawned to execute command substitutions inherit the value of +the -e option from the parent shell. +When the inherit_errexit option is not enabled, +Bash clears the -e option in such subshells. -
      77. -Alias expansion is always enabled, even in non-interactive shells. -

        - -

      78. -When the alias builtin displays alias definitions, it does not -display them with a leading `alias ' unless the `-p' option +
      79. When the alias builtin displays alias definitions, it does not +display them with a leading ‘alias ’ unless the -p option is supplied. -

        -

      80. -When the set builtin is invoked without options, it does not display +
      81. When the set builtin is invoked without options, it does not display shell function names and definitions. -

        -

      82. -When the set builtin is invoked without options, it displays +
      83. When the set builtin is invoked without options, it displays variable values without quotes, unless they contain shell metacharacters, even if the result contains nonprinting characters. -

        -

      84. -When the cd builtin is invoked in logical mode, and the pathname -constructed from $PWD and the directory name supplied as an argument -does not refer to an existing directory, cd will fail instead of -falling back to physical mode. -

        +

      85. When the cd builtin is invoked in logical mode, and the pathname +constructed from $PWD and the directory name supplied as an argument +does not refer to an existing directory, cd will fail instead of +falling back to physical mode. -
      86. -The pwd builtin verifies that the value it prints is the same as the +
      87. The pwd builtin verifies that the value it prints is the same as the current directory, even if it is not asked to check the file system with the -`-P' option. -

        +-P option. -

      88. -When listing the history, the fc builtin does not include an +
      89. When listing the history, the fc builtin does not include an indication of whether or not a history entry has been modified. -

        -

      90. -The default editor used by fc is ed. -

        +

      91. The default editor used by fc is ed. -
      92. -The type and command builtins will not report a non-executable +
      93. The type and command builtins will not report a non-executable file as having been found, though the shell will attempt to execute such a -file if it is the only so-named file found in $PATH. -

        +file if it is the only so-named file found in $PATH. -

      94. -The vi editing mode will invoke the vi editor directly when -the `v' command is run, instead of checking $VISUAL and -$EDITOR. -

        +

      95. The vi editing mode will invoke the vi editor directly when +the ‘v’ command is run, instead of checking $VISUAL and +$EDITOR. -
      96. -When the xpg_echo option is enabled, Bash does not attempt to interpret -any arguments to echo as options. Each argument is displayed, after +
      97. When the xpg_echo option is enabled, Bash does not attempt to interpret +any arguments to echo as options. Each argument is displayed, after escape characters are converted. -

        -

      98. -The ulimit builtin uses a block size of 512 bytes for the `-c' -and `-f' options. -

        +

      99. The ulimit builtin uses a block size of 512 bytes for the -c +and -f options. -
      100. -The arrival of SIGCHLD when a trap is set on SIGCHLD does -not interrupt the wait builtin and cause it to return immediately. +
      101. The arrival of SIGCHLD when a trap is set on SIGCHLD does +not interrupt the wait builtin and cause it to return immediately. The trap command is run once for each child that exits. -

        -

      102. -The read builtin may be interrupted by a signal for which a trap +
      103. The read builtin may be interrupted by a signal for which a trap has been set. -If Bash receives a trapped signal while executing read, the trap -handler executes and read returns an exit status greater than 128. -

        +If Bash receives a trapped signal while executing read, the trap +handler executes and read returns an exit status greater than 128. -

      -

      +

    -There is other POSIX behavior that Bash does not implement by -default even when in POSIX mode. +

    There is other POSIX behavior that Bash does not implement by +default even when in POSIX mode. Specifically: -

    +

    +
      +
    1. The fc builtin checks $EDITOR as a program to edit history +entries if FCEDIT is unset, rather than defaulting directly to +ed. fc uses ed if EDITOR is unset. -
        +
      1. As noted above, Bash requires the xpg_echo option to be enabled for +the echo builtin to be fully conformant. -
      2. -The fc builtin checks $EDITOR as a program to edit history -entries if FCEDIT is unset, rather than defaulting directly to -ed. fc uses ed if EDITOR is unset. -

        +

      -
    2. -As noted above, Bash requires the xpg_echo option to be enabled for -the echo builtin to be fully conformant. -

      +

      Bash can be configured to be POSIX-conformant by default, by specifying +the --enable-strict-posix-default to configure when building +(see Optional Features). +

      +
      + +
      +

      +Next: , Previous: , Up: Top   [Contents][Index]

      +
      + +

      7 Job Control

      -
    -

    - -Bash can be configured to be POSIX-conformant by default, by specifying -the `--enable-strict-posix-default' to configure when building -(see section 10.8 Optional Features). -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    7. Job Control

    - -

    - -This chapter discusses what job control is, how it works, and how +

    This chapter discusses what job control is, how it works, and how Bash allows you to access its facilities. -

    +

    + + + + + -
    - - - -
    7.1 Job Control Basics  How job control works.
    7.2 Job Control Builtins  Bash builtin commands used to interact - with job control.
    7.3 Job Control Variables  Variables Bash uses to customize job - control.
    -

    +


    + + + +

    7.1 Job Control Basics

    + + + + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    7.1 Job Control Basics

    - -

    - -Job control +

    Job control refers to the ability to selectively stop (suspend) the execution of processes and continue (resume) their execution at a later point. A user typically employs this facility via an interactive interface supplied jointly -by the operating system kernel's terminal driver and Bash. -

    - -The shell associates a job with each pipeline. It keeps a +by the operating system kernel’s terminal driver and Bash. +

    +

    The shell associates a job with each pipeline. It keeps a table of currently executing jobs, which may be listed with the -jobs command. When Bash starts a job +jobs command. When Bash starts a job asynchronously, it prints a line that looks like: -
     
    [1] 25647
    -
    indicating that this job is job number 1 and that the process ID +

    +
    [1] 25647
    +
    +

    indicating that this job is job number 1 and that the process ID of the last process in the pipeline associated with this job is 25647. All of the processes in a single pipeline are members of -the same job. Bash uses the job abstraction as the +the same job. Bash uses the job abstraction as the basis for job control. -

    - -To facilitate the implementation of the user interface to job +

    +

    To facilitate the implementation of the user interface to job control, the operating system maintains the notion of a current terminal -process group ID. Members of this process group (processes whose -process group ID is equal to the current terminal process group -ID) receive keyboard-generated signals such as SIGINT. +process group ID. Members of this process group (processes whose +process group ID is equal to the current terminal process group +ID) receive keyboard-generated signals such as SIGINT. These processes are said to be in the foreground. Background -processes are those whose process group ID differs from the -terminal's; such processes are immune to keyboard-generated +processes are those whose process group ID differs from the +terminal’s; such processes are immune to keyboard-generated signals. Only foreground processes are allowed to read from or, if -the user so specifies with stty tostop, write to the terminal. +the user so specifies with stty tostop, write to the terminal. Background processes which attempt to -read from (write to when stty tostop is in effect) the -terminal are sent a SIGTTIN (SIGTTOU) -signal by the kernel's terminal driver, +read from (write to when stty tostop is in effect) the +terminal are sent a SIGTTIN (SIGTTOU) +signal by the kernel’s terminal driver, which, unless caught, suspends the process. -

    - -If the operating system on which Bash is running supports +

    +

    If the operating system on which Bash is running supports job control, Bash contains facilities to use it. Typing the -suspend character (typically `^Z', Control-Z) while a +suspend character (typically ‘^Z’, Control-Z) while a process is running causes that process to be stopped and returns -control to Bash. Typing the delayed suspend character -(typically `^Y', Control-Y) causes the process to be stopped +control to Bash. Typing the delayed suspend character +(typically ‘^Y’, Control-Y) causes the process to be stopped when it attempts to read input from the terminal, and control to be returned to Bash. The user then manipulates the state of -this job, using the bg command to continue it in the -background, the fg command to continue it in the -foreground, or the kill command to kill it. A `^Z' +this job, using the bg command to continue it in the +background, the fg command to continue it in the +foreground, or the kill command to kill it. A ‘^Z’ takes effect immediately, and has the additional side effect of causing pending output and typeahead to be discarded. -

    - -There are a number of ways to refer to a job in the shell. The -character `%' introduces a job specification (jobspec). -

    - -Job number n may be referred to as `%n'. -The symbols `%%' and `%+' refer to the shell's notion of the +

    +

    There are a number of ways to refer to a job in the shell. The +character ‘%’ introduces a job specification (jobspec). +

    +

    Job number n may be referred to as ‘%n’. +The symbols ‘%%’ and ‘%+’ refer to the shell’s notion of the current job, which is the last job stopped while it was in the foreground or started in the background. -A single `%' (with no accompanying job specification) also refers +A single ‘%’ (with no accompanying job specification) also refers to the current job. -The previous job may be referenced using `%-'. -If there is only a single job, `%+' and `%-' can both be used +The previous job may be referenced using ‘%-’. +If there is only a single job, ‘%+’ and ‘%-’ can both be used to refer to that job. -In output pertaining to jobs (e.g., the output of the jobs -command), the current job is always flagged with a `+', and the -previous job with a `-'. -

    - -A job may also be referred to +In output pertaining to jobs (e.g., the output of the jobs +command), the current job is always flagged with a ‘+’, and the +previous job with a ‘-’. +

    +

    A job may also be referred to using a prefix of the name used to start it, or using a substring -that appears in its command line. For example, `%ce' refers -to a stopped ce job. Using `%?ce', on the -other hand, refers to any job containing the string `ce' in +that appears in its command line. For example, ‘%ce’ refers +to a stopped ce job. Using ‘%?ce’, on the +other hand, refers to any job containing the string ‘ce’ in its command line. If the prefix or substring matches more than one job, Bash reports an error. -

    - -Simply naming a job can be used to bring it into the foreground: -`%1' is a synonym for `fg %1', bringing job 1 from the -background into the foreground. Similarly, `%1 &' resumes -job 1 in the background, equivalent to `bg %1' -

    - -The shell learns immediately whenever a job changes state. +

    +

    Simply naming a job can be used to bring it into the foreground: +‘%1’ is a synonym for ‘fg %1’, bringing job 1 from the +background into the foreground. Similarly, ‘%1 &’ resumes +job 1 in the background, equivalent to ‘bg %1’ +

    +

    The shell learns immediately whenever a job changes state. Normally, Bash waits until it is about to print a prompt -before reporting changes in a job's status so as to not interrupt +before reporting changes in a job’s status so as to not interrupt any other output. -If the `-b' option to the set builtin is enabled, -Bash reports such changes immediately (see section 4.3.1 The Set Builtin). -Any trap on SIGCHLD is executed for each child process +If the -b option to the set builtin is enabled, +Bash reports such changes immediately (see The Set Builtin). +Any trap on SIGCHLD is executed for each child process that exits. -

    - -If an attempt to exit Bash is made while jobs are stopped, (or running, if -the checkjobs option is enabled -- see 4.3.2 The Shopt Builtin), the -shell prints a warning message, and if the checkjobs option is +

    +

    If an attempt to exit Bash is made while jobs are stopped, (or running, if +the checkjobs option is enabled – see The Shopt Builtin), the +shell prints a warning message, and if the checkjobs option is enabled, lists the jobs and their statuses. -The jobs command may then be used to inspect their status. +The jobs command may then be used to inspect their status. If a second attempt to exit is made without an intervening command, Bash does not print another warning, and any stopped jobs are terminated. -

    +

    +
    + + + +

    7.2 Job Control Builtins

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    7.2 Job Control Builtins

    - -

    +

    +
    bg
    +
    +
    +
    bg [jobspec …]
    +
    -
    - -
    bg -
    -
     
    bg [jobspec ...]
    -

    - -Resume each suspended job jobspec in the background, as if it -had been started with `&'. -If jobspec is not supplied, the current job is used. +

    Resume each suspended job jobspec in the background, as if it +had been started with ‘&’. +If jobspec is not supplied, the current job is used. The return status is zero unless it is run when job control is not enabled, or, when run with job control enabled, any -jobspec was not found or specifies a job +jobspec was not found or specifies a job that was started without job control. -

    +

    +
    +
    fg
    +
    +
    +
    fg [jobspec]
    +
    -
    fg -
    -
     
    fg [jobspec]
    -

    - -Resume the job jobspec in the foreground and make it the current job. -If jobspec is not supplied, the current job is used. +

    Resume the job jobspec in the foreground and make it the current job. +If jobspec is not supplied, the current job is used. The return status is that of the command placed into the foreground, or non-zero if run when job control is disabled or, when run with -job control enabled, jobspec does not specify a valid job or -jobspec specifies a job that was started without job control. -

    +job control enabled, jobspec does not specify a valid job or +jobspec specifies a job that was started without job control. +

    +
    +
    jobs
    +
    +
    +
    jobs [-lnprs] [jobspec]
    +jobs -x command [arguments]
    +
    -
    jobs -
    -
     
    jobs [-lnprs] [jobspec]
    -jobs -x command [arguments]
    -

    - -The first form lists the active jobs. The options have the +

    The first form lists the active jobs. The options have the following meanings: -

    - -

    -
    -l -
    List process IDs in addition to the normal information. -

    - -

    -n -
    Display information only about jobs that have changed status since +

    +
    +
    -l
    +

    List process IDs in addition to the normal information. +

    +
    +
    -n
    +

    Display information only about jobs that have changed status since the user was last notified of their status. -

    +

    +
    +
    -p
    +

    List only the process ID of the job’s process group leader. +

    +
    +
    -r
    +

    Display only running jobs. +

    +
    +
    -s
    +

    Display only stopped jobs. +

    +
    -
    -p -
    List only the process ID of the job's process group leader. -

    - -

    -r -
    Display only running jobs. -

    - -

    -s -
    Display only stopped jobs. -
    -

    - -If jobspec is given, +

    If jobspec is given, output is restricted to information about that job. -If jobspec is not supplied, the status of all jobs is +If jobspec is not supplied, the status of all jobs is listed. -

    +

    +

    If the -x option is supplied, jobs replaces any +jobspec found in command or arguments with the +corresponding process group ID, and executes command, +passing it arguments, returning its exit status. +

    +
    +
    kill
    +
    +
    +
    kill [-s sigspec] [-n signum] [-sigspec] jobspec or pid
    +kill -l|-L [exit_status]
    +
    -If the `-x' option is supplied, jobs replaces any -jobspec found in command or arguments with the -corresponding process group ID, and executes command, -passing it arguments, returning its exit status. -

    - -

    kill -
    -
     
    kill [-s sigspec] [-n signum] [-sigspec] jobspec or pid
    -kill -l|-L [exit_status]
    -

    - -Send a signal specified by sigspec or signum to the process -named by job specification jobspec or process ID pid. -sigspec is either a case-insensitive signal name such as -SIGINT (with or without the SIG prefix) -or a signal number; signum is a signal number. -If sigspec and signum are not present, SIGTERM is used. -The `-l' option lists the signal names. -If any arguments are supplied when `-l' is given, the names of the +

    Send a signal specified by sigspec or signum to the process +named by job specification jobspec or process ID pid. +sigspec is either a case-insensitive signal name such as +SIGINT (with or without the SIG prefix) +or a signal number; signum is a signal number. +If sigspec and signum are not present, SIGTERM is used. +The -l option lists the signal names. +If any arguments are supplied when -l is given, the names of the signals corresponding to the arguments are listed, and the return status is zero. -exit_status is a number specifying a signal number or the exit +exit_status is a number specifying a signal number or the exit status of a process terminated by a signal. -The `-L' option is equivalent to `-l'. +The -L option is equivalent to -l. The return status is zero if at least one signal was successfully sent, or non-zero if an error occurs or an invalid option is encountered. -

    +

    +
    +
    wait
    +
    +
    +
    wait [-n] [jobspec or pid …]
    +
    -
    wait -
    -
     
    wait [-n] [jobspec or pid ...]
    -

    - -Wait until the child process specified by each process ID pid -or job specification jobspec exits and return the exit status of the +

    Wait until the child process specified by each process ID pid +or job specification jobspec exits and return the exit status of the last command waited for. If a job spec is given, all processes in the job are waited for. If no arguments are given, all currently active child processes are waited for, and the return status is zero. -If the `-n' option is supplied, wait waits for any job to +If the -n option is supplied, wait waits for any job to terminate and returns its exit status. -If neither jobspec nor pid specifies an active child process +If neither jobspec nor pid specifies an active child process of the shell, the return status is 127. -

    +

    +
    +
    disown
    +
    +
    +
    disown [-ar] [-h] [jobspec … | pid … ]
    +
    -
    disown -
    -
     
    disown [-ar] [-h] [jobspec ...]
    -

    - -Without options, remove each jobspec from the table of +

    Without options, remove each jobspec from the table of active jobs. -If the `-h' option is given, the job is not removed from the table, -but is marked so that SIGHUP is not sent to the job if the shell -receives a SIGHUP. -If jobspec is not present, and neither the `-a' nor the -`-r' option is supplied, the current job is used. -If no jobspec is supplied, the `-a' option means to remove or -mark all jobs; the `-r' option without a jobspec +If the -h option is given, the job is not removed from the table, +but is marked so that SIGHUP is not sent to the job if the shell +receives a SIGHUP. +If jobspec is not present, and neither the -a nor the +-r option is supplied, the current job is used. +If no jobspec is supplied, the -a option means to remove or +mark all jobs; the -r option without a jobspec argument restricts operation to running jobs. -

    +

    +
    +
    suspend
    +
    +
    +
    suspend [-f]
    +
    -
    suspend -
    -
     
    suspend [-f]
    -

    - -Suspend the execution of this shell until it receives a -SIGCONT signal. -A login shell cannot be suspended; the `-f' +

    Suspend the execution of this shell until it receives a +SIGCONT signal. +A login shell cannot be suspended; the -f option can be used to override this and force the suspension. -

    -

    +

    +
    -When job control is not active, the kill and wait -builtins do not accept jobspec arguments. They must be -supplied process IDs. -

    +

    When job control is not active, the kill and wait +builtins do not accept jobspec arguments. They must be +supplied process IDs. +

    +
    + +
    +

    +Previous: , Up: Job Control   [Contents][Index]

    +
    + +

    7.3 Job Control Variables

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    7.3 Job Control Variables

    - -

    - -

    - - -
    auto_resume -
    -This variable controls how the shell interacts with the user and +
    +
    auto_resume + +
    +

    This variable controls how the shell interacts with the user and job control. If this variable exists then single word simple commands without redirections are treated as candidates for resumption of an existing job. There is no ambiguity allowed; if there is more than one job beginning with the string typed, then the most recently accessed job will be selected. The name of a stopped job, in this context, is the command line -used to start it. If this variable is set to the value `exact', +used to start it. If this variable is set to the value ‘exact’, the string supplied must match the name of a stopped job exactly; -if set to `substring', +if set to ‘substring’, the string supplied needs to match a substring of the name of a -stopped job. The `substring' value provides functionality -analogous to the `%?' job ID (see section 7.1 Job Control Basics). +stopped job. The ‘substring’ value provides functionality +analogous to the ‘%?’ job ID (see Job Control Basics). If set to any other value, the supplied string must -be a prefix of a stopped job's name; this provides functionality -analogous to the `%' job ID. -

    +be a prefix of a stopped job’s name; this provides functionality +analogous to the ‘%’ job ID. +

    +
    +
    -
    -

    + - -

    - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8. Command Line Editing

    - -

    -This chapter describes the basic features of the GNU + +


    + +
    +

    +Next: , Previous: , Up: Top   [Contents][Index]

    +
    + +

    8 Command Line Editing

    + +

    This chapter describes the basic features of the GNU command line editing interface. Command line editing is provided by the Readline library, which is used by several different programs, including Bash. Command line editing is enabled by default when using an interactive shell, -unless the `--noediting' option is supplied at shell invocation. -Line editing is also used when using the `-e' option to the -read builtin command (see section 4.2 Bash Builtin Commands). +unless the --noediting option is supplied at shell invocation. +Line editing is also used when using the -e option to the +read builtin command (see Bash Builtins). By default, the line editing commands are similar to those of Emacs. A vi-style line editing interface is also available. -Line editing can be enabled at any time using the `-o emacs' or -`-o vi' options to the set builtin command -(see section 4.3.1 The Set Builtin), or disabled using the `+o emacs' or -`+o vi' options to set. -

    +Line editing can be enabled at any time using the -o emacs or +-o vi options to the set builtin command +(see The Set Builtin), or disabled using the +o emacs or ++o vi options to set. +

    + + + + + + + + + + -
    - - - - - - - - -
    8.1 Introduction to Line Editing  Notation used in this text.
    8.2 Readline Interaction  The minimum set of commands for editing a line.
    8.3 Readline Init File  Customizing Readline from a user's view.
    8.4 Bindable Readline Commands  A description of most of the Readline commands - available for binding
    8.5 Readline vi Mode  A short description of how to make Readline - behave like the vi editor.
    8.6 Programmable Completion  How to specify the possible completions for - a specific command.
    8.7 Programmable Completion Builtins  Builtin commands to specify how to - complete arguments for a particular command.
    8.8 A Programmable Completion Example  An example shell function for - generating possible completions.
    -

    +


    + + + +

    8.1 Introduction to Line Editing

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.1 Introduction to Line Editing

    - -

    - -The following paragraphs describe the notation used to represent +

    The following paragraphs describe the notation used to represent keystrokes. -

    - -The text C-k is read as `Control-K' and describes the character -produced when the k key is pressed while the Control key +

    +

    The text C-k is read as ‘Control-K’ and describes the character +produced when the k key is pressed while the Control key is depressed. -

    - -The text M-k is read as `Meta-K' and describes the character -produced when the Meta key (if you have one) is depressed, and the k +

    +

    The text M-k is read as ‘Meta-K’ and describes the character +produced when the Meta key (if you have one) is depressed, and the k key is pressed. -The Meta key is labeled ALT on many keyboards. -On keyboards with two keys labeled ALT (usually to either side of -the space bar), the ALT on the left side is generally set to +The Meta key is labeled ALT on many keyboards. +On keyboards with two keys labeled ALT (usually to either side of +the space bar), the ALT on the left side is generally set to work as a Meta key. -The ALT key on the right may also be configured to work as a +The ALT key on the right may also be configured to work as a Meta key or may be configured as some other modifier, such as a Compose key for typing accented characters. -

    - -If you do not have a Meta or ALT key, or another key working as -a Meta key, the identical keystroke can be generated by typing ESC -first, and then typing k. -Either process is known as metafying the k key. -

    - -The text M-C-k is read as `Meta-Control-k' and describes the -character produced by metafying C-k. -

    - -In addition, several keys have their own names. Specifically, -DEL, ESC, LFD, SPC, RET, and TAB all +

    +

    If you do not have a Meta or ALT key, or another key working as +a Meta key, the identical keystroke can be generated by typing ESC +first, and then typing k. +Either process is known as metafying the k key. +

    +

    The text M-C-k is read as ‘Meta-Control-k’ and describes the +character produced by metafying C-k. +

    +

    In addition, several keys have their own names. Specifically, +DEL, ESC, LFD, SPC, RET, and TAB all stand for themselves when seen in this text, or in an init file -(see section 8.3 Readline Init File). -If your keyboard lacks a LFD key, typing C-j will +(see Readline Init File). +If your keyboard lacks a LFD key, typing C-j will produce the desired character. -The RET key may be labeled Return or Enter on +The RET key may be labeled Return or Enter on some keyboards. -

    +

    +
    + + + +

    8.2 Readline Interaction

    + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.2 Readline Interaction

    - -

    - -Often during an interactive session you type in a long line of text, +

    Often during an interactive session you type in a long line of text, only to notice that the first word on the line is misspelled. The Readline library gives you a set of commands for manipulating the text as you type it in, allowing you to just fix your typo, and not forcing you to retype the majority of the line. Using these editing commands, you move the cursor to the place that needs correction, and delete or insert the text of the corrections. Then, when you are satisfied with -the line, you simply press RET. You do not have to be at the -end of the line to press RET; the entire line is accepted +the line, you simply press RET. You do not have to be at the +end of the line to press RET; the entire line is accepted regardless of the location of the cursor within the line. -

    +

    + + + + + + + -
    - - - - - -
    8.2.1 Readline Bare Essentials  The least you need to know about Readline.
    8.2.2 Readline Movement Commands  Moving about the input line.
    8.2.3 Readline Killing Commands  How to delete text, and how to get it back!
    8.2.4 Readline Arguments  Giving numeric arguments to commands.
    8.2.5 Searching for Commands in the History  Searching through previous lines.
    -

    +


    + + + +

    8.2.1 Readline Bare Essentials

    + + + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.2.1 Readline Bare Essentials

    - -

    - -In order to enter characters into the line, simply type them. The typed +

    In order to enter characters into the line, simply type them. The typed character appears where the cursor was, and then the cursor moves one space to the right. If you mistype a character, you can use your erase character to back up and delete the mistyped character. -

    - -Sometimes you may mistype a character, and +

    +

    Sometimes you may mistype a character, and not notice the error until you have typed several other characters. In -that case, you can type C-b to move the cursor to the left, and then +that case, you can type C-b to move the cursor to the left, and then correct your mistake. Afterwards, you can move the cursor to the right -with C-f. -

    - -When you add text in the middle of a line, you will notice that characters -to the right of the cursor are `pushed over' to make room for the text +with C-f. +

    +

    When you add text in the middle of a line, you will notice that characters +to the right of the cursor are ‘pushed over’ to make room for the text that you have inserted. Likewise, when you delete text behind the cursor, -characters to the right of the cursor are `pulled back' to fill in the +characters to the right of the cursor are ‘pulled back’ to fill in the blank space created by the removal of the text. A list of the bare essentials for editing the text of an input line follows. -

    - -

    -
    C-b -
    Move back one character. -
    C-f -
    Move forward one character. -
    DEL or Backspace -
    Delete the character to the left of the cursor. -
    C-d -
    Delete the character underneath the cursor. -
    Printing characters -
    Insert the character into the line at the cursor. -
    C-_ or C-x C-u -
    Undo the last editing command. You can undo all the way back to an +

    +
    +
    C-b
    +

    Move back one character. +

    +
    C-f
    +

    Move forward one character. +

    +
    DEL or Backspace
    +

    Delete the character to the left of the cursor. +

    +
    C-d
    +

    Delete the character underneath the cursor. +

    +
    Printing characters
    +

    Insert the character into the line at the cursor. +

    +
    C-_ or C-x C-u
    +

    Undo the last editing command. You can undo all the way back to an empty line. -

    -

    +

    +
    -(Depending on your configuration, the Backspace key be set to -delete the character to the left of the cursor and the DEL key set -to delete the character underneath the cursor, like C-d, rather +

    (Depending on your configuration, the Backspace key be set to +delete the character to the left of the cursor and the DEL key set +to delete the character underneath the cursor, like C-d, rather than the character to the left of the cursor.) -

    +

    +
    + + + +

    8.2.2 Readline Movement Commands

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.2.2 Readline Movement Commands

    - -

    -The above table describes the most basic keystrokes that you need +

    The above table describes the most basic keystrokes that you need in order to do editing of the input line. For your convenience, many -other commands have been added in addition to C-b, C-f, -C-d, and DEL. Here are some commands for moving more rapidly +other commands have been added in addition to C-b, C-f, +C-d, and DEL. Here are some commands for moving more rapidly about the line. -

    +

    +
    +
    C-a
    +

    Move to the start of the line. +

    +
    C-e
    +

    Move to the end of the line. +

    +
    M-f
    +

    Move forward a word, where a word is composed of letters and digits. +

    +
    M-b
    +

    Move backward a word. +

    +
    C-l
    +

    Clear the screen, reprinting the current line at the top. +

    +
    -
    -
    C-a -
    Move to the start of the line. -
    C-e -
    Move to the end of the line. -
    M-f -
    Move forward a word, where a word is composed of letters and digits. -
    M-b -
    Move backward a word. -
    C-l -
    Clear the screen, reprinting the current line at the top. -
    -

    - -Notice how C-f moves forward a character, while M-f moves +

    Notice how C-f moves forward a character, while M-f moves forward a word. It is a loose convention that control keystrokes operate on characters while meta keystrokes operate on words. -

    +

    +
    + + + +

    8.2.3 Readline Killing Commands

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.2.3 Readline Killing Commands

    - -

    + + - - -

    - -Killing text means to delete the text from the line, but to save -it away for later use, usually by yanking (re-inserting) +

    Killing text means to delete the text from the line, but to save +it away for later use, usually by yanking (re-inserting) it back into the line. -(`Cut' and `paste' are more recent jargon for `kill' and `yank'.) -

    - -If the description for a command says that it `kills' text, then you can +(‘Cut’ and ‘paste’ are more recent jargon for ‘kill’ and ‘yank’.) +

    +

    If the description for a command says that it ‘kills’ text, then you can be sure that you can get the text back in a different (or the same) place later. -

    - -When you use a kill command, the text is saved in a kill-ring. +

    +

    When you use a kill command, the text is saved in a kill-ring. Any number of consecutive kills save all of the killed text together, so that when you yank it back, you get it all. The kill ring is not line specific; the text that you killed on a previously typed line is available to be yanked back later, when you are typing another line. - -

    - -Here is the list of commands for killing text. -

    - -

    -
    C-k -
    Kill the text from the current cursor position to the end of the line. -

    - -

    M-d -
    Kill from the cursor to the end of the current word, or, if between + +

    +

    Here is the list of commands for killing text. +

    +
    +
    C-k
    +

    Kill the text from the current cursor position to the end of the line. +

    +
    +
    M-d
    +

    Kill from the cursor to the end of the current word, or, if between words, to the end of the next word. -Word boundaries are the same as those used by M-f. -

    - -

    M-DEL -
    Kill from the cursor the start of the current word, or, if between +Word boundaries are the same as those used by M-f. +

    +
    +
    M-DEL
    +

    Kill from the cursor the start of the current word, or, if between words, to the start of the previous word. -Word boundaries are the same as those used by M-b. -

    +Word boundaries are the same as those used by M-b. +

    +
    +
    C-w
    +

    Kill from the cursor to the previous whitespace. This is different than +M-DEL because the word boundaries differ. +

    +
    +
    -
    C-w -
    Kill from the cursor to the previous whitespace. This is different than -M-DEL because the word boundaries differ. -

    - -

    -

    - -Here is how to yank the text back into the line. Yanking +

    Here is how to yank the text back into the line. Yanking means to copy the most-recently-killed text from the kill buffer. -

    +

    +
    +
    C-y
    +

    Yank the most recently killed text back into the buffer at the cursor. +

    +
    +
    M-y
    +

    Rotate the kill-ring, and yank the new top. You can only do this if +the prior command is C-y or M-y. +

    +
    -
    -
    C-y -
    Yank the most recently killed text back into the buffer at the cursor. -

    +


    + + + +

    8.2.4 Readline Arguments

    -
    M-y -
    Rotate the kill-ring, and yank the new top. You can only do this if -the prior command is C-y or M-y. -
    -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.2.4 Readline Arguments

    - -

    - -You can pass numeric arguments to Readline commands. Sometimes the -argument acts as a repeat count, other times it is the sign of the +

    You can pass numeric arguments to Readline commands. Sometimes the +argument acts as a repeat count, other times it is the sign of the argument that is significant. If you pass a negative argument to a command which normally acts in a forward direction, that command will act in a backward direction. For example, to kill text back to the -start of the line, you might type `M-- C-k'. -

    - -The general way to pass numeric arguments to a command is to type meta -digits before the command. If the first `digit' typed is a minus -sign (`-'), then the sign of the argument will be negative. Once +start of the line, you might type ‘M-- C-k’. +

    +

    The general way to pass numeric arguments to a command is to type meta +digits before the command. If the first ‘digit’ typed is a minus +sign (‘-’), then the sign of the argument will be negative. Once you have typed one meta digit to get the argument started, you can type the remainder of the digits, and then the command. For example, to give -the C-d command an argument of 10, you could type `M-1 0 C-d', +the C-d command an argument of 10, you could type ‘M-1 0 C-d’, which will delete the next ten characters on the input line. -

    +

    +
    + + + +

    8.2.5 Searching for Commands in the History

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.2.5 Searching for Commands in the History

    - -

    - -Readline provides commands for searching through the command history -(see section 9.1 Bash History Facilities) +

    Readline provides commands for searching through the command history +(see Bash History Facilities) for lines containing a specified string. -There are two search modes: incremental and non-incremental. -

    - -Incremental searches begin before the user has finished typing the +There are two search modes: incremental and non-incremental. +

    +

    Incremental searches begin before the user has finished typing the search string. As each character of the search string is typed, Readline displays the next entry from the history matching the string typed so far. An incremental search requires only as many characters as needed to find the desired history entry. To search backward in the history for a particular string, type -C-r. Typing C-s searches forward through the history. -The characters present in the value of the isearch-terminators variable +C-r. Typing C-s searches forward through the history. +The characters present in the value of the isearch-terminators variable are used to terminate an incremental search. -If that variable has not been assigned a value, the ESC and -C-J characters will terminate an incremental search. -C-g will abort an incremental search and restore the original line. +If that variable has not been assigned a value, the ESC and +C-J characters will terminate an incremental search. +C-g will abort an incremental search and restore the original line. When the search is terminated, the history entry containing the search string becomes the current line. -

    - -To find other matching entries in the history list, type C-r or -C-s as appropriate. +

    +

    To find other matching entries in the history list, type C-r or +C-s as appropriate. This will search backward or forward in the history for the next entry matching the search string typed so far. Any other key sequence bound to a Readline command will terminate the search and execute that command. -For instance, a RET will terminate the search and accept +For instance, a RET will terminate the search and accept the line, thereby executing the command from the history list. A movement command will terminate the search, make the last line found the current line, and begin editing. -

    - -Readline remembers the last incremental search string. If two -C-rs are typed without any intervening characters defining a new +

    +

    Readline remembers the last incremental search string. If two +C-rs are typed without any intervening characters defining a new search string, any remembered search string is used. -

    - -Non-incremental searches read the entire search string before starting +

    +

    Non-incremental searches read the entire search string before starting to search for matching history lines. The search string may be typed by the user or be part of the contents of the current line. -

    +

    +
    + + + +

    8.3 Readline Init File

    + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.3 Readline Init File

    - -

    - -Although the Readline library comes with a set of Emacs-like +

    Although the Readline library comes with a set of Emacs-like keybindings installed by default, it is possible to use a different set of keybindings. Any user can customize programs that use Readline by putting -commands in an inputrc file, conventionally in his home directory. +commands in an inputrc file, conventionally in his home directory. The name of this -file is taken from the value of the shell variable INPUTRC. If -that variable is unset, the default is `~/.inputrc'. If that +file is taken from the value of the shell variable INPUTRC. If +that variable is unset, the default is ~/.inputrc. If that file does not exist or cannot be read, the ultimate default is -`/etc/inputrc'. -

    - -When a program which uses the Readline library starts up, the +/etc/inputrc. +

    +

    When a program which uses the Readline library starts up, the init file is read, and the key bindings are set. -

    - -In addition, the C-x C-r command re-reads this init file, thus +

    +

    In addition, the C-x C-r command re-reads this init file, thus incorporating any changes that you might have made to it. -

    +

    + + + + + -
    - -
    8.3.1 Readline Init File Syntax  Syntax for the commands in the inputrc file.
    +
    + + + +

    8.3.1 Readline Init File Syntax

    -
    - - -
    8.3.2 Conditional Init Constructs  Conditional key bindings in the inputrc file.
    - -
    - - -
    8.3.3 Sample Init File  An example inputrc file.
    -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.3.1 Readline Init File Syntax

    - -

    - -There are only a few basic constructs allowed in the +

    There are only a few basic constructs allowed in the Readline init file. Blank lines are ignored. -Lines beginning with a `#' are comments. -Lines beginning with a `$' indicate conditional -constructs (see section 8.3.2 Conditional Init Constructs). Other lines +Lines beginning with a ‘#’ are comments. +Lines beginning with a ‘$’ indicate conditional +constructs (see Conditional Init Constructs). Other lines denote variable settings and key bindings. -

    - -

    -
    Variable Settings -
    You can modify the run-time behavior of Readline by +

    +
    +
    Variable Settings
    +

    You can modify the run-time behavior of Readline by altering the values of variables in Readline -using the set command within the init file. +using the set command within the init file. The syntax is simple: -

    +

    +
    +
    set variable value
    +
    -
     
    set variable value
    -

    - -Here, for example, is how to +

    Here, for example, is how to change from the default Emacs-like key binding to use -vi line editing commands: -

    +vi line editing commands: +

    +
    +
    set editing-mode vi
    +
    -
     
    set editing-mode vi
    -

    - -Variable names and values, where appropriate, are recognized without regard +

    Variable names and values, where appropriate, are recognized without regard to case. Unrecognized variable names are ignored. -

    - -Boolean variables (those that can be set to on or off) are set to on if -the value is null or empty, on (case-insensitive), or 1. Any other +

    +

    Boolean variables (those that can be set to on or off) are set to on if +the value is null or empty, on (case-insensitive), or 1. Any other value results in the variable being set to off. -

    - -The bind -V command lists the current Readline variable names -and values. See section 4.2 Bash Builtin Commands. -

    - -A great deal of run-time behavior is changeable with the following +

    +

    The bind -V command lists the current Readline variable names +and values. See Bash Builtins. +

    +

    A great deal of run-time behavior is changeable with the following variables. -

    - - -

    - -
    bell-style -
    -Controls what happens when Readline wants to ring the terminal bell. -If set to `none', Readline never rings the bell. If set to -`visible', Readline uses a visible bell if one is available. -If set to `audible' (the default), Readline attempts to ring -the terminal's bell. -

    - -

    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 +

    + +
    +
    bell-style
    +
    +

    Controls what happens when Readline wants to ring the terminal bell. +If set to ‘none’, Readline never rings the bell. If set to +‘visible’, Readline uses a visible bell if one is available. +If set to ‘audible’ (the default), Readline attempts to ring +the terminal’s bell. +

    +
    +
    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. -

    - -

    blink-matching-paren -
    -If set to `on', Readline attempts to briefly move the cursor to an +

    +
    +
    blink-matching-paren
    +
    +

    If set to ‘on’, Readline attempts to briefly move the cursor to an opening parenthesis when a closing parenthesis is inserted. The default -is `off'. -

    - -

    colored-completion-prefix -
    -If set to `on', when listing completions, Readline displays the +is ‘off’. +

    +
    +
    colored-completion-prefix
    +
    +

    If set to ‘on’, when listing completions, Readline displays the common prefix of the set of possible completions using a different color. -The color definitions are taken from the value of the LS_COLORS +The color definitions are taken from the value of the LS_COLORS environment variable. -The default is `off'. -

    - -

    colored-stats -
    -If set to `on', Readline displays possible completions using different +The default is ‘off’. +

    +
    +
    colored-stats
    +
    +

    If set to ‘on’, Readline displays possible completions using different colors to indicate their file type. -The color definitions are taken from the value of the LS_COLORS +The color definitions are taken from the value of the LS_COLORS environment variable. -The default is `off'. -

    - -

    comment-begin -
    -The string to insert at the beginning of the line when the -insert-comment command is executed. The default value -is "#". -

    - -

    completion-display-width -
    -The number of screen columns used to display possible matches +The default is ‘off’. +

    +
    +
    comment-begin
    +
    +

    The string to insert at the beginning of the line when the +insert-comment command is executed. The default value +is "#". +

    +
    +
    completion-display-width
    +
    +

    The number of screen columns used to display possible matches when performing completion. The value is ignored if it is less than 0 or greater than the terminal screen width. A value of 0 will cause matches to be displayed one per line. The default value is -1. -

    - -

    completion-ignore-case -
    -If set to `on', Readline performs filename matching and completion +

    +
    +
    completion-ignore-case
    +
    +

    If set to ‘on’, Readline performs filename matching and completion in a case-insensitive fashion. -The default value is `off'. -

    - -

    completion-map-case -
    -If set to `on', and completion-ignore-case is enabled, Readline -treats hyphens (`-') and underscores (`_') as equivalent when +The default value is ‘off’. +

    +
    +
    completion-map-case
    +
    +

    If set to ‘on’, and completion-ignore-case is enabled, Readline +treats hyphens (‘-’) and underscores (‘_’) as equivalent when performing case-insensitive filename matching and completion. -

    - -

    completion-prefix-display-length -
    -The length in characters of the common prefix of a list of possible +

    +
    +
    completion-prefix-display-length
    +
    +

    The length in characters of the common prefix of a list of possible completions that is displayed without modification. When set to a value greater than zero, common prefixes longer than this value are replaced with an ellipsis when displaying possible completions. -

    - -

    completion-query-items -
    -The number of possible completions that determines when the user is +

    +
    +
    completion-query-items
    +
    +

    The number of possible completions that determines when the user is asked whether the list of possibilities should be displayed. If the number of possible completions is greater than this value, Readline will ask the user whether or not he wishes to view them; otherwise, they are simply listed. This variable must be set to an integer value greater than or equal to 0. A negative value means Readline should never ask. -The default limit is 100. -

    - -

    convert-meta -
    -If set to `on', Readline will convert characters with the -eighth bit set to an ASCII key sequence by stripping the eighth -bit and prefixing an ESC character, converting them to a -meta-prefixed key sequence. The default value is `on'. -

    - -

    disable-completion -
    -If set to `On', Readline will inhibit word completion. +The default limit is 100. +

    +
    +
    convert-meta
    +
    +

    If set to ‘on’, Readline will convert characters with the +eighth bit set to an ASCII key sequence by stripping the eighth +bit and prefixing an ESC character, converting them to a +meta-prefixed key sequence. The default value is ‘on’. +

    +
    +
    disable-completion
    +
    +

    If set to ‘On’, Readline will inhibit word completion. Completion characters will be inserted into the line as if they had -been mapped to self-insert. The default is `off'. -

    - -

    editing-mode -
    -The editing-mode variable controls which default set of +been mapped to self-insert. The default is ‘off’. +

    +
    +
    editing-mode
    +
    +

    The editing-mode variable controls which default set of key bindings is used. By default, Readline starts up in Emacs editing mode, where the keystrokes are most similar to Emacs. This variable can be -set to either `emacs' or `vi'. -

    - -

    emacs-mode-string -
    -This string is displayed immediately before the last line of the primary +set to either ‘emacs’ or ‘vi’. +

    +
    +
    emacs-mode-string
    +
    +

    This string is displayed immediately before the last line of the primary prompt when emacs editing mode is active. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. -Use the `\1' and `\2' escapes to begin and end sequences of +Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. -The default is `@'. -

    - -

    echo-control-characters -
    -When set to `on', on operating systems that indicate they support it, +The default is ‘@’. +

    +
    +
    echo-control-characters
    +
    +

    When set to ‘on’, on operating systems that indicate they support it, readline echoes a character corresponding to a signal generated from the -keyboard. The default is `on'. -

    - -

    enable-bracketed-paste -
    -When set to `On', Readline will configure the terminal in a way +keyboard. The default is ‘on’. +

    +
    +
    enable-bracketed-paste
    +
    +

    When set to ‘On’, Readline will configure the terminal in a way that will enable it to insert each paste into the editing buffer as a single string of characters, instead of treating each character as if it had been read from the keyboard. This can prevent pasted characters -from being interpreted as editing commands. The default is `off'. -

    - -

    enable-keypad -
    -When set to `on', Readline will try to enable the application +from being interpreted as editing commands. The default is ‘off’. +

    +
    +
    enable-keypad
    +
    +

    When set to ‘on’, Readline will try to enable the application keypad when it is called. Some systems need this to enable the -arrow keys. The default is `off'. -

    - -

    enable-meta-key -
    When set to `on', Readline will try to enable any meta modifier +arrow keys. The default is ‘off’. +

    +
    +
    enable-meta-key
    +

    When set to ‘on’, Readline will try to enable any meta modifier key the terminal claims to support when it is called. On many terminals, the meta key is used to send eight-bit characters. -The default is `on'. -

    - -

    expand-tilde -
    -If set to `on', tilde expansion is performed when Readline -attempts word completion. The default is `off'. -

    - -

    history-preserve-point -
    -If set to `on', the history code attempts to place the point (the +The default is ‘on’. +

    +
    +
    expand-tilde
    +
    +

    If set to ‘on’, tilde expansion is performed when Readline +attempts word completion. The default is ‘off’. +

    +
    +
    history-preserve-point
    +
    +

    If set to ‘on’, the history code attempts to place the point (the current cursor position) at the -same location on each history line retrieved with previous-history -or next-history. The default is `off'. -

    - -

    history-size -
    -Set the maximum number of history entries saved in the history list. +same location on each history line retrieved with previous-history +or next-history. The default is ‘off’. +

    +
    +
    history-size
    +
    +

    Set the maximum number of history entries saved in the history list. If set to zero, any existing history entries are deleted and no new entries are saved. If set to a value less than zero, the number of history entries is not limited. By default, the number of history entries is not limited. -

    - -

    horizontal-scroll-mode -
    -This variable can be set to either `on' or `off'. Setting it -to `on' means that the text of the lines being edited will scroll +

    +
    +
    horizontal-scroll-mode
    +
    +

    This variable can be set to either ‘on’ or ‘off’. Setting it +to ‘on’ means that the text of the lines being edited will scroll horizontally on a single screen line when they are longer than the width of the screen, instead of wrapping onto a new screen line. By default, -this variable is set to `off'. -

    - -

    input-meta -
    - -If set to `on', Readline will enable eight-bit input (it +this variable is set to ‘off’. +

    +
    +
    input-meta
    +
    + +

    If set to ‘on’, Readline will enable eight-bit input (it will not clear the eighth bit in the characters it reads), regardless of what the terminal claims it can support. The -default value is `off'. The name meta-flag is a +default value is ‘off’. The name meta-flag is a synonym for this variable. -

    - -

    isearch-terminators -
    -The string of characters that should terminate an incremental search without -subsequently executing the character as a command (see section 8.2.5 Searching for Commands in the History). -If this variable has not been given a value, the characters ESC and -C-J will terminate an incremental search. -

    - -

    keymap -
    -Sets Readline's idea of the current keymap for key binding commands. -Acceptable keymap names are -emacs, -emacs-standard, -emacs-meta, -emacs-ctlx, -vi, -vi-move, -vi-command, and -vi-insert. -vi is equivalent to vi-command; emacs is -equivalent to emacs-standard. The default value is emacs. -The value of the editing-mode variable also affects the +

    +
    +
    isearch-terminators
    +
    +

    The string of characters that should terminate an incremental search without +subsequently executing the character as a command (see Searching). +If this variable has not been given a value, the characters ESC and +C-J will terminate an incremental search. +

    +
    +
    keymap
    +
    +

    Sets Readline’s idea of the current keymap for key binding commands. +Acceptable keymap names are +emacs, +emacs-standard, +emacs-meta, +emacs-ctlx, +vi, +vi-move, +vi-command, and +vi-insert. +vi is equivalent to vi-command; emacs is +equivalent to emacs-standard. The default value is emacs. +The value of the editing-mode variable also affects the default keymap. -

    - -

    keyseq-timeout -
    Specifies the duration Readline will wait for a character when reading an +

    +
    +
    keyseq-timeout
    +

    Specifies the duration Readline will wait for a character when reading an ambiguous key sequence (one that can form a complete key sequence using the input read so far, or can take additional input to complete a longer key sequence). If no input is received within the timeout, Readline will use the shorter but complete key sequence. Readline uses this value to determine whether or not input is -available on the current input source (rl_instream by default). +available on the current input source (rl_instream by default). The value is specified in milliseconds, so a value of 1000 means that Readline will wait one second for additional input. If this variable is set to a value less than or equal to zero, or to a non-numeric value, Readline will wait until another key is pressed to decide which key sequence to complete. -The default value is 500. -

    - -

    mark-directories -
    If set to `on', completed directory names have a slash -appended. The default is `on'. -

    - -

    mark-modified-lines -
    -This variable, when set to `on', causes Readline to display an -asterisk (`*') at the start of history lines which have been modified. -This variable is `off' by default. -

    - -

    mark-symlinked-directories -
    -If set to `on', completed names which are symbolic links +The default value is 500. +

    +
    +
    mark-directories
    +

    If set to ‘on’, completed directory names have a slash +appended. The default is ‘on’. +

    +
    +
    mark-modified-lines
    +
    +

    This variable, when set to ‘on’, causes Readline to display an +asterisk (‘*’) at the start of history lines which have been modified. +This variable is ‘off’ by default. +

    +
    +
    mark-symlinked-directories
    +
    +

    If set to ‘on’, completed names which are symbolic links to directories have a slash appended (subject to the value of -mark-directories). -The default is `off'. -

    - -

    match-hidden-files -
    -This variable, when set to `on', causes Readline to match files whose -names begin with a `.' (hidden files) when performing filename +mark-directories). +The default is ‘off’. +

    +
    +
    match-hidden-files
    +
    +

    This variable, when set to ‘on’, causes Readline to match files whose +names begin with a ‘.’ (hidden files) when performing filename completion. -If set to `off', the leading `.' must be +If set to ‘off’, the leading ‘.’ must be supplied by the user in the filename to be completed. -This variable is `on' by default. -

    - -

    menu-complete-display-prefix -
    -If set to `on', menu completion displays the common prefix of the +This variable is ‘on’ by default. +

    +
    +
    menu-complete-display-prefix
    +
    +

    If set to ‘on’, menu completion displays the common prefix of the list of possible completions (which may be empty) before cycling through -the list. The default is `off'. -

    - -

    output-meta -
    -If set to `on', Readline will display characters with the +the list. The default is ‘off’. +

    +
    +
    output-meta
    +
    +

    If set to ‘on’, Readline will display characters with the eighth bit set directly rather than as a meta-prefixed escape -sequence. The default is `off'. -

    - -

    page-completions -
    -If set to `on', Readline uses an internal more-like pager +sequence. The default is ‘off’. +

    +
    +
    page-completions
    +
    +

    If set to ‘on’, Readline uses an internal more-like pager to display a screenful of possible completions at a time. -This variable is `on' by default. -

    - -

    print-completions-horizontally -
    If set to `on', Readline will display completions with matches +This variable is ‘on’ by default. +

    +
    +
    print-completions-horizontally
    +

    If set to ‘on’, Readline will display completions with matches sorted horizontally in alphabetical order, rather than down the screen. -The default is `off'. -

    - -

    revert-all-at-newline -
    -If set to `on', Readline will undo all changes to history lines -before returning when accept-line is executed. By default, +The default is ‘off’. +

    +
    +
    revert-all-at-newline
    +
    +

    If set to ‘on’, Readline will undo all changes to history lines +before returning when accept-line is executed. By default, history lines may be modified and retain individual undo lists across -calls to readline. The default is `off'. -

    - -

    show-all-if-ambiguous -
    -This alters the default behavior of the completion functions. If -set to `on', +calls to readline. The default is ‘off’. +

    +
    +
    show-all-if-ambiguous
    +
    +

    This alters the default behavior of the completion functions. If +set to ‘on’, words which have more than one possible completion cause the matches to be listed immediately instead of ringing the bell. -The default value is `off'. -

    - -

    show-all-if-unmodified -
    -This alters the default behavior of the completion functions in -a fashion similar to show-all-if-ambiguous. -If set to `on', +The default value is ‘off’. +

    +
    +
    show-all-if-unmodified
    +
    +

    This alters the default behavior of the completion functions in +a fashion similar to show-all-if-ambiguous. +If set to ‘on’, words which have more than one possible completion without any -possible partial completion (the possible completions don't share +possible partial completion (the possible completions don’t share a common prefix) cause the matches to be listed immediately instead of ringing the bell. -The default value is `off'. -

    - -

    show-mode-in-prompt -
    -If set to `on', add a character to the beginning of the prompt +The default value is ‘off’. +

    +
    +
    show-mode-in-prompt
    +
    +

    If set to ‘on’, add a character to the beginning of the prompt indicating the editing mode: emacs, vi command, or vi insertion. The mode strings are user-settable. -The default value is `off'. -

    - -

    skip-completed-text -
    -If set to `on', this alters the default completion behavior when -inserting a single match into the line. It's only active when +The default value is ‘off’. +

    +
    +
    skip-completed-text
    +
    +

    If set to ‘on’, this alters the default completion behavior when +inserting a single match into the line. It’s only active when performing completion in the middle of a word. If enabled, readline does not insert characters from the completion that match characters after point in the word being completed, so portions of the word following the cursor are not duplicated. For instance, if this is enabled, attempting completion when the cursor -is after the `e' in `Makefile' will result in `Makefile' -rather than `Makefilefile', assuming there is a single possible +is after the ‘e’ in ‘Makefile’ will result in ‘Makefile’ +rather than ‘Makefilefile’, assuming there is a single possible completion. -The default value is `off'. -

    - -

    vi-cmd-mode-string -
    -This string is displayed immediately before the last line of the primary +The default value is ‘off’. +

    +
    +
    vi-cmd-mode-string
    +
    +

    This string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in command mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. -Use the `\1' and `\2' escapes to begin and end sequences of +Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. -The default is `(cmd)'. -

    - -

    vi-ins-mode-string -
    -This string is displayed immediately before the last line of the primary +The default is ‘(cmd)’. +

    +
    +
    vi-ins-mode-string
    +
    +

    This string is displayed immediately before the last line of the primary prompt when vi editing mode is active and in insertion mode. The value is expanded like a key binding, so the standard set of meta- and control prefixes and backslash escape sequences is available. -Use the `\1' and `\2' escapes to begin and end sequences of +Use the ‘\1’ and ‘\2’ escapes to begin and end sequences of non-printing characters, which can be used to embed a terminal control sequence into the mode string. -The default is `(ins)'. -

    - -

    visible-stats -
    -If set to `on', a character denoting a file's type +The default is ‘(ins)’. +

    +
    +
    visible-stats
    +
    +

    If set to ‘on’, a character denoting a file’s type is appended to the filename when listing possible -completions. The default is `off'. -

    +completions. The default is ‘off’. +

    +
    +
    -
    -

    - -

    Key Bindings -
    The syntax for controlling key bindings in the init file is +
    +
    Key Bindings
    +

    The syntax for controlling key bindings in the init file is simple. First you need to find the name of the command that you want to change. The following sections contain tables of the command name, the default keybinding, if any, and a short description of what the command does. -

    - -Once you know the name of the command, simply place on a line +

    +

    Once you know the name of the command, simply place on a line in the init file the name of the key you wish to bind the command to, a colon, and then the name of the command. -There can be no space between the key name and the colon -- that will be +There can be no space between the key name and the colon – that will be interpreted as part of the key name. The name of the key can be expressed in different ways, depending on what you find most comfortable. -

    - -In addition to command names, readline allows keys to be bound -to a string that is inserted when the key is pressed (a macro). -

    - -The bind -p command displays Readline function names and +

    +

    In addition to command names, readline allows keys to be bound +to a string that is inserted when the key is pressed (a macro). +

    +

    The bind -p command displays Readline function names and bindings in a format that can put directly into an initialization file. -See section 4.2 Bash Builtin Commands. -

    - -

    -
    keyname: function-name or macro -
    keyname is the name of a key spelled out in English. For example: -
     
    Control-u: universal-argument
    +See Bash Builtins.
    +

    +
    +
    keynamefunction-name or macro
    +

    keyname is the name of a key spelled out in English. For example: +

    +
    Control-u: universal-argument
     Meta-Rubout: backward-kill-word
    -Control-o: "> output"
    -

    +Control-o: "> output" + -In the above example, C-u is bound to the function -universal-argument, -M-DEL is bound to the function backward-kill-word, and -C-o is bound to run the macro +

    In the above example, C-u is bound to the function +universal-argument, +M-DEL is bound to the function backward-kill-word, and +C-o is bound to run the macro expressed on the right hand side (that is, to insert the text -`> output' into the line). -

    - -A number of symbolic character names are recognized while +‘> output’ into the line). +

    +

    A number of symbolic character names are recognized while processing this key binding syntax: -DEL, -ESC, -ESCAPE, -LFD, -NEWLINE, -RET, -RETURN, -RUBOUT, -SPACE, -SPC, +DEL, +ESC, +ESCAPE, +LFD, +NEWLINE, +RET, +RETURN, +RUBOUT, +SPACE, +SPC, and -TAB. -

    - -

    "keyseq": function-name or macro -
    keyseq differs from keyname above in that strings +TAB. +

    +
    +
    "keyseq": function-name or macro
    +

    keyseq differs from keyname above in that strings denoting an entire key sequence can be specified, by placing -the key sequence in double quotes. Some GNU Emacs style key +the key sequence in double quotes. Some GNU Emacs style key escapes can be used, as in the following example, but the special character names are not recognized. -

    +

    +
    +
    "\C-u": universal-argument
    +"\C-x\C-r": re-read-init-file
    +"\e[11~": "Function Key 1"
    +
    -
     
    "\C-u": universal-argument
    -"\C-x\C-r": re-read-init-file
    -"\e[11~": "Function Key 1"
    -

    +

    In the above example, C-u is again bound to the function +universal-argument (just as it was in the first example), +‘C-x C-r’ is bound to the function re-read-init-file, +and ‘ESC [ 1 1 ~’ is bound to insert +the text ‘Function Key 1’. +

    +
    +
    -In the above example, C-u is again bound to the function -universal-argument (just as it was in the first example), -`C-x C-r' is bound to the function re-read-init-file, -and `ESC [ 1 1 ~' is bound to insert -the text `Function Key 1'. -

    - -

    -

    - -The following GNU Emacs style escape sequences are available when +

    The following GNU Emacs style escape sequences are available when specifying key sequences: -

    +

    +
    +
    \C-
    +

    control prefix +

    +
    \M-
    +

    meta prefix +

    +
    \e
    +

    an escape character +

    +
    \\
    +

    backslash +

    +
    \"
    +

    ", a double quotation mark +

    +
    \'
    +

    ', a single quote or apostrophe +

    +
    -
    -
    \C- -
    control prefix -
    \M- -
    meta prefix -
    \e -
    an escape character -
    \\ -
    backslash -
    \" -
    ", a double quotation mark -
    \' -
    ', a single quote or apostrophe -
    -

    - -In addition to the GNU Emacs style escape sequences, a second +

    In addition to the GNU Emacs style escape sequences, a second set of backslash escapes is available: -

    - -

    -
    \a -
    alert (bell) -
    \b -
    backspace -
    \d -
    delete -
    \f -
    form feed -
    \n -
    newline -
    \r -
    carriage return -
    \t -
    horizontal tab -
    \v -
    vertical tab -
    \nnn -
    the eight-bit character whose value is the octal value nnn +

    +
    +
    \a
    +

    alert (bell) +

    +
    \b
    +

    backspace +

    +
    \d
    +

    delete +

    +
    \f
    +

    form feed +

    +
    \n
    +

    newline +

    +
    \r
    +

    carriage return +

    +
    \t
    +

    horizontal tab +

    +
    \v
    +

    vertical tab +

    +
    \nnn
    +

    the eight-bit character whose value is the octal value nnn (one to three digits) -

    \xHH -
    the eight-bit character whose value is the hexadecimal value HH +

    +
    \xHH
    +

    the eight-bit character whose value is the hexadecimal value HH (one or two hex digits) -

    -

    +

    +
    -When entering the text of a macro, single or double quotes must +

    When entering the text of a macro, single or double quotes must be used to indicate a macro definition. Unquoted text is assumed to be a function name. In the macro body, the backslash escapes described above are expanded. Backslash will quote any other character in the macro text, -including `"' and `''. -For example, the following binding will make `C-x \' -insert a single `\' into the line: -
     
    "\C-x\\": "\\"
    -

    +including ‘"’ and ‘'’. +For example, the following binding will make ‘C-x \’ +insert a single ‘\’ into the line: +

    +
    "\C-x\\": "\\"
    +
    -
    -

    + + - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.3.2 Conditional Init Constructs

    - -

    +


    + + + +

    8.3.2 Conditional Init Constructs

    -Readline implements a facility similar in spirit to the conditional +

    Readline implements a facility similar in spirit to the conditional compilation features of the C preprocessor which allows key bindings and variable settings to be performed as the result of tests. There are four parser directives used. -

    - -

    -
    $if -
    The $if construct allows bindings to be made based on the +

    +
    +
    $if
    +

    The $if construct allows bindings to be made based on the editing mode, the terminal being used, or the application using Readline. The text of the test extends to the end of the line; no characters are required to isolate it. -

    - -

    -
    mode -
    The mode= form of the $if directive is used to test -whether Readline is in emacs or vi mode. +

    +
    +
    mode
    +

    The mode= form of the $if directive is used to test +whether Readline is in emacs or vi mode. This may be used in conjunction -with the `set keymap' command, for instance, to set bindings in -the emacs-standard and emacs-ctlx keymaps only if -Readline is starting out in emacs mode. -

    - -

    term -
    The term= form may be used to include terminal-specific +with the ‘set keymap’ command, for instance, to set bindings in +the emacs-standard and emacs-ctlx keymaps only if +Readline is starting out in emacs mode. +

    +
    +
    term
    +

    The term= form may be used to include terminal-specific key bindings, perhaps to bind the key sequences output by the -terminal's function keys. The word on the right side of the -`=' is tested against both the full name of the terminal and -the portion of the terminal name before the first `-'. This -allows sun to match both sun and sun-cmd, +terminal’s function keys. The word on the right side of the +‘=’ is tested against both the full name of the terminal and +the portion of the terminal name before the first ‘-’. This +allows sun to match both sun and sun-cmd, for instance. -

    - -

    application -
    The application construct is used to include +

    +
    +
    application
    +

    The application construct is used to include application-specific settings. Each program using the Readline -library sets the application name, and you can test for +library sets the application name, and you can test for a particular value. This could be used to bind key sequences to functions useful for a specific program. For instance, the following command adds a key sequence that quotes the current or previous word in Bash: -
     
    $if Bash
    +

    +
    $if Bash
     # Quote the current or previous word
    -"\C-xq": "\eb\"\ef\""
    +"\C-xq": "\eb\"\ef\""
     $endif
    -

    -

    + +

    +
    -
    $endif -
    This command, as seen in the previous example, terminates an -$if command. -

    - -

    $else -
    Commands in this branch of the $if directive are executed if +
    +
    $endif
    +

    This command, as seen in the previous example, terminates an +$if command. +

    +
    +
    $else
    +

    Commands in this branch of the $if directive are executed if the test fails. -

    - -

    $include -
    This directive takes a single filename as an argument and reads commands +

    +
    +
    $include
    +

    This directive takes a single filename as an argument and reads commands and bindings from that file. -For example, the following directive reads from `/etc/inputrc': -
     
    $include /etc/inputrc
    -

    -

    +For example, the following directive reads from /etc/inputrc: +

    +
    $include /etc/inputrc
    +
    +
    +
    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.3.3 Sample Init File

    - -

    +


    + + + +

    8.3.3 Sample Init File

    -Here is an example of an inputrc file. This illustrates key +

    Here is an example of an inputrc file. This illustrates key binding, variable assignment, and conditional syntax. -

    - -
     
    # This file controls the behaviour of line input editing for
    +

    +
    +
    # This file controls the behaviour of line input editing for
     # programs that use the GNU Readline library.  Existing
     # programs include FTP, Bash, and GDB.
     #
    @@ -11333,31 +10371,31 @@ Meta-Control-h:	backward-kill-word	Text after the function name is ignored
     #
     # Arrow keys in keypad mode
     #
    -#"\M-OD":        backward-char
    -#"\M-OC":        forward-char
    -#"\M-OA":        previous-history
    -#"\M-OB":        next-history
    +#"\M-OD":        backward-char
    +#"\M-OC":        forward-char
    +#"\M-OA":        previous-history
    +#"\M-OB":        next-history
     #
     # Arrow keys in ANSI mode
     #
    -"\M-[D":        backward-char
    -"\M-[C":        forward-char
    -"\M-[A":        previous-history
    -"\M-[B":        next-history
    +"\M-[D":        backward-char
    +"\M-[C":        forward-char
    +"\M-[A":        previous-history
    +"\M-[B":        next-history
     #
     # Arrow keys in 8 bit keypad mode
     #
    -#"\M-\C-OD":       backward-char
    -#"\M-\C-OC":       forward-char
    -#"\M-\C-OA":       previous-history
    -#"\M-\C-OB":       next-history
    +#"\M-\C-OD":       backward-char
    +#"\M-\C-OC":       forward-char
    +#"\M-\C-OA":       previous-history
    +#"\M-\C-OB":       next-history
     #
     # Arrow keys in 8 bit ANSI mode
     #
    -#"\M-\C-[D":       backward-char
    -#"\M-\C-[C":       forward-char
    -#"\M-\C-[A":       previous-history
    -#"\M-\C-[B":       next-history
    +#"\M-\C-[D":       backward-char
    +#"\M-\C-[C":       forward-char
    +#"\M-\C-[A":       previous-history
    +#"\M-\C-[B":       next-history
     
     C-q: quoted-insert
     
    @@ -11369,20 +10407,20 @@ TAB: complete
     # Macros that are convenient for shell interaction
     $if Bash
     # edit the path
    -"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
    +"\C-xp": "PATH=${PATH}\e\C-e\C-a\ef\C-f"
     # prepare to type a quoted word --
     # insert open and close double quotes
     # and move to just after the open quote
    -"\C-x\"": "\"\"\C-b"
    +"\C-x\"": "\"\"\C-b"
     # insert a backslash (testing backslash escapes
     # in sequences and macros)
    -"\C-x\\": "\\"
    +"\C-x\\": "\\"
     # Quote the current or previous word
    -"\C-xq": "\eb\"\ef\""
    +"\C-xq": "\eb\"\ef\""
     # Add a binding to refresh the line, which is unbound
    -"\C-xr": redraw-current-line
    +"\C-xr": redraw-current-line
     # Edit variable on current line.
    -"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
    +"\M-\C-v": "\C-a\C-k$\C-y\M-\C-e\C-a\C-y="
     $endif
     
     # use a visible bell if one is available
    @@ -11405,611 +10443,557 @@ set completion-query-items 150
     
     # For FTP
     $if Ftp
    -"\C-xg": "get \M-?"
    -"\C-xt": "put \M-?"
    -"\M-.": yank-last-arg
    +"\C-xg": "get \M-?"
    +"\C-xt": "put \M-?"
    +"\M-.": yank-last-arg
     $endif
    -

    + - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.4 Bindable Readline Commands

    - -

    +


    + + + +

    8.4 Bindable Readline Commands

    -
    - - - - - - - - -
    8.4.1 Commands For Moving  Moving about the line.
    8.4.2 Commands For Manipulating The History  Getting at previous lines.
    8.4.3 Commands For Changing Text  Commands for changing text.
    8.4.4 Killing And Yanking  Commands for killing and yanking.
    8.4.5 Specifying Numeric Arguments  Specifying numeric arguments, repeat counts.
    8.4.6 Letting Readline Type For You  Getting Readline to do the typing for you.
    8.4.7 Keyboard Macros  Saving and re-executing typed characters
    8.4.8 Some Miscellaneous Commands  Other miscellaneous commands.
    -

    + + + + + + + + + + -This section describes Readline commands that may be bound to key +

    This section describes Readline commands that may be bound to key sequences. You can list your key bindings by executing -bind -P or, for a more terse format, suitable for an -inputrc file, bind -p. (See section 4.2 Bash Builtin Commands.) +bind -P or, for a more terse format, suitable for an +inputrc file, bind -p. (See Bash Builtins.) Command names without an accompanying key sequence are unbound by default. -

    - -In the following descriptions, point refers to the current cursor -position, and mark refers to a cursor position saved by the -set-mark command. -The text between the point and mark is referred to as the region. -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.4.1 Commands For Moving

    - -
    - -
    beginning-of-line (C-a) -
    -Move to the start of the current line. -

    - - -

    end-of-line (C-e) -
    -Move to the end of the line. -

    - - -

    forward-char (C-f) -
    -Move forward a character. -

    - - -

    backward-char (C-b) -
    -Move back a character. -

    - - -

    forward-word (M-f) -
    -Move forward to the end of the next word. +

    +

    In the following descriptions, point refers to the current cursor +position, and mark refers to a cursor position saved by the +set-mark command. +The text between the point and mark is referred to as the region. +

    +
    + + + +

    8.4.1 Commands For Moving

    +
    +
    beginning-of-line (C-a) + +
    +

    Move to the start of the current line. +

    +
    +
    end-of-line (C-e) + +
    +

    Move to the end of the line. +

    +
    +
    forward-char (C-f) + +
    +

    Move forward a character. +

    +
    +
    backward-char (C-b) + +
    +

    Move back a character. +

    +
    +
    forward-word (M-f) + +
    +

    Move forward to the end of the next word. Words are composed of letters and digits. -

    - - -

    backward-word (M-b) -
    -Move back to the start of the current or previous word. +

    +
    +
    backward-word (M-b) + +
    +

    Move back to the start of the current or previous word. Words are composed of letters and digits. -

    - - -

    shell-forward-word () -
    -Move forward to the end of the next word. +

    +
    +
    shell-forward-word () + +
    +

    Move forward to the end of the next word. Words are delimited by non-quoted shell metacharacters. -

    - - -

    shell-backward-word () -
    -Move back to the start of the current or previous word. +

    +
    +
    shell-backward-word () + +
    +

    Move back to the start of the current or previous word. Words are delimited by non-quoted shell metacharacters. -

    - - -

    clear-screen (C-l) -
    -Clear the screen and redraw the current line, +

    +
    +
    clear-screen (C-l) + +
    +

    Clear the screen and redraw the current line, leaving the current line at the top of the screen. -

    +

    +
    +
    redraw-current-line () + +
    +

    Refresh the current line. By default, this is unbound. +

    +
    +
    - -
    redraw-current-line () -
    -Refresh the current line. By default, this is unbound. -

    +


    + + + +

    8.4.2 Commands For Manipulating The History

    -
    -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.4.2 Commands For Manipulating The History

    - -

    - -

    - -
    accept-line (Newline or Return) -
    -Accept the line regardless of where the cursor is. +
    +
    accept-line (Newline or Return) + +
    +

    Accept the line regardless of where the cursor is. If this line is non-empty, add it to the history list according to the setting of -the HISTCONTROL and HISTIGNORE variables. +the HISTCONTROL and HISTIGNORE variables. If this line is a modified history line, then restore the history line to its original state. -

    - - -

    previous-history (C-p) -
    -Move `back' through the history list, fetching the previous command. -

    - - -

    next-history (C-n) -
    -Move `forward' through the history list, fetching the next command. -

    - - -

    beginning-of-history (M-<) -
    -Move to the first line in the history. -

    - - -

    end-of-history (M->) -
    -Move to the end of the input history, i.e., the line currently +

    +
    +
    previous-history (C-p) + +
    +

    Move ‘back’ through the history list, fetching the previous command. +

    +
    +
    next-history (C-n) + +
    +

    Move ‘forward’ through the history list, fetching the next command. +

    +
    +
    beginning-of-history (M-<) + +
    +

    Move to the first line in the history. +

    +
    +
    end-of-history (M->) + +
    +

    Move to the end of the input history, i.e., the line currently being entered. -

    - - -

    reverse-search-history (C-r) -
    -Search backward starting at the current line and moving `up' through +

    +
    +
    reverse-search-history (C-r) + +
    +

    Search backward starting at the current line and moving ‘up’ through the history as necessary. This is an incremental search. -

    - - -

    forward-search-history (C-s) -
    -Search forward starting at the current line and moving `down' through +

    +
    +
    forward-search-history (C-s) + +
    +

    Search forward starting at the current line and moving ‘down’ through the history as necessary. This is an incremental search. -

    - - -

    non-incremental-reverse-search-history (M-p) -
    -Search backward starting at the current line and moving `up' +

    +
    +
    non-incremental-reverse-search-history (M-p) + +
    +

    Search backward starting at the current line and moving ‘up’ through the history as necessary using a non-incremental search for a string supplied by the user. The search string may match anywhere in a history line. -

    - - -

    non-incremental-forward-search-history (M-n) -
    -Search forward starting at the current line and moving `down' +

    +
    +
    non-incremental-forward-search-history (M-n) + +
    +

    Search forward starting at the current line and moving ‘down’ through the history as necessary using a non-incremental search for a string supplied by the user. The search string may match anywhere in a history line. -

    - - -

    history-search-forward () -
    -Search forward through the history for the string of characters +

    +
    +
    history-search-forward () + +
    +

    Search forward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. -

    - - -

    history-search-backward () -
    -Search backward through the history for the string of characters +

    +
    +
    history-search-backward () + +
    +

    Search backward through the history for the string of characters between the start of the current line and the point. The search string must match at the beginning of a history line. This is a non-incremental search. By default, this command is unbound. -

    - - -

    history-substr-search-forward () -
    -Search forward through the history for the string of characters +

    +
    +
    history-substr-search-forward () + +
    +

    Search forward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. -

    - - -

    history-substr-search-backward () -
    -Search backward through the history for the string of characters +

    +
    +
    history-substr-search-backward () + +
    +

    Search backward through the history for the string of characters between the start of the current line and the point. The search string may match anywhere in a history line. This is a non-incremental search. By default, this command is unbound. -

    - - -

    yank-nth-arg (M-C-y) -
    -Insert the first argument to the previous command (usually +

    +
    +
    yank-nth-arg (M-C-y) + +
    +

    Insert the first argument to the previous command (usually the second word on the previous line) at point. -With an argument n, -insert the nth word from the previous command (the words +With an argument n, +insert the nth word from the previous command (the words in the previous command begin with word 0). A negative argument -inserts the nth word from the end of the previous command. -Once the argument n is computed, the argument is extracted -as if the `!n' history expansion had been specified. -

    - - -

    yank-last-arg (M-. or M-_) -
    -Insert last argument to the previous command (the last word of the +inserts the nth word from the end of the previous command. +Once the argument n is computed, the argument is extracted +as if the ‘!n’ history expansion had been specified. +

    +
    +
    yank-last-arg (M-. or M-_) + +
    +

    Insert last argument to the previous command (the last word of the previous history entry). -With a numeric argument, behave exactly like yank-nth-arg. -Successive calls to yank-last-arg move back through the history +With a numeric argument, behave exactly like yank-nth-arg. +Successive calls to yank-last-arg move back through the history list, inserting the last word (or the word specified by the argument to the first call) of each line in turn. Any numeric argument supplied to these successive calls determines the direction to move through the history. A negative argument switches the direction through the history (back or forward). The history expansion facilities are used to extract the last argument, -as if the `!$' history expansion had been specified. -

    +as if the ‘!$’ history expansion had been specified. +

    +
    +
    -
    -

    +


    + + + +

    8.4.3 Commands For Changing Text

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.4.3 Commands For Changing Text

    - -

    - -

    - - -
    end-of-file (usually C-d) -
    -The character indicating end-of-file as set, for example, by -stty. If this character is read when there are no characters +
    +
    end-of-file (usually C-d) + +
    +

    The character indicating end-of-file as set, for example, by +stty. If this character is read when there are no characters on the line, and point is at the beginning of the line, Readline -interprets it as the end of input and returns EOF. -

    - - -

    delete-char (C-d) -
    -Delete the character at point. If this function is bound to the -same character as the tty EOF character, as C-d +interprets it as the end of input and returns EOF. +

    +
    +
    delete-char (C-d) + +
    +

    Delete the character at point. If this function is bound to the +same character as the tty EOF character, as C-d commonly is, see above for the effects. -

    - - -

    backward-delete-char (Rubout) -
    -Delete the character behind the cursor. A numeric argument means +

    +
    +
    backward-delete-char (Rubout) + +
    +

    Delete the character behind the cursor. A numeric argument means to kill the characters instead of deleting them. -

    - - -

    forward-backward-delete-char () -
    -Delete the character under the cursor, unless the cursor is at the +

    +
    +
    forward-backward-delete-char () + +
    +

    Delete the character under the cursor, unless the cursor is at the end of the line, in which case the character behind the cursor is deleted. By default, this is not bound to a key. -

    +

    +
    +
    quoted-insert (C-q or C-v) + +
    +

    Add the next character typed to the line verbatim. This is +how to insert key sequences like C-q, for example. +

    - -
    quoted-insert (C-q or C-v) -
    -Add the next character typed to the line verbatim. This is -how to insert key sequences like C-q, for example. -

    - - -

    self-insert (a, b, A, 1, !, ...) -
    -Insert yourself. -

    - - -

    bracketed-paste-begin () -
    -This function is intended to be bound to the "bracketed paste" escape +
    +
    self-insert (a, b, A, 1, !, …) + +
    +

    Insert yourself. +

    +
    +
    bracketed-paste-begin () + +
    +

    This function is intended to be bound to the "bracketed paste" escape sequence sent by some terminals, and such a binding is assigned by default. It allows Readline to insert the pasted text as a single unit without treating each character as if it had been read from the keyboard. The characters -are inserted as if each one was bound to self-insert) instead of +are inserted as if each one was bound to self-insert) instead of executing any editing commands. -

    - - -

    transpose-chars (C-t) -
    -Drag the character before the cursor forward over +

    +
    +
    transpose-chars (C-t) + +
    +

    Drag the character before the cursor forward over the character at the cursor, moving the cursor forward as well. If the insertion point is at the end of the line, then this transposes the last two characters of the line. Negative arguments have no effect. -

    - - -

    transpose-words (M-t) -
    -Drag the word before point past the word after point, +

    +
    +
    transpose-words (M-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. -

    - - -

    upcase-word (M-u) -
    -Uppercase the current (or following) word. With a negative argument, +

    +
    +
    upcase-word (M-u) + +
    +

    Uppercase the current (or following) word. With a negative argument, uppercase the previous word, but do not move the cursor. -

    - - -

    downcase-word (M-l) -
    -Lowercase the current (or following) word. With a negative argument, +

    +
    +
    downcase-word (M-l) + +
    +

    Lowercase the current (or following) word. With a negative argument, lowercase the previous word, but do not move the cursor. -

    - - -

    capitalize-word (M-c) -
    -Capitalize the current (or following) word. With a negative argument, +

    +
    +
    capitalize-word (M-c) + +
    +

    Capitalize the current (or following) word. With a negative argument, capitalize the previous word, but do not move the cursor. -

    - - -

    overwrite-mode () -
    -Toggle overwrite mode. With an explicit positive numeric argument, +

    +
    +
    overwrite-mode () + +
    +

    Toggle overwrite mode. With an explicit positive numeric argument, switches to overwrite mode. With an explicit non-positive numeric argument, switches to insert mode. This command affects only -emacs mode; vi mode does overwrite differently. -Each call to readline() starts in insert mode. -

    - -In overwrite mode, characters bound to self-insert replace +emacs mode; vi mode does overwrite differently. +Each call to readline() starts in insert mode. +

    +

    In overwrite mode, characters bound to self-insert replace the text at point rather than pushing the text to the right. -Characters bound to backward-delete-char replace the character +Characters bound to backward-delete-char replace the character before point with a space. -

    +

    +

    By default, this command is unbound. +

    +
    +
    -By default, this command is unbound. -

    +


    + + + +

    8.4.4 Killing And Yanking

    -
    -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.4.4 Killing And Yanking

    - -

    - -

    - - -
    kill-line (C-k) -
    -Kill the text from point to the end of the line. -

    - - -

    backward-kill-line (C-x Rubout) -
    -Kill backward from the cursor to the beginning of the current line. -

    - - -

    unix-line-discard (C-u) -
    -Kill backward from the cursor to the beginning of the current line. -

    - - -

    kill-whole-line () -
    -Kill all characters on the current line, no matter where point is. +
    +
    kill-line (C-k) + +
    +

    Kill the text from point to the end of the line. +

    +
    +
    backward-kill-line (C-x Rubout) + +
    +

    Kill backward from the cursor to the beginning of the current line. +

    +
    +
    unix-line-discard (C-u) + +
    +

    Kill backward from the cursor to the beginning of the current line. +

    +
    +
    kill-whole-line () + +
    +

    Kill all characters on the current line, no matter where point is. By default, this is unbound. -

    - - -

    kill-word (M-d) -
    -Kill from point to the end of the current word, or if between +

    +
    +
    kill-word (M-d) + +
    +

    Kill from point to the end of the current word, or if between words, to the end of the next word. -Word boundaries are the same as forward-word. -

    - - -

    backward-kill-word (M-DEL) -
    -Kill the word behind point. -Word boundaries are the same as backward-word. -

    - - -

    shell-kill-word () -
    -Kill from point to the end of the current word, or if between +Word boundaries are the same as forward-word. +

    +
    +
    backward-kill-word (M-DEL) + +
    +

    Kill the word behind point. +Word boundaries are the same as backward-word. +

    +
    +
    shell-kill-word () + +
    +

    Kill from point to the end of the current word, or if between words, to the end of the next word. -Word boundaries are the same as shell-forward-word. -

    - - -

    shell-backward-kill-word () -
    -Kill the word behind point. -Word boundaries are the same as shell-backward-word. -

    - - -

    unix-word-rubout (C-w) -
    -Kill the word behind point, using white space as a word boundary. +Word boundaries are the same as shell-forward-word. +

    +
    +
    shell-backward-kill-word () + +
    +

    Kill the word behind point. +Word boundaries are the same as 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. -

    - - -

    unix-filename-rubout () -
    -Kill the word behind point, using white space and the slash character +

    +
    +
    unix-filename-rubout () + +
    +

    Kill the word behind point, using white space and the slash character as the word boundaries. The killed text is saved on the kill-ring. -

    - - -

    delete-horizontal-space () -
    -Delete all spaces and tabs around point. By default, this is unbound. -

    - - -

    kill-region () -
    -Kill the text in the current region. +

    +
    +
    delete-horizontal-space () + +
    +

    Delete all spaces and tabs around point. By default, this is unbound. +

    +
    +
    kill-region () + +
    +

    Kill the text in the current region. By default, this command is unbound. -

    - - -

    copy-region-as-kill () -
    -Copy the text in the region to the kill buffer, so it can be yanked +

    +
    +
    copy-region-as-kill () + +
    +

    Copy the text in the region to the kill buffer, so it can be yanked right away. By default, this command is unbound. -

    - - -

    copy-backward-word () -
    -Copy the word before point to the kill buffer. -The word boundaries are the same as backward-word. +

    +
    +
    copy-backward-word () + +
    +

    Copy the word before point to the kill buffer. +The word boundaries are the same as backward-word. By default, this command is unbound. -

    - - -

    copy-forward-word () -
    -Copy the word following point to the kill buffer. -The word boundaries are the same as forward-word. +

    +
    +
    copy-forward-word () + +
    +

    Copy the word following point to the kill buffer. +The word boundaries are the same as forward-word. By default, this command is unbound. -

    +

    +
    +
    yank (C-y) + +
    +

    Yank the top of the kill ring into the buffer at point. +

    +
    +
    yank-pop (M-y) + +
    +

    Rotate the kill-ring, and yank the new top. You can only do this if +the prior command is yank or yank-pop. +

    +
    - -
    yank (C-y) -
    -Yank the top of the kill ring into the buffer at point. -

    - - -

    yank-pop (M-y) -
    -Rotate the kill-ring, and yank the new top. You can only do this if -the prior command is yank or yank-pop. -
    -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.4.5 Specifying Numeric Arguments

    - -
    - - -
    digit-argument (M-0, M-1, ... M--) -
    -Add this digit to the argument already accumulating, or start a new -argument. M-- starts a negative argument. -

    - - -

    universal-argument () -
    -This is another way to specify an argument. +
    + + + +

    8.4.5 Specifying Numeric Arguments

    +
    +
    digit-argument (M-0, M-1, … M--) + +
    +

    Add this digit to the argument already accumulating, or start a new +argument. M-- starts a negative argument. +

    +
    +
    universal-argument () + +
    +

    This is another way to specify an argument. If this command is followed by one or more digits, optionally with a leading minus sign, those digits define the argument. -If the command is followed by digits, executing universal-argument +If the command is followed by digits, executing universal-argument again ends the numeric argument, but is otherwise ignored. As a special case, if this command is immediately followed by a character that is neither a digit nor minus sign, the argument count @@ -12018,602 +11002,548 @@ The argument count is initially one, so executing this function the first time makes the argument count four, a second time makes the argument count sixteen, and so on. By default, this is not bound to a key. -

    -

    +

    +
    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.4.6 Letting Readline Type For You

    - -

    +


    + + + +

    8.4.6 Letting Readline Type For You

    -
    - -
    complete (TAB) -
    -Attempt to perform completion on the text before point. +
    +
    complete (TAB) + +
    +

    Attempt to perform completion on the text before point. The actual completion performed is application-specific. Bash attempts completion treating the text as a variable (if the -text begins with `$'), username (if the text begins with -`~'), hostname (if the text begins with `@'), or +text begins with ‘$’), username (if the text begins with +‘~’), hostname (if the text begins with ‘@’), or command (including aliases and functions) in turn. If none of these produces a match, filename completion is attempted. -

    - - -

    possible-completions (M-?) -
    -List the possible completions of the text before point. +

    +
    +
    possible-completions (M-?) + +
    +

    List the possible completions of the text before point. When displaying completions, Readline sets the number of columns used -for display to the value of completion-display-width, the value of -the environment variable COLUMNS, or the screen width, in that order. -

    - - -

    insert-completions (M-*) -
    -Insert all completions of the text before point that would have -been generated by possible-completions. -

    - - -

    menu-complete () -
    -Similar to complete, but replaces the word to be completed +for display to the value of completion-display-width, the value of +the environment variable COLUMNS, or the screen width, in that order. +

    +
    +
    insert-completions (M-*) + +
    +

    Insert all completions of the text before point that would have +been generated by possible-completions. +

    +
    +
    menu-complete () + +
    +

    Similar to complete, but replaces the word to be completed with a single match from the list of possible completions. -Repeated execution of menu-complete steps through the list +Repeated execution of menu-complete steps through the list of possible completions, inserting each match in turn. At the end of the list of completions, the bell is rung -(subject to the setting of bell-style) +(subject to the setting of bell-style) and the original text is restored. -An argument of n moves n positions forward in the list +An argument of n moves n positions forward in the list of matches; a negative argument may be used to move backward through the list. -This command is intended to be bound to TAB, but is unbound +This command is intended to be bound to TAB, but is unbound by default. -

    - - -

    menu-complete-backward () -
    -Identical to menu-complete, but moves backward through the list -of possible completions, as if menu-complete had been given a +

    +
    +
    menu-complete-backward () + +
    +

    Identical to menu-complete, but moves backward through the list +of possible completions, as if menu-complete had been given a negative argument. -

    - - -

    delete-char-or-list () -
    -Deletes the character under the cursor if not at the beginning or -end of the line (like delete-char). +

    +
    +
    delete-char-or-list () + +
    +

    Deletes the character under the cursor if not at the beginning or +end of the line (like delete-char). If at the end of the line, behaves identically to -possible-completions. +possible-completions. This command is unbound by default. -

    - - -

    complete-filename (M-/) -
    -Attempt filename completion on the text before point. -

    - - -

    possible-filename-completions (C-x /) -
    -List the possible completions of the text before point, +

    +
    +
    complete-filename (M-/) + +
    +

    Attempt filename completion on the text before point. +

    +
    +
    possible-filename-completions (C-x /) + +
    +

    List the possible completions of the text before point, treating it as a filename. -

    - - -

    complete-username (M-~) -
    -Attempt completion on the text before point, treating +

    +
    +
    complete-username (M-~) + +
    +

    Attempt completion on the text before point, treating it as a username. -

    - - -

    possible-username-completions (C-x ~) -
    -List the possible completions of the text before point, +

    +
    +
    possible-username-completions (C-x ~) + +
    +

    List the possible completions of the text before point, treating it as a username. -

    - - -

    complete-variable (M-$) -
    -Attempt completion on the text before point, treating +

    +
    +
    complete-variable (M-$) + +
    +

    Attempt completion on the text before point, treating it as a shell variable. -

    - - -

    possible-variable-completions (C-x $) -
    -List the possible completions of the text before point, +

    +
    +
    possible-variable-completions (C-x $) + +
    +

    List the possible completions of the text before point, treating it as a shell variable. -

    - - -

    complete-hostname (M-@) -
    -Attempt completion on the text before point, treating +

    +
    +
    complete-hostname (M-@) + +
    +

    Attempt completion on the text before point, treating it as a hostname. -

    - - -

    possible-hostname-completions (C-x @) -
    -List the possible completions of the text before point, +

    +
    +
    possible-hostname-completions (C-x @) + +
    +

    List the possible completions of the text before point, treating it as a hostname. -

    - - -

    complete-command (M-!) -
    -Attempt completion on the text before point, treating +

    +
    +
    complete-command (M-!) + +
    +

    Attempt completion on the text before point, treating it as a command name. Command completion attempts to match the text against aliases, reserved words, shell functions, shell builtins, and finally executable filenames, in that order. -

    - - -

    possible-command-completions (C-x !) -
    -List the possible completions of the text before point, +

    +
    +
    possible-command-completions (C-x !) + +
    +

    List the possible completions of the text before point, treating it as a command name. -

    - - -

    dynamic-complete-history (M-TAB) -
    -Attempt completion on the text before point, comparing +

    +
    +
    dynamic-complete-history (M-TAB) + +
    +

    Attempt completion on the text before point, comparing the text against lines from the history list for possible completion matches. -

    - - -

    dabbrev-expand () -
    -Attempt menu completion on the text before point, comparing +

    +
    +
    dabbrev-expand () + +
    +

    Attempt menu completion on the text before point, comparing the text against lines from the history list for possible completion matches. -

    - - -

    complete-into-braces (M-{) -
    -Perform filename completion and insert the list of possible completions +

    +
    +
    complete-into-braces (M-{) + +
    +

    Perform filename completion and insert the list of possible completions enclosed within braces so the list is available to the shell -(see section 3.5.1 Brace Expansion). -

    +(see Brace Expansion). +

    +
    +
    -
    -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.4.7 Keyboard Macros

    - -
    - - -
    start-kbd-macro (C-x () -
    -Begin saving the characters typed into the current keyboard macro. -

    - - -

    end-kbd-macro (C-x )) -
    -Stop saving the characters typed into the current keyboard macro +
    + + + +

    8.4.7 Keyboard Macros

    +
    +
    start-kbd-macro (C-x () + +
    +

    Begin saving the characters typed into the current keyboard macro. +

    +
    +
    end-kbd-macro (C-x )) + +
    +

    Stop saving the characters typed into the current keyboard macro and save the definition. -

    - - -

    call-last-kbd-macro (C-x e) -
    -Re-execute the last keyboard macro defined, by making the characters +

    +
    +
    call-last-kbd-macro (C-x e) + +
    +

    Re-execute the last keyboard macro defined, by making the characters in the macro appear as if typed at the keyboard. -

    +

    +
    +
    print-last-kbd-macro () + +
    +

    Print the last keboard macro defined in a format suitable for the +inputrc file. +

    +
    +
    - -
    print-last-kbd-macro () -
    -Print the last keboard macro defined in a format suitable for the -inputrc file. -

    - -

    -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.4.8 Some Miscellaneous Commands

    - -
    - - -
    re-read-init-file (C-x C-r) -
    -Read in the contents of the inputrc file, and incorporate +
    + + + +

    8.4.8 Some Miscellaneous Commands

    +
    +
    re-read-init-file (C-x C-r) + +
    +

    Read in the contents of the inputrc file, and incorporate any bindings or variable assignments found there. -

    - - -

    abort (C-g) -
    -Abort the current editing command and -ring the terminal's bell (subject to the setting of -bell-style). -

    - - -

    do-uppercase-version (M-a, M-b, M-x, ...) -
    -If the metafied character x is lowercase, run the command +

    +
    +
    abort (C-g) + +
    +

    Abort the current editing command and +ring the terminal’s bell (subject to the setting of +bell-style). +

    +
    +
    do-uppercase-version (M-a, M-b, M-x, …) + +
    +

    If the metafied character x is lowercase, run the command that is bound to the corresponding uppercase character. -

    - - -

    prefix-meta (ESC) -
    -Metafy the next character typed. This is for keyboards -without a meta key. Typing `ESC f' is equivalent to typing -M-f. -

    - - -

    undo (C-_ or C-x C-u) -
    -Incremental undo, separately remembered for each line. -

    - - -

    revert-line (M-r) -
    -Undo all changes made to this line. This is like executing the undo +

    +
    +
    prefix-meta (ESC) + +
    +

    Metafy the next character typed. This is for keyboards +without a meta key. Typing ‘ESC f’ is equivalent to typing +M-f. +

    +
    +
    undo (C-_ or C-x C-u) + +
    +

    Incremental undo, separately remembered for each line. +

    +
    +
    revert-line (M-r) + +
    +

    Undo all changes made to this line. This is like executing the undo command enough times to get back to the beginning. -

    - - -

    tilde-expand (M-&) -
    -Perform tilde expansion on the current word. -

    - - -

    set-mark (C-@) -
    -Set the mark to the point. If a +

    +
    +
    tilde-expand (M-&) + +
    +

    Perform tilde expansion on the current word. +

    +
    +
    set-mark (C-@) + +
    +

    Set the mark to the point. If a numeric argument is supplied, the mark is set to that position. -

    - - -

    exchange-point-and-mark (C-x C-x) -
    -Swap the point with the mark. The current cursor position is set to +

    +
    +
    exchange-point-and-mark (C-x C-x) + +
    +

    Swap the point with the mark. The current cursor position is set to the saved position, and the old cursor position is saved as the mark. -

    - - -

    character-search (C-]) -
    -A character is read and point is moved to the next occurrence of that +

    +
    +
    character-search (C-]) + +
    +

    A character is read and point is moved to the next occurrence of that character. A negative count searches for previous occurrences. -

    - - -

    character-search-backward (M-C-]) -
    -A character is read and point is moved to the previous occurrence +

    +
    +
    character-search-backward (M-C-]) + +
    +

    A character is read and point is moved to the previous occurrence of that character. A negative count searches for subsequent occurrences. -

    - - -

    skip-csi-sequence () -
    -Read enough characters to consume a multi-key sequence such as those +

    +
    +
    skip-csi-sequence () + +
    +

    Read enough characters to consume a multi-key sequence such as those defined for keys like Home and End. Such sequences begin with a Control Sequence Indicator (CSI), usually ESC-[. If this sequence is -bound to "\e[", keys producing such sequences will have no effect +bound to "\e[", keys producing such sequences will have no effect unless explicitly bound to a readline command, instead of inserting stray characters into the editing buffer. This is unbound by default, but usually bound to ESC-[. -

    - - -

    insert-comment (M-#) -
    -Without a numeric argument, the value of the comment-begin +

    +
    +
    insert-comment (M-#) + +
    +

    Without a numeric argument, the value of the comment-begin variable is inserted at the beginning of the current line. If a numeric argument is supplied, this command acts as a toggle: if the characters at the beginning of the line do not match the value -of comment-begin, the value is inserted, otherwise -the characters in comment-begin are deleted from the beginning of +of comment-begin, the value is inserted, otherwise +the characters in comment-begin are deleted from the beginning of the line. In either case, the line is accepted as if a newline had been typed. -The default value of comment-begin causes this command +The default value of comment-begin causes this command to make the current line a shell comment. If a numeric argument causes the comment character to be removed, the line will be executed by the shell. -

    - - -

    dump-functions () -
    -Print all of the functions and their key bindings to the +

    +
    +
    dump-functions () + +
    +

    Print all of the functions and their key bindings to the Readline output stream. If a numeric argument is supplied, the output is formatted in such a way that it can be made part -of an inputrc file. This command is unbound by default. -

    - - -

    dump-variables () -
    -Print all of the settable variables and their values to the +of an inputrc file. This command is unbound by default. +

    +
    +
    dump-variables () + +
    +

    Print all of the settable variables and their values to the Readline output stream. If a numeric argument is supplied, the output is formatted in such a way that it can be made part -of an inputrc file. This command is unbound by default. -

    - - -

    dump-macros () -
    -Print all of the Readline key sequences bound to macros and the +of an inputrc file. This command is unbound by default. +

    +
    +
    dump-macros () + +
    +

    Print all of the Readline key sequences bound to macros and the strings they output. If a numeric argument is supplied, the output is formatted in such a way that it can be made part -of an inputrc file. This command is unbound by default. -

    - - -

    glob-complete-word (M-g) -
    -The word before point is treated as a pattern for pathname expansion, +of an inputrc file. This command is unbound by default. +

    +
    +
    glob-complete-word (M-g) + +
    +

    The word before point is treated as a pattern for pathname expansion, with an asterisk implicitly appended. This pattern is used to generate a list of matching file names for possible completions. -

    - - -

    glob-expand-word (C-x *) -
    -The word before point is treated as a pattern for pathname expansion, +

    +
    +
    glob-expand-word (C-x *) + +
    +

    The word before point is treated as a pattern for pathname expansion, and the list of matching file names is inserted, replacing the word. -If a numeric argument is supplied, a `*' is appended before +If a numeric argument is supplied, a ‘*’ is appended before pathname expansion. -

    - - -

    glob-list-expansions (C-x g) -
    -The list of expansions that would have been generated by -glob-expand-word is displayed, and the line is redrawn. -If a numeric argument is supplied, a `*' is appended before +

    +
    +
    glob-list-expansions (C-x g) + +
    +

    The list of expansions that would have been generated by +glob-expand-word is displayed, and the line is redrawn. +If a numeric argument is supplied, a ‘*’ is appended before pathname expansion. -

    - - -

    display-shell-version (C-x C-v) -
    -Display version information about the current instance of Bash. -

    - - -

    shell-expand-line (M-C-e) -
    -Expand the line as the shell does. +

    +
    +
    display-shell-version (C-x C-v) + +
    +

    Display version information about the current instance of Bash. +

    +
    +
    shell-expand-line (M-C-e) + +
    +

    Expand the line as the shell does. This performs alias and history expansion as well as all of the shell -word expansions (see section 3.5 Shell Expansions). -

    - - -

    history-expand-line (M-^) -
    -Perform history expansion on the current line. -

    - - -

    magic-space () -
    -Perform history expansion on the current line and insert a space -(see section 9.3 History Expansion). -

    - - -

    alias-expand-line () -
    -Perform alias expansion on the current line (see section 6.6 Aliases). -

    - - -

    history-and-alias-expand-line () -
    -Perform history and alias expansion on the current line. -

    - - -

    insert-last-argument (M-. or M-_) -
    -A synonym for yank-last-arg. -

    - - -

    operate-and-get-next (C-o) -
    -Accept the current line for execution and fetch the next line +word expansions (see Shell Expansions). +

    +
    +
    history-expand-line (M-^) + +
    +

    Perform history expansion on the current line. +

    +
    +
    magic-space () + +
    +

    Perform history expansion on the current line and insert a space +(see History Interaction). +

    +
    +
    alias-expand-line () + +
    +

    Perform alias expansion on the current line (see Aliases). +

    +
    +
    history-and-alias-expand-line () + +
    +

    Perform history and alias expansion on the current line. +

    +
    +
    insert-last-argument (M-. or M-_) + +
    +

    A synonym for yank-last-arg. +

    +
    +
    operate-and-get-next (C-o) + +
    +

    Accept the current line for execution and fetch the next line relative to the current line from the history for editing. Any argument is ignored. -

    - - -

    edit-and-execute-command (C-xC-e) -
    -Invoke an editor on the current command line, and execute the result as shell +

    +
    +
    edit-and-execute-command (C-xC-e) + +
    +

    Invoke an editor on the current command line, and execute the result as shell commands. Bash attempts to invoke -$VISUAL, $EDITOR, and emacs +$VISUAL, $EDITOR, and emacs as the editor, in that order. -

    +

    -
    -

    - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.5 Readline vi Mode

    - -

    +

    +
    -While the Readline library does not have a full set of vi +
    + + + +

    8.5 Readline vi Mode

    + +

    While the Readline library does not have a full set of vi editing functions, it does contain enough to allow simple editing -of the line. The Readline vi mode behaves as specified in -the POSIX standard. -

    - -In order to switch interactively between emacs and vi -editing modes, use the `set -o emacs' and `set -o vi' -commands (see section 4.3.1 The Set Builtin). -The Readline default is emacs mode. -

    - -When you enter a line in vi mode, you are already placed in -`insertion' mode, as if you had typed an `i'. Pressing ESC -switches you into `command' mode, where you can edit the text of the -line with the standard vi movement keys, move to previous -history lines with `k' and subsequent lines with `j', and +of the line. The Readline vi mode behaves as specified in +the POSIX standard. +

    +

    In order to switch interactively between emacs and vi +editing modes, use the ‘set -o emacs’ and ‘set -o vi’ +commands (see The Set Builtin). +The Readline default is emacs mode. +

    +

    When you enter a line in vi mode, you are already placed in +‘insertion’ mode, as if you had typed an ‘i’. Pressing ESC +switches you into ‘command’ mode, where you can edit the text of the +line with the standard vi movement keys, move to previous +history lines with ‘k’ and subsequent lines with ‘j’, and so forth. -

    +

    +
    + + + +

    8.6 Programmable Completion

    + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.6 Programmable Completion

    - -

    - -When word completion is attempted for an argument to a command for -which a completion specification (a compspec) has been defined -using the complete builtin (see section 8.7 Programmable Completion Builtins), +

    When word completion is attempted for an argument to a command for +which a completion specification (a compspec) has been defined +using the complete builtin (see Programmable Completion Builtins), the programmable completion facilities are invoked. -

    - -First, the command name is identified. +

    +

    First, the command name is identified. If a compspec has been defined for that command, the compspec is used to generate the list of possible completions for the word. If the command word is the empty string (completion attempted at the beginning of an empty line), any compspec defined with -the `-E' option to complete is used. +the -E option to complete is used. If the command word is a full pathname, a compspec for the full pathname is searched for first. If no compspec is found for the full pathname, an attempt is made to find a compspec for the portion following the final slash. If those searches do not result in a compspec, any compspec defined with -the `-D' option to complete is used as the default. -

    - -Once a compspec has been found, it is used to generate the list of +the -D option to complete is used as the default. +

    +

    Once a compspec has been found, it is used to generate the list of matching words. If a compspec is not found, the default Bash completion -described above (see section 8.4.6 Letting Readline Type For You) is performed. -

    - -First, the actions specified by the compspec are used. +described above (see Commands For Completion) is performed. +

    +

    First, the actions specified by the compspec are used. Only matches which are prefixed by the word being completed are returned. -When the `-f' or `-d' option is used for filename or -directory name completion, the shell variable FIGNORE is +When the -f or -d option is used for filename or +directory name completion, the shell variable FIGNORE is used to filter the matches. -See section 5.2 Bash Variables, for a description of FIGNORE. -

    - -Any completions specified by a filename expansion pattern to the -`-G' option are generated next. +See Bash Variables, for a description of FIGNORE. +

    +

    Any completions specified by a filename expansion pattern to the +-G option are generated next. The words generated by the pattern need not match the word being completed. -The GLOBIGNORE shell variable is not used to filter the matches, -but the FIGNORE shell variable is used. -

    - -Next, the string specified as the argument to the `-W' option +The GLOBIGNORE shell variable is not used to filter the matches, +but the FIGNORE shell variable is used. +

    +

    Next, the string specified as the argument to the -W option is considered. -The string is first split using the characters in the IFS +The string is first split using the characters in the IFS special variable as delimiters. Shell quoting is honored. Each word is then expanded using brace expansion, tilde expansion, parameter and variable expansion, command substitution, and arithmetic expansion, -as described above (see section 3.5 Shell Expansions). +as described above (see Shell Expansions). The results are split using the rules described above -(see section 3.5.7 Word Splitting). +(see Word Splitting). The results of the expansion are prefix-matched against the word being completed, and the matching words become the possible completions. -

    - -After these matches have been generated, any shell function or command -specified with the `-F' and `-C' options is invoked. -When the command or function is invoked, the COMP_LINE, -COMP_POINT, COMP_KEY, and COMP_TYPE variables are -assigned values as described above (see section 5.2 Bash Variables). -If a shell function is being invoked, the COMP_WORDS and -COMP_CWORD variables are also set. +

    +

    After these matches have been generated, any shell function or command +specified with the -F and -C options is invoked. +When the command or function is invoked, the COMP_LINE, +COMP_POINT, COMP_KEY, and COMP_TYPE variables are +assigned values as described above (see Bash Variables). +If a shell function is being invoked, the COMP_WORDS and +COMP_CWORD variables are also set. When the function or command is invoked, the first argument ($1) is the name of the command whose arguments are being completed, the second argument ($2) is the word being completed, and the third argument @@ -12622,77 +11552,68 @@ line. No filtering of the generated completions against the word being completed is performed; the function or command has complete freedom in generating the matches. -

    - -Any function specified with `-F' is invoked first. +

    +

    Any function specified with -F is invoked first. The function may use any of the shell facilities, including the -compgen and compopt builtins described below -(see section 8.7 Programmable Completion Builtins), to generate the matches. -It must put the possible completions in the COMPREPLY array +compgen and compopt builtins described below +(see Programmable Completion Builtins), to generate the matches. +It must put the possible completions in the COMPREPLY array variable, one per array element. -

    - -Next, any command specified with the `-C' option is invoked +

    +

    Next, any command specified with the -C option is invoked in an environment equivalent to command substitution. It should print a list of completions, one per line, to the standard output. Backslash may be used to escape a newline, if necessary. -

    - -After all of the possible completions are generated, any filter -specified with the `-X' option is applied to the list. -The filter is a pattern as used for pathname expansion; a `&' +

    +

    After all of the possible completions are generated, any filter +specified with the -X option is applied to the list. +The filter is a pattern as used for pathname expansion; a ‘&’ in the pattern is replaced with the text of the word being completed. -A literal `&' may be escaped with a backslash; the backslash +A literal ‘&’ may be escaped with a backslash; the backslash is removed before attempting a match. Any completion that matches the pattern will be removed from the list. -A leading `!' negates the pattern; in this case any completion +A leading ‘!’ negates the pattern; in this case any completion not matching the pattern will be removed. -If the nocasematch shell option -(see the description of shopt in 4.3.2 The Shopt Builtin) +If the nocasematch shell option +(see the description of shopt in The Shopt Builtin) is enabled, the match is performed without regard to the case of alphabetic characters. -

    - -Finally, any prefix and suffix specified with the `-P' and `-S' +

    +

    Finally, any prefix and suffix specified with the -P and -S options are added to each member of the completion list, and the result is returned to the Readline completion code as the list of possible completions. -

    - -If the previously-applied actions do not generate any matches, and the -`-o dirnames' option was supplied to complete when the +

    +

    If the previously-applied actions do not generate any matches, and the +-o dirnames option was supplied to complete when the compspec was defined, directory name completion is attempted. -

    - -If the `-o plusdirs' option was supplied to complete when +

    +

    If the -o plusdirs option was supplied to complete when the compspec was defined, directory name completion is attempted and any matches are added to the results of the other actions. -

    - -By default, if a compspec is found, whatever it generates is returned to +

    +

    By default, if a compspec is found, whatever it generates is returned to the completion code as the full set of possible completions. The default Bash completions are not attempted, and the Readline default of filename completion is disabled. -If the `-o bashdefault' option was supplied to complete when +If the -o bashdefault option was supplied to complete when the compspec was defined, the default Bash completions are attempted if the compspec generates no matches. -If the `-o default' option was supplied to complete when the -compspec was defined, Readline's default completion will be performed +If the -o default option was supplied to complete when the +compspec was defined, Readline’s default completion will be performed if the compspec (and, if attempted, the default Bash completions) generate no matches. -

    - -When a compspec indicates that directory name completion is desired, +

    +

    When a compspec indicates that directory name completion is desired, the programmable completion functions force Readline to append a slash to completed names which are symbolic links to directories, subject to -the value of the mark-directories Readline variable, regardless -of the setting of the mark-symlinked-directories Readline variable. -

    - -There is some support for dynamically modifying completions. This is +the value of the mark-directories Readline variable, regardless +of the setting of the mark-symlinked-directories Readline variable. +

    +

    There is some support for dynamically modifying completions. This is most useful when used in combination with a default completion specified -with `-D'. It's possible for shell functions executed as completion +with -D. It’s possible for shell functions executed as completion handlers to indicate that completion should be retried by returning an exit status of 124. If a shell function returns 124, and changes the compspec associated with the command on which completion is being @@ -12701,400 +11622,373 @@ programmable completion restarts from the beginning, with an attempt to find a new compspec for that command. This allows a set of completions to be built dynamically as completion is attempted, rather than being loaded all at once. -

    - -For instance, assuming that there is a library of compspecs, each kept in a +

    +

    For instance, assuming that there is a library of compspecs, each kept in a file corresponding to the name of the command, the following default completion function would load completions dynamically: -

    - -
     
    _completion_loader()
    +

    +
    +
    _completion_loader()
     {
    -    . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
    +    . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
     }
     complete -D -F _completion_loader -o bashdefault -o default
    -

    + - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.7 Programmable Completion Builtins

    - -

    +


    + + + +

    8.7 Programmable Completion Builtins

    + -Three builtin commands are available to manipulate the programmable completion +

    Three builtin commands are available to manipulate the programmable completion facilities: one to specify how the arguments to a particular command are to be completed, and two to modify the completion as it is happening. -

    +

    +
    +
    compgen
    +
    +
    +
    compgen [option] [word]
    +
    -
    -
    compgen -
    -
     
    compgen [option] [word]
    -

    - -Generate possible completion matches for word according to -the options, which may be any option accepted by the -complete -builtin with the exception of `-p' and `-r', and write +

    Generate possible completion matches for word according to +the options, which may be any option accepted by the +complete +builtin with the exception of -p and -r, and write the matches to the standard output. -When using the `-F' or `-C' options, the various shell variables +When using the -F or -C options, the various shell variables set by the programmable completion facilities, while available, will not have useful values. -

    - -The matches will be generated in the same way as if the programmable +

    +

    The matches will be generated in the same way as if the programmable completion code had generated them directly from a completion specification with the same flags. -If word is specified, only those completions matching word +If word is specified, only those completions matching word will be displayed. -

    - -The return value is true unless an invalid option is supplied, or no +

    +

    The return value is true unless an invalid option is supplied, or no matches were generated. -

    +

    +
    +
    complete
    +
    +
    +
    complete [-abcdefgjksuv] [-o comp-option] [-DE] [-A action] [-G globpat] [-W wordlist]
    +[-F function] [-C command] [-X filterpat]
    +[-P prefix] [-S suffix] name [name …]
    +complete -pr [-DE] [name …]
    +
    -
    complete -
    -
     
    complete [-abcdefgjksuv] [-o comp-option] [-DE] [-A action] [-G globpat] [-W wordlist]
    -[-F function] [-C command] [-X filterpat]
    -[-P prefix] [-S suffix] name [name ...]
    -complete -pr [-DE] [name ...]
    -

    - -Specify how arguments to each name should be completed. -If the `-p' option is supplied, or if no options are supplied, existing +

    Specify how arguments to each name should be completed. +If the -p option is supplied, or if no options are supplied, existing completion specifications are printed in a way that allows them to be reused as input. -The `-r' option removes a completion specification for -each name, or, if no names are supplied, all +The -r option removes a completion specification for +each name, or, if no names are supplied, all completion specifications. -The `-D' option indicates that the remaining options and actions should -apply to the "default" command completion; that is, completion attempted +The -D option indicates that the remaining options and actions should +apply to the “default” command completion; that is, completion attempted on a command for which no completion has previously been defined. -The `-E' option indicates that the remaining options and actions should -apply to "empty" command completion; that is, completion attempted on a +The -E option indicates that the remaining options and actions should +apply to “empty” command completion; that is, completion attempted on a blank line. -

    - -The process of applying these completion specifications when word completion -is attempted is described above (see section 8.6 Programmable Completion). The -`-D' option takes precedence over `-E'. -

    - -Other options, if specified, have the following meanings. -The arguments to the `-G', `-W', and `-X' options -(and, if necessary, the `-P' and `-S' options) +

    +

    The process of applying these completion specifications when word completion +is attempted is described above (see Programmable Completion). The +-D option takes precedence over -E. +

    +

    Other options, if specified, have the following meanings. +The arguments to the -G, -W, and -X options +(and, if necessary, the -P and -S options) should be quoted to protect them from expansion before the -complete builtin is invoked. -

    +complete builtin is invoked. +

    -
    -
    -o comp-option -
    The comp-option controls several aspects of the compspec's behavior +
    +
    -o comp-option
    +

    The comp-option controls several aspects of the compspec’s behavior beyond the simple generation of completions. -comp-option may be one of: -

    - -

    - -
    bashdefault -
    Perform the rest of the default Bash completions if the compspec +comp-option may be one of: +

    +
    +
    bashdefault
    +

    Perform the rest of the default Bash completions if the compspec generates no matches. -

    - -

    default -
    Use Readline's default filename completion if the compspec generates +

    +
    +
    default
    +

    Use Readline’s default filename completion if the compspec generates no matches. -

    - -

    dirnames -
    Perform directory name completion if the compspec generates no matches. -

    - -

    filenames -
    Tell Readline that the compspec generates filenames, so it can perform any +

    +
    +
    dirnames
    +

    Perform directory name completion if the compspec generates no matches. +

    +
    +
    filenames
    +

    Tell Readline that the compspec generates filenames, so it can perform any filename-specific processing (like adding a slash to directory names quoting special characters, or suppressing trailing spaces). This option is intended to be used with shell functions specified -with `-F'. -

    - -

    noquote -
    Tell Readline not to quote the completed words if they are filenames +with -F. +

    +
    +
    noquote
    +

    Tell Readline not to quote the completed words if they are filenames (quoting filenames is the default). -

    - -

    nosort -
    Tell Readline not to sort the list of possible completions alphabetically. -

    - -

    nospace -
    Tell Readline not to append a space (the default) to words completed at +

    +
    +
    nosort
    +

    Tell Readline not to sort the list of possible completions alphabetically. +

    +
    +
    nospace
    +

    Tell Readline not to append a space (the default) to words completed at the end of the line. -

    - -

    plusdirs -
    After any matches defined by the compspec are generated, +

    +
    +
    plusdirs
    +

    After any matches defined by the compspec are generated, directory name completion is attempted and any matches are added to the results of the other actions. -

    +

    +
    +
    -
    -

    - -

    -A action -
    The action may be one of the following to generate a list of possible +
    +
    -A action
    +

    The action may be one of the following to generate a list of possible completions: -

    +

    +
    +
    alias
    +

    Alias names. May also be specified as -a. +

    +
    +
    arrayvar
    +

    Array variable names. +

    +
    +
    binding
    +

    Readline key binding names (see Bindable Readline Commands). +

    +
    +
    builtin
    +

    Names of shell builtin commands. May also be specified as -b. +

    +
    +
    command
    +

    Command names. May also be specified as -c. +

    +
    +
    directory
    +

    Directory names. May also be specified as -d. +

    +
    +
    disabled
    +

    Names of disabled shell builtins. +

    +
    +
    enabled
    +

    Names of enabled shell builtins. +

    +
    +
    export
    +

    Names of exported shell variables. May also be specified as -e. +

    +
    +
    file
    +

    File names. May also be specified as -f. +

    +
    +
    function
    +

    Names of shell functions. +

    +
    +
    group
    +

    Group names. May also be specified as -g. +

    +
    +
    helptopic
    +

    Help topics as accepted by the help builtin (see Bash Builtins). +

    +
    +
    hostname
    +

    Hostnames, as taken from the file specified by the +HOSTFILE shell variable (see Bash Variables). +

    +
    +
    job
    +

    Job names, if job control is active. May also be specified as -j. +

    +
    +
    keyword
    +

    Shell reserved words. May also be specified as -k. +

    +
    +
    running
    +

    Names of running jobs, if job control is active. +

    +
    +
    service
    +

    Service names. May also be specified as -s. +

    +
    +
    setopt
    +

    Valid arguments for the -o option to the set builtin +(see The Set Builtin). +

    +
    +
    shopt
    +

    Shell option names as accepted by the shopt builtin +(see Bash Builtins). +

    +
    +
    signal
    +

    Signal names. +

    +
    +
    stopped
    +

    Names of stopped jobs, if job control is active. +

    +
    +
    user
    +

    User names. May also be specified as -u. +

    +
    +
    variable
    +

    Names of all shell variables. May also be specified as -v. +

    +
    -
    -
    alias -
    Alias names. May also be specified as `-a'. -

    - -

    arrayvar -
    Array variable names. -

    - -

    binding -
    Readline key binding names (see section 8.4 Bindable Readline Commands). -

    - -

    builtin -
    Names of shell builtin commands. May also be specified as `-b'. -

    - -

    command -
    Command names. May also be specified as `-c'. -

    - -

    directory -
    Directory names. May also be specified as `-d'. -

    - -

    disabled -
    Names of disabled shell builtins. -

    - -

    enabled -
    Names of enabled shell builtins. -

    - -

    export -
    Names of exported shell variables. May also be specified as `-e'. -

    - -

    file -
    File names. May also be specified as `-f'. -

    - -

    function -
    Names of shell functions. -

    - -

    group -
    Group names. May also be specified as `-g'. -

    - -

    helptopic -
    Help topics as accepted by the help builtin (see section 4.2 Bash Builtin Commands). -

    - -

    hostname -
    Hostnames, as taken from the file specified by the -HOSTFILE shell variable (see section 5.2 Bash Variables). -

    - -

    job -
    Job names, if job control is active. May also be specified as `-j'. -

    - -

    keyword -
    Shell reserved words. May also be specified as `-k'. -

    - -

    running -
    Names of running jobs, if job control is active. -

    - -

    service -
    Service names. May also be specified as `-s'. -

    - -

    setopt -
    Valid arguments for the `-o' option to the set builtin -(see section 4.3.1 The Set Builtin). -

    - -

    shopt -
    Shell option names as accepted by the shopt builtin -(see section 4.2 Bash Builtin Commands). -

    - -

    signal -
    Signal names. -

    - -

    stopped -
    Names of stopped jobs, if job control is active. -

    - -

    user -
    User names. May also be specified as `-u'. -

    - -

    variable -
    Names of all shell variables. May also be specified as `-v'. -
    -

    - -

    -C command -
    command is executed in a subshell environment, and its output is +
    +
    -C command
    +

    command is executed in a subshell environment, and its output is used as the possible completions. -

    - -

    -F function -
    The shell function function is executed in the current shell +

    +
    +
    -F function
    +

    The shell function function is executed in the current shell environment. When it is executed, $1 is the name of the command whose arguments are being completed, $2 is the word being completed, and $3 is the word preceding the word being completed, as described above -(see section 8.6 Programmable Completion). +(see Programmable Completion). When it finishes, the possible completions are retrieved from the value -of the COMPREPLY array variable. -

    - -

    -G globpat -
    The filename expansion pattern globpat is expanded to generate +of the COMPREPLY array variable. +

    +
    +
    -G globpat
    +

    The filename expansion pattern globpat is expanded to generate the possible completions. -

    - -

    -P prefix -
    prefix is added at the beginning of each possible completion +

    +
    +
    -P prefix
    +

    prefix is added at the beginning of each possible completion after all other options have been applied. -

    - -

    -S suffix -
    suffix is appended to each possible completion +

    +
    +
    -S suffix
    +

    suffix is appended to each possible completion after all other options have been applied. -

    - -

    -W wordlist -
    The wordlist is split using the characters in the -IFS special variable as delimiters, and each resultant word +

    +
    +
    -W wordlist
    +

    The wordlist is split using the characters in the +IFS special variable as delimiters, and each resultant word is expanded. The possible completions are the members of the resultant list which match the word being completed. -

    - -

    -X filterpat -
    filterpat is a pattern as used for filename expansion. +

    +
    +
    -X filterpat
    +

    filterpat is a pattern as used for filename expansion. It is applied to the list of possible completions generated by the preceding options and arguments, and each completion matching -filterpat is removed from the list. -A leading `!' in filterpat negates the pattern; in this -case, any completion not matching filterpat is removed. -

    -

    +filterpat is removed from the list. +A leading ‘!’ in filterpat negates the pattern; in this +case, any completion not matching filterpat is removed. +

    +
    -The return value is true unless an invalid option is supplied, an option -other than `-p' or `-r' is supplied without a name +

    The return value is true unless an invalid option is supplied, an option +other than -p or -r is supplied without a name argument, an attempt is made to remove a completion specification for -a name for which no specification exists, or +a name for which no specification exists, or an error occurs adding a completion specification. -

    - -

    compopt -
    -
     
    compopt [-o option] [-DE] [+o option] [name]
    -
    Modify completion options for each name according to the -options, or for the currently-executing completion if no names +

    +
    +
    compopt
    +
    +
    +
    compopt [-o option] [-DE] [+o option] [name]
    +
    +

    Modify completion options for each name according to the +options, or for the currently-executing completion if no names are supplied. -If no options are given, display the completion options for each -name or the current completion. -The possible values of option are those valid for the complete +If no options are given, display the completion options for each +name or the current completion. +The possible values of option are those valid for the complete builtin described above. -The `-D' option indicates that the remaining options should -apply to the "default" command completion; that is, completion attempted +The -D option indicates that the remaining options should +apply to the “default” command completion; that is, completion attempted on a command for which no completion has previously been defined. -The `-E' option indicates that the remaining options should -apply to "empty" command completion; that is, completion attempted on a +The -E option indicates that the remaining options should +apply to “empty” command completion; that is, completion attempted on a blank line. -

    - -The `-D' option takes precedence over `-E'. -

    - -The return value is true unless an invalid option is supplied, an attempt -is made to modify the options for a name for which no completion +

    +

    The -D option takes precedence over -E. +

    +

    The return value is true unless an invalid option is supplied, an attempt +is made to modify the options for a name for which no completion specification exists, or an output error occurs. -

    +

    +
    +
    -
    -

    +


    + + + +

    8.8 A Programmable Completion Example

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    8.8 A Programmable Completion Example

    - -

    - -The most common way to obtain additional completion functionality beyond -the default actions complete and compgen provide is to use -a shell function and bind it to a particular command using complete -F. -

    - -The following function provides completions for the cd builtin. +

    The most common way to obtain additional completion functionality beyond +the default actions complete and compgen provide is to use +a shell function and bind it to a particular command using complete -F. +

    +

    The following function provides completions for the cd builtin. It is a reasonably good example of what shell functions must do when -used for completion. This function uses the word passsed as $2 +used for completion. This function uses the word passsed as $2 to determine the directory name to complete. You can also use the -COMP_WORDS array variable; the current word is indexed by the -COMP_CWORD variable. -

    - -The function relies on the complete and compgen builtins -to do much of the work, adding only the things that the Bash cd +COMP_WORDS array variable; the current word is indexed by the +COMP_CWORD variable. +

    +

    The function relies on the complete and compgen builtins +to do much of the work, adding only the things that the Bash cd does beyond accepting basic directory names: -tilde expansion (see section 3.5.2 Tilde Expansion), -searching directories in $CDPATH, which is described above -(see section 4.1 Bourne Shell Builtins), -and basic support for the cdable_vars shell option -(see section 4.3.2 The Shopt Builtin). -_comp_cd modifies the value of IFS so that it contains only -a newline to accommodate file names containing spaces and tabs -- -compgen prints the possible completions it generates one per line. -

    - -Possible completions go into the COMPREPLY array variable, one +tilde expansion (see Tilde Expansion), +searching directories in $CDPATH, which is described above +(see Bourne Shell Builtins), +and basic support for the cdable_vars shell option +(see The Shopt Builtin). +_comp_cd modifies the value of IFS so that it contains only +a newline to accommodate file names containing spaces and tabs – +compgen prints the possible completions it generates one per line. +

    +

    Possible completions go into the COMPREPLY array variable, one completion per array element. The programmable completion system retrieves the completions from there when the function returns. -

    - -
     
    # A completion function for the cd builtin
    +

    +
    +
    # A completion function for the cd builtin
     # based on the cd completion function from the bash_completion package
     _comp_cd()
     {
    @@ -13103,16 +11997,16 @@ _comp_cd()
         local i j k
     
         # Tilde expansion, with side effect of expanding tilde to full pathname
    -    case "$2" in
    -    \~*)    eval cur="$2" ;;
    +    case "$2" in
    +    \~*)    eval cur="$2" ;;
         *)      cur=$2 ;;
         esac
     
         # no cdpath or absolute pathname -- straight directory completion
    -    if [[ -z "${CDPATH:-}" ]] || [[ "$cur" == @(./*|../*|/*) ]]; then
    +    if [[ -z "${CDPATH:-}" ]] || [[ "$cur" == @(./*|../*|/*) ]]; then
             # compgen prints paths one per line; could also use while loop
             IFS=$'\n'
    -        COMPREPLY=( $(compgen -d -- "$cur") )
    +        COMPREPLY=( $(compgen -d -- "$cur") )
             IFS=$' \t\n'
         # CDPATH+directories in the current directory if not in CDPATH
         else
    @@ -13124,2103 +12018,1676 @@ _comp_cd()
             _cdpath=${_cdpath/%:/:.}
             for i in ${_cdpath//:/$'\n'}; do
                 if [[ $i -ef . ]]; then _skipdot=true; fi
    -            k="${#COMPREPLY[@]}"
    -            for j in $( compgen -d -- "$i/$cur" ); do
    +            k="${#COMPREPLY[@]}"
    +            for j in $( compgen -d -- "$i/$cur" ); do
                     COMPREPLY[k++]=${j#$i/}        # cut off directory
                 done
             done
    -        $_skipdot || COMPREPLY+=( $(compgen -d -- "$cur") )
    +        $_skipdot || COMPREPLY+=( $(compgen -d -- "$cur") )
             IFS=$' \t\n'
         fi
     
         # variable names if appropriate shell option set and no completions
    -    if shopt -q cdable_vars && [[ ${#COMPREPLY[@]} -eq 0 ]]; then
    -        COMPREPLY=( $(compgen -v -- "$cur") )
    +    if shopt -q cdable_vars && [[ ${#COMPREPLY[@]} -eq 0 ]]; then
    +        COMPREPLY=( $(compgen -v -- "$cur") )
         fi
     
         return 0
     }
    -

    + -We install the completion function using the `-F' option to -complete: -

    - -
     
    # Tell readline to quote appropriate and append slashes to directories;
    +

    We install the completion function using the -F option to +complete: +

    +
    +
    # Tell readline to quote appropriate and append slashes to directories;
     # use the bash default completion for other arguments
     complete -o filenames -o nospace -o bashdefault -F _comp_cd cd
    -

    + -Since we'd like Bash and Readline to take care of some +

    Since we’d like Bash and Readline to take care of some of the other details for us, we use several other options to tell Bash -and Readline what to do. The `-o filenames' option tells Readline +and Readline what to do. The -o filenames option tells Readline that the possible completions should be treated as filenames, and quoted appropriately. That option will also cause Readline to append a slash to filenames it can determine are directories (which is why we might want to -extend _comp_cd to append a slash if we're using directories found -via CDPATH: Readline can't tell those completions are directories). -The `-o nospace' option tells Readline to not append a space +extend _comp_cd to append a slash if we’re using directories found +via CDPATH: Readline can’t tell those completions are directories). +The -o nospace option tells Readline to not append a space character to the directory name, in case we want to append to it. -The `-o bashdefault' option brings in the rest of the "Bash default" -completions -- possible completion that Bash adds to the default Readline +The -o bashdefault option brings in the rest of the "Bash default" +completions – possible completion that Bash adds to the default Readline set. These include things like command name completion, variable completion -for words beginning with `{', completions containing pathname -expansion patterns (see section 3.5.8 Filename Expansion), and so on. -

    - -Once installed using complete, _comp_cd will be called every -time we attempt word completion for a cd command. -

    - -Many more examples -- an extensive collection of completions for most of -the common GNU, Unix, and Linux commands -- are available as part of the +for words beginning with ‘{’, completions containing pathname +expansion patterns (see Filename Expansion), and so on. +

    +

    Once installed using complete, _comp_cd will be called every +time we attempt word completion for a cd command. +

    +

    Many more examples – an extensive collection of completions for most of +the common GNU, Unix, and Linux commands – are available as part of the bash_completion project. This is installed by default on many GNU/Linux distributions. Originally written by Ian Macdonald, the project now lives -at http://bash-completion.alioth.debian.org/. There are ports for +at http://bash-completion.alioth.debian.org/. There are ports for other systems such as Solaris and Mac OS X. -

    +

    +

    An older version of the bash_completion package is distributed with bash +in the examples/complete subdirectory. +

    + -An older version of the bash_completion package is distributed with bash -in the `examples/complete' subdirectory. -

    +


    + +
    +

    +Next: , Previous: , Up: Top   [Contents][Index]

    +
    + +

    9 Using History Interactively

    - -

    - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    9. Using History Interactively

    - -

    +

    This chapter describes how to use the GNU History Library +interactively, from a user’s standpoint. +It should be considered a user’s guide. +For information on using the GNU History Library in other programs, +see the GNU Readline Library Manual. +

    + + + + + -This chapter describes how to use the GNU History Library -interactively, from a user's standpoint. -It should be considered a user's guide. -For information on using the GNU History Library in other programs, -see the GNU Readline Library Manual. -

    +


    + + + +

    9.1 Bash History Facilities

    + + -
    - - - -
    9.1 Bash History Facilities  How Bash lets you manipulate your command - history.
    9.2 Bash History Builtins  The Bash builtin commands that manipulate - the command history.
    9.3 History Expansion  What it feels like using History as a user.
    -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    9.1 Bash History Facilities

    - -

    - -When the `-o history' option to the set builtin -is enabled (see section 4.3.1 The Set Builtin), -the shell provides access to the command history, +

    When the -o history option to the set builtin +is enabled (see The Set Builtin), +the shell provides access to the command history, the list of commands previously typed. -The value of the HISTSIZE shell variable is used as the +The value of the HISTSIZE shell variable is used as the number of commands to save in a history list. -The text of the last $HISTSIZE +The text of the last $HISTSIZE commands (default 500) is saved. The shell stores each command in the history list prior to parameter and variable expansion but after history expansion is performed, subject to the values of the shell variables -HISTIGNORE and HISTCONTROL. -

    - -When the shell starts up, the history is initialized from the -file named by the HISTFILE variable (default `~/.bash_history'). -The file named by the value of HISTFILE is truncated, if +HISTIGNORE and HISTCONTROL. +

    +

    When the shell starts up, the history is initialized from the +file named by the HISTFILE variable (default ~/.bash_history). +The file named by the value of HISTFILE is truncated, if necessary, to contain no more than the number of lines specified by -the value of the HISTFILESIZE variable. +the value of the HISTFILESIZE variable. When a shell with history enabled exits, the last -$HISTSIZE lines are copied from the history list to the file -named by $HISTFILE. -If the histappend shell option is set (see section 4.2 Bash Builtin Commands), +$HISTSIZE lines are copied from the history list to the file +named by $HISTFILE. +If the histappend shell option is set (see Bash Builtins), the lines are appended to the history file, otherwise the history file is overwritten. -If HISTFILE +If HISTFILE is unset, or if the history file is unwritable, the history is not saved. After saving the history, the history file is truncated -to contain no more than $HISTFILESIZE lines. -If HISTFILESIZE is unset, or set to null, a non-numeric value, or +to contain no more than $HISTFILESIZE lines. +If HISTFILESIZE is unset, or set to null, a non-numeric value, or a numeric value less than zero, the history file is not truncated. -

    - -If the HISTTIMEFORMAT is set, the time stamp information +

    +

    If the HISTTIMEFORMAT is set, the time stamp information associated with each history entry is written to the history file, marked with the history comment character. When the history file is read, lines beginning with the history comment character followed immediately by a digit are interpreted as timestamps for the previous history line. -

    - -The builtin command fc may be used to list or edit and re-execute +

    +

    The builtin command fc may be used to list or edit and re-execute a portion of the history list. -The history builtin may be used to display or modify the history +The history builtin may be used to display or modify the history list and manipulate the history file. When using command-line editing, search commands are available in each editing mode that provide access to the -history list (see section 8.4.2 Commands For Manipulating The History). -

    - -The shell allows control over which commands are saved on the history -list. The HISTCONTROL and HISTIGNORE +history list (see Commands For History). +

    +

    The shell allows control over which commands are saved on the history +list. The HISTCONTROL and HISTIGNORE variables may be set to cause the shell to save only a subset of the commands entered. -The cmdhist +The cmdhist shell option, if enabled, causes the shell to attempt to save each line of a multi-line command in the same history entry, adding semicolons where necessary to preserve syntactic correctness. -The lithist +The lithist shell option causes the shell to save the command with embedded newlines instead of semicolons. -The shopt builtin is used to set these options. -See section 4.2 Bash Builtin Commands, for a description of shopt. -

    +The shopt builtin is used to set these options. +See Bash Builtins, for a description of shopt. +

    +
    + + + +

    9.2 Bash History Builtins

    + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    9.2 Bash History Builtins

    - -

    - -Bash provides two builtin commands which manipulate the +

    Bash provides two builtin commands which manipulate the history list and history file. -

    +

    +
    +
    fc
    +
    +
    +
    fc [-e ename] [-lnr] [first] [last]
    +fc -s [pat=rep] [command]
    +
    -
    - -
    fc -
    -
     
    fc [-e ename] [-lnr] [first] [last]
    -fc -s [pat=rep] [command]
    -

    - -The first form selects a range of commands from first to -last from the history list and displays or edits and re-executes +

    The first form selects a range of commands from first to +last from the history list and displays or edits and re-executes them. -Both first and -last may be specified as a string (to locate the most recent +Both first and +last may be specified as a string (to locate the most recent command beginning with that string) or as a number (an index into the history list, where a negative number is used as an offset from the -current command number). If last is not specified it is set to -first. If first is not specified it is set to the previous -command for editing and -16 for listing. If the `-l' flag is -given, the commands are listed on standard output. The `-n' flag -suppresses the command numbers when listing. The `-r' flag +current command number). If last is not specified it is set to +first. If first is not specified it is set to the previous +command for editing and -16 for listing. If the -l flag is +given, the commands are listed on standard output. The -n flag +suppresses the command numbers when listing. The -r flag reverses the order of the listing. Otherwise, the editor given by -ename is invoked on a file containing those commands. If -ename is not given, the value of the following variable expansion -is used: ${FCEDIT:-${EDITOR:-vi}}. This says to use the -value of the FCEDIT variable if set, or the value of the -EDITOR variable if that is set, or vi if neither is set. +ename is invoked on a file containing those commands. If +ename is not given, the value of the following variable expansion +is used: ${FCEDIT:-${EDITOR:-vi}}. This says to use the +value of the FCEDIT variable if set, or the value of the +EDITOR variable if that is set, or vi if neither is set. When editing is complete, the edited commands are echoed and executed. -

    - -In the second form, command is re-executed after each instance -of pat in the selected command is replaced by rep. -command is intepreted the same as first above. -

    - -A useful alias to use with the fc command is r='fc -s', so -that typing `r cc' runs the last command beginning with cc -and typing `r' re-executes the last command (see section 6.6 Aliases). -

    - -

    history -
    -
     
    history [n]
    +

    +

    In the second form, command is re-executed after each instance +of pat in the selected command is replaced by rep. +command is intepreted the same as first above. +

    +

    A useful alias to use with the fc command is r='fc -s', so +that typing ‘r cc’ runs the last command beginning with cc +and typing ‘r’ re-executes the last command (see Aliases). +

    + +
    history
    +
    +
    +
    history [n]
     history -c
    -history -d offset
    -history [-anrw] [filename]
    -history -ps arg
    -

    +history -d offset +history [-anrw] [filename] +history -ps arg + -With no options, display the history list with line numbers. -Lines prefixed with a `*' have been modified. -An argument of n lists only the last n lines. -If the shell variable HISTTIMEFORMAT is set and not null, -it is used as a format string for strftime to display +

    With no options, display the history list with line numbers. +Lines prefixed with a ‘*’ have been modified. +An argument of n lists only the last n lines. +If the shell variable HISTTIMEFORMAT is set and not null, +it is used as a format string for strftime to display the time stamp associated with each displayed history entry. No intervening blank is printed between the formatted time stamp and the history line. -

    - -Options, if supplied, have the following meanings: -

    - -

    -
    -c -
    Clear the history list. This may be combined +

    +

    Options, if supplied, have the following meanings: +

    +
    +
    -c
    +

    Clear the history list. This may be combined with the other options to replace the history list completely. -

    - -

    -d offset -
    Delete the history entry at position offset. -offset should be specified as it appears when the history is +

    +
    +
    -d offset
    +

    Delete the history entry at position offset. +offset should be specified as it appears when the history is displayed. -

    - -

    -a -
    Append the new history lines to the history file. +

    +
    +
    -a
    +

    Append the new history lines to the history file. These are history lines entered since the beginning of the current Bash session, but not already appended to the history file. -

    - -

    -n -
    Append the history lines not already read from the history file +

    +
    +
    -n
    +

    Append the history lines not already read from the history file to the current history list. These are lines appended to the history file since the beginning of the current Bash session. -

    - -

    -r -
    Read the history file and append its contents to +

    +
    +
    -r
    +

    Read the history file and append its contents to the history list. -

    - -

    -w -
    Write out the current history list to the history file. -

    - -

    -p -
    Perform history substitution on the args and display the result +

    +
    +
    -w
    +

    Write out the current history list to the history file. +

    +
    +
    -p
    +

    Perform history substitution on the args and display the result on the standard output, without storing the results in the history list. -

    - -

    -s -
    The args are added to the end of +

    +
    +
    -s
    +

    The args are added to the end of the history list as a single entry. -

    +

    +
    +
    -
    -

    - -When any of the `-w', `-r', `-a', or `-n' options is -used, if filename +

    When any of the -w, -r, -a, or -n options is +used, if filename is given, then it is used as the history file. If not, then -the value of the HISTFILE variable is used. -

    +the value of the HISTFILE variable is used. +

    +
    +
    -
    -

    +


    + + + +

    9.3 History Expansion

    + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    9.3 History Expansion

    - -

    - -The History library provides a history expansion feature that is similar -to the history expansion provided by csh. This section +

    The History library provides a history expansion feature that is similar +to the history expansion provided by csh. This section describes the syntax used to manipulate the history information. -

    - -History expansions introduce words from the history list into +

    +

    History expansions introduce words from the history list into the input stream, making it easy to repeat commands, insert the arguments to a previous command into the current input line, or fix errors in previous commands quickly. -

    - -History expansion is performed immediately after a complete line +

    +

    History expansion is performed immediately after a complete line is read, before the shell breaks it into words. -

    - -History expansion takes place in two parts. The first is to determine +

    +

    History expansion takes place in two parts. The first is to determine which line from the history list should be used during substitution. The second is to select portions of that line for inclusion into the current one. The line selected from the history is called the -event, and the portions of that line that are acted upon are -called words. Various modifiers are available to manipulate +event, and the portions of that line that are acted upon are +called words. Various modifiers are available to manipulate the selected words. The line is broken into words in the same fashion that Bash does, so that several words surrounded by quotes are considered one word. History expansions are introduced by the appearance of the -history expansion character, which is `!' by default. -Only `\' and `'' may be used to escape the history expansion +history expansion character, which is ‘!’ by default. +Only ‘\’ and ‘'’ may be used to escape the history expansion character, but the history expansion character is also treated as quoted if it immediately precedes the closing double quote in a double-quoted string. -

    - -Several shell options settable with the shopt -builtin (see section 4.2 Bash Builtin Commands) may be used to tailor +

    +

    Several shell options settable with the shopt +builtin (see Bash Builtins) may be used to tailor the behavior of history expansion. If the -histverify shell option is enabled, and Readline +histverify shell option is enabled, and Readline is being used, history substitutions are not immediately passed to the shell parser. Instead, the expanded line is reloaded into the Readline editing buffer for further modification. -If Readline is being used, and the histreedit +If Readline is being used, and the histreedit shell option is enabled, a failed history expansion will be reloaded into the Readline editing buffer for correction. -The `-p' option to the history builtin command +The -p option to the history builtin command may be used to see what a history expansion will do before using it. -The `-s' option to the history builtin may be used to +The -s option to the history builtin may be used to add commands to the end of the history list without actually executing them, so that they are available for subsequent recall. This is most useful in conjunction with Readline. -

    - -The shell allows control of the various characters used by the -history expansion mechanism with the histchars variable, -as explained above (see section 5.2 Bash Variables). The shell uses +

    +

    The shell allows control of the various characters used by the +history expansion mechanism with the histchars variable, +as explained above (see Bash Variables). The shell uses the history comment character to mark history timestamps when writing the history file. -

    +

    + + + + + -
    - - - -
    9.3.1 Event Designators  How to specify which history line to use.
    9.3.2 Word Designators  Specifying which words are of interest.
    9.3.3 Modifiers  Modifying the results of substitution.
    -

    +


    + + + +

    9.3.1 Event Designators

    + - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    9.3.1 Event Designators

    - -

    - -An event designator is a reference to a command line entry in the +

    An event designator is a reference to a command line entry in the history list. Unless the reference is absolute, events are relative to the current position in the history list. - -

    - -

    - -
    ! -
    Start a history substitution, except when followed by a space, tab, -the end of the line, `=' or `(' (when the -extglob shell option is enabled using the shopt builtin). -

    - -

    !n -
    Refer to command line n. -

    - -

    !-n -
    Refer to the command n lines back. -

    - -

    !! -
    Refer to the previous command. This is a synonym for `!-1'. -

    - -

    !string -
    Refer to the most recent command + +

    +
    +
    !
    +

    Start a history substitution, except when followed by a space, tab, +the end of the line, ‘=’ or ‘(’ (when the +extglob shell option is enabled using the shopt builtin). +

    +
    +
    !n
    +

    Refer to command line n. +

    +
    +
    !-n
    +

    Refer to the command n lines back. +

    +
    +
    !!
    +

    Refer to the previous command. This is a synonym for ‘!-1’. +

    +
    +
    !string
    +

    Refer to the most recent command preceding the current position in the history list -starting with string. -

    - -

    !?string[?] -
    Refer to the most recent command +starting with string. +

    +
    +
    !?string[?]
    +

    Refer to the most recent command preceding the current position in the history list -containing string. +containing string. The trailing -`?' may be omitted if the string is followed immediately by +‘?’ may be omitted if the string is followed immediately by a newline. -

    +

    +
    +
    ^string1^string2^
    +

    Quick Substitution. Repeat the last command, replacing string1 +with string2. Equivalent to +!!:s/string1/string2/. +

    +
    +
    !#
    +

    The entire command line typed so far. +

    +
    +
    -
    ^string1^string2^ -
    Quick Substitution. Repeat the last command, replacing string1 -with string2. Equivalent to -!!:s/string1/string2/. -

    +


    + + + +

    9.3.2 Word Designators

    -
    !# -
    The entire command line typed so far. -

    - -

    -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    9.3.2 Word Designators

    - -

    - -Word designators are used to select desired words from the event. -A `:' separates the event specification from the word designator. It -may be omitted if the word designator begins with a `^', `$', -`*', `-', or `%'. Words are numbered from the beginning +

    Word designators are used to select desired words from the event. +A ‘:’ separates the event specification from the word designator. It +may be omitted if the word designator begins with a ‘^’, ‘$’, +‘*’, ‘-’, or ‘%’. Words are numbered from the beginning of the line, with the first word being denoted by 0 (zero). Words are inserted into the current line separated by single spaces. -

    - -For example, -

    - -

    -
    !! -
    designates the preceding command. When you type this, the preceding +

    +

    For example, +

    +
    +
    !!
    +

    designates the preceding command. When you type this, the preceding command is repeated in toto. -

    +

    +
    +
    !!:$
    +

    designates the last argument of the preceding command. This may be +shortened to !$. +

    +
    +
    !fi:2
    +

    designates the second argument of the most recent command starting with +the letters fi. +

    +
    -
    !!:$ -
    designates the last argument of the preceding command. This may be -shortened to !$. -

    - -

    !fi:2 -
    designates the second argument of the most recent command starting with -the letters fi. -
    -

    - -Here are the word designators: - -

    - -
    0 (zero) -
    The 0th word. For many applications, this is the command word. -

    - -

    n -
    The nth word. -

    - -

    ^ -
    The first argument; that is, word 1. -

    - -

    $ -
    The last argument. -

    - -

    % -
    The word matched by the most recent `?string?' search. -

    - -

    x-y -
    A range of words; `-y' abbreviates `0-y'. -

    - -

    * -
    All of the words, except the 0th. This is a synonym for `1-$'. -It is not an error to use `*' if there is just one word in the event; +

    Here are the word designators: +

    +
    +
    0 (zero)
    +

    The 0th word. For many applications, this is the command word. +

    +
    +
    n
    +

    The nth word. +

    +
    +
    ^
    +

    The first argument; that is, word 1. +

    +
    +
    $
    +

    The last argument. +

    +
    +
    %
    +

    The word matched by the most recent ‘?string?’ search. +

    +
    +
    x-y
    +

    A range of words; ‘-y’ abbreviates ‘0-y’. +

    +
    +
    *
    +

    All of the words, except the 0th. This is a synonym for ‘1-$’. +It is not an error to use ‘*’ if there is just one word in the event; the empty string is returned in that case. -

    +

    +
    +
    x*
    +

    Abbreviates ‘x-$’ +

    +
    +
    x-
    +

    Abbreviates ‘x-$’ like ‘x*’, but omits the last word. +

    +
    +
    -
    x* -
    Abbreviates `x-$' -

    - -

    x- -
    Abbreviates `x-$' like `x*', but omits the last word. -

    - -

    -

    - -If a word designator is supplied without an event specification, the +

    If a word designator is supplied without an event specification, the previous command is used as the event. -

    +

    +
    + + + +

    9.3.3 Modifiers

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    9.3.3 Modifiers

    - -

    - -After the optional word designator, you can add a sequence of one or more -of the following modifiers, each preceded by a `:'. -

    - -

    - -
    h -
    Remove a trailing pathname component, leaving only the head. -

    - -

    t -
    Remove all leading pathname components, leaving the tail. -

    - -

    r -
    Remove a trailing suffix of the form `.suffix', leaving +

    After the optional word designator, you can add a sequence of one or more +of the following modifiers, each preceded by a ‘:’. +

    +
    +
    h
    +

    Remove a trailing pathname component, leaving only the head. +

    +
    +
    t
    +

    Remove all leading pathname components, leaving the tail. +

    +
    +
    r
    +

    Remove a trailing suffix of the form ‘.suffix’, leaving the basename. -

    - -

    e -
    Remove all but the trailing suffix. -

    - -

    p -
    Print the new command but do not execute it. -

    - -

    q -
    Quote the substituted words, escaping further substitutions. -

    - -

    x -
    Quote the substituted words as with `q', +

    +
    +
    e
    +

    Remove all but the trailing suffix. +

    +
    +
    p
    +

    Print the new command but do not execute it. +

    +
    +
    q
    +

    Quote the substituted words, escaping further substitutions. +

    +
    +
    x
    +

    Quote the substituted words as with ‘q’, but break into words at spaces, tabs, and newlines. -

    - -

    s/old/new/ -
    Substitute new for the first occurrence of old in the -event line. Any delimiter may be used in place of `/'. -The delimiter may be quoted in old and new -with a single backslash. If `&' appears in new, -it is replaced by old. A single backslash will quote -the `&'. The final delimiter is optional if it is the last +

    +
    +
    s/old/new/
    +

    Substitute new for the first occurrence of old in the +event line. Any delimiter may be used in place of ‘/’. +The delimiter may be quoted in old and new +with a single backslash. If ‘&’ appears in new, +it is replaced by old. A single backslash will quote +the ‘&’. The final delimiter is optional if it is the last character on the input line. -

    +

    +
    +
    &
    +

    Repeat the previous substitution. +

    +
    +
    g
    +
    a
    +

    Cause changes to be applied over the entire event line. Used in +conjunction with ‘s’, as in gs/old/new/, +or with ‘&’. +

    +
    +
    G
    +

    Apply the following ‘s’ modifier once to each word in the event. +

    +
    +
    -
    & -
    Repeat the previous substitution. -

    +


    + +
    +

    +Next: , Previous: , Up: Top   [Contents][Index]

    +
    + +

    10 Installing Bash

    -
    g -
    a -
    Cause changes to be applied over the entire event line. Used in -conjunction with `s', as in gs/old/new/, -or with `&'. -

    - -

    G -
    Apply the following `s' modifier once to each word in the event. -

    - -

    -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    10. Installing Bash

    - -

    - -This chapter provides basic instructions for installing Bash on +

    This chapter provides basic instructions for installing Bash on the various supported platforms. The distribution supports the -GNU operating systems, nearly every version of Unix, and several +GNU operating systems, nearly every version of Unix, and several non-Unix systems such as BeOS and Interix. Other independent ports exist for -MS-DOS, OS/2, and Windows platforms. -

    - -

    - - - + + + + + +
    10.1 Basic Installation  Installation instructions.
    10.2 Compilers and Options  How to set special options for various - systems.
    10.3 Compiling For Multiple Architectures  How to compile Bash for more +MS-DOS, OS/2, and Windows platforms. +

    + + + + - - - - - - -

    + the same source tree. +

    Installation Names:  How to set the various paths used by the installation. +
    Specifying the System Type:  How to configure Bash for a particular system. +
    Sharing Defaults:  How to share default configuration values among GNU + programs. +
    Operation Controls:  Options recognized by the configuration program. +
    Optional Features:  How to enable and disable optional features when + building Bash. +
    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    10.1 Basic Installation

    - -

    +


    + + + +

    10.1 Basic Installation

    + + + + -These are installation instructions for Bash. -

    +

    These are installation instructions for Bash. +

    +

    The simplest way to compile Bash is: +

    +
      +
    1. cd to the directory containing the source code and type +‘./configure’ to configure Bash for your system. If you’re +using csh on an old version of System V, you might need to +type ‘sh ./configure’ instead to prevent csh from trying +to execute configure itself. -The simplest way to compile Bash is: -

      - -

        -
      1. -cd to the directory containing the source code and type -`./configure' to configure Bash for your system. If you're -using csh on an old version of System V, you might need to -type `sh ./configure' instead to prevent csh from trying -to execute configure itself. -

        - -Running configure takes some time. +

        Running configure takes some time. While running, it prints messages telling which features it is checking for. -

        - -

      2. -Type `make' to compile Bash and build the bashbug bug +

        +
      3. Type ‘make’ to compile Bash and build the bashbug bug reporting script. -

        -

      4. -Optionally, type `make tests' to run the Bash test suite. -

        +

      5. Optionally, type ‘make tests’ to run the Bash test suite. -
      6. -Type `make install' to install bash and bashbug. +
      7. Type ‘make install’ to install bash and bashbug. This will also install the manual pages and Info file. -

        -

      -

      +

    -The configure shell script attempts to guess correct +

    The configure shell script attempts to guess correct values for various system-dependent variables used during -compilation. It uses those values to create a `Makefile' in +compilation. It uses those values to create a Makefile in each directory of the package (the top directory, the -`builtins', `doc', and `support' directories, -each directory under `lib', and several others). It also creates a -`config.h' file containing system-dependent definitions. -Finally, it creates a shell script named config.status that you +builtins, doc, and support directories, +each directory under lib, and several others). It also creates a +config.h file containing system-dependent definitions. +Finally, it creates a shell script named config.status that you can run in the future to recreate the current configuration, a -file `config.cache' that saves the results of its tests to -speed up reconfiguring, and a file `config.log' containing -compiler output (useful mainly for debugging configure). +file config.cache that saves the results of its tests to +speed up reconfiguring, and a file config.log containing +compiler output (useful mainly for debugging configure). If at some point -`config.cache' contains results you don't want to keep, you +config.cache contains results you don’t want to keep, you may remove or edit it. -

    +

    +

    To find out more about the options and arguments that the +configure script understands, type +

    +
    +
    bash-2.04$ ./configure --help
    +
    -To find out more about the options and arguments that the -configure script understands, type -

    - -
     
    bash-2.04$ ./configure --help
    -

    - -at the Bash prompt in your Bash source directory. -

    - -If you need to do unusual things to compile Bash, please -try to figure out how configure could check whether or not +

    at the Bash prompt in your Bash source directory. +

    +

    If you need to do unusual things to compile Bash, please +try to figure out how configure could check whether or not to do them, and mail diffs or instructions to -bash-maintainers@gnu.org so they can be +bash-maintainers@gnu.org so they can be considered for the next release. -

    - -The file `configure.ac' is used to create configure +

    +

    The file configure.ac is used to create configure by a program called Autoconf. You only need -`configure.ac' if you want to change it or regenerate -configure using a newer version of Autoconf. If +configure.ac if you want to change it or regenerate +configure using a newer version of Autoconf. If you do this, make sure you are using Autoconf version 2.50 or newer. -

    +

    +

    You can remove the program binaries and object files from the +source code directory by typing ‘make clean’. To also remove the +files that configure created (so you can compile Bash for +a different kind of computer), type ‘make distclean’. +

    +
    + + + +

    10.2 Compilers and Options

    -You can remove the program binaries and object files from the -source code directory by typing `make clean'. To also remove the -files that configure created (so you can compile Bash for -a different kind of computer), type `make distclean'. -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    10.2 Compilers and Options

    - -

    - -Some systems require unusual options for compilation or linking -that the configure script does not know about. You can -give configure initial values for variables by setting +

    Some systems require unusual options for compilation or linking +that the configure script does not know about. You can +give configure initial values for variables by setting them in the environment. Using a Bourne-compatible shell, you can do that on the command line like this: -

    +

    +
    +
    CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
    +
    -
     
    CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
    -

    +

    On systems that have the env program, you can do it like this: +

    +
    +
    env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
    +
    -On systems that have the env program, you can do it like this: -

    - -
     
    env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
    -

    - -The configuration process uses GCC to build Bash if it +

    The configuration process uses GCC to build Bash if it is available. -

    +

    +
    + + + +

    10.3 Compiling For Multiple Architectures

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    10.3 Compiling For Multiple Architectures

    - -

    - -You can compile Bash for more than one kind of computer at the +

    You can compile Bash for more than one kind of computer at the same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of make that -supports the VPATH variable, such as GNU make. -cd to the +own directory. To do this, you must use a version of make that +supports the VPATH variable, such as GNU make. +cd to the directory where you want the object files and executables to go and run -the configure script from the source directory. You may need to -supply the `--srcdir=PATH' argument to tell configure where the -source files are. configure automatically checks for the -source code in the directory that configure is in and in `..'. -

    - -If you have to use a make that does not supports the VPATH +the configure script from the source directory. You may need to +supply the --srcdir=PATH argument to tell configure where the +source files are. configure automatically checks for the +source code in the directory that configure is in and in ‘..’. +

    +

    If you have to use a make that does not supports the VPATH variable, you can compile Bash for one architecture at a time in the source code directory. After you have installed -Bash for one architecture, use `make distclean' before +Bash for one architecture, use ‘make distclean’ before reconfiguring for another architecture. -

    - -Alternatively, if your system supports symbolic links, you can use the -`support/mkclone' script to create a build tree which has -symbolic links back to each file in the source directory. Here's an +

    +

    Alternatively, if your system supports symbolic links, you can use the +support/mkclone script to create a build tree which has +symbolic links back to each file in the source directory. Here’s an example that creates a build directory in the current directory from a -source directory `/usr/gnu/src/bash-2.0': -

    +source directory /usr/gnu/src/bash-2.0: +

    +
    +
    bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 .
    +
    -
     
    bash /usr/gnu/src/bash-2.0/support/mkclone -s /usr/gnu/src/bash-2.0 .
    -

    - -The mkclone script requires Bash, so you must have already built +

    The mkclone script requires Bash, so you must have already built Bash for at least one architecture before you can create build directories for other architectures. -

    +

    +
    + + + +

    10.4 Installation Names

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    10.4 Installation Names

    - -

    - -By default, `make install' will install into -`/usr/local/bin', `/usr/local/man', etc. You can -specify an installation prefix other than `/usr/local' by -giving configure the option `--prefix=PATH', -or by specifying a value for the DESTDIR `make' -variable when running `make install'. -

    - -You can specify separate installation prefixes for +

    By default, ‘make install’ will install into +/usr/local/bin, /usr/local/man, etc. You can +specify an installation prefix other than /usr/local by +giving configure the option --prefix=PATH, +or by specifying a value for the DESTDIRmake’ +variable when running ‘make install’. +

    +

    You can specify separate installation prefixes for architecture-specific files and architecture-independent files. -If you give configure the option -`--exec-prefix=PATH', `make install' will use -PATH as the prefix for installing programs and libraries. +If you give configure the option +--exec-prefix=PATH, ‘make install’ will use +PATH as the prefix for installing programs and libraries. Documentation and other data files will still use the regular prefix. -

    +

    +
    + + + +

    10.5 Specifying the System Type

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    10.5 Specifying the System Type

    - -

    - -There may be some features configure can not figure out +

    There may be some features configure can not figure out automatically, but need to determine by the type of host Bash -will run on. Usually configure can figure that +will run on. Usually configure can figure that out, but if it prints a message saying it can not guess the host -type, give it the `--host=TYPE' option. `TYPE' can -either be a short name for the system type, such as `sun4', -or a canonical name with three fields: `CPU-COMPANY-SYSTEM' -(e.g., `i386-unknown-freebsd4.2'). -

    - -See the file `support/config.sub' for the possible +type, give it the --host=TYPE option. ‘TYPE’ can +either be a short name for the system type, such as ‘sun4’, +or a canonical name with three fields: ‘CPU-COMPANY-SYSTEM’ +(e.g., ‘i386-unknown-freebsd4.2’). +

    +

    See the file support/config.sub for the possible values of each field. -

    +

    +
    + + + +

    10.6 Sharing Defaults

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    10.6 Sharing Defaults

    - -

    - -If you want to set default values for configure scripts to +

    If you want to set default values for configure scripts to share, you can create a site shell script called -config.site that gives default values for variables like -CC, cache_file, and prefix. configure -looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -CONFIG_SITE environment variable to the location of the site -script. A warning: the Bash configure looks for a site script, -but not all configure scripts do. -

    +config.site that gives default values for variables like +CC, cache_file, and prefix. configure +looks for PREFIX/share/config.site if it exists, then +PREFIX/etc/config.site if it exists. Or, you can set the +CONFIG_SITE environment variable to the location of the site +script. A warning: the Bash configure looks for a site script, +but not all configure scripts do. +

    +
    + + + +

    10.7 Operation Controls

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    10.7 Operation Controls

    - -

    - -configure recognizes the following options to control how it +

    configure recognizes the following options to control how it operates. -

    - -

    - -
    --cache-file=file -
    Use and save the results of the tests in -file instead of `./config.cache'. Set file to -`/dev/null' to disable caching, for debugging -configure. -

    - -

    --help -
    Print a summary of the options to configure, and exit. -

    - -

    --quiet -
    --silent -
    -q -
    Do not print messages saying which checks are being made. -

    - -

    --srcdir=dir -
    Look for the Bash source code in directory dir. Usually -configure can determine that directory automatically. -

    - -

    --version -
    Print the version of Autoconf used to generate the configure +

    +
    +
    --cache-file=file
    +

    Use and save the results of the tests in +file instead of ./config.cache. Set file to +/dev/null to disable caching, for debugging +configure. +

    +
    +
    --help
    +

    Print a summary of the options to configure, and exit. +

    +
    +
    --quiet
    +
    --silent
    +
    -q
    +

    Do not print messages saying which checks are being made. +

    +
    +
    --srcdir=dir
    +

    Look for the Bash source code in directory dir. Usually +configure can determine that directory automatically. +

    +
    +
    --version
    +

    Print the version of Autoconf used to generate the configure script, and exit. -

    -

    +

    +
    -configure also accepts some other, not widely used, boilerplate -options. `configure --help' prints the complete list. -

    +

    configure also accepts some other, not widely used, boilerplate +options. ‘configure --help’ prints the complete list. +

    +
    + + + +

    10.8 Optional Features

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    10.8 Optional Features

    - -

    - -The Bash configure has a number of `--enable-feature' -options, where feature indicates an optional part of Bash. -There are also several `--with-package' options, -where package is something like `bash-malloc' or `purify'. +

    The Bash configure has a number of --enable-feature +options, where feature indicates an optional part of Bash. +There are also several --with-package options, +where package is something like ‘bash-malloc’ or ‘purify’. To turn off the default use of a package, use -`--without-package'. To configure Bash without a feature -that is enabled by default, use `--disable-feature'. -

    - -Here is a complete list of the `--enable-' and -`--with-' options that the Bash configure recognizes. -

    - -

    -
    --with-afs -
    Define if you are using the Andrew File System from Transarc. -

    - -

    --with-bash-malloc -
    Use the Bash version of -malloc in the directory `lib/malloc'. This is not the same -malloc that appears in GNU libc, but an older version -originally derived from the 4.2 BSD malloc. This malloc +--without-package. To configure Bash without a feature +that is enabled by default, use --disable-feature. +

    +

    Here is a complete list of the --enable- and +--with- options that the Bash configure recognizes. +

    +
    +
    --with-afs
    +

    Define if you are using the Andrew File System from Transarc. +

    +
    +
    --with-bash-malloc
    +

    Use the Bash version of +malloc in the directory lib/malloc. This is not the same +malloc that appears in GNU libc, but an older version +originally derived from the 4.2 BSD malloc. This malloc is very fast, but wastes some space on each allocation. This option is enabled by default. -The `NOTES' file contains a list of systems for -which this should be turned off, and configure disables this +The NOTES file contains a list of systems for +which this should be turned off, and configure disables this option automatically for a number of systems. -

    - -

    --with-curses -
    Use the curses library instead of the termcap library. This should +

    +
    +
    --with-curses
    +

    Use the curses library instead of the termcap library. This should be supplied if your system has an inadequate or incomplete termcap database. -

    - -

    --with-gnu-malloc -
    A synonym for --with-bash-malloc. -

    - -

    --with-installed-readline[=PREFIX] -
    Define this to make Bash link with a locally-installed version of Readline -rather than the version in `lib/readline'. This works only with -Readline 5.0 and later versions. If PREFIX is yes or not -supplied, configure uses the values of the make variables -includedir and libdir, which are subdirectories of prefix +

    +
    +
    --with-gnu-malloc
    +

    A synonym for --with-bash-malloc. +

    +
    +
    --with-installed-readline[=PREFIX]
    +

    Define this to make Bash link with a locally-installed version of Readline +rather than the version in lib/readline. This works only with +Readline 5.0 and later versions. If PREFIX is yes or not +supplied, configure uses the values of the make variables +includedir and libdir, which are subdirectories of prefix by default, to find the installed version of Readline if it is not in the standard system include and library directories. -If PREFIX is no, Bash links with the version in -`lib/readline'. -If PREFIX is set to any other value, configure treats it as +If PREFIX is no, Bash links with the version in +lib/readline. +If PREFIX is set to any other value, configure treats it as a directory pathname and looks for the installed version of Readline in subdirectories of that directory -(include files in PREFIX/include and the library in -PREFIX/lib). -

    - -

    --with-purify -
    Define this to use the Purify memory allocation checker from Rational +(include files in PREFIX/include and the library in +PREFIX/lib). +

    +
    +
    --with-purify
    +

    Define this to use the Purify memory allocation checker from Rational Software. -

    - -

    --enable-minimal-config -
    This produces a shell with minimal features, close to the historical +

    +
    +
    --enable-minimal-config
    +

    This produces a shell with minimal features, close to the historical Bourne shell. -

    -

    +

    +
    -There are several `--enable-' options that alter how Bash is +

    There are several --enable- options that alter how Bash is compiled and linked, rather than changing run-time features. -

    - -

    -
    --enable-largefile -
    Enable support for large files if the operating system requires special compiler options +

    +
    +
    --enable-largefile
    +

    Enable support for large files if the operating system requires special compiler options to build programs which can access large files. This is enabled by default, if the operating system provides large file support. -

    +

    +
    +
    --enable-profiling
    +

    This builds a Bash binary that produces profiling information to be +processed by gprof each time it is executed. +

    +
    +
    --enable-static-link
    +

    This causes Bash to be linked statically, if gcc is being used. +This could be used to build a version to use as root’s shell. +

    +
    -
    --enable-profiling -
    This builds a Bash binary that produces profiling information to be -processed by gprof each time it is executed. -

    - -

    --enable-static-link -
    This causes Bash to be linked statically, if gcc is being used. -This could be used to build a version to use as root's shell. -
    -

    - -The `minimal-config' option can be used to disable all of +

    The ‘minimal-config’ option can be used to disable all of the following options, but it is processed first, so individual -options may be enabled using `enable-feature'. -

    - -All of the following options except for `disabled-builtins', -`direxpand-default', and -`xpg-echo-default' are +options may be enabled using ‘enable-feature’. +

    +

    All of the following options except for ‘disabled-builtins’, +‘direxpand-default’, and +‘xpg-echo-default’ are enabled by default, unless the operating system does not provide the necessary support. -

    - -

    -
    --enable-alias -
    Allow alias expansion and include the alias and unalias -builtins (see section 6.6 Aliases). -

    - -

    --enable-arith-for-command -
    Include support for the alternate form of the for command -that behaves like the C language for statement -(see section 3.2.4.1 Looping Constructs). -

    - -

    --enable-array-variables -
    Include support for one-dimensional array shell variables -(see section 6.7 Arrays). -

    - -

    --enable-bang-history -
    Include support for csh-like history substitution -(see section 9.3 History Expansion). -

    - -

    --enable-brace-expansion -
    Include csh-like brace expansion -( b{a,b}c ==> bac bbc ). -See 3.5.1 Brace Expansion, for a complete description. -

    - -

    --enable-casemod-attributes -
    Include support for case-modifying attributes in the declare builtin -and assignment statements. Variables with the uppercase attribute, +

    +
    +
    --enable-alias
    +

    Allow alias expansion and include the alias and unalias +builtins (see Aliases). +

    +
    +
    --enable-arith-for-command
    +

    Include support for the alternate form of the for command +that behaves like the C language for statement +(see Looping Constructs). +

    +
    +
    --enable-array-variables
    +

    Include support for one-dimensional array shell variables +(see Arrays). +

    +
    +
    --enable-bang-history
    +

    Include support for csh-like history substitution +(see History Interaction). +

    +
    +
    --enable-brace-expansion
    +

    Include csh-like brace expansion +( b{a,b}cbac bbc ). +See Brace Expansion, for a complete description. +

    +
    +
    --enable-casemod-attributes
    +

    Include support for case-modifying attributes in the declare builtin +and assignment statements. Variables with the uppercase attribute, for example, will have their values converted to uppercase upon assignment. -

    - -

    --enable-casemod-expansion -
    Include support for case-modifying word expansions. -

    - -

    --enable-command-timing -
    Include support for recognizing time as a reserved word and for -displaying timing statistics for the pipeline following time -(see section 3.2.2 Pipelines). +

    +
    +
    --enable-casemod-expansion
    +

    Include support for case-modifying word expansions. +

    +
    +
    --enable-command-timing
    +

    Include support for recognizing time as a reserved word and for +displaying timing statistics for the pipeline following time +(see Pipelines). This allows pipelines as well as shell builtins and functions to be timed. -

    - -

    --enable-cond-command -
    Include support for the [[ conditional command. -(see section 3.2.4.2 Conditional Constructs). -

    - -

    --enable-cond-regexp -
    Include support for matching POSIX regular expressions using the -`=~' binary operator in the [[ conditional command. -(see section 3.2.4.2 Conditional Constructs). -

    - -

    --enable-coprocesses -
    Include support for coprocesses and the coproc reserved word -(see section 3.2.2 Pipelines). -

    - -

    --enable-debugger -
    Include support for the bash debugger (distributed separately). -

    - -

    --enable-direxpand-default -
    Cause the direxpand shell option (see section 4.3.2 The Shopt Builtin) +

    +
    +
    --enable-cond-command
    +

    Include support for the [[ conditional command. +(see Conditional Constructs). +

    +
    +
    --enable-cond-regexp
    +

    Include support for matching POSIX regular expressions using the +‘=~’ binary operator in the [[ conditional command. +(see Conditional Constructs). +

    +
    +
    --enable-coprocesses
    +

    Include support for coprocesses and the coproc reserved word +(see Pipelines). +

    +
    +
    --enable-debugger
    +

    Include support for the bash debugger (distributed separately). +

    +
    +
    --enable-direxpand-default
    +

    Cause the direxpand shell option (see The Shopt Builtin) to be enabled by default when the shell starts. It is normally disabled by default. -

    - -

    --enable-directory-stack -
    Include support for a csh-like directory stack and the -pushd, popd, and dirs builtins -(see section 6.8 The Directory Stack). -

    - -

    --enable-disabled-builtins -
    Allow builtin commands to be invoked via `builtin xxx' -even after xxx has been disabled using `enable -n xxx'. -See 4.2 Bash Builtin Commands, for details of the builtin and -enable builtin commands. -

    - -

    --enable-dparen-arithmetic -
    Include support for the ((...)) command -(see section 3.2.4.2 Conditional Constructs). -

    - -

    --enable-extended-glob -
    Include support for the extended pattern matching features described -above under 3.5.8.1 Pattern Matching. -

    - -

    --enable-extended-glob-default -
    Set the default value of the extglob shell option described -above under 4.3.2 The Shopt Builtin to be enabled. -

    - -

    --enable-function-import -
    Include support for importing function definitions exported by another +

    +
    +
    --enable-directory-stack
    +

    Include support for a csh-like directory stack and the +pushd, popd, and dirs builtins +(see The Directory Stack). +

    +
    +
    --enable-disabled-builtins
    +

    Allow builtin commands to be invoked via ‘builtin xxx’ +even after xxx has been disabled using ‘enable -n xxx’. +See Bash Builtins, for details of the builtin and +enable builtin commands. +

    +
    +
    --enable-dparen-arithmetic
    +

    Include support for the ((…)) command +(see Conditional Constructs). +

    +
    +
    --enable-extended-glob
    +

    Include support for the extended pattern matching features described +above under Pattern Matching. +

    +
    +
    --enable-extended-glob-default
    +

    Set the default value of the extglob shell option described +above under The Shopt Builtin to be enabled. +

    +
    +
    --enable-function-import
    +

    Include support for importing function definitions exported by another instance of the shell from the environment. This option is enabled by default. -

    - -

    --enable-glob-asciirange-default -
    Set the default value of the globasciiranges shell option described -above under 4.3.2 The Shopt Builtin to be enabled. +

    +
    +
    --enable-glob-asciirange-default
    +

    Set the default value of the globasciiranges shell option described +above under The Shopt Builtin to be enabled. This controls the behavior of character ranges when used in pattern matching bracket expressions. -

    - -

    --enable-help-builtin -
    Include the help builtin, which displays help on shell builtins and -variables (see section 4.2 Bash Builtin Commands). -

    - -

    --enable-history -
    Include command history and the fc and history -builtin commands (see section 9.1 Bash History Facilities). -

    - -

    --enable-job-control -
    This enables the job control features (see section 7. Job Control), +

    +
    +
    --enable-help-builtin
    +

    Include the help builtin, which displays help on shell builtins and +variables (see Bash Builtins). +

    +
    +
    --enable-history
    +

    Include command history and the fc and history +builtin commands (see Bash History Facilities). +

    +
    +
    --enable-job-control
    +

    This enables the job control features (see Job Control), if the operating system supports them. -

    - -

    --enable-multibyte -
    This enables support for multibyte characters if the operating +

    +
    +
    --enable-multibyte
    +

    This enables support for multibyte characters if the operating system provides the necessary support. -

    - -

    --enable-net-redirections -
    This enables the special handling of filenames of the form -/dev/tcp/host/port and -/dev/udp/host/port -when used in redirections (see section 3.6 Redirections). -

    - -

    --enable-process-substitution -
    This enables process substitution (see section 3.5.6 Process Substitution) if +

    +
    +
    --enable-net-redirections
    +

    This enables the special handling of filenames of the form +/dev/tcp/host/port and +/dev/udp/host/port +when used in redirections (see Redirections). +

    +
    +
    --enable-process-substitution
    +

    This enables process substitution (see Process Substitution) if the operating system provides the necessary support. -

    - -

    --enable-progcomp -
    Enable the programmable completion facilities -(see section 8.6 Programmable Completion). +

    +
    +
    --enable-progcomp
    +

    Enable the programmable completion facilities +(see Programmable Completion). If Readline is not enabled, this option has no effect. -

    - -

    --enable-prompt-string-decoding -
    Turn on the interpretation of a number of backslash-escaped characters -in the $PS1, $PS2, $PS3, and $PS4 prompt -strings. See 6.9 Controlling the Prompt, for a complete list of prompt +

    +
    +
    --enable-prompt-string-decoding
    +

    Turn on the interpretation of a number of backslash-escaped characters +in the $PS1, $PS2, $PS3, and $PS4 prompt +strings. See Controlling the Prompt, for a complete list of prompt string escape sequences. -

    - -

    --enable-readline -
    Include support for command-line editing and history with the Bash -version of the Readline library (see section 8. Command Line Editing). -

    - -

    --enable-restricted -
    Include support for a restricted shell. If this is enabled, Bash, -when called as rbash, enters a restricted mode. See -6.10 The Restricted Shell, for a description of restricted mode. -

    - -

    --enable-select -
    Include the select compound command, which allows the generation of -simple menus (see section 3.2.4.2 Conditional Constructs). -

    - -

    --enable-separate-helpfiles -
    Use external files for the documentation displayed by the help builtin +

    +
    +
    --enable-readline
    +

    Include support for command-line editing and history with the Bash +version of the Readline library (see Command Line Editing). +

    +
    +
    --enable-restricted
    +

    Include support for a restricted shell. If this is enabled, Bash, +when called as rbash, enters a restricted mode. See +The Restricted Shell, for a description of restricted mode. +

    +
    +
    --enable-select
    +

    Include the select compound command, which allows the generation of +simple menus (see Conditional Constructs). +

    +
    +
    --enable-separate-helpfiles
    +

    Use external files for the documentation displayed by the help builtin instead of storing the text internally. -

    - -

    --enable-single-help-strings -
    Store the text displayed by the help builtin as a single string for +

    +
    +
    --enable-single-help-strings
    +

    Store the text displayed by the help builtin as a single string for each help topic. This aids in translating the text to different languages. You may need to disable this if your compiler cannot handle very long string literals. -

    - -

    --enable-strict-posix-default -
    Make Bash POSIX-conformant by default (see section 6.11 Bash POSIX Mode). -

    - -

    --enable-usg-echo-default -
    A synonym for --enable-xpg-echo-default. -

    - -

    --enable-xpg-echo-default -
    Make the echo builtin expand backslash-escaped characters by default, -without requiring the `-e' option. -This sets the default value of the xpg_echo shell option to on, -which makes the Bash echo behave more like the version specified in +

    +
    +
    --enable-strict-posix-default
    +

    Make Bash POSIX-conformant by default (see Bash POSIX Mode). +

    +
    +
    --enable-usg-echo-default
    +

    A synonym for --enable-xpg-echo-default. +

    +
    +
    --enable-xpg-echo-default
    +

    Make the echo builtin expand backslash-escaped characters by default, +without requiring the -e option. +This sets the default value of the xpg_echo shell option to on, +which makes the Bash echo behave more like the version specified in the Single Unix Specification, version 3. -See section 4.2 Bash Builtin Commands, for a description of the escape sequences that -echo recognizes. -

    -

    +See Bash Builtins, for a description of the escape sequences that +echo recognizes. +

    +
    -The file `config-top.h' contains C Preprocessor -`#define' statements for options which are not settable from -configure. +

    The file config-top.h contains C Preprocessor +‘#define’ statements for options which are not settable from +configure. Some of these are not meant to be changed; beware of the consequences if you do. Read the comments associated with each definition for more information about its effect. -

    +

    +
    + + + +

    Appendix A Reporting Bugs

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    A. Reporting Bugs

    - -

    - -Please report all bugs you find in Bash. +

    Please report all bugs you find in Bash. But first, you should make sure that it really is a bug, and that it appears in the latest version of Bash. The latest version of Bash is always available for FTP from -ftp://ftp.gnu.org/pub/gnu/bash/. -

    - -Once you have determined that a bug actually exists, use the -bashbug command to submit a bug report. +ftp://ftp.gnu.org/pub/gnu/bash/. +

    +

    Once you have determined that a bug actually exists, use the +bashbug command to submit a bug report. If you have a fix, you are encouraged to mail that as well! -Suggestions and `philosophical' bug reports may be mailed -to bug-bash@gnu.org or posted to the Usenet -newsgroup gnu.bash.bug. -

    - -All bug reports should include: -

      -
    • -The version number of Bash. -
    • -The hardware and operating system. -
    • -The compiler used to compile Bash. -
    • -A description of the bug behaviour. -
    • -A short script or `recipe' which exercises the bug and may be used +Suggestions and ‘philosophical’ bug reports may be mailed +to bug-bash@gnu.org or posted to the Usenet +newsgroup gnu.bash.bug. +

      +

      All bug reports should include: +

        +
      • The version number of Bash. +
      • The hardware and operating system. +
      • The compiler used to compile Bash. +
      • A description of the bug behaviour. +
      • A short script or ‘recipe’ which exercises the bug and may be used to reproduce it. -
      -

      +

    -bashbug inserts the first three items automatically into +

    bashbug inserts the first three items automatically into the template it provides for filing a bug report. -

    +

    +

    Please send all reports concerning this manual to +bug-bash@gnu.org. +

    +
    + + + +

    Appendix B Major Differences From The Bourne Shell

    -Please send all reports concerning this manual to -bug-bash@gnu.org. -

    - - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    B. Major Differences From The Bourne Shell

    - -

    - -Bash implements essentially the same grammar, parameter and +

    Bash implements essentially the same grammar, parameter and variable expansion, redirection, and quoting as the Bourne Shell. -Bash uses the POSIX standard as the specification of +Bash uses the POSIX standard as the specification of how these features are to be implemented. There are some differences between the traditional Bourne shell and Bash; this section quickly details the differences of significance. A number of these differences are explained in greater depth in previous sections. -This section uses the version of sh included in SVR4.2 (the +This section uses the version of sh included in SVR4.2 (the last version of the historical Bourne shell) as the baseline reference. -

    +

    +
      +
    • Bash is POSIX-conformant, even where the POSIX specification +differs from traditional sh behavior (see Bash POSIX Mode). -
        +
      • Bash has multi-character invocation options (see Invoking Bash). -
      • -Bash is POSIX-conformant, even where the POSIX specification -differs from traditional sh behavior (see section 6.11 Bash POSIX Mode). -

        +

      • Bash has command-line editing (see Command Line Editing) and +the bind builtin. -
      • -Bash has multi-character invocation options (see section 6.1 Invoking Bash). -

        - -

      • -Bash has command-line editing (see section 8. Command Line Editing) and -the bind builtin. -

        - -

      • -Bash provides a programmable word completion mechanism -(see section 8.6 Programmable Completion), and builtin commands -complete, compgen, and compopt, to +
      • Bash provides a programmable word completion mechanism +(see Programmable Completion), and builtin commands +complete, compgen, and compopt, to manipulate it. -

        -

      • -Bash has command history (see section 9.1 Bash History Facilities) and the -history and fc builtins to manipulate it. +
      • Bash has command history (see Bash History Facilities) and the +history and fc builtins to manipulate it. The Bash history list maintains timestamp information and uses the -value of the HISTTIMEFORMAT variable to display it. -

        +value of the HISTTIMEFORMAT variable to display it. -

      • -Bash implements csh-like history expansion -(see section 9.3 History Expansion). -

        +

      • Bash implements csh-like history expansion +(see History Interaction). -
      • -Bash has one-dimensional array variables (see section 6.7 Arrays), and the +
      • Bash has one-dimensional array variables (see Arrays), and the appropriate variable expansions and assignment syntax to use them. Several of the Bash builtins take options to act on arrays. Bash provides a number of built-in array variables. -

        -

      • -The $'...' quoting syntax, which expands ANSI-C +
      • The $'…' quoting syntax, which expands ANSI-C backslash-escaped characters in the text between the single quotes, -is supported (see section 3.1.2.4 ANSI-C Quoting). -

        +is supported (see ANSI-C Quoting). -

      • -Bash supports the $"..." quoting syntax to do +
      • Bash supports the $"…" quoting syntax to do locale-specific translation of the characters between the double -quotes. The `-D', `--dump-strings', and `--dump-po-strings' +quotes. The -D, --dump-strings, and --dump-po-strings invocation options list the translatable strings found in a script -(see section 3.1.2.5 Locale-Specific Translation). -

        +(see Locale Translation). -

      • -Bash implements the ! keyword to negate the return value of -a pipeline (see section 3.2.2 Pipelines). -Very useful when an if statement needs to act only if a test fails. -The Bash `-o pipefail' option to set will cause a pipeline to +
      • Bash implements the ! keyword to negate the return value of +a pipeline (see Pipelines). +Very useful when an if statement needs to act only if a test fails. +The Bash ‘-o pipefail’ option to set will cause a pipeline to return a failure status if any command fails. -

        -

      • -Bash has the time reserved word and command timing (see section 3.2.2 Pipelines). +
      • Bash has the time reserved word and command timing (see Pipelines). The display of the timing statistics may be controlled with the -TIMEFORMAT variable. -

        +TIMEFORMAT variable. -

      • -Bash implements the for (( expr1 ; expr2 ; expr3 )) -arithmetic for command, similar to the C language (see section 3.2.4.1 Looping Constructs). -

        +

      • Bash implements the for (( expr1 ; expr2 ; expr3 )) +arithmetic for command, similar to the C language (see Looping Constructs). -
      • -Bash includes the select compound command, which allows the -generation of simple menus (see section 3.2.4.2 Conditional Constructs). -

        +

      • Bash includes the select compound command, which allows the +generation of simple menus (see Conditional Constructs). -
      • -Bash includes the [[ compound command, which makes conditional -testing part of the shell grammar (see section 3.2.4.2 Conditional Constructs), including +
      • Bash includes the [[ compound command, which makes conditional +testing part of the shell grammar (see Conditional Constructs), including optional regular expression matching. -

        -

      • -Bash provides optional case-insensitive matching for the case and -[[ constructs. -

        +

      • Bash provides optional case-insensitive matching for the case and +[[ constructs. -
      • -Bash includes brace expansion (see section 3.5.1 Brace Expansion) and tilde -expansion (see section 3.5.2 Tilde Expansion). -

        +

      • Bash includes brace expansion (see Brace Expansion) and tilde +expansion (see Tilde Expansion). -
      • -Bash implements command aliases and the alias and unalias -builtins (see section 6.6 Aliases). -

        +

      • Bash implements command aliases and the alias and unalias +builtins (see Aliases). -
      • -Bash provides shell arithmetic, the (( compound command -(see section 3.2.4.2 Conditional Constructs), -and arithmetic expansion (see section 6.5 Shell Arithmetic). -

        +

      • Bash provides shell arithmetic, the (( compound command +(see Conditional Constructs), +and arithmetic expansion (see Shell Arithmetic). -
      • -Variables present in the shell's initial environment are automatically +
      • Variables present in the shell’s initial environment are automatically exported to child processes. The Bourne shell does not normally do -this unless the variables are explicitly marked using the export +this unless the variables are explicitly marked using the export command. -

        -

      • -Bash supports the `+=' assignment operator, which appends to the value +
      • Bash supports the ‘+=’ assignment operator, which appends to the value of the variable named on the left hand side. -

        -

      • -Bash includes the POSIX pattern removal `%', `#', `%%' -and `##' expansions to remove leading or trailing substrings from -variable values (see section 3.5.3 Shell Parameter Expansion). -

        +

      • Bash includes the POSIX pattern removal ‘%’, ‘#’, ‘%%’ +and ‘##’ expansions to remove leading or trailing substrings from +variable values (see Shell Parameter Expansion). -
      • -The expansion ${#xx}, which returns the length of ${xx}, -is supported (see section 3.5.3 Shell Parameter Expansion). -

        +

      • The expansion ${#xx}, which returns the length of ${xx}, +is supported (see Shell Parameter Expansion). -
      • -The expansion ${var:offset[:length]}, -which expands to the substring of var's value of length -length, beginning at offset, is present -(see section 3.5.3 Shell Parameter Expansion). -

        +

      • The expansion ${var:offset[:length]}, +which expands to the substring of var’s value of length +length, beginning at offset, is present +(see Shell Parameter Expansion). -
      • -The expansion -${var/[/]pattern[/replacement]}, -which matches pattern and replaces it with replacement in -the value of var, is available (see section 3.5.3 Shell Parameter Expansion). -

        +

      • The expansion +${var/[/]pattern[/replacement]}, +which matches pattern and replaces it with replacement in +the value of var, is available (see Shell Parameter Expansion). -
      • -The expansion ${!prefix*} expansion, which expands to -the names of all shell variables whose names begin with prefix, -is available (see section 3.5.3 Shell Parameter Expansion). -

        +

      • The expansion ${!prefix*} expansion, which expands to +the names of all shell variables whose names begin with prefix, +is available (see Shell Parameter Expansion). -
      • -Bash has indirect variable expansion using ${!word} -(see section 3.5.3 Shell Parameter Expansion). -

        +

      • Bash has indirect variable expansion using ${!word} +(see Shell Parameter Expansion). -
      • -Bash can expand positional parameters beyond $9 using -${num}. -

        +

      • Bash can expand positional parameters beyond $9 using +${num}. -
      • -The POSIX $() form of command substitution -is implemented (see section 3.5.4 Command Substitution), -and preferred to the Bourne shell's " (which +
      • The POSIX $() form of command substitution +is implemented (see Command Substitution), +and preferred to the Bourne shell’s `` (which is also implemented for backwards compatibility). -

        -

      • -Bash has process substitution (see section 3.5.6 Process Substitution). -

        +

      • Bash has process substitution (see Process Substitution). -
      • -Bash automatically assigns variables that provide information about the -current user (UID, EUID, and GROUPS), the current host -(HOSTTYPE, OSTYPE, MACHTYPE, and HOSTNAME), -and the instance of Bash that is running (BASH, -BASH_VERSION, and BASH_VERSINFO). See section 5.2 Bash Variables, +
      • Bash automatically assigns variables that provide information about the +current user (UID, EUID, and GROUPS), the current host +(HOSTTYPE, OSTYPE, MACHTYPE, and HOSTNAME), +and the instance of Bash that is running (BASH, +BASH_VERSION, and BASH_VERSINFO). See Bash Variables, for details. -

        -

      • -The IFS variable is used to split only the results of expansion, -not all words (see section 3.5.7 Word Splitting). +
      • The IFS variable is used to split only the results of expansion, +not all words (see Word Splitting). This closes a longstanding shell security hole. -

        -

      • -The filename expansion bracket expression code uses `!' and `^' +
      • The filename expansion bracket expression code uses ‘!’ and ‘^’ to negate the set of characters between the brackets. -The Bourne shell uses only `!'. -

        +The Bourne shell uses only ‘!’. -

      • -Bash implements the full set of POSIX filename expansion operators, -including character classes, equivalence classes, and -collating symbols (see section 3.5.8 Filename Expansion). -

        +

      • Bash implements the full set of POSIX filename expansion operators, +including character classes, equivalence classes, and +collating symbols (see Filename Expansion). -
      • -Bash implements extended pattern matching features when the extglob -shell option is enabled (see section 3.5.8.1 Pattern Matching). -

        +

      • Bash implements extended pattern matching features when the extglob +shell option is enabled (see Pattern Matching). -
      • -It is possible to have a variable and a function with the same name; -sh does not separate the two name spaces. -

        +

      • It is possible to have a variable and a function with the same name; +sh does not separate the two name spaces. -
      • -Bash functions are permitted to have local variables using the -local builtin, and thus useful recursive functions may be written -(see section 4.2 Bash Builtin Commands). -

        +

      • Bash functions are permitted to have local variables using the +local builtin, and thus useful recursive functions may be written +(see Bash Builtins). -
      • -Variable assignments preceding commands affect only that command, even -builtins and functions (see section 3.7.4 Environment). -In sh, all variable assignments +
      • Variable assignments preceding commands affect only that command, even +builtins and functions (see Environment). +In sh, all variable assignments preceding commands are global unless the command is executed from the file system. -

        -

      • -Bash performs filename expansion on filenames specified as operands -to input and output redirection operators (see section 3.6 Redirections). -

        +

      • Bash performs filename expansion on filenames specified as operands +to input and output redirection operators (see Redirections). -
      • -Bash contains the `<>' redirection operator, allowing a file to be -opened for both reading and writing, and the `&>' redirection +
      • Bash contains the ‘<>’ redirection operator, allowing a file to be +opened for both reading and writing, and the ‘&>’ redirection operator, for directing standard output and standard error to the same -file (see section 3.6 Redirections). -

        +file (see Redirections). -

      • -Bash includes the `<<<' redirection operator, allowing a string to +
      • Bash includes the ‘<<<’ redirection operator, allowing a string to be used as the standard input to a command. -

        -

      • -Bash implements the `[n]<&word' and `[n]>&word' +
      • Bash implements the ‘[n]<&word’ and ‘[n]>&word’ redirection operators, which move one file descriptor to another. -

        -

      • -Bash treats a number of filenames specially when they are -used in redirection operators (see section 3.6 Redirections). -

        +

      • Bash treats a number of filenames specially when they are +used in redirection operators (see Redirections). -
      • -Bash can open network connections to arbitrary machines and services -with the redirection operators (see section 3.6 Redirections). -

        +

      • Bash can open network connections to arbitrary machines and services +with the redirection operators (see Redirections). -
      • -The noclobber option is available to avoid overwriting existing -files with output redirection (see section 4.3.1 The Set Builtin). -The `>|' redirection operator may be used to override noclobber. -

        +

      • The noclobber option is available to avoid overwriting existing +files with output redirection (see The Set Builtin). +The ‘>|’ redirection operator may be used to override noclobber. -
      • -The Bash cd and pwd builtins (see section 4.1 Bourne Shell Builtins) -each take `-L' and `-P' options to switch between logical and +
      • The Bash cd and pwd builtins (see Bourne Shell Builtins) +each take -L and -P options to switch between logical and physical modes. -

        -

      • -Bash allows a function to override a builtin with the same name, and provides -access to that builtin's functionality within the function via the -builtin and command builtins (see section 4.2 Bash Builtin Commands). -

        +

      • Bash allows a function to override a builtin with the same name, and provides +access to that builtin’s functionality within the function via the +builtin and command builtins (see Bash Builtins). -
      • -The command builtin allows selective disabling of functions -when command lookup is performed (see section 4.2 Bash Builtin Commands). -

        +

      • The command builtin allows selective disabling of functions +when command lookup is performed (see Bash Builtins). -
      • -Individual builtins may be enabled or disabled using the enable -builtin (see section 4.2 Bash Builtin Commands). -

        +

      • Individual builtins may be enabled or disabled using the enable +builtin (see Bash Builtins). -
      • -The Bash exec builtin takes additional options that allow users +
      • The Bash exec builtin takes additional options that allow users to control the contents of the environment passed to the executed command, and what the zeroth argument to the command is to be -(see section 4.1 Bourne Shell Builtins). -

        +(see Bourne Shell Builtins). -

      • -Shell functions may be exported to children via the environment -using export -f (see section 3.3 Shell Functions). -

        +

      • Shell functions may be exported to children via the environment +using export -f (see Shell Functions). -
      • -The Bash export, readonly, and declare builtins can -take a `-f' option to act on shell functions, a `-p' option to +
      • The Bash export, readonly, and declare builtins can +take a -f option to act on shell functions, a -p option to display variables with various attributes set in a format that can be -used as shell input, a `-n' option to remove various variable -attributes, and `name=value' arguments to set variable attributes +used as shell input, a -n option to remove various variable +attributes, and ‘name=value’ arguments to set variable attributes and values simultaneously. -

        -

      • -The Bash hash builtin allows a name to be associated with +
      • The Bash hash builtin allows a name to be associated with an arbitrary filename, even when that filename cannot be found by -searching the $PATH, using `hash -p' -(see section 4.1 Bourne Shell Builtins). -

        +searching the $PATH, using ‘hash -p’ +(see Bourne Shell Builtins). -

      • -Bash includes a help builtin for quick reference to shell -facilities (see section 4.2 Bash Builtin Commands). -

        +

      • Bash includes a help builtin for quick reference to shell +facilities (see Bash Builtins). -
      • -The printf builtin is available to display formatted output -(see section 4.2 Bash Builtin Commands). -

        +

      • The printf builtin is available to display formatted output +(see Bash Builtins). -
      • -The Bash read builtin (see section 4.2 Bash Builtin Commands) -will read a line ending in `\' with -the `-r' option, and will use the REPLY variable as a +
      • The Bash read builtin (see Bash Builtins) +will read a line ending in ‘\’ with +the -r option, and will use the REPLY variable as a default if no non-option arguments are supplied. -The Bash read builtin -also accepts a prompt string with the `-p' option and will use -Readline to obtain the line when given the `-e' option. -The read builtin also has additional options to control input: -the `-s' option will turn off echoing of input characters as -they are read, the `-t' option will allow read to time out +The Bash read builtin +also accepts a prompt string with the -p option and will use +Readline to obtain the line when given the -e option. +The read builtin also has additional options to control input: +the -s option will turn off echoing of input characters as +they are read, the -t option will allow read to time out if input does not arrive within a specified number of seconds, the -`-n' option will allow reading only a specified number of -characters rather than a full line, and the `-d' option will read +-n option will allow reading only a specified number of +characters rather than a full line, and the -d option will read until a particular character rather than newline. -

        -

      • -The return builtin may be used to abort execution of scripts -executed with the . or source builtins -(see section 4.1 Bourne Shell Builtins). -

        +

      • The return builtin may be used to abort execution of scripts +executed with the . or source builtins +(see Bourne Shell Builtins). -
      • -Bash includes the shopt builtin, for finer control of shell -optional capabilities (see section 4.3.2 The Shopt Builtin), and allows these options -to be set and unset at shell invocation (see section 6.1 Invoking Bash). -

        +

      • Bash includes the shopt builtin, for finer control of shell +optional capabilities (see The Shopt Builtin), and allows these options +to be set and unset at shell invocation (see Invoking Bash). -
      • -Bash has much more optional behavior controllable with the set -builtin (see section 4.3.1 The Set Builtin). -

        +

      • Bash has much more optional behavior controllable with the set +builtin (see The Set Builtin). -
      • -The `-x' (`xtrace') option displays commands other than +
      • The ‘-x’ (xtrace) option displays commands other than simple commands when performing an execution trace -(see section 4.3.1 The Set Builtin). -

        +(see The Set Builtin). -

      • -The test builtin (see section 4.1 Bourne Shell Builtins) -is slightly different, as it implements the POSIX algorithm, +
      • The test builtin (see Bourne Shell Builtins) +is slightly different, as it implements the POSIX algorithm, which specifies the behavior based on the number of arguments. -

        -

      • -Bash includes the caller builtin, which displays the context of +
      • Bash includes the caller builtin, which displays the context of any active subroutine call (a shell function or a script executed with -the . or source builtins). This supports the bash +the . or source builtins). This supports the bash debugger. -

        -

      • -The trap builtin (see section 4.1 Bourne Shell Builtins) allows a -DEBUG pseudo-signal specification, similar to EXIT. -Commands specified with a DEBUG trap are executed before every -simple command, for command, case command, -select command, every arithmetic for command, and before +
      • The trap builtin (see Bourne Shell Builtins) allows a +DEBUG pseudo-signal specification, similar to EXIT. +Commands specified with a DEBUG trap are executed before every +simple command, for command, case command, +select command, every arithmetic for command, and before the first command executes in a shell function. -The DEBUG trap is not inherited by shell functions unless the -function has been given the trace attribute or the -functrace option has been enabled using the shopt builtin. -The extdebug shell option has additional effects on the -DEBUG trap. -

        +The DEBUG trap is not inherited by shell functions unless the +function has been given the trace attribute or the +functrace option has been enabled using the shopt builtin. +The extdebug shell option has additional effects on the +DEBUG trap. -The trap builtin (see section 4.1 Bourne Shell Builtins) allows an -ERR pseudo-signal specification, similar to EXIT and DEBUG. -Commands specified with an ERR trap are executed after a simple +

        The trap builtin (see Bourne Shell Builtins) allows an +ERR pseudo-signal specification, similar to EXIT and DEBUG. +Commands specified with an ERR trap are executed after a simple command fails, with a few exceptions. -The ERR trap is not inherited by shell functions unless the --o errtrace option to the set builtin is enabled. -

        - -The trap builtin (see section 4.1 Bourne Shell Builtins) allows a -RETURN pseudo-signal specification, similar to -EXIT and DEBUG. -Commands specified with an RETURN trap are executed before +The ERR trap is not inherited by shell functions unless the +-o errtrace option to the set builtin is enabled. +

        +

        The trap builtin (see Bourne Shell Builtins) allows a +RETURN pseudo-signal specification, similar to +EXIT and DEBUG. +Commands specified with an RETURN trap are executed before execution resumes after a shell function or a shell script executed with -. or source returns. -The RETURN trap is not inherited by shell functions unless the -function has been given the trace attribute or the -functrace option has been enabled using the shopt builtin. -

        +. or source returns. +The RETURN trap is not inherited by shell functions unless the +function has been given the trace attribute or the +functrace option has been enabled using the shopt builtin. +

        +
      • The Bash type builtin is more extensive and gives more information +about the names it finds (see Bash Builtins). -
      • -The Bash type builtin is more extensive and gives more information -about the names it finds (see section 4.2 Bash Builtin Commands). -

        +

      • The Bash umask builtin permits a -p option to cause +the output to be displayed in the form of a umask command +that may be reused as input (see Bourne Shell Builtins). -
      • -The Bash umask builtin permits a `-p' option to cause -the output to be displayed in the form of a umask command -that may be reused as input (see section 4.1 Bourne Shell Builtins). -

        - -

      • -Bash implements a csh-like directory stack, and provides the -pushd, popd, and dirs builtins to manipulate it -(see section 6.8 The Directory Stack). +
      • Bash implements a csh-like directory stack, and provides the +pushd, popd, and dirs builtins to manipulate it +(see The Directory Stack). Bash also makes the directory stack visible as the value of the -DIRSTACK shell variable. -

        +DIRSTACK shell variable. -

      • -Bash interprets special backslash-escaped characters in the prompt -strings when interactive (see section 6.9 Controlling the Prompt). -

        +

      • Bash interprets special backslash-escaped characters in the prompt +strings when interactive (see Controlling the Prompt). -
      • -The Bash restricted mode is more useful (see section 6.10 The Restricted Shell); +
      • The Bash restricted mode is more useful (see The Restricted Shell); the SVR4.2 shell restricted mode is too limited. -

        -

      • -The disown builtin can remove a job from the internal shell -job table (see section 7.2 Job Control Builtins) or suppress the sending -of SIGHUP to a job when the shell exits as the result of a -SIGHUP. -

        +

      • The disown builtin can remove a job from the internal shell +job table (see Job Control Builtins) or suppress the sending +of SIGHUP to a job when the shell exits as the result of a +SIGHUP. -
      • -Bash includes a number of features to support a separate debugger for +
      • Bash includes a number of features to support a separate debugger for shell scripts. -

        -

      • -The SVR4.2 shell has two privilege-related builtins -(mldmode and priv) not present in Bash. -

        +

      • The SVR4.2 shell has two privilege-related builtins +(mldmode and priv) not present in Bash. -
      • -Bash does not have the stop or newgrp builtins. -

        +

      • Bash does not have the stop or newgrp builtins. -
      • -Bash does not use the SHACCT variable or perform shell accounting. -

        +

      • Bash does not use the SHACCT variable or perform shell accounting. -
      • -The SVR4.2 sh uses a TIMEOUT variable like Bash uses -TMOUT. -

        +

      • The SVR4.2 sh uses a TIMEOUT variable like Bash uses +TMOUT. -
      -

      +

    -More features unique to Bash may be found in 6. Bash Features. -

    +

    More features unique to Bash may be found in Bash Features. +

    -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    B.1 Implementation Differences From The SVR4.2 Shell

    - -

    + +

    B.1 Implementation Differences From The SVR4.2 Shell

    -Since Bash is a completely new implementation, it does not suffer from +

    Since Bash is a completely new implementation, it does not suffer from many of the limitations of the SVR4.2 shell. For instance: -

    - -

      - -
    • -Bash does not fork a subshell when redirecting into or out of -a shell control structure such as an if or while +

      +
        +
      • Bash does not fork a subshell when redirecting into or out of +a shell control structure such as an if or while statement. -

        -

      • -Bash does not allow unbalanced quotes. The SVR4.2 shell will silently -insert a needed closing quote at EOF under certain circumstances. +
      • Bash does not allow unbalanced quotes. The SVR4.2 shell will silently +insert a needed closing quote at EOF under certain circumstances. This can be the cause of some hard-to-find errors. -

        -

      • -The SVR4.2 shell uses a baroque memory management scheme based on -trapping SIGSEGV. If the shell is started from a process with -SIGSEGV blocked (e.g., by using the system() C library +
      • The SVR4.2 shell uses a baroque memory management scheme based on +trapping SIGSEGV. If the shell is started from a process with +SIGSEGV blocked (e.g., by using the system() C library function call), it misbehaves badly. -

        -

      • -In a questionable attempt at security, the SVR4.2 shell, -when invoked without the `-p' option, will alter its real -and effective UID and GID if they are less than some +
      • In a questionable attempt at security, the SVR4.2 shell, +when invoked without the -p option, will alter its real +and effective UID and GID if they are less than some magic threshold value, commonly 100. This can lead to unexpected results. -

        -

      • -The SVR4.2 shell does not allow users to trap SIGSEGV, -SIGALRM, or SIGCHLD. -

        +

      • The SVR4.2 shell does not allow users to trap SIGSEGV, +SIGALRM, or SIGCHLD. -
      • -The SVR4.2 shell does not allow the IFS, MAILCHECK, -PATH, PS1, or PS2 variables to be unset. -

        +

      • The SVR4.2 shell does not allow the IFS, MAILCHECK, +PATH, PS1, or PS2 variables to be unset. -
      • -The SVR4.2 shell treats `^' as the undocumented equivalent of -`|'. -

        +

      • The SVR4.2 shell treats ‘^’ as the undocumented equivalent of +‘|’. -
      • -Bash allows multiple option arguments when it is invoked (-x -v); -the SVR4.2 shell allows only one option argument (-xv). In +
      • Bash allows multiple option arguments when it is invoked (-x -v); +the SVR4.2 shell allows only one option argument (-xv). In fact, some versions of the shell dump core if the second argument begins -with a `-'. -

        +with a ‘-’. -

      • -The SVR4.2 shell exits a script if any builtin fails; Bash exits -a script only if one of the POSIX special builtins fails, and -only for certain failures, as enumerated in the POSIX standard. -

        +

      • The SVR4.2 shell exits a script if any builtin fails; Bash exits +a script only if one of the POSIX special builtins fails, and +only for certain failures, as enumerated in the POSIX standard. -
      • -The SVR4.2 shell behaves differently when invoked as jsh +
      • The SVR4.2 shell behaves differently when invoked as jsh (it turns on job control). -
      -

      +

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    C. GNU Free Documentation License

    - -

    +


    + + + +

    Appendix C GNU Free Documentation License

    -
    - Version 1.3, 3 November 2008 -
    -

    +

    Version 1.3, 3 November 2008 +
    -
     
    Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
    -http://fsf.org/
    +
    +
    Copyright © 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
    +http://fsf.org/
     
     Everyone is permitted to copy and distribute verbatim copies
     of this license document, but changing it is not allowed.
    -

    + -

      -
    1. -PREAMBLE -

      +

        +
      1. PREAMBLE -The purpose of this License is to make a manual, textbook, or other -functional and useful document free in the sense of freedom: to +

        The purpose of this License is to make a manual, textbook, or other +functional and useful document free in the sense of freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others. -

        - -This License is a kind of "copyleft", which means that derivative +

        +

        This License is a kind of “copyleft”, which means that derivative works of the document must themselves be free in the same sense. It complements the GNU General Public License, which is a copyleft license designed for free software. -

        - -We have designed this License in order to use it for manuals for free +

        +

        We have designed this License in order to use it for manuals for free software, because free software needs free documentation: a free program should come with manuals providing the same freedoms that the software does. But this License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether it is published as a printed book. We recommend this License principally for works whose purpose is instruction or reference. -

        +

        +
      2. APPLICABILITY AND DEFINITIONS -
      3. -APPLICABILITY AND DEFINITIONS -

        - -This License applies to any manual or other work, in any medium, that +

        This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license, unlimited in duration, to use that -work under the conditions stated herein. The "Document", below, +work under the conditions stated herein. The “Document”, below, refers to any such manual or work. Any member of the public is a -licensee, and is addressed as "you". You accept the license if you +licensee, and is addressed as “you”. You accept the license if you copy, modify or distribute the work in a way requiring permission under copyright law. -

        - -A "Modified Version" of the Document means any work containing the +

        +

        A “Modified Version” of the Document means any work containing the Document or a portion of it, either copied verbatim, or with modifications and/or translated into another language. -

        - -A "Secondary Section" is a named appendix or a front-matter section +

        +

        A “Secondary Section” is a named appendix or a front-matter section of the Document that deals exclusively with the relationship of the -publishers or authors of the Document to the Document's overall +publishers or authors of the Document to the Document’s overall subject (or to related matters) and contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of mathematics, a Secondary Section may not explain @@ -15228,24 +13695,21 @@ any mathematics.) The relationship could be a matter of historical connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position regarding them. -

        - -The "Invariant Sections" are certain Secondary Sections whose titles +

        +

        The “Invariant Sections” are certain Secondary Sections whose titles are designated, as being those of Invariant Sections, in the notice that says that the Document is released under this License. If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are none. -

        - -The "Cover Texts" are certain short passages of text that are listed, +

        +

        The “Cover Texts” are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a Back-Cover Text may be at most 25 words. -

        - -A "Transparent" copy of the Document means a machine-readable copy, +

        +

        A “Transparent” copy of the Document means a machine-readable copy, represented in a format whose specification is available to the general public, that is suitable for revising the document straightforwardly with generic text editors or (for images composed of @@ -15256,57 +13720,49 @@ to text formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not Transparent if used for any substantial amount -of text. A copy that is not "Transparent" is called "Opaque". -

        - -Examples of suitable formats for Transparent copies include plain -ASCII without markup, Texinfo input format, LaTeX input -format, SGML or XML using a publicly available -DTD, and standard-conforming simple HTML, -PostScript or PDF designed for human modification. Examples -of transparent image formats include PNG, XCF and -JPG. Opaque formats include proprietary formats that can be -read and edited only by proprietary word processors, SGML or -XML for which the DTD and/or processing tools are -not generally available, and the machine-generated HTML, -PostScript or PDF produced by some word processors for +of text. A copy that is not “Transparent” is called “Opaque”. +

        +

        Examples of suitable formats for Transparent copies include plain +ASCII without markup, Texinfo input format, LaTeX input +format, SGML or XML using a publicly available +DTD, and standard-conforming simple HTML, +PostScript or PDF designed for human modification. Examples +of transparent image formats include PNG, XCF and +JPG. Opaque formats include proprietary formats that can be +read and edited only by proprietary word processors, SGML or +XML for which the DTD and/or processing tools are +not generally available, and the machine-generated HTML, +PostScript or PDF produced by some word processors for output purposes only. -

        - -The "Title Page" means, for a printed book, the title page itself, +

        +

        The “Title Page” means, for a printed book, the title page itself, plus such following pages as are needed to hold, legibly, the material this License requires to appear in the title page. For works in -formats which do not have any title page as such, "Title Page" means -the text near the most prominent appearance of the work's title, +formats which do not have any title page as such, “Title Page” means +the text near the most prominent appearance of the work’s title, preceding the beginning of the body of the text. -

        - -The "publisher" means any person or entity that distributes copies +

        +

        The “publisher” means any person or entity that distributes copies of the Document to the public. -

        - -A section "Entitled XYZ" means a named subunit of the Document whose +

        +

        A section “Entitled XYZ” means a named subunit of the Document whose title either is precisely XYZ or contains XYZ in parentheses following text that translates XYZ in another language. (Here XYZ stands for a -specific section name mentioned below, such as "Acknowledgements", -"Dedications", "Endorsements", or "History".) To "Preserve the Title" +specific section name mentioned below, such as “Acknowledgements”, +“Dedications”, “Endorsements”, or “History”.) To “Preserve the Title” of such a section when you modify the Document means that it remains a -section "Entitled XYZ" according to this definition. -

        - -The Document may include Warranty Disclaimers next to the notice which +section “Entitled XYZ” according to this definition. +

        +

        The Document may include Warranty Disclaimers next to the notice which states that this License applies to the Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the meaning of this License. -

        +

        +
      4. VERBATIM COPYING -
      5. -VERBATIM COPYING -

        - -You may copy and distribute the Document in any medium, either +

        You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all copies, and that you add no other @@ -15315,19 +13771,15 @@ technical measures to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the conditions in section 3. -

        - -You may also lend copies, under the same conditions stated above, and +

        +

        You may also lend copies, under the same conditions stated above, and you may publicly display copies. -

        +

        +
      6. COPYING IN QUANTITY -
      7. -COPYING IN QUANTITY -

        - -If you publish printed copies (or copies in media that commonly have +

        If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering more than 100, and the -Document's license notice requires Cover Texts, you must enclose the +Document’s license notice requires Cover Texts, you must enclose the copies in covers that carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on the back cover. Both covers must also clearly and legibly identify @@ -15337,15 +13789,13 @@ visible. You may add other material on the covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and satisfy these conditions, can be treated as verbatim copying in other respects. -

        - -If the required texts for either cover are too voluminous to fit +

        +

        If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit reasonably) on the actual cover, and continue the rest onto adjacent pages. -

        - -If you publish or distribute Opaque copies of the Document numbering +

        +

        If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computer-network location from which the general network-using @@ -15357,135 +13807,98 @@ that this Transparent copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque copy (directly or through your agents or retailers) of that edition to the public. -

        - -It is requested, but not required, that you contact the authors of the +

        +

        It is requested, but not required, that you contact the authors of the Document well before redistributing any large number of copies, to give them a chance to provide you with an updated version of the Document. -

        +

        +
      8. MODIFICATIONS -
      9. -MODIFICATIONS -

        - -You may copy and distribute a Modified Version of the Document under +

        You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above, provided that you release the Modified Version under precisely this License, with the Modified Version filling the role of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of it. In addition, you must do these things in the Modified Version: -

        - -

          -
        1. -Use in the Title Page (and on the covers, if any) a title distinct +

          +
            +
          1. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of previous versions (which should, if there were any, be listed in the History section of the Document). You may use the same title as a previous version if the original publisher of that version gives permission. -

            -

          2. -List on the Title Page, as authors, one or more persons or entities +
          3. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if it has fewer than five), unless they release you from this requirement. -

            -

          4. -State on the Title page the name of the publisher of the +
          5. State on the Title page the name of the publisher of the Modified Version, as the publisher. -

            -

          6. -Preserve all the copyright notices of the Document. -

            +

          7. Preserve all the copyright notices of the Document. -
          8. -Add an appropriate copyright notice for your modifications +
          9. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices. -

            -

          10. -Include, immediately after the copyright notices, a license notice +
          11. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified Version under the terms of this License, in the form shown in the Addendum below. -

            -

          12. -Preserve in that license notice the full lists of Invariant Sections -and required Cover Texts given in the Document's license notice. -

            +

          13. Preserve in that license notice the full lists of Invariant Sections +and required Cover Texts given in the Document’s license notice. -
          14. -Include an unaltered copy of this License. -

            +

          15. Include an unaltered copy of this License. -
          16. -Preserve the section Entitled "History", Preserve its Title, and add +
          17. Preserve the section Entitled “History”, Preserve its Title, and add to it an item stating at least the title, year, new authors, and publisher of the Modified Version as given on the Title Page. If -there is no section Entitled "History" in the Document, create one +there is no section Entitled “History” in the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then add an item describing the Modified Version as stated in the previous sentence. -

            -

          18. -Preserve the network location, if any, given in the Document for +
          19. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the Document, and likewise the network locations given in the Document for previous versions -it was based on. These may be placed in the "History" section. +it was based on. These may be placed in the “History” section. You may omit a network location for a work that was published at least four years before the Document itself, or if the original publisher of the version it refers to gives permission. -

            -

          20. -For any section Entitled "Acknowledgements" or "Dedications", Preserve +
          21. For any section Entitled “Acknowledgements” or “Dedications”, Preserve the Title of the section, and preserve in the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein. -

            -

          22. -Preserve all the Invariant Sections of the Document, +
          23. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the equivalent are not considered part of the section titles. -

            -

          24. -Delete any section Entitled "Endorsements". Such a section +
          25. Delete any section Entitled “Endorsements”. Such a section may not be included in the Modified Version. -

            -

          26. -Do not retitle any existing section to be Entitled "Endorsements" or +
          27. Do not retitle any existing section to be Entitled “Endorsements” or to conflict in title with any Invariant Section. -

            -

          28. -Preserve any Warranty Disclaimers. -
          -

          +

        2. Preserve any Warranty Disclaimers. +
        -If the Modified Version includes new front-matter sections or +

        If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and contain no material copied from the Document, you may at your option designate some or all of these sections as invariant. To do this, add their titles to the -list of Invariant Sections in the Modified Version's license notice. +list of Invariant Sections in the Modified Version’s license notice. These titles must be distinct from any other section titles. -

        - -You may add a section Entitled "Endorsements", provided it contains +

        +

        You may add a section Entitled “Endorsements”, provided it contains nothing but endorsements of your Modified Version by various -parties--for example, statements of peer review or that the text has +parties—for example, statements of peer review or that the text has been approved by an organization as the authoritative definition of a standard. -

        - -You may add a passage of up to five words as a Front-Cover Text, and a +

        +

        You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of Back-Cover Text may be added by (or @@ -15494,26 +13907,21 @@ includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous publisher that added the old one. -

        - -The author(s) and publisher(s) of the Document do not by this License +

        +

        The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity for or to assert or imply endorsement of any Modified Version. -

        +

        +
      10. COMBINING DOCUMENTS -
      11. -COMBINING DOCUMENTS -

        - -You may combine the Document with other documents released under this +

        You may combine the Document with other documents released under this License, under the terms defined in section 4 above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and that you preserve all their Warranty Disclaimers. -

        - -The combined work need only contain one copy of this License, and +

        +

        The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make the title of each such section unique by @@ -15521,60 +13929,48 @@ adding at the end of it, in parentheses, the name of the original author or publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of Invariant Sections in the license notice of the combined work. -

        - -In the combination, you must combine any sections Entitled "History" +

        +

        In the combination, you must combine any sections Entitled “History” in the various original documents, forming one section Entitled -"History"; likewise combine any sections Entitled "Acknowledgements", -and any sections Entitled "Dedications". You must delete all -sections Entitled "Endorsements." -

        +“History”; likewise combine any sections Entitled “Acknowledgements”, +and any sections Entitled “Dedications”. You must delete all +sections Entitled “Endorsements.” +

        +
      12. COLLECTIONS OF DOCUMENTS -
      13. -COLLECTIONS OF DOCUMENTS -

        - -You may make a collection consisting of the Document and other documents +

        You may make a collection consisting of the Document and other documents released under this License, and replace the individual copies of this License in the various documents with a single copy that is included in the collection, provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects. -

        - -You may extract a single document from such a collection, and distribute +

        +

        You may extract a single document from such a collection, and distribute it individually under this License, provided you insert a copy of this License into the extracted document, and follow this License in all other respects regarding verbatim copying of that document. -

        +

        +
      14. AGGREGATION WITH INDEPENDENT WORKS -
      15. -AGGREGATION WITH INDEPENDENT WORKS -

        - -A compilation of the Document or its derivatives with other separate +

        A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a volume of a storage or -distribution medium, is called an "aggregate" if the copyright +distribution medium, is called an “aggregate” if the copyright resulting from the compilation is not used to limit the legal rights -of the compilation's users beyond what the individual works permit. +of the compilation’s users beyond what the individual works permit. When the Document is included in an aggregate, this License does not apply to the other works in the aggregate which are not themselves derivative works of the Document. -

        - -If the Cover Text requirement of section 3 is applicable to these +

        +

        If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less than one half of -the entire aggregate, the Document's Cover Texts may be placed on +the entire aggregate, the Document’s Cover Texts may be placed on covers that bracket the Document within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must appear on printed covers that bracket the whole aggregate. -

        +

        +
      16. TRANSLATION -
      17. -TRANSLATION -

        - -Translation is considered a kind of modification, so you may +

        Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of section 4. Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may include @@ -15586,2166 +13982,1334 @@ the original English version of this License and the original versions of those notices and disclaimers. In case of a disagreement between the translation and the original version of this License or a notice or disclaimer, the original version will prevail. -

        - -If a section in the Document is Entitled "Acknowledgements", -"Dedications", or "History", the requirement (section 4) to Preserve +

        +

        If a section in the Document is Entitled “Acknowledgements”, +“Dedications”, or “History”, the requirement (section 4) to Preserve its Title (section 1) will typically require changing the actual title. -

        +

        +
      18. TERMINATION -
      19. -TERMINATION -

        - -You may not copy, modify, sublicense, or distribute the Document +

        You may not copy, modify, sublicense, or distribute the Document except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, or distribute it is void, and will automatically terminate your rights under this License. -

        - -However, if you cease all violation of this License, then your license +

        +

        However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. -

        - -Moreover, your license from a particular copyright holder is +

        +

        Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. -

        - -Termination of your rights under this section does not terminate the +

        +

        Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, receipt of a copy of some or all of the same material does not give you any rights to use it. -

        +

        +
      20. FUTURE REVISIONS OF THIS LICENSE -
      21. -FUTURE REVISIONS OF THIS LICENSE -

        - -The Free Software Foundation may publish new, revised versions +

        The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. See -http://www.gnu.org/copyleft/. -

        - -Each version of the License is given a distinguishing version number. +http://www.gnu.org/copyleft/. +

        +

        Each version of the License is given a distinguishing version number. If the Document specifies that a particular numbered version of this -License "or any later version" applies to it, you have the option of +License “or any later version” applies to it, you have the option of following the terms and conditions either of that specified version or of any later version that has been published (not as a draft) by the Free Software Foundation. If the Document does not specify a version number of this License, you may choose any version ever published (not as a draft) by the Free Software Foundation. If the Document specifies that a proxy can decide which future versions of this -License can be used, that proxy's public statement of acceptance of a +License can be used, that proxy’s public statement of acceptance of a version permanently authorizes you to choose that version for the Document. -

        +

        +
      22. RELICENSING -
      23. -RELICENSING -

        - -"Massive Multiauthor Collaboration Site" (or "MMC Site") means any +

        “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any World Wide Web server that publishes copyrightable works and also provides prominent facilities for anybody to edit those works. A public wiki that anybody can edit is an example of such a server. A -"Massive Multiauthor Collaboration" (or "MMC") contained in the +“Massive Multiauthor Collaboration” (or “MMC”) contained in the site means any set of copyrightable works thus published on the MMC site. -

        - -"CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0 +

        +

        “CC-BY-SA” means the Creative Commons Attribution-Share Alike 3.0 license published by Creative Commons Corporation, a not-for-profit corporation with a principal place of business in San Francisco, California, as well as future copyleft versions of that license published by that same organization. -

        - -"Incorporate" means to publish or republish a Document, in whole or +

        +

        “Incorporate” means to publish or republish a Document, in whole or in part, as part of another Document. -

        - -An MMC is "eligible for relicensing" if it is licensed under this +

        +

        An MMC is “eligible for relicensing” if it is licensed under this License, and if all works that were first published under this License somewhere other than this MMC, and subsequently incorporated in whole or in part into the MMC, (1) had no cover texts or invariant sections, and (2) were thus incorporated prior to November 1, 2008. -

        - -The operator of an MMC Site may republish an MMC contained in the site +

        +

        The operator of an MMC Site may republish an MMC contained in the site under CC-BY-SA on the same site at any time before August 1, 2009, provided the MMC is eligible for relicensing. -

        +

        +
      -
    -

    + +

    ADDENDUM: How to use this License for your documents

    - -

    ADDENDUM: How to use this License for your documents

    - -

    - -To use this License in a document you have written, include a copy of +

    To use this License in a document you have written, include a copy of the License in the document and put the following copyright and license notices just after the title page: -

    - -
     
      Copyright (C)  year  your name.
    +

    +
    +
      Copyright (C)  year  your name.
       Permission is granted to copy, distribute and/or modify this document
       under the terms of the GNU Free Documentation License, Version 1.3
       or any later version published by the Free Software Foundation;
       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
       Texts.  A copy of the license is included in the section entitled ``GNU
       Free Documentation License''.
    -

    + -If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, -replace the "with...Texts." line with this: -

    +

    If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts, +replace the “with…Texts.” line with this: +

    +
    +
        with the Invariant Sections being list their titles, with
    +    the Front-Cover Texts being list, and with the Back-Cover Texts
    +    being list.
    +
    -
     
        with the Invariant Sections being list their titles, with
    -    the Front-Cover Texts being list, and with the Back-Cover Texts
    -    being list.
    -

    - -If you have Invariant Sections without Cover Texts, or some other +

    If you have Invariant Sections without Cover Texts, or some other combination of the three, merge those two alternatives to suit the situation. -

    - -If your document contains nontrivial examples of program code, we +

    +

    If your document contains nontrivial examples of program code, we recommend releasing these examples in parallel under your choice of free software license, such as the GNU General Public License, to permit their use in free software. -

    +

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    D. Indexes

    - -

    -

    - - - - - -
    D.1 Index of Shell Builtin Commands  Index of Bash builtin commands.
    D.2 Index of Shell Reserved Words  Index of Bash reserved words.
    D.3 Parameter and Variable Index  Quick reference helps you find the - variable you want.
    D.4 Function Index  Index of bindable Readline functions.
    D.5 Concept Index  General index for concepts described in - this manual.
    -

    +


    + + + +

    Appendix D Indexes

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    D.1 Index of Shell Builtin Commands

    - -
    Jump to:   . -   -: -   -[ -   -
    -A -   -B -   -C -   -D -   -E -   -F -   -G -   -H -   -J -   -K -   -L -   -M -   -P -   -R -   -S -   -T -   -U -   -W -   -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Index Entry Section

    .
    .4.1 Bourne Shell Builtins

    :
    :4.1 Bourne Shell Builtins

    [
    [4.1 Bourne Shell Builtins

    A
    alias4.2 Bash Builtin Commands

    B
    bg7.2 Job Control Builtins
    bind4.2 Bash Builtin Commands
    break4.1 Bourne Shell Builtins
    builtin4.2 Bash Builtin Commands

    C
    caller4.2 Bash Builtin Commands
    cd4.1 Bourne Shell Builtins
    command4.2 Bash Builtin Commands
    compgen8.7 Programmable Completion Builtins
    complete8.7 Programmable Completion Builtins
    compopt8.7 Programmable Completion Builtins
    continue4.1 Bourne Shell Builtins

    D
    declare4.2 Bash Builtin Commands
    dirs6.8.1 Directory Stack Builtins
    disown7.2 Job Control Builtins

    E
    echo4.2 Bash Builtin Commands
    enable4.2 Bash Builtin Commands
    eval4.1 Bourne Shell Builtins
    exec4.1 Bourne Shell Builtins
    exit4.1 Bourne Shell Builtins
    export4.1 Bourne Shell Builtins

    F
    fc9.2 Bash History Builtins
    fg7.2 Job Control Builtins

    G
    getopts4.1 Bourne Shell Builtins

    H
    hash4.1 Bourne Shell Builtins
    help4.2 Bash Builtin Commands
    history9.2 Bash History Builtins

    J
    jobs7.2 Job Control Builtins

    K
    kill7.2 Job Control Builtins

    L
    let4.2 Bash Builtin Commands
    local4.2 Bash Builtin Commands
    logout4.2 Bash Builtin Commands

    M
    mapfile4.2 Bash Builtin Commands

    P
    popd6.8.1 Directory Stack Builtins
    printf4.2 Bash Builtin Commands
    pushd6.8.1 Directory Stack Builtins
    pwd4.1 Bourne Shell Builtins

    R
    read4.2 Bash Builtin Commands
    readarray4.2 Bash Builtin Commands
    readonly4.1 Bourne Shell Builtins
    return4.1 Bourne Shell Builtins

    S
    set4.3.1 The Set Builtin
    shift4.1 Bourne Shell Builtins
    shopt4.3.2 The Shopt Builtin
    source4.2 Bash Builtin Commands
    suspend7.2 Job Control Builtins

    T
    test4.1 Bourne Shell Builtins
    times4.1 Bourne Shell Builtins
    trap4.1 Bourne Shell Builtins
    type4.2 Bash Builtin Commands
    typeset4.2 Bash Builtin Commands

    U
    ulimit4.2 Bash Builtin Commands
    umask4.1 Bourne Shell Builtins
    unalias4.2 Bash Builtin Commands
    unset4.1 Bourne Shell Builtins

    W
    wait7.2 Job Control Builtins

    Jump to:   . -   -: -   -[ -   -
    -A -   -B -   -C -   -D -   -E -   -F -   -G -   -H -   -J -   -K -   -L -   -M -   -P -   -R -   -S -   -T -   -U -   -W -   -

    + + + + + + + - -


    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    D.2 Index of Shell Reserved Words

    - -
    Jump to:   ! +
    + +
    +

    +Next: , Up: Indexes   [Contents][Index]

    +
    + +

    D.1 Index of Shell Builtin Commands

    +
    Jump to:   .   -[ +:   -] +[   -{ +
    +A   -} +B   -
    -C +C   -D +D   -E +E   -F +F   -I +G   -S +H   -T +J   -U +K   -W +L   -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Index Entry Section

    !
    !3.2.2 Pipelines

    [
    [[3.2.4.2 Conditional Constructs

    ]
    ]]3.2.4.2 Conditional Constructs

    {
    {3.2.4.3 Grouping Commands

    }
    }3.2.4.3 Grouping Commands

    C
    case3.2.4.2 Conditional Constructs

    D
    do3.2.4.1 Looping Constructs
    done3.2.4.1 Looping Constructs

    E
    elif3.2.4.2 Conditional Constructs
    else3.2.4.2 Conditional Constructs
    esac3.2.4.2 Conditional Constructs

    F
    fi3.2.4.2 Conditional Constructs
    for3.2.4.1 Looping Constructs
    function3.3 Shell Functions

    I
    if3.2.4.2 Conditional Constructs
    in3.2.4.2 Conditional Constructs

    S
    select3.2.4.2 Conditional Constructs

    T
    then3.2.4.2 Conditional Constructs
    time3.2.2 Pipelines

    U
    until3.2.4.1 Looping Constructs

    W
    while3.2.4.1 Looping Constructs

    Jump to:   ! +M   -[ +P   -] +R   -{ +S   -} +T   -
    -C +U   -D +W   -E +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Index Entry  Section

    .
    .: Bourne Shell Builtins

    :
    :: Bourne Shell Builtins

    [
    [: Bourne Shell Builtins

    A
    alias: Bash Builtins

    B
    bg: Job Control Builtins
    bind: Bash Builtins
    break: Bourne Shell Builtins
    builtin: Bash Builtins

    C
    caller: Bash Builtins
    cd: Bourne Shell Builtins
    command: Bash Builtins
    compgen: Programmable Completion Builtins
    complete: Programmable Completion Builtins
    compopt: Programmable Completion Builtins
    continue: Bourne Shell Builtins

    D
    declare: Bash Builtins
    dirs: Directory Stack Builtins
    disown: Job Control Builtins

    E
    echo: Bash Builtins
    enable: Bash Builtins
    eval: Bourne Shell Builtins
    exec: Bourne Shell Builtins
    exit: Bourne Shell Builtins
    export: Bourne Shell Builtins

    F
    fc: Bash History Builtins
    fg: Job Control Builtins

    G
    getopts: Bourne Shell Builtins

    H
    hash: Bourne Shell Builtins
    help: Bash Builtins
    history: Bash History Builtins

    J
    jobs: Job Control Builtins

    K
    kill: Job Control Builtins

    L
    let: Bash Builtins
    local: Bash Builtins
    logout: Bash Builtins

    M
    mapfile: Bash Builtins

    P
    popd: Directory Stack Builtins
    printf: Bash Builtins
    pushd: Directory Stack Builtins
    pwd: Bourne Shell Builtins

    R
    read: Bash Builtins
    readarray: Bash Builtins
    readonly: Bourne Shell Builtins
    return: Bourne Shell Builtins

    S
    set: The Set Builtin
    shift: Bourne Shell Builtins
    shopt: The Shopt Builtin
    source: Bash Builtins
    suspend: Job Control Builtins

    T
    test: Bourne Shell Builtins
    times: Bourne Shell Builtins
    trap: Bourne Shell Builtins
    type: Bash Builtins
    typeset: Bash Builtins

    U
    ulimit: Bash Builtins
    umask: Bourne Shell Builtins
    unalias: Bash Builtins
    unset: Bourne Shell Builtins

    W
    wait: Job Control Builtins

    +
    Jump to:   .   -F +:   -I +[   -S +
    +A   -T +B   -U +C   -W +D   -

    +E +   +F +   +G +   +H +   +J +   +K +   +L +   +M +   +P +   +R +   +S +   +T +   +U +   +W +   +

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    D.3 Parameter and Variable Index

    - -
    Jump to:   ! +
    + +
    +

    +Next: , Previous: , Up: Indexes   [Contents][Index]

    +
    + +

    D.2 Index of Shell Reserved Words

    +
    Jump to:   !   -# +[   -$ +]   -* +{   -- +}   -0 +
    +C   -? +D   -@ +E   -_ +F   -
    -A +I   -B +S   -C +T   -D +U   -E +W   -F +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Index Entry  Section

    !
    !: Pipelines

    [
    [[: Conditional Constructs

    ]
    ]]: Conditional Constructs

    {
    {: Command Grouping

    }
    }: Command Grouping

    C
    case: Conditional Constructs

    D
    do: Looping Constructs
    done: Looping Constructs

    E
    elif: Conditional Constructs
    else: Conditional Constructs
    esac: Conditional Constructs

    F
    fi: Conditional Constructs
    for: Looping Constructs
    function: Shell Functions

    I
    if: Conditional Constructs
    in: Conditional Constructs

    S
    select: Conditional Constructs

    T
    then: Conditional Constructs
    time: Pipelines

    U
    until: Looping Constructs

    W
    while: Looping Constructs

    +
    Jump to:   !   -G +[   -H +]   -I +{   -K +}   -L +
    +C   -M +D   -O +E   -P +F   -R +I   -S +S   -T +T   -U +U   -V +W   -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Index Entry Section

    !
    !3.4.2 Special Parameters
    !3.4.2 Special Parameters

    #
    #3.4.2 Special Parameters
    #3.4.2 Special Parameters

    $
    $3.4.2 Special Parameters
    $3.4.2 Special Parameters
    $!3.4.2 Special Parameters
    $#3.4.2 Special Parameters
    $$3.4.2 Special Parameters
    $*3.4.2 Special Parameters
    $-3.4.2 Special Parameters
    $03.4.2 Special Parameters
    $?3.4.2 Special Parameters
    $@3.4.2 Special Parameters
    $_3.4.2 Special Parameters

    *
    *3.4.2 Special Parameters
    *3.4.2 Special Parameters

    -
    -3.4.2 Special Parameters
    -3.4.2 Special Parameters

    0
    03.4.2 Special Parameters
    03.4.2 Special Parameters

    ?
    ?3.4.2 Special Parameters
    ?3.4.2 Special Parameters

    @
    @3.4.2 Special Parameters
    @3.4.2 Special Parameters

    _
    _3.4.2 Special Parameters
    _3.4.2 Special Parameters

    A
    auto_resume7.3 Job Control Variables
    auto_resume7.3 Job Control Variables

    B
    BASH5.2 Bash Variables
    BASH5.2 Bash Variables
    BASH_ALIASES5.2 Bash Variables
    BASH_ALIASES5.2 Bash Variables
    BASH_ARGC5.2 Bash Variables
    BASH_ARGC5.2 Bash Variables
    BASH_ARGV5.2 Bash Variables
    BASH_ARGV5.2 Bash Variables
    BASH_CMDS5.2 Bash Variables
    BASH_CMDS5.2 Bash Variables
    BASH_COMMAND5.2 Bash Variables
    BASH_COMMAND5.2 Bash Variables
    BASH_COMPAT5.2 Bash Variables
    BASH_COMPAT5.2 Bash Variables
    BASH_ENV5.2 Bash Variables
    BASH_ENV5.2 Bash Variables
    BASH_EXECUTION_STRING5.2 Bash Variables
    BASH_EXECUTION_STRING5.2 Bash Variables
    BASH_LINENO5.2 Bash Variables
    BASH_LINENO5.2 Bash Variables
    BASH_LOADABLES_PATH5.2 Bash Variables
    BASH_LOADABLES_PATH5.2 Bash Variables
    BASH_REMATCH5.2 Bash Variables
    BASH_REMATCH5.2 Bash Variables
    BASH_SOURCE5.2 Bash Variables
    BASH_SOURCE5.2 Bash Variables
    BASH_SUBSHELL5.2 Bash Variables
    BASH_SUBSHELL5.2 Bash Variables
    BASH_VERSINFO5.2 Bash Variables
    BASH_VERSINFO5.2 Bash Variables
    BASH_VERSION5.2 Bash Variables
    BASH_VERSION5.2 Bash Variables
    BASH_XTRACEFD5.2 Bash Variables
    BASH_XTRACEFD5.2 Bash Variables
    BASHOPTS5.2 Bash Variables
    BASHOPTS5.2 Bash Variables
    BASHPID5.2 Bash Variables
    BASHPID5.2 Bash Variables
    bell-style8.3.1 Readline Init File Syntax
    bind-tty-special-chars8.3.1 Readline Init File Syntax
    blink-matching-paren8.3.1 Readline Init File Syntax

    C
    CDPATH5.1 Bourne Shell Variables
    CDPATH5.1 Bourne Shell Variables
    CHILD_MAX5.2 Bash Variables
    CHILD_MAX5.2 Bash Variables
    colored-completion-prefix8.3.1 Readline Init File Syntax
    colored-stats8.3.1 Readline Init File Syntax
    COLUMNS5.2 Bash Variables
    COLUMNS5.2 Bash Variables
    comment-begin8.3.1 Readline Init File Syntax
    COMP_CWORD5.2 Bash Variables
    COMP_CWORD5.2 Bash Variables
    COMP_KEY5.2 Bash Variables
    COMP_KEY5.2 Bash Variables
    COMP_LINE5.2 Bash Variables
    COMP_LINE5.2 Bash Variables
    COMP_POINT5.2 Bash Variables
    COMP_POINT5.2 Bash Variables
    COMP_TYPE5.2 Bash Variables
    COMP_TYPE5.2 Bash Variables
    COMP_WORDBREAKS5.2 Bash Variables
    COMP_WORDBREAKS5.2 Bash Variables
    COMP_WORDS5.2 Bash Variables
    COMP_WORDS5.2 Bash Variables
    completion-display-width8.3.1 Readline Init File Syntax
    completion-ignore-case8.3.1 Readline Init File Syntax
    completion-map-case8.3.1 Readline Init File Syntax
    completion-prefix-display-length8.3.1 Readline Init File Syntax
    completion-query-items8.3.1 Readline Init File Syntax
    COMPREPLY5.2 Bash Variables
    COMPREPLY5.2 Bash Variables
    convert-meta8.3.1 Readline Init File Syntax
    COPROC5.2 Bash Variables
    COPROC5.2 Bash Variables

    D
    DIRSTACK5.2 Bash Variables
    DIRSTACK5.2 Bash Variables
    disable-completion8.3.1 Readline Init File Syntax

    E
    echo-control-characters8.3.1 Readline Init File Syntax
    editing-mode8.3.1 Readline Init File Syntax
    EMACS5.2 Bash Variables
    EMACS5.2 Bash Variables
    emacs-mode-string8.3.1 Readline Init File Syntax
    enable-bracketed-paste8.3.1 Readline Init File Syntax
    enable-keypad8.3.1 Readline Init File Syntax
    ENV5.2 Bash Variables
    ENV5.2 Bash Variables
    EUID5.2 Bash Variables
    EUID5.2 Bash Variables
    EXECIGNORE5.2 Bash Variables
    EXECIGNORE5.2 Bash Variables
    expand-tilde8.3.1 Readline Init File Syntax

    F
    FCEDIT5.2 Bash Variables
    FCEDIT5.2 Bash Variables
    FIGNORE5.2 Bash Variables
    FIGNORE5.2 Bash Variables
    FUNCNAME5.2 Bash Variables
    FUNCNAME5.2 Bash Variables
    FUNCNEST5.2 Bash Variables
    FUNCNEST5.2 Bash Variables

    G
    GLOBIGNORE5.2 Bash Variables
    GLOBIGNORE5.2 Bash Variables
    GROUPS5.2 Bash Variables
    GROUPS5.2 Bash Variables

    H
    histchars5.2 Bash Variables
    histchars5.2 Bash Variables
    HISTCMD5.2 Bash Variables
    HISTCMD5.2 Bash Variables
    HISTCONTROL5.2 Bash Variables
    HISTCONTROL5.2 Bash Variables
    HISTFILE5.2 Bash Variables
    HISTFILE5.2 Bash Variables
    HISTFILESIZE5.2 Bash Variables
    HISTFILESIZE5.2 Bash Variables
    HISTIGNORE5.2 Bash Variables
    HISTIGNORE5.2 Bash Variables
    history-preserve-point8.3.1 Readline Init File Syntax
    history-size8.3.1 Readline Init File Syntax
    HISTSIZE5.2 Bash Variables
    HISTSIZE5.2 Bash Variables
    HISTTIMEFORMAT5.2 Bash Variables
    HISTTIMEFORMAT5.2 Bash Variables
    HOME5.1 Bourne Shell Variables
    HOME5.1 Bourne Shell Variables
    horizontal-scroll-mode8.3.1 Readline Init File Syntax
    HOSTFILE5.2 Bash Variables
    HOSTFILE5.2 Bash Variables
    HOSTNAME5.2 Bash Variables
    HOSTNAME5.2 Bash Variables
    HOSTTYPE5.2 Bash Variables
    HOSTTYPE5.2 Bash Variables

    I
    IFS5.1 Bourne Shell Variables
    IFS5.1 Bourne Shell Variables
    IGNOREEOF5.2 Bash Variables
    IGNOREEOF5.2 Bash Variables
    input-meta8.3.1 Readline Init File Syntax
    INPUTRC5.2 Bash Variables
    INPUTRC5.2 Bash Variables
    isearch-terminators8.3.1 Readline Init File Syntax

    K
    keymap8.3.1 Readline Init File Syntax

    L
    LANG5.2 Bash Variables
    LANG5.2 Bash Variables
    LC_ALL5.2 Bash Variables
    LC_ALL5.2 Bash Variables
    LC_COLLATE5.2 Bash Variables
    LC_COLLATE5.2 Bash Variables
    LC_CTYPE5.2 Bash Variables
    LC_CTYPE5.2 Bash Variables
    LC_MESSAGES3.1.2.5 Locale-Specific Translation
    LC_MESSAGES5.2 Bash Variables
    LC_MESSAGES5.2 Bash Variables
    LC_NUMERIC5.2 Bash Variables
    LC_NUMERIC5.2 Bash Variables
    LC_TIME5.2 Bash Variables
    LC_TIME5.2 Bash Variables
    LINENO5.2 Bash Variables
    LINENO5.2 Bash Variables
    LINES5.2 Bash Variables
    LINES5.2 Bash Variables

    M
    MACHTYPE5.2 Bash Variables
    MACHTYPE5.2 Bash Variables
    MAIL5.1 Bourne Shell Variables
    MAIL5.1 Bourne Shell Variables
    MAILCHECK5.2 Bash Variables
    MAILCHECK5.2 Bash Variables
    MAILPATH5.1 Bourne Shell Variables
    MAILPATH5.1 Bourne Shell Variables
    MAPFILE5.2 Bash Variables
    MAPFILE5.2 Bash Variables
    mark-modified-lines8.3.1 Readline Init File Syntax
    mark-symlinked-directories8.3.1 Readline Init File Syntax
    match-hidden-files8.3.1 Readline Init File Syntax
    menu-complete-display-prefix8.3.1 Readline Init File Syntax
    meta-flag8.3.1 Readline Init File Syntax

    O
    OLDPWD5.2 Bash Variables
    OLDPWD5.2 Bash Variables
    OPTARG5.1 Bourne Shell Variables
    OPTARG5.1 Bourne Shell Variables
    OPTERR5.2 Bash Variables
    OPTERR5.2 Bash Variables
    OPTIND5.1 Bourne Shell Variables
    OPTIND5.1 Bourne Shell Variables
    OSTYPE5.2 Bash Variables
    OSTYPE5.2 Bash Variables
    output-meta8.3.1 Readline Init File Syntax

    P
    page-completions8.3.1 Readline Init File Syntax
    PATH5.1 Bourne Shell Variables
    PATH5.1 Bourne Shell Variables
    PIPESTATUS5.2 Bash Variables
    PIPESTATUS5.2 Bash Variables
    POSIXLY_CORRECT5.2 Bash Variables
    POSIXLY_CORRECT5.2 Bash Variables
    PPID5.2 Bash Variables
    PPID5.2 Bash Variables
    PROMPT_COMMAND5.2 Bash Variables
    PROMPT_COMMAND5.2 Bash Variables
    PROMPT_DIRTRIM5.2 Bash Variables
    PROMPT_DIRTRIM5.2 Bash Variables
    PS15.1 Bourne Shell Variables
    PS15.1 Bourne Shell Variables
    PS25.1 Bourne Shell Variables
    PS25.1 Bourne Shell Variables
    PS35.2 Bash Variables
    PS35.2 Bash Variables
    PS45.2 Bash Variables
    PS45.2 Bash Variables
    PWD5.2 Bash Variables
    PWD5.2 Bash Variables

    R
    RANDOM5.2 Bash Variables
    RANDOM5.2 Bash Variables
    READLINE_LINE5.2 Bash Variables
    READLINE_LINE5.2 Bash Variables
    READLINE_POINT5.2 Bash Variables
    READLINE_POINT5.2 Bash Variables
    REPLY5.2 Bash Variables
    REPLY5.2 Bash Variables
    revert-all-at-newline8.3.1 Readline Init File Syntax

    S
    SECONDS5.2 Bash Variables
    SECONDS5.2 Bash Variables
    SHELL5.2 Bash Variables
    SHELL5.2 Bash Variables
    SHELLOPTS5.2 Bash Variables
    SHELLOPTS5.2 Bash Variables
    SHLVL5.2 Bash Variables
    SHLVL5.2 Bash Variables
    show-all-if-ambiguous8.3.1 Readline Init File Syntax
    show-all-if-unmodified8.3.1 Readline Init File Syntax
    show-mode-in-prompt8.3.1 Readline Init File Syntax
    skip-completed-text8.3.1 Readline Init File Syntax

    T
    TEXTDOMAIN3.1.2.5 Locale-Specific Translation
    TEXTDOMAINDIR3.1.2.5 Locale-Specific Translation
    TIMEFORMAT5.2 Bash Variables
    TIMEFORMAT5.2 Bash Variables
    TMOUT5.2 Bash Variables
    TMOUT5.2 Bash Variables
    TMPDIR5.2 Bash Variables
    TMPDIR5.2 Bash Variables

    U
    UID5.2 Bash Variables
    UID5.2 Bash Variables

    V
    vi-cmd-mode-string8.3.1 Readline Init File Syntax
    vi-ins-mode-string8.3.1 Readline Init File Syntax
    visible-stats8.3.1 Readline Init File Syntax

    Jump to:   ! -   -# -   -$ -   -* -   -- -   -0 -   -? -   -@ -   -_ -   -
    -A -   -B -   -C -   -D -   -E -   -F -   -G -   -H -   -I -   -K -   -L -   -M -   -O -   -P -   -R -   -S -   -T -   -U -   -V -   -

    +

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    D.4 Function Index

    - -
    Jump to:   A +
    + +
    +

    +Next: , Previous: , Up: Indexes   [Contents][Index]

    +
    + +

    D.3 Parameter and Variable Index

    +
    Jump to:   !   -B +#   -C +$   -D +*   -E +-   -F +0   -G +?   -H +@   -I +_   -K +
    +A   -M +B   -N +C   -O +D   -P +E   -Q +F   -R +G   -S +H   -T +I   -U +K   -Y +L   -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Index Entry Section

    A
    abort (C-g)8.4.8 Some Miscellaneous Commands
    abort (C-g)8.4.8 Some Miscellaneous Commands
    accept-line (Newline or Return)8.4.2 Commands For Manipulating The History
    accept-line (Newline or Return)8.4.2 Commands For Manipulating The History
    alias-expand-line ()8.4.8 Some Miscellaneous Commands
    alias-expand-line ()8.4.8 Some Miscellaneous Commands

    B
    backward-char (C-b)8.4.1 Commands For Moving
    backward-char (C-b)8.4.1 Commands For Moving
    backward-delete-char (Rubout)8.4.3 Commands For Changing Text
    backward-delete-char (Rubout)8.4.3 Commands For Changing Text
    backward-kill-line (C-x Rubout)8.4.4 Killing And Yanking
    backward-kill-line (C-x Rubout)8.4.4 Killing And Yanking
    backward-kill-word (M-DEL)8.4.4 Killing And Yanking
    backward-kill-word (M-DEL)8.4.4 Killing And Yanking
    backward-word (M-b)8.4.1 Commands For Moving
    backward-word (M-b)8.4.1 Commands For Moving
    beginning-of-history (M-&#60;)8.4.2 Commands For Manipulating The History
    beginning-of-history (M-&#60;)8.4.2 Commands For Manipulating The History
    beginning-of-line (C-a)8.4.1 Commands For Moving
    beginning-of-line (C-a)8.4.1 Commands For Moving
    bracketed-paste-begin ()8.4.3 Commands For Changing Text
    bracketed-paste-begin ()8.4.3 Commands For Changing Text

    C
    call-last-kbd-macro (C-x e)8.4.7 Keyboard Macros
    call-last-kbd-macro (C-x e)8.4.7 Keyboard Macros
    capitalize-word (M-c)8.4.3 Commands For Changing Text
    capitalize-word (M-c)8.4.3 Commands For Changing Text
    character-search (C-])8.4.8 Some Miscellaneous Commands
    character-search (C-])8.4.8 Some Miscellaneous Commands
    character-search-backward (M-C-])8.4.8 Some Miscellaneous Commands
    character-search-backward (M-C-])8.4.8 Some Miscellaneous Commands
    clear-screen (C-l)8.4.1 Commands For Moving
    clear-screen (C-l)8.4.1 Commands For Moving
    complete (TAB)8.4.6 Letting Readline Type For You
    complete (TAB)8.4.6 Letting Readline Type For You
    complete-command (M-!)8.4.6 Letting Readline Type For You
    complete-command (M-!)8.4.6 Letting Readline Type For You
    complete-filename (M-/)8.4.6 Letting Readline Type For You
    complete-filename (M-/)8.4.6 Letting Readline Type For You
    complete-hostname (M-@)8.4.6 Letting Readline Type For You
    complete-hostname (M-@)8.4.6 Letting Readline Type For You
    complete-into-braces (M-{)8.4.6 Letting Readline Type For You
    complete-into-braces (M-{)8.4.6 Letting Readline Type For You
    complete-username (M-~)8.4.6 Letting Readline Type For You
    complete-username (M-~)8.4.6 Letting Readline Type For You
    complete-variable (M-$)8.4.6 Letting Readline Type For You
    complete-variable (M-$)8.4.6 Letting Readline Type For You
    copy-backward-word ()8.4.4 Killing And Yanking
    copy-backward-word ()8.4.4 Killing And Yanking
    copy-forward-word ()8.4.4 Killing And Yanking
    copy-forward-word ()8.4.4 Killing And Yanking
    copy-region-as-kill ()8.4.4 Killing And Yanking
    copy-region-as-kill ()8.4.4 Killing And Yanking

    D
    dabbrev-expand ()8.4.6 Letting Readline Type For You
    dabbrev-expand ()8.4.6 Letting Readline Type For You
    delete-char (C-d)8.4.3 Commands For Changing Text
    delete-char (C-d)8.4.3 Commands For Changing Text
    delete-char-or-list ()8.4.6 Letting Readline Type For You
    delete-char-or-list ()8.4.6 Letting Readline Type For You
    delete-horizontal-space ()8.4.4 Killing And Yanking
    delete-horizontal-space ()8.4.4 Killing And Yanking
    digit-argument (M-0, M-1, <small>...</small> M--)8.4.5 Specifying Numeric Arguments
    digit-argument (M-0, M-1, <small>...</small> M--)8.4.5 Specifying Numeric Arguments
    display-shell-version (C-x C-v)8.4.8 Some Miscellaneous Commands
    display-shell-version (C-x C-v)8.4.8 Some Miscellaneous Commands
    do-uppercase-version (M-a, M-b, M-x, <small>...</small>)8.4.8 Some Miscellaneous Commands
    do-uppercase-version (M-a, M-b, M-x, <small>...</small>)8.4.8 Some Miscellaneous Commands
    downcase-word (M-l)8.4.3 Commands For Changing Text
    downcase-word (M-l)8.4.3 Commands For Changing Text
    dump-functions ()8.4.8 Some Miscellaneous Commands
    dump-functions ()8.4.8 Some Miscellaneous Commands
    dump-macros ()8.4.8 Some Miscellaneous Commands
    dump-macros ()8.4.8 Some Miscellaneous Commands
    dump-variables ()8.4.8 Some Miscellaneous Commands
    dump-variables ()8.4.8 Some Miscellaneous Commands
    dynamic-complete-history (M-TAB)8.4.6 Letting Readline Type For You
    dynamic-complete-history (M-TAB)8.4.6 Letting Readline Type For You

    E
    edit-and-execute-command (C-xC-e)8.4.8 Some Miscellaneous Commands
    edit-and-execute-command (C-xC-e)8.4.8 Some Miscellaneous Commands
    end-kbd-macro (C-x ))8.4.7 Keyboard Macros
    end-kbd-macro (C-x ))8.4.7 Keyboard Macros
    end-of-file (usually C-d)8.4.3 Commands For Changing Text
    end-of-file (usually C-d)8.4.3 Commands For Changing Text
    end-of-history (M-&#62;)8.4.2 Commands For Manipulating The History
    end-of-history (M-&#62;)8.4.2 Commands For Manipulating The History
    end-of-line (C-e)8.4.1 Commands For Moving
    end-of-line (C-e)8.4.1 Commands For Moving
    exchange-point-and-mark (C-x C-x)8.4.8 Some Miscellaneous Commands
    exchange-point-and-mark (C-x C-x)8.4.8 Some Miscellaneous Commands

    F
    forward-backward-delete-char ()8.4.3 Commands For Changing Text
    forward-backward-delete-char ()8.4.3 Commands For Changing Text
    forward-char (C-f)8.4.1 Commands For Moving
    forward-char (C-f)8.4.1 Commands For Moving
    forward-search-history (C-s)8.4.2 Commands For Manipulating The History
    forward-search-history (C-s)8.4.2 Commands For Manipulating The History
    forward-word (M-f)8.4.1 Commands For Moving
    forward-word (M-f)8.4.1 Commands For Moving

    G
    glob-complete-word (M-g)8.4.8 Some Miscellaneous Commands
    glob-complete-word (M-g)8.4.8 Some Miscellaneous Commands
    glob-expand-word (C-x *)8.4.8 Some Miscellaneous Commands
    glob-expand-word (C-x *)8.4.8 Some Miscellaneous Commands
    glob-list-expansions (C-x g)8.4.8 Some Miscellaneous Commands
    glob-list-expansions (C-x g)8.4.8 Some Miscellaneous Commands

    H
    history-and-alias-expand-line ()8.4.8 Some Miscellaneous Commands
    history-and-alias-expand-line ()8.4.8 Some Miscellaneous Commands
    history-expand-line (M-^)8.4.8 Some Miscellaneous Commands
    history-expand-line (M-^)8.4.8 Some Miscellaneous Commands
    history-search-backward ()8.4.2 Commands For Manipulating The History
    history-search-backward ()8.4.2 Commands For Manipulating The History
    history-search-forward ()8.4.2 Commands For Manipulating The History
    history-search-forward ()8.4.2 Commands For Manipulating The History
    history-substr-search-backward ()8.4.2 Commands For Manipulating The History
    history-substr-search-backward ()8.4.2 Commands For Manipulating The History
    history-substr-search-forward ()8.4.2 Commands For Manipulating The History
    history-substr-search-forward ()8.4.2 Commands For Manipulating The History

    I
    insert-comment (M-#)8.4.8 Some Miscellaneous Commands
    insert-comment (M-#)8.4.8 Some Miscellaneous Commands
    insert-completions (M-*)8.4.6 Letting Readline Type For You
    insert-completions (M-*)8.4.6 Letting Readline Type For You
    insert-last-argument (M-. or M-_)8.4.8 Some Miscellaneous Commands
    insert-last-argument (M-. or M-_)8.4.8 Some Miscellaneous Commands

    K
    kill-line (C-k)8.4.4 Killing And Yanking
    kill-line (C-k)8.4.4 Killing And Yanking
    kill-region ()8.4.4 Killing And Yanking
    kill-region ()8.4.4 Killing And Yanking
    kill-whole-line ()8.4.4 Killing And Yanking
    kill-whole-line ()8.4.4 Killing And Yanking
    kill-word (M-d)8.4.4 Killing And Yanking
    kill-word (M-d)8.4.4 Killing And Yanking

    M
    magic-space ()8.4.8 Some Miscellaneous Commands
    magic-space ()8.4.8 Some Miscellaneous Commands
    menu-complete ()8.4.6 Letting Readline Type For You
    menu-complete ()8.4.6 Letting Readline Type For You
    menu-complete-backward ()8.4.6 Letting Readline Type For You
    menu-complete-backward ()8.4.6 Letting Readline Type For You

    N
    next-history (C-n)8.4.2 Commands For Manipulating The History
    next-history (C-n)8.4.2 Commands For Manipulating The History
    non-incremental-forward-search-history (M-n)8.4.2 Commands For Manipulating The History
    non-incremental-forward-search-history (M-n)8.4.2 Commands For Manipulating The History
    non-incremental-reverse-search-history (M-p)8.4.2 Commands For Manipulating The History
    non-incremental-reverse-search-history (M-p)8.4.2 Commands For Manipulating The History

    O
    operate-and-get-next (C-o)8.4.8 Some Miscellaneous Commands
    operate-and-get-next (C-o)8.4.8 Some Miscellaneous Commands
    overwrite-mode ()8.4.3 Commands For Changing Text
    overwrite-mode ()8.4.3 Commands For Changing Text

    P
    possible-command-completions (C-x !)8.4.6 Letting Readline Type For You
    possible-command-completions (C-x !)8.4.6 Letting Readline Type For You
    possible-completions (M-?)8.4.6 Letting Readline Type For You
    possible-completions (M-?)8.4.6 Letting Readline Type For You
    possible-filename-completions (C-x /)8.4.6 Letting Readline Type For You
    possible-filename-completions (C-x /)8.4.6 Letting Readline Type For You
    possible-hostname-completions (C-x @)8.4.6 Letting Readline Type For You
    possible-hostname-completions (C-x @)8.4.6 Letting Readline Type For You
    possible-username-completions (C-x ~)8.4.6 Letting Readline Type For You
    possible-username-completions (C-x ~)8.4.6 Letting Readline Type For You
    possible-variable-completions (C-x $)8.4.6 Letting Readline Type For You
    possible-variable-completions (C-x $)8.4.6 Letting Readline Type For You
    prefix-meta (ESC)8.4.8 Some Miscellaneous Commands
    prefix-meta (ESC)8.4.8 Some Miscellaneous Commands
    previous-history (C-p)8.4.2 Commands For Manipulating The History
    previous-history (C-p)8.4.2 Commands For Manipulating The History
    print-last-kbd-macro ()8.4.7 Keyboard Macros
    print-last-kbd-macro ()8.4.7 Keyboard Macros

    Q
    quoted-insert (C-q or C-v)8.4.3 Commands For Changing Text
    quoted-insert (C-q or C-v)8.4.3 Commands For Changing Text

    R
    re-read-init-file (C-x C-r)8.4.8 Some Miscellaneous Commands
    re-read-init-file (C-x C-r)8.4.8 Some Miscellaneous Commands
    redraw-current-line ()8.4.1 Commands For Moving
    redraw-current-line ()8.4.1 Commands For Moving
    reverse-search-history (C-r)8.4.2 Commands For Manipulating The History
    reverse-search-history (C-r)8.4.2 Commands For Manipulating The History
    revert-line (M-r)8.4.8 Some Miscellaneous Commands
    revert-line (M-r)8.4.8 Some Miscellaneous Commands

    S
    self-insert (a, b, A, 1, !, <small>...</small>)8.4.3 Commands For Changing Text
    self-insert (a, b, A, 1, !, <small>...</small>)8.4.3 Commands For Changing Text
    set-mark (C-@)8.4.8 Some Miscellaneous Commands
    set-mark (C-@)8.4.8 Some Miscellaneous Commands
    shell-backward-kill-word ()8.4.4 Killing And Yanking
    shell-backward-kill-word ()8.4.4 Killing And Yanking
    shell-backward-word ()8.4.1 Commands For Moving
    shell-backward-word ()8.4.1 Commands For Moving
    shell-expand-line (M-C-e)8.4.8 Some Miscellaneous Commands
    shell-expand-line (M-C-e)8.4.8 Some Miscellaneous Commands
    shell-forward-word ()8.4.1 Commands For Moving
    shell-forward-word ()8.4.1 Commands For Moving
    shell-kill-word ()8.4.4 Killing And Yanking
    shell-kill-word ()8.4.4 Killing And Yanking
    skip-csi-sequence ()8.4.8 Some Miscellaneous Commands
    skip-csi-sequence ()8.4.8 Some Miscellaneous Commands
    start-kbd-macro (C-x ()8.4.7 Keyboard Macros
    start-kbd-macro (C-x ()8.4.7 Keyboard Macros

    T
    tilde-expand (M-&#38;)8.4.8 Some Miscellaneous Commands
    tilde-expand (M-&#38;)8.4.8 Some Miscellaneous Commands
    transpose-chars (C-t)8.4.3 Commands For Changing Text
    transpose-chars (C-t)8.4.3 Commands For Changing Text
    transpose-words (M-t)8.4.3 Commands For Changing Text
    transpose-words (M-t)8.4.3 Commands For Changing Text

    U
    undo (C-_ or C-x C-u)8.4.8 Some Miscellaneous Commands
    undo (C-_ or C-x C-u)8.4.8 Some Miscellaneous Commands
    universal-argument ()8.4.5 Specifying Numeric Arguments
    universal-argument ()8.4.5 Specifying Numeric Arguments
    unix-filename-rubout ()8.4.4 Killing And Yanking
    unix-filename-rubout ()8.4.4 Killing And Yanking
    unix-line-discard (C-u)8.4.4 Killing And Yanking
    unix-line-discard (C-u)8.4.4 Killing And Yanking
    unix-word-rubout (C-w)8.4.4 Killing And Yanking
    unix-word-rubout (C-w)8.4.4 Killing And Yanking
    upcase-word (M-u)8.4.3 Commands For Changing Text
    upcase-word (M-u)8.4.3 Commands For Changing Text

    Y
    yank (C-y)8.4.4 Killing And Yanking
    yank (C-y)8.4.4 Killing And Yanking
    yank-last-arg (M-. or M-_)8.4.2 Commands For Manipulating The History
    yank-last-arg (M-. or M-_)8.4.2 Commands For Manipulating The History
    yank-nth-arg (M-C-y)8.4.2 Commands For Manipulating The History
    yank-nth-arg (M-C-y)8.4.2 Commands For Manipulating The History
    yank-pop (M-y)8.4.4 Killing And Yanking
    yank-pop (M-y)8.4.4 Killing And Yanking

    Jump to:   A +M   -B +O   -C +P   -D +R   -E +S   -F +T   -G +U   -H +V   -I +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Index Entry  Section

    !
    !: Special Parameters

    #
    #: Special Parameters

    $
    $: Special Parameters
    $!: Special Parameters
    $#: Special Parameters
    $$: Special Parameters
    $*: Special Parameters
    $-: Special Parameters
    $0: Special Parameters
    $?: Special Parameters
    $@: Special Parameters
    $_: Special Parameters

    *
    *: Special Parameters

    -
    -: Special Parameters

    0
    0: Special Parameters

    ?
    ?: Special Parameters

    @
    @: Special Parameters

    _
    _: Special Parameters

    A
    auto_resume: Job Control Variables

    B
    BASH: Bash Variables
    BASHOPTS: Bash Variables
    BASHPID: Bash Variables
    BASH_ALIASES: Bash Variables
    BASH_ARGC: Bash Variables
    BASH_ARGV: Bash Variables
    BASH_CMDS: Bash Variables
    BASH_COMMAND: Bash Variables
    BASH_COMPAT: Bash Variables
    BASH_ENV: Bash Variables
    BASH_EXECUTION_STRING: Bash Variables
    BASH_LINENO: Bash Variables
    BASH_LOADABLES_PATH: Bash Variables
    BASH_REMATCH: Bash Variables
    BASH_SOURCE: Bash Variables
    BASH_SUBSHELL: Bash Variables
    BASH_VERSINFO: Bash Variables
    BASH_VERSION: Bash Variables
    BASH_XTRACEFD: Bash Variables
    bell-style: Readline Init File Syntax
    bind-tty-special-chars: Readline Init File Syntax
    blink-matching-paren: Readline Init File Syntax

    C
    CDPATH: Bourne Shell Variables
    CHILD_MAX: Bash Variables
    colored-completion-prefix: Readline Init File Syntax
    colored-stats: Readline Init File Syntax
    COLUMNS: Bash Variables
    comment-begin: Readline Init File Syntax
    completion-display-width: Readline Init File Syntax
    completion-ignore-case: Readline Init File Syntax
    completion-map-case: Readline Init File Syntax
    completion-prefix-display-length: Readline Init File Syntax
    completion-query-items: Readline Init File Syntax
    COMPREPLY: Bash Variables
    COMP_CWORD: Bash Variables
    COMP_KEY: Bash Variables
    COMP_LINE: Bash Variables
    COMP_POINT: Bash Variables
    COMP_TYPE: Bash Variables
    COMP_WORDBREAKS: Bash Variables
    COMP_WORDS: Bash Variables
    convert-meta: Readline Init File Syntax
    COPROC: Bash Variables

    D
    DIRSTACK: Bash Variables
    disable-completion: Readline Init File Syntax

    E
    echo-control-characters: Readline Init File Syntax
    editing-mode: Readline Init File Syntax
    EMACS: Bash Variables
    emacs-mode-string: Readline Init File Syntax
    enable-bracketed-paste: Readline Init File Syntax
    enable-keypad: Readline Init File Syntax
    ENV: Bash Variables
    EUID: Bash Variables
    EXECIGNORE: Bash Variables
    expand-tilde: Readline Init File Syntax

    F
    FCEDIT: Bash Variables
    FIGNORE: Bash Variables
    FUNCNAME: Bash Variables
    FUNCNEST: Bash Variables

    G
    GLOBIGNORE: Bash Variables
    GROUPS: Bash Variables

    H
    histchars: Bash Variables
    HISTCMD: Bash Variables
    HISTCONTROL: Bash Variables
    HISTFILE: Bash Variables
    HISTFILESIZE: Bash Variables
    HISTIGNORE: Bash Variables
    history-preserve-point: Readline Init File Syntax
    history-size: Readline Init File Syntax
    HISTSIZE: Bash Variables
    HISTTIMEFORMAT: Bash Variables
    HOME: Bourne Shell Variables
    horizontal-scroll-mode: Readline Init File Syntax
    HOSTFILE: Bash Variables
    HOSTNAME: Bash Variables
    HOSTTYPE: Bash Variables

    I
    IFS: Bourne Shell Variables
    IGNOREEOF: Bash Variables
    input-meta: Readline Init File Syntax
    INPUTRC: Bash Variables
    isearch-terminators: Readline Init File Syntax

    K
    keymap: Readline Init File Syntax

    L
    LANG: Bash Variables
    LC_ALL: Bash Variables
    LC_COLLATE: Bash Variables
    LC_CTYPE: Bash Variables
    LC_MESSAGES: Locale Translation
    LC_MESSAGES: Bash Variables
    LC_NUMERIC: Bash Variables
    LC_TIME: Bash Variables
    LINENO: Bash Variables
    LINES: Bash Variables

    M
    MACHTYPE: Bash Variables
    MAIL: Bourne Shell Variables
    MAILCHECK: Bash Variables
    MAILPATH: Bourne Shell Variables
    MAPFILE: Bash Variables
    mark-modified-lines: Readline Init File Syntax
    mark-symlinked-directories: Readline Init File Syntax
    match-hidden-files: Readline Init File Syntax
    menu-complete-display-prefix: Readline Init File Syntax
    meta-flag: Readline Init File Syntax

    O
    OLDPWD: Bash Variables
    OPTARG: Bourne Shell Variables
    OPTERR: Bash Variables
    OPTIND: Bourne Shell Variables
    OSTYPE: Bash Variables
    output-meta: Readline Init File Syntax

    P
    page-completions: Readline Init File Syntax
    PATH: Bourne Shell Variables
    PIPESTATUS: Bash Variables
    POSIXLY_CORRECT: Bash Variables
    PPID: Bash Variables
    PROMPT_COMMAND: Bash Variables
    PROMPT_DIRTRIM: Bash Variables
    PS0: Bash Variables
    PS1: Bourne Shell Variables
    PS2: Bourne Shell Variables
    PS3: Bash Variables
    PS4: Bash Variables
    PWD: Bash Variables

    R
    RANDOM: Bash Variables
    READLINE_LINE: Bash Variables
    READLINE_POINT: Bash Variables
    REPLY: Bash Variables
    revert-all-at-newline: Readline Init File Syntax

    S
    SECONDS: Bash Variables
    SHELL: Bash Variables
    SHELLOPTS: Bash Variables
    SHLVL: Bash Variables
    show-all-if-ambiguous: Readline Init File Syntax
    show-all-if-unmodified: Readline Init File Syntax
    show-mode-in-prompt: Readline Init File Syntax
    skip-completed-text: Readline Init File Syntax

    T
    TEXTDOMAIN: Locale Translation
    TEXTDOMAINDIR: Locale Translation
    TIMEFORMAT: Bash Variables
    TMOUT: Bash Variables
    TMPDIR: Bash Variables

    U
    UID: Bash Variables

    V
    vi-cmd-mode-string: Readline Init File Syntax
    vi-ins-mode-string: Readline Init File Syntax
    visible-stats: Readline Init File Syntax

    +
    Jump to:   !   -K +#   -M +$   -N +*   -O +-   -P +0   -Q +?   -R +@   -S +_   -T +
    +A   -U +B   -Y +C   -

    +D +   +E +   +F +   +G +   +H +   +I +   +K +   +L +   +M +   +O +   +P +   +R +   +S +   +T +   +U +   +V +   +

    - -
    - - - - - - - - - - - -
    [ < ][ > ]   [ << ][ Up ][ >> ]         [Top][Contents][Index][ ? ]
    -

    D.5 Concept Index

    - -
    Jump to:   A +
    + +
    +

    +Next: , Previous: , Up: Indexes   [Contents][Index]

    +
    + +

    D.4 Function Index

    +
    Jump to:   A   -B +B   -C +C   -D +D   -E +E   -F +F   -H +G   -I +H   -J +I   -K +K   -L +M   -M +N   -N +O   -O +P   -P +Q   -Q +R   -R +S   -S +T   -T +U   -V +Y   -W +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Index Entry  Section

    A
    abort (C-g): Miscellaneous Commands
    accept-line (Newline or Return): Commands For History
    alias-expand-line (): Miscellaneous Commands

    B
    backward-char (C-b): Commands For Moving
    backward-delete-char (Rubout): Commands For Text
    backward-kill-line (C-x Rubout): Commands For Killing
    backward-kill-word (M-DEL): Commands For Killing
    backward-word (M-b): Commands For Moving
    beginning-of-history (M-<): Commands For History
    beginning-of-line (C-a): Commands For Moving
    bracketed-paste-begin (): Commands For Text

    C
    call-last-kbd-macro (C-x e): Keyboard Macros
    capitalize-word (M-c): Commands For Text
    character-search (C-]): Miscellaneous Commands
    character-search-backward (M-C-]): Miscellaneous Commands
    clear-screen (C-l): Commands For Moving
    complete (TAB): Commands For Completion
    complete-command (M-!): Commands For Completion
    complete-filename (M-/): Commands For Completion
    complete-hostname (M-@): Commands For Completion
    complete-into-braces (M-{): Commands For Completion
    complete-username (M-~): Commands For Completion
    complete-variable (M-$): Commands For Completion
    copy-backward-word (): Commands For Killing
    copy-forward-word (): Commands For Killing
    copy-region-as-kill (): Commands For Killing

    D
    dabbrev-expand (): Commands For Completion
    delete-char (C-d): Commands For Text
    delete-char-or-list (): Commands For Completion
    delete-horizontal-space (): Commands For Killing
    digit-argument (M-0, M-1, … M--): Numeric Arguments
    display-shell-version (C-x C-v): Miscellaneous Commands
    do-uppercase-version (M-a, M-b, M-x, …): Miscellaneous Commands
    downcase-word (M-l): Commands For Text
    dump-functions (): Miscellaneous Commands
    dump-macros (): Miscellaneous Commands
    dump-variables (): Miscellaneous Commands
    dynamic-complete-history (M-TAB): Commands For Completion

    E
    edit-and-execute-command (C-xC-e): Miscellaneous Commands
    end-kbd-macro (C-x )): Keyboard Macros
    end-of-file (usually C-d): Commands For Text
    end-of-history (M->): Commands For History
    end-of-line (C-e): Commands For Moving
    exchange-point-and-mark (C-x C-x): Miscellaneous Commands

    F
    forward-backward-delete-char (): Commands For Text
    forward-char (C-f): Commands For Moving
    forward-search-history (C-s): Commands For History
    forward-word (M-f): Commands For Moving

    G
    glob-complete-word (M-g): Miscellaneous Commands
    glob-expand-word (C-x *): Miscellaneous Commands
    glob-list-expansions (C-x g): Miscellaneous Commands

    H
    history-and-alias-expand-line (): Miscellaneous Commands
    history-expand-line (M-^): Miscellaneous Commands
    history-search-backward (): Commands For History
    history-search-forward (): Commands For History
    history-substr-search-backward (): Commands For History
    history-substr-search-forward (): Commands For History

    I
    insert-comment (M-#): Miscellaneous Commands
    insert-completions (M-*): Commands For Completion
    insert-last-argument (M-. or M-_): Miscellaneous Commands

    K
    kill-line (C-k): Commands For Killing
    kill-region (): Commands For Killing
    kill-whole-line (): Commands For Killing
    kill-word (M-d): Commands For Killing

    M
    magic-space (): Miscellaneous Commands
    menu-complete (): Commands For Completion
    menu-complete-backward (): Commands For Completion

    N
    next-history (C-n): Commands For History
    non-incremental-forward-search-history (M-n): Commands For History
    non-incremental-reverse-search-history (M-p): Commands For History

    O
    operate-and-get-next (C-o): Miscellaneous Commands
    overwrite-mode (): Commands For Text

    P
    possible-command-completions (C-x !): Commands For Completion
    possible-completions (M-?): Commands For Completion
    possible-filename-completions (C-x /): Commands For Completion
    possible-hostname-completions (C-x @): Commands For Completion
    possible-username-completions (C-x ~): Commands For Completion
    possible-variable-completions (C-x $): Commands For Completion
    prefix-meta (ESC): Miscellaneous Commands
    previous-history (C-p): Commands For History
    print-last-kbd-macro (): Keyboard Macros

    Q
    quoted-insert (C-q or C-v): Commands For Text

    R
    re-read-init-file (C-x C-r): Miscellaneous Commands
    redraw-current-line (): Commands For Moving
    reverse-search-history (C-r): Commands For History
    revert-line (M-r): Miscellaneous Commands

    S
    self-insert (a, b, A, 1, !, …): Commands For Text
    set-mark (C-@): Miscellaneous Commands
    shell-backward-kill-word (): Commands For Killing
    shell-backward-word (): Commands For Moving
    shell-expand-line (M-C-e): Miscellaneous Commands
    shell-forward-word (): Commands For Moving
    shell-kill-word (): Commands For Killing
    skip-csi-sequence (): Miscellaneous Commands
    start-kbd-macro (C-x (): Keyboard Macros

    T
    tilde-expand (M-&): Miscellaneous Commands
    transpose-chars (C-t): Commands For Text
    transpose-words (M-t): Commands For Text

    U
    undo (C-_ or C-x C-u): Miscellaneous Commands
    universal-argument (): Numeric Arguments
    unix-filename-rubout (): Commands For Killing
    unix-line-discard (C-u): Commands For Killing
    unix-word-rubout (C-w): Commands For Killing
    upcase-word (M-u): Commands For Text

    Y
    yank (C-y): Commands For Killing
    yank-last-arg (M-. or M-_): Commands For History
    yank-nth-arg (M-C-y): Commands For History
    yank-pop (M-y): Commands For Killing

    +
    Jump to:   A   -Y +B   -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Index Entry Section

    A
    alias expansion6.6 Aliases
    arithmetic evaluation6.5 Shell Arithmetic
    arithmetic expansion3.5.5 Arithmetic Expansion
    arithmetic, shell6.5 Shell Arithmetic
    arrays6.7 Arrays

    B
    background7.1 Job Control Basics
    Bash configuration10.1 Basic Installation
    Bash installation10.1 Basic Installation
    Bourne shell3. Basic Shell Features
    brace expansion3.5.1 Brace Expansion
    builtin2. Definitions

    C
    command editing8.2.1 Readline Bare Essentials
    command execution3.7.2 Command Search and Execution
    command expansion3.7.1 Simple Command Expansion
    command history9.1 Bash History Facilities
    command search3.7.2 Command Search and Execution
    command substitution3.5.4 Command Substitution
    command timing3.2.2 Pipelines
    commands, compound3.2.4 Compound Commands
    commands, conditional3.2.4.2 Conditional Constructs
    commands, grouping3.2.4.3 Grouping Commands
    commands, lists3.2.3 Lists of Commands
    commands, looping3.2.4.1 Looping Constructs
    commands, pipelines3.2.2 Pipelines
    commands, shell3.2 Shell Commands
    commands, simple3.2.1 Simple Commands
    comments, shell3.1.3 Comments
    completion builtins8.7 Programmable Completion Builtins
    configuration10.1 Basic Installation
    control operator2. Definitions
    coprocess3.2.5 Coprocesses

    D
    directory stack6.8 The Directory Stack

    E
    editing command lines8.2.1 Readline Bare Essentials
    environment3.7.4 Environment
    evaluation, arithmetic6.5 Shell Arithmetic
    event designators9.3.1 Event Designators
    execution environment3.7.3 Command Execution Environment
    exit status2. Definitions
    exit status3.7.5 Exit Status
    expansion3.5 Shell Expansions
    expansion, arithmetic3.5.5 Arithmetic Expansion
    expansion, brace3.5.1 Brace Expansion
    expansion, filename3.5.8 Filename Expansion
    expansion, parameter3.5.3 Shell Parameter Expansion
    expansion, pathname3.5.8 Filename Expansion
    expansion, tilde3.5.2 Tilde Expansion
    expressions, arithmetic6.5 Shell Arithmetic
    expressions, conditional6.4 Bash Conditional Expressions

    F
    field2. Definitions
    filename2. Definitions
    filename expansion3.5.8 Filename Expansion
    foreground7.1 Job Control Basics
    functions, shell3.3 Shell Functions

    H
    history builtins9.2 Bash History Builtins
    history events9.3.1 Event Designators
    history expansion9.3 History Expansion
    history list9.1 Bash History Facilities
    History, how to use8.8 A Programmable Completion Example

    I
    identifier2. Definitions
    initialization file, readline8.3 Readline Init File
    installation10.1 Basic Installation
    interaction, readline8.2 Readline Interaction
    interactive shell6.1 Invoking Bash
    interactive shell6.3 Interactive Shells
    internationalization3.1.2.5 Locale-Specific Translation

    J
    job2. Definitions
    job control2. Definitions
    job control7.1 Job Control Basics

    K
    kill ring8.2.3 Readline Killing Commands
    killing text8.2.3 Readline Killing Commands

    L
    localization3.1.2.5 Locale-Specific Translation
    login shell6.1 Invoking Bash

    M
    matching, pattern3.5.8.1 Pattern Matching
    metacharacter2. Definitions

    N
    name2. Definitions
    native languages3.1.2.5 Locale-Specific Translation
    notation, readline8.2.1 Readline Bare Essentials

    O
    operator, shell2. Definitions

    P
    parameter expansion3.5.3 Shell Parameter Expansion
    parameters3.4 Shell Parameters
    parameters, positional3.4.1 Positional Parameters
    parameters, special3.4.2 Special Parameters
    pathname expansion3.5.8 Filename Expansion
    pattern matching3.5.8.1 Pattern Matching
    pipeline3.2.2 Pipelines
    POSIX2. Definitions
    POSIX Mode6.11 Bash POSIX Mode
    process group2. Definitions
    process group ID2. Definitions
    process substitution3.5.6 Process Substitution
    programmable completion8.6 Programmable Completion
    prompting6.9 Controlling the Prompt

    Q
    quoting3.1.2 Quoting
    quoting, ANSI3.1.2.4 ANSI-C Quoting

    R
    Readline, how to use7.3 Job Control Variables
    redirection3.6 Redirections
    reserved word2. Definitions
    restricted shell6.10 The Restricted Shell
    return status2. Definitions

    S
    shell arithmetic6.5 Shell Arithmetic
    shell function3.3 Shell Functions
    shell script3.8 Shell Scripts
    shell variable3.4 Shell Parameters
    shell, interactive6.3 Interactive Shells
    signal2. Definitions
    signal handling3.7.6 Signals
    special builtin2. Definitions
    special builtin4.4 Special Builtins
    startup files6.2 Bash Startup Files
    suspending jobs7.1 Job Control Basics

    T
    tilde expansion3.5.2 Tilde Expansion
    token2. Definitions
    translation, native languages3.1.2.5 Locale-Specific Translation

    V
    variable, shell3.4 Shell Parameters
    variables, readline8.3.1 Readline Init File Syntax

    W
    word2. Definitions
    word splitting3.5.7 Word Splitting

    Y
    yanking text8.2.3 Readline Killing Commands

    Jump to:   A +C   -B +D   -C +E   -D +F   -E +G   -F +H   -H +I   -I +K   -J +M   -K +N   -L +O   -M +P   -N +Q   -O +R   -P +S   -Q +T   -R +U   -S +Y   -T -   -V -   -W -   -Y -   -

    +

    -
    - - - - - - -
    [Top][Contents][Index][ ? ]
    -

    Table of Contents

    - -
    - - - - - - -
    [Top][Contents][Index][ ? ]
    -

    Short Table of Contents

    -
    -1. Introduction -
    -2. Definitions -
    -3. Basic Shell Features -
    -4. Shell Builtin Commands -
    -5. Shell Variables -
    -6. Bash Features -
    -7. Job Control -
    -8. Command Line Editing -
    -9. Using History Interactively -
    -10. Installing Bash -
    -A. Reporting Bugs -
    -B. Major Differences From The Bourne Shell -
    -C. GNU Free Documentation License -
    -D. Indexes -
    +
    + +
    +

    +Previous: , Up: Indexes   [Contents][Index]

    +
    + +

    D.5 Concept Index

    +
    Jump to:   A +   +B +   +C +   +D +   +E +   +F +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +V +   +W +   +Y +   +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Index Entry  Section

    A
    alias expansion: Aliases
    arithmetic evaluation: Shell Arithmetic
    arithmetic expansion: Arithmetic Expansion
    arithmetic, shell: Shell Arithmetic
    arrays: Arrays

    B
    background: Job Control Basics
    Bash configuration: Basic Installation
    Bash installation: Basic Installation
    Bourne shell: Basic Shell Features
    brace expansion: Brace Expansion
    builtin: Definitions

    C
    command editing: Readline Bare Essentials
    command execution: Command Search and Execution
    command expansion: Simple Command Expansion
    command history: Bash History Facilities
    command search: Command Search and Execution
    command substitution: Command Substitution
    command timing: Pipelines
    commands, compound: Compound Commands
    commands, conditional: Conditional Constructs
    commands, grouping: Command Grouping
    commands, lists: Lists
    commands, looping: Looping Constructs
    commands, pipelines: Pipelines
    commands, shell: Shell Commands
    commands, simple: Simple Commands
    comments, shell: Comments
    completion builtins: Programmable Completion Builtins
    configuration: Basic Installation
    control operator: Definitions
    coprocess: Coprocesses

    D
    directory stack: The Directory Stack

    E
    editing command lines: Readline Bare Essentials
    environment: Environment
    evaluation, arithmetic: Shell Arithmetic
    event designators: Event Designators
    execution environment: Command Execution Environment
    exit status: Definitions
    exit status: Exit Status
    expansion: Shell Expansions
    expansion, arithmetic: Arithmetic Expansion
    expansion, brace: Brace Expansion
    expansion, filename: Filename Expansion
    expansion, parameter: Shell Parameter Expansion
    expansion, pathname: Filename Expansion
    expansion, tilde: Tilde Expansion
    expressions, arithmetic: Shell Arithmetic
    expressions, conditional: Bash Conditional Expressions

    F
    field: Definitions
    filename: Definitions
    filename expansion: Filename Expansion
    foreground: Job Control Basics
    functions, shell: Shell Functions

    H
    history builtins: Bash History Builtins
    history events: Event Designators
    history expansion: History Interaction
    history list: Bash History Facilities
    History, how to use: A Programmable Completion Example

    I
    identifier: Definitions
    initialization file, readline: Readline Init File
    installation: Basic Installation
    interaction, readline: Readline Interaction
    interactive shell: Invoking Bash
    interactive shell: Interactive Shells
    internationalization: Locale Translation

    J
    job: Definitions
    job control: Definitions
    job control: Job Control Basics

    K
    kill ring: Readline Killing Commands
    killing text: Readline Killing Commands

    L
    localization: Locale Translation
    login shell: Invoking Bash

    M
    matching, pattern: Pattern Matching
    metacharacter: Definitions

    N
    name: Definitions
    native languages: Locale Translation
    notation, readline: Readline Bare Essentials

    O
    operator, shell: Definitions

    P
    parameter expansion: Shell Parameter Expansion
    parameters: Shell Parameters
    parameters, positional: Positional Parameters
    parameters, special: Special Parameters
    pathname expansion: Filename Expansion
    pattern matching: Pattern Matching
    pipeline: Pipelines
    POSIX: Definitions
    POSIX Mode: Bash POSIX Mode
    process group: Definitions
    process group ID: Definitions
    process substitution: Process Substitution
    programmable completion: Programmable Completion
    prompting: Controlling the Prompt

    Q
    quoting: Quoting
    quoting, ANSI: ANSI-C Quoting

    R
    Readline, how to use: Job Control Variables
    redirection: Redirections
    reserved word: Definitions
    restricted shell: The Restricted Shell
    return status: Definitions

    S
    shell arithmetic: Shell Arithmetic
    shell function: Shell Functions
    shell script: Shell Scripts
    shell variable: Shell Parameters
    shell, interactive: Interactive Shells
    signal: Definitions
    signal handling: Signals
    special builtin: Definitions
    special builtin: Special Builtins
    startup files: Bash Startup Files
    suspending jobs: Job Control Basics

    T
    tilde expansion: Tilde Expansion
    token: Definitions
    translation, native languages: Locale Translation

    V
    variable, shell: Shell Parameters
    variables, readline: Readline Init File Syntax

    W
    word: Definitions
    word splitting: Word Splitting

    Y
    yanking text: Readline Killing Commands

    +
    Jump to:   A +   +B +   +C +   +D +   +E +   +F +   +H +   +I +   +J +   +K +   +L +   +M +   +N +   +O +   +P +   +Q +   +R +   +S +   +T +   +V +   +W +   +Y +   +
    -
    -
    - - - - - - -
    [Top][Contents][Index][ ? ]
    -

    About this document

    -This document was generated by Chet Ramey on October, 15 2015 -using texi2html -

    -The buttons in the navigation panels have the following meaning: -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Button Name Go to From 1.2.3 go to
    - [ < ] -Back - -previous section in reading order - -1.2.2 -
    - [ > ] -Forward - -next section in reading order - -1.2.4 -
    - [ << ] -FastBack - -previous or up-and-previous section - -1.1 -
    - [ Up ] -Up - -up section - -1.2 -
    - [ >> ] -FastForward - -next or up-and-next section - -1.3 -
    - [Top] -Top - -cover (top) of document - -   -
    - [Contents] -Contents - -table of contents - -   -
    - [Index] -Index - -concept index - -   -
    - [ ? ] -About - -this page - -   -
    -

    -where the Example assumes that the current position -is at Subsubsection One-Two-Three of a document of -the following structure: -
      -
    • 1. Section One
    • -
        -
      • 1.1 Subsection One-One
      • -
          -
        • ...
        • -
        -
      • 1.2 Subsection One-Two
      • -
          -
        • 1.2.1 Subsubsection One-Two-One -
        • 1.2.2 Subsubsection One-Two-Two -
        • 1.2.3 Subsubsection One-Two-Three     -<== Current Position -
        • 1.2.4 Subsubsection One-Two-Four -
        -
      • 1.3 Subsection One-Three
      • -
          -
        • ...
        • -
        -
      • 1.4 Subsection One-Four
      • -
      -
    +
    -
    -
    - -This document was generated -by Chet Ramey on October, 15 2015 -using texi2html - - + + + diff --git a/doc/bashref.info b/doc/bashref.info index c8582f9c..2306dde0 100644 --- a/doc/bashref.info +++ b/doc/bashref.info @@ -2,12 +2,12 @@ This is bashref.info, produced by makeinfo version 6.0 from bashref.texi. This text is a brief description of the features that are present in the -Bash shell (version 4.4, 13 October 2015). +Bash shell (version 4.4, 16 November 2015). - This is Edition 4.4, last updated 13 October 2015, of 'The GNU Bash + This is Edition 4.4, last updated 16 November 2015, of 'The GNU Bash Reference Manual', for 'Bash', Version 4.4. - Copyright (C) 1988-2014 Free Software Foundation, Inc. + Copyright (C) 1988-2015 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, @@ -27,10 +27,10 @@ Bash Features ************* This text is a brief description of the features that are present in the -Bash shell (version 4.4, 13 October 2015). The Bash home page is +Bash shell (version 4.4, 16 November 2015). The Bash home page is . - This is Edition 4.4, last updated 13 October 2015, of 'The GNU Bash + This is Edition 4.4, last updated 16 November 2015, of 'The GNU Bash Reference Manual', for 'Bash', Version 4.4. Bash contains features that appear in other popular shells, and some @@ -396,17 +396,19 @@ File: bashref.info, Node: Double Quotes, Next: ANSI-C Quoting, Prev: Single Q Enclosing characters in double quotes ('"') preserves the literal value of all characters within the quotes, with the exception of '$', '`', -'\', and, when history expansion is enabled, '!'. The characters '$' -and '`' retain their special meaning within double quotes (*note Shell -Expansions::). The backslash retains its special meaning only when -followed by one of the following characters: '$', '`', '"', '\', or -'newline'. Within double quotes, backslashes that are followed by one -of these characters are removed. Backslashes preceding characters -without a special meaning are left unmodified. A double quote may be -quoted within double quotes by preceding it with a backslash. If -enabled, history expansion will be performed unless an '!' appearing in -double quotes is escaped using a backslash. The backslash preceding the -'!' is not removed. +'\', and, when history expansion is enabled, '!'. When the shell is in +POSIX mode (*note Bash POSIX Mode::), the '!' has no special meaning +within double quotes, even when history expansion is enabled. The +characters '$' and '`' retain their special meaning within double quotes +(*note Shell Expansions::). The backslash retains its special meaning +only when followed by one of the following characters: '$', '`', '"', +'\', or 'newline'. Within double quotes, backslashes that are followed +by one of these characters are removed. Backslashes preceding +characters without a special meaning are left unmodified. A double +quote may be quoted within double quotes by preceding it with a +backslash. If enabled, history expansion will be performed unless an +'!' appearing in double quotes is escaped using a backslash. The +backslash preceding the '!' is not removed. The special parameters '*' and '@' have special meaning when in double quotes (*note Shell Parameter Expansion::). @@ -1909,11 +1911,12 @@ as follows: or `COMMAND` -Bash performs the expansion by executing COMMAND and replacing the -command substitution with the standard output of the command, with any -trailing newlines deleted. Embedded newlines are not deleted, but they -may be removed during word splitting. The command substitution '$(cat -FILE)' can be replaced by the equivalent but faster '$(< FILE)'. +Bash performs the expansion by executing COMMAND in a subshell +environment and replacing the command substitution with the standard +output of the command, with any trailing newlines deleted. Embedded +newlines are not deleted, but they may be removed during word splitting. +The command substitution '$(cat FILE)' can be replaced by the equivalent +but faster '$(< FILE)'. When the old-style backquote form of substitution is used, backslash retains its literal meaning except when followed by '$', '`', or '\'. @@ -1957,20 +1960,21 @@ File: bashref.info, Node: Process Substitution, Next: Word Splitting, Prev: A 3.5.6 Process Substitution -------------------------- -Process substitution is supported on systems that support named pipes -(FIFOs) or the '/dev/fd' method of naming open files. It takes the form -of +Process substitution allows a process's input or output to be referred +to using a filename. It takes the form of <(LIST) or >(LIST) -The process LIST is run with its input or output connected to a FIFO or -some file in '/dev/fd'. The name of this file is passed as an argument -to the current command as the result of the expansion. If the '>(LIST)' -form is used, writing to the file will provide input for LIST. If the -'<(LIST)' form is used, the file passed as an argument should be read to -obtain the output of LIST. Note that no space may appear between the -'<' or '>' and the left parenthesis, otherwise the construct would be -interpreted as a redirection. +The process LIST is run asynchronously, and its input or output appears +as a filename. This filename is passed as an argument to the current +command as the result of the expansion. If the '>(LIST)' form is used, +writing to the file will provide input for LIST. If the '<(LIST)' form +is used, the file passed as an argument should be read to obtain the +output of LIST. Note that no space may appear between the '<' or '>' +and the left parenthesis, otherwise the construct would be interpreted +as a redirection. Process substitution is supported on systems that +support named pipes (FIFOs) or the '/dev/fd' method of naming open +files. When available, process substitution is performed simultaneously with parameter and variable expansion, command substitution, and arithmetic @@ -1994,12 +1998,12 @@ field terminators. If 'IFS' is unset, or its value is exactly previous expansions are ignored, and any sequence of 'IFS' characters not at the beginning or end serves to delimit words. If 'IFS' has a value other than the default, then sequences of the whitespace -characters 'space' and 'tab' are ignored at the beginning and end of the -word, as long as the whitespace character is in the value of 'IFS' (an -'IFS' whitespace character). Any character in 'IFS' that is not 'IFS' -whitespace, along with any adjacent 'IFS' whitespace characters, -delimits a field. A sequence of 'IFS' whitespace characters is also -treated as a delimiter. If the value of 'IFS' is null, no word +characters 'space', 'tab', and 'newline' are ignored at the beginning +and end of the word, as long as the whitespace character is in the value +of 'IFS' (an 'IFS' whitespace character). Any character in 'IFS' that +is not 'IFS' whitespace, along with any adjacent 'IFS' whitespace +characters, delimits a field. A sequence of 'IFS' whitespace characters +is also treated as a delimiter. If the value of 'IFS' is null, no word splitting occurs. Explicit null arguments ('""' or '''') are retained. Unquoted @@ -2331,8 +2335,9 @@ A variant of here documents, the format is: The WORD undergoes brace expansion, tilde expansion, parameter and variable expansion, command substitution, arithmetic expansion, and quote removal. Pathname expansion and word splitting are not performed. -The result is supplied as a single string to the command on its standard -input (or file descriptor N if N is specified). +The result is supplied as a single string, with a newline appended, to +the command on its standard input (or file descriptor N if N is +specified). 3.6.8 Duplicating File Descriptors ---------------------------------- @@ -4302,7 +4307,9 @@ This builtin allows you to change additional shell optional behavior. If set, Bash changes its behavior to that of version 3.2 with respect to locale-specific string comparison when using the '[[' conditional command's '<' and '>' operators (see previous - item). + item) and the effect of interrupting a command list. Bash + versions 3.2 and earlier continue with the next command in the + list after one terminates due to an interrupt. 'compat40' If set, Bash changes its behavior to that of version 4.0 with @@ -4467,6 +4474,12 @@ This builtin allows you to change additional shell optional behavior. If set, Bash will send 'SIGHUP' to all jobs when an interactive login shell exits (*note Signals::). + 'inherit_errexit' + If set, command substitution inherits the value of the + 'errexit' option, instead of unsetting it in the subshell + environment. This option is enabled when POSIX mode is + enabled. + 'interactive_comments' Allow a word beginning with '#' to cause that word and all remaining characters on that line to be ignored in an @@ -4681,8 +4694,10 @@ Variables::). An associative array variable whose members correspond to the internal list of aliases as maintained by the 'alias' builtin. (*note Bourne Shell Builtins::). Elements added to this array - appear in the alias list; unsetting array elements cause aliases to - be removed from the alias list. + appear in the alias list; however, unsetting array elements + currently does not cause aliases to be removed from the alias list. + If 'BASH_ALIASES' is unset, it loses its special properties, even + if it is subsequently reset. 'BASH_ARGC' An array variable whose values are the number of parameters in each @@ -4708,8 +4723,10 @@ Variables::). An associative array variable whose members correspond to the internal hash table of commands as maintained by the 'hash' builtin (*note Bourne Shell Builtins::). Elements added to this array - appear in the hash table; unsetting array elements cause commands - to be removed from the hash table. + appear in the hash table; however, unsetting array elements + currently does not cause command names to be removed from the hash + table. If 'BASH_CMDS' is unset, it loses its special properties, + even if it is subsequently reset. 'BASH_COMMAND' The command currently being executed or about to be executed, @@ -4902,14 +4919,15 @@ Variables::). is readonly. 'EXECIGNORE' - A colon-separated list of extended glob patterns (*note Pattern - Matching::) defining the list of filenames to be ignored by command - search. Files whose full pathnames match one of these patterns are - not considered executable files for the purposes of completion and + A colon-separated list of shell patterns (*note Pattern Matching::) + defining the list of filenames to be ignored by command search. + Files whose full pathnames match one of these patterns are not + considered executable files for the purposes of completion and command execution. This does not affect the behavior of the '[', 'test', and '[[' commands. Use this variable to ignore shared library files that have the executable bit set, but are not - executable files. + executable files. The pattern matching honors the setting of the + 'extglob' shell option. 'FCEDIT' The editor used as a default by the '-e' option to the 'fc' builtin @@ -4947,7 +4965,8 @@ Variables::). A colon-separated list of patterns defining the set of filenames to be ignored by filename expansion. If a filename matched by a filename expansion pattern also matches one of the patterns in - 'GLOBIGNORE', it is removed from the list of matches. + 'GLOBIGNORE', it is removed from the list of matches. The pattern + matching honors the setting of the 'extglob' shell option. 'GROUPS' An array variable containing the list of groups of which the @@ -5017,7 +5036,8 @@ Variables::). backslash; the backslash is removed before attempting a match. The second and subsequent lines of a multi-line compound command are not tested, and are added to the history regardless of the value of - 'HISTIGNORE'. + 'HISTIGNORE'. The pattern matching honors the setting of the + 'extglob' shell option. 'HISTIGNORE' subsumes the function of 'HISTCONTROL'. A pattern of '&' is identical to 'ignoredups', and a pattern of '[ ]*' is @@ -5167,6 +5187,11 @@ Variables::). the '\w' and '\W' prompt string escapes (*note Controlling the Prompt::). Characters removed are replaced with an ellipsis. +'PS0' + The value of this parameter is expanded like PS1 and displayed by + interactive shells after reading a command and before the command + is executed. + 'PS3' The value of this variable is used as the prompt for the 'select' command. If this variable is not set, the 'select' command prompts @@ -5633,7 +5658,8 @@ several ways. 3. Bash expands and displays 'PS1' before reading the first line of a command, and expands and displays 'PS2' before reading the second - and subsequent lines of a multi-line command. + and subsequent lines of a multi-line command. Bash displays 'PS0' + after it reads a command but before executing it. 4. Bash executes the value of the 'PROMPT_COMMAND' variable as a command before printing the primary prompt, '$PS1' (*note Bash @@ -6335,9 +6361,7 @@ startup files. is stopped is 'Stopped(SIGNAME)', where SIGNAME is, for example, 'SIGTSTP'. - 4. The 'bg' builtin uses the required format to describe each job - placed in the background, which does not include an indication of - whether the job is the current or previous job. + 4. Alias expansion is always enabled, even in non-interactive shells. 5. Reserved words appearing in a context where reserved words are recognized do not undergo alias expansion. @@ -6353,166 +6377,173 @@ startup files. 8. Tilde expansion is only performed on assignments preceding a command name, rather than on all assignment statements on the line. - 9. The 'command' builtin does not prevent builtins that take - assignment statements as arguments from expanding them as - assignment statements; when not in POSIX mode, assignment builtins - lose their assignment statement expansion properties when preceded - by 'command'. - - 10. The default history file is '~/.sh_history' (this is the default + 9. The default history file is '~/.sh_history' (this is the default value of '$HISTFILE'). - 11. The output of 'kill -l' prints all the signal names on a single - line, separated by spaces, without the 'SIG' prefix. - - 12. The 'kill' builtin does not accept signal names with a 'SIG' - prefix. - - 13. Non-interactive shells exit if FILENAME in '.' FILENAME is not - found. - - 14. Non-interactive shells exit if a syntax error in an arithmetic - expansion results in an invalid expression. - - 15. Non-interactive shells exit on word expansion errors. - - 16. Non-interactive shells exit if there is a syntax error in a script - read with the '.' or 'source' builtins, or in a string processed by - the 'eval' builtin. - - 17. Redirection operators do not perform filename expansion on the + 10. Redirection operators do not perform filename expansion on the word in the redirection unless the shell is interactive. - 18. Redirection operators do not perform word splitting on the word in + 11. Redirection operators do not perform word splitting on the word in the redirection. - 19. Function names must be valid shell 'name's. That is, they may not + 12. Function names must be valid shell 'name's. That is, they may not contain characters other than letters, digits, and underscores, and may not start with a digit. Declaring a function with an invalid name causes a fatal syntax error in non-interactive shells. - 20. Function names may not be the same as one of the POSIX special + 13. Function names may not be the same as one of the POSIX special builtins. - 21. POSIX special builtins are found before shell functions during + 14. POSIX special builtins are found before shell functions during command lookup. - 22. Literal tildes that appear as the first character in elements of + 15. Literal tildes that appear as the first character in elements of the 'PATH' variable are not expanded as described above under *note Tilde Expansion::. - 23. The 'time' reserved word may be used by itself as a command. When + 16. The 'time' reserved word may be used by itself as a command. When used in this way, it displays timing statistics for the shell and its completed children. The 'TIMEFORMAT' variable controls the format of the timing information. - 24. When parsing and expanding a ${...} expansion that appears within + 17. When parsing and expanding a ${...} expansion that appears within double quotes, single quotes are no longer special and cannot be used to quote a closing brace or other special character, unless the operator is one of those defined to perform pattern removal. In this case, they do not have to appear as matched pairs. - 25. The parser does not recognize 'time' as a reserved word if the + 18. The parser does not recognize 'time' as a reserved word if the next token begins with a '-'. - 26. If a POSIX special builtin returns an error status, a + 19. The '!' character does not introduce history expansion within a + double-quoted string, even if the 'histexpand' option is enabled. + + 20. If a POSIX special builtin returns an error status, a non-interactive shell exits. The fatal errors are those listed in the POSIX standard, and include things like passing incorrect options, redirection errors, variable assignment errors for assignments preceding the command name, and so on. - 27. A non-interactive shell exits with an error status if a variable + 21. A non-interactive shell exits with an error status if a variable assignment error occurs when no command name follows the assignment statements. A variable assignment error occurs, for example, when trying to assign a value to a readonly variable. - 28. A non-interactive shell exits with an error status if a variable + 22. A non-interactive shell exits with an error status if a variable assignment error occurs in an assignment statement preceding a special builtin, but not with any other simple command. - 29. A non-interactive shell exits with an error status if the + 23. A non-interactive shell exits with an error status if the iteration variable in a 'for' statement or the selection variable in a 'select' statement is a readonly variable. - 30. Process substitution is not available. + 24. Non-interactive shells exit if FILENAME in '.' FILENAME is not + found. - 31. While variable indirection is available, it may not be applied to + 25. Non-interactive shells exit if a syntax error in an arithmetic + expansion results in an invalid expression. + + 26. Non-interactive shells exit on word expansion errors. + + 27. Non-interactive shells exit if there is a syntax error in a script + read with the '.' or 'source' builtins, or in a string processed by + the 'eval' builtin. + + 28. Process substitution is not available. + + 29. While variable indirection is available, it may not be applied to the '#' and '?' special parameters. - 32. Assignment statements preceding POSIX special builtins persist in + 30. Assignment statements preceding POSIX special builtins persist in the shell environment after the builtin completes. - 33. Assignment statements preceding shell function calls persist in + 31. Assignment statements preceding shell function calls persist in the shell environment after the function returns, as if a POSIX special builtin command had been executed. - 34. The 'export' and 'readonly' builtin commands display their output + 32. The 'command' builtin does not prevent builtins that take + assignment statements as arguments from expanding them as + assignment statements; when not in POSIX mode, assignment builtins + lose their assignment statement expansion properties when preceded + by 'command'. + + 33. The 'bg' builtin uses the required format to describe each job + placed in the background, which does not include an indication of + whether the job is the current or previous job. + + 34. The output of 'kill -l' prints all the signal names on a single + line, separated by spaces, without the 'SIG' prefix. + + 35. The 'kill' builtin does not accept signal names with a 'SIG' + prefix. + + 36. The 'export' and 'readonly' builtin commands display their output in the format required by POSIX. - 35. The 'trap' builtin displays signal names without the leading + 37. The 'trap' builtin displays signal names without the leading 'SIG'. - 36. The 'trap' builtin doesn't check the first argument for a possible + 38. The 'trap' builtin doesn't check the first argument for a possible signal specification and revert the signal handling to the original disposition if it is, unless that argument consists solely of digits and is a valid signal number. If users want to reset the handler for a given signal to the original disposition, they should use '-' as the first argument. - 37. The '.' and 'source' builtins do not search the current directory + 39. The '.' and 'source' builtins do not search the current directory for the filename argument if it is not found by searching 'PATH'. - 38. Subshells spawned to execute command substitutions inherit the - value of the '-e' option from the parent shell. When not in POSIX - mode, Bash clears the '-e' option in such subshells. + 40. Enabling POSIX mode has the effect of setting the + 'inherit_errexit' option, so subshells spawned to execute command + substitutions inherit the value of the '-e' option from the parent + shell. When the 'inherit_errexit' option is not enabled, Bash + clears the '-e' option in such subshells. - 39. Alias expansion is always enabled, even in non-interactive shells. - - 40. When the 'alias' builtin displays alias definitions, it does not + 41. When the 'alias' builtin displays alias definitions, it does not display them with a leading 'alias ' unless the '-p' option is supplied. - 41. When the 'set' builtin is invoked without options, it does not + 42. When the 'set' builtin is invoked without options, it does not display shell function names and definitions. - 42. When the 'set' builtin is invoked without options, it displays + 43. When the 'set' builtin is invoked without options, it displays variable values without quotes, unless they contain shell metacharacters, even if the result contains nonprinting characters. - 43. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname + 44. When the 'cd' builtin is invoked in LOGICAL mode, and the pathname constructed from '$PWD' and the directory name supplied as an argument does not refer to an existing directory, 'cd' will fail instead of falling back to PHYSICAL mode. - 44. The 'pwd' builtin verifies that the value it prints is the same as + 45. The 'pwd' builtin verifies that the value it prints is the same as the current directory, even if it is not asked to check the file system with the '-P' option. - 45. When listing the history, the 'fc' builtin does not include an + 46. When listing the history, the 'fc' builtin does not include an indication of whether or not a history entry has been modified. - 46. The default editor used by 'fc' is 'ed'. + 47. The default editor used by 'fc' is 'ed'. - 47. The 'type' and 'command' builtins will not report a non-executable + 48. The 'type' and 'command' builtins will not report a non-executable file as having been found, though the shell will attempt to execute such a file if it is the only so-named file found in '$PATH'. - 48. The 'vi' editing mode will invoke the 'vi' editor directly when + 49. The 'vi' editing mode will invoke the 'vi' editor directly when the 'v' command is run, instead of checking '$VISUAL' and '$EDITOR'. - 49. When the 'xpg_echo' option is enabled, Bash does not attempt to + 50. When the 'xpg_echo' option is enabled, Bash does not attempt to interpret any arguments to 'echo' as options. Each argument is displayed, after escape characters are converted. - 50. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' + 51. The 'ulimit' builtin uses a block size of 512 bytes for the '-c' and '-f' options. - 51. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not + 52. The arrival of 'SIGCHLD' when a trap is set on 'SIGCHLD' does not interrupt the 'wait' builtin and cause it to return immediately. The trap command is run once for each child that exits. - 52. The 'read' builtin may be interrupted by a signal for which a trap + 53. The 'read' builtin may be interrupted by a signal for which a trap has been set. If Bash receives a trapped signal while executing 'read', the trap handler executes and 'read' returns an exit status greater than 128. @@ -6724,7 +6755,7 @@ File: bashref.info, Node: Job Control Builtins, Next: Job Control Variables, is 127. 'disown' - disown [-ar] [-h] [JOBSPEC ...] + disown [-ar] [-h] [JOBSPEC ... | PID ... ] Without options, remove each JOBSPEC from the table of active jobs. If the '-h' option is given, the job is not removed from the table, @@ -10731,21 +10762,21 @@ D.3 Parameter and Variable Index * BASHOPTS: Bash Variables. (line 16) * BASHPID: Bash Variables. (line 25) * BASH_ALIASES: Bash Variables. (line 30) -* BASH_ARGC: Bash Variables. (line 37) -* BASH_ARGV: Bash Variables. (line 47) -* BASH_CMDS: Bash Variables. (line 57) -* BASH_COMMAND: Bash Variables. (line 64) -* BASH_COMPAT: Bash Variables. (line 69) -* BASH_ENV: Bash Variables. (line 84) -* BASH_EXECUTION_STRING: Bash Variables. (line 90) -* BASH_LINENO: Bash Variables. (line 93) -* BASH_LOADABLES_PATH: Bash Variables. (line 101) -* BASH_REMATCH: Bash Variables. (line 105) -* BASH_SOURCE: Bash Variables. (line 113) -* BASH_SUBSHELL: Bash Variables. (line 120) -* BASH_VERSINFO: Bash Variables. (line 125) -* BASH_VERSION: Bash Variables. (line 148) -* BASH_XTRACEFD: Bash Variables. (line 151) +* BASH_ARGC: Bash Variables. (line 39) +* BASH_ARGV: Bash Variables. (line 49) +* BASH_CMDS: Bash Variables. (line 59) +* BASH_COMMAND: Bash Variables. (line 68) +* BASH_COMPAT: Bash Variables. (line 73) +* BASH_ENV: Bash Variables. (line 88) +* BASH_EXECUTION_STRING: Bash Variables. (line 94) +* BASH_LINENO: Bash Variables. (line 97) +* BASH_LOADABLES_PATH: Bash Variables. (line 105) +* BASH_REMATCH: Bash Variables. (line 109) +* BASH_SOURCE: Bash Variables. (line 117) +* BASH_SUBSHELL: Bash Variables. (line 124) +* BASH_VERSINFO: Bash Variables. (line 129) +* BASH_VERSION: Bash Variables. (line 152) +* BASH_XTRACEFD: Bash Variables. (line 155) * bell-style: Readline Init File Syntax. (line 38) * bind-tty-special-chars: Readline Init File Syntax. @@ -10754,12 +10785,12 @@ D.3 Parameter and Variable Index (line 50) * CDPATH: Bourne Shell Variables. (line 9) -* CHILD_MAX: Bash Variables. (line 162) +* CHILD_MAX: Bash Variables. (line 166) * colored-completion-prefix: Readline Init File Syntax. (line 55) * colored-stats: Readline Init File Syntax. (line 62) -* COLUMNS: Bash Variables. (line 169) +* COLUMNS: Bash Variables. (line 173) * comment-begin: Readline Init File Syntax. (line 68) * completion-display-width: Readline Init File Syntax. @@ -10772,88 +10803,88 @@ D.3 Parameter and Variable Index (line 91) * completion-query-items: Readline Init File Syntax. (line 98) -* COMPREPLY: Bash Variables. (line 221) -* COMP_CWORD: Bash Variables. (line 175) -* COMP_KEY: Bash Variables. (line 204) -* COMP_LINE: Bash Variables. (line 181) -* COMP_POINT: Bash Variables. (line 186) -* COMP_TYPE: Bash Variables. (line 194) -* COMP_WORDBREAKS: Bash Variables. (line 208) -* COMP_WORDS: Bash Variables. (line 214) +* COMPREPLY: Bash Variables. (line 225) +* COMP_CWORD: Bash Variables. (line 179) +* COMP_KEY: Bash Variables. (line 208) +* COMP_LINE: Bash Variables. (line 185) +* COMP_POINT: Bash Variables. (line 190) +* COMP_TYPE: Bash Variables. (line 198) +* COMP_WORDBREAKS: Bash Variables. (line 212) +* COMP_WORDS: Bash Variables. (line 218) * convert-meta: Readline Init File Syntax. (line 108) -* COPROC: Bash Variables. (line 227) -* DIRSTACK: Bash Variables. (line 231) +* COPROC: Bash Variables. (line 231) +* DIRSTACK: Bash Variables. (line 235) * disable-completion: Readline Init File Syntax. (line 114) * echo-control-characters: Readline Init File Syntax. (line 135) * editing-mode: Readline Init File Syntax. (line 119) -* EMACS: Bash Variables. (line 241) +* EMACS: Bash Variables. (line 245) * emacs-mode-string: Readline Init File Syntax. (line 125) * enable-bracketed-paste: Readline Init File Syntax. (line 140) * enable-keypad: Readline Init File Syntax. (line 148) -* ENV: Bash Variables. (line 246) -* EUID: Bash Variables. (line 250) -* EXECIGNORE: Bash Variables. (line 254) +* ENV: Bash Variables. (line 250) +* EUID: Bash Variables. (line 254) +* EXECIGNORE: Bash Variables. (line 258) * expand-tilde: Readline Init File Syntax. (line 159) -* FCEDIT: Bash Variables. (line 264) -* FIGNORE: Bash Variables. (line 268) -* FUNCNAME: Bash Variables. (line 274) -* FUNCNEST: Bash Variables. (line 291) -* GLOBIGNORE: Bash Variables. (line 296) -* GROUPS: Bash Variables. (line 302) -* histchars: Bash Variables. (line 308) -* HISTCMD: Bash Variables. (line 323) -* HISTCONTROL: Bash Variables. (line 328) -* HISTFILE: Bash Variables. (line 344) -* HISTFILESIZE: Bash Variables. (line 348) -* HISTIGNORE: Bash Variables. (line 359) +* FCEDIT: Bash Variables. (line 269) +* FIGNORE: Bash Variables. (line 273) +* FUNCNAME: Bash Variables. (line 279) +* FUNCNEST: Bash Variables. (line 296) +* GLOBIGNORE: Bash Variables. (line 301) +* GROUPS: Bash Variables. (line 308) +* histchars: Bash Variables. (line 314) +* HISTCMD: Bash Variables. (line 329) +* HISTCONTROL: Bash Variables. (line 334) +* HISTFILE: Bash Variables. (line 350) +* HISTFILESIZE: Bash Variables. (line 354) +* HISTIGNORE: Bash Variables. (line 365) * history-preserve-point: Readline Init File Syntax. (line 163) * history-size: Readline Init File Syntax. (line 169) -* HISTSIZE: Bash Variables. (line 378) -* HISTTIMEFORMAT: Bash Variables. (line 385) +* HISTSIZE: Bash Variables. (line 385) +* HISTTIMEFORMAT: Bash Variables. (line 392) * HOME: Bourne Shell Variables. (line 13) * horizontal-scroll-mode: Readline Init File Syntax. (line 176) -* HOSTFILE: Bash Variables. (line 393) -* HOSTNAME: Bash Variables. (line 404) -* HOSTTYPE: Bash Variables. (line 407) +* HOSTFILE: Bash Variables. (line 400) +* HOSTNAME: Bash Variables. (line 411) +* HOSTTYPE: Bash Variables. (line 414) * IFS: Bourne Shell Variables. (line 18) -* IGNOREEOF: Bash Variables. (line 410) +* IGNOREEOF: Bash Variables. (line 417) * input-meta: Readline Init File Syntax. (line 183) -* INPUTRC: Bash Variables. (line 420) +* INPUTRC: Bash Variables. (line 427) * isearch-terminators: Readline Init File Syntax. (line 190) * keymap: Readline Init File Syntax. (line 197) -* LANG: Bash Variables. (line 424) -* LC_ALL: Bash Variables. (line 428) -* LC_COLLATE: Bash Variables. (line 432) -* LC_CTYPE: Bash Variables. (line 439) +* LANG: Bash Variables. (line 431) +* LC_ALL: Bash Variables. (line 435) +* LC_COLLATE: Bash Variables. (line 439) +* LC_CTYPE: Bash Variables. (line 446) * LC_MESSAGES: Locale Translation. (line 11) -* LC_MESSAGES <1>: Bash Variables. (line 444) -* LC_NUMERIC: Bash Variables. (line 448) -* LC_TIME: Bash Variables. (line 452) -* LINENO: Bash Variables. (line 456) -* LINES: Bash Variables. (line 460) -* MACHTYPE: Bash Variables. (line 466) +* LC_MESSAGES <1>: Bash Variables. (line 451) +* LC_NUMERIC: Bash Variables. (line 455) +* LC_TIME: Bash Variables. (line 459) +* LINENO: Bash Variables. (line 463) +* LINES: Bash Variables. (line 467) +* MACHTYPE: Bash Variables. (line 473) * MAIL: Bourne Shell Variables. (line 22) -* MAILCHECK: Bash Variables. (line 470) +* MAILCHECK: Bash Variables. (line 477) * MAILPATH: Bourne Shell Variables. (line 27) -* MAPFILE: Bash Variables. (line 478) +* MAPFILE: Bash Variables. (line 485) * mark-modified-lines: Readline Init File Syntax. (line 226) * mark-symlinked-directories: Readline Init File Syntax. @@ -10864,41 +10895,42 @@ D.3 Parameter and Variable Index (line 243) * meta-flag: Readline Init File Syntax. (line 183) -* OLDPWD: Bash Variables. (line 482) +* OLDPWD: Bash Variables. (line 489) * OPTARG: Bourne Shell Variables. (line 34) -* OPTERR: Bash Variables. (line 485) +* OPTERR: Bash Variables. (line 492) * OPTIND: Bourne Shell Variables. (line 38) -* OSTYPE: Bash Variables. (line 489) +* OSTYPE: Bash Variables. (line 496) * output-meta: Readline Init File Syntax. (line 248) * page-completions: Readline Init File Syntax. (line 253) * PATH: Bourne Shell Variables. (line 42) -* PIPESTATUS: Bash Variables. (line 492) -* POSIXLY_CORRECT: Bash Variables. (line 497) -* PPID: Bash Variables. (line 506) -* PROMPT_COMMAND: Bash Variables. (line 510) -* PROMPT_DIRTRIM: Bash Variables. (line 514) +* PIPESTATUS: Bash Variables. (line 499) +* POSIXLY_CORRECT: Bash Variables. (line 504) +* PPID: Bash Variables. (line 513) +* PROMPT_COMMAND: Bash Variables. (line 517) +* PROMPT_DIRTRIM: Bash Variables. (line 521) +* PS0: Bash Variables. (line 527) * PS1: Bourne Shell Variables. (line 48) * PS2: Bourne Shell Variables. (line 53) -* PS3: Bash Variables. (line 520) -* PS4: Bash Variables. (line 525) -* PWD: Bash Variables. (line 531) -* RANDOM: Bash Variables. (line 534) -* READLINE_LINE: Bash Variables. (line 539) -* READLINE_POINT: Bash Variables. (line 543) -* REPLY: Bash Variables. (line 547) +* PS3: Bash Variables. (line 532) +* PS4: Bash Variables. (line 537) +* PWD: Bash Variables. (line 543) +* RANDOM: Bash Variables. (line 546) +* READLINE_LINE: Bash Variables. (line 551) +* READLINE_POINT: Bash Variables. (line 555) +* REPLY: Bash Variables. (line 559) * revert-all-at-newline: Readline Init File Syntax. (line 263) -* SECONDS: Bash Variables. (line 550) -* SHELL: Bash Variables. (line 556) -* SHELLOPTS: Bash Variables. (line 561) -* SHLVL: Bash Variables. (line 570) +* SECONDS: Bash Variables. (line 562) +* SHELL: Bash Variables. (line 568) +* SHELLOPTS: Bash Variables. (line 573) +* SHLVL: Bash Variables. (line 582) * show-all-if-ambiguous: Readline Init File Syntax. (line 269) * show-all-if-unmodified: Readline Init File Syntax. @@ -10909,10 +10941,10 @@ D.3 Parameter and Variable Index (line 290) * TEXTDOMAIN: Locale Translation. (line 11) * TEXTDOMAINDIR: Locale Translation. (line 11) -* TIMEFORMAT: Bash Variables. (line 575) -* TMOUT: Bash Variables. (line 613) -* TMPDIR: Bash Variables. (line 625) -* UID: Bash Variables. (line 629) +* TIMEFORMAT: Bash Variables. (line 587) +* TMOUT: Bash Variables. (line 625) +* TMPDIR: Bash Variables. (line 637) +* UID: Bash Variables. (line 641) * vi-cmd-mode-string: Readline Init File Syntax. (line 303) * vi-ins-mode-string: Readline Init File Syntax. @@ -11280,134 +11312,134 @@ D.5 Concept Index  Tag Table: -Node: Top895 -Node: Introduction2813 -Node: What is Bash?3029 -Node: What is a shell?4143 -Node: Definitions6681 -Node: Basic Shell Features9619 -Node: Shell Syntax10838 -Node: Shell Operation11864 -Node: Quoting13157 -Node: Escape Character14457 -Node: Single Quotes14942 -Node: Double Quotes15290 -Node: ANSI-C Quoting16415 -Node: Locale Translation17668 -Node: Comments18564 -Node: Shell Commands19182 -Node: Simple Commands20054 -Node: Pipelines20685 -Node: Lists23428 -Node: Compound Commands25157 -Node: Looping Constructs26160 -Node: Conditional Constructs28623 -Node: Command Grouping39544 -Node: Coprocesses41023 -Node: GNU Parallel42855 -Node: Shell Functions46828 -Node: Shell Parameters52034 -Node: Positional Parameters56436 -Node: Special Parameters57336 -Node: Shell Expansions60673 -Node: Brace Expansion62610 -Node: Tilde Expansion65391 -Node: Shell Parameter Expansion67739 -Node: Command Substitution81871 -Node: Arithmetic Expansion83201 -Node: Process Substitution84133 -Node: Word Splitting85177 -Node: Filename Expansion86825 -Node: Pattern Matching89109 -Node: Quote Removal92807 -Node: Redirections93102 -Node: Executing Commands102325 -Node: Simple Command Expansion102995 -Node: Command Search and Execution104925 -Node: Command Execution Environment107261 -Node: Environment110245 -Node: Exit Status111904 -Node: Signals113574 -Node: Shell Scripts115541 -Node: Shell Builtin Commands118056 -Node: Bourne Shell Builtins120090 -Node: Bash Builtins140692 -Node: Modifying Shell Behavior169168 -Node: The Set Builtin169513 -Node: The Shopt Builtin179926 -Node: Special Builtins195122 -Node: Shell Variables196101 -Node: Bourne Shell Variables196538 -Node: Bash Variables198569 -Node: Bash Features226175 -Node: Invoking Bash227074 -Node: Bash Startup Files233023 -Node: Interactive Shells238126 -Node: What is an Interactive Shell?238536 -Node: Is this Shell Interactive?239185 -Node: Interactive Shell Behavior240000 -Node: Bash Conditional Expressions243299 -Node: Shell Arithmetic247300 -Node: Aliases250077 -Node: Arrays252625 -Node: The Directory Stack257709 -Node: Directory Stack Builtins258493 -Node: Controlling the Prompt261461 -Node: The Restricted Shell264207 -Node: Bash POSIX Mode266032 -Node: Job Control275687 -Node: Job Control Basics276147 -Node: Job Control Builtins280866 -Node: Job Control Variables285385 -Node: Command Line Editing286541 -Node: Introduction and Notation288212 -Node: Readline Interaction289835 -Node: Readline Bare Essentials291026 -Node: Readline Movement Commands292809 -Node: Readline Killing Commands293769 -Node: Readline Arguments295687 -Node: Searching296731 -Node: Readline Init File298917 -Node: Readline Init File Syntax300064 -Node: Conditional Init Constructs319789 -Node: Sample Init File322314 -Node: Bindable Readline Commands325431 -Node: Commands For Moving326635 -Node: Commands For History327778 -Node: Commands For Text332067 -Node: Commands For Killing335456 -Node: Numeric Arguments337937 -Node: Commands For Completion339076 -Node: Keyboard Macros343267 -Node: Miscellaneous Commands343954 -Node: Readline vi Mode349758 -Node: Programmable Completion350665 -Node: Programmable Completion Builtins358126 -Node: A Programmable Completion Example368012 -Node: Using History Interactively373264 -Node: Bash History Facilities373948 -Node: Bash History Builtins376947 -Node: History Interaction380944 -Node: Event Designators383908 -Node: Word Designators385127 -Node: Modifiers386764 -Node: Installing Bash388166 -Node: Basic Installation389303 -Node: Compilers and Options391994 -Node: Compiling For Multiple Architectures392735 -Node: Installation Names394398 -Node: Specifying the System Type395216 -Node: Sharing Defaults395932 -Node: Operation Controls396605 -Node: Optional Features397563 -Node: Reporting Bugs407820 -Node: Major Differences From The Bourne Shell409014 -Node: GNU Free Documentation License425866 -Node: Indexes451043 -Node: Builtin Index451497 -Node: Reserved Word Index458324 -Node: Variable Index460772 -Node: Function Index476158 -Node: Concept Index489378 +Node: Top897 +Node: Introduction2817 +Node: What is Bash?3033 +Node: What is a shell?4147 +Node: Definitions6685 +Node: Basic Shell Features9623 +Node: Shell Syntax10842 +Node: Shell Operation11868 +Node: Quoting13161 +Node: Escape Character14461 +Node: Single Quotes14946 +Node: Double Quotes15294 +Node: ANSI-C Quoting16572 +Node: Locale Translation17825 +Node: Comments18721 +Node: Shell Commands19339 +Node: Simple Commands20211 +Node: Pipelines20842 +Node: Lists23585 +Node: Compound Commands25314 +Node: Looping Constructs26317 +Node: Conditional Constructs28780 +Node: Command Grouping39701 +Node: Coprocesses41180 +Node: GNU Parallel43012 +Node: Shell Functions46985 +Node: Shell Parameters52191 +Node: Positional Parameters56593 +Node: Special Parameters57493 +Node: Shell Expansions60830 +Node: Brace Expansion62767 +Node: Tilde Expansion65548 +Node: Shell Parameter Expansion67896 +Node: Command Substitution82028 +Node: Arithmetic Expansion83383 +Node: Process Substitution84315 +Node: Word Splitting85435 +Node: Filename Expansion87095 +Node: Pattern Matching89379 +Node: Quote Removal93077 +Node: Redirections93372 +Node: Executing Commands102621 +Node: Simple Command Expansion103291 +Node: Command Search and Execution105221 +Node: Command Execution Environment107557 +Node: Environment110541 +Node: Exit Status112200 +Node: Signals113870 +Node: Shell Scripts115837 +Node: Shell Builtin Commands118352 +Node: Bourne Shell Builtins120386 +Node: Bash Builtins140988 +Node: Modifying Shell Behavior169464 +Node: The Set Builtin169809 +Node: The Shopt Builtin180222 +Node: Special Builtins195842 +Node: Shell Variables196821 +Node: Bourne Shell Variables197258 +Node: Bash Variables199289 +Node: Bash Features227553 +Node: Invoking Bash228452 +Node: Bash Startup Files234401 +Node: Interactive Shells239504 +Node: What is an Interactive Shell?239914 +Node: Is this Shell Interactive?240563 +Node: Interactive Shell Behavior241378 +Node: Bash Conditional Expressions244753 +Node: Shell Arithmetic248754 +Node: Aliases251531 +Node: Arrays254079 +Node: The Directory Stack259163 +Node: Directory Stack Builtins259947 +Node: Controlling the Prompt262915 +Node: The Restricted Shell265661 +Node: Bash POSIX Mode267486 +Node: Job Control277398 +Node: Job Control Basics277858 +Node: Job Control Builtins282577 +Node: Job Control Variables287107 +Node: Command Line Editing288263 +Node: Introduction and Notation289934 +Node: Readline Interaction291557 +Node: Readline Bare Essentials292748 +Node: Readline Movement Commands294531 +Node: Readline Killing Commands295491 +Node: Readline Arguments297409 +Node: Searching298453 +Node: Readline Init File300639 +Node: Readline Init File Syntax301786 +Node: Conditional Init Constructs321511 +Node: Sample Init File324036 +Node: Bindable Readline Commands327153 +Node: Commands For Moving328357 +Node: Commands For History329500 +Node: Commands For Text333789 +Node: Commands For Killing337178 +Node: Numeric Arguments339659 +Node: Commands For Completion340798 +Node: Keyboard Macros344989 +Node: Miscellaneous Commands345676 +Node: Readline vi Mode351480 +Node: Programmable Completion352387 +Node: Programmable Completion Builtins359848 +Node: A Programmable Completion Example369734 +Node: Using History Interactively374986 +Node: Bash History Facilities375670 +Node: Bash History Builtins378669 +Node: History Interaction382666 +Node: Event Designators385630 +Node: Word Designators386849 +Node: Modifiers388486 +Node: Installing Bash389888 +Node: Basic Installation391025 +Node: Compilers and Options393716 +Node: Compiling For Multiple Architectures394457 +Node: Installation Names396120 +Node: Specifying the System Type396938 +Node: Sharing Defaults397654 +Node: Operation Controls398327 +Node: Optional Features399285 +Node: Reporting Bugs409542 +Node: Major Differences From The Bourne Shell410736 +Node: GNU Free Documentation License427588 +Node: Indexes452765 +Node: Builtin Index453219 +Node: Reserved Word Index460046 +Node: Variable Index462494 +Node: Function Index477953 +Node: Concept Index491173  End Tag Table diff --git a/doc/bashref.log b/doc/bashref.log index 8463ab94..61fa8ea1 100644 --- a/doc/bashref.log +++ b/doc/bashref.log @@ -1,10 +1,12 @@ -This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015/MacPorts 2015_3) (preloaded format=pdftex 2015.7.15) 15 OCT 2015 10:11 +This is pdfTeX, Version 3.14159265-2.6-1.40.16 (TeX Live 2015/MacPorts 2015_7) (preloaded format=etex 2015.7.15) 3 DEC 2015 13:54 entering extended mode restricted \write18 enabled. + file:line:error style messages enabled. %&-line parsing enabled. -**/usr/homes/chet/src/bash/src/doc/bashref.texi -(/usr/homes/chet/src/bash/src/doc/bashref.texi (./texinfo.tex -Loading texinfo [version 2013-09-11.11]: +**\input /usr/homes/chet/src/bash/src/doc/bashref.texi +(/usr/homes/chet/src/bash/src/doc/bashref.texi +(/opt/local/share/texmf/tex/texinfo/texinfo.tex +Loading texinfo [version 2015-06-24.23]: \bindingoffset=\dimen16 \normaloffset=\dimen17 \pagewidth=\dimen18 @@ -179,14 +181,12 @@ texinfo.tex: doing @include of version.texi \openout9 = `bashref.rw'. -{/opt/local/var/db/texmf/fonts/map/pdftex/updmap/pdftex.map}] [2] (./bashref.to -c [-1] [-2] [-3]) [-4] (./bashref.toc) -(./bashref.toc) Chapter 1 +] [2] (./bashref.toc [-1] [-2] [-3]) +[-4] Chapter 1 \openout0 = `bashref.toc'. - Chapter 2 [1] [2] [3] Chapter 3 [4] [5] [6] [7] -[8] [9] [10] -Overfull \hbox (38.26587pt too wide) in paragraph at lines 868--868 + Chapter 2 [1] [2] [3] Chapter 3 [4] [5] [6] [7] [8] [9] [10] +Overfull \hbox (38.26587pt too wide) in paragraph at lines 872--872 []@texttt case @textttsl word @texttt in [ [(] @textttsl pat-tern @texttt [| @ textttsl pattern@texttt ][]) @textttsl command-list @texttt ;;][] esac[] @@ -199,7 +199,7 @@ textttsl pattern@texttt ][]) @textttsl command-list @texttt ;;][] esac[] .etc. [11] [12] [13] [14] [15] -Overfull \hbox (89.6747pt too wide) in paragraph at lines 1270--1270 +Overfull \hbox (89.6747pt too wide) in paragraph at lines 1274--1274 []@texttt cat list | parallel "do-something1 {} config-{} ; do-something2 < {} " | process-output[] @@ -212,7 +212,7 @@ Overfull \hbox (89.6747pt too wide) in paragraph at lines 1270--1270 .etc. -Overfull \hbox (89.6747pt too wide) in paragraph at lines 1293--1293 +Overfull \hbox (89.6747pt too wide) in paragraph at lines 1297--1297 []@texttt { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | p arallel traceroute[] @@ -225,7 +225,7 @@ arallel traceroute[] .etc. -Overfull \hbox (106.92076pt too wide) in paragraph at lines 1299--1299 +Overfull \hbox (106.92076pt too wide) in paragraph at lines 1303--1303 []@texttt { echo foss.org.my ; echo debian.org; echo freenetproject.org; } | p arallel -k traceroute[] @@ -240,7 +240,7 @@ arallel -k traceroute[] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] Chapter 4 [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] -Overfull \hbox (26.76846pt too wide) in paragraph at lines 4244--4244 +Overfull \hbox (26.76846pt too wide) in paragraph at lines 4254--4254 []@texttt mapfile [-d @textttsl de-lim@texttt ] [-n @textttsl count@texttt ] [ -O @textttsl ori-gin@texttt ] [-s @textttsl count@texttt ] [-t] [-u @textttsl f d@texttt ][] @@ -254,7 +254,7 @@ d@texttt ][] .etc. [54] [55] -Overfull \hbox (38.26584pt too wide) in paragraph at lines 4444--4444 +Overfull \hbox (38.26584pt too wide) in paragraph at lines 4454--4454 []@texttt readarray [-d @textttsl de-lim@texttt ] [-n @textttsl count@texttt ] [-O @textttsl ori-gin@texttt ] [-s @textttsl count@texttt ] [-t] [-u @textttsl fd@texttt ][] @@ -269,7 +269,7 @@ Overfull \hbox (38.26584pt too wide) in paragraph at lines 4444--4444 [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] Chapter 5 [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] Chapter 6 [80] -Overfull \hbox (49.43388pt too wide) in paragraph at lines 6124--6124 +Overfull \hbox (49.43388pt too wide) in paragraph at lines 6160--6160 []@texttt bash [long-opt] [-ir] [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@t exttt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar- @@ -282,7 +282,7 @@ exttt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar- .etc. -Overfull \hbox (72.42863pt too wide) in paragraph at lines 6125--6125 +Overfull \hbox (72.42863pt too wide) in paragraph at lines 6161--6161 []@texttt bash [long-opt] [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@texttt ] [-O @textttsl shopt_option@texttt ] -c @textttsl string @texttt [@textttsl ar - @@ -296,7 +296,7 @@ Overfull \hbox (72.42863pt too wide) in paragraph at lines 6125--6125 .etc. -Overfull \hbox (32.18782pt too wide) in paragraph at lines 6126--6126 +Overfull \hbox (32.18782pt too wide) in paragraph at lines 6162--6162 []@texttt bash [long-opt] -s [-abefhkmnptuvxdBCDHP] [-o @textttsl op-tion@text tt ] [-O @textttsl shopt_option@texttt ] [@textttsl ar- @@ -379,8 +379,8 @@ texinfo.tex: doing @include of fdl.texi (./fdl.texi [155] [156] [157] [158] [159] [160] [161]) Appendix D [162] (./bashref.bts) [163] (./bashref.rws) (./bashref.vrs [164] [165]) (./bashref.fns -Overfull \vbox (14.52478pt too high) has occurred while \output is active -\vbox(35.44023+2.0)x207.80492 +Overfull \vbox (17.77478pt too high) has occurred while \output is active +\vbox(32.19023+2.0)x207.80492 .\glue(\topskip) 26.12001 .\hbox(9.87999+0.0)x207.80492, glue set 195.57158fil ..\secrm A @@ -391,8 +391,8 @@ Overfull \vbox (14.52478pt too high) has occurred while \output is active .etc. -Overfull \vbox (0.55977pt too high) has occurred while \output is active -\vbox(35.44023+2.0)x207.80492 +Overfull \vbox (3.80977pt too high) has occurred while \output is active +\vbox(32.19023+2.0)x207.80492 .\glue(\splittopskip) 29.75 .\hbox(6.25+2.0)x207.80492, glue set 40.04836fill ..\smalltt a @@ -401,41 +401,16 @@ Overfull \vbox (0.55977pt too high) has occurred while \output is active ..\smalltt e ..\smalltt p ..etc. -.\mark{\gdef \thischaptername {Indexes}\gdef \thischapternum {D}\gdef \thischap -ter \ETC.} -.\mark{\gdef \thischaptername {Indexes}\gdef \thischapternum {D}\gdef \thischap -ter \ETC.} [166] [167]) (./bashref.cps [168] [169]) [170] ) Here is how much of TeX's memory you used: - 2747 strings out of 497110 - 37302 string characters out of 6206875 - 156623 words of memory out of 5000000 - 3523 multiletter control sequences out of 15000+600000 + 3039 strings out of 497120 + 36111 string characters out of 6207257 + 88244 words of memory out of 5000000 + 4187 multiletter control sequences out of 15000+600000 32896 words of font info for 113 fonts, out of 8000000 for 9000 51 hyphenation exceptions out of 8191 - 16i,6n,16p,319b,967s stack positions out of 5000i,500n,10000p,200000b,80000s -{/opt/local/share/texmf-texlive -/fonts/enc/dvips/cm-super/cm-super-t1.enc}< -/opt/local/share/texmf-texlive/fonts/type1/public/amsfonts/cm/cmsltt10.pfb> -Output written on bashref.pdf (176 pages, 730163 bytes). -PDF statistics: - 2560 PDF objects out of 2984 (max. 8388607) - 2340 compressed objects within 24 object streams - 302 named destinations out of 1000 (max. 500000) - 1125 words of extra memory for PDF output out of 10000 (max. 10000000) + 16i,6n,16p,326b,871s stack positions out of 5000i,500n,10000p,200000b,80000s +Output written on bashref.dvi (176 pages, 739900 bytes). diff --git a/doc/bashref.ps b/doc/bashref.ps index 5cdd4052..80d420a4 100644 --- a/doc/bashref.ps +++ b/doc/bashref.ps @@ -1,7 +1,7 @@ %!PS-Adobe-2.0 %%Creator: dvips(k) 5.995 Copyright 2015 Radical Eye Software %%Title: bashref.dvi -%%CreationDate: Thu Oct 15 10:10:55 2015 +%%CreationDate: Thu Dec 3 13:58:26 2015 %%Pages: 176 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 @@ -12,7 +12,7 @@ %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -D 600 -t letter -o bashref.ps bashref.dvi %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2015.10.15:1010 +%DVIPSSource: TeX output 2015.12.03:1354 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -7514,22 +7514,22 @@ ifelse TeXDict begin 1 0 bop 150 1318 a Fv(Bash)64 b(Reference)j(Man)-5 b(ual)p 150 1385 3600 34 v 2361 1481 a Fu(Reference)31 b(Do)s(cumen)m(tation)i(for)d(Bash)2428 1589 y(Edition)h(4.4,)g(for)f -Ft(Bash)g Fu(V)-8 b(ersion)31 b(4.4.)3217 1697 y(Octob)s(er)f(2015)150 -4935 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 b(estern)46 -b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 y(Brian)f(F)-11 -b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 +Ft(Bash)g Fu(V)-8 b(ersion)31 b(4.4.)3139 1697 y(No)m(v)m(em)m(b)s(er)g +(2015)150 4927 y Fs(Chet)45 b(Ramey)-11 b(,)46 b(Case)g(W)-11 +b(estern)46 b(Reserv)l(e)g(Univ)l(ersit)l(y)150 5068 +y(Brian)f(F)-11 b(o)l(x,)45 b(F)-11 b(ree)45 b(Soft)l(w)l(are)h(F)-11 b(oundation)p 150 5141 3600 17 v eop end %%Page: 2 2 TeXDict begin 2 1 bop 150 4279 a Fu(This)35 b(text)h(is)g(a)g(brief)f (description)h(of)f(the)h(features)g(that)g(are)g(presen)m(t)g(in)f -(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(4.4,)c(13)f(Octob)s(er)f -(2015\).)150 4523 y(This)35 b(is)g(Edition)h(4.4,)i(last)f(up)s(dated)d -(13)i(Octob)s(er)g(2015,)j(of)c Fr(The)h(GNU)g(Bash)f(Reference)i(Man)m -(ual)p Fu(,)150 4633 y(for)30 b Ft(Bash)p Fu(,)g(V)-8 -b(ersion)31 b(4.4.)150 4767 y(Cop)m(yrigh)m(t)602 4764 -y(c)577 4767 y Fq(\015)f Fu(1988{2014)35 b(F)-8 b(ree)31 -b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 4902 -y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 +(the)h(Bash)f(shell)h(\(v)m(ersion)150 4389 y(4.4,)c(16)f(No)m(v)m(em)m +(b)s(er)g(2015\).)150 4523 y(This)e(is)i(Edition)f(4.4,)h(last)g(up)s +(dated)e(16)i(No)m(v)m(em)m(b)s(er)h(2015,)g(of)e Fr(The)g(GNU)h(Bash)f +(Reference)h(Man)m(ual)p Fu(,)150 4633 y(for)f Ft(Bash)p +Fu(,)g(V)-8 b(ersion)31 b(4.4.)150 4767 y(Cop)m(yrigh)m(t)602 +4764 y(c)577 4767 y Fq(\015)f Fu(1988{2015)35 b(F)-8 +b(ree)31 b(Soft)m(w)m(are)h(F)-8 b(oundation,)31 b(Inc.)390 +4902 y(P)m(ermission)21 b(is)f(gran)m(ted)h(to)g(cop)m(y)-8 b(,)24 b(distribute)c(and/or)h(mo)s(dify)e(this)i(do)s(cumen)m(t)f (under)f(the)390 5011 y(terms)25 b(of)h(the)f(GNU)h(F)-8 b(ree)27 b(Do)s(cumen)m(tation)g(License,)g(V)-8 b(ersion)26 @@ -7543,139 +7543,139 @@ b(exts.)41 b(A)29 b(cop)m(y)h(of)f(the)g(license)h(is)f(included)390 b(ree)32 b(Do)s(cumen)m(tation)g(License".)p eop end %%Page: -1 3 TeXDict begin -1 2 bop 3725 -116 a Fu(i)150 299 y Fp(T)-13 -b(able)53 b(of)h(Con)l(ten)l(ts)150 641 y Fs(1)135 b(In)l(tro)t +b(able)53 b(of)h(Con)l(ten)l(ts)150 649 y Fs(1)135 b(In)l(tro)t (duction)13 b Fo(:)19 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)h(:)57 b Fs(1)275 778 y Fu(1.1)92 +g(:)h(:)f(:)h(:)f(:)h(:)57 b Fs(1)275 786 y Fu(1.1)92 b(What)31 b(is)f(Bash?)22 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)52 b Fu(1)275 888 y(1.2)92 b(What)31 +(:)f(:)g(:)h(:)f(:)52 b Fu(1)275 896 y(1.2)92 b(What)31 b(is)f(a)h(shell?)13 b Fn(:)j(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)44 b Fu(1)150 1130 y Fs(2)135 b(De\014nitions)13 +(:)g(:)44 b Fu(1)150 1147 y Fs(2)135 b(De\014nitions)13 b Fo(:)20 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)h(:)f(:)h(:)f(:)57 b Fs(3)150 1400 y(3)135 b(Basic)45 +f(:)h(:)f(:)h(:)f(:)57 b Fs(3)150 1425 y(3)135 b(Basic)45 b(Shell)g(F)-11 b(eatures)27 b Fo(:)21 b(:)e(:)g(:)h(:)f(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h -(:)f(:)72 b Fs(5)275 1537 y Fu(3.1)92 b(Shell)30 b(Syn)m(tax)25 +(:)f(:)72 b Fs(5)275 1562 y Fu(3.1)92 b(Shell)30 b(Syn)m(tax)25 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)55 -b Fu(5)399 1646 y(3.1.1)93 b(Shell)30 b(Op)s(eration)c +b Fu(5)399 1671 y(3.1.1)93 b(Shell)30 b(Op)s(eration)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)56 b Fu(5)399 1756 +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)56 b Fu(5)399 1781 y(3.1.2)93 b(Quoting)15 b Fn(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)45 b Fu(6)524 1866 y(3.1.2.1)93 b(Escap)s(e)30 +g(:)h(:)f(:)h(:)f(:)45 b Fu(6)524 1890 y(3.1.2.1)93 b(Escap)s(e)30 b(Character)11 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(6)524 1975 y(3.1.2.2)93 +h(:)f(:)g(:)h(:)f(:)h(:)f(:)41 b Fu(6)524 2000 y(3.1.2.2)93 b(Single)31 b(Quotes)d Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)58 b Fu(6)524 -2085 y(3.1.2.3)93 b(Double)31 b(Quotes)26 b Fn(:)16 b(:)f(:)h(:)f(:)g +2110 y(3.1.2.3)93 b(Double)31 b(Quotes)26 b Fn(:)16 b(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)56 -b Fu(6)524 2194 y(3.1.2.4)93 b(ANSI-C)30 b(Quoting)d +b Fu(6)524 2219 y(3.1.2.4)93 b(ANSI-C)30 b(Quoting)d Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)57 b Fu(6)524 2304 y(3.1.2.5)93 b(Lo)s(cale-Sp)s(eci\014c) +f(:)g(:)h(:)57 b Fu(6)524 2329 y(3.1.2.5)93 b(Lo)s(cale-Sp)s(eci\014c) 32 b(T)-8 b(ranslation)8 b Fn(:)16 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h -(:)38 b Fu(7)399 2413 y(3.1.3)93 b(Commen)m(ts)26 b Fn(:)15 +(:)38 b Fu(7)399 2438 y(3.1.3)93 b(Commen)m(ts)26 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)56 b -Fu(7)275 2523 y(3.2)92 b(Shell)30 b(Commands)21 b Fn(:)14 +Fu(7)275 2548 y(3.2)92 b(Shell)30 b(Commands)21 b Fn(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)51 b Fu(8)399 -2633 y(3.2.1)93 b(Simple)30 b(Commands)c Fn(:)15 b(:)h(:)f(:)h(:)f(:)g +2658 y(3.2.1)93 b(Simple)30 b(Commands)c Fn(:)15 b(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)57 -b Fu(8)399 2742 y(3.2.2)93 b(Pip)s(elines)18 b Fn(:)d(:)g(:)h(:)f(:)g +b Fu(8)399 2767 y(3.2.2)93 b(Pip)s(elines)18 b Fn(:)d(:)g(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)48 b Fu(8)399 -2852 y(3.2.3)93 b(Lists)30 b(of)h(Commands)15 b Fn(:)f(:)h(:)h(:)f(:)g +2877 y(3.2.3)93 b(Lists)30 b(of)h(Commands)15 b Fn(:)f(:)h(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)45 -b Fu(9)399 2961 y(3.2.4)93 b(Comp)s(ound)28 b(Commands)22 +b Fu(9)399 2986 y(3.2.4)93 b(Comp)s(ound)28 b(Commands)22 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)54 b Fu(9)524 3071 y(3.2.4.1)93 b(Lo)s(oping)30 +f(:)g(:)54 b Fu(9)524 3096 y(3.2.4.1)93 b(Lo)s(oping)30 b(Constructs)8 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)h(:)f(:)g(:)38 b Fu(10)524 3181 y(3.2.4.2)93 b(Conditional)31 +f(:)h(:)f(:)g(:)38 b Fu(10)524 3205 y(3.2.4.2)93 b(Conditional)31 b(Constructs)18 b Fn(:)d(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)47 -b Fu(10)524 3290 y(3.2.4.3)93 b(Grouping)30 b(Commands)15 +b Fu(10)524 3315 y(3.2.4.3)93 b(Grouping)30 b(Commands)15 b Fn(:)f(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)45 -b Fu(14)399 3400 y(3.2.5)93 b(Copro)s(cesses)18 b Fn(:)d(:)g(:)h(:)f(:) +b Fu(14)399 3425 y(3.2.5)93 b(Copro)s(cesses)18 b Fn(:)d(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)47 b Fu(15)399 3509 y(3.2.6)93 +h(:)f(:)g(:)h(:)f(:)h(:)47 b Fu(15)399 3534 y(3.2.6)93 b(GNU)31 b(P)m(arallel)c Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)55 -b Fu(15)275 3619 y(3.3)92 b(Shell)30 b(F)-8 b(unctions)29 +b Fu(15)275 3644 y(3.3)92 b(Shell)30 b(F)-8 b(unctions)29 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)58 -b Fu(17)275 3729 y(3.4)92 b(Shell)30 b(P)m(arameters)17 +b Fu(17)275 3753 y(3.4)92 b(Shell)30 b(P)m(arameters)17 b Fn(:)f(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)46 b Fu(18)399 -3838 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)20 +3863 y(3.4.1)93 b(P)m(ositional)32 b(P)m(arameters)20 b Fn(:)d(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)50 b Fu(20)399 3948 y(3.4.2)93 b(Sp)s(ecial)30 +(:)f(:)50 b Fu(20)399 3973 y(3.4.2)93 b(Sp)s(ecial)30 b(P)m(arameters)16 b Fn(:)h(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)46 b Fu(20)275 4057 +f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)46 b Fu(20)275 4082 y(3.5)92 b(Shell)30 b(Expansions)17 b Fn(:)d(:)h(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)46 b Fu(21)399 4167 y(3.5.1)93 b(Brace)31 +f(:)g(:)h(:)46 b Fu(21)399 4192 y(3.5.1)93 b(Brace)31 b(Expansion)21 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)50 b Fu(21)399 -4276 y(3.5.2)93 b(Tilde)30 b(Expansion)10 b Fn(:)15 b(:)h(:)f(:)g(:)h +4301 y(3.5.2)93 b(Tilde)30 b(Expansion)10 b Fn(:)15 b(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)40 b Fu(22)399 4386 y(3.5.3)93 b(Shell)30 b(P)m(arameter)i +(:)f(:)40 b Fu(22)399 4411 y(3.5.3)93 b(Shell)30 b(P)m(arameter)i (Expansion)18 b Fn(:)d(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) -48 b Fu(23)399 4496 y(3.5.4)93 b(Command)29 b(Substitution)12 +48 b Fu(23)399 4521 y(3.5.4)93 b(Command)29 b(Substitution)12 b Fn(:)j(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)42 b Fu(29)399 4605 y(3.5.5)93 b(Arithmetic)31 b(Expansion)19 +(:)42 b Fu(29)399 4630 y(3.5.5)93 b(Arithmetic)31 b(Expansion)19 b Fn(:)c(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)48 b Fu(29)399 4715 y(3.5.6)93 b(Pro)s(cess)30 +(:)h(:)48 b Fu(29)399 4740 y(3.5.6)93 b(Pro)s(cess)30 b(Substitution)d Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)57 b Fu(30)399 4824 y(3.5.7)93 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)57 b Fu(30)399 4849 y(3.5.7)93 b(W)-8 b(ord)31 b(Splitting)20 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)49 -b Fu(30)399 4934 y(3.5.8)93 b(Filename)32 b(Expansion)13 +b Fu(30)399 4959 y(3.5.8)93 b(Filename)32 b(Expansion)13 b Fn(:)i(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h -(:)f(:)h(:)f(:)43 b Fu(30)524 5044 y(3.5.8.1)93 b(P)m(attern)31 +(:)f(:)h(:)f(:)43 b Fu(30)524 5068 y(3.5.8.1)93 b(P)m(attern)31 b(Matc)m(hing)d Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)56 b Fu(31)399 5153 y(3.5.9)93 b(Quote)31 +h(:)f(:)g(:)h(:)f(:)56 b Fu(31)399 5178 y(3.5.9)93 b(Quote)31 b(Remo)m(v)-5 b(al)9 b Fn(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)39 -b Fu(32)275 5263 y(3.6)92 b(Redirections)26 b Fn(:)15 +b Fu(32)275 5288 y(3.6)92 b(Redirections)26 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)55 @@ -7736,95 +7736,95 @@ h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h y(3.8)92 b(Shell)30 b(Scripts)23 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)53 b Fu(40)150 2188 y Fs(4)135 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)53 b Fu(40)150 2197 y Fs(4)135 b(Shell)45 b(Builtin)g(Commands)22 b Fo(:)e(:)g(:)f(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)67 -b Fs(41)275 2325 y Fu(4.1)92 b(Bourne)30 b(Shell)g(Builtins)e +b Fs(41)275 2334 y Fu(4.1)92 b(Bourne)30 b(Shell)g(Builtins)e Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)57 b Fu(41)275 2435 y(4.2)92 +h(:)f(:)g(:)h(:)f(:)h(:)f(:)57 b Fu(41)275 2443 y(4.2)92 b(Bash)30 b(Builtin)h(Commands)24 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)54 -b Fu(48)275 2545 y(4.3)92 b(Mo)s(difying)30 b(Shell)g(Beha)m(vior)9 +b Fu(48)275 2553 y(4.3)92 b(Mo)s(difying)30 b(Shell)g(Beha)m(vior)9 b Fn(:)17 b(:)f(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)39 b Fu(59)399 2654 y(4.3.1)93 b(The)30 +h(:)f(:)h(:)f(:)39 b Fu(59)399 2663 y(4.3.1)93 b(The)30 b(Set)g(Builtin)c Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)55 b -Fu(59)399 2764 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)13 +Fu(59)399 2772 y(4.3.2)93 b(The)30 b(Shopt)f(Builtin)13 b Fn(:)j(:)g(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)43 b Fu(63)275 2873 y(4.4)92 b(Sp)s(ecial)30 +(:)h(:)f(:)h(:)f(:)g(:)43 b Fu(63)275 2882 y(4.4)92 b(Sp)s(ecial)30 b(Builtins)21 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)50 -b Fu(68)150 3116 y Fs(5)135 b(Shell)45 b(V)-11 b(ariables)19 +b Fu(69)150 3132 y Fs(5)135 b(Shell)45 b(V)-11 b(ariables)19 b Fo(:)h(:)g(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)64 -b Fs(70)275 3253 y Fu(5.1)92 b(Bourne)30 b(Shell)g(V)-8 +b Fs(70)275 3269 y Fu(5.1)92 b(Bourne)30 b(Shell)g(V)-8 b(ariables)22 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)51 b Fu(70)275 -3362 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)16 b Fn(:)h(:)f(:)f(:)h(:)f +3379 y(5.2)92 b(Bash)30 b(V)-8 b(ariables)16 b Fn(:)h(:)f(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)46 b Fu(70)150 3605 y +(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)46 b Fu(70)150 3630 y Fs(6)135 b(Bash)44 b(F)-11 b(eatures)13 b Fo(:)20 b(:)g(:)f(:)g(:)h(:)f (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)58 b Fs(81)275 -3742 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)d Fn(:)16 +3767 y Fu(6.1)92 b(In)m(v)m(oking)31 b(Bash)d Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)58 b -Fu(81)275 3851 y(6.2)92 b(Bash)30 b(Startup)g(Files)20 +Fu(81)275 3876 y(6.2)92 b(Bash)30 b(Startup)g(Files)20 b Fn(:)c(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)49 b Fu(83)275 -3961 y(6.3)92 b(In)m(teractiv)m(e)32 b(Shells)11 b Fn(:)16 +3986 y(6.3)92 b(In)m(teractiv)m(e)32 b(Shells)11 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)41 b Fu(84)399 -4071 y(6.3.1)93 b(What)31 b(is)f(an)h(In)m(teractiv)m(e)h(Shell?)17 +4095 y(6.3.1)93 b(What)31 b(is)f(an)h(In)m(teractiv)m(e)h(Shell?)17 b Fn(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)47 b -Fu(85)399 4180 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m(e?) +Fu(85)399 4205 y(6.3.2)93 b(Is)30 b(this)g(Shell)g(In)m(teractiv)m(e?) 14 b Fn(:)k(:)e(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -44 b Fu(85)399 4290 y(6.3.3)93 b(In)m(teractiv)m(e)33 +44 b Fu(85)399 4315 y(6.3.3)93 b(In)m(teractiv)m(e)33 b(Shell)d(Beha)m(vior)23 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)52 b Fu(85)275 4399 y(6.4)92 b(Bash)30 +(:)g(:)h(:)f(:)h(:)52 b Fu(85)275 4424 y(6.4)92 b(Bash)30 b(Conditional)h(Expressions)22 b Fn(:)14 b(:)i(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)51 b Fu(86)275 4509 y(6.5)92 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)51 b Fu(86)275 4534 y(6.5)92 b(Shell)30 b(Arithmetic)c Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)55 b Fu(88)275 4619 y(6.6)92 b(Aliases)12 b Fn(:)k(:)g(:)f(:)h(:)f +(:)55 b Fu(88)275 4643 y(6.6)92 b(Aliases)12 b Fn(:)k(:)g(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)42 -b Fu(89)275 4728 y(6.7)92 b(Arra)m(ys)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)g +b Fu(89)275 4753 y(6.7)92 b(Arra)m(ys)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)47 -b Fu(90)275 4838 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)e +b Fu(90)275 4863 y(6.8)92 b(The)29 b(Directory)j(Stac)m(k)e Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)58 b Fu(91)399 4947 y(6.8.1)93 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)58 b Fu(91)399 4972 y(6.8.1)93 b(Directory)32 b(Stac)m(k)f(Builtins)14 b Fn(:)i(:)g(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)44 b Fu(92)275 -5057 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)24 b +5082 y(6.9)92 b(Con)m(trolling)31 b(the)g(Prompt)24 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)54 b Fu(93)275 5166 y(6.10)92 b(The)30 +g(:)h(:)f(:)h(:)f(:)54 b Fu(93)275 5191 y(6.10)92 b(The)30 b(Restricted)h(Shell)23 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)53 -b Fu(94)275 5276 y(6.11)92 b(Bash)31 b(POSIX)e(Mo)s(de)9 +b Fu(94)275 5301 y(6.11)92 b(Bash)31 b(POSIX)e(Mo)s(de)9 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)38 b Fu(95)p eop @@ -7844,169 +7844,169 @@ h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h 439 y(7.3)92 b(Job)30 b(Con)m(trol)h(V)-8 b(ariables)17 b Fn(:)f(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)47 b Fu(102)150 657 y Fs(8)135 +(:)h(:)f(:)h(:)f(:)g(:)47 b Fu(102)150 690 y Fs(8)135 b(Command)45 b(Line)g(Editing)19 b Fo(:)i(:)e(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)63 -b Fs(103)275 794 y Fu(8.1)92 b(In)m(tro)s(duction)30 +b Fs(103)275 827 y Fu(8.1)92 b(In)m(tro)s(duction)30 b(to)h(Line)f(Editing)24 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f -(:)g(:)h(:)f(:)h(:)f(:)54 b Fu(103)275 904 y(8.2)92 b(Readline)31 +(:)g(:)h(:)f(:)h(:)f(:)54 b Fu(103)275 936 y(8.2)92 b(Readline)31 b(In)m(teraction)c Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)56 b Fu(103)399 -1013 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)26 +1046 y(8.2.1)93 b(Readline)31 b(Bare)g(Essen)m(tials)26 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)55 -b Fu(104)399 1123 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i +b Fu(104)399 1156 y(8.2.2)93 b(Readline)31 b(Mo)m(v)m(emen)m(t)i (Commands)24 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)55 b -Fu(104)399 1233 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)16 +Fu(104)399 1265 y(8.2.3)93 b(Readline)31 b(Killing)g(Commands)16 b Fn(:)f(:)g(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)46 b -Fu(105)399 1342 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)9 +Fu(105)399 1375 y(8.2.4)93 b(Readline)31 b(Argumen)m(ts)9 b Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)39 b Fu(105)399 1452 y(8.2.5)93 b(Searc)m(hing)31 +g(:)h(:)f(:)39 b Fu(105)399 1484 y(8.2.5)93 b(Searc)m(hing)31 b(for)f(Commands)f(in)h(the)h(History)c Fn(:)15 b(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)57 b Fu(105)275 -1561 y(8.3)92 b(Readline)31 b(Init)f(File)20 b Fn(:)d(:)e(:)h(:)f(:)g +1594 y(8.3)92 b(Readline)31 b(Init)f(File)20 b Fn(:)d(:)e(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)50 b Fu(106)399 1671 y(8.3.1)93 b(Readline)31 +(:)h(:)f(:)h(:)50 b Fu(106)399 1704 y(8.3.1)93 b(Readline)31 b(Init)f(File)i(Syn)m(tax)12 b Fn(:)k(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)42 b Fu(106)399 1781 y(8.3.2)93 b(Conditional)31 +f(:)g(:)h(:)f(:)h(:)42 b Fu(106)399 1813 y(8.3.2)93 b(Conditional)31 b(Init)f(Constructs)25 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)56 b Fu(114)399 1890 y(8.3.3)93 b(Sample)30 b(Init)g(File)12 +g(:)56 b Fu(114)399 1923 y(8.3.3)93 b(Sample)30 b(Init)g(File)12 b Fn(:)17 b(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)42 b Fu(115)275 2000 y(8.4)92 +h(:)f(:)h(:)f(:)g(:)h(:)f(:)42 b Fu(115)275 2032 y(8.4)92 b(Bindable)30 b(Readline)h(Commands)11 b Fn(:)k(:)g(:)g(:)h(:)f(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)g(:)h(:)41 b Fu(118)399 2109 y(8.4.1)93 +g(:)h(:)f(:)h(:)f(:)g(:)h(:)41 b Fu(118)399 2142 y(8.4.1)93 b(Commands)29 b(F)-8 b(or)31 b(Mo)m(ving)e Fn(:)16 b(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)58 b Fu(118)399 -2219 y(8.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f +2252 y(8.4.2)93 b(Commands)29 b(F)-8 b(or)31 b(Manipulating)g(The)f (History)17 b Fn(:)g(:)e(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)47 b Fu(119)399 2328 y(8.4.3)93 b(Commands)29 b(F)-8 +h(:)47 b Fu(119)399 2361 y(8.4.3)93 b(Commands)29 b(F)-8 b(or)31 b(Changing)f(T)-8 b(ext)21 b Fn(:)c(:)e(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -51 b Fu(120)399 2438 y(8.4.4)93 b(Killing)31 b(And)e(Y)-8 +51 b Fu(120)399 2471 y(8.4.4)93 b(Killing)31 b(And)e(Y)-8 b(anking)22 b Fn(:)17 b(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) -f(:)g(:)h(:)f(:)h(:)52 b Fu(121)399 2548 y(8.4.5)93 b(Sp)s(ecifying)30 +f(:)g(:)h(:)f(:)h(:)52 b Fu(121)399 2580 y(8.4.5)93 b(Sp)s(ecifying)30 b(Numeric)g(Argumen)m(ts)17 b Fn(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)47 -b Fu(123)399 2657 y(8.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F) +b Fu(123)399 2690 y(8.4.6)93 b(Letting)31 b(Readline)g(T)m(yp)s(e)f(F) -8 b(or)31 b(Y)-8 b(ou)12 b Fn(:)k(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)42 -b Fu(123)399 2767 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)21 +b Fu(123)399 2800 y(8.4.7)93 b(Keyb)s(oard)29 b(Macros)21 b Fn(:)16 b(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)f(:)g(:)51 b Fu(125)399 2876 y(8.4.8)93 b(Some)30 +h(:)f(:)h(:)f(:)g(:)51 b Fu(125)399 2909 y(8.4.8)93 b(Some)30 b(Miscellaneous)j(Commands)24 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)55 -b Fu(125)275 2986 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)20 +b Fu(125)275 3019 y(8.5)92 b(Readline)31 b(vi)f(Mo)s(de)20 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)50 b Fu(127)275 -3096 y(8.6)92 b(Programmable)30 b(Completion)16 b Fn(:)g(:)f(:)h(:)f(:) +3128 y(8.6)92 b(Programmable)30 b(Completion)16 b Fn(:)g(:)f(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)46 -b Fu(128)275 3205 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)c +b Fu(128)275 3238 y(8.7)92 b(Programmable)30 b(Completion)h(Builtins)c Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)56 b Fu(130)275 -3315 y(8.8)92 b(A)30 b(Programmable)h(Completion)g(Example)20 +3347 y(8.8)92 b(A)30 b(Programmable)h(Completion)g(Example)20 b Fn(:)15 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)50 b Fu(133)150 3533 y Fs(9)135 +(:)f(:)g(:)h(:)f(:)h(:)f(:)50 b Fu(133)150 3598 y Fs(9)135 b(Using)45 b(History)h(In)l(teractiv)l(ely)39 b Fo(:)19 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)80 -b Fs(136)275 3670 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8 +b Fs(136)275 3735 y Fu(9.1)92 b(Bash)30 b(History)h(F)-8 b(acilities)21 b Fn(:)d(:)e(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)51 b Fu(136)275 3779 +g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)51 b Fu(136)275 3845 y(9.2)92 b(Bash)30 b(History)h(Builtins)19 b Fn(:)d(:)g(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)49 -b Fu(136)275 3889 y(9.3)92 b(History)31 b(Expansion)21 +b Fu(136)275 3954 y(9.3)92 b(History)31 b(Expansion)21 b Fn(:)15 b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)52 b Fu(138)399 3999 +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)52 b Fu(138)399 4064 y(9.3.1)93 b(Ev)m(en)m(t)31 b(Designators)10 b Fn(:)18 b(:)d(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) -h(:)f(:)h(:)40 b Fu(139)399 4108 y(9.3.2)93 b(W)-8 b(ord)31 +h(:)f(:)h(:)40 b Fu(139)399 4174 y(9.3.2)93 b(W)-8 b(ord)31 b(Designators)17 b Fn(:)g(:)e(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) -h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)47 b Fu(139)399 4218 +h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)47 b Fu(139)399 4283 y(9.3.3)93 b(Mo)s(di\014ers)26 b Fn(:)16 b(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)57 b Fu(140)150 4436 y Fs(10)135 b(Installing)46 -b(Bash)24 b Fo(:)c(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)68 -b Fs(141)275 4573 y Fu(10.1)92 b(Basic)32 b(Installation)20 +(:)f(:)g(:)h(:)57 b Fu(140)p eop end +%%Page: -4 6 +TeXDict begin -4 5 bop 3677 -116 a Fu(iv)150 83 y Fs(10)135 +b(Installing)46 b(Bash)24 b Fo(:)c(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:) +h(:)f(:)68 b Fs(141)275 220 y Fu(10.1)92 b(Basic)32 b(Installation)20 b Fn(:)d(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)50 b Fu(141)275 4682 +(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)50 b Fu(141)275 330 y(10.2)92 b(Compilers)30 b(and)g(Options)8 b Fn(:)15 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)38 b Fu(142)275 4792 y(10.3)92 b(Compiling)30 +f(:)h(:)38 b Fu(142)275 439 y(10.3)92 b(Compiling)30 b(F)-8 b(or)32 b(Multiple)f(Arc)m(hitectures)21 b Fn(:)c(:)e(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g -(:)52 b Fu(142)275 4902 y(10.4)92 b(Installation)32 b(Names)13 +(:)52 b Fu(142)275 549 y(10.4)92 b(Installation)32 b(Names)13 b Fn(:)j(:)g(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)43 b Fu(142)275 5011 y(10.5)92 +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)43 b Fu(142)275 658 y(10.5)92 b(Sp)s(ecifying)30 b(the)g(System)h(T)m(yp)s(e)12 b Fn(:)j(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)42 b Fu(142)275 -5121 y(10.6)92 b(Sharing)30 b(Defaults)15 b Fn(:)i(:)e(:)g(:)h(:)f(:)h +768 y(10.6)92 b(Sharing)30 b(Defaults)15 b Fn(:)i(:)e(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h -(:)f(:)g(:)46 b Fu(143)275 5230 y(10.7)92 b(Op)s(eration)30 +(:)f(:)g(:)46 b Fu(143)275 878 y(10.7)92 b(Op)s(eration)30 b(Con)m(trols)24 b Fn(:)16 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)54 b Fu(143)275 -5340 y(10.8)92 b(Optional)31 b(F)-8 b(eatures)10 b Fn(:)17 +987 y(10.8)92 b(Optional)31 b(F)-8 b(eatures)10 b Fn(:)17 b(:)e(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)g(:)h(:)f(:)h(:)40 b Fu(143)p eop end -%%Page: -4 6 -TeXDict begin -4 5 bop 3677 -116 a Fu(iv)150 83 y Fs(App)t(endix)44 -b(A)160 b(Rep)t(orting)46 b(Bugs)35 b Fo(:)20 b(:)f(:)g(:)h(:)f(:)h(:)f -(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)80 b Fs(148)150 -353 y(App)t(endix)44 b(B)166 b(Ma)7 b(jor)45 b(Di\013erences)i(F)-11 -b(rom)44 b(The)419 486 y(Bourne)g(Shell)35 b Fo(:)19 +f(:)h(:)f(:)g(:)h(:)f(:)h(:)40 b Fu(143)150 1238 y Fs(App)t(endix)k(A) +160 b(Rep)t(orting)46 b(Bugs)35 b Fo(:)20 b(:)f(:)g(:)h(:)f(:)h(:)f(:)h +(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)80 b Fs(148)150 1516 +y(App)t(endix)44 b(B)166 b(Ma)7 b(jor)45 b(Di\013erences)i(F)-11 +b(rom)44 b(The)419 1657 y(Bourne)g(Shell)35 b Fo(:)19 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)78 -b Fs(149)275 623 y Fu(B.1)92 b(Implemen)m(tation)31 b(Di\013erences)h -(F)-8 b(rom)31 b(The)e(SVR4.2)j(Shell)13 b Fn(:)i(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)43 b Fu(153)150 865 y Fs(App)t(endix)h(C)165 -b(GNU)45 b(F)-11 b(ree)45 b(Do)t(cumen)l(tation)h(License)439 -998 y Fo(:)19 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g -(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:) -g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)64 -b Fs(155)150 1268 y(App)t(endix)44 b(D)159 b(Indexes)15 -b Fo(:)20 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f -(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)59 b Fs(163)275 -1405 y Fu(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h(Commands)16 -b Fn(:)e(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) -h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)46 b Fu(163)275 -1514 y(D.2)92 b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8 +b Fs(149)275 1794 y Fu(B.1)92 b(Implemen)m(tation)31 +b(Di\013erences)h(F)-8 b(rom)31 b(The)e(SVR4.2)j(Shell)13 +b Fn(:)i(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)43 b Fu(153)150 +2045 y Fs(App)t(endix)h(C)165 b(GNU)45 b(F)-11 b(ree)45 +b(Do)t(cumen)l(tation)h(License)439 2186 y Fo(:)19 b(:)h(:)f(:)h(:)f(:) +g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:) +h(:)f(:)h(:)f(:)h(:)f(:)64 b Fs(155)150 2464 y(App)t(endix)44 +b(D)159 b(Indexes)15 b Fo(:)20 b(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:) +f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)59 +b Fs(163)275 2601 y Fu(D.1)92 b(Index)29 b(of)i(Shell)f(Builtin)h +(Commands)16 b Fn(:)e(:)i(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f +(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)46 +b Fu(163)275 2711 y(D.2)92 b(Index)29 b(of)i(Shell)f(Reserv)m(ed)h(W)-8 b(ords)12 b Fn(:)j(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)42 -b Fu(164)275 1624 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8 +b Fu(164)275 2820 y(D.3)92 b(P)m(arameter)31 b(and)f(V)-8 b(ariable)32 b(Index)20 b Fn(:)14 b(:)i(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) -f(:)h(:)f(:)50 b Fu(164)275 1733 y(D.4)92 b(F)-8 b(unction)31 +f(:)h(:)f(:)50 b Fu(164)275 2930 y(D.4)92 b(F)-8 b(unction)31 b(Index)16 b Fn(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)47 -b Fu(166)275 1843 y(D.5)92 b(Concept)30 b(Index)d Fn(:)15 +b Fu(166)275 3039 y(D.5)92 b(Concept)30 b(Index)d Fn(:)15 b(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)57 b Fu(168)p @@ -8014,83 +8014,83 @@ eop end %%Page: 1 7 TeXDict begin 1 6 bop 150 -116 a Fu(Chapter)30 b(1:)41 b(In)m(tro)s(duction)2592 b(1)150 299 y Fp(1)80 b(In)l(tro)t(duction) -150 602 y Fs(1.1)68 b(What)45 b(is)g(Bash?)150 762 y +150 604 y Fs(1.1)68 b(What)45 b(is)g(Bash?)150 763 y Fu(Bash)38 b(is)g(the)g(shell,)i(or)d(command)h(language)h(in)m (terpreter,)h(for)e(the)g Fm(gnu)f Fu(op)s(erating)h(system.)63 -b(The)150 871 y(name)33 b(is)g(an)g(acron)m(ym)g(for)g(the)g(`)p +b(The)150 873 y(name)33 b(is)g(an)g(acron)m(ym)g(for)g(the)g(`)p Ft(Bourne-Again)27 b(SHell)p Fu(',)32 b(a)i(pun)d(on)i(Stephen)f -(Bourne,)h(the)g(author)150 981 y(of)f(the)f(direct)h(ancestor)h(of)e +(Bourne,)h(the)g(author)150 983 y(of)f(the)f(direct)h(ancestor)h(of)e (the)h(curren)m(t)f(Unix)g(shell)h Ft(sh)p Fu(,)f(whic)m(h)g(app)s -(eared)g(in)g(the)h(Sev)m(en)m(th)g(Edition)150 1091 +(eared)g(in)g(the)h(Sev)m(en)m(th)g(Edition)150 1092 y(Bell)g(Labs)e(Researc)m(h)h(v)m(ersion)g(of)f(Unix.)275 -1220 y(Bash)f(is)g(largely)i(compatible)f(with)f Ft(sh)g +1221 y(Bash)f(is)g(largely)i(compatible)f(with)f Ft(sh)g Fu(and)g(incorp)s(orates)g(useful)g(features)g(from)g(the)g(Korn)g (shell)150 1330 y Ft(ksh)37 b Fu(and)h(the)g(C)g(shell)g Ft(csh)p Fu(.)64 b(It)38 b(is)g(in)m(tended)g(to)h(b)s(e)f(a)g (conforman)m(t)h(implemen)m(tation)h(of)e(the)g Fm(ieee)150 -1439 y(posix)c Fu(Shell)g(and)g(T)-8 b(o)s(ols)35 b(p)s(ortion)f(of)g +1440 y(posix)c Fu(Shell)g(and)g(T)-8 b(o)s(ols)35 b(p)s(ortion)f(of)g (the)h Fm(ieee)f(posix)f Fu(sp)s(eci\014cation)j(\()p -Fm(ieee)e Fu(Standard)f(1003.1\).)56 b(It)150 1549 y(o\013ers)31 +Fm(ieee)e Fu(Standard)f(1003.1\).)56 b(It)150 1550 y(o\013ers)31 b(functional)f(impro)m(v)m(emen)m(ts)i(o)m(v)m(er)g Ft(sh)d Fu(for)i(b)s(oth)e(in)m(teractiv)m(e)k(and)d(programming)g(use.)275 -1679 y(While)h(the)g Fm(gnu)f Fu(op)s(erating)h(system)g(pro)m(vides)f +1678 y(While)h(the)g Fm(gnu)f Fu(op)s(erating)h(system)g(pro)m(vides)f (other)h(shells,)g(including)f(a)h(v)m(ersion)g(of)g Ft(csh)p Fu(,)f(Bash)150 1788 y(is)j(the)h(default)f(shell.)49 b(Lik)m(e)34 b(other)g Fm(gnu)f Fu(soft)m(w)m(are,)i(Bash)f(is)f(quite) h(p)s(ortable.)49 b(It)33 b(curren)m(tly)g(runs)f(on)150 -1898 y(nearly)c(ev)m(ery)g(v)m(ersion)g(of)f(Unix)h(and)e(a)i(few)f +1897 y(nearly)c(ev)m(ery)g(v)m(ersion)g(of)f(Unix)h(and)e(a)i(few)f (other)h(op)s(erating)g(systems)f Fq(\000)g Fu(indep)s(enden)m -(tly-supp)s(orted)150 2008 y(p)s(orts)j(exist)h(for)f +(tly-supp)s(orted)150 2007 y(p)s(orts)j(exist)h(for)f Fm(ms-dos)p Fu(,)f Fm(os/2)p Fu(,)i(and)f(Windo)m(ws)g(platforms.)150 -2231 y Fs(1.2)68 b(What)45 b(is)g(a)h(shell?)150 2390 +2236 y Fs(1.2)68 b(What)45 b(is)g(a)h(shell?)150 2395 y Fu(A)m(t)32 b(its)f(base,)h(a)f(shell)g(is)h(simply)e(a)h(macro)h (pro)s(cessor)f(that)g(executes)i(commands.)42 b(The)30 -b(term)h(macro)150 2500 y(pro)s(cessor)25 b(means)g(functionalit)m(y)i +b(term)h(macro)150 2505 y(pro)s(cessor)25 b(means)g(functionalit)m(y)i (where)d(text)j(and)d(sym)m(b)s(ols)h(are)h(expanded)e(to)i(create)h -(larger)f(expres-)150 2609 y(sions.)275 2739 y(A)34 b(Unix)h(shell)g +(larger)f(expres-)150 2615 y(sions.)275 2743 y(A)34 b(Unix)h(shell)g (is)f(b)s(oth)g(a)h(command)g(in)m(terpreter)g(and)f(a)h(programming)f -(language.)55 b(As)35 b(a)g(com-)150 2848 y(mand)30 b(in)m(terpreter,)i +(language.)55 b(As)35 b(a)g(com-)150 2853 y(mand)30 b(in)m(terpreter,)i (the)g(shell)f(pro)m(vides)g(the)h(user)e(in)m(terface)j(to)f(the)f (ric)m(h)h(set)g(of)f Fm(gnu)g Fu(utilities.)44 b(The)150 -2958 y(programming)30 b(language)h(features)f(allo)m(w)h(these)g +2962 y(programming)30 b(language)h(features)f(allo)m(w)h(these)g (utilities)g(to)g(b)s(e)e(com)m(bined.)41 b(Files)31 -b(con)m(taining)g(com-)150 3068 y(mands)e(can)i(b)s(e)e(created,)j(and) +b(con)m(taining)g(com-)150 3072 y(mands)e(can)i(b)s(e)e(created,)j(and) d(b)s(ecome)i(commands)f(themselv)m(es.)42 b(These)30 -b(new)f(commands)h(ha)m(v)m(e)i(the)150 3177 y(same)j(status)g(as)g +b(new)f(commands)h(ha)m(v)m(e)i(the)150 3182 y(same)j(status)g(as)g (system)g(commands)f(in)g(directories)i(suc)m(h)e(as)h Ft(/bin)p Fu(,)g(allo)m(wing)h(users)e(or)g(groups)g(to)150 -3287 y(establish)d(custom)f(en)m(vironmen)m(ts)h(to)g(automate)h(their) -f(common)f(tasks.)275 3417 y(Shells)j(ma)m(y)h(b)s(e)f(used)g(in)m +3291 y(establish)d(custom)f(en)m(vironmen)m(ts)h(to)g(automate)h(their) +f(common)f(tasks.)275 3420 y(Shells)j(ma)m(y)h(b)s(e)f(used)g(in)m (teractiv)m(ely)k(or)d(non-in)m(teractiv)m(ely)-8 b(.)54 b(In)33 b(in)m(teractiv)m(e)j(mo)s(de,)f(they)e(accept)150 -3526 y(input)21 b(t)m(yp)s(ed)h(from)g(the)h(k)m(eyb)s(oard.)37 +3529 y(input)21 b(t)m(yp)s(ed)h(from)g(the)h(k)m(eyb)s(oard.)37 b(When)22 b(executing)i(non-in)m(teractiv)m(ely)-8 b(,)27 -b(shells)c(execute)g(commands)150 3636 y(read)30 b(from)g(a)h(\014le.) -275 3765 y(A)41 b(shell)g(allo)m(ws)h(execution)h(of)e +b(shells)c(execute)g(commands)150 3639 y(read)30 b(from)g(a)h(\014le.) +275 3768 y(A)41 b(shell)g(allo)m(ws)h(execution)h(of)e Fm(gnu)g Fu(commands,)i(b)s(oth)e(sync)m(hronously)f(and)h(async)m -(hronously)-8 b(.)150 3875 y(The)29 b(shell)g(w)m(aits)i(for)e(sync)m +(hronously)-8 b(.)150 3877 y(The)29 b(shell)g(w)m(aits)i(for)e(sync)m (hronous)f(commands)h(to)h(complete)h(b)s(efore)e(accepting)i(more)e -(input;)g(asyn-)150 3985 y(c)m(hronous)22 b(commands)h(con)m(tin)m(ue)h +(input;)g(asyn-)150 3987 y(c)m(hronous)22 b(commands)h(con)m(tin)m(ue)h (to)f(execute)h(in)e(parallel)i(with)f(the)f(shell)h(while)g(it)g -(reads)g(and)f(executes)150 4094 y(additional)35 b(commands.)50 +(reads)g(and)f(executes)150 4096 y(additional)35 b(commands.)50 b(The)33 b Fr(redirection)h Fu(constructs)g(p)s(ermit)f(\014ne-grained) -g(con)m(trol)i(of)f(the)g(input)150 4204 y(and)40 b(output)f(of)i +g(con)m(trol)i(of)f(the)g(input)150 4206 y(and)40 b(output)f(of)i (those)f(commands.)70 b(Moreo)m(v)m(er,)45 b(the)c(shell)f(allo)m(ws)h (con)m(trol)h(o)m(v)m(er)g(the)e(con)m(ten)m(ts)i(of)150 -4313 y(commands')30 b(en)m(vironmen)m(ts.)275 4443 y(Shells)k(also)i +4316 y(commands')30 b(en)m(vironmen)m(ts.)275 4444 y(Shells)k(also)i (pro)m(vide)g(a)f(small)h(set)f(of)g(built-in)g(commands)g(\()p Fr(builtins)t Fu(\))g(implemen)m(ting)h(function-)150 -4553 y(alit)m(y)i(imp)s(ossible)e(or)g(incon)m(v)m(enien)m(t)j(to)e +4554 y(alit)m(y)i(imp)s(ossible)e(or)g(incon)m(v)m(enien)m(t)j(to)e (obtain)g(via)g(separate)g(utilities.)61 b(F)-8 b(or)37 -b(example,)i Ft(cd)p Fu(,)e Ft(break)p Fu(,)150 4662 +b(example,)i Ft(cd)p Fu(,)e Ft(break)p Fu(,)150 4663 y Ft(continue)p Fu(,)28 b(and)i Ft(exec)f Fu(cannot)i(b)s(e)f(implemen) m(ted)h(outside)g(of)f(the)h(shell)f(b)s(ecause)h(they)f(directly)h -(ma-)150 4772 y(nipulate)d(the)g(shell)g(itself.)41 b(The)27 +(ma-)150 4773 y(nipulate)d(the)g(shell)g(itself.)41 b(The)27 b Ft(history)p Fu(,)g Ft(getopts)p Fu(,)f Ft(kill)p Fu(,)i(or)g -Ft(pwd)f Fu(builtins,)h(among)g(others,)h(could)150 4881 +Ft(pwd)f Fu(builtins,)h(among)g(others,)h(could)150 4883 y(b)s(e)34 b(implemen)m(ted)g(in)g(separate)h(utilities,)i(but)d(they)g (are)g(more)h(con)m(v)m(enien)m(t)h(to)f(use)f(as)g(builtin)g(com-)150 -4991 y(mands.)40 b(All)31 b(of)f(the)h(shell)f(builtins)g(are)h +4992 y(mands.)40 b(All)31 b(of)f(the)h(shell)f(builtins)g(are)h (describ)s(ed)e(in)h(subsequen)m(t)g(sections.)275 5121 y(While)39 b(executing)h(commands)e(is)g(essen)m(tial,)43 b(most)c(of)g(the)g(p)s(o)m(w)m(er)f(\(and)g(complexit)m(y\))j(of)e @@ -8193,68 +8193,68 @@ Ft(metacharacters)p Fu(.)p eop end %%Page: 5 11 TeXDict begin 5 10 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(5)150 299 -y Fp(3)80 b(Basic)54 b(Shell)e(F)-13 b(eatures)150 603 +y Fp(3)80 b(Basic)54 b(Shell)e(F)-13 b(eatures)150 601 y Fu(Bash)21 b(is)g(an)f(acron)m(ym)i(for)e(`)p Ft(Bourne-Again)27 b(SHell)p Fu('.)37 b(The)20 b(Bourne)g(shell)h(is)g(the)g(traditional)h -(Unix)f(shell)150 712 y(originally)h(written)f(b)m(y)f(Stephen)g +(Unix)f(shell)150 710 y(originally)h(written)f(b)m(y)f(Stephen)g (Bourne.)38 b(All)21 b(of)g(the)g(Bourne)f(shell)h(builtin)f(commands)g -(are)i(a)m(v)-5 b(ailable)150 822 y(in)26 b(Bash,)h(The)f(rules)f(for)h +(are)i(a)m(v)-5 b(ailable)150 820 y(in)26 b(Bash,)h(The)f(rules)f(for)h (ev)-5 b(aluation)28 b(and)d(quoting)h(are)h(tak)m(en)g(from)f(the)g -Fm(posix)f Fu(sp)s(eci\014cation)i(for)f(the)150 931 -y(`standard')k(Unix)g(shell.)275 1089 y(This)h(c)m(hapter)i(brie\015y)e +Fm(posix)f Fu(sp)s(eci\014cation)i(for)f(the)150 929 +y(`standard')k(Unix)g(shell.)275 1086 y(This)h(c)m(hapter)i(brie\015y)e (summarizes)h(the)h(shell's)f(`building)g(blo)s(c)m(ks':)45 -b(commands,)32 b(con)m(trol)i(struc-)150 1199 y(tures,)k(shell)e +b(commands,)32 b(con)m(trol)i(struc-)150 1196 y(tures,)k(shell)e (functions,)h(shell)g Fl(p)-5 b(ar)g(ameters)p Fu(,)41 b(shell)36 b(expansions,)i Fl(r)-5 b(e)g(dir)g(e)g(ctions)p -Fu(,)40 b(whic)m(h)c(are)h(a)f(w)m(a)m(y)h(to)150 1308 +Fu(,)40 b(whic)m(h)c(are)h(a)f(w)m(a)m(y)h(to)150 1306 y(direct)31 b(input)e(and)h(output)g(from)g(and)g(to)h(named)f (\014les,)g(and)g(ho)m(w)g(the)h(shell)g(executes)g(commands.)150 -1576 y Fs(3.1)68 b(Shell)45 b(Syn)l(tax)150 1735 y Fu(When)40 +1580 y Fs(3.1)68 b(Shell)45 b(Syn)l(tax)150 1740 y Fu(When)40 b(the)h(shell)g(reads)f(input,)i(it)f(pro)s(ceeds)f(through)g(a)h (sequence)g(of)g(op)s(erations.)71 b(If)40 b(the)h(input)150 -1845 y(indicates)31 b(the)f(b)s(eginning)f(of)h(a)g(commen)m(t,)h(the)f +1849 y(indicates)31 b(the)f(b)s(eginning)f(of)h(a)g(commen)m(t,)h(the)f (shell)g(ignores)g(the)g(commen)m(t)h(sym)m(b)s(ol)f(\(`)p -Ft(#)p Fu('\),)h(and)e(the)150 1954 y(rest)i(of)f(that)h(line.)275 -2112 y(Otherwise,)h(roughly)f(sp)s(eaking,)i(the)f(shell)g(reads)g(its) +Ft(#)p Fu('\),)h(and)e(the)150 1959 y(rest)i(of)f(that)h(line.)275 +2116 y(Otherwise,)h(roughly)f(sp)s(eaking,)i(the)f(shell)g(reads)g(its) g(input)f(and)h(divides)f(the)i(input)e(in)m(to)h(w)m(ords)150 -2222 y(and)23 b(op)s(erators,)j(emplo)m(ying)e(the)g(quoting)h(rules)e +2225 y(and)23 b(op)s(erators,)j(emplo)m(ying)e(the)g(quoting)h(rules)e (to)h(select)i(whic)m(h)d(meanings)h(to)h(assign)f(v)-5 -b(arious)23 b(w)m(ords)150 2331 y(and)30 b(c)m(haracters.)275 -2489 y(The)38 b(shell)h(then)f(parses)g(these)h(tok)m(ens)h(in)m(to)f +b(arious)23 b(w)m(ords)150 2335 y(and)30 b(c)m(haracters.)275 +2492 y(The)38 b(shell)h(then)f(parses)g(these)h(tok)m(ens)h(in)m(to)f (commands)g(and)f(other)h(constructs,)i(remo)m(v)m(es)f(the)150 -2598 y(sp)s(ecial)31 b(meaning)f(of)g(certain)h(w)m(ords)f(or)g(c)m +2602 y(sp)s(ecial)31 b(meaning)f(of)g(certain)h(w)m(ords)f(or)g(c)m (haracters,)i(expands)d(others,)h(redirects)h(input)e(and)g(output)150 -2708 y(as)d(needed,)g(executes)g(the)g(sp)s(eci\014ed)e(command,)j(w)m +2711 y(as)d(needed,)g(executes)g(the)g(sp)s(eci\014ed)e(command,)j(w)m (aits)f(for)f(the)g(command's)g(exit)i(status,)f(and)f(mak)m(es)150 -2818 y(that)31 b(exit)g(status)g(a)m(v)-5 b(ailable)33 +2821 y(that)31 b(exit)g(status)g(a)m(v)-5 b(ailable)33 b(for)d(further)f(insp)s(ection)h(or)h(pro)s(cessing.)150 -3040 y Fk(3.1.1)63 b(Shell)41 b(Op)s(eration)150 3187 +3043 y Fk(3.1.1)63 b(Shell)41 b(Op)s(eration)150 3190 y Fu(The)c(follo)m(wing)h(is)f(a)h(brief)e(description)i(of)f(the)g (shell's)h(op)s(eration)f(when)f(it)i(reads)f(and)f(executes)j(a)150 -3297 y(command.)h(Basically)-8 b(,)34 b(the)c(shell)h(do)s(es)f(the)h -(follo)m(wing:)199 3454 y(1.)61 b(Reads)42 b(its)h(input)e(from)h(a)g +3299 y(command.)h(Basically)-8 b(,)34 b(the)c(shell)h(do)s(es)f(the)h +(follo)m(wing:)199 3456 y(1.)61 b(Reads)42 b(its)h(input)e(from)h(a)g (\014le)h(\(see)g(Section)g(3.8)g([Shell)f(Scripts],)j(page)e(40\),)k -(from)41 b(a)i(string)330 3564 y(supplied)30 b(as)h(an)g(argumen)m(t)h +(from)41 b(a)i(string)330 3566 y(supplied)30 b(as)h(an)g(argumen)m(t)h (to)g(the)f Ft(-c)g Fu(in)m(v)m(o)s(cation)i(option)f(\(see)g(Section)g -(6.1)g([In)m(v)m(oking)g(Bash],)330 3673 y(page)f(81\),)h(or)e(from)g -(the)h(user's)f(terminal.)199 3820 y(2.)61 b(Breaks)43 +(6.1)g([In)m(v)m(oking)g(Bash],)330 3675 y(page)f(81\),)h(or)e(from)g +(the)h(user's)f(terminal.)199 3821 y(2.)61 b(Breaks)43 b(the)g(input)f(in)m(to)h(w)m(ords)f(and)g(op)s(erators,)k(ob)s(eying)d -(the)g(quoting)g(rules)f(describ)s(ed)f(in)330 3929 y(Section)27 +(the)g(quoting)g(rules)f(describ)s(ed)f(in)330 3931 y(Section)27 b(3.1.2)i([Quoting],)f(page)f(6.)40 b(These)26 b(tok)m(ens)i(are)f (separated)g(b)m(y)f Ft(metacharacters)p Fu(.)36 b(Alias)330 -4039 y(expansion)30 b(is)h(p)s(erformed)d(b)m(y)j(this)f(step)g(\(see)i -(Section)f(6.6)g([Aliases],)i(page)e(89\).)199 4185 y(3.)61 +4040 y(expansion)30 b(is)h(p)s(erformed)d(b)m(y)j(this)f(step)g(\(see)i +(Section)f(6.6)g([Aliases],)i(page)e(89\).)199 4186 y(3.)61 b(P)m(arses)35 b(the)g(tok)m(ens)g(in)m(to)h(simple)e(and)g(comp)s (ound)f(commands)h(\(see)h(Section)h(3.2)f([Shell)g(Com-)330 -4294 y(mands],)30 b(page)h(8\).)199 4441 y(4.)61 b(P)m(erforms)40 +4296 y(mands],)30 b(page)h(8\).)199 4442 y(4.)61 b(P)m(erforms)40 b(the)h(v)-5 b(arious)40 b(shell)h(expansions)f(\(see)h(Section)g(3.5)g -([Shell)g(Expansions],)h(page)f(21\),)330 4550 y(breaking)35 +([Shell)g(Expansions],)h(page)f(21\),)330 4551 y(breaking)35 b(the)g(expanded)g(tok)m(ens)h(in)m(to)g(lists)f(of)g(\014lenames)h -(\(see)g(Section)f(3.5.8)i([Filename)g(Ex-)330 4660 y(pansion],)30 +(\(see)g(Section)f(3.5.8)i([Filename)g(Ex-)330 4661 y(pansion],)30 b(page)h(30\))h(and)e(commands)g(and)g(argumen)m(ts.)199 -4806 y(5.)61 b(P)m(erforms)36 b(an)m(y)i(necessary)f(redirections)g +4807 y(5.)61 b(P)m(erforms)36 b(an)m(y)i(necessary)f(redirections)g (\(see)h(Section)f(3.6)h([Redirections],)i(page)e(32\))g(and)e(re-)330 -4915 y(mo)m(v)m(es)c(the)e(redirection)h(op)s(erators)g(and)f(their)g +4916 y(mo)m(v)m(es)c(the)e(redirection)h(op)s(erators)g(and)f(their)g (op)s(erands)f(from)h(the)h(argumen)m(t)f(list.)199 5062 y(6.)61 b(Executes)31 b(the)g(command)f(\(see)h(Section)g(3.7)h ([Executing)f(Commands],)f(page)h(36\).)199 5208 y(7.)61 @@ -8272,126 +8272,130 @@ y(Quoting)c(can)f(b)s(e)g(used)f(to)j(disable)e(sp)s(ecial)h(treatmen)m (t)h(for)e(sp)s(ecial)h(c)m(haracters,)i(to)e(prev)m(en)m(t)g(reserv)m (ed)150 665 y(w)m(ords)i(from)g(b)s(eing)g(recognized)h(as)g(suc)m(h,)f (and)g(to)h(prev)m(en)m(t)g(parameter)g(expansion.)275 -793 y(Eac)m(h)22 b(of)g(the)g(shell)g(metac)m(haracters)i(\(see)f +795 y(Eac)m(h)22 b(of)g(the)g(shell)g(metac)m(haracters)i(\(see)f (Chapter)e(2)i([De\014nitions],)h(page)f(3\))g(has)e(sp)s(ecial)i -(meaning)150 902 y(to)40 b(the)g(shell)f(and)g(m)m(ust)g(b)s(e)g +(meaning)150 905 y(to)40 b(the)g(shell)f(and)g(m)m(ust)g(b)s(e)g (quoted)g(if)h(it)g(is)f(to)h(represen)m(t)g(itself.)68 -b(When)39 b(the)h(command)f(history)150 1012 y(expansion)i(facilities)j +b(When)39 b(the)h(command)f(history)150 1015 y(expansion)i(facilities)j (are)e(b)s(eing)f(used)g(\(see)h(Section)h(9.3)f([History)h(In)m -(teraction],)j(page)c(138\),)47 b(the)150 1122 y Fr(history)30 +(teraction],)j(page)c(138\),)47 b(the)150 1124 y Fr(history)30 b(expansion)h Fu(c)m(haracter,)h(usually)f(`)p Ft(!)p Fu(',)g(m)m(ust)f(b)s(e)g(quoted)h(to)g(prev)m(en)m(t)g(history)g -(expansion.)41 b(See)150 1231 y(Section)22 b(9.1)g([Bash)f(History)h(F) +(expansion.)41 b(See)150 1234 y(Section)22 b(9.1)g([Bash)f(History)h(F) -8 b(acilities],)26 b(page)c(136,)j(for)20 b(more)h(details)h -(concerning)g(history)f(expansion.)275 1359 y(There)37 +(concerning)g(history)f(expansion.)275 1364 y(There)37 b(are)h(three)f(quoting)h(mec)m(hanisms:)56 b(the)38 b Fr(escap)s(e)g(c)m(haracter)p Fu(,)j(single)d(quotes,)i(and)d(double) -150 1469 y(quotes.)150 1655 y Fk(3.1.2.1)63 b(Escap)s(e)41 -b(Character)150 1802 y Fu(A)36 b(non-quoted)f(bac)m(kslash)h(`)p +150 1474 y(quotes.)150 1665 y Fk(3.1.2.1)63 b(Escap)s(e)41 +b(Character)150 1812 y Fu(A)36 b(non-quoted)f(bac)m(kslash)h(`)p Ft(\\)p Fu(')g(is)f(the)h(Bash)g(escap)s(e)f(c)m(haracter.)58 b(It)36 b(preserv)m(es)f(the)h(literal)h(v)-5 b(alue)36 -b(of)150 1911 y(the)27 b(next)g(c)m(haracter)h(that)f(follo)m(ws,)i +b(of)150 1921 y(the)27 b(next)g(c)m(haracter)h(that)f(follo)m(ws,)i (with)d(the)h(exception)g(of)g Ft(newline)p Fu(.)38 b(If)26 -b(a)h Ft(\\newline)d Fu(pair)i(app)s(ears,)150 2021 y(and)k(the)h(bac)m +b(a)h Ft(\\newline)d Fu(pair)i(app)s(ears,)150 2031 y(and)k(the)h(bac)m (kslash)g(itself)g(is)g(not)g(quoted,)g(the)f Ft(\\newline)f Fu(is)h(treated)i(as)f(a)g(line)g(con)m(tin)m(uation)h(\(that)150 -2131 y(is,)f(it)g(is)f(remo)m(v)m(ed)h(from)f(the)h(input)e(stream)i -(and)f(e\013ectiv)m(ely)j(ignored\).)150 2317 y Fk(3.1.2.2)63 -b(Single)42 b(Quotes)150 2464 y Fu(Enclosing)24 b(c)m(haracters)h(in)e +2140 y(is,)f(it)g(is)f(remo)m(v)m(ed)h(from)f(the)h(input)e(stream)i +(and)f(e\013ectiv)m(ely)j(ignored\).)150 2331 y Fk(3.1.2.2)63 +b(Single)42 b(Quotes)150 2478 y Fu(Enclosing)24 b(c)m(haracters)h(in)e (single)h(quotes)g(\(`)p Ft(')p Fu('\))g(preserv)m(es)g(the)f(literal)i (v)-5 b(alue)24 b(of)g(eac)m(h)g(c)m(haracter)h(within)150 -2573 y(the)31 b(quotes.)42 b(A)31 b(single)h(quote)f(ma)m(y)g(not)g(o)s +2588 y(the)31 b(quotes.)42 b(A)31 b(single)h(quote)f(ma)m(y)g(not)g(o)s (ccur)g(b)s(et)m(w)m(een)g(single)h(quotes,)f(ev)m(en)h(when)d -(preceded)i(b)m(y)g(a)150 2683 y(bac)m(kslash.)150 2869 -y Fk(3.1.2.3)63 b(Double)42 b(Quotes)150 3016 y Fu(Enclosing)24 +(preceded)i(b)m(y)g(a)150 2697 y(bac)m(kslash.)150 2888 +y Fk(3.1.2.3)63 b(Double)42 b(Quotes)150 3035 y Fu(Enclosing)24 b(c)m(haracters)h(in)f(double)f(quotes)h(\(`)p Ft(")p Fu('\))g(preserv)m(es)g(the)g(literal)h(v)-5 b(alue)24 -b(of)g(all)g(c)m(haracters)h(within)150 3125 y(the)34 +b(of)g(all)g(c)m(haracters)h(within)150 3145 y(the)34 b(quotes,)h(with)f(the)g(exception)h(of)f(`)p Ft($)p Fu(',)h(`)p Ft(`)p Fu(',)g(`)p Ft(\\)p Fu(',)g(and,)f(when)f(history)g -(expansion)h(is)g(enabled,)h(`)p Ft(!)p Fu('.)150 3235 -y(The)25 b(c)m(haracters)h(`)p Ft($)p Fu(')g(and)f(`)p -Ft(`)p Fu(')g(retain)h(their)f(sp)s(ecial)h(meaning)f(within)g(double)g -(quotes)h(\(see)g(Section)g(3.5)150 3345 y([Shell)j(Expansions],)g -(page)h(21\).)41 b(The)28 b(bac)m(kslash)i(retains)f(its)h(sp)s(ecial)f -(meaning)g(only)g(when)f(follo)m(w)m(ed)150 3454 y(b)m(y)41 -b(one)f(of)h(the)g(follo)m(wing)h(c)m(haracters:)63 b(`)p -Ft($)p Fu(',)43 b(`)p Ft(`)p Fu(',)h(`)p Ft(")p Fu(',)g(`)p -Ft(\\)p Fu(',)f(or)e Ft(newline)p Fu(.)69 b(Within)41 -b(double)f(quotes,)150 3564 y(bac)m(kslashes)25 b(that)h(are)f(follo)m -(w)m(ed)h(b)m(y)e(one)h(of)g(these)g(c)m(haracters)h(are)f(remo)m(v)m -(ed.)40 b(Bac)m(kslashes)26 b(preceding)150 3673 y(c)m(haracters)35 -b(without)e(a)h(sp)s(ecial)f(meaning)h(are)f(left)h(unmo)s(di\014ed.)47 -b(A)34 b(double)f(quote)g(ma)m(y)h(b)s(e)f(quoted)150 -3783 y(within)h(double)h(quotes)g(b)m(y)g(preceding)g(it)g(with)g(a)g -(bac)m(kslash.)55 b(If)35 b(enabled,)h(history)f(expansion)g(will)150 -3892 y(b)s(e)f(p)s(erformed)g(unless)g(an)h(`)p Ft(!)p -Fu(')g(app)s(earing)f(in)h(double)f(quotes)i(is)f(escap)s(ed)g(using)f -(a)h(bac)m(kslash.)55 b(The)150 4002 y(bac)m(kslash)31 -b(preceding)f(the)h(`)p Ft(!)p Fu(')f(is)h(not)g(remo)m(v)m(ed.)275 -4130 y(The)41 b(sp)s(ecial)h(parameters)f(`)p Ft(*)p -Fu(')h(and)f(`)p Ft(@)p Fu(')h(ha)m(v)m(e)g(sp)s(ecial)g(meaning)g -(when)f(in)g(double)g(quotes)h(\(see)150 4240 y(Section)31 -b(3.5.3)h([Shell)f(P)m(arameter)h(Expansion],)e(page)h(23\).)150 -4426 y Fk(3.1.2.4)63 b(ANSI-C)40 b(Quoting)150 4573 y -Fu(W)-8 b(ords)43 b(of)f(the)h(form)f Ft($')p Fj(string)p -Ft(')e Fu(are)j(treated)g(sp)s(ecially)-8 b(.)79 b(The)42 -b(w)m(ord)g(expands)f(to)j Fr(string)p Fu(,)h(with)150 -4682 y(bac)m(kslash-escap)s(ed)f(c)m(haracters)h(replaced)f(as)g(sp)s -(eci\014ed)f(b)m(y)g(the)g(ANSI)g(C)g(standard.)79 b(Bac)m(kslash)150 -4792 y(escap)s(e)31 b(sequences,)g(if)f(presen)m(t,)h(are)g(deco)s(ded) -f(as)g(follo)m(ws:)150 4938 y Ft(\\a)384 b Fu(alert)31 -b(\(b)s(ell\))150 5084 y Ft(\\b)384 b Fu(bac)m(kspace)150 -5230 y Ft(\\e)150 5340 y(\\E)g Fu(an)30 b(escap)s(e)h(c)m(haracter)h -(\(not)f(ANSI)f(C\))p eop end +(expansion)h(is)g(enabled,)h(`)p Ft(!)p Fu('.)150 3254 +y(When)e(the)h(shell)g(is)g(in)f Fm(posix)g Fu(mo)s(de)g(\(see)i +(Section)f(6.11)i([Bash)e(POSIX)e(Mo)s(de],)k(page)e(95\),)i(the)e(`)p +Ft(!)p Fu(')150 3364 y(has)28 b(no)g(sp)s(ecial)h(meaning)g(within)f +(double)g(quotes,)h(ev)m(en)g(when)f(history)g(expansion)g(is)g +(enabled.)40 b(The)150 3474 y(c)m(haracters)h(`)p Ft($)p +Fu(')e(and)g(`)p Ft(`)p Fu(')g(retain)h(their)f(sp)s(ecial)h(meaning)f +(within)g(double)g(quotes)h(\(see)g(Section)g(3.5)150 +3583 y([Shell)29 b(Expansions],)g(page)h(21\).)41 b(The)28 +b(bac)m(kslash)i(retains)f(its)h(sp)s(ecial)f(meaning)g(only)g(when)f +(follo)m(w)m(ed)150 3693 y(b)m(y)41 b(one)f(of)h(the)g(follo)m(wing)h +(c)m(haracters:)63 b(`)p Ft($)p Fu(',)43 b(`)p Ft(`)p +Fu(',)h(`)p Ft(")p Fu(',)g(`)p Ft(\\)p Fu(',)f(or)e Ft(newline)p +Fu(.)69 b(Within)41 b(double)f(quotes,)150 3802 y(bac)m(kslashes)25 +b(that)h(are)f(follo)m(w)m(ed)h(b)m(y)e(one)h(of)g(these)g(c)m +(haracters)h(are)f(remo)m(v)m(ed.)40 b(Bac)m(kslashes)26 +b(preceding)150 3912 y(c)m(haracters)35 b(without)e(a)h(sp)s(ecial)f +(meaning)h(are)f(left)h(unmo)s(di\014ed.)47 b(A)34 b(double)f(quote)g +(ma)m(y)h(b)s(e)f(quoted)150 4022 y(within)h(double)h(quotes)g(b)m(y)g +(preceding)g(it)g(with)g(a)g(bac)m(kslash.)55 b(If)35 +b(enabled,)h(history)f(expansion)g(will)150 4131 y(b)s(e)f(p)s +(erformed)g(unless)g(an)h(`)p Ft(!)p Fu(')g(app)s(earing)f(in)h(double) +f(quotes)i(is)f(escap)s(ed)g(using)f(a)h(bac)m(kslash.)55 +b(The)150 4241 y(bac)m(kslash)31 b(preceding)f(the)h(`)p +Ft(!)p Fu(')f(is)h(not)g(remo)m(v)m(ed.)275 4371 y(The)41 +b(sp)s(ecial)h(parameters)f(`)p Ft(*)p Fu(')h(and)f(`)p +Ft(@)p Fu(')h(ha)m(v)m(e)g(sp)s(ecial)g(meaning)g(when)f(in)g(double)g +(quotes)h(\(see)150 4481 y(Section)31 b(3.5.3)h([Shell)f(P)m(arameter)h +(Expansion],)e(page)h(23\).)150 4672 y Fk(3.1.2.4)63 +b(ANSI-C)40 b(Quoting)150 4819 y Fu(W)-8 b(ords)43 b(of)f(the)h(form)f +Ft($')p Fj(string)p Ft(')e Fu(are)j(treated)g(sp)s(ecially)-8 +b(.)79 b(The)42 b(w)m(ord)g(expands)f(to)j Fr(string)p +Fu(,)h(with)150 4928 y(bac)m(kslash-escap)s(ed)f(c)m(haracters)h +(replaced)f(as)g(sp)s(eci\014ed)f(b)m(y)g(the)g(ANSI)g(C)g(standard.)79 +b(Bac)m(kslash)150 5038 y(escap)s(e)31 b(sequences,)g(if)f(presen)m(t,) +h(are)g(deco)s(ded)f(as)g(follo)m(ws:)150 5189 y Ft(\\a)384 +b Fu(alert)31 b(\(b)s(ell\))150 5340 y Ft(\\b)384 b Fu(bac)m(kspace)p +eop end %%Page: 7 13 TeXDict begin 7 12 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2292 b(7)150 299 -y Ft(\\f)384 b Fu(form)30 b(feed)150 478 y Ft(\\n)384 -b Fu(newline)150 656 y Ft(\\r)g Fu(carriage)32 b(return)150 -835 y Ft(\\t)384 b Fu(horizon)m(tal)32 b(tab)150 1014 -y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)150 1193 y Ft(\\\\)384 -b Fu(bac)m(kslash)150 1371 y Ft(\\')g Fu(single)31 b(quote)150 -1550 y Ft(\\")384 b Fu(double)30 b(quote)150 1729 y Ft(\\?)384 -b Fu(question)31 b(mark)150 1908 y Ft(\\)p Fj(nnn)288 -b Fu(the)31 b(eigh)m(t-bit)h(c)m(haracter)g(whose)e(v)-5 -b(alue)31 b(is)f(the)h(o)s(ctal)g(v)-5 b(alue)31 b Fr(nnn)e -Fu(\(one)i(to)g(three)g(digits\))150 2086 y Ft(\\x)p -Fj(HH)288 b Fu(the)36 b(eigh)m(t-bit)i(c)m(haracter)f(whose)f(v)-5 -b(alue)36 b(is)g(the)g(hexadecimal)h(v)-5 b(alue)36 b -Fr(HH)46 b Fu(\(one)37 b(or)f(t)m(w)m(o)630 2196 y(hex)30 -b(digits\))150 2375 y Ft(\\u)p Fj(HHHH)192 b Fu(the)33 -b(Unico)s(de)f(\(ISO/IEC)g(10646\))j(c)m(haracter)f(whose)e(v)-5 -b(alue)33 b(is)g(the)g(hexadecimal)g(v)-5 b(alue)630 -2484 y Fr(HHHH)41 b Fu(\(one)31 b(to)g(four)f(hex)g(digits\))150 -2663 y Ft(\\U)p Fj(HHHHHHHH)630 2773 y Fu(the)j(Unico)s(de)f(\(ISO/IEC) +y Ft(\\e)150 408 y(\\E)384 b Fu(an)30 b(escap)s(e)h(c)m(haracter)h +(\(not)f(ANSI)f(C\))150 572 y Ft(\\f)384 b Fu(form)30 +b(feed)150 735 y Ft(\\n)384 b Fu(newline)150 898 y Ft(\\r)g +Fu(carriage)32 b(return)150 1061 y Ft(\\t)384 b Fu(horizon)m(tal)32 +b(tab)150 1224 y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)150 +1387 y Ft(\\\\)384 b Fu(bac)m(kslash)150 1551 y Ft(\\')g +Fu(single)31 b(quote)150 1714 y Ft(\\")384 b Fu(double)30 +b(quote)150 1877 y Ft(\\?)384 b Fu(question)31 b(mark)150 +2040 y Ft(\\)p Fj(nnn)288 b Fu(the)31 b(eigh)m(t-bit)h(c)m(haracter)g +(whose)e(v)-5 b(alue)31 b(is)f(the)h(o)s(ctal)g(v)-5 +b(alue)31 b Fr(nnn)e Fu(\(one)i(to)g(three)g(digits\))150 +2203 y Ft(\\x)p Fj(HH)288 b Fu(the)36 b(eigh)m(t-bit)i(c)m(haracter)f +(whose)f(v)-5 b(alue)36 b(is)g(the)g(hexadecimal)h(v)-5 +b(alue)36 b Fr(HH)46 b Fu(\(one)37 b(or)f(t)m(w)m(o)630 +2313 y(hex)30 b(digits\))150 2476 y Ft(\\u)p Fj(HHHH)192 +b Fu(the)33 b(Unico)s(de)f(\(ISO/IEC)g(10646\))j(c)m(haracter)f(whose)e +(v)-5 b(alue)33 b(is)g(the)g(hexadecimal)g(v)-5 b(alue)630 +2586 y Fr(HHHH)41 b Fu(\(one)31 b(to)g(four)f(hex)g(digits\))150 +2749 y Ft(\\U)p Fj(HHHHHHHH)630 2858 y Fu(the)j(Unico)s(de)f(\(ISO/IEC) g(10646\))j(c)m(haracter)f(whose)e(v)-5 b(alue)33 b(is)g(the)g -(hexadecimal)g(v)-5 b(alue)630 2882 y Fr(HHHHHHHH)42 -b Fu(\(one)31 b(to)g(eigh)m(t)g(hex)g(digits\))150 3061 +(hexadecimal)g(v)-5 b(alue)630 2968 y Fr(HHHHHHHH)42 +b Fu(\(one)31 b(to)g(eigh)m(t)g(hex)g(digits\))150 3131 y Ft(\\c)p Fj(x)336 b Fu(a)31 b(con)m(trol-)p Fr(x)38 -b Fu(c)m(haracter)150 3250 y(The)30 b(expanded)f(result)i(is)f +b Fu(c)m(haracter)150 3296 y(The)30 b(expanded)f(result)i(is)f (single-quoted,)i(as)f(if)f(the)g(dollar)h(sign)g(had)e(not)i(b)s(een)f -(presen)m(t.)150 3468 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41 -b(T)-10 b(ranslation)150 3615 y Fu(A)28 b(double-quoted)g(string)f +(presen)m(t.)150 3499 y Fk(3.1.2.5)63 b(Lo)s(cale-Sp)s(eci\014c)41 +b(T)-10 b(ranslation)150 3646 y Fu(A)28 b(double-quoted)g(string)f (preceded)h(b)m(y)f(a)h(dollar)h(sign)e(\(`)p Ft($)p Fu('\))i(will)f(cause)g(the)g(string)g(to)g(b)s(e)f(translated)150 -3725 y(according)f(to)f(the)g(curren)m(t)g(lo)s(cale.)41 +3756 y(according)f(to)f(the)g(curren)m(t)g(lo)s(cale.)41 b(If)24 b(the)h(curren)m(t)g(lo)s(cale)h(is)f Ft(C)g Fu(or)g Ft(POSIX)p Fu(,)f(the)h(dollar)h(sign)f(is)g(ignored.)150 -3834 y(If)30 b(the)g(string)h(is)f(translated)h(and)f(replaced,)h(the)g -(replacemen)m(t)h(is)e(double-quoted.)275 3988 y(Some)20 +3865 y(If)30 b(the)g(string)h(is)f(translated)h(and)f(replaced,)h(the)g +(replacemen)m(t)h(is)e(double-quoted.)275 4004 y(Some)20 b(systems)h(use)f(the)h(message)h(catalog)h(selected)f(b)m(y)f(the)g Ft(LC_MESSAGES)c Fu(shell)k(v)-5 b(ariable.)39 b(Others)150 -4098 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog)i(from)d(the) +4113 y(create)g(the)e(name)g(of)g(the)g(message)h(catalog)i(from)d(the) g(v)-5 b(alue)37 b(of)g(the)h Ft(TEXTDOMAIN)c Fu(shell)j(v)-5 -b(ariable,)150 4207 y(p)s(ossibly)31 b(adding)g(a)g(su\016x)g(of)h(`)p +b(ariable,)150 4223 y(p)s(ossibly)31 b(adding)g(a)g(su\016x)g(of)h(`)p Ft(.mo)p Fu('.)43 b(If)31 b(y)m(ou)h(use)f(the)h Ft(TEXTDOMAIN)c Fu(v)-5 b(ariable,)33 b(y)m(ou)f(ma)m(y)g(need)f(to)h(set)150 -4317 y(the)22 b Ft(TEXTDOMAINDIR)d Fu(v)-5 b(ariable)23 +4332 y(the)22 b Ft(TEXTDOMAINDIR)d Fu(v)-5 b(ariable)23 b(to)g(the)f(lo)s(cation)i(of)e(the)h(message)g(catalog)i(\014les.)38 -b(Still)23 b(others)f(use)g(b)s(oth)150 4426 y(v)-5 b(ariables)31 +b(Still)23 b(others)f(use)g(b)s(oth)150 4442 y(v)-5 b(ariables)31 b(in)f(this)g(fashion:)41 b Ft(TEXTDOMAINDIR)p Fu(/)p -Ft(LC_MESSAGES)p Fu(/LC)p 2528 4426 28 4 v 34 w(MESSA)m(GES/)p +Ft(LC_MESSAGES)p Fu(/LC)p 2528 4442 28 4 v 34 w(MESSA)m(GES/)p Ft(TEXTDOMAIN)p Fu(.mo.)150 4645 y Fk(3.1.3)63 b(Commen)m(ts)150 4792 y Fu(In)21 b(a)i(non-in)m(teractiv)m(e)h(shell,)g(or)e(an)g(in)m (teractiv)m(e)j(shell)d(in)g(whic)m(h)g(the)g Ft(interactive_comments) @@ -9107,80 +9111,80 @@ TeXDict begin 17 22 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)390 299 y Ft({)47 b(echo)g(foss.org.my)e(;)i(echo)g(debian.org;)e(echo)h (freenetproject.org;)d(})k(|)h(parallel)d(-k)i(traceroute)150 -437 y Fu(will)31 b(ensure)e(that)i(the)g(output)f(of)g +436 y Fu(will)31 b(ensure)e(that)i(the)g(output)f(of)g Ft(traceroute)e(foss.org.my)f Fu(is)k(displa)m(y)m(ed)g(\014rst.)275 -575 y(Finally)-8 b(,)31 b(P)m(arallel)h(can)e(b)s(e)f(used)g(to)i(run)d +574 y(Finally)-8 b(,)31 b(P)m(arallel)h(can)e(b)s(e)f(used)g(to)i(run)d (a)i(sequence)h(of)f(shell)g(commands)f(in)h(parallel,)h(similar)f(to) -150 685 y(`)p Ft(cat)g(file)f(|)h(bash)p Fu('.)53 b(It)35 +150 683 y(`)p Ft(cat)g(file)f(|)h(bash)p Fu('.)53 b(It)35 b(is)g(not)g(uncommon)f(to)i(tak)m(e)g(a)f(list)h(of)f(\014lenames,)h -(create)g(a)g(series)f(of)g(shell)150 794 y(commands)27 +(create)g(a)g(series)f(of)g(shell)150 793 y(commands)27 b(to)h(op)s(erate)h(on)e(them,)h(and)f(feed)h(that)g(list)g(of)g (commnds)e(to)j(a)f(shell.)40 b(P)m(arallel)29 b(can)f(sp)s(eed)150 -904 y(this)i(up.)40 b(Assuming)30 b(that)h Ft(file)e +903 y(this)i(up.)40 b(Assuming)30 b(that)h Ft(file)e Fu(con)m(tains)i(a)g(list)g(of)g(shell)f(commands,)h(one)f(p)s(er)g -(line,)390 1042 y Ft(parallel)46 b(-j)h(10)g(<)g(file)150 -1180 y Fu(will)37 b(ev)-5 b(aluate)38 b(the)f(commands)f(using)g(the)h +(line,)390 1040 y Ft(parallel)46 b(-j)h(10)g(<)g(file)150 +1178 y Fu(will)37 b(ev)-5 b(aluate)38 b(the)f(commands)f(using)g(the)h (shell)g(\(since)g(no)f(explicit)i(command)e(is)h(supplied)e(as)i(an) -150 1289 y(argumen)m(t\),)31 b(in)f(blo)s(c)m(ks)h(of)g(ten)f(shell)h -(jobs)f(at)h(a)g(time.)150 1527 y Fs(3.3)68 b(Shell)45 -b(F)-11 b(unctions)150 1687 y Fu(Shell)35 b(functions)h(are)g(a)g(w)m +150 1287 y(argumen)m(t\),)31 b(in)f(blo)s(c)m(ks)h(of)g(ten)f(shell)h +(jobs)f(at)h(a)g(time.)150 1532 y Fs(3.3)68 b(Shell)45 +b(F)-11 b(unctions)150 1692 y Fu(Shell)35 b(functions)h(are)g(a)g(w)m (a)m(y)g(to)h(group)e(commands)g(for)h(later)g(execution)h(using)e(a)h -(single)g(name)g(for)150 1796 y(the)f(group.)55 b(They)35 +(single)g(name)g(for)150 1801 y(the)f(group.)55 b(They)35 b(are)g(executed)h(just)f(lik)m(e)h(a)g Ft(")p Fu(regular)p Ft(")f Fu(command.)54 b(When)35 b(the)h(name)f(of)g(a)h(shell)150 -1906 y(function)j(is)g(used)f(as)h(a)h(simple)f(command)g(name,)i(the)e +1911 y(function)j(is)g(used)f(as)h(a)h(simple)f(command)g(name,)i(the)e (list)h(of)f(commands)g(asso)s(ciated)i(with)d(that)150 -2015 y(function)25 b(name)h(is)g(executed.)40 b(Shell)25 +2021 y(function)25 b(name)h(is)g(executed.)40 b(Shell)25 b(functions)g(are)i(executed)f(in)f(the)h(curren)m(t)g(shell)g(con)m -(text;)j(no)c(new)150 2125 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m -(terpret)g(them.)275 2263 y(F)-8 b(unctions)30 b(are)h(declared)g -(using)f(this)g(syn)m(tax:)390 2401 y Fj(name)47 b Ft(\(\))g +(text;)j(no)c(new)150 2130 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m +(terpret)g(them.)275 2268 y(F)-8 b(unctions)30 b(are)h(declared)g +(using)f(this)g(syn)m(tax:)390 2405 y Fj(name)47 b Ft(\(\))g Fj(compound-command)c Ft([)48 b Fj(redirections)c Ft(])275 -2539 y Fu(or)390 2677 y Ft(function)i Fj(name)g Ft([\(\)])h +2543 y Fu(or)390 2680 y Ft(function)i Fj(name)g Ft([\(\)])h Fj(compound-command)c Ft([)48 b Fj(redirections)c Ft(])275 -2815 y Fu(This)31 b(de\014nes)h(a)h(shell)g(function)g(named)f +2817 y Fu(This)31 b(de\014nes)h(a)h(shell)g(function)g(named)f Fr(name)p Fu(.)48 b(The)32 b(reserv)m(ed)h(w)m(ord)f -Ft(function)f Fu(is)h(optional.)49 b(If)150 2925 y(the)39 +Ft(function)f Fu(is)h(optional.)49 b(If)150 2927 y(the)39 b Ft(function)f Fu(reserv)m(ed)h(w)m(ord)g(is)g(supplied,)i(the)e (paren)m(theses)h(are)f(optional.)69 b(The)39 b Fr(b)s(o)s(dy)45 -b Fu(of)40 b(the)150 3034 y(function)h(is)h(the)g(comp)s(ound)e +b Fu(of)40 b(the)150 3037 y(function)h(is)h(the)g(comp)s(ound)e (command)h Fr(comp)s(ound-command)j Fu(\(see)e(Section)h(3.2.4)g([Comp) -s(ound)150 3144 y(Commands],)33 b(page)h(9\).)49 b(That)33 +s(ound)150 3146 y(Commands],)33 b(page)h(9\).)49 b(That)33 b(command)f(is)h(usually)g(a)g Fr(list)j Fu(enclosed)e(b)s(et)m(w)m (een)f Fi({)h Fu(and)e Fi(})p Fu(,)i(but)e(ma)m(y)150 -3254 y(b)s(e)39 b(an)m(y)h(comp)s(ound)e(command)i(listed)g(ab)s(o)m(v) +3256 y(b)s(e)39 b(an)m(y)h(comp)s(ound)e(command)i(listed)g(ab)s(o)m(v) m(e,)j(with)d(one)g(exception:)60 b(If)39 b(the)h Ft(function)e -Fu(reserv)m(ed)150 3363 y(w)m(ord)g(is)g(used,)h(but)f(the)g(paren)m +Fu(reserv)m(ed)150 3365 y(w)m(ord)g(is)g(used,)h(but)f(the)g(paren)m (theses)h(are)f(not)h(supplied,)g(the)f(braces)g(are)h(required.)63 -b Fr(comp)s(ound-)150 3473 y(command)39 b Fu(is)c(executed)h(whenev)m +b Fr(comp)s(ound-)150 3475 y(command)39 b Fu(is)c(executed)h(whenev)m (er)f Fr(name)41 b Fu(is)35 b(sp)s(eci\014ed)g(as)g(the)h(name)f(of)h -(a)f(command.)56 b(When)35 b(the)150 3582 y(shell)d(is)h(in)f +(a)f(command.)56 b(When)35 b(the)150 3585 y(shell)d(is)h(in)f Fm(posix)f Fu(mo)s(de)h(\(see)h(Section)g(6.11)h([Bash)f(POSIX)e(Mo)s (de],)j(page)f(95\),)h Fr(name)j Fu(ma)m(y)c(not)g(b)s(e)150 -3692 y(the)k(same)g(as)g(one)g(of)g(the)f(sp)s(ecial)i(builtins)e -(\(see)h(Section)h(4.4)g([Sp)s(ecial)f(Builtins],)i(page)e(68\).)61 -b(An)m(y)150 3801 y(redirections)32 b(\(see)g(Section)h(3.6)f +3694 y(the)k(same)g(as)g(one)g(of)g(the)f(sp)s(ecial)i(builtins)e +(\(see)h(Section)h(4.4)g([Sp)s(ecial)f(Builtins],)i(page)e(69\).)61 +b(An)m(y)150 3804 y(redirections)32 b(\(see)g(Section)h(3.6)f ([Redirections],)i(page)e(32\))h(asso)s(ciated)g(with)e(the)h(shell)f -(function)h(are)150 3911 y(p)s(erformed)d(when)g(the)i(function)f(is)g -(executed.)275 4049 y(A)44 b(function)g(de\014nition)h(ma)m(y)g(b)s(e)f +(function)h(are)150 3913 y(p)s(erformed)d(when)g(the)i(function)f(is)g +(executed.)275 4051 y(A)44 b(function)g(de\014nition)h(ma)m(y)g(b)s(e)f (deleted)h(using)f(the)h Ft(-f)f Fu(option)h(to)g(the)g -Ft(unset)e Fu(builtin)h(\(see)150 4159 y(Section)31 b(4.1)h([Bourne)e -(Shell)g(Builtins],)h(page)h(41\).)275 4297 y(The)26 +Ft(unset)e Fu(builtin)h(\(see)150 4160 y(Section)31 b(4.1)h([Bourne)e +(Shell)g(Builtins],)h(page)h(41\).)275 4298 y(The)26 b(exit)i(status)g(of)f(a)h(function)f(de\014nition)g(is)g(zero)h (unless)f(a)g(syn)m(tax)h(error)f(o)s(ccurs)g(or)g(a)h(readonly)150 -4406 y(function)k(with)f(the)i(same)f(name)g(already)h(exists.)46 +4407 y(function)k(with)f(the)i(same)f(name)g(already)h(exists.)46 b(When)32 b(executed,)h(the)f(exit)h(status)g(of)f(a)g(function)150 -4516 y(is)e(the)h(exit)g(status)g(of)f(the)h(last)g(command)f(executed) -i(in)e(the)g(b)s(o)s(dy)-8 b(.)275 4654 y(Note)22 b(that)f(for)f +4517 y(is)e(the)h(exit)g(status)g(of)f(the)h(last)g(command)f(executed) +i(in)e(the)g(b)s(o)s(dy)-8 b(.)275 4655 y(Note)22 b(that)f(for)f (historical)i(reasons,)h(in)e(the)g(most)g(common)g(usage)g(the)g (curly)f(braces)h(that)g(surround)150 4764 y(the)38 b(b)s(o)s(dy)d(of)j (the)f(function)g(m)m(ust)g(b)s(e)g(separated)h(from)f(the)g(b)s(o)s (dy)f(b)m(y)h Ft(blank)p Fu(s)f(or)h(newlines.)62 b(This)150 -4873 y(is)38 b(b)s(ecause)g(the)h(braces)f(are)h(reserv)m(ed)f(w)m +4874 y(is)38 b(b)s(ecause)g(the)h(braces)f(are)h(reserv)m(ed)f(w)m (ords)g(and)f(are)i(only)f(recognized)i(as)e(suc)m(h)g(when)f(they)i (are)150 4983 y(separated)26 b(from)f(the)h(command)f(list)i(b)m(y)e (whitespace)h(or)g(another)g(shell)g(metac)m(haracter.)41 -b(Also,)28 b(when)150 5092 y(using)i(the)g(braces,)h(the)g +b(Also,)28 b(when)150 5093 y(using)i(the)g(braces,)h(the)g Fr(list)i Fu(m)m(ust)d(b)s(e)g(terminated)h(b)m(y)f(a)h(semicolon,)h(a) e(`)p Ft(&)p Fu(',)h(or)g(a)f(newline.)275 5230 y(When)i(a)i(function)f (is)g(executed,)i(the)e(argumen)m(ts)h(to)g(the)f(function)g(b)s(ecome) @@ -9197,86 +9201,86 @@ b(Sp)s(ecial)35 b(parameter)h Ft(0)f Fu(is)g(unc)m(hanged.)54 b(The)35 b(\014rst)f(elemen)m(t)j(of)e(the)g Ft(FUNCNAME)150 518 y Fu(v)-5 b(ariable)31 b(is)g(set)f(to)i(the)e(name)h(of)f(the)h (function)f(while)g(the)h(function)f(is)g(executing.)275 -667 y(All)25 b(other)g(asp)s(ects)g(of)g(the)g(shell)g(execution)h(en)m +666 y(All)25 b(other)g(asp)s(ects)g(of)g(the)g(shell)g(execution)h(en)m (vironmen)m(t)g(are)f(iden)m(tical)h(b)s(et)m(w)m(een)g(a)f(function)g -(and)150 777 y(its)35 b(caller)i(with)d(these)i(exceptions:)50 +(and)150 776 y(its)35 b(caller)i(with)d(these)i(exceptions:)50 b(the)36 b Ft(DEBUG)d Fu(and)h Ft(RETURN)g Fu(traps)g(are)i(not)f -(inherited)f(unless)h(the)150 886 y(function)26 b(has)g(b)s(een)f(giv)m +(inherited)f(unless)h(the)150 885 y(function)26 b(has)g(b)s(een)f(giv)m (en)i(the)g Ft(trace)d Fu(attribute)j(using)f(the)g Ft(declare)e -Fu(builtin)i(or)g(the)h Ft(-o)i(functrace)150 996 y Fu(option)f(has)e +Fu(builtin)i(or)g(the)h Ft(-o)i(functrace)150 995 y Fu(option)f(has)e (b)s(een)h(enabled)g(with)g(the)g Ft(set)f Fu(builtin,)i(\(in)f(whic)m (h)f(case)j(all)f(functions)e(inherit)h(the)g Ft(DEBUG)150 1105 y Fu(and)33 b Ft(RETURN)f Fu(traps\),)j(and)e(the)h Ft(ERR)f Fu(trap)h(is)g(not)g(inherited)f(unless)g(the)h -Ft(-o)c(errtrace)h Fu(shell)j(option)150 1215 y(has)h(b)s(een)f +Ft(-o)c(errtrace)h Fu(shell)j(option)150 1214 y(has)h(b)s(een)f (enabled.)55 b(See)35 b(Section)h(4.1)g([Bourne)f(Shell)g(Builtins],)i (page)f(41,)i(for)c(the)i(description)f(of)150 1324 y(the)c -Ft(trap)e Fu(builtin.)275 1473 y(The)38 b Ft(FUNCNEST)f +Ft(trap)e Fu(builtin.)275 1472 y(The)38 b Ft(FUNCNEST)f Fu(v)-5 b(ariable,)42 b(if)d(set)h(to)g(a)g(n)m(umeric)f(v)-5 b(alue)39 b(greater)h(than)f(0,)j(de\014nes)d(a)g(maxim)m(um)150 -1583 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25 +1581 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25 b(in)m(v)m(o)s(cations)i(that)e(exceed)g(the)g(limit)g(cause)g(the)g -(en)m(tire)g(command)150 1693 y(to)31 b(ab)s(ort.)275 -1841 y(If)37 b(the)g(builtin)g(command)h Ft(return)d +(en)m(tire)g(command)150 1691 y(to)31 b(ab)s(ort.)275 +1839 y(If)37 b(the)g(builtin)g(command)h Ft(return)d Fu(is)j(executed)g(in)g(a)g(function,)h(the)e(function)h(completes)h -(and)150 1951 y(execution)25 b(resumes)e(with)h(the)g(next)g(command)f +(and)150 1949 y(execution)25 b(resumes)e(with)h(the)g(next)g(command)f (after)i(the)f(function)f(call.)40 b(An)m(y)24 b(command)f(asso)s -(ciated)150 2061 y(with)36 b(the)h Ft(RETURN)d Fu(trap)i(is)h(executed) +(ciated)150 2058 y(with)36 b(the)h Ft(RETURN)d Fu(trap)i(is)h(executed) g(b)s(efore)f(execution)i(resumes.)57 b(When)37 b(a)f(function)g -(completes,)150 2170 y(the)h(v)-5 b(alues)38 b(of)f(the)g(p)s +(completes,)150 2168 y(the)h(v)-5 b(alues)38 b(of)f(the)g(p)s (ositional)h(parameters)f(and)g(the)g(sp)s(ecial)h(parameter)f(`)p -Ft(#)p Fu(')g(are)h(restored)f(to)h(the)150 2280 y(v)-5 +Ft(#)p Fu(')g(are)h(restored)f(to)h(the)150 2277 y(v)-5 b(alues)26 b(they)f(had)g(prior)f(to)i(the)g(function's)f(execution.)40 b(If)25 b(a)h(n)m(umeric)f(argumen)m(t)h(is)f(giv)m(en)h(to)g -Ft(return)p Fu(,)150 2389 y(that)j(is)g(the)f(function's)h(return)e +Ft(return)p Fu(,)150 2387 y(that)j(is)g(the)f(function's)h(return)e (status;)j(otherwise)f(the)f(function's)h(return)e(status)i(is)f(the)h -(exit)h(status)150 2499 y(of)h(the)f(last)h(command)f(executed)i(b)s -(efore)e(the)g Ft(return)p Fu(.)275 2648 y(V)-8 b(ariables)31 +(exit)h(status)150 2497 y(of)h(the)f(last)h(command)f(executed)i(b)s +(efore)e(the)g Ft(return)p Fu(.)275 2645 y(V)-8 b(ariables)31 b(lo)s(cal)g(to)f(the)g(function)f(ma)m(y)i(b)s(e)e(declared)h(with)f (the)h Ft(local)f Fu(builtin.)40 b(These)29 b(v)-5 b(ariables)150 -2757 y(are)31 b(visible)g(only)f(to)h(the)g(function)f(and)g(the)g -(commands)g(it)h(in)m(v)m(ok)m(es.)275 2906 y(F)-8 b(unction)51 +2754 y(are)31 b(visible)g(only)f(to)h(the)g(function)f(and)g(the)g +(commands)g(it)h(in)m(v)m(ok)m(es.)275 2902 y(F)-8 b(unction)51 b(names)f(and)g(de\014nitions)g(ma)m(y)i(b)s(e)e(listed)h(with)f(the)h -Ft(-f)f Fu(option)h(to)g(the)g Ft(declare)150 3016 y +Ft(-f)f Fu(option)h(to)g(the)g Ft(declare)150 3012 y Fu(\()p Ft(typeset)p Fu(\))35 b(builtin)g(command)h(\(see)h(Section)g (4.2)g([Bash)f(Builtins],)i(page)f(48\).)59 b(The)35 -b Ft(-F)h Fu(option)g(to)150 3126 y Ft(declare)e Fu(or)i +b Ft(-F)h Fu(option)g(to)150 3122 y Ft(declare)e Fu(or)i Ft(typeset)e Fu(will)i(list)h(the)f(function)g(names)g(only)g(\(and)g -(optionally)h(the)f(source)g(\014le)h(and)150 3235 y(line)c(n)m(um)m(b) +(optionally)h(the)f(source)g(\014le)h(and)150 3231 y(line)c(n)m(um)m(b) s(er,)g(if)f(the)h Ft(extdebug)e Fu(shell)i(option)g(is)g(enabled\).)49 b(F)-8 b(unctions)33 b(ma)m(y)h(b)s(e)e(exp)s(orted)g(so)h(that)150 -3345 y(subshells)j(automatically)k(ha)m(v)m(e)f(them)e(de\014ned)f +3341 y(subshells)j(automatically)k(ha)m(v)m(e)f(them)e(de\014ned)f (with)h(the)h Ft(-f)e Fu(option)i(to)g(the)g Ft(export)d -Fu(builtin)i(\(see)150 3454 y(Section)c(4.1)g([Bourne)f(Shell)g +Fu(builtin)i(\(see)150 3450 y(Section)c(4.1)g([Bourne)f(Shell)g (Builtins],)i(page)f(41\).)47 b(Note)33 b(that)g(shell)f(functions)g -(and)f(v)-5 b(ariables)33 b(with)150 3564 y(the)d(same)g(name)g(ma)m(y) +(and)f(v)-5 b(ariables)33 b(with)150 3560 y(the)d(same)g(name)g(ma)m(y) g(result)g(in)g(m)m(ultiple)g(iden)m(tically-named)i(en)m(tries)f(in)e -(the)h(en)m(vironmen)m(t)g(passed)150 3673 y(to)h(the)g(shell's)f(c)m +(the)h(en)m(vironmen)m(t)g(passed)150 3669 y(to)h(the)g(shell's)f(c)m (hildren.)41 b(Care)30 b(should)g(b)s(e)f(tak)m(en)j(in)e(cases)h -(where)f(this)g(ma)m(y)h(cause)g(a)g(problem.)275 3822 +(where)f(this)g(ma)m(y)h(cause)g(a)g(problem.)275 3818 y(F)-8 b(unctions)33 b(ma)m(y)g(b)s(e)g(recursiv)m(e.)48 b(The)32 b Ft(FUNCNEST)f Fu(v)-5 b(ariable)34 b(ma)m(y)f(b)s(e)f(used)g -(to)i(limit)g(the)f(depth)f(of)150 3932 y(the)27 b(function)f(call)i +(to)i(limit)g(the)f(depth)f(of)150 3927 y(the)27 b(function)f(call)i (stac)m(k)h(and)d(restrict)h(the)g(n)m(um)m(b)s(er)f(of)h(function)f (in)m(v)m(o)s(cations.)42 b(By)27 b(default,)g(no)g(limit)150 -4042 y(is)j(placed)h(on)g(the)f(n)m(um)m(b)s(er)f(of)i(recursiv)m(e)f -(calls.)150 4296 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150 -4455 y Fu(A)23 b Fr(parameter)31 b Fu(is)23 b(an)g(en)m(tit)m(y)i(that) +4037 y(is)j(placed)h(on)g(the)f(n)m(um)m(b)s(er)f(of)i(recursiv)m(e)f +(calls.)150 4298 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150 +4457 y Fu(A)23 b Fr(parameter)31 b Fu(is)23 b(an)g(en)m(tit)m(y)i(that) f(stores)g(v)-5 b(alues.)39 b(It)23 b(can)h(b)s(e)f(a)g Ft(name)p Fu(,)h(a)g(n)m(um)m(b)s(er,)f(or)h(one)f(of)h(the)f(sp)s -(ecial)150 4565 y(c)m(haracters)i(listed)e(b)s(elo)m(w.)39 +(ecial)150 4567 y(c)m(haracters)i(listed)e(b)s(elo)m(w.)39 b(A)23 b Fr(v)-5 b(ariable)30 b Fu(is)23 b(a)g(parameter)h(denoted)f(b) m(y)h(a)f Ft(name)p Fu(.)37 b(A)24 b(v)-5 b(ariable)24 -b(has)f(a)g Fr(v)-5 b(alue)150 4674 y Fu(and)33 b(zero)i(or)f(more)g +b(has)f(a)g Fr(v)-5 b(alue)150 4677 y Fu(and)33 b(zero)i(or)f(more)g Fr(attributes)p Fu(.)52 b(A)m(ttributes)35 b(are)f(assigned)g(using)g -(the)g Ft(declare)e Fu(builtin)h(command)150 4784 y(\(see)e(the)g +(the)g Ft(declare)e Fu(builtin)h(command)150 4786 y(\(see)e(the)g (description)f(of)h(the)f Ft(declare)f Fu(builtin)h(in)g(Section)h(4.2) -g([Bash)g(Builtins],)g(page)g(48\).)275 4933 y(A)d(parameter)h(is)g +g([Bash)g(Builtins],)g(page)g(48\).)275 4934 y(A)d(parameter)h(is)g (set)g(if)f(it)h(has)f(b)s(een)g(assigned)h(a)g(v)-5 b(alue.)40 b(The)28 b(n)m(ull)h(string)f(is)h(a)g(v)-5 -b(alid)28 b(v)-5 b(alue.)41 b(Once)150 5042 y(a)31 b(v)-5 +b(alid)28 b(v)-5 b(alue.)41 b(Once)150 5044 y(a)31 b(v)-5 b(ariable)31 b(is)f(set,)i(it)e(ma)m(y)h(b)s(e)f(unset)g(only)h(b)m(y)f -(using)g(the)g Ft(unset)f Fu(builtin)h(command.)275 5191 +(using)g(the)g Ft(unset)f Fu(builtin)h(command.)275 5192 y(A)g(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)f(assigned)g(to)i(b)m(y)e(a)h (statemen)m(t)h(of)e(the)h(form)390 5340 y Fj(name)p Ft(=[)p Fj(value)p Ft(])p eop end @@ -9480,49 +9484,49 @@ h(of)f(that)h(\014le.)41 b(If)28 b(Bash)g(is)h(started)g(with)f(the)630 (executed,)i(if)f(one)g(is)f(presen)m(t.)42 b(Otherwise,)31 b(it)g(is)f(set)630 847 y(to)h(the)g(\014lename)f(used)g(to)h(in)m(v)m (ok)m(e)h(Bash,)f(as)g(giv)m(en)g(b)m(y)f(argumen)m(t)h(zero.)150 -1016 y Ft(_)432 b Fu(\($)p 716 1016 28 4 v 41 w(,)41 +1015 y Ft(_)432 b Fu(\($)p 716 1015 28 4 v 41 w(,)41 b(an)e(underscore.\))67 b(A)m(t)40 b(shell)f(startup,)i(set)f(to)g(the) -f(absolute)h(pathname)f(used)f(to)630 1126 y(in)m(v)m(ok)m(e)43 +f(absolute)h(pathname)f(used)f(to)630 1125 y(in)m(v)m(ok)m(e)43 b(the)e(shell)g(or)g(shell)g(script)g(b)s(eing)f(executed)i(as)f (passed)g(in)f(the)h(en)m(vironmen)m(t)630 1235 y(or)34 b(argumen)m(t)g(list.)52 b(Subsequen)m(tly)-8 b(,)34 b(expands)f(to)i(the)f(last)h(argumen)m(t)f(to)g(the)g(previous)630 -1345 y(command,)g(after)f(expansion.)48 b(Also)34 b(set)g(to)f(the)g +1344 y(command,)g(after)f(expansion.)48 b(Also)34 b(set)g(to)f(the)g (full)g(pathname)g(used)f(to)i(in)m(v)m(ok)m(e)h(eac)m(h)630 1454 y(command)29 b(executed)h(and)f(placed)g(in)g(the)h(en)m(vironmen) -m(t)f(exp)s(orted)g(to)h(that)g(command.)630 1564 y(When)g(c)m(hec)m +m(t)f(exp)s(orted)g(to)h(that)g(command.)630 1563 y(When)g(c)m(hec)m (king)i(mail,)g(this)e(parameter)h(holds)f(the)g(name)h(of)f(the)h -(mail)g(\014le.)150 1811 y Fs(3.5)68 b(Shell)45 b(Expansions)150 -1971 y Fu(Expansion)27 b(is)i(p)s(erformed)d(on)i(the)g(command)g(line) +(mail)g(\014le.)150 1818 y Fs(3.5)68 b(Shell)45 b(Expansions)150 +1977 y Fu(Expansion)27 b(is)i(p)s(erformed)d(on)i(the)g(command)g(line) h(after)f(it)h(has)f(b)s(een)f(split)h(in)m(to)i Ft(token)p -Fu(s.)38 b(There)28 b(are)150 2080 y(sev)m(en)j(kinds)e(of)i(expansion) -f(p)s(erformed:)225 2225 y Fq(\017)60 b Fu(brace)31 b(expansion)225 -2364 y Fq(\017)60 b Fu(tilde)31 b(expansion)225 2504 +Fu(s.)38 b(There)28 b(are)150 2087 y(sev)m(en)j(kinds)e(of)i(expansion) +f(p)s(erformed:)225 2231 y Fq(\017)60 b Fu(brace)31 b(expansion)225 +2370 y Fq(\017)60 b Fu(tilde)31 b(expansion)225 2509 y Fq(\017)60 b Fu(parameter)31 b(and)f(v)-5 b(ariable)31 -b(expansion)225 2643 y Fq(\017)60 b Fu(command)30 b(substitution)225 -2783 y Fq(\017)60 b Fu(arithmetic)32 b(expansion)225 -2922 y Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 3061 -y Fq(\017)60 b Fu(\014lename)31 b(expansion)275 3236 +b(expansion)225 2648 y Fq(\017)60 b Fu(command)30 b(substitution)225 +2787 y Fq(\017)60 b Fu(arithmetic)32 b(expansion)225 +2926 y Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 3065 +y Fq(\017)60 b Fu(\014lename)31 b(expansion)275 3238 y(The)24 b(order)h(of)h(expansions)f(is:)39 b(brace)25 b(expansion;)j(tilde)e(expansion,)g(parameter)g(and)f(v)-5 -b(ariable)26 b(ex-)150 3345 y(pansion,)j(arithmetic)i(expansion,)f(and) +b(ariable)26 b(ex-)150 3348 y(pansion,)j(arithmetic)i(expansion,)f(and) f(command)g(substitution)g(\(done)g(in)h(a)f(left-to-righ)m(t)k -(fashion\);)150 3455 y(w)m(ord)d(splitting;)h(and)f(\014lename)h -(expansion.)275 3599 y(On)42 b(systems)h(that)h(can)g(supp)s(ort)e(it,) +(fashion\);)150 3458 y(w)m(ord)d(splitting;)h(and)f(\014lename)h +(expansion.)275 3601 y(On)42 b(systems)h(that)h(can)g(supp)s(ort)e(it,) 47 b(there)d(is)f(an)h(additional)g(expansion)f(a)m(v)-5 -b(ailable:)69 b Fr(pro)s(cess)150 3709 y(substitution)p +b(ailable:)69 b Fr(pro)s(cess)150 3711 y(substitution)p Fu(.)50 b(This)33 b(is)h(p)s(erformed)e(at)j(the)f(same)g(time)g(as)g (tilde,)i(parameter,)f(v)-5 b(ariable,)35 b(and)f(arith-)150 -3818 y(metic)d(expansion)g(and)e(command)i(substitution.)275 -3963 y(Only)k(brace)i(expansion,)h(w)m(ord)e(splitting,)j(and)d +3820 y(metic)d(expansion)g(and)e(command)i(substitution.)275 +3964 y(Only)k(brace)i(expansion,)h(w)m(ord)e(splitting,)j(and)d (\014lename)g(expansion)g(can)h(c)m(hange)h(the)e(n)m(um)m(b)s(er)150 -4072 y(of)h(w)m(ords)f(of)g(the)h(expansion;)i(other)e(expansions)f +4074 y(of)h(w)m(ords)f(of)g(the)h(expansion;)i(other)e(expansions)f (expand)g(a)h(single)g(w)m(ord)f(to)h(a)g(single)g(w)m(ord.)58 -b(The)150 4182 y(only)32 b(exceptions)i(to)f(this)f(are)h(the)f +b(The)150 4183 y(only)32 b(exceptions)i(to)f(this)f(are)h(the)f (expansions)g(of)h Ft("$@")e Fu(\(see)i(Section)g(3.4.2)h([Sp)s(ecial)f -(P)m(arameters],)150 4292 y(page)e(20\))h(and)d Ft("${)p +(P)m(arameters],)150 4293 y(page)e(20\))h(and)d Ft("${)p Fj(name)p Ft([@]}")e Fu(\(see)32 b(Section)f(6.7)g([Arra)m(ys],)h(page) -f(90\).)275 4436 y(After)41 b(all)i(expansions,)h Ft(quote)29 +f(90\).)275 4437 y(After)41 b(all)i(expansions,)h Ft(quote)29 b(removal)40 b Fu(\(see)i(Section)h(3.5.9)g([Quote)f(Remo)m(v)-5 b(al],)47 b(page)42 b(32\))h(is)150 4546 y(p)s(erformed.)150 4755 y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 4902 y @@ -10049,62 +10053,63 @@ y Ft(P)432 b Fu(The)22 b(expansion)h(is)g(a)g(string)g(that)g(is)g(the) g(result)g(of)g(expanding)f(the)h(v)-5 b(alue)24 b(of)1110 408 y Fr(parameter)31 b Fu(as)24 b(if)f(it)h(w)m(ere)g(a)g(prompt)f (string)h(\(see)g(Section)h(6.9)g([Con)m(trolling)1110 -518 y(the)31 b(Prompt],)f(page)h(93\).)630 685 y Ft(A)432 +518 y(the)31 b(Prompt],)f(page)h(93\).)630 678 y Ft(A)432 b Fu(The)24 b(expansion)g(is)g(a)h(string)f(in)g(the)g(form)g(of)h(an)f -(assignmen)m(t)h(statemen)m(t)h(or)1110 795 y Ft(declare)h +(assignmen)m(t)h(statemen)m(t)h(or)1110 787 y Ft(declare)h Fu(command)i(that,)h(if)f(ev)-5 b(aluated,)31 b(will)e(recreate)i -Fr(parameter)36 b Fu(with)1110 905 y(its)31 b(attributes)g(and)e(v)-5 -b(alue.)630 1072 y Ft(a)432 b Fu(The)30 b(expansion)g(is)g(a)h(string)f +Fr(parameter)36 b Fu(with)1110 897 y(its)31 b(attributes)g(and)e(v)-5 +b(alue.)630 1057 y Ft(a)432 b Fu(The)30 b(expansion)g(is)g(a)h(string)f (consisting)h(of)g(\015ag)g(v)-5 b(alues)30 b(represen)m(ting)h -Fr(pa-)1110 1181 y(rameter)7 b Fu('s)31 b(attributes.)630 -1349 y(If)e Fr(parameter)37 b Fu(is)30 b(`)p Ft(@)p Fu(')g(or)g(`)p +Fr(pa-)1110 1166 y(rameter)7 b Fu('s)31 b(attributes.)630 +1326 y(If)e Fr(parameter)37 b Fu(is)30 b(`)p Ft(@)p Fu(')g(or)g(`)p Ft(*)p Fu(',)g(the)g(op)s(eration)g(is)g(applied)f(to)i(eac)m(h)g(p)s -(ositional)f(parameter)630 1458 y(in)24 b(turn,)g(and)f(the)h +(ositional)f(parameter)630 1436 y(in)24 b(turn,)g(and)f(the)h (expansion)g(is)g(the)g(resultan)m(t)h(list.)39 b(If)23 b Fr(parameter)31 b Fu(is)24 b(an)g(arra)m(y)g(v)-5 b(ariable)630 -1568 y(subscripted)24 b(with)h(`)p Ft(@)p Fu(')h(or)g(`)p +1545 y(subscripted)24 b(with)h(`)p Ft(@)p Fu(')h(or)g(`)p Ft(*)p Fu(',)h(the)e(op)s(eration)h(is)g(applied)f(to)h(eac)m(h)h(mem)m -(b)s(er)e(of)h(the)f(arra)m(y)630 1678 y(in)30 b(turn,)g(and)f(the)i -(expansion)f(is)h(the)f(resultan)m(t)h(list.)630 1816 +(b)s(er)e(of)h(the)f(arra)m(y)630 1655 y(in)30 b(turn,)g(and)f(the)i +(expansion)f(is)h(the)f(resultan)m(t)h(list.)630 1789 y(The)22 b(result)g(of)g(the)h(expansion)f(is)g(sub)5 b(ject)22 b(to)h(w)m(ord)f(splitting)g(and)g(pathname)g(expansion)630 -1926 y(as)31 b(describ)s(ed)e(b)s(elo)m(w.)150 2133 y -Fk(3.5.4)63 b(Command)41 b(Substitution)150 2280 y Fu(Command)f +1899 y(as)31 b(describ)s(ed)e(b)s(elo)m(w.)150 2099 y +Fk(3.5.4)63 b(Command)41 b(Substitution)150 2246 y Fu(Command)f (substitution)h(allo)m(ws)i(the)e(output)g(of)h(a)f(command)g(to)h -(replace)g(the)g(command)f(itself.)150 2389 y(Command)29 +(replace)g(the)g(command)f(itself.)150 2355 y(Command)29 b(substitution)h(o)s(ccurs)h(when)e(a)i(command)f(is)g(enclosed)h(as)g -(follo)m(ws:)390 2532 y Ft($\()p Fj(command)p Ft(\))150 -2674 y Fu(or)390 2816 y Ft(`)p Fj(command)p Ft(`)150 -2959 y Fu(Bash)45 b(p)s(erforms)f(the)h(expansion)f(b)m(y)h(executing)i -Fr(command)h Fu(and)c(replacing)i(the)f(command)g(sub-)150 -3068 y(stitution)c(with)f(the)g(standard)g(output)g(of)g(the)g -(command,)j(with)d(an)m(y)h(trailing)g(newlines)f(deleted.)150 -3178 y(Em)m(b)s(edded)30 b(newlines)h(are)h(not)f(deleted,)i(but)e -(they)g(ma)m(y)h(b)s(e)f(remo)m(v)m(ed)i(during)d(w)m(ord)h(splitting.) -44 b(The)150 3288 y(command)23 b(substitution)g Ft($\(cat)29 -b Fj(file)p Ft(\))22 b Fu(can)i(b)s(e)f(replaced)g(b)m(y)h(the)f(equiv) --5 b(alen)m(t)25 b(but)e(faster)h Ft($\(<)29 b Fj(file)p -Ft(\))p Fu(.)275 3430 y(When)k(the)i(old-st)m(yle)h(bac)m(kquote)f -(form)f(of)g(substitution)g(is)g(used,)h(bac)m(kslash)f(retains)h(its)f -(literal)150 3540 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e -(`)p Ft($)p Fu(',)j(`)p Ft(`)p Fu(',)f(or)e(`)p Ft(\\)p -Fu('.)64 b(The)38 b(\014rst)f(bac)m(kquote)j(not)e(preceded)g(b)m(y)g -(a)150 3649 y(bac)m(kslash)k(terminates)f(the)h(command)e -(substitution.)72 b(When)41 b(using)f(the)i Ft($\()p -Fj(command)p Ft(\))c Fu(form,)43 b(all)150 3759 y(c)m(haracters)32 -b(b)s(et)m(w)m(een)f(the)f(paren)m(theses)h(mak)m(e)g(up)f(the)g -(command;)h(none)f(are)h(treated)g(sp)s(ecially)-8 b(.)275 -3901 y(Command)22 b(substitutions)g(ma)m(y)i(b)s(e)e(nested.)39 -b(T)-8 b(o)23 b(nest)g(when)f(using)h(the)g(bac)m(kquoted)h(form,)g -(escap)s(e)150 4011 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m -(kslashes.)275 4153 y(If)e(the)i(substitution)e(app)s(ears)h(within)g -(double)f(quotes,)i(w)m(ord)f(splitting)h(and)f(\014lename)g(expansion) -150 4263 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150 -4470 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150 4617 +(follo)m(ws:)390 2490 y Ft($\()p Fj(command)p Ft(\))150 +2625 y Fu(or)390 2760 y Ft(`)p Fj(command)p Ft(`)150 +2895 y Fu(Bash)20 b(p)s(erforms)f(the)i(expansion)f(b)m(y)g(executing)i +Fr(command)h Fu(in)d(a)h(subshell)e(en)m(vironmen)m(t)i(and)f +(replacing)150 3004 y(the)40 b(command)g(substitution)f(with)h(the)g +(standard)f(output)g(of)h(the)g(command,)i(with)e(an)m(y)g(trailing)150 +3114 y(newlines)e(deleted.)64 b(Em)m(b)s(edded)37 b(newlines)h(are)g +(not)g(deleted,)j(but)d(they)g(ma)m(y)h(b)s(e)e(remo)m(v)m(ed)i(during) +150 3223 y(w)m(ord)30 b(splitting.)42 b(The)30 b(command)g +(substitution)h Ft($\(cat)e Fj(file)p Ft(\))g Fu(can)h(b)s(e)g +(replaced)h(b)m(y)g(the)f(equiv)-5 b(alen)m(t)150 3333 +y(but)30 b(faster)g Ft($\(<)g Fj(file)p Ft(\))p Fu(.)275 +3468 y(When)j(the)i(old-st)m(yle)h(bac)m(kquote)f(form)f(of)g +(substitution)g(is)g(used,)h(bac)m(kslash)f(retains)h(its)f(literal)150 +3577 y(meaning)k(except)h(when)e(follo)m(w)m(ed)j(b)m(y)e(`)p +Ft($)p Fu(',)j(`)p Ft(`)p Fu(',)f(or)e(`)p Ft(\\)p Fu('.)64 +b(The)38 b(\014rst)f(bac)m(kquote)j(not)e(preceded)g(b)m(y)g(a)150 +3687 y(bac)m(kslash)k(terminates)f(the)h(command)e(substitution.)72 +b(When)41 b(using)f(the)i Ft($\()p Fj(command)p Ft(\))c +Fu(form,)43 b(all)150 3797 y(c)m(haracters)32 b(b)s(et)m(w)m(een)f(the) +f(paren)m(theses)h(mak)m(e)g(up)f(the)g(command;)h(none)f(are)h +(treated)g(sp)s(ecially)-8 b(.)275 3931 y(Command)22 +b(substitutions)g(ma)m(y)i(b)s(e)e(nested.)39 b(T)-8 +b(o)23 b(nest)g(when)f(using)h(the)g(bac)m(kquoted)h(form,)g(escap)s(e) +150 4041 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m(kslashes.)275 +4176 y(If)e(the)i(substitution)e(app)s(ears)h(within)g(double)f +(quotes,)i(w)m(ord)f(splitting)h(and)f(\014lename)g(expansion)150 +4285 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150 +4485 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150 4632 y Fu(Arithmetic)25 b(expansion)g(allo)m(ws)g(the)g(ev)-5 b(aluation)26 b(of)f(an)f(arithmetic)i(expression)e(and)g(the)g -(substitution)150 4726 y(of)31 b(the)f(result.)41 b(The)30 -b(format)g(for)g(arithmetic)i(expansion)e(is:)390 4869 +(substitution)150 4742 y(of)31 b(the)f(result.)41 b(The)30 +b(format)g(for)g(arithmetic)i(expansion)e(is:)390 4876 y Ft($\(\()47 b Fj(expression)e Ft(\)\))275 5011 y Fu(The)33 b(expression)g(is)h(treated)g(as)g(if)g(it)g(w)m(ere)g(within)f(double) h(quotes,)h(but)e(a)h(double)f(quote)h(inside)150 5121 @@ -10125,252 +10130,251 @@ y(The)34 b(ev)-5 b(aluation)37 b(is)f(p)s(erformed)e(according)i(to)g f(is)g(in)m(v)-5 b(alid,)32 b(Bash)e(prin)m(ts)g(a)h(message)g (indicating)h(failure)150 518 y(to)f(the)g(standard)e(error)h(and)g(no) g(substitution)g(o)s(ccurs.)150 713 y Fk(3.5.6)63 b(Pro)s(cess)42 -b(Substitution)150 860 y Fu(Pro)s(cess)i(substitution)g(is)g(supp)s -(orted)f(on)h(systems)g(that)h(supp)s(ort)d(named)i(pip)s(es)f(\()p -Fm(fif)n(o)p Fu(s\))i(or)f(the)150 969 y Ft(/dev/fd)28 -b Fu(metho)s(d)i(of)h(naming)f(op)s(en)g(\014les.)40 -b(It)31 b(tak)m(es)h(the)e(form)g(of)390 1101 y Ft(<\()p -Fj(list)p Ft(\))150 1234 y Fu(or)390 1366 y Ft(>\()p -Fj(list)p Ft(\))150 1498 y Fu(The)c(pro)s(cess)f Fr(list)k -Fu(is)e(run)d(with)i(its)h(input)e(or)h(output)g(connected)h(to)g(a)g -Fm(fif)n(o)f Fu(or)g(some)g(\014le)h(in)f Ft(/dev/fd)p -Fu(.)150 1608 y(The)i(name)h(of)g(this)f(\014le)h(is)g(passed)f(as)h -(an)f(argumen)m(t)h(to)h(the)f(curren)m(t)f(command)h(as)f(the)h -(result)g(of)g(the)150 1717 y(expansion.)40 b(If)29 b(the)g -Ft(>\()p Fj(list)p Ft(\))f Fu(form)g(is)i(used,)f(writing)g(to)h(the)f -(\014le)h(will)f(pro)m(vide)h(input)e(for)h Fr(list)p -Fu(.)41 b(If)29 b(the)150 1827 y Ft(<\()p Fj(list)p Ft(\))24 -b Fu(form)h(is)h(used,)g(the)g(\014le)g(passed)g(as)g(an)f(argumen)m(t) -i(should)e(b)s(e)g(read)g(to)i(obtain)f(the)g(output)g(of)150 -1936 y Fr(list)p Fu(.)41 b(Note)31 b(that)f(no)g(space)g(ma)m(y)g(app)s -(ear)f(b)s(et)m(w)m(een)h(the)g Ft(<)f Fu(or)h Ft(>)f -Fu(and)g(the)h(left)g(paren)m(thesis,)h(otherwise)150 -2046 y(the)g(construct)f(w)m(ould)g(b)s(e)g(in)m(terpreted)h(as)f(a)h -(redirection.)275 2178 y(When)36 b(a)m(v)-5 b(ailable,)40 +b(Substitution)150 860 y Fu(Pro)s(cess)33 b(substitution)g(allo)m(ws)i +(a)e(pro)s(cess's)g(input)f(or)h(output)g(to)h(b)s(e)f(referred)f(to)i +(using)f(a)g(\014lename.)150 969 y(It)d(tak)m(es)i(the)f(form)f(of)390 +1101 y Ft(<\()p Fj(list)p Ft(\))150 1234 y Fu(or)390 +1366 y Ft(>\()p Fj(list)p Ft(\))150 1498 y Fu(The)e(pro)s(cess)h +Fr(list)j Fu(is)d(run)e(async)m(hronously)-8 b(,)30 b(and)e(its)i +(input)e(or)h(output)f(app)s(ears)h(as)g(a)g(\014lename.)41 +b(This)150 1608 y(\014lename)25 b(is)g(passed)g(as)g(an)g(argumen)m(t)h +(to)g(the)f(curren)m(t)g(command)g(as)g(the)g(result)g(of)g(the)h +(expansion.)38 b(If)150 1717 y(the)28 b Ft(>\()p Fj(list)p +Ft(\))d Fu(form)i(is)g(used,)h(writing)f(to)h(the)g(\014le)f(will)h +(pro)m(vide)g(input)e(for)h Fr(list)p Fu(.)41 b(If)26 +b(the)i Ft(<\()p Fj(list)p Ft(\))d Fu(form)150 1827 y(is)g(used,)g(the) +f(\014le)h(passed)f(as)h(an)f(argumen)m(t)h(should)e(b)s(e)h(read)h(to) +g(obtain)g(the)f(output)g(of)h Fr(list)p Fu(.)40 b(Note)25 +b(that)150 1936 y(no)33 b(space)g(ma)m(y)g(app)s(ear)f(b)s(et)m(w)m +(een)i(the)f Ft(<)f Fu(or)h Ft(>)f Fu(and)g(the)h(left)h(paren)m +(thesis,)f(otherwise)h(the)f(construct)150 2046 y(w)m(ould)j(b)s(e)g +(in)m(terpreted)g(as)h(a)f(redirection.)59 b(Pro)s(cess)36 +b(substitution)g(is)h(supp)s(orted)d(on)i(systems)g(that)150 +2155 y(supp)s(ort)29 b(named)h(pip)s(es)f(\()p Fm(fif)n(o)p +Fu(s\))h(or)h(the)f Ft(/dev/fd)f Fu(metho)s(d)h(of)g(naming)g(op)s(en)g +(\014les.)275 2288 y(When)36 b(a)m(v)-5 b(ailable,)40 b(pro)s(cess)c(substitution)h(is)f(p)s(erformed)f(sim)m(ultaneously)i -(with)g(parameter)g(and)150 2288 y(v)-5 b(ariable)31 +(with)g(parameter)g(and)150 2397 y(v)-5 b(ariable)31 b(expansion,)g(command)f(substitution,)g(and)g(arithmetic)i(expansion.) -150 2482 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150 -2629 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h(parameter)g +150 2592 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150 +2739 y Fu(The)30 b(shell)h(scans)g(the)g(results)f(of)h(parameter)g (expansion,)g(command)g(substitution,)g(and)f(arithmetic)150 -2739 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h -(quotes)h(for)f(w)m(ord)g(splitting.)275 2871 y(The)e(shell)g(treats)i +2848 y(expansion)g(that)h(did)f(not)g(o)s(ccur)h(within)e(double)h +(quotes)h(for)f(w)m(ord)g(splitting.)275 2981 y(The)e(shell)g(treats)i (eac)m(h)g(c)m(haracter)g(of)f Ft($IFS)e Fu(as)i(a)g(delimiter,)h(and)e -(splits)g(the)h(results)f(of)h(the)g(other)150 2981 y(expansions)22 +(splits)g(the)h(results)f(of)h(the)g(other)150 3090 y(expansions)22 b(in)m(to)i(w)m(ords)e(using)h(these)g(c)m(haracters)h(as)f(\014eld)f (terminators.)39 b(If)22 b Ft(IFS)g Fu(is)h(unset,)h(or)e(its)h(v)-5 -b(alue)150 3090 y(is)36 b(exactly)j Ft()p +b(alue)150 3200 y(is)36 b(exactly)j Ft()p Fu(,)32 b(the)37 b(default,)h(then)e(sequences)h(of)67 -b Ft()p Fu(,)36 b Ft()p Fu(,)h(and)150 3200 +b Ft()p Fu(,)36 b Ft()p Fu(,)h(and)150 3309 y Ft()28 b Fu(at)k(the)f(b)s(eginning)f(and)h(end)f(of)h(the)g (results)g(of)g(the)g(previous)g(expansions)f(are)i(ignored,)150 -3309 y(and)k(an)m(y)h(sequence)h(of)f Ft(IFS)f Fu(c)m(haracters)i(not)f +3419 y(and)k(an)m(y)h(sequence)h(of)f Ft(IFS)f Fu(c)m(haracters)i(not)f (at)h(the)f(b)s(eginning)f(or)h(end)f(serv)m(es)h(to)h(delimit)f(w)m -(ords.)150 3419 y(If)43 b Ft(IFS)f Fu(has)h(a)h(v)-5 +(ords.)150 3529 y(If)43 b Ft(IFS)f Fu(has)h(a)h(v)-5 b(alue)43 b(other)h(than)f(the)g(default,)k(then)c(sequences)h(of)f -(the)h(whitespace)f(c)m(haracters)150 3529 y Ft(space)26 -b Fu(and)h Ft(tab)g Fu(are)h(ignored)g(at)h(the)f(b)s(eginning)f(and)g -(end)g(of)h(the)g(w)m(ord,)g(as)g(long)g(as)g(the)g(whitespace)150 -3638 y(c)m(haracter)34 b(is)f(in)f(the)h(v)-5 b(alue)33 -b(of)f Ft(IFS)g Fu(\(an)h Ft(IFS)e Fu(whitespace)j(c)m(haracter\).)49 -b(An)m(y)32 b(c)m(haracter)i(in)f Ft(IFS)e Fu(that)150 -3748 y(is)f(not)h Ft(IFS)f Fu(whitespace,)h(along)g(with)f(an)m(y)h -(adjacen)m(t)h Ft(IFS)d Fu(whitespace)i(c)m(haracters,)h(delimits)f(a)g -(\014eld.)150 3857 y(A)h(sequence)h(of)f Ft(IFS)f Fu(whitespace)i(c)m -(haracters)h(is)e(also)h(treated)g(as)g(a)f(delimiter.)47 -b(If)32 b(the)g(v)-5 b(alue)33 b(of)f Ft(IFS)150 3967 -y Fu(is)e(n)m(ull,)h(no)f(w)m(ord)g(splitting)h(o)s(ccurs.)275 -4099 y(Explicit)44 b(n)m(ull)f(argumen)m(ts)g(\()p Ft("")g +(the)h(whitespace)f(c)m(haracters)150 3638 y Ft(space)p +Fu(,)29 b Ft(tab)p Fu(,)h(and)g Ft(newline)e Fu(are)j(ignored)g(at)g +(the)f(b)s(eginning)g(and)g(end)g(of)g(the)h(w)m(ord,)f(as)h(long)g(as) +g(the)150 3748 y(whitespace)c(c)m(haracter)h(is)f(in)f(the)g(v)-5 +b(alue)27 b(of)g Ft(IFS)e Fu(\(an)i Ft(IFS)e Fu(whitespace)i(c)m +(haracter\).)42 b(An)m(y)26 b(c)m(haracter)i(in)150 3857 +y Ft(IFS)c Fu(that)h(is)g(not)f Ft(IFS)g Fu(whitespace,)j(along)f(with) +e(an)m(y)h(adjacen)m(t)h Ft(IFS)e Fu(whitespace)h(c)m(haracters,)i +(delimits)150 3967 y(a)k(\014eld.)40 b(A)31 b(sequence)g(of)f +Ft(IFS)g Fu(whitespace)h(c)m(haracters)h(is)e(also)h(treated)h(as)f(a)f +(delimiter.)42 b(If)30 b(the)g(v)-5 b(alue)150 4076 y(of)31 +b Ft(IFS)e Fu(is)h(n)m(ull,)h(no)f(w)m(ord)g(splitting)h(o)s(ccurs.)275 +4209 y(Explicit)44 b(n)m(ull)f(argumen)m(ts)g(\()p Ft("")g Fu(or)h Ft('')p Fu(\))f(are)g(retained.)80 b(Unquoted)43 -b(implicit)h(n)m(ull)f(argumen)m(ts,)150 4209 y(resulting)24 +b(implicit)h(n)m(ull)f(argumen)m(ts,)150 4318 y(resulting)24 b(from)f(the)g(expansion)g(of)h(parameters)g(that)g(ha)m(v)m(e)h(no)e (v)-5 b(alues,)25 b(are)f(remo)m(v)m(ed.)40 b(If)23 b(a)g(parameter)150 -4318 y(with)30 b(no)g(v)-5 b(alue)31 b(is)g(expanded)e(within)h(double) +4428 y(with)30 b(no)g(v)-5 b(alue)31 b(is)g(expanded)e(within)h(double) g(quotes,)h(a)g(n)m(ull)f(argumen)m(t)h(results)f(and)g(is)g(retained.) -275 4450 y(Note)h(that)g(if)g(no)f(expansion)g(o)s(ccurs,)g(no)h -(splitting)g(is)f(p)s(erformed.)150 4645 y Fk(3.5.8)63 -b(Filename)41 b(Expansion)150 4792 y Fu(After)30 b(w)m(ord)f +275 4560 y(Note)h(that)g(if)g(no)f(expansion)g(o)s(ccurs,)g(no)h +(splitting)g(is)f(p)s(erformed.)150 4755 y Fk(3.5.8)63 +b(Filename)41 b(Expansion)150 4902 y Fu(After)30 b(w)m(ord)f (splitting,)i(unless)d(the)i Ft(-f)f Fu(option)h(has)f(b)s(een)g(set)h (\(see)g(Section)h(4.3.1)g([The)e(Set)h(Builtin],)150 -4902 y(page)d(59\),)i(Bash)d(scans)h(eac)m(h)h(w)m(ord)e(for)g(the)h(c) +5011 y(page)d(59\),)i(Bash)d(scans)h(eac)m(h)h(w)m(ord)e(for)g(the)h(c) m(haracters)g(`)p Ft(*)p Fu(',)h(`)p Ft(?)p Fu(',)g(and)e(`)p Ft([)p Fu('.)39 b(If)26 b(one)h(of)g(these)f(c)m(haracters)150 -5011 y(app)s(ears,)h(then)f(the)h(w)m(ord)f(is)h(regarded)g(as)g(a)g +5121 y(app)s(ears,)h(then)f(the)h(w)m(ord)f(is)h(regarded)g(as)g(a)g Fr(pattern)p Fu(,)g(and)g(replaced)g(with)f(an)h(alphab)s(etically)h -(sorted)150 5121 y(list)k(of)f(\014lenames)g(matc)m(hing)h(the)f +(sorted)150 5230 y(list)k(of)f(\014lenames)g(matc)m(hing)h(the)f (pattern)g(\(see)h(Section)f(3.5.8.1)j([P)m(attern)e(Matc)m(hing],)h -(page)f(31\).)43 b(If)150 5230 y(no)26 b(matc)m(hing)i(\014lenames)e +(page)f(31\).)43 b(If)150 5340 y(no)26 b(matc)m(hing)i(\014lenames)e (are)h(found,)f(and)g(the)h(shell)f(option)h Ft(nullglob)d -Fu(is)j(disabled,)g(the)g(w)m(ord)f(is)g(left)150 5340 -y(unc)m(hanged.)40 b(If)30 b(the)g Ft(nullglob)e Fu(option)i(is)h(set,) -f(and)g(no)g(matc)m(hes)h(are)g(found,)e(the)h(w)m(ord)g(is)g(remo)m(v) -m(ed.)p eop end +Fu(is)j(disabled,)g(the)g(w)m(ord)f(is)g(left)p eop end %%Page: 31 37 TeXDict begin 31 36 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(31)150 299 -y(If)32 b(the)g Ft(failglob)e Fu(shell)i(option)h(is)f(set,)h(and)f(no) -g(matc)m(hes)h(are)g(found,)e(an)h(error)g(message)h(is)f(prin)m(ted) -150 408 y(and)e(the)g(command)g(is)h(not)f(executed.)42 +y(unc)m(hanged.)40 b(If)30 b(the)g Ft(nullglob)e Fu(option)i(is)h(set,) +f(and)g(no)g(matc)m(hes)h(are)g(found,)e(the)h(w)m(ord)g(is)g(remo)m(v) +m(ed.)150 408 y(If)i(the)g Ft(failglob)e Fu(shell)i(option)h(is)f(set,) +h(and)f(no)g(matc)m(hes)h(are)g(found,)e(an)h(error)g(message)h(is)f +(prin)m(ted)150 518 y(and)e(the)g(command)g(is)h(not)f(executed.)42 b(If)30 b(the)g(shell)h(option)g Ft(nocaseglob)c Fu(is)k(enabled,)f -(the)h(matc)m(h)g(is)150 518 y(p)s(erformed)e(without)h(regard)h(to)g +(the)h(matc)m(h)g(is)150 628 y(p)s(erformed)e(without)h(regard)h(to)g (the)f(case)i(of)e(alphab)s(etic)h(c)m(haracters.)275 -657 y(When)23 b(a)h(pattern)f(is)h(used)f(for)g(\014lename)h +766 y(When)23 b(a)h(pattern)f(is)h(used)f(for)g(\014lename)h (expansion,)h(the)e(c)m(haracter)i(`)p Ft(.)p Fu(')f(at)g(the)g(start)g -(of)g(a)g(\014lename)150 766 y(or)f(immediately)i(follo)m(wing)g(a)f +(of)g(a)g(\014lename)150 876 y(or)f(immediately)i(follo)m(wing)g(a)f (slash)f(m)m(ust)h(b)s(e)f(matc)m(hed)h(explicitly)-8 b(,)27 b(unless)c(the)g(shell)h(option)g Ft(dotglob)150 -876 y Fu(is)33 b(set.)51 b(When)33 b(matc)m(hing)h(a)g(\014lename,)h +985 y Fu(is)33 b(set.)51 b(When)33 b(matc)m(hing)h(a)g(\014lename,)h (the)e(slash)h(c)m(haracter)h(m)m(ust)e(alw)m(a)m(ys)i(b)s(e)e(matc)m -(hed)h(explicitly)-8 b(.)150 985 y(In)30 b(other)g(cases,)i(the)e(`)p +(hed)h(explicitly)-8 b(.)150 1095 y(In)30 b(other)g(cases,)i(the)e(`)p Ft(.)p Fu(')h(c)m(haracter)h(is)e(not)h(treated)g(sp)s(ecially)-8 -b(.)275 1124 y(See)28 b(the)g(description)g(of)g Ft(shopt)e +b(.)275 1234 y(See)28 b(the)g(description)g(of)g Ft(shopt)e Fu(in)i(Section)g(4.3.2)i([The)e(Shopt)f(Builtin],)i(page)g(63,)g(for)f -(a)g(descrip-)150 1234 y(tion)j(of)f(the)h Ft(nocaseglob)p +(a)g(descrip-)150 1343 y(tion)j(of)f(the)h Ft(nocaseglob)p Fu(,)d Ft(nullglob)p Fu(,)g Ft(failglob)p Fu(,)h(and)g -Ft(dotglob)g Fu(options.)275 1372 y(The)j Ft(GLOBIGNORE)f +Ft(dotglob)g Fu(options.)275 1482 y(The)j Ft(GLOBIGNORE)f Fu(shell)i(v)-5 b(ariable)34 b(ma)m(y)g(b)s(e)f(used)f(to)i(restrict)g -(the)g(set)f(of)h(\014lenames)f(matc)m(hing)i(a)150 1482 +(the)g(set)f(of)h(\014lenames)f(matc)m(hing)i(a)150 1592 y(pattern.)k(If)25 b Ft(GLOBIGNORE)e Fu(is)j(set,)h(eac)m(h)g(matc)m (hing)g(\014lename)f(that)g(also)h(matc)m(hes)f(one)g(of)g(the)g -(patterns)150 1592 y(in)36 b Ft(GLOBIGNORE)d Fu(is)j(remo)m(v)m(ed)h +(patterns)150 1701 y(in)36 b Ft(GLOBIGNORE)d Fu(is)j(remo)m(v)m(ed)h (from)e(the)i(list)f(of)g(matc)m(hes.)59 b(If)36 b(the)g -Ft(nocaseglob)d Fu(option)k(is)f(set,)i(the)150 1701 +Ft(nocaseglob)d Fu(option)k(is)f(set,)i(the)150 1811 y(matc)m(hing)i(against)g(the)f(patterns)f(in)h Ft(GLOBIGNORE)d Fu(is)j(p)s(erformed)e(without)h(regard)h(to)h(case.)66 -b(The)150 1811 y(\014lenames)41 b Ft(.)f Fu(and)g Ft(..)h +b(The)150 1920 y(\014lenames)41 b Ft(.)f Fu(and)g Ft(..)h Fu(are)g(alw)m(a)m(ys)h(ignored)f(when)f Ft(GLOBIGNORE)e Fu(is)i(set)i(and)e(not)h(n)m(ull.)72 b(Ho)m(w)m(ev)m(er,)150 -1920 y(setting)30 b Ft(GLOBIGNORE)d Fu(to)j(a)f(non-n)m(ull)g(v)-5 +2030 y(setting)30 b Ft(GLOBIGNORE)d Fu(to)j(a)f(non-n)m(ull)g(v)-5 b(alue)30 b(has)f(the)g(e\013ect)i(of)f(enabling)f(the)h -Ft(dotglob)d Fu(shell)i(option,)150 2030 y(so)j(all)h(other)f +Ft(dotglob)d Fu(shell)i(option,)150 2139 y(so)j(all)h(other)f (\014lenames)g(b)s(eginning)f(with)h(a)g(`)p Ft(.)p Fu(')g(will)h(matc) m(h.)46 b(T)-8 b(o)32 b(get)h(the)f(old)g(b)s(eha)m(vior)g(of)h -(ignoring)150 2139 y(\014lenames)c(b)s(eginning)f(with)h(a)h(`)p +(ignoring)150 2249 y(\014lenames)c(b)s(eginning)f(with)h(a)h(`)p Ft(.)p Fu(',)f(mak)m(e)h(`)p Ft(.*)p Fu(')f(one)h(of)f(the)g(patterns)g (in)g Ft(GLOBIGNORE)p Fu(.)37 b(The)29 b Ft(dotglob)150 -2249 y Fu(option)i(is)f(disabled)g(when)g Ft(GLOBIGNORE)d -Fu(is)k(unset.)150 2452 y Fk(3.5.8.1)63 b(P)m(attern)40 -b(Matc)m(hing)150 2599 y Fu(An)m(y)24 b(c)m(haracter)h(that)f(app)s +2359 y Fu(option)i(is)f(disabled)g(when)g Ft(GLOBIGNORE)d +Fu(is)k(unset.)150 2562 y Fk(3.5.8.1)63 b(P)m(attern)40 +b(Matc)m(hing)150 2709 y Fu(An)m(y)24 b(c)m(haracter)h(that)f(app)s (ears)f(in)g(a)h(pattern,)i(other)e(than)f(the)h(sp)s(ecial)g(pattern)g -(c)m(haracters)h(describ)s(ed)150 2709 y(b)s(elo)m(w,)31 +(c)m(haracters)h(describ)s(ed)150 2819 y(b)s(elo)m(w,)31 b(matc)m(hes)g(itself.)42 b(The)29 b Fm(nul)h Fu(c)m(haracter)i(ma)m(y) e(not)h(o)s(ccur)f(in)g(a)h(pattern.)40 b(A)31 b(bac)m(kslash)g(escap)s -(es)150 2819 y(the)38 b(follo)m(wing)g(c)m(haracter;)43 +(es)150 2928 y(the)38 b(follo)m(wing)g(c)m(haracter;)43 b(the)37 b(escaping)i(bac)m(kslash)e(is)h(discarded)f(when)f(matc)m -(hing.)63 b(The)36 b(sp)s(ecial)150 2928 y(pattern)30 +(hing.)63 b(The)36 b(sp)s(ecial)150 3038 y(pattern)30 b(c)m(haracters)i(m)m(ust)f(b)s(e)e(quoted)i(if)f(they)h(are)f(to)i(b)s -(e)d(matc)m(hed)i(literally)-8 b(.)275 3067 y(The)29 +(e)d(matc)m(hed)i(literally)-8 b(.)275 3176 y(The)29 b(sp)s(ecial)i(pattern)g(c)m(haracters)h(ha)m(v)m(e)f(the)g(follo)m -(wing)h(meanings:)150 3232 y Ft(*)432 b Fu(Matc)m(hes)31 +(wing)h(meanings:)150 3342 y Ft(*)432 b Fu(Matc)m(hes)31 b(an)m(y)e(string,)h(including)f(the)g(n)m(ull)g(string.)41 b(When)29 b(the)g Ft(globstar)e Fu(shell)i(option)630 -3342 y(is)37 b(enabled,)h(and)e(`)p Ft(*)p Fu(')h(is)g(used)f(in)g(a)h +3452 y(is)37 b(enabled,)h(and)e(`)p Ft(*)p Fu(')h(is)g(used)f(in)g(a)h (\014lename)g(expansion)g(con)m(text,)j(t)m(w)m(o)e(adjacen)m(t)g(`)p -Ft(*)p Fu('s)630 3452 y(used)f(as)g(a)h(single)g(pattern)g(will)f(matc) +Ft(*)p Fu('s)630 3561 y(used)f(as)g(a)h(single)g(pattern)g(will)f(matc) m(h)i(all)f(\014les)f(and)g(zero)h(or)g(more)f(directories)i(and)630 -3561 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p +3671 y(sub)s(directories.)g(If)25 b(follo)m(w)m(ed)j(b)m(y)e(a)g(`)p Ft(/)p Fu(',)h(t)m(w)m(o)g(adjacen)m(t)h(`)p Ft(*)p Fu('s)e(will)g -(matc)m(h)h(only)f(directories)630 3671 y(and)k(sub)s(directories.)150 -3834 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.) -150 3998 y Ft([...)o(])241 b Fu(Matc)m(hes)27 b(an)m(y)e(one)g(of)g +(matc)m(h)h(only)f(directories)630 3780 y(and)k(sub)s(directories.)150 +3944 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.) +150 4108 y Ft([...)o(])241 b Fu(Matc)m(hes)27 b(an)m(y)e(one)g(of)g (the)g(enclosed)g(c)m(haracters.)41 b(A)25 b(pair)f(of)h(c)m(haracters) -i(separated)e(b)m(y)g(a)630 4108 y(h)m(yphen)k(denotes)i(a)g +i(separated)e(b)m(y)g(a)630 4217 y(h)m(yphen)k(denotes)i(a)g Fr(range)g(expression)p Fu(;)f(an)m(y)h(c)m(haracter)h(that)f(falls)g -(b)s(et)m(w)m(een)g(those)g(t)m(w)m(o)630 4217 y(c)m(haracters,)d +(b)s(et)m(w)m(een)g(those)g(t)m(w)m(o)630 4327 y(c)m(haracters,)d (inclusiv)m(e,)f(using)d(the)h(curren)m(t)f(lo)s(cale's)j(collating)g -(sequence)e(and)f(c)m(haracter)630 4327 y(set,)31 b(is)f(matc)m(hed.)42 +(sequence)e(and)f(c)m(haracter)630 4436 y(set,)31 b(is)f(matc)m(hed.)42 b(If)30 b(the)g(\014rst)g(c)m(haracter)i(follo)m(wing)g(the)e(`)p Ft([)p Fu(')h(is)f(a)h(`)p Ft(!)p Fu(')f(or)g(a)h(`)p -Ft(^)p Fu(')g(then)f(an)m(y)630 4436 y(c)m(haracter)c(not)f(enclosed)g +Ft(^)p Fu(')g(then)f(an)m(y)630 4546 y(c)m(haracter)c(not)f(enclosed)g (is)g(matc)m(hed.)40 b(A)25 b(`)p Fq(\000)p Fu(')f(ma)m(y)i(b)s(e)e -(matc)m(hed)h(b)m(y)f(including)h(it)g(as)g(the)630 4546 +(matc)m(hed)h(b)m(y)f(including)h(it)g(as)g(the)630 4655 y(\014rst)32 b(or)h(last)h(c)m(haracter)h(in)e(the)g(set.)50 b(A)33 b(`)p Ft(])p Fu(')g(ma)m(y)h(b)s(e)e(matc)m(hed)i(b)m(y)f -(including)g(it)g(as)h(the)630 4655 y(\014rst)25 b(c)m(haracter)i(in)e +(including)g(it)g(as)h(the)630 4765 y(\014rst)25 b(c)m(haracter)i(in)e (the)h(set.)40 b(The)25 b(sorting)h(order)f(of)h(c)m(haracters)h(in)f -(range)g(expressions)f(is)630 4765 y(determined)h(b)m(y)h(the)g(curren) +(range)g(expressions)f(is)630 4875 y(determined)h(b)m(y)h(the)g(curren) m(t)f(lo)s(cale)j(and)d(the)h(v)-5 b(alues)27 b(of)g(the)g -Ft(LC_COLLATE)d Fu(and)i Ft(LC_ALL)630 4875 y Fu(shell)31 -b(v)-5 b(ariables,)31 b(if)f(set.)630 5011 y(F)-8 b(or)34 +Ft(LC_COLLATE)d Fu(and)i Ft(LC_ALL)630 4984 y Fu(shell)31 +b(v)-5 b(ariables,)31 b(if)f(set.)630 5121 y(F)-8 b(or)34 b(example,)g(in)f(the)g(default)g(C)f(lo)s(cale,)k(`)p Ft([a-dx-z])p Fu(')31 b(is)i(equiv)-5 b(alen)m(t)34 b(to)g(`)p -Ft([abcdxyz])p Fu('.)630 5121 y(Man)m(y)68 b(lo)s(cales)h(sort)f(c)m +Ft([abcdxyz])p Fu('.)630 5230 y(Man)m(y)68 b(lo)s(cales)h(sort)f(c)m (haracters)h(in)e(dictionary)i(order,)76 b(and)67 b(in)g(these)h(lo)s -(cales)630 5230 y(`)p Ft([a-dx-z])p Fu(')36 b(is)i(t)m(ypically)i(not)e +(cales)630 5340 y(`)p Ft([a-dx-z])p Fu(')36 b(is)i(t)m(ypically)i(not)e (equiv)-5 b(alen)m(t)39 b(to)g(`)p Ft([abcdxyz])p Fu(';)g(it)g(migh)m -(t)f(b)s(e)f(equiv)-5 b(alen)m(t)630 5340 y(to)34 b(`)p -Ft([aBbCcDdxXyYz])p Fu(',)c(for)j(example.)49 b(T)-8 -b(o)33 b(obtain)h(the)f(traditional)h(in)m(terpretation)h(of)p -eop end +(t)f(b)s(e)f(equiv)-5 b(alen)m(t)p eop end %%Page: 32 38 TeXDict begin 32 37 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(32)630 299 -y(ranges)33 b(in)f(brac)m(k)m(et)i(expressions,)g(y)m(ou)f(can)g(force) -g(the)g(use)f(of)h(the)g(C)f(lo)s(cale)i(b)m(y)f(setting)630 -408 y(the)c Ft(LC_COLLATE)e Fu(or)i Ft(LC_ALL)f Fu(en)m(vironmen)m(t)i +y(to)34 b(`)p Ft([aBbCcDdxXyYz])p Fu(',)c(for)j(example.)49 +b(T)-8 b(o)33 b(obtain)h(the)f(traditional)h(in)m(terpretation)h(of)630 +408 y(ranges)e(in)f(brac)m(k)m(et)i(expressions,)g(y)m(ou)f(can)g +(force)g(the)g(use)f(of)h(the)g(C)f(lo)s(cale)i(b)m(y)f(setting)630 +518 y(the)c Ft(LC_COLLATE)e Fu(or)i Ft(LC_ALL)f Fu(en)m(vironmen)m(t)i (v)-5 b(ariable)30 b(to)g(the)f(v)-5 b(alue)30 b(`)p -Ft(C)p Fu(',)g(or)f(enable)h(the)630 518 y Ft(globasciiranges)c -Fu(shell)31 b(option.)630 653 y(Within)23 b(`)p Ft([)p +Ft(C)p Fu(',)g(or)f(enable)h(the)630 628 y Ft(globasciiranges)c +Fu(shell)31 b(option.)630 758 y(Within)23 b(`)p Ft([)p Fu(')h(and)e(`)p Ft(])p Fu(',)j Fr(c)m(haracter)g(classes)j Fu(can)c(b)s(e)e(sp)s(eci\014ed)h(using)f(the)i(syn)m(tax)f -Ft([:)p Fr(class)t Ft(:])p Fu(,)630 763 y(where)30 b +Ft([:)p Fr(class)t Ft(:])p Fu(,)630 867 y(where)30 b Fr(class)35 b Fu(is)30 b(one)h(of)f(the)h(follo)m(wing)h(classes)f -(de\014ned)e(in)h(the)h Fm(posix)f Fu(standard:)870 898 +(de\014ned)e(in)h(the)h Fm(posix)f Fu(standard:)870 997 y Ft(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g(digit)g(graph)g(lower) -870 1008 y(print)g(punct)g(space)f(upper)h(word)190 b(xdigit)630 -1143 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h(an)m(y)f(c)m +870 1107 y(print)g(punct)g(space)f(upper)h(word)190 b(xdigit)630 +1237 y Fu(A)42 b(c)m(haracter)h(class)f(matc)m(hes)h(an)m(y)f(c)m (haracter)h(b)s(elonging)f(to)g(that)g(class.)75 b(The)41 -b Ft(word)630 1253 y Fu(c)m(haracter)32 b(class)f(matc)m(hes)h +b Ft(word)630 1346 y Fu(c)m(haracter)32 b(class)f(matc)m(hes)h (letters,)f(digits,)h(and)d(the)i(c)m(haracter)h(`)p -Ft(_)p Fu('.)630 1388 y(Within)25 b(`)p Ft([)p Fu(')f(and)g(`)p +Ft(_)p Fu('.)630 1476 y(Within)25 b(`)p Ft([)p Fu(')f(and)g(`)p Ft(])p Fu(',)i(an)e Fr(equiv)-5 b(alence)26 b(class)j Fu(can)24 b(b)s(e)g(sp)s(eci\014ed)g(using)g(the)g(syn)m(tax)h -Ft([=)p Fr(c)6 b Ft(=])p Fu(,)630 1497 y(whic)m(h)29 +Ft([=)p Fr(c)6 b Ft(=])p Fu(,)630 1586 y(whic)m(h)29 b(matc)m(hes)i(all)f(c)m(haracters)h(with)e(the)h(same)g(collation)h(w) -m(eigh)m(t)g(\(as)f(de\014ned)e(b)m(y)i(the)630 1607 +m(eigh)m(t)g(\(as)f(de\014ned)e(b)m(y)i(the)630 1696 y(curren)m(t)g(lo)s(cale\))j(as)d(the)h(c)m(haracter)h -Fr(c)p Fu(.)630 1742 y(Within)22 b(`)p Ft([)p Fu(')f(and)g(`)p +Fr(c)p Fu(.)630 1826 y(Within)22 b(`)p Ft([)p Fu(')f(and)g(`)p Ft(])p Fu(',)j(the)d(syn)m(tax)h Ft([.)p Fr(sym)m(b)s(ol)t Ft(.])e Fu(matc)m(hes)i(the)g(collating)i(sym)m(b)s(ol)d -Fr(sym)m(b)s(ol)p Fu(.)275 1904 y(If)29 b(the)g Ft(extglob)f +Fr(sym)m(b)s(ol)p Fu(.)275 1976 y(If)29 b(the)g Ft(extglob)f Fu(shell)h(option)h(is)g(enabled)f(using)g(the)h Ft(shopt)e -Fu(builtin,)h(sev)m(eral)i(extended)f(pattern)150 2013 +Fu(builtin,)h(sev)m(eral)i(extended)f(pattern)150 2086 y(matc)m(hing)37 b(op)s(erators)e(are)h(recognized.)58 b(In)35 b(the)g(follo)m(wing)i(description,)g(a)f Fr(pattern-list)j -Fu(is)d(a)g(list)g(of)150 2123 y(one)d(or)f(more)h(patterns)f +Fu(is)d(a)g(list)g(of)150 2195 y(one)d(or)f(more)h(patterns)f (separated)h(b)m(y)f(a)h(`)p Ft(|)p Fu('.)47 b(Comp)s(osite)33 b(patterns)f(ma)m(y)i(b)s(e)d(formed)h(using)g(one)h(or)150 -2233 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150 -2394 y Ft(?\()p Fj(pattern-list)p Ft(\))630 2504 y Fu(Matc)m(hes)h +2305 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150 +2455 y Ft(?\()p Fj(pattern-list)p Ft(\))630 2565 y Fu(Matc)m(hes)h (zero)f(or)g(one)f(o)s(ccurrence)h(of)f(the)h(giv)m(en)g(patterns.)150 -2665 y Ft(*\()p Fj(pattern-list)p Ft(\))630 2774 y Fu(Matc)m(hes)h +2715 y Ft(*\()p Fj(pattern-list)p Ft(\))630 2825 y Fu(Matc)m(hes)h (zero)f(or)g(more)f(o)s(ccurrences)h(of)f(the)h(giv)m(en)g(patterns.) -150 2935 y Ft(+\()p Fj(pattern-list)p Ft(\))630 3045 +150 2975 y Ft(+\()p Fj(pattern-list)p Ft(\))630 3085 y Fu(Matc)m(hes)h(one)f(or)f(more)h(o)s(ccurrences)f(of)h(the)f(giv)m -(en)i(patterns.)150 3206 y Ft(@\()p Fj(pattern-list)p -Ft(\))630 3315 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.) -150 3476 y Ft(!\()p Fj(pattern-list)p Ft(\))630 3586 +(en)i(patterns.)150 3235 y Ft(@\()p Fj(pattern-list)p +Ft(\))630 3345 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.) +150 3495 y Ft(!\()p Fj(pattern-list)p Ft(\))630 3605 y Fu(Matc)m(hes)h(an)m(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g -(patterns.)150 3786 y Fk(3.5.9)63 b(Quote)41 b(Remo)m(v)-7 -b(al)150 3933 y Fu(After)32 b(the)g(preceding)g(expansions,)h(all)f +(patterns.)150 3795 y Fk(3.5.9)63 b(Quote)41 b(Remo)m(v)-7 +b(al)150 3942 y Fu(After)32 b(the)g(preceding)g(expansions,)h(all)f (unquoted)f(o)s(ccurrences)h(of)g(the)h(c)m(haracters)g(`)p Ft(\\)p Fu(',)g(`)p Ft(')p Fu(',)f(and)g(`)p Ft(")p Fu(')150 -4043 y(that)f(did)f(not)g(result)g(from)g(one)h(of)g(the)f(ab)s(o)m(v)m -(e)i(expansions)e(are)h(remo)m(v)m(ed.)150 4277 y Fs(3.6)68 -b(Redirections)150 4437 y Fu(Before)32 b(a)f(command)f(is)h(executed,)h +4052 y(that)f(did)f(not)g(result)g(from)g(one)h(of)g(the)f(ab)s(o)m(v)m +(e)i(expansions)e(are)h(remo)m(v)m(ed.)150 4283 y Fs(3.6)68 +b(Redirections)150 4443 y Fu(Before)32 b(a)f(command)f(is)h(executed,)h (its)f(input)e(and)h(output)h(ma)m(y)g(b)s(e)f Fr(redirected)k -Fu(using)c(a)i(sp)s(ecial)f(no-)150 4546 y(tation)d(in)m(terpreted)f(b) +Fu(using)c(a)i(sp)s(ecial)f(no-)150 4552 y(tation)d(in)m(terpreted)f(b) m(y)f(the)h(shell.)40 b(Redirection)27 b(allo)m(ws)h(commands')f -(\014le)f(handles)g(to)i(b)s(e)e(duplicated,)150 4656 +(\014le)f(handles)g(to)i(b)s(e)e(duplicated,)150 4662 y(op)s(ened,)i(closed,)i(made)e(to)h(refer)f(to)h(di\013eren)m(t)f (\014les,)h(and)f(can)g(c)m(hange)h(the)g(\014les)f(the)g(command)g -(reads)150 4766 y(from)39 b(and)g(writes)h(to.)69 b(Redirection)40 +(reads)150 4772 y(from)39 b(and)g(writes)h(to.)69 b(Redirection)40 b(ma)m(y)g(also)h(b)s(e)e(used)g(to)h(mo)s(dify)f(\014le)g(handles)g -(in)g(the)h(curren)m(t)150 4875 y(shell)e(execution)h(en)m(vironmen)m +(in)g(the)h(curren)m(t)150 4881 y(shell)e(execution)h(en)m(vironmen)m (t.)65 b(The)37 b(follo)m(wing)j(redirection)f(op)s(erators)f(ma)m(y)g -(precede)h(or)f(app)s(ear)150 4985 y(an)m(ywhere)30 b(within)f(a)h +(precede)h(or)f(app)s(ear)150 4991 y(an)m(ywhere)30 b(within)f(a)h (simple)f(command)h(or)f(ma)m(y)i(follo)m(w)g(a)f(command.)40 -b(Redirections)30 b(are)g(pro)s(cessed)150 5094 y(in)g(the)h(order)f +b(Redirections)30 b(are)g(pro)s(cessed)150 5100 y(in)g(the)h(order)f (they)g(app)s(ear,)g(from)g(left)h(to)g(righ)m(t.)275 5230 y(Eac)m(h)45 b(redirection)h(that)f(ma)m(y)h(b)s(e)e(preceded)g(b) m(y)h(a)h(\014le)f(descriptor)f(n)m(um)m(b)s(er)g(ma)m(y)h(instead)h(b) @@ -10554,17 +10558,18 @@ b(v)-5 b(arian)m(t)32 b(of)e(here)h(do)s(cumen)m(ts,)f(the)g(format)h (tilde)e(expansion,)i(parameter)e(and)f(v)-5 b(ariable)23 b(expansion,)150 3082 y(command)j(substitution,)g(arithmetic)i (expansion,)f(and)e(quote)i(remo)m(v)-5 b(al.)40 b(P)m(athname)27 -b(expansion)f(and)150 3191 y(w)m(ord)j(splitting)i(are)f(not)g(p)s -(erformed.)39 b(The)29 b(result)h(is)g(supplied)e(as)i(a)h(single)f -(string)g(to)g(the)g(command)150 3301 y(on)g(its)h(standard)f(input)f -(\(or)i(\014le)f(descriptor)g Fr(n)g Fu(if)h Fr(n)e Fu(is)i(sp)s -(eci\014ed\).)150 3524 y Fk(3.6.8)63 b(Duplicating)41 -b(File)g(Descriptors)150 3671 y Fu(The)30 b(redirection)h(op)s(erator) -390 3829 y Ft([)p Fj(n)p Ft(]<&)p Fj(word)150 3988 y -Fu(is)k(used)e(to)j(duplicate)f(input)f(\014le)g(descriptors.)53 -b(If)34 b Fr(w)m(ord)k Fu(expands)c(to)h(one)g(or)g(more)g(digits,)h -(the)f(\014le)150 4098 y(descriptor)e(denoted)h(b)m(y)f -Fr(n)g Fu(is)g(made)h(to)g(b)s(e)f(a)g(cop)m(y)h(of)g(that)g(\014le)f +b(expansion)f(and)150 3191 y(w)m(ord)32 b(splitting)h(are)g(not)g(p)s +(erformed.)46 b(The)32 b(result)g(is)h(supplied)e(as)i(a)f(single)i +(string,)f(with)f(a)h(newline)150 3301 y(app)s(ended,)c(to)i(the)g +(command)f(on)g(its)h(standard)e(input)h(\(or)g(\014le)h(descriptor)f +Fr(n)g Fu(if)g Fr(n)g Fu(is)g(sp)s(eci\014ed\).)150 3524 +y Fk(3.6.8)63 b(Duplicating)41 b(File)g(Descriptors)150 +3671 y Fu(The)30 b(redirection)h(op)s(erator)390 3829 +y Ft([)p Fj(n)p Ft(]<&)p Fj(word)150 3988 y Fu(is)k(used)e(to)j +(duplicate)f(input)f(\014le)g(descriptors.)53 b(If)34 +b Fr(w)m(ord)k Fu(expands)c(to)h(one)g(or)g(more)g(digits,)h(the)f +(\014le)150 4098 y(descriptor)e(denoted)h(b)m(y)f Fr(n)g +Fu(is)g(made)h(to)g(b)s(e)f(a)g(cop)m(y)h(of)g(that)g(\014le)f (descriptor.)50 b(If)33 b(the)h(digits)g(in)f Fr(w)m(ord)150 4207 y Fu(do)c(not)h(sp)s(ecify)f(a)h(\014le)f(descriptor)g(op)s(en)g (for)g(input,)g(a)h(redirection)g(error)f(o)s(ccurs.)40 @@ -10591,61 +10596,61 @@ eop end TeXDict begin 36 41 bop 150 -116 a Fu(Chapter)30 b(3:)41 b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(36)150 299 y Fk(3.6.9)63 b(Mo)m(ving)41 b(File)h(Descriptors)150 -446 y Fu(The)30 b(redirection)h(op)s(erator)390 573 y -Ft([)p Fj(n)p Ft(]<&)p Fj(digit)p Ft(-)150 699 y Fu(mo)m(v)m(es)i(the)f +446 y Fu(The)30 b(redirection)h(op)s(erator)390 572 y +Ft([)p Fj(n)p Ft(]<&)p Fj(digit)p Ft(-)150 698 y Fu(mo)m(v)m(es)i(the)f (\014le)g(descriptor)f Fr(digit)k Fu(to)d(\014le)g(descriptor)g Fr(n)p Fu(,)f(or)h(the)g(standard)f(input)f(\(\014le)j(descriptor)e -(0\))150 809 y(if)f Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)40 +(0\))150 808 y(if)f Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)40 b Fr(digit)33 b Fu(is)e(closed)g(after)g(b)s(eing)f(duplicated)g(to)h -Fr(n)p Fu(.)275 936 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s -(erator)390 1062 y Ft([)p Fj(n)p Ft(]>&)p Fj(digit)p -Ft(-)150 1189 y Fu(mo)m(v)m(es)e(the)g(\014le)f(descriptor)f +Fr(n)p Fu(.)275 934 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s +(erator)390 1061 y Ft([)p Fj(n)p Ft(]>&)p Fj(digit)p +Ft(-)150 1187 y Fu(mo)m(v)m(es)e(the)g(\014le)f(descriptor)f Fr(digit)k Fu(to)e(\014le)f(descriptor)g Fr(n)p Fu(,)g(or)g(the)g (standard)f(output)h(\(\014le)g(descriptor)g(1\))150 -1299 y(if)i Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)150 -1482 y Fk(3.6.10)63 b(Op)s(ening)42 b(File)g(Descriptors)g(for)g -(Reading)e(and)h(W)-10 b(riting)150 1629 y Fu(The)30 -b(redirection)h(op)s(erator)390 1756 y Ft([)p Fj(n)p -Ft(]<>)p Fj(word)150 1883 y Fu(causes)39 b(the)g(\014le)g(whose)g(name) +1297 y(if)i Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)150 +1479 y Fk(3.6.10)63 b(Op)s(ening)42 b(File)g(Descriptors)g(for)g +(Reading)e(and)h(W)-10 b(riting)150 1626 y Fu(The)30 +b(redirection)h(op)s(erator)390 1753 y Ft([)p Fj(n)p +Ft(]<>)p Fj(word)150 1879 y Fu(causes)39 b(the)g(\014le)g(whose)g(name) g(is)g(the)g(expansion)g(of)g Fr(w)m(ord)j Fu(to)d(b)s(e)g(op)s(ened)f -(for)g(b)s(oth)h(reading)g(and)150 1992 y(writing)33 +(for)g(b)s(oth)h(reading)g(and)150 1989 y(writing)33 b(on)f(\014le)h(descriptor)f Fr(n)p Fu(,)h(or)g(on)f(\014le)h (descriptor)g(0)g(if)f Fr(n)g Fu(is)h(not)g(sp)s(eci\014ed.)47 -b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 2102 y(exist,)e(it)g(is)g -(created.)150 2319 y Fs(3.7)68 b(Executing)46 b(Commands)150 -2535 y Fk(3.7.1)63 b(Simple)41 b(Command)h(Expansion)150 -2682 y Fu(When)33 b(a)g(simple)g(command)g(is)g(executed,)h(the)g +b(If)32 b(the)h(\014le)f(do)s(es)h(not)150 2098 y(exist,)e(it)g(is)g +(created.)150 2323 y Fs(3.7)68 b(Executing)46 b(Commands)150 +2539 y Fk(3.7.1)63 b(Simple)41 b(Command)h(Expansion)150 +2686 y Fu(When)33 b(a)g(simple)g(command)g(is)g(executed,)h(the)g (shell)f(p)s(erforms)e(the)i(follo)m(wing)i(expansions,)e(assign-)150 -2792 y(men)m(ts,)e(and)f(redirections,)h(from)f(left)h(to)g(righ)m(t.) -199 2919 y(1.)61 b(The)38 b(w)m(ords)f(that)i(the)g(parser)e(has)h +2795 y(men)m(ts,)e(and)f(redirections,)h(from)f(left)h(to)g(righ)m(t.) +199 2922 y(1.)61 b(The)38 b(w)m(ords)f(that)i(the)g(parser)e(has)h (mark)m(ed)g(as)h(v)-5 b(ariable)39 b(assignmen)m(ts)g(\(those)g -(preceding)f(the)330 3028 y(command)30 b(name\))h(and)f(redirections)h +(preceding)f(the)330 3031 y(command)30 b(name\))h(and)f(redirections)h (are)f(sa)m(v)m(ed)i(for)e(later)h(pro)s(cessing.)199 -3155 y(2.)61 b(The)39 b(w)m(ords)g(that)i(are)f(not)g(v)-5 +3157 y(2.)61 b(The)39 b(w)m(ords)g(that)i(are)f(not)g(v)-5 b(ariable)40 b(assignmen)m(ts)h(or)e(redirections)i(are)f(expanded)f -(\(see)h(Sec-)330 3265 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g +(\(see)h(Sec-)330 3267 y(tion)d(3.5)i([Shell)e(Expansions],)h(page)g (21\).)61 b(If)37 b(an)m(y)g(w)m(ords)f(remain)h(after)h(expansion,)h -(the)e(\014rst)330 3374 y(w)m(ord)31 b(is)g(tak)m(en)h(to)g(b)s(e)f +(the)e(\014rst)330 3377 y(w)m(ord)31 b(is)g(tak)m(en)h(to)g(b)s(e)f (the)g(name)h(of)f(the)h(command)f(and)f(the)i(remaining)f(w)m(ords)g -(are)g(the)h(argu-)330 3484 y(men)m(ts.)199 3610 y(3.)61 +(are)g(the)h(argu-)330 3486 y(men)m(ts.)199 3612 y(3.)61 b(Redirections)25 b(are)f(p)s(erformed)f(as)h(describ)s(ed)f(ab)s(o)m (v)m(e)i(\(see)g(Section)g(3.6)g([Redirections],)i(page)d(32\).)199 -3737 y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Ft(=)p +3739 y(4.)61 b(The)25 b(text)h(after)f(the)g(`)p Ft(=)p Fu(')h(in)e(eac)m(h)j(v)-5 b(ariable)25 b(assignmen)m(t)h(undergo)s(es) -e(tilde)i(expansion,)g(parameter)330 3847 y(expansion,)49 +e(tilde)i(expansion,)g(parameter)330 3848 y(expansion,)49 b(command)d(substitution,)j(arithmetic)d(expansion,)k(and)45 -b(quote)h(remo)m(v)-5 b(al)46 b(b)s(efore)330 3956 y(b)s(eing)30 -b(assigned)h(to)g(the)f(v)-5 b(ariable.)275 4100 y(If)32 +b(quote)h(remo)m(v)-5 b(al)46 b(b)s(efore)330 3958 y(b)s(eing)30 +b(assigned)h(to)g(the)f(v)-5 b(ariable.)275 4101 y(If)32 b(no)i(command)f(name)g(results,)h(the)g(v)-5 b(ariable)34 b(assignmen)m(ts)g(a\013ect)h(the)f(curren)m(t)f(shell)h(en)m(viron-) -150 4210 y(men)m(t.)39 b(Otherwise,)27 b(the)e(v)-5 b(ariables)26 +150 4211 y(men)m(t.)39 b(Otherwise,)27 b(the)e(v)-5 b(ariables)26 b(are)g(added)f(to)h(the)f(en)m(vironmen)m(t)h(of)g(the)f(executed)h -(command)g(and)150 4319 y(do)35 b(not)f(a\013ect)j(the)d(curren)m(t)h +(command)g(and)150 4320 y(do)35 b(not)f(a\013ect)j(the)d(curren)m(t)h (shell)g(en)m(vironmen)m(t.)54 b(If)34 b(an)m(y)h(of)g(the)f(assignmen) -m(ts)i(attempts)f(to)h(assign)150 4429 y(a)j(v)-5 b(alue)39 +m(ts)i(attempts)f(to)h(assign)150 4430 y(a)j(v)-5 b(alue)39 b(to)g(a)g(readonly)f(v)-5 b(ariable,)42 b(an)c(error)g(o)s(ccurs,)j (and)c(the)i(command)f(exits)h(with)g(a)f(non-zero)150 -4539 y(status.)275 4665 y(If)33 b(no)g(command)g(name)h(results,)g +4539 y(status.)275 4666 y(If)33 b(no)g(command)g(name)h(results,)g (redirections)g(are)g(p)s(erformed,)f(but)g(do)h(not)f(a\013ect)i(the)f (curren)m(t)150 4775 y(shell)d(en)m(vironmen)m(t.)41 b(A)30 b(redirection)h(error)f(causes)h(the)g(command)f(to)h(exit)g @@ -10931,123 +10936,123 @@ b(When)35 b(Bash)g(is)150 1006 y(w)m(aiting)j(for)f(an)g(async)m (has)g(b)s(een)f(set)h(will)h(cause)f(the)g Ft(wait)f Fu(builtin)h(to)g(return)f(immediately)i(with)f(an)g(exit)150 1225 y(status)c(greater)g(than)f(128,)i(immediately)g(after)f(whic)m(h) -f(the)h(trap)f(is)g(executed.)150 1458 y Fs(3.8)68 b(Shell)45 -b(Scripts)150 1617 y Fu(A)30 b(shell)f(script)h(is)f(a)h(text)h(\014le) +f(the)h(trap)f(is)g(executed.)150 1466 y Fs(3.8)68 b(Shell)45 +b(Scripts)150 1626 y Fu(A)30 b(shell)f(script)h(is)f(a)h(text)h(\014le) f(con)m(taining)h(shell)f(commands.)40 b(When)29 b(suc)m(h)g(a)h -(\014le)g(is)f(used)g(as)h(the)g(\014rst)150 1727 y(non-option)c +(\014le)g(is)f(used)g(as)h(the)g(\014rst)150 1735 y(non-option)c (argumen)m(t)h(when)e(in)m(v)m(oking)i(Bash,)g(and)f(neither)g(the)g Ft(-c)g Fu(nor)f Ft(-s)h Fu(option)g(is)g(supplied)f(\(see)150 -1836 y(Section)39 b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(81\),)i +1845 y(Section)39 b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(81\),)i (Bash)d(reads)g(and)f(executes)i(commands)f(from)f(the)i(\014le,)150 -1946 y(then)32 b(exits.)46 b(This)32 b(mo)s(de)f(of)i(op)s(eration)f +1954 y(then)32 b(exits.)46 b(This)32 b(mo)s(de)f(of)i(op)s(eration)f (creates)i(a)e(non-in)m(teractiv)m(e)j(shell.)46 b(The)31 -b(shell)i(\014rst)e(searc)m(hes)150 2056 y(for)d(the)g(\014le)g(in)g +b(shell)i(\014rst)e(searc)m(hes)150 2064 y(for)d(the)g(\014le)g(in)g (the)g(curren)m(t)f(directory)-8 b(,)30 b(and)d(lo)s(oks)i(in)e(the)i (directories)g(in)e Ft($PATH)g Fu(if)h(not)g(found)e(there.)275 -2190 y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f +2198 y(When)34 b(Bash)h(runs)e(a)i(shell)g(script,)g(it)h(sets)f(the)f (sp)s(ecial)i(parameter)f Ft(0)f Fu(to)h(the)g(name)g(of)g(the)g -(\014le,)150 2300 y(rather)k(than)g(the)h(name)f(of)h(the)f(shell,)j +(\014le,)150 2308 y(rather)k(than)g(the)h(name)f(of)h(the)f(shell,)j (and)d(the)h(p)s(ositional)g(parameters)f(are)h(set)g(to)g(the)g -(remain-)150 2409 y(ing)f(argumen)m(ts,)j(if)d(an)m(y)g(are)g(giv)m +(remain-)150 2418 y(ing)f(argumen)m(ts,)j(if)d(an)m(y)g(are)g(giv)m (en.)67 b(If)39 b(no)g(additional)g(argumen)m(ts)h(are)f(supplied,)h -(the)f(p)s(ositional)150 2519 y(parameters)31 b(are)f(unset.)275 -2653 y(A)39 b(shell)h(script)f(ma)m(y)h(b)s(e)f(made)h(executable)h(b)m +(the)f(p)s(ositional)150 2527 y(parameters)31 b(are)f(unset.)275 +2662 y(A)39 b(shell)h(script)f(ma)m(y)h(b)s(e)f(made)h(executable)h(b)m (y)e(using)g(the)h Ft(chmod)e Fu(command)h(to)h(turn)e(on)i(the)150 -2763 y(execute)j(bit.)73 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h +2771 y(execute)j(bit.)73 b(When)41 b(Bash)g(\014nds)e(suc)m(h)i(a)h (\014le)f(while)g(searc)m(hing)h(the)f Ft($PATH)f Fu(for)h(a)h -(command,)h(it)150 2873 y(spa)m(wns)30 b(a)g(subshell)g(to)h(execute)h -(it.)41 b(In)30 b(other)g(w)m(ords,)g(executing)390 3007 -y Ft(filename)46 b Fj(arguments)150 3142 y Fu(is)30 b(equiv)-5 -b(alen)m(t)32 b(to)f(executing)390 3276 y Ft(bash)47 -b(filename)e Fj(arguments)150 3411 y Fu(if)30 b Ft(filename)d +(command,)h(it)150 2881 y(spa)m(wns)30 b(a)g(subshell)g(to)h(execute)h +(it.)41 b(In)30 b(other)g(w)m(ords,)g(executing)390 3015 +y Ft(filename)46 b Fj(arguments)150 3150 y Fu(is)30 b(equiv)-5 +b(alen)m(t)32 b(to)f(executing)390 3284 y Ft(bash)47 +b(filename)e Fj(arguments)150 3419 y Fu(if)30 b Ft(filename)d Fu(is)j(an)f(executable)j(shell)e(script.)40 b(This)29 b(subshell)g(reinitializes)i(itself,)g(so)f(that)h(the)e(e\013ect)150 -3520 y(is)36 b(as)h(if)g(a)f(new)g(shell)h(had)f(b)s(een)g(in)m(v)m(ok) +3528 y(is)36 b(as)h(if)g(a)f(new)g(shell)h(had)f(b)s(een)g(in)m(v)m(ok) m(ed)h(to)h(in)m(terpret)e(the)h(script,)h(with)e(the)h(exception)h -(that)f(the)150 3630 y(lo)s(cations)25 b(of)g(commands)e(remem)m(b)s +(that)f(the)150 3638 y(lo)s(cations)25 b(of)g(commands)e(remem)m(b)s (ered)h(b)m(y)g(the)g(paren)m(t)g(\(see)h(the)f(description)g(of)g -Ft(hash)f Fu(in)h(Section)h(4.1)150 3739 y([Bourne)30 +Ft(hash)f Fu(in)h(Section)h(4.1)150 3748 y([Bourne)30 b(Shell)h(Builtins],)g(page)g(41\))h(are)e(retained)h(b)m(y)f(the)h(c)m -(hild.)275 3874 y(Most)36 b(v)m(ersions)g(of)g(Unix)f(mak)m(e)h(this)g +(hild.)275 3882 y(Most)36 b(v)m(ersions)g(of)g(Unix)f(mak)m(e)h(this)g (a)g(part)f(of)h(the)g(op)s(erating)g(system's)f(command)h(execution) -150 3983 y(mec)m(hanism.)50 b(If)33 b(the)g(\014rst)g(line)h(of)f(a)h +150 3992 y(mec)m(hanism.)50 b(If)33 b(the)g(\014rst)g(line)h(of)f(a)h (script)f(b)s(egins)g(with)g(the)g(t)m(w)m(o)i(c)m(haracters)g(`)p -Ft(#!)p Fu(',)f(the)g(remainder)150 4093 y(of)d(the)g(line)h(sp)s +Ft(#!)p Fu(',)f(the)g(remainder)150 4101 y(of)d(the)g(line)h(sp)s (eci\014es)e(an)h(in)m(terpreter)g(for)g(the)g(program.)43 b(Th)m(us,)30 b(y)m(ou)h(can)h(sp)s(ecify)e(Bash,)i Ft(awk)p -Fu(,)e(P)m(erl,)150 4203 y(or)g(some)h(other)g(in)m(terpreter)g(and)e +Fu(,)e(P)m(erl,)150 4211 y(or)g(some)h(other)g(in)m(terpreter)g(and)e (write)i(the)f(rest)h(of)g(the)f(script)g(\014le)h(in)f(that)h -(language.)275 4337 y(The)40 b(argumen)m(ts)h(to)g(the)g(in)m +(language.)275 4345 y(The)40 b(argumen)m(ts)h(to)g(the)g(in)m (terpreter)g(consist)g(of)g(a)g(single)h(optional)f(argumen)m(t)h -(follo)m(wing)g(the)150 4447 y(in)m(terpreter)33 b(name)h(on)f(the)g +(follo)m(wing)g(the)150 4455 y(in)m(terpreter)33 b(name)h(on)f(the)g (\014rst)f(line)i(of)f(the)g(script)g(\014le,)h(follo)m(w)m(ed)h(b)m(y) -e(the)g(name)g(of)g(the)h(script)f(\014le,)150 4556 y(follo)m(w)m(ed)g +e(the)g(name)g(of)g(the)h(script)f(\014le,)150 4565 y(follo)m(w)m(ed)g (b)m(y)f(the)f(rest)h(of)g(the)f(argumen)m(ts.)45 b(Bash)31 b(will)h(p)s(erform)e(this)i(action)h(on)e(op)s(erating)h(systems)150 -4666 y(that)24 b(do)g(not)f(handle)g(it)h(themselv)m(es.)40 +4674 y(that)24 b(do)g(not)f(handle)g(it)h(themselv)m(es.)40 b(Note)25 b(that)f(some)g(older)g(v)m(ersions)f(of)h(Unix)f(limit)i -(the)f(in)m(terpreter)150 4775 y(name)30 b(and)g(argumen)m(t)h(to)g(a)g -(maxim)m(um)f(of)h(32)g(c)m(haracters.)275 4910 y(Bash)h(scripts)g +(the)f(in)m(terpreter)150 4784 y(name)30 b(and)g(argumen)m(t)h(to)g(a)g +(maxim)m(um)f(of)h(32)g(c)m(haracters.)275 4918 y(Bash)h(scripts)g (often)g(b)s(egin)g(with)g Ft(#!)e(/bin/bash)g Fu(\(assuming)i(that)h -(Bash)f(has)g(b)s(een)f(installed)i(in)150 5020 y Ft(/bin)p +(Bash)f(has)g(b)s(een)f(installed)i(in)150 5028 y Ft(/bin)p Fu(\),)26 b(since)h(this)f(ensures)f(that)i(Bash)f(will)h(b)s(e)f(used) f(to)i(in)m(terpret)f(the)h(script,)g(ev)m(en)g(if)f(it)h(is)f -(executed)150 5129 y(under)j(another)h(shell.)p eop end +(executed)150 5137 y(under)j(another)h(shell.)p eop end %%Page: 41 47 TeXDict begin 41 46 bop 150 -116 a Fu(Chapter)30 b(4:)41 b(Shell)30 b(Builtin)h(Commands)2069 b(41)150 299 y Fp(4)80 -b(Shell)53 b(Builtin)f(Commands)150 501 y Fu(Builtin)34 +b(Shell)53 b(Builtin)f(Commands)150 499 y Fu(Builtin)34 b(commands)f(are)h(con)m(tained)g(within)f(the)h(shell)g(itself.)50 b(When)34 b(the)f(name)h(of)f(a)h(builtin)f(com-)150 -611 y(mand)26 b(is)i(used)e(as)i(the)g(\014rst)e(w)m(ord)h(of)h(a)f +608 y(mand)26 b(is)i(used)e(as)i(the)g(\014rst)e(w)m(ord)h(of)h(a)f (simple)h(command)f(\(see)h(Section)g(3.2.1)h([Simple)f(Commands],)150 -720 y(page)21 b(8\),)j(the)d(shell)g(executes)h(the)f(command)f +718 y(page)21 b(8\),)j(the)d(shell)g(executes)h(the)f(command)f (directly)-8 b(,)24 b(without)d(in)m(v)m(oking)h(another)f(program.)37 -b(Builtin)150 830 y(commands)f(are)h(necessary)g(to)g(implemen)m(t)g +b(Builtin)150 828 y(commands)f(are)h(necessary)g(to)g(implemen)m(t)g (functionalit)m(y)h(imp)s(ossible)e(or)h(incon)m(v)m(enien)m(t)h(to)f -(obtain)150 940 y(with)30 b(separate)h(utilities.)275 -1068 y(This)c(section)j(brie\015y)e(describ)s(es)g(the)h(builtins)f +(obtain)150 937 y(with)30 b(separate)h(utilities.)275 +1065 y(This)c(section)j(brie\015y)e(describ)s(es)g(the)h(builtins)f (whic)m(h)g(Bash)h(inherits)f(from)g(the)h(Bourne)g(Shell,)g(as)150 -1177 y(w)m(ell)i(as)g(the)g(builtin)e(commands)h(whic)m(h)h(are)f +1174 y(w)m(ell)i(as)g(the)g(builtin)e(commands)h(whic)m(h)h(are)f (unique)g(to)h(or)f(ha)m(v)m(e)i(b)s(een)d(extended)i(in)f(Bash.)275 -1305 y(Sev)m(eral)45 b(builtin)e(commands)h(are)h(describ)s(ed)e(in)h +1302 y(Sev)m(eral)45 b(builtin)e(commands)h(are)h(describ)s(ed)e(in)h (other)g(c)m(hapters:)69 b(builtin)43 b(commands)h(whic)m(h)150 -1415 y(pro)m(vide)23 b(the)h(Bash)f(in)m(terface)i(to)f(the)g(job)f +1412 y(pro)m(vide)23 b(the)h(Bash)f(in)m(terface)i(to)f(the)g(job)f (con)m(trol)i(facilities)g(\(see)f(Section)h(7.2)f([Job)f(Con)m(trol)h -(Builtins],)150 1525 y(page)37 b(100\),)i(the)d(directory)g(stac)m(k)h +(Builtins],)150 1521 y(page)37 b(100\),)i(the)d(directory)g(stac)m(k)h (\(see)g(Section)g(6.8.1)g([Directory)h(Stac)m(k)f(Builtins],)h(page)e -(92\),)j(the)150 1634 y(command)23 b(history)h(\(see)g(Section)g(9.2)h +(92\),)j(the)150 1631 y(command)23 b(history)h(\(see)g(Section)g(9.2)h ([Bash)f(History)g(Builtins],)h(page)g(136\),)h(and)d(the)h -(programmable)150 1744 y(completion)32 b(facilities)g(\(see)g(Section)f +(programmable)150 1740 y(completion)32 b(facilities)g(\(see)g(Section)f (8.7)g([Programmable)g(Completion)g(Builtins],)g(page)h(130\).)275 -1872 y(Man)m(y)f(of)f(the)h(builtins)e(ha)m(v)m(e)j(b)s(een)e(extended) -g(b)m(y)g Fm(posix)g Fu(or)g(Bash.)275 2000 y(Unless)20 +1868 y(Man)m(y)f(of)f(the)h(builtins)e(ha)m(v)m(e)j(b)s(een)e(extended) +g(b)m(y)g Fm(posix)g Fu(or)g(Bash.)275 1996 y(Unless)20 b(otherwise)h(noted,)h(eac)m(h)g(builtin)e(command)g(do)s(cumen)m(ted)g -(as)h(accepting)h(options)e(preceded)150 2110 y(b)m(y)29 +(as)h(accepting)h(options)e(preceded)150 2105 y(b)m(y)29 b(`)p Ft(-)p Fu(')g(accepts)i(`)p Ft(--)p Fu(')e(to)h(signify)f(the)g (end)g(of)g(the)h(options.)40 b(The)29 b Ft(:)p Fu(,)g Ft(true)p Fu(,)g Ft(false)p Fu(,)f(and)h Ft(test)f Fu(builtins)150 -2219 y(do)34 b(not)h(accept)h(options)f(and)f(do)g(not)h(treat)h(`)p +2215 y(do)34 b(not)h(accept)h(options)f(and)f(do)g(not)h(treat)h(`)p Ft(--)p Fu(')e(sp)s(ecially)-8 b(.)54 b(The)34 b Ft(exit)p Fu(,)h Ft(logout)p Fu(,)f Ft(return)p Fu(,)g Ft(break)p -Fu(,)150 2329 y Ft(continue)p Fu(,)22 b Ft(let)p Fu(,)i(and)e +Fu(,)150 2325 y Ft(continue)p Fu(,)22 b Ft(let)p Fu(,)i(and)e Ft(shift)f Fu(builtins)h(accept)i(and)e(pro)s(cess)g(argumen)m(ts)h(b)s -(eginning)f(with)g(`)p Ft(-)p Fu(')h(without)150 2439 +(eginning)f(with)g(`)p Ft(-)p Fu(')h(without)150 2434 y(requiring)41 b(`)p Ft(--)p Fu('.)74 b(Other)41 b(builtins)g(that)h (accept)h(argumen)m(ts)e(but)g(are)h(not)g(sp)s(eci\014ed)f(as)g -(accepting)150 2548 y(options)25 b(in)m(terpret)f(argumen)m(ts)h(b)s +(accepting)150 2544 y(options)25 b(in)m(terpret)f(argumen)m(ts)h(b)s (eginning)e(with)h(`)p Ft(-)p Fu(')h(as)f(in)m(v)-5 b(alid)25 b(options)g(and)e(require)h(`)p Ft(--)p Fu(')g(to)h(prev)m(en)m(t)150 -2658 y(this)30 b(in)m(terpretation.)150 2877 y Fs(4.1)68 -b(Bourne)45 b(Shell)g(Builtins)150 3037 y Fu(The)22 b(follo)m(wing)j +2653 y(this)30 b(in)m(terpretation.)150 2880 y Fs(4.1)68 +b(Bourne)45 b(Shell)g(Builtins)150 3040 y Fu(The)22 b(follo)m(wing)j (shell)d(builtin)h(commands)f(are)h(inherited)g(from)f(the)h(Bourne)g -(Shell.)38 b(These)22 b(commands)150 3146 y(are)31 b(implemen)m(ted)g +(Shell.)38 b(These)22 b(commands)150 3149 y(are)31 b(implemen)m(ted)g (as)f(sp)s(eci\014ed)g(b)m(y)g(the)h Fm(posix)e Fu(standard.)150 -3293 y Ft(:)h Fu(\(a)h(colon\))870 3403 y Ft(:)47 b([)p -Fj(arguments)p Ft(])630 3531 y Fu(Do)c(nothing)f(b)s(ey)m(ond)g +3295 y Ft(:)h Fu(\(a)h(colon\))870 3405 y Ft(:)47 b([)p +Fj(arguments)p Ft(])630 3532 y Fu(Do)c(nothing)f(b)s(ey)m(ond)g (expanding)f Fr(argumen)m(ts)46 b Fu(and)c(p)s(erforming)f -(redirections.)76 b(The)630 3640 y(return)29 b(status)i(is)f(zero.)150 -3787 y Ft(.)g Fu(\(a)h(p)s(erio)s(d\))870 3897 y Ft(.)47 +(redirections.)76 b(The)630 3642 y(return)29 b(status)i(is)f(zero.)150 +3788 y Ft(.)g Fu(\(a)h(p)s(erio)s(d\))870 3897 y Ft(.)47 b Fj(filename)f Ft([)p Fj(arguments)p Ft(])630 4025 y Fu(Read)34 b(and)f(execute)i(commands)e(from)g(the)h Fr(\014lename)39 b Fu(argumen)m(t)34 b(in)f(the)h(curren)m(t)g(shell) @@ -11571,55 +11576,55 @@ g(c)m(hanged)g(or)g(if)g(no)630 847 y Fr(mo)s(de)d Fu(argumen)m(t)c(is) f(supplied,)g(and)f(non-zero)i(otherwise.)630 977 y(Note)38 b(that)e(when)g(the)g(mo)s(de)g(is)g(in)m(terpreted)h(as)f(an)g(o)s (ctal)i(n)m(um)m(b)s(er,)e(eac)m(h)i(n)m(um)m(b)s(er)d(of)630 -1087 y(the)f(umask)g(is)h(subtracted)f(from)f Ft(7)p +1086 y(the)f(umask)g(is)h(subtracted)f(from)f Ft(7)p Fu(.)53 b(Th)m(us,)34 b(a)h(umask)e(of)i Ft(022)e Fu(results)h(in)g(p)s -(ermissions)630 1197 y(of)d Ft(755)p Fu(.)150 1348 y -Ft(unset)870 1479 y(unset)46 b([-fnv])g([)p Fj(name)p -Ft(])630 1610 y Fu(Remo)m(v)m(e)36 b(eac)m(h)f(v)-5 b(ariable)35 +(ermissions)630 1196 y(of)d Ft(755)p Fu(.)150 1347 y +Ft(unset)870 1477 y(unset)46 b([-fnv])g([)p Fj(name)p +Ft(])630 1607 y Fu(Remo)m(v)m(e)36 b(eac)m(h)f(v)-5 b(ariable)35 b(or)f(function)f Fr(name)p Fu(.)52 b(If)33 b(the)i Ft(-v)e -Fu(option)h(is)g(giv)m(en,)j(eac)m(h)e Fr(name)630 1719 +Fu(option)h(is)g(giv)m(en,)j(eac)m(h)e Fr(name)630 1716 y Fu(refers)24 b(to)h(a)g(shell)f(v)-5 b(ariable)25 b(and)f(that)h(v)-5 b(ariable)25 b(is)f(rem)m(v)m(o)m(v)m(ed.)41 b(If)23 -b(the)i Ft(-f)f Fu(option)g(is)h(giv)m(en,)630 1829 y(the)37 +b(the)i Ft(-f)f Fu(option)g(is)h(giv)m(en,)630 1826 y(the)37 b Fr(name)5 b Fu(s)37 b(refer)f(to)i(shell)f(functions,)h(and)e(the)h (function)g(de\014nition)f(is)h(remo)m(v)m(ed.)61 b(If)630 -1938 y(the)34 b Ft(-n)e Fu(option)i(is)g(supplied,)f(and)g +1936 y(the)34 b Ft(-n)e Fu(option)i(is)g(supplied,)f(and)g Fr(name)38 b Fu(is)c(a)f(v)-5 b(ariable)34 b(with)g(the)f -Fr(nameref)51 b Fu(attribute,)630 2048 y Fr(name)42 b +Fr(nameref)51 b Fu(attribute,)630 2045 y Fr(name)42 b Fu(will)37 b(b)s(e)f(unset)g(rather)g(than)h(the)g(v)-5 b(ariable)37 b(it)g(references.)60 b Ft(-n)36 b Fu(has)g(no)h(e\013ect) -h(if)630 2157 y(the)h Ft(-f)g Fu(option)g(is)h(supplied.)65 +h(if)630 2155 y(the)h Ft(-f)g Fu(option)g(is)h(supplied.)65 b(If)39 b(no)g(options)h(are)f(supplied,)h(eac)m(h)h -Fr(name)j Fu(refers)39 b(to)h(a)630 2267 y(v)-5 b(ariable;)37 +Fr(name)j Fu(refers)39 b(to)h(a)630 2264 y(v)-5 b(ariable;)37 b(if)d(there)g(is)g(no)g(v)-5 b(ariable)34 b(b)m(y)g(that)h(name,)g(an) -m(y)f(function)g(with)f(that)i(name)f(is)630 2377 y(unset.)46 +m(y)f(function)g(with)f(that)i(name)f(is)630 2374 y(unset.)46 b(Readonly)33 b(v)-5 b(ariables)33 b(and)e(functions)h(ma)m(y)h(not)g -(b)s(e)e(unset.)47 b(The)31 b(return)h(status)630 2486 +(b)s(e)e(unset.)47 b(The)31 b(return)h(status)630 2483 y(is)e(zero)i(unless)d(a)i Fr(name)36 b Fu(is)30 b(readonly)-8 -b(.)150 2711 y Fs(4.2)68 b(Bash)45 b(Builtin)g(Commands)150 -2870 y Fu(This)c(section)h(describ)s(es)f(builtin)f(commands)h(whic)m +b(.)150 2715 y Fs(4.2)68 b(Bash)45 b(Builtin)g(Commands)150 +2875 y Fu(This)c(section)h(describ)s(es)f(builtin)f(commands)h(whic)m (h)g(are)h(unique)e(to)j(or)e(ha)m(v)m(e)h(b)s(een)f(extended)g(in)150 -2980 y(Bash.)g(Some)30 b(of)h(these)g(commands)f(are)g(sp)s(eci\014ed)g -(in)g(the)h Fm(posix)e Fu(standard.)150 3132 y Ft(alias)870 -3262 y(alias)46 b([-p])h([)p Fj(name)p Ft([=)p Fj(value)p -Ft(])d(...)o(])630 3393 y Fu(Without)26 b(argumen)m(ts)f(or)g(with)f +2984 y(Bash.)g(Some)30 b(of)h(these)g(commands)f(are)g(sp)s(eci\014ed)g +(in)g(the)h Fm(posix)e Fu(standard.)150 3135 y Ft(alias)870 +3265 y(alias)46 b([-p])h([)p Fj(name)p Ft([=)p Fj(value)p +Ft(])d(...)o(])630 3395 y Fu(Without)26 b(argumen)m(ts)f(or)g(with)f (the)h Ft(-p)g Fu(option,)h Ft(alias)e Fu(prin)m(ts)g(the)h(list)h(of)f -(aliases)h(on)f(the)630 3502 y(standard)g(output)g(in)g(a)h(form)f +(aliases)h(on)f(the)630 3505 y(standard)g(output)g(in)g(a)h(form)f (that)h(allo)m(ws)h(them)e(to)h(b)s(e)f(reused)g(as)g(input.)39 -b(If)25 b(argumen)m(ts)630 3612 y(are)j(supplied,)e(an)i(alias)g(is)f +b(If)25 b(argumen)m(ts)630 3614 y(are)j(supplied,)e(an)i(alias)g(is)f (de\014ned)f(for)h(eac)m(h)h Fr(name)33 b Fu(whose)27 b Fr(v)-5 b(alue)33 b Fu(is)27 b(giv)m(en.)41 b(If)26 -b(no)h Fr(v)-5 b(alue)630 3722 y Fu(is)37 b(giv)m(en,)j(the)d(name)g +b(no)h Fr(v)-5 b(alue)630 3724 y Fu(is)37 b(giv)m(en,)j(the)d(name)g (and)g(v)-5 b(alue)37 b(of)h(the)f(alias)h(is)f(prin)m(ted.)61 -b(Aliases)38 b(are)f(describ)s(ed)f(in)630 3831 y(Section)31 -b(6.6)h([Aliases],)g(page)f(89.)150 3983 y Ft(bind)870 -4113 y(bind)47 b([-m)g Fj(keymap)p Ft(])e([-lpsvPSVX])870 -4223 y(bind)i([-m)g Fj(keymap)p Ft(])e([-q)i Fj(function)p +b(Aliases)38 b(are)f(describ)s(ed)f(in)630 3833 y(Section)31 +b(6.6)h([Aliases],)g(page)f(89.)150 3984 y Ft(bind)870 +4114 y(bind)47 b([-m)g Fj(keymap)p Ft(])e([-lpsvPSVX])870 +4224 y(bind)i([-m)g Fj(keymap)p Ft(])e([-q)i Fj(function)p Ft(])f([-u)g Fj(function)p Ft(])g([-r)h Fj(keyseq)p Ft(])870 4333 y(bind)g([-m)g Fj(keymap)p Ft(])e(-f)j Fj(filename)870 -4442 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e(-x)j Fj(keyseq:shell-command) +4443 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e(-x)j Fj(keyseq:shell-command) 870 4552 y Ft(bind)f([-m)g Fj(keymap)p Ft(])e Fj(keyseq:function-name) -870 4661 y Ft(bind)i([-m)g Fj(keymap)p Ft(])e Fj +870 4662 y Ft(bind)i([-m)g Fj(keymap)p Ft(])e Fj (keyseq:readline-command)630 4792 y Fu(Displa)m(y)22 b(curren)m(t)f(Readline)h(\(see)f(Chapter)g(8)g([Command)f(Line)h (Editing],)j(page)e(103\))g(k)m(ey)630 4902 y(and)36 @@ -11943,7 +11948,7 @@ b Ft(-s)g Fu(option)630 2044 y(restricts)j Ft(enable)d Fu(to)j(the)f Fm(posix)f Fu(sp)s(ecial)i(builtins.)54 b(If)34 b Ft(-s)h Fu(is)g(used)f(with)g Ft(-f)p Fu(,)i(the)f(new)630 2153 y(builtin)30 b(b)s(ecomes)h(a)f(sp)s(ecial)h(builtin)f(\(see)i -(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(68\).)630 +(Section)f(4.4)g([Sp)s(ecial)g(Builtins],)g(page)g(69\).)630 2288 y(The)26 b(return)f(status)h(is)g(zero)h(unless)e(a)i Fr(name)k Fu(is)26 b(not)g(a)h(shell)f(builtin)g(or)g(there)g(is)g(an)g (error)630 2398 y(loading)31 b(a)g(new)f(builtin)g(from)g(a)g(shared)g @@ -12676,400 +12681,409 @@ b(and)40 b(a)i(c)m(haracter)h(to)s(o)g(man)m(y)-8 b(.)74 b(If)42 b(a)1110 628 y(correction)25 b(is)e(found,)g(the)h(corrected)g (path)f(is)g(prin)m(ted,)h(and)f(the)g(command)1110 737 y(pro)s(ceeds.)40 b(This)30 b(option)h(is)f(only)h(used)e(b)m(y)h(in)m -(teractiv)m(e)k(shells.)630 883 y Ft(checkhash)1110 993 +(teractiv)m(e)k(shells.)630 902 y Ft(checkhash)1110 1011 y Fu(If)29 b(this)h(is)g(set,)g(Bash)g(c)m(hec)m(ks)h(that)g(a)f -(command)f(found)g(in)g(the)h(hash)f(table)1110 1103 +(command)f(found)g(in)g(the)h(hash)f(table)1110 1121 y(exists)k(b)s(efore)f(trying)h(to)h(execute)g(it.)48 -b(If)32 b(a)h(hashed)e(command)i(no)f(longer)1110 1212 +b(If)32 b(a)h(hashed)e(command)i(no)f(longer)1110 1230 y(exists,)f(a)g(normal)f(path)g(searc)m(h)h(is)g(p)s(erformed.)630 -1358 y Ft(checkjobs)1110 1468 y Fu(If)d(set,)i(Bash)e(lists)h(the)g +1395 y Ft(checkjobs)1110 1504 y Fu(If)d(set,)i(Bash)e(lists)h(the)g (status)g(of)f(an)m(y)h(stopp)s(ed)f(and)g(running)e(jobs)i(b)s(efore) -1110 1577 y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72 +1110 1614 y(exiting)42 b(an)f(in)m(teractiv)m(e)j(shell.)72 b(If)41 b(an)m(y)g(jobs)f(are)i(running,)g(this)f(causes)1110 -1687 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h -(exit)g(is)g(attempted)h(without)e(an)1110 1797 y(in)m(terv)m(ening)j +1724 y(the)30 b(exit)g(to)g(b)s(e)f(deferred)g(un)m(til)h(a)f(second)h +(exit)g(is)g(attempted)h(without)e(an)1110 1833 y(in)m(terv)m(ening)j (command)e(\(see)h(Chapter)f(7)h([Job)f(Con)m(trol],)i(page)f(99\).)42 -b(The)1110 1906 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h -(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)630 2052 y Ft(checkwinsize)1110 -2162 y Fu(If)41 b(set,)k(Bash)c(c)m(hec)m(ks)i(the)f(windo)m(w)e(size)j -(after)f(eac)m(h)g(command)f(and,)j(if)1110 2271 y(necessary)-8 +b(The)1110 1943 y(shell)31 b(alw)m(a)m(ys)g(p)s(ostp)s(ones)f(exiting)h +(if)g(an)m(y)f(jobs)g(are)h(stopp)s(ed.)630 2107 y Ft(checkwinsize)1110 +2217 y Fu(If)41 b(set,)k(Bash)c(c)m(hec)m(ks)i(the)f(windo)m(w)e(size)j +(after)f(eac)m(h)g(command)f(and,)j(if)1110 2326 y(necessary)-8 b(,)31 b(up)s(dates)f(the)g(v)-5 b(alues)31 b(of)g Ft(LINES)e -Fu(and)g Ft(COLUMNS)p Fu(.)630 2418 y Ft(cmdhist)144 +Fu(and)g Ft(COLUMNS)p Fu(.)630 2491 y Ft(cmdhist)144 b Fu(If)33 b(set,)j(Bash)e(attempts)h(to)g(sa)m(v)m(e)g(all)g(lines)f -(of)g(a)h(m)m(ultiple-line)g(command)1110 2527 y(in)c(the)g(same)g +(of)g(a)h(m)m(ultiple-line)g(command)1110 2600 y(in)c(the)g(same)g (history)g(en)m(try)-8 b(.)42 b(This)30 b(allo)m(ws)i(easy)g -(re-editing)g(of)f(m)m(ulti-line)1110 2637 y(commands.)630 -2783 y Ft(compat31)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s +(re-editing)g(of)f(m)m(ulti-line)1110 2710 y(commands.)630 +2874 y Ft(compat31)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s (eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.1)h(with)e(resp)s(ect) -1110 2892 y(to)39 b(quoted)f(argumen)m(ts)g(to)h(the)f(conditional)h -(command's)f(`)p Ft(=~)p Fu(')g(op)s(erator)1110 3002 +1110 2984 y(to)39 b(quoted)f(argumen)m(ts)g(to)h(the)f(conditional)h +(command's)f(`)p Ft(=~)p Fu(')g(op)s(erator)1110 3093 y(and)i(with)f(resp)s(ect)i(to)g(lo)s(cale-sp)s(eci\014c)h(string)e -(comparison)g(when)f(using)1110 3112 y(the)31 b Ft([[)e +(comparison)g(when)f(using)1110 3203 y(the)31 b Ft([[)e Fu(conditional)j(command's)e(`)p Ft(<)p Fu(')h(and)f(`)p Ft(>)p Fu(')g(op)s(erators.)41 b(Bash)31 b(v)m(ersions)1110 -3221 y(prior)g(to)h(bash-4.1)g(use)g(ASCI)s(I)e(collation)j(and)e -(strcmp\(3\);)i(bash-4.1)g(and)1110 3331 y(later)e(use)f(the)h(curren)m +3313 y(prior)g(to)h(bash-4.1)g(use)g(ASCI)s(I)e(collation)j(and)e +(strcmp\(3\);)i(bash-4.1)g(and)1110 3422 y(later)e(use)f(the)h(curren)m (t)f(lo)s(cale's)i(collation)h(sequence)e(and)f(strcoll\(3\).)630 -3477 y Ft(compat32)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s +3587 y Ft(compat32)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s (eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(3.2)h(with)e(resp)s(ect) -1110 3587 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g -(when)f(using)h(the)g Ft([[)g Fu(conditional)1110 3696 -y(command's)d(`)p Ft(<)p Fu(')h(and)f(`)p Ft(>)p Fu(')g(op)s(erators)h -(\(see)g(previous)f(item\).)630 3842 y Ft(compat40)96 -b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s(eha)m(vior)f(to)i -(that)f(of)f(v)m(ersion)h(4.0)h(with)e(resp)s(ect)1110 -3952 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g(when)f -(using)h(the)g Ft([[)g Fu(conditional)1110 4061 y(command's)28 -b(`)p Ft(<)p Fu(')h(and)f(`)p Ft(>)p Fu(')h(op)s(erators)f(\(see)i -(description)e(of)h Ft(compat31)p Fu(\))e(and)1110 4171 -y(the)38 b(e\013ect)i(of)e(in)m(terrupting)f(a)i(command)e(list.)64 -b(Bash)38 b(v)m(ersions)h(4.0)g(and)1110 4281 y(later)24 +1110 3696 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g +(when)f(using)h(the)g Ft([[)g Fu(conditional)1110 3806 +y(command's)21 b(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s +(erators)g(\(see)h(previous)e(item\))i(and)e(the)h(e\013ect)i(of)1110 +3915 y(in)m(terrupting)h(a)h(command)e(list.)40 b(Bash)24 +b(v)m(ersions)h(3.2)g(and)f(earlier)h(con)m(tin)m(ue)1110 +4025 y(with)33 b(the)g(next)g(command)g(in)g(the)g(list)h(after)f(one)h +(terminates)g(due)e(to)i(an)1110 4134 y(in)m(terrupt.)630 +4299 y Ft(compat40)96 b Fu(If)27 b(set,)i(Bash)e(c)m(hanges)i(its)f(b)s +(eha)m(vior)f(to)i(that)f(of)f(v)m(ersion)h(4.0)h(with)e(resp)s(ect) +1110 4408 y(to)34 b(lo)s(cale-sp)s(eci\014c)h(string)e(comparison)g +(when)f(using)h(the)g Ft([[)g Fu(conditional)1110 4518 +y(command's)28 b(`)p Ft(<)p Fu(')h(and)f(`)p Ft(>)p Fu(')h(op)s +(erators)f(\(see)i(description)e(of)h Ft(compat31)p Fu(\))e(and)1110 +4628 y(the)38 b(e\013ect)i(of)e(in)m(terrupting)f(a)i(command)e(list.) +64 b(Bash)38 b(v)m(ersions)h(4.0)g(and)1110 4737 y(later)24 b(in)m(terrupt)f(the)g(list)h(as)g(if)f(the)h(shell)f(receiv)m(ed)i -(the)e(in)m(terrupt;)i(previous)1110 4390 y(v)m(ersions)31 +(the)e(in)m(terrupt;)i(previous)1110 4847 y(v)m(ersions)31 b(con)m(tin)m(ue)g(with)f(the)h(next)g(command)f(in)g(the)g(list.)630 -4536 y Ft(compat41)96 b Fu(If)25 b(set,)j(Bash,)e(when)f(in)g +5011 y Ft(compat41)96 b Fu(If)25 b(set,)j(Bash,)e(when)f(in)g Fm(posix)g Fu(mo)s(de,)i(treats)f(a)g(single)h(quote)f(in)f(a)h -(double-)1110 4646 y(quoted)46 b(parameter)h(expansion)f(as)g(a)h(sp)s -(ecial)f(c)m(haracter.)90 b(The)45 b(single)1110 4756 +(double-)1110 5121 y(quoted)46 b(parameter)h(expansion)f(as)g(a)h(sp)s +(ecial)f(c)m(haracter.)90 b(The)45 b(single)1110 5230 y(quotes)34 b(m)m(ust)g(matc)m(h)h(\(an)f(ev)m(en)h(n)m(um)m(b)s(er\))e -(and)g(the)h(c)m(haracters)h(b)s(et)m(w)m(een)1110 4865 +(and)g(the)h(c)m(haracters)h(b)s(et)m(w)m(een)1110 5340 y(the)40 b(single)g(quotes)g(are)g(considered)g(quoted.)69 -b(This)38 b(is)i(the)g(b)s(eha)m(vior)g(of)1110 4975 -y Fm(posix)f Fu(mo)s(de)g(through)g(v)m(ersion)h(4.1.)69 -b(The)39 b(default)g(Bash)h(b)s(eha)m(vior)g(re-)1110 -5084 y(mains)30 b(as)h(in)f(previous)g(v)m(ersions.)630 -5230 y Ft(compat42)96 b Fu(If)29 b(set,)i(Bash)f(do)s(es)f(not)h(pro)s -(cess)g(the)g(replacemen)m(t)h(string)e(in)h(the)g(pattern)1110 -5340 y(substitution)g(w)m(ord)g(expansion)g(using)g(quote)h(remo)m(v)-5 -b(al.)p eop end +b(This)38 b(is)i(the)g(b)s(eha)m(vior)g(of)p eop end %%Page: 65 71 TeXDict begin 65 70 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(65)630 299 y Ft(compat43)96 -b Fu(If)24 b(set,)j(Bash)e(do)s(es)g(not)g(prin)m(t)g(a)g(w)m(arning)g -(message)h(if)f(an)g(attempt)h(is)f(made)1110 408 y(to)43 -b(use)g(a)g(quoted)f(comp)s(ound)f(arra)m(y)i(assignmen)m(t)h(as)f(an)f -(argumen)m(t)h(to)1110 518 y Ft(declare)p Fu(,)31 b(mak)m(es)i(w)m(ord) -f(expansion)g(errors)g(non-fatal)i(errors)d(that)i(cause)1110 -628 y(the)28 b(curren)m(t)h(command)f(to)h(fail)g(\(the)f(default)h(b)s -(eha)m(vior)f(is)h(to)g(mak)m(e)g(them)1110 737 y(fatal)42 -b(errors)e(that)i(cause)f(the)h(shell)f(to)g(exit\),)k(and)c(do)s(es)f -(not)h(reset)h(the)1110 847 y(lo)s(op)34 b(state)h(when)f(a)g(shell)g -(function)g(is)g(executed)h(\(this)f(allo)m(ws)h Ft(break)e -Fu(or)1110 956 y Ft(continue)25 b Fu(in)j(a)g(shell)g(function)f(to)i -(a\013ect)g(lo)s(ops)f(in)f(the)h(caller's)h(con)m(text\).)630 -1121 y Ft(complete_fullquote)1110 1230 y Fu(If)i(set,)g(Bash)h(quotes)f -(all)h(shell)f(metac)m(haracters)i(in)e(\014lenames)g(and)g(direc-)1110 -1340 y(tory)g(names)f(when)g(p)s(erforming)f(completion.)43 -b(If)30 b(not)h(set,)g(Bash)g(remo)m(v)m(es)1110 1450 +b(Shell)30 b(Builtin)h(Commands)2069 b(65)1110 299 y +Fm(posix)39 b Fu(mo)s(de)g(through)g(v)m(ersion)h(4.1.)69 +b(The)39 b(default)g(Bash)h(b)s(eha)m(vior)g(re-)1110 +408 y(mains)30 b(as)h(in)f(previous)g(v)m(ersions.)630 +564 y Ft(compat42)96 b Fu(If)29 b(set,)i(Bash)f(do)s(es)f(not)h(pro)s +(cess)g(the)g(replacemen)m(t)h(string)e(in)h(the)g(pattern)1110 +674 y(substitution)g(w)m(ord)g(expansion)g(using)g(quote)h(remo)m(v)-5 +b(al.)630 830 y Ft(compat43)96 b Fu(If)24 b(set,)j(Bash)e(do)s(es)g +(not)g(prin)m(t)g(a)g(w)m(arning)g(message)h(if)f(an)g(attempt)h(is)f +(made)1110 939 y(to)43 b(use)g(a)g(quoted)f(comp)s(ound)f(arra)m(y)i +(assignmen)m(t)h(as)f(an)f(argumen)m(t)h(to)1110 1049 +y Ft(declare)p Fu(,)31 b(mak)m(es)i(w)m(ord)f(expansion)g(errors)g +(non-fatal)i(errors)d(that)i(cause)1110 1158 y(the)28 +b(curren)m(t)h(command)f(to)h(fail)g(\(the)f(default)h(b)s(eha)m(vior)f +(is)h(to)g(mak)m(e)g(them)1110 1268 y(fatal)42 b(errors)e(that)i(cause) +f(the)h(shell)f(to)g(exit\),)k(and)c(do)s(es)f(not)h(reset)h(the)1110 +1377 y(lo)s(op)34 b(state)h(when)f(a)g(shell)g(function)g(is)g +(executed)h(\(this)f(allo)m(ws)h Ft(break)e Fu(or)1110 +1487 y Ft(continue)25 b Fu(in)j(a)g(shell)g(function)f(to)i(a\013ect)g +(lo)s(ops)f(in)f(the)h(caller's)h(con)m(text\).)630 1643 +y Ft(complete_fullquote)1110 1752 y Fu(If)i(set,)g(Bash)h(quotes)f(all) +h(shell)f(metac)m(haracters)i(in)e(\014lenames)g(and)g(direc-)1110 +1862 y(tory)g(names)f(when)g(p)s(erforming)f(completion.)43 +b(If)30 b(not)h(set,)g(Bash)g(remo)m(v)m(es)1110 1972 y(metac)m(haracters)40 b(suc)m(h)d(as)h(the)g(dollar)g(sign)g(from)f -(the)h(set)g(of)f(c)m(haracters)1110 1559 y(that)f(will)g(b)s(e)f +(the)h(set)g(of)f(c)m(haracters)1110 2081 y(that)f(will)g(b)s(e)f (quoted)g(in)g(completed)i(\014lenames)e(when)f(these)i(metac)m(har-) -1110 1669 y(acters)29 b(app)s(ear)e(in)g(shell)h(v)-5 +1110 2191 y(acters)29 b(app)s(ear)e(in)g(shell)h(v)-5 b(ariable)28 b(references)g(in)f(w)m(ords)g(to)i(b)s(e)e(completed.) -1110 1778 y(This)k(means)i(that)g(dollar)f(signs)g(in)g(v)-5 +1110 2300 y(This)k(means)i(that)g(dollar)f(signs)g(in)g(v)-5 b(ariable)33 b(names)g(that)f(expand)g(to)h(di-)1110 -1888 y(rectories)28 b(will)g(not)f(b)s(e)f(quoted;)j(ho)m(w)m(ev)m(er,) -g(an)m(y)e(dollar)h(signs)f(app)s(earing)f(in)1110 1998 +2410 y(rectories)28 b(will)g(not)f(b)s(e)f(quoted;)j(ho)m(w)m(ev)m(er,) +g(an)m(y)e(dollar)h(signs)f(app)s(earing)f(in)1110 2519 y(\014lenames)j(will)h(not)f(b)s(e)g(quoted,)h(either.)41 b(This)28 b(is)i(activ)m(e)h(only)e(when)g(bash)1110 -2107 y(is)39 b(using)f(bac)m(kslashes)i(to)g(quote)g(completed)f -(\014lenames.)67 b(This)38 b(v)-5 b(ariable)1110 2217 +2629 y(is)39 b(using)f(bac)m(kslashes)i(to)g(quote)g(completed)f +(\014lenames.)67 b(This)38 b(v)-5 b(ariable)1110 2739 y(is)41 b(set)g(b)m(y)g(default,)j(whic)m(h)c(is)h(the)g(default)g -(Bash)g(b)s(eha)m(vior)g(in)g(v)m(ersions)1110 2326 y(through)30 -b(4.2.)630 2491 y Ft(direxpand)1110 2600 y Fu(If)k(set,)i(Bash)f +(Bash)g(b)s(eha)m(vior)g(in)g(v)m(ersions)1110 2848 y(through)30 +b(4.2.)630 3004 y Ft(direxpand)1110 3114 y Fu(If)k(set,)i(Bash)f (replaces)g(directory)g(names)g(with)f(the)g(results)h(of)f(w)m(ord)g -(ex-)1110 2710 y(pansion)k(when)g(p)s(erforming)f(\014lename)i -(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 2819 +(ex-)1110 3223 y(pansion)k(when)g(p)s(erforming)f(\014lename)i +(completion.)67 b(This)38 b(c)m(hanges)i(the)1110 3333 y(con)m(ten)m(ts)29 b(of)e(the)g(readline)h(editing)g(bu\013er.)38 -b(If)27 b(not)g(set,)i(Bash)e(attempts)h(to)1110 2929 +b(If)27 b(not)g(set,)i(Bash)e(attempts)h(to)1110 3442 y(preserv)m(e)j(what)f(the)g(user)g(t)m(yp)s(ed.)630 -3093 y Ft(dirspell)96 b Fu(If)26 b(set,)i(Bash)f(attempts)g(sp)s +3598 y Ft(dirspell)96 b Fu(If)26 b(set,)i(Bash)f(attempts)g(sp)s (elling)g(correction)g(on)g(directory)g(names)f(during)1110 -3203 y(w)m(ord)36 b(completion)h(if)f(the)g(directory)g(name)g -(initially)h(supplied)e(do)s(es)h(not)1110 3313 y(exist.)630 -3477 y Ft(dotglob)144 b Fu(If)27 b(set,)i(Bash)f(includes)g +3708 y(w)m(ord)36 b(completion)h(if)f(the)g(directory)g(name)g +(initially)h(supplied)e(do)s(es)h(not)1110 3817 y(exist.)630 +3973 y Ft(dotglob)144 b Fu(If)27 b(set,)i(Bash)f(includes)g (\014lenames)g(b)s(eginning)f(with)g(a)h(`.')41 b(in)27 -b(the)h(results)g(of)1110 3587 y(\014lename)j(expansion.)630 -3751 y Ft(execfail)96 b Fu(If)24 b(this)h(is)f(set,)j(a)e(non-in)m +b(the)h(results)g(of)1110 4083 y(\014lename)j(expansion.)630 +4238 y Ft(execfail)96 b Fu(If)24 b(this)h(is)f(set,)j(a)e(non-in)m (teractiv)m(e)i(shell)e(will)f(not)h(exit)h(if)e(it)h(cannot)h(execute) -1110 3861 y(the)i(\014le)g(sp)s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to) +1110 4348 y(the)i(\014le)g(sp)s(eci\014ed)g(as)g(an)g(argumen)m(t)g(to) h(the)f Ft(exec)f Fu(builtin)h(command.)39 b(An)1110 -3970 y(in)m(teractiv)m(e)33 b(shell)e(do)s(es)f(not)g(exit)i(if)e -Ft(exec)f Fu(fails.)630 4134 y Ft(expand_aliases)1110 -4244 y Fu(If)j(set,)h(aliases)g(are)g(expanded)e(as)h(describ)s(ed)f(b) -s(elo)m(w)h(under)f(Aliases,)i(Sec-)1110 4354 y(tion)38 +4457 y(in)m(teractiv)m(e)33 b(shell)e(do)s(es)f(not)g(exit)i(if)e +Ft(exec)f Fu(fails.)630 4613 y Ft(expand_aliases)1110 +4723 y Fu(If)j(set,)h(aliases)g(are)g(expanded)e(as)h(describ)s(ed)f(b) +s(elo)m(w)h(under)f(Aliases,)i(Sec-)1110 4832 y(tion)38 b(6.6)h([Aliases],)j(page)d(89.)64 b(This)37 b(option)h(is)g(enabled)g -(b)m(y)g(default)g(for)1110 4463 y(in)m(teractiv)m(e)33 -b(shells.)630 4628 y Ft(extdebug)96 b Fu(If)30 b(set,)h(b)s(eha)m(vior) +(b)m(y)g(default)g(for)1110 4942 y(in)m(teractiv)m(e)33 +b(shells.)630 5098 y Ft(extdebug)96 b Fu(If)30 b(set,)h(b)s(eha)m(vior) g(in)m(tended)f(for)g(use)g(b)m(y)g(debuggers)g(is)h(enabled:)1159 -4765 y(1.)61 b(The)37 b Ft(-F)g Fu(option)h(to)g(the)g +5230 y(1.)61 b(The)37 b Ft(-F)g Fu(option)h(to)g(the)g Ft(declare)d Fu(builtin)i(\(see)i(Section)f(4.2)h([Bash)1290 -4874 y(Builtins],)29 b(page)g(48\))g(displa)m(ys)f(the)g(source)h -(\014le)f(name)g(and)f(line)h(n)m(um-)1290 4984 y(b)s(er)h(corresp)s -(onding)g(to)i(eac)m(h)g(function)f(name)g(supplied)f(as)i(an)f(argu-) -1290 5093 y(men)m(t.)1159 5230 y(2.)61 b(If)20 b(the)h(command)g(run)e -(b)m(y)i(the)f Ft(DEBUG)g Fu(trap)g(returns)g(a)h(non-zero)g(v)-5 -b(alue,)1290 5340 y(the)31 b(next)f(command)g(is)h(skipp)s(ed)e(and)g -(not)i(executed.)p eop end +5340 y(Builtins],)29 b(page)g(48\))g(displa)m(ys)f(the)g(source)h +(\014le)f(name)g(and)f(line)h(n)m(um-)p eop end %%Page: 66 72 TeXDict begin 66 71 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(66)1159 299 y(3.)61 +b(Shell)30 b(Builtin)h(Commands)2069 b(66)1290 299 y(b)s(er)29 +b(corresp)s(onding)g(to)i(eac)m(h)g(function)f(name)g(supplied)f(as)i +(an)f(argu-)1290 408 y(men)m(t.)1159 541 y(2.)61 b(If)20 +b(the)h(command)g(run)e(b)m(y)i(the)f Ft(DEBUG)g Fu(trap)g(returns)g(a) +h(non-zero)g(v)-5 b(alue,)1290 651 y(the)31 b(next)f(command)g(is)h +(skipp)s(ed)e(and)g(not)i(executed.)1159 783 y(3.)61 b(If)37 b(the)g(command)g(run)f(b)m(y)i(the)f Ft(DEBUG)f Fu(trap)h(returns)f(a)i(v)-5 b(alue)38 b(of)f(2,)1290 -408 y(and)c(the)g(shell)h(is)f(executing)i(in)e(a)h(subroutine)e(\(a)i -(shell)g(function)f(or)1290 518 y(a)h(shell)g(script)f(executed)h(b)m +893 y(and)c(the)g(shell)h(is)f(executing)i(in)e(a)h(subroutine)e(\(a)i +(shell)g(function)f(or)1290 1003 y(a)h(shell)g(script)f(executed)h(b)m (y)g(the)f Ft(.)h Fu(or)f Ft(source)f Fu(builtins\),)i(the)g(shell)1290 -628 y(sim)m(ulates)d(a)g(call)h(to)f Ft(return)p Fu(.)1159 -760 y(4.)61 b Ft(BASH_ARGC)34 b Fu(and)i Ft(BASH_ARGV)e +1112 y(sim)m(ulates)d(a)g(call)h(to)f Ft(return)p Fu(.)1159 +1245 y(4.)61 b Ft(BASH_ARGC)34 b Fu(and)i Ft(BASH_ARGV)e Fu(are)j(up)s(dated)e(as)h(describ)s(ed)g(in)g(their)1290 -870 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g(V)-8 -b(ariables],)32 b(page)f(70\).)1159 1003 y(5.)61 b(F)-8 +1354 y(descriptions)30 b(\(see)i(Section)f(5.2)g([Bash)g(V)-8 +b(ariables],)32 b(page)f(70\).)1159 1487 y(5.)61 b(F)-8 b(unction)57 b(tracing)g(is)g(enabled:)93 b(command)56 -b(substitution,)63 b(shell)1290 1112 y(functions,)32 +b(substitution,)63 b(shell)1290 1597 y(functions,)32 b(and)e(subshells)h(in)m(v)m(ok)m(ed)i(with)e Ft(\()f -Fj(command)e Ft(\))j Fu(inherit)h(the)1290 1222 y Ft(DEBUG)d -Fu(and)h Ft(RETURN)e Fu(traps.)1159 1354 y(6.)61 b(Error)41 +Fj(command)e Ft(\))j Fu(inherit)h(the)1290 1706 y Ft(DEBUG)d +Fu(and)h Ft(RETURN)e Fu(traps.)1159 1839 y(6.)61 b(Error)41 b(tracing)i(is)f(enabled:)63 b(command)42 b(substitution,)i(shell)f -(func-)1290 1464 y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i +(func-)1290 1948 y(tions,)32 b(and)e(subshells)g(in)m(v)m(ok)m(ed)i (with)e Ft(\()g Fj(command)f Ft(\))h Fu(inherit)h(the)g -Ft(ERR)1290 1574 y Fu(trap.)630 1729 y Ft(extglob)144 +Ft(ERR)1290 2058 y Fu(trap.)630 2214 y Ft(extglob)144 b Fu(If)26 b(set,)i(the)f(extended)f(pattern)h(matc)m(hing)g(features)g -(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 1839 y(Section)j(3.5.8.1)i +(describ)s(ed)e(ab)s(o)m(v)m(e)j(\(see)1110 2323 y(Section)j(3.5.8.1)i ([P)m(attern)f(Matc)m(hing],)g(page)f(31\))h(are)f(enabled.)630 -1995 y Ft(extquote)96 b Fu(If)51 b(set,)58 b Ft($')p +2479 y Ft(extquote)96 b Fu(If)51 b(set,)58 b Ft($')p Fj(string)p Ft(')49 b Fu(and)i Ft($")p Fj(string)p Ft(")e -Fu(quoting)k(is)e(p)s(erformed)f(within)1110 2104 y Ft(${)p +Fu(quoting)k(is)e(p)s(erformed)f(within)1110 2589 y Ft(${)p Fj(parameter)p Ft(})31 b Fu(expansions)k(enclosed)g(in)g(double)f -(quotes.)55 b(This)33 b(option)1110 2214 y(is)d(enabled)h(b)m(y)f -(default.)630 2370 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d +(quotes.)55 b(This)33 b(option)1110 2698 y(is)d(enabled)h(b)m(y)f +(default.)630 2854 y Ft(failglob)96 b Fu(If)36 b(set,)j(patterns)d (whic)m(h)g(fail)h(to)h(matc)m(h)f(\014lenames)f(during)g(\014lename)g -(ex-)1110 2479 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630 -2635 y Ft(force_fignore)1110 2744 y Fu(If)43 b(set,)k(the)d(su\016xes)f +(ex-)1110 2964 y(pansion)30 b(result)g(in)g(an)g(expansion)h(error.)630 +3119 y Ft(force_fignore)1110 3229 y Fu(If)43 b(set,)k(the)d(su\016xes)f (sp)s(eci\014ed)f(b)m(y)i(the)f Ft(FIGNORE)f Fu(shell)h(v)-5 -b(ariable)44 b(cause)1110 2854 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h +b(ariable)44 b(cause)1110 3339 y(w)m(ords)31 b(to)h(b)s(e)f(ignored)h (when)f(p)s(erforming)f(w)m(ord)h(completion)i(ev)m(en)f(if)g(the)1110 -2964 y(ignored)37 b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g -(completions.)62 b(See)37 b(Section)h(5.2)1110 3073 y([Bash)24 +3448 y(ignored)37 b(w)m(ords)g(are)g(the)h(only)f(p)s(ossible)g +(completions.)62 b(See)37 b(Section)h(5.2)1110 3558 y([Bash)24 b(V)-8 b(ariables],)27 b(page)e(70,)h(for)d(a)h(description)g(of)g -Ft(FIGNORE)p Fu(.)37 b(This)22 b(option)1110 3183 y(is)30 -b(enabled)h(b)m(y)f(default.)630 3339 y Ft(globasciiranges)1110 -3448 y Fu(If)j(set,)h(range)f(expressions)g(used)f(in)h(pattern)g(matc) -m(hing)h(brac)m(k)m(et)h(expres-)1110 3558 y(sions)28 +Ft(FIGNORE)p Fu(.)37 b(This)22 b(option)1110 3667 y(is)30 +b(enabled)h(b)m(y)f(default.)630 3823 y Ft(globasciiranges)1110 +3933 y Fu(If)j(set,)h(range)f(expressions)g(used)f(in)h(pattern)g(matc) +m(hing)h(brac)m(k)m(et)h(expres-)1110 4042 y(sions)28 b(\(see)h(Section)h(3.5.8.1)g([P)m(attern)g(Matc)m(hing],)h(page)e -(31\))g(b)s(eha)m(v)m(e)g(as)g(if)1110 3667 y(in)i(the)g(traditional)i +(31\))g(b)s(eha)m(v)m(e)g(as)g(if)1110 4152 y(in)i(the)g(traditional)i (C)d(lo)s(cale)j(when)d(p)s(erforming)g(comparisons.)44 -b(That)31 b(is,)1110 3777 y(the)d(curren)m(t)g(lo)s(cale's)i(collating) +b(That)31 b(is,)1110 4261 y(the)d(curren)m(t)g(lo)s(cale's)i(collating) h(sequence)d(is)h(not)f(tak)m(en)h(in)m(to)g(accoun)m(t,)i(so)1110 -3886 y(`)p Ft(b)p Fu(')j(will)g(not)g(collate)i(b)s(et)m(w)m(een)e(`)p +4371 y(`)p Ft(b)p Fu(')j(will)g(not)g(collate)i(b)s(et)m(w)m(een)e(`)p Ft(A)p Fu(')g(and)f(`)p Ft(B)p Fu(',)h(and)f(upp)s(er-case)g(and)g(lo)m -(w)m(er-)1110 3996 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i -(together.)630 4152 y Ft(globstar)96 b Fu(If)38 b(set,)j(the)e(pattern) +(w)m(er-)1110 4481 y(case)e(ASCI)s(I)e(c)m(haracters)j(will)f(collate)i +(together.)630 4636 y Ft(globstar)96 b Fu(If)38 b(set,)j(the)e(pattern) f(`)p Ft(**)p Fu(')h(used)e(in)i(a)f(\014lename)h(expansion)f(con)m -(text)j(will)1110 4261 y(matc)m(h)36 b(all)g(\014les)f(and)f(zero)i(or) +(text)j(will)1110 4746 y(matc)m(h)36 b(all)g(\014les)f(and)f(zero)i(or) f(more)g(directories)h(and)e(sub)s(directories.)54 b(If)1110 -4371 y(the)30 b(pattern)g(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(`)p +4855 y(the)30 b(pattern)g(is)g(follo)m(w)m(ed)i(b)m(y)d(a)i(`)p Ft(/)p Fu(',)f(only)g(directories)h(and)f(sub)s(directories)1110 -4481 y(matc)m(h.)630 4636 y Ft(gnu_errfmt)1110 4746 y +4965 y(matc)m(h.)630 5121 y Ft(gnu_errfmt)1110 5230 y Fu(If)35 b(set,)j(shell)e(error)g(messages)g(are)h(written)e(in)h(the)g -(standard)f Fm(gnu)g Fu(error)1110 4855 y(message)c(format.)630 -5011 y Ft(histappend)1110 5121 y Fu(If)c(set,)j(the)e(history)g(list)g -(is)g(app)s(ended)e(to)j(the)f(\014le)g(named)f(b)m(y)h(the)g(v)-5 -b(alue)29 b(of)1110 5230 y(the)d Ft(HISTFILE)d Fu(v)-5 -b(ariable)26 b(when)e(the)h(shell)h(exits,)h(rather)e(than)h(o)m(v)m -(erwriting)1110 5340 y(the)31 b(\014le.)p eop end +(standard)f Fm(gnu)g Fu(error)1110 5340 y(message)c(format.)p +eop end %%Page: 67 73 TeXDict begin 67 72 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(67)630 299 y Ft(histreedit)1110 -408 y Fu(If)33 b(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g -(user)g(is)g(giv)m(en)h(the)g(opp)s(ortunit)m(y)1110 -518 y(to)d(re-edit)g(a)g(failed)g(history)f(substitution.)630 -667 y Ft(histverify)1110 777 y Fu(If)35 b(set,)i(and)e(Readline)h(is)f -(b)s(eing)g(used,)h(the)f(results)g(of)g(history)h(substitu-)1110 -887 y(tion)h(are)g(not)g(immediately)h(passed)e(to)h(the)g(shell)g -(parser.)59 b(Instead,)38 b(the)1110 996 y(resulting)i(line)f(is)h -(loaded)g(in)m(to)g(the)g(Readline)g(editing)g(bu\013er,)h(allo)m(wing) -1110 1106 y(further)29 b(mo)s(di\014cation.)630 1255 -y Ft(hostcomplete)1110 1365 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f -(b)s(eing)g(used,)h(Bash)g(will)f(attempt)h(to)g(p)s(erform)1110 -1474 y(hostname)d(completion)h(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f -(`)p Ft(@)p Fu(')g(is)g(b)s(eing)f(com-)1110 1584 y(pleted)g(\(see)h -(Section)f(8.4.6)i([Commands)d(F)-8 b(or)36 b(Completion],)g(page)g -(123\).)1110 1694 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.) -630 1843 y Ft(huponexit)1110 1953 y Fu(If)i(set,)i(Bash)f(will)h(send)d +b(Shell)30 b(Builtin)h(Commands)2069 b(67)630 299 y Ft(histappend)1110 +408 y Fu(If)27 b(set,)j(the)e(history)g(list)g(is)g(app)s(ended)e(to)j +(the)f(\014le)g(named)f(b)m(y)h(the)g(v)-5 b(alue)29 +b(of)1110 518 y(the)d Ft(HISTFILE)d Fu(v)-5 b(ariable)26 +b(when)e(the)h(shell)h(exits,)h(rather)e(than)h(o)m(v)m(erwriting)1110 +628 y(the)31 b(\014le.)630 814 y Ft(histreedit)1110 924 +y Fu(If)i(set,)h(and)f(Readline)h(is)f(b)s(eing)g(used,)g(a)g(user)g +(is)g(giv)m(en)h(the)g(opp)s(ortunit)m(y)1110 1033 y(to)d(re-edit)g(a)g +(failed)g(history)f(substitution.)630 1219 y Ft(histverify)1110 +1329 y Fu(If)35 b(set,)i(and)e(Readline)h(is)f(b)s(eing)g(used,)h(the)f +(results)g(of)g(history)h(substitu-)1110 1439 y(tion)h(are)g(not)g +(immediately)h(passed)e(to)h(the)g(shell)g(parser.)59 +b(Instead,)38 b(the)1110 1548 y(resulting)i(line)f(is)h(loaded)g(in)m +(to)g(the)g(Readline)g(editing)g(bu\013er,)h(allo)m(wing)1110 +1658 y(further)29 b(mo)s(di\014cation.)630 1844 y Ft(hostcomplete)1110 +1954 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f(b)s(eing)g(used,)h(Bash) +g(will)f(attempt)h(to)g(p)s(erform)1110 2063 y(hostname)d(completion)h +(when)e(a)h(w)m(ord)f(con)m(taining)i(a)f(`)p Ft(@)p +Fu(')g(is)g(b)s(eing)f(com-)1110 2173 y(pleted)g(\(see)h(Section)f +(8.4.6)i([Commands)d(F)-8 b(or)36 b(Completion],)g(page)g(123\).)1110 +2282 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630 +2469 y Ft(huponexit)1110 2578 y Fu(If)i(set,)i(Bash)f(will)h(send)d Ft(SIGHUP)h Fu(to)h(all)h(jobs)e(when)g(an)g(in)m(teractiv)m(e)k(login) -1110 2062 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g -(page)f(39\).)630 2212 y Ft(interactive_comments)1110 -2321 y Fu(Allo)m(w)c(a)g(w)m(ord)e(b)s(eginning)g(with)h(`)p -Ft(#)p Fu(')g(to)h(cause)f(that)h(w)m(ord)f(and)f(all)i(remain-)1110 -2431 y(ing)41 b(c)m(haracters)i(on)e(that)h(line)g(to)g(b)s(e)f -(ignored)g(in)g(an)g(in)m(teractiv)m(e)j(shell.)1110 -2540 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630 -2690 y Ft(lastpipe)96 b Fu(If)24 b(set,)i(and)e(job)g(con)m(trol)i(is)f +1110 2688 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g +(page)f(39\).)630 2874 y Ft(inherit_errexit)1110 2984 +y Fu(If)e(set,)h(command)g(substitution)f(inherits)g(the)g(v)-5 +b(alue)30 b(of)g(the)f Ft(errexit)f Fu(op-)1110 3093 +y(tion,)33 b(instead)g(of)f(unsetting)g(it)h(in)f(the)g(subshell)f(en)m +(vironmen)m(t.)46 b(This)32 b(op-)1110 3203 y(tion)f(is)f(enabled)h +(when)e Fm(posix)h Fu(mo)s(de)g(is)g(enabled.)630 3389 +y Ft(interactive_comments)1110 3499 y Fu(Allo)m(w)d(a)g(w)m(ord)e(b)s +(eginning)g(with)h(`)p Ft(#)p Fu(')g(to)h(cause)f(that)h(w)m(ord)f(and) +f(all)i(remain-)1110 3608 y(ing)41 b(c)m(haracters)i(on)e(that)h(line)g +(to)g(b)s(e)f(ignored)g(in)g(an)g(in)m(teractiv)m(e)j(shell.)1110 +3718 y(This)30 b(option)g(is)h(enabled)f(b)m(y)g(default.)630 +3904 y Ft(lastpipe)96 b Fu(If)24 b(set,)i(and)e(job)g(con)m(trol)i(is)f (not)f(activ)m(e,)k(the)d(shell)f(runs)f(the)i(last)g(command)1110 -2800 y(of)37 b(a)h(pip)s(eline)e(not)h(executed)h(in)f(the)g(bac)m -(kground)g(in)g(the)g(curren)m(t)g(shell)1110 2909 y(en)m(vironmen)m -(t.)630 3059 y Ft(lithist)144 b Fu(If)22 b(enabled,)i(and)d(the)h +4014 y(of)37 b(a)h(pip)s(eline)e(not)h(executed)h(in)f(the)g(bac)m +(kground)g(in)g(the)g(curren)m(t)g(shell)1110 4124 y(en)m(vironmen)m +(t.)630 4310 y Ft(lithist)144 b Fu(If)22 b(enabled,)i(and)d(the)h Ft(cmdhist)e Fu(option)j(is)f(enabled,)i(m)m(ulti-line)f(commands)1110 -3168 y(are)28 b(sa)m(v)m(ed)h(to)g(the)f(history)g(with)f(em)m(b)s -(edded)g(newlines)h(rather)g(than)f(using)1110 3278 y(semicolon)32 -b(separators)f(where)e(p)s(ossible.)630 3427 y Ft(login_shell)1110 -3537 y Fu(The)35 b(shell)h(sets)g(this)f(option)h(if)g(it)g(is)f +4419 y(are)28 b(sa)m(v)m(ed)h(to)g(the)f(history)g(with)f(em)m(b)s +(edded)g(newlines)h(rather)g(than)f(using)1110 4529 y(semicolon)32 +b(separators)f(where)e(p)s(ossible.)630 4715 y Ft(login_shell)1110 +4825 y Fu(The)35 b(shell)h(sets)g(this)f(option)h(if)g(it)g(is)f (started)h(as)g(a)g(login)g(shell)g(\(see)g(Sec-)1110 -3646 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g(81\).)41 +4934 y(tion)29 b(6.1)g([In)m(v)m(oking)h(Bash],)f(page)g(81\).)41 b(The)28 b(v)-5 b(alue)29 b(ma)m(y)g(not)f(b)s(e)g(c)m(hanged.)630 -3796 y Ft(mailwarn)96 b Fu(If)34 b(set,)i(and)e(a)h(\014le)g(that)g +5121 y Ft(mailwarn)96 b Fu(If)34 b(set,)i(and)e(a)h(\014le)g(that)g (Bash)f(is)h(c)m(hec)m(king)h(for)f(mail)g(has)f(b)s(een)g(accessed) -1110 3905 y(since)24 b(the)h(last)g(time)f(it)h(w)m(as)f(c)m(hec)m(k)m +1110 5230 y(since)24 b(the)h(last)g(time)f(it)h(w)m(as)f(c)m(hec)m(k)m (ed,)k(the)c(message)h Ft("The)k(mail)h(in)f Fj(mail-)1110 -4015 y(file)g Ft(has)h(been)f(read")g Fu(is)h(displa)m(y)m(ed.)630 -4164 y Ft(no_empty_cmd_completion)1110 4274 y Fu(If)g(set,)g(and)g -(Readline)g(is)h(b)s(eing)e(used,)h(Bash)g(will)g(not)g(attempt)i(to)e -(searc)m(h)1110 4384 y(the)25 b Ft(PATH)f Fu(for)h(p)s(ossible)f -(completions)j(when)d(completion)i(is)f(attempted)h(on)1110 -4493 y(an)k(empt)m(y)h(line.)630 4643 y Ft(nocaseglob)1110 -4752 y Fu(If)38 b(set,)k(Bash)d(matc)m(hes)g(\014lenames)g(in)f(a)h -(case-insensitiv)m(e)j(fashion)c(when)1110 4862 y(p)s(erforming)29 -b(\014lename)i(expansion.)630 5011 y Ft(nocasematch)1110 -5121 y Fu(If)42 b(set,)k(Bash)d(matc)m(hes)g(patterns)g(in)f(a)h -(case-insensitiv)m(e)i(fashion)d(when)1110 5230 y(p)s(erforming)31 -b(matc)m(hing)i(while)f(executing)i Ft(case)d Fu(or)h -Ft([[)g Fu(conditional)h(com-)1110 5340 y(mands,)d(when)g(p)s -(erforming)g(pattern)h(substitution)g(w)m(ord)g(expansions,)g(or)p +5340 y(file)g Ft(has)h(been)f(read")g Fu(is)h(displa)m(y)m(ed.)p eop end %%Page: 68 74 TeXDict begin 68 73 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(68)1110 299 y(when)31 -b(\014ltering)i(p)s(ossible)f(completions)h(as)g(part)f(of)h -(programmable)f(com-)1110 408 y(pletion.)630 565 y Ft(nullglob)96 -b Fu(If)23 b(set,)j(Bash)e(allo)m(ws)g(\014lename)g(patterns)g(whic)m -(h)f(matc)m(h)h(no)g(\014les)f(to)i(expand)1110 674 y(to)31 -b(a)g(n)m(ull)f(string,)h(rather)f(than)g(themselv)m(es.)630 -830 y Ft(progcomp)96 b Fu(If)25 b(set,)i(the)f(programmable)g -(completion)g(facilities)i(\(see)f(Section)f(8.6)h([Pro-)1110 -940 y(grammable)45 b(Completion],)k(page)c(128\))h(are)f(enabled.)82 -b(This)44 b(option)h(is)1110 1049 y(enabled)30 b(b)m(y)h(default.)630 -1205 y Ft(promptvars)1110 1315 y Fu(If)50 b(set,)56 b(prompt)49 +b(Shell)30 b(Builtin)h(Commands)2069 b(68)630 299 y Ft +(no_empty_cmd_completion)1110 408 y Fu(If)30 b(set,)g(and)g(Readline)g +(is)h(b)s(eing)e(used,)h(Bash)g(will)g(not)g(attempt)i(to)e(searc)m(h) +1110 518 y(the)25 b Ft(PATH)f Fu(for)h(p)s(ossible)f(completions)j +(when)d(completion)i(is)f(attempted)h(on)1110 628 y(an)k(empt)m(y)h +(line.)630 801 y Ft(nocaseglob)1110 911 y Fu(If)38 b(set,)k(Bash)d +(matc)m(hes)g(\014lenames)g(in)f(a)h(case-insensitiv)m(e)j(fashion)c +(when)1110 1020 y(p)s(erforming)29 b(\014lename)i(expansion.)630 +1194 y Ft(nocasematch)1110 1304 y Fu(If)42 b(set,)k(Bash)d(matc)m(hes)g +(patterns)g(in)f(a)h(case-insensitiv)m(e)i(fashion)d(when)1110 +1413 y(p)s(erforming)31 b(matc)m(hing)i(while)f(executing)i +Ft(case)d Fu(or)h Ft([[)g Fu(conditional)h(com-)1110 +1523 y(mands,)d(when)g(p)s(erforming)g(pattern)h(substitution)g(w)m +(ord)g(expansions,)g(or)1110 1632 y(when)g(\014ltering)i(p)s(ossible)f +(completions)h(as)g(part)f(of)h(programmable)f(com-)1110 +1742 y(pletion.)630 1915 y Ft(nullglob)96 b Fu(If)23 +b(set,)j(Bash)e(allo)m(ws)g(\014lename)g(patterns)g(whic)m(h)f(matc)m +(h)h(no)g(\014les)f(to)i(expand)1110 2025 y(to)31 b(a)g(n)m(ull)f +(string,)h(rather)f(than)g(themselv)m(es.)630 2199 y +Ft(progcomp)96 b Fu(If)25 b(set,)i(the)f(programmable)g(completion)g +(facilities)i(\(see)f(Section)f(8.6)h([Pro-)1110 2308 +y(grammable)45 b(Completion],)k(page)c(128\))h(are)f(enabled.)82 +b(This)44 b(option)h(is)1110 2418 y(enabled)30 b(b)m(y)h(default.)630 +2591 y Ft(promptvars)1110 2701 y Fu(If)50 b(set,)56 b(prompt)49 b(strings)h(undergo)g(parameter)h(expansion,)k(command)1110 -1425 y(substitution,)35 b(arithmetic)g(expansion,)g(and)e(quote)i(remo) -m(v)-5 b(al)35 b(after)f(b)s(eing)1110 1534 y(expanded)53 +2811 y(substitution,)35 b(arithmetic)g(expansion,)g(and)e(quote)i(remo) +m(v)-5 b(al)35 b(after)f(b)s(eing)1110 2920 y(expanded)53 b(as)h(describ)s(ed)e(b)s(elo)m(w)i(\(see)h(Section)f(6.9)h([Con)m -(trolling)g(the)1110 1644 y(Prompt],)30 b(page)h(93\).)42 +(trolling)g(the)1110 3030 y(Prompt],)30 b(page)h(93\).)42 b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)630 -1800 y Ft(restricted_shell)1110 1910 y Fu(The)40 b(shell)h(sets)g(this) +3203 y Ft(restricted_shell)1110 3313 y Fu(The)40 b(shell)h(sets)g(this) g(option)g(if)g(it)h(is)e(started)i(in)e(restricted)i(mo)s(de)e(\(see) -1110 2019 y(Section)c(6.10)g([The)f(Restricted)g(Shell],)i(page)e +1110 3423 y(Section)c(6.10)g([The)f(Restricted)g(Shell],)i(page)e (94\).)56 b(The)34 b(v)-5 b(alue)35 b(ma)m(y)h(not)1110 -2129 y(b)s(e)c(c)m(hanged.)49 b(This)32 b(is)h(not)h(reset)f(when)f -(the)h(startup)g(\014les)f(are)i(executed,)1110 2238 +3532 y(b)s(e)c(c)m(hanged.)49 b(This)32 b(is)h(not)h(reset)f(when)f +(the)h(startup)g(\014les)f(are)i(executed,)1110 3642 y(allo)m(wing)k(the)e(startup)f(\014les)h(to)g(disco)m(v)m(er)h -(whether)f(or)f(not)i(a)f(shell)g(is)g(re-)1110 2348 -y(stricted.)630 2504 y Ft(shift_verbose)1110 2614 y Fu(If)g(this)g(is)g +(whether)f(or)f(not)i(a)f(shell)g(is)g(re-)1110 3751 +y(stricted.)630 3925 y Ft(shift_verbose)1110 4034 y Fu(If)g(this)g(is)g (set,)j(the)d Ft(shift)f Fu(builtin)h(prin)m(ts)f(an)h(error)g(message) -i(when)d(the)1110 2723 y(shift)30 b(coun)m(t)h(exceeds)g(the)g(n)m(um)m -(b)s(er)e(of)h(p)s(ositional)i(parameters.)630 2879 y -Ft(sourcepath)1110 2989 y Fu(If)22 b(set,)j(the)e Ft(source)e +i(when)d(the)1110 4144 y(shift)30 b(coun)m(t)h(exceeds)g(the)g(n)m(um)m +(b)s(er)e(of)h(p)s(ositional)i(parameters.)630 4318 y +Ft(sourcepath)1110 4427 y Fu(If)22 b(set,)j(the)e Ft(source)e Fu(builtin)h(uses)g(the)h(v)-5 b(alue)23 b(of)g Ft(PATH)e -Fu(to)j(\014nd)d(the)h(directory)1110 3098 y(con)m(taining)29 +Fu(to)j(\014nd)d(the)h(directory)1110 4537 y(con)m(taining)29 b(the)e(\014le)h(supplied)e(as)h(an)g(argumen)m(t.)40 -b(This)27 b(option)h(is)f(enabled)1110 3208 y(b)m(y)j(default.)630 -3364 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g Ft(echo)e +b(This)27 b(option)h(is)f(enabled)1110 4646 y(b)m(y)j(default.)630 +4820 y Ft(xpg_echo)96 b Fu(If)31 b(set,)h(the)g Ft(echo)e Fu(builtin)h(expands)f(bac)m(kslash-escap)s(e)j(sequences)f(b)m(y)f -(de-)1110 3474 y(fault.)630 3630 y(The)c(return)f(status)i(when)f +(de-)1110 4930 y(fault.)630 5103 y(The)c(return)f(status)i(when)f (listing)h(options)g(is)f(zero)i(if)e(all)i Fr(optnames)i -Fu(are)d(enabled,)g(non-)630 3739 y(zero)40 b(otherwise.)66 +Fu(are)d(enabled,)g(non-)630 5213 y(zero)40 b(otherwise.)66 b(When)39 b(setting)h(or)f(unsetting)g(options,)i(the)e(return)f -(status)h(is)g(zero)630 3849 y(unless)30 b(an)g Fr(optname)36 -b Fu(is)30 b(not)h(a)g(v)-5 b(alid)30 b(shell)h(option.)150 -4078 y Fs(4.4)68 b(Sp)t(ecial)45 b(Builtins)150 4237 -y Fu(F)-8 b(or)35 b(historical)h(reasons,)g(the)e Fm(posix)g -Fu(standard)f(has)i(classi\014ed)f(sev)m(eral)i(builtin)e(commands)g -(as)h Fl(sp)-5 b(e-)150 4347 y(cial)p Fu(.)47 b(When)33 -b(Bash)f(is)h(executing)g(in)f Fm(posix)g Fu(mo)s(de,)h(the)g(sp)s -(ecial)g(builtins)e(di\013er)i(from)f(other)g(builtin)150 -4457 y(commands)e(in)g(three)h(resp)s(ects:)199 4589 -y(1.)61 b(Sp)s(ecial)31 b(builtins)e(are)i(found)e(b)s(efore)h(shell)h -(functions)f(during)f(command)h(lo)s(okup.)199 4722 y(2.)61 -b(If)30 b(a)h(sp)s(ecial)g(builtin)f(returns)f(an)h(error)g(status,)h -(a)g(non-in)m(teractiv)m(e)i(shell)d(exits.)199 4855 -y(3.)61 b(Assignmen)m(t)30 b(statemen)m(ts)h(preceding)f(the)f(command) -g(sta)m(y)i(in)e(e\013ect)i(in)e(the)h(shell)f(en)m(vironmen)m(t)330 -4965 y(after)i(the)f(command)h(completes.)275 5121 y(When)36 -b(Bash)g(is)h(not)f(executing)i(in)e Fm(posix)f Fu(mo)s(de,)j(these)f -(builtins)f(b)s(eha)m(v)m(e)h(no)f(di\013eren)m(tly)h(than)150 -5230 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e(commands.)41 -b(The)30 b(Bash)g Fm(posix)g Fu(mo)s(de)g(is)g(describ)s(ed)f(in)h -(Section)h(6.11)150 5340 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g(95.)p +(status)h(is)g(zero)630 5322 y(unless)30 b(an)g Fr(optname)36 +b Fu(is)30 b(not)h(a)g(v)-5 b(alid)30 b(shell)h(option.)p eop end %%Page: 69 75 TeXDict begin 69 74 bop 150 -116 a Fu(Chapter)30 b(4:)41 -b(Shell)30 b(Builtin)h(Commands)2069 b(69)275 299 y(These)30 -b(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h(builtins:)390 -433 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h(exit)g(export)f -(readonly)f(return)h(set)390 543 y(shift)g(trap)h(unset)p -eop end +b(Shell)30 b(Builtin)h(Commands)2069 b(69)150 299 y Fs(4.4)68 +b(Sp)t(ecial)45 b(Builtins)150 458 y Fu(F)-8 b(or)35 +b(historical)h(reasons,)g(the)e Fm(posix)g Fu(standard)f(has)i +(classi\014ed)f(sev)m(eral)i(builtin)e(commands)g(as)h +Fl(sp)-5 b(e-)150 568 y(cial)p Fu(.)47 b(When)33 b(Bash)f(is)h +(executing)g(in)f Fm(posix)g Fu(mo)s(de,)h(the)g(sp)s(ecial)g(builtins) +e(di\013er)i(from)f(other)g(builtin)150 677 y(commands)e(in)g(three)h +(resp)s(ects:)199 812 y(1.)61 b(Sp)s(ecial)31 b(builtins)e(are)i(found) +e(b)s(efore)h(shell)h(functions)f(during)f(command)h(lo)s(okup.)199 +946 y(2.)61 b(If)30 b(a)h(sp)s(ecial)g(builtin)f(returns)f(an)h(error)g +(status,)h(a)g(non-in)m(teractiv)m(e)i(shell)d(exits.)199 +1081 y(3.)61 b(Assignmen)m(t)30 b(statemen)m(ts)h(preceding)f(the)f +(command)g(sta)m(y)i(in)e(e\013ect)i(in)e(the)h(shell)f(en)m(vironmen)m +(t)330 1191 y(after)i(the)f(command)h(completes.)275 +1350 y(When)36 b(Bash)g(is)h(not)f(executing)i(in)e Fm(posix)f +Fu(mo)s(de,)j(these)f(builtins)f(b)s(eha)m(v)m(e)h(no)f(di\013eren)m +(tly)h(than)150 1460 y(the)31 b(rest)f(of)h(the)f(Bash)h(builtin)e +(commands.)41 b(The)30 b(Bash)g Fm(posix)g Fu(mo)s(de)g(is)g(describ)s +(ed)f(in)h(Section)h(6.11)150 1569 y([Bash)g(POSIX)e(Mo)s(de],)i(page)g +(95.)275 1704 y(These)f(are)g(the)h Fm(posix)f Fu(sp)s(ecial)h +(builtins:)390 1838 y Ft(break)46 b(:)i(.)f(continue)f(eval)g(exec)h +(exit)g(export)f(readonly)f(return)h(set)390 1948 y(shift)g(trap)h +(unset)p eop end %%Page: 70 76 TeXDict begin 70 75 bop 150 -116 a Fu(Chapter)30 b(5:)41 b(Shell)30 b(V)-8 b(ariables)2459 b(70)150 299 y Fp(5)80 -b(Shell)53 b(V)-13 b(ariables)150 541 y Fu(This)21 b(c)m(hapter)i +b(Shell)53 b(V)-13 b(ariables)150 539 y Fu(This)21 b(c)m(hapter)i (describ)s(es)e(the)i(shell)f(v)-5 b(ariables)23 b(that)f(Bash)h(uses.) 37 b(Bash)23 b(automatically)h(assigns)f(default)150 -651 y(v)-5 b(alues)31 b(to)g(a)g(n)m(um)m(b)s(er)e(of)h(v)-5 -b(ariables.)150 888 y Fs(5.1)68 b(Bourne)45 b(Shell)g(V)-11 -b(ariables)150 1047 y Fu(Bash)30 b(uses)g(certain)h(shell)g(v)-5 +648 y(v)-5 b(alues)31 b(to)g(a)g(n)m(um)m(b)s(er)e(of)h(v)-5 +b(ariables.)150 892 y Fs(5.1)68 b(Bourne)45 b(Shell)g(V)-11 +b(ariables)150 1051 y Fu(Bash)30 b(uses)g(certain)h(shell)g(v)-5 b(ariables)31 b(in)f(the)g(same)h(w)m(a)m(y)g(as)g(the)f(Bourne)g -(shell.)41 b(In)30 b(some)g(cases,)i(Bash)150 1157 y(assigns)f(a)f +(shell.)41 b(In)30 b(some)g(cases,)i(Bash)150 1161 y(assigns)f(a)f (default)h(v)-5 b(alue)31 b(to)g(the)f(v)-5 b(ariable.)150 -1320 y Ft(CDPATH)192 b Fu(A)39 b(colon-separated)i(list)e(of)g +1323 y Ft(CDPATH)192 b Fu(A)39 b(colon-separated)i(list)e(of)g (directories)h(used)f(as)g(a)g(searc)m(h)h(path)e(for)h(the)g -Ft(cd)f Fu(builtin)630 1430 y(command.)150 1592 y Ft(HOME)288 +Ft(cd)f Fu(builtin)630 1433 y(command.)150 1594 y Ft(HOME)288 b Fu(The)23 b(curren)m(t)h(user's)f(home)g(directory;)k(the)d(default)g (for)f(the)h Ft(cd)f Fu(builtin)g(command.)38 b(The)630 -1702 y(v)-5 b(alue)37 b(of)f(this)g(v)-5 b(ariable)37 +1704 y(v)-5 b(alue)37 b(of)f(this)g(v)-5 b(ariable)37 b(is)g(also)g(used)e(b)m(y)h(tilde)h(expansion)f(\(see)i(Section)f -(3.5.2)h([Tilde)630 1811 y(Expansion],)30 b(page)h(22\).)150 -1973 y Ft(IFS)336 b Fu(A)25 b(list)i(of)e(c)m(haracters)i(that)f +(3.5.2)h([Tilde)630 1813 y(Expansion],)30 b(page)h(22\).)150 +1975 y Ft(IFS)336 b Fu(A)25 b(list)i(of)e(c)m(haracters)i(that)f (separate)g(\014elds;)h(used)e(when)f(the)i(shell)f(splits)h(w)m(ords)e -(as)i(part)630 2083 y(of)31 b(expansion.)150 2245 y Ft(MAIL)288 +(as)i(part)630 2084 y(of)31 b(expansion.)150 2246 y Ft(MAIL)288 b Fu(If)44 b(this)g(parameter)h(is)g(set)g(to)g(a)f(\014lename)h(or)f (directory)h(name)g(and)f(the)g Ft(MAILPATH)630 2355 y Fu(v)-5 b(ariable)32 b(is)e(not)h(set,)h(Bash)f(informs)f(the)h(user) f(of)h(the)g(arriv)-5 b(al)31 b(of)g(mail)g(in)g(the)g(sp)s(eci\014ed) -630 2464 y(\014le)f(or)h(Maildir-format)g(directory)-8 -b(.)150 2627 y Ft(MAILPATH)96 b Fu(A)33 b(colon-separated)i(list)f(of)f +630 2465 y(\014le)f(or)h(Maildir-format)g(directory)-8 +b(.)150 2626 y Ft(MAILPATH)96 b Fu(A)33 b(colon-separated)i(list)f(of)f (\014lenames)h(whic)m(h)f(the)g(shell)g(p)s(erio)s(dically)h(c)m(hec)m (ks)g(for)f(new)630 2736 y(mail.)60 b(Eac)m(h)37 b(list)g(en)m(try)g (can)g(sp)s(ecify)f(the)h(message)h(that)f(is)g(prin)m(ted)f(when)f -(new)h(mail)630 2846 y(arriv)m(es)31 b(in)g(the)g(mail)g(\014le)g(b)m +(new)h(mail)630 2845 y(arriv)m(es)31 b(in)g(the)g(mail)g(\014le)g(b)m (y)g(separating)h(the)f(\014lename)g(from)f(the)h(message)h(with)e(a)i (`)p Ft(?)p Fu('.)630 2955 y(When)g(used)f(in)h(the)g(text)i(of)e(the)g (message,)i Ft($_)e Fu(expands)f(to)i(the)f(name)g(of)h(the)f(curren)m -(t)630 3065 y(mail)f(\014le.)150 3227 y Ft(OPTARG)192 +(t)630 3064 y(mail)f(\014le.)150 3226 y Ft(OPTARG)192 b Fu(The)30 b(v)-5 b(alue)31 b(of)f(the)h(last)g(option)g(argumen)m(t)g (pro)s(cessed)f(b)m(y)g(the)g Ft(getopts)f Fu(builtin.)150 -3389 y Ft(OPTIND)192 b Fu(The)30 b(index)g(of)g(the)h(last)g(option)g +3387 y Ft(OPTIND)192 b Fu(The)30 b(index)g(of)g(the)h(last)g(option)g (argumen)m(t)g(pro)s(cessed)f(b)m(y)g(the)g Ft(getopts)f -Fu(builtin.)150 3552 y Ft(PATH)288 b Fu(A)32 b(colon-separated)i(list)f +Fu(builtin.)150 3548 y Ft(PATH)288 b Fu(A)32 b(colon-separated)i(list)f (of)f(directories)h(in)e(whic)m(h)h(the)g(shell)g(lo)s(oks)h(for)f -(commands.)45 b(A)630 3661 y(zero-length)e(\(n)m(ull\))g(directory)f +(commands.)45 b(A)630 3658 y(zero-length)e(\(n)m(ull\))g(directory)f (name)g(in)g(the)g(v)-5 b(alue)42 b(of)g Ft(PATH)f Fu(indicates)i(the)f -(curren)m(t)630 3771 y(directory)-8 b(.)49 b(A)33 b(n)m(ull)f +(curren)m(t)630 3768 y(directory)-8 b(.)49 b(A)33 b(n)m(ull)f (directory)i(name)e(ma)m(y)i(app)s(ear)e(as)h(t)m(w)m(o)h(adjacen)m(t)g -(colons,)g(or)f(as)g(an)630 3880 y(initial)f(or)e(trailing)h(colon.)150 -4042 y Ft(PS1)336 b Fu(The)35 b(primary)f(prompt)h(string.)55 +(colons,)g(or)f(as)g(an)630 3877 y(initial)f(or)e(trailing)h(colon.)150 +4039 y Ft(PS1)336 b Fu(The)35 b(primary)f(prompt)h(string.)55 b(The)35 b(default)h(v)-5 b(alue)35 b(is)h(`)p Ft(\\s-\\v\\$)28 -b Fu('.)56 b(See)36 b(Section)g(6.9)630 4152 y([Con)m(trolling)42 +b Fu('.)56 b(See)36 b(Section)g(6.9)630 4148 y([Con)m(trolling)42 b(the)e(Prompt],)j(page)e(93,)j(for)c(the)g(complete)i(list)f(of)f -(escap)s(e)h(sequences)630 4262 y(that)31 b(are)g(expanded)e(b)s(efore) -h Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4424 y Ft(PS2)336 +(escap)s(e)h(sequences)630 4258 y(that)31 b(are)g(expanded)e(b)s(efore) +h Ft(PS1)g Fu(is)g(displa)m(y)m(ed.)150 4419 y Ft(PS2)336 b Fu(The)30 b(secondary)g(prompt)g(string.)41 b(The)29 b(default)i(v)-5 b(alue)31 b(is)f(`)p Ft(>)g Fu('.)150 -4661 y Fs(5.2)68 b(Bash)45 b(V)-11 b(ariables)150 4820 +4663 y Fs(5.2)68 b(Bash)45 b(V)-11 b(ariables)150 4822 y Fu(These)45 b(v)-5 b(ariables)46 b(are)g(set)g(or)f(used)f(b)m(y)h (Bash,)50 b(but)44 b(other)i(shells)f(do)h(not)f(normally)h(treat)g -(them)150 4929 y(sp)s(ecially)-8 b(.)275 5067 y(A)24 +(them)150 4932 y(sp)s(ecially)-8 b(.)275 5068 y(A)24 b(few)g(v)-5 b(ariables)24 b(used)g(b)m(y)f(Bash)i(are)f(describ)s(ed)f (in)h(di\013eren)m(t)g(c)m(hapters:)38 b(v)-5 b(ariables)25 -b(for)f(con)m(trolling)150 5176 y(the)31 b(job)f(con)m(trol)h +b(for)f(con)m(trolling)150 5178 y(the)31 b(job)f(con)m(trol)h (facilities)i(\(see)e(Section)g(7.3)h([Job)e(Con)m(trol)h(V)-8 b(ariables],)32 b(page)g(102\).)150 5340 y Ft(BASH)288 b Fu(The)30 b(full)g(pathname)g(used)g(to)h(execute)h(the)e(curren)m(t) @@ -13089,780 +13103,800 @@ b(ariable)36 b(is)f(in)f(the)h(en)m(vironmen)m(t)g(when)f(Bash)630 737 y(starts)25 b(up,)f(eac)m(h)i(shell)e(option)h(in)e(the)i(list)g (will)f(b)s(e)g(enabled)g(b)s(efore)g(reading)g(an)m(y)g(startup)630 847 y(\014les.)41 b(This)29 b(v)-5 b(ariable)31 b(is)g(readonly)-8 -b(.)150 1003 y Ft(BASHPID)144 b Fu(Expands)35 b(to)i(the)f(pro)s(cess)f +b(.)150 1029 y Ft(BASHPID)144 b Fu(Expands)35 b(to)i(the)f(pro)s(cess)f (ID)i(of)f(the)g(curren)m(t)g(Bash)g(pro)s(cess.)58 b(This)35 -b(di\013ers)h(from)g Ft($$)630 1113 y Fu(under)31 b(certain)j +b(di\013ers)h(from)g Ft($$)630 1139 y Fu(under)31 b(certain)j (circumstances,)h(suc)m(h)e(as)g(subshells)f(that)i(do)f(not)g(require) -g(Bash)g(to)h(b)s(e)630 1223 y(re-initialized.)150 1379 -y Ft(BASH_ALIASES)630 1489 y Fu(An)40 b(asso)s(ciativ)m(e)j(arra)m(y)d +g(Bash)g(to)h(b)s(e)630 1249 y(re-initialized.)150 1431 +y Ft(BASH_ALIASES)630 1541 y Fu(An)40 b(asso)s(ciativ)m(e)j(arra)m(y)d (v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f -(in)m(ternal)h(list)630 1598 y(of)c(aliases)h(as)f(main)m(tained)g(b)m +(in)m(ternal)h(list)630 1650 y(of)c(aliases)h(as)f(main)m(tained)g(b)m (y)g(the)g Ft(alias)e Fu(builtin.)59 b(\(see)37 b(Section)h(4.1)f -([Bourne)g(Shell)630 1708 y(Builtins],)f(page)e(41\).)53 -b(Elemen)m(ts)35 b(added)e(to)i(this)e(arra)m(y)i(app)s(ear)e(in)h(the) -g(alias)h(list;)i(un-)630 1817 y(setting)31 b(arra)m(y)g(elemen)m(ts)h -(cause)f(aliases)h(to)f(b)s(e)f(remo)m(v)m(ed)h(from)f(the)h(alias)g -(list.)150 1974 y Ft(BASH_ARGC)630 2084 y Fu(An)f(arra)m(y)h(v)-5 -b(ariable)31 b(whose)f(v)-5 b(alues)31 b(are)g(the)f(n)m(um)m(b)s(er)g -(of)g(parameters)h(in)f(eac)m(h)h(frame)g(of)630 2193 -y(the)26 b(curren)m(t)f(bash)g(execution)i(call)g(stac)m(k.)41 +([Bourne)g(Shell)630 1760 y(Builtins],)31 b(page)g(41\).)42 +b(Elemen)m(ts)31 b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)g(the) +g(alias)h(list;)h(ho)m(w-)630 1870 y(ev)m(er,)k(unsetting)f(arra)m(y)g +(elemen)m(ts)g(curren)m(tly)g(do)s(es)f(not)g(cause)h(aliases)h(to)f(b) +s(e)f(remo)m(v)m(ed)630 1979 y(from)25 b(the)h(alias)h(list.)40 +b(If)25 b Ft(BASH_ALIASES)d Fu(is)k(unset,)g(it)g(loses)h(its)f(sp)s +(ecial)g(prop)s(erties,)g(ev)m(en)630 2089 y(if)k(it)h(is)g(subsequen)m +(tly)f(reset.)150 2271 y Ft(BASH_ARGC)630 2381 y Fu(An)g(arra)m(y)h(v) +-5 b(ariable)31 b(whose)f(v)-5 b(alues)31 b(are)g(the)f(n)m(um)m(b)s +(er)g(of)g(parameters)h(in)f(eac)m(h)h(frame)g(of)630 +2491 y(the)26 b(curren)m(t)f(bash)g(execution)i(call)g(stac)m(k.)41 b(The)25 b(n)m(um)m(b)s(er)g(of)h(parameters)g(to)g(the)g(curren)m(t) -630 2303 y(subroutine)i(\(shell)i(function)g(or)f(script)g(executed)i +630 2600 y(subroutine)i(\(shell)i(function)g(or)f(script)g(executed)i (with)e Ft(.)g Fu(or)h Ft(source)p Fu(\))e(is)h(at)h(the)g(top)g(of)630 -2412 y(the)37 b(stac)m(k.)63 b(When)37 b(a)h(subroutine)e(is)h +2710 y(the)37 b(stac)m(k.)63 b(When)37 b(a)h(subroutine)e(is)h (executed,)j(the)e(n)m(um)m(b)s(er)d(of)j(parameters)f(passed)630 -2522 y(is)g(pushed)f(on)m(to)i Ft(BASH_ARGC)p Fu(.)59 +2819 y(is)g(pushed)f(on)m(to)i Ft(BASH_ARGC)p Fu(.)59 b(The)37 b(shell)g(sets)h Ft(BASH_ARGC)c Fu(only)k(when)e(in)h -(extended)630 2632 y(debugging)23 b(mo)s(de)f(\(see)h(Section)g(4.3.2)i +(extended)630 2929 y(debugging)23 b(mo)s(de)f(\(see)h(Section)g(4.3.2)i ([The)d(Shopt)g(Builtin],)j(page)e(63)h(for)e(a)h(description)630 -2741 y(of)31 b(the)f Ft(extdebug)e Fu(option)j(to)g(the)g -Ft(shopt)e Fu(builtin\).)150 2898 y Ft(BASH_ARGV)630 -3007 y Fu(An)24 b(arra)m(y)g(v)-5 b(ariable)25 b(con)m(taining)h(all)f +3039 y(of)31 b(the)f Ft(extdebug)e Fu(option)j(to)g(the)g +Ft(shopt)e Fu(builtin\).)150 3221 y Ft(BASH_ARGV)630 +3331 y Fu(An)24 b(arra)m(y)g(v)-5 b(ariable)25 b(con)m(taining)h(all)f (of)f(the)h(parameters)f(in)g(the)g(curren)m(t)g(bash)g(execution)630 -3117 y(call)35 b(stac)m(k.)53 b(The)34 b(\014nal)g(parameter)g(of)g +3440 y(call)35 b(stac)m(k.)53 b(The)34 b(\014nal)g(parameter)g(of)g (the)g(last)h(subroutine)e(call)i(is)f(at)h(the)f(top)h(of)f(the)630 -3226 y(stac)m(k;)28 b(the)c(\014rst)f(parameter)i(of)f(the)g(initial)i +3550 y(stac)m(k;)28 b(the)c(\014rst)f(parameter)i(of)f(the)g(initial)i (call)f(is)f(at)h(the)f(b)s(ottom.)39 b(When)24 b(a)g(subroutine)630 -3336 y(is)40 b(executed,)j(the)d(parameters)h(supplied)d(are)i(pushed)f +3660 y(is)40 b(executed,)j(the)d(parameters)h(supplied)d(are)i(pushed)f (on)m(to)i Ft(BASH_ARGV)p Fu(.)66 b(The)40 b(shell)630 -3446 y(sets)28 b Ft(BASH_ARGV)e Fu(only)i(when)f(in)h(extended)g +3769 y(sets)28 b Ft(BASH_ARGV)e Fu(only)i(when)f(in)h(extended)g (debugging)g(mo)s(de)g(\(see)h(Section)f(4.3.2)i([The)630 -3555 y(Shopt)i(Builtin],)h(page)g(63)g(for)f(a)h(description)f(of)h +3879 y(Shopt)i(Builtin],)h(page)g(63)g(for)f(a)h(description)f(of)h (the)f Ft(extdebug)e Fu(option)j(to)g(the)f Ft(shopt)630 -3665 y Fu(builtin\).)150 3821 y Ft(BASH_CMDS)630 3931 +3988 y Fu(builtin\).)150 4171 y Ft(BASH_CMDS)630 4281 y Fu(An)i(asso)s(ciativ)m(e)i(arra)m(y)f(v)-5 b(ariable)35 b(whose)f(mem)m(b)s(ers)f(corresp)s(ond)g(to)i(the)f(in)m(ternal)h -(hash)630 4041 y(table)c(of)g(commands)f(as)g(main)m(tained)h(b)m(y)g +(hash)630 4390 y(table)c(of)g(commands)f(as)g(main)m(tained)h(b)m(y)g (the)f Ft(hash)f Fu(builtin)h(\(see)h(Section)g(4.1)h([Bourne)630 -4150 y(Shell)23 b(Builtins],)j(page)e(41\).)40 b(Elemen)m(ts)24 -b(added)e(to)j(this)e(arra)m(y)h(app)s(ear)e(in)i(the)f(hash)g(table;) -630 4260 y(unsetting)30 b(arra)m(y)h(elemen)m(ts)h(cause)f(commands)f -(to)h(b)s(e)f(remo)m(v)m(ed)h(from)f(the)h(hash)e(table.)150 -4416 y Ft(BASH_COMMAND)630 4526 y Fu(The)39 b(command)h(curren)m(tly)g -(b)s(eing)f(executed)i(or)e(ab)s(out)h(to)g(b)s(e)f(executed,)44 -b(unless)39 b(the)630 4635 y(shell)g(is)g(executing)g(a)g(command)g(as) -g(the)f(result)h(of)g(a)g(trap,)i(in)d(whic)m(h)g(case)i(it)f(is)g(the) -630 4745 y(command)30 b(executing)i(at)f(the)f(time)h(of)g(the)g(trap.) -150 4902 y Ft(BASH_COMPAT)630 5011 y Fu(The)i(v)-5 b(alue)34 -b(is)f(used)g(to)h(set)f(the)h(shell's)g(compatibilit)m(y)h(lev)m(el.) -51 b(See)34 b(Section)g(4.3.2)h([The)630 5121 y(Shopt)40 -b(Builtin],)45 b(page)c(63,)k(for)c(a)g(description)g(of)g(the)g(v)-5 -b(arious)41 b(compatibilit)m(y)i(lev)m(els)630 5230 y(and)31 -b(their)g(e\013ects.)45 b(The)31 b(v)-5 b(alue)31 b(ma)m(y)h(b)s(e)f(a) -h(decimal)g(n)m(um)m(b)s(er)e(\(e.g.,)j(4.2\))g(or)e(an)h(in)m(teger) -630 5340 y(\(e.g.,)39 b(42\))f(corresp)s(onding)d(to)i(the)f(desired)f -(compatibilit)m(y)k(lev)m(el.)59 b(If)36 b Ft(BASH_COMPAT)d -Fu(is)p eop end +4500 y(Shell)42 b(Builtins],)k(page)d(41\).)77 b(Elemen)m(ts)43 +b(added)e(to)i(this)f(arra)m(y)h(app)s(ear)f(in)f(the)i(hash)630 +4609 y(table;)k(ho)m(w)m(ev)m(er,)e(unsetting)c(arra)m(y)g(elemen)m(ts) +i(curren)m(tly)d(do)s(es)h(not)g(cause)g(command)630 +4719 y(names)36 b(to)g(b)s(e)f(remo)m(v)m(ed)i(from)e(the)h(hash)f +(table.)58 b(If)36 b Ft(BASH_CMDS)d Fu(is)j(unset,)h(it)f(loses)h(its) +630 4829 y(sp)s(ecial)31 b(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)150 5011 y Ft(BASH_COMMAND)630 +5121 y Fu(The)39 b(command)h(curren)m(tly)g(b)s(eing)f(executed)i(or)e +(ab)s(out)h(to)g(b)s(e)f(executed,)44 b(unless)39 b(the)630 +5230 y(shell)g(is)g(executing)g(a)g(command)g(as)g(the)f(result)h(of)g +(a)g(trap,)i(in)d(whic)m(h)g(case)i(it)f(is)g(the)630 +5340 y(command)30 b(executing)i(at)f(the)f(time)h(of)g(the)g(trap.)p +eop end %%Page: 72 78 TeXDict begin 72 77 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(72)630 299 y(unset)37 -b(or)g(set)h(to)g(the)g(empt)m(y)f(string,)j(the)d(compatibilit)m(y)j -(lev)m(el)f(is)e(set)h(to)g(the)g(default)630 408 y(for)i(the)h(curren) -m(t)f(v)m(ersion.)72 b(If)40 b Ft(BASH_COMPAT)e Fu(is)i(set)h(to)h(a)e -(v)-5 b(alue)41 b(that)h(is)e(not)h(one)g(of)630 518 -y(the)f(v)-5 b(alid)40 b(compatibilit)m(y)i(lev)m(els,)i(the)c(shell)g -(prin)m(ts)f(an)h(error)f(message)i(and)f(sets)g(the)630 -628 y(compatibilit)m(y)23 b(lev)m(el)f(to)f(the)f(default)h(for)f(the)g -(curren)m(t)g(v)m(ersion.)38 b(The)20 b(v)-5 b(alid)21 -b(compatibilit)m(y)630 737 y(lev)m(els)40 b(corresp)s(ond)e(to)h(the)g -(compatibilit)m(y)i(options)e(accepted)h(b)m(y)f(the)g -Ft(shopt)e Fu(builtin)630 847 y(describ)s(ed)20 b(ab)s(o)m(v)m(e)i -(\(for)g(example,)h Fr(compat42)31 b Fu(means)21 b(that)g(4.2)i(and)d -(42)i(are)g(v)-5 b(alid)21 b(v)-5 b(alues\).)630 956 -y(The)30 b(curren)m(t)g(v)m(ersion)h(is)f(also)i(a)e(v)-5 -b(alid)31 b(v)-5 b(alue.)150 1110 y Ft(BASH_ENV)96 b -Fu(If)28 b(this)g(v)-5 b(ariable)30 b(is)e(set)h(when)f(Bash)g(is)h(in) -m(v)m(ok)m(ed)h(to)f(execute)h(a)e(shell)h(script,)g(its)g(v)-5 -b(alue)29 b(is)630 1219 y(expanded)k(and)h(used)g(as)g(the)h(name)f(of) -g(a)h(startup)f(\014le)g(to)h(read)f(b)s(efore)g(executing)i(the)630 -1329 y(script.)41 b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],) -j(page)f(83.)150 1482 y Ft(BASH_EXECUTION_STRING)630 -1592 y Fu(The)f(command)g(argumen)m(t)h(to)g(the)g Ft(-c)e -Fu(in)m(v)m(o)s(cation)k(option.)150 1745 y Ft(BASH_LINENO)630 -1855 y Fu(An)62 b(arra)m(y)i(v)-5 b(ariable)63 b(whose)g(mem)m(b)s(ers) -e(are)j(the)e(line)h(n)m(um)m(b)s(ers)f(in)g(source)h(\014les)630 -1965 y(where)46 b(eac)m(h)i(corresp)s(onding)d(mem)m(b)s(er)h(of)h -Fr(FUNCNAME)53 b Fu(w)m(as)47 b(in)m(v)m(ok)m(ed.)91 -b Ft(${BASH_)630 2074 y(LINENO[$i]})39 b Fu(is)i(the)h(line)g(n)m(um)m -(b)s(er)e(in)i(the)f(source)h(\014le)g(\()p Ft(${BASH_SOURCE[$i+1]})p -Fu(\))630 2184 y(where)d Ft(${FUNCNAME[$i]})c Fu(w)m(as)k(called)i -(\(or)e Ft(${BASH_LINENO[$i-1]})34 b Fu(if)39 b(referenced)630 -2293 y(within)30 b(another)g(shell)h(function\).)41 b(Use)31 +b(Shell)30 b(V)-8 b(ariables)2459 b(72)150 299 y Ft(BASH_COMPAT)630 +408 y Fu(The)33 b(v)-5 b(alue)34 b(is)f(used)g(to)h(set)f(the)h +(shell's)g(compatibilit)m(y)h(lev)m(el.)51 b(See)34 b(Section)g(4.3.2)h +([The)630 518 y(Shopt)40 b(Builtin],)45 b(page)c(63,)k(for)c(a)g +(description)g(of)g(the)g(v)-5 b(arious)41 b(compatibilit)m(y)i(lev)m +(els)630 628 y(and)31 b(their)g(e\013ects.)45 b(The)31 +b(v)-5 b(alue)31 b(ma)m(y)h(b)s(e)f(a)h(decimal)g(n)m(um)m(b)s(er)e +(\(e.g.,)j(4.2\))g(or)e(an)h(in)m(teger)630 737 y(\(e.g.,)39 +b(42\))f(corresp)s(onding)d(to)i(the)f(desired)f(compatibilit)m(y)k +(lev)m(el.)59 b(If)36 b Ft(BASH_COMPAT)d Fu(is)630 847 +y(unset)k(or)g(set)h(to)g(the)g(empt)m(y)f(string,)j(the)d +(compatibilit)m(y)j(lev)m(el)f(is)e(set)h(to)g(the)g(default)630 +956 y(for)i(the)h(curren)m(t)f(v)m(ersion.)72 b(If)40 +b Ft(BASH_COMPAT)e Fu(is)i(set)h(to)h(a)e(v)-5 b(alue)41 +b(that)h(is)e(not)h(one)g(of)630 1066 y(the)f(v)-5 b(alid)40 +b(compatibilit)m(y)i(lev)m(els,)i(the)c(shell)g(prin)m(ts)f(an)h(error) +f(message)i(and)f(sets)g(the)630 1176 y(compatibilit)m(y)23 +b(lev)m(el)f(to)f(the)f(default)h(for)f(the)g(curren)m(t)g(v)m(ersion.) +38 b(The)20 b(v)-5 b(alid)21 b(compatibilit)m(y)630 1285 +y(lev)m(els)40 b(corresp)s(ond)e(to)h(the)g(compatibilit)m(y)i(options) +e(accepted)h(b)m(y)f(the)g Ft(shopt)e Fu(builtin)630 +1395 y(describ)s(ed)20 b(ab)s(o)m(v)m(e)i(\(for)g(example,)h +Fr(compat42)31 b Fu(means)21 b(that)g(4.2)i(and)d(42)i(are)g(v)-5 +b(alid)21 b(v)-5 b(alues\).)630 1504 y(The)30 b(curren)m(t)g(v)m +(ersion)h(is)f(also)i(a)e(v)-5 b(alid)31 b(v)-5 b(alue.)150 +1655 y Ft(BASH_ENV)96 b Fu(If)28 b(this)g(v)-5 b(ariable)30 +b(is)e(set)h(when)f(Bash)g(is)h(in)m(v)m(ok)m(ed)h(to)f(execute)h(a)e +(shell)h(script,)g(its)g(v)-5 b(alue)29 b(is)630 1765 +y(expanded)k(and)h(used)g(as)g(the)h(name)f(of)g(a)h(startup)f(\014le)g +(to)h(read)f(b)s(efore)g(executing)i(the)630 1874 y(script.)41 +b(See)30 b(Section)h(6.2)h([Bash)f(Startup)e(Files],)j(page)f(83.)150 +2025 y Ft(BASH_EXECUTION_STRING)630 2134 y Fu(The)f(command)g(argumen)m +(t)h(to)g(the)g Ft(-c)e Fu(in)m(v)m(o)s(cation)k(option.)150 +2285 y Ft(BASH_LINENO)630 2395 y Fu(An)62 b(arra)m(y)i(v)-5 +b(ariable)63 b(whose)g(mem)m(b)s(ers)e(are)j(the)e(line)h(n)m(um)m(b)s +(ers)f(in)g(source)h(\014les)630 2504 y(where)46 b(eac)m(h)i(corresp)s +(onding)d(mem)m(b)s(er)h(of)h Fr(FUNCNAME)53 b Fu(w)m(as)47 +b(in)m(v)m(ok)m(ed.)91 b Ft(${BASH_)630 2614 y(LINENO[$i]})39 +b Fu(is)i(the)h(line)g(n)m(um)m(b)s(er)e(in)i(the)f(source)h(\014le)g +(\()p Ft(${BASH_SOURCE[$i+1]})p Fu(\))630 2724 y(where)d +Ft(${FUNCNAME[$i]})c Fu(w)m(as)k(called)i(\(or)e Ft +(${BASH_LINENO[$i-1]})34 b Fu(if)39 b(referenced)630 +2833 y(within)30 b(another)g(shell)h(function\).)41 b(Use)31 b Ft(LINENO)d Fu(to)j(obtain)g(the)g(curren)m(t)f(line)h(n)m(um)m(b)s -(er.)150 2447 y Ft(BASH_LOADABLES_PATH)630 2556 y Fu(A)39 +(er.)150 2984 y Ft(BASH_LOADABLES_PATH)630 3093 y Fu(A)39 b(colon-separated)i(list)f(of)f(directories)h(in)f(whic)m(h)g(the)g -(shell)h(lo)s(oks)f(for)g(dynamically)630 2666 y(loadable)32 +(shell)h(lo)s(oks)f(for)g(dynamically)630 3203 y(loadable)32 b(builtins)d(sp)s(eci\014ed)h(b)m(y)g(the)h Ft(enable)e -Fu(command.)150 2819 y Ft(BASH_REMATCH)630 2929 y Fu(An)43 +Fu(command.)150 3354 y Ft(BASH_REMATCH)630 3463 y Fu(An)43 b(arra)m(y)i(v)-5 b(ariable)44 b(whose)g(mem)m(b)s(ers)f(are)h (assigned)g(b)m(y)f(the)h(`)p Ft(=~)p Fu(')g(binary)f(op)s(erator)630 -3039 y(to)37 b(the)f Ft([[)g Fu(conditional)i(command)e(\(see)h +3573 y(to)37 b(the)f Ft([[)g Fu(conditional)i(command)e(\(see)h (Section)g(3.2.4.2)i([Conditional)e(Constructs],)630 -3148 y(page)e(10\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f +3682 y(page)e(10\).)52 b(The)33 b(elemen)m(t)j(with)d(index)g(0)i(is)f (the)g(p)s(ortion)f(of)h(the)g(string)g(matc)m(hing)h(the)630 -3258 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27 +3792 y(en)m(tire)29 b(regular)f(expression.)40 b(The)27 b(elemen)m(t)j(with)d(index)h Fr(n)f Fu(is)h(the)g(p)s(ortion)g(of)g -(the)g(string)630 3367 y(matc)m(hing)j(the)g Fr(n)p Fu(th)f(paren)m +(the)g(string)630 3902 y(matc)m(hing)j(the)g Fr(n)p Fu(th)f(paren)m (thesized)h(sub)s(expression.)39 b(This)29 b(v)-5 b(ariable)31 -b(is)g(read-only)-8 b(.)150 3521 y Ft(BASH_SOURCE)630 -3630 y Fu(An)40 b(arra)m(y)h(v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers) +b(is)g(read-only)-8 b(.)150 4052 y Ft(BASH_SOURCE)630 +4162 y Fu(An)40 b(arra)m(y)h(v)-5 b(ariable)41 b(whose)f(mem)m(b)s(ers) g(are)h(the)g(source)f(\014lenames)h(where)f(the)g(corre-)630 -3740 y(sp)s(onding)27 b(shell)i(function)f(names)g(in)g(the)h +4271 y(sp)s(onding)27 b(shell)i(function)f(names)g(in)g(the)h Ft(FUNCNAME)d Fu(arra)m(y)j(v)-5 b(ariable)30 b(are)f(de\014ned.)38 -b(The)630 3850 y(shell)26 b(function)g Ft(${FUNCNAME[$i]})c +b(The)630 4381 y(shell)26 b(function)g Ft(${FUNCNAME[$i]})c Fu(is)k(de\014ned)f(in)g(the)h(\014le)h Ft(${BASH_SOURCE[$i]})21 -b Fu(and)630 3959 y(called)32 b(from)d Ft(${BASH_SOURCE[$i+1]})150 -4113 y(BASH_SUBSHELL)630 4222 y Fu(Incremen)m(ted)24 +b Fu(and)630 4491 y(called)32 b(from)d Ft(${BASH_SOURCE[$i+1]})150 +4641 y(BASH_SUBSHELL)630 4751 y Fu(Incremen)m(ted)24 b(b)m(y)f(one)h(within)f(eac)m(h)i(subshell)d(or)i(subshell)e(en)m -(vironmen)m(t)i(when)f(the)h(shell)630 4332 y(b)s(egins)30 +(vironmen)m(t)i(when)f(the)h(shell)630 4861 y(b)s(egins)30 b(executing)h(in)f(that)h(en)m(vironmen)m(t.)42 b(The)30 -b(initial)h(v)-5 b(alue)31 b(is)f(0.)150 4485 y Ft(BASH_VERSINFO)630 -4595 y Fu(A)36 b(readonly)g(arra)m(y)g(v)-5 b(ariable)37 +b(initial)h(v)-5 b(alue)31 b(is)f(0.)150 5011 y Ft(BASH_VERSINFO)630 +5121 y Fu(A)36 b(readonly)g(arra)m(y)g(v)-5 b(ariable)37 b(\(see)f(Section)h(6.7)g([Arra)m(ys],)h(page)e(90\))h(whose)f(mem)m(b) -s(ers)630 4704 y(hold)c(v)m(ersion)h(information)f(for)g(this)g +s(ers)630 5230 y(hold)c(v)m(ersion)h(information)f(for)g(this)g (instance)h(of)g(Bash.)46 b(The)32 b(v)-5 b(alues)32 -b(assigned)h(to)g(the)630 4814 y(arra)m(y)e(mem)m(b)s(ers)e(are)i(as)g -(follo)m(ws:)630 4967 y Ft(BASH_VERSINFO[0])1110 5077 -y Fu(The)f(ma)5 b(jor)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i -Fr(release)5 b Fu(\).)630 5230 y Ft(BASH_VERSINFO[1])1110 -5340 y Fu(The)30 b(minor)g(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i -Fr(v)m(ersion)p Fu(\).)p eop end +b(assigned)h(to)g(the)630 5340 y(arra)m(y)e(mem)m(b)s(ers)e(are)i(as)g +(follo)m(ws:)p eop end %%Page: 73 79 TeXDict begin 73 78 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(73)630 299 y Ft(BASH_VERSINFO[2]) -1110 408 y Fu(The)30 b(patc)m(h)h(lev)m(el.)630 562 y -Ft(BASH_VERSINFO[3])1110 671 y Fu(The)f(build)f(v)m(ersion.)630 -825 y Ft(BASH_VERSINFO[4])1110 934 y Fu(The)h(release)i(status)e -(\(e.g.,)j Fr(b)s(eta1)7 b Fu(\).)630 1088 y Ft(BASH_VERSINFO[5])1110 -1198 y Fu(The)30 b(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p -Fu(.)150 1351 y Ft(BASH_VERSION)630 1461 y Fu(The)g(v)m(ersion)h(n)m -(um)m(b)s(er)e(of)h(the)h(curren)m(t)f(instance)h(of)g(Bash.)150 -1614 y Ft(BASH_XTRACEFD)630 1724 y Fu(If)f(set)h(to)h(an)e(in)m(teger)i +b(Shell)30 b(V)-8 b(ariables)2459 b(73)630 299 y Ft(BASH_VERSINFO[0]) +1110 408 y Fu(The)30 b(ma)5 b(jor)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e +(\(the)i Fr(release)5 b Fu(\).)630 578 y Ft(BASH_VERSINFO[1])1110 +687 y Fu(The)30 b(minor)g(v)m(ersion)h(n)m(um)m(b)s(er)e(\(the)i +Fr(v)m(ersion)p Fu(\).)630 857 y Ft(BASH_VERSINFO[2])1110 +966 y Fu(The)f(patc)m(h)h(lev)m(el.)630 1136 y Ft(BASH_VERSINFO[3])1110 +1245 y Fu(The)f(build)f(v)m(ersion.)630 1415 y Ft(BASH_VERSINFO[4])1110 +1524 y Fu(The)h(release)i(status)e(\(e.g.,)j Fr(b)s(eta1)7 +b Fu(\).)630 1694 y Ft(BASH_VERSINFO[5])1110 1803 y Fu(The)30 +b(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p Fu(.)150 1973 y +Ft(BASH_VERSION)630 2082 y Fu(The)g(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h +(the)h(curren)m(t)f(instance)h(of)g(Bash.)150 2252 y +Ft(BASH_XTRACEFD)630 2361 y Fu(If)f(set)h(to)h(an)e(in)m(teger)i (corresp)s(onding)e(to)h(a)g(v)-5 b(alid)31 b(\014le)g(descriptor,)g -(Bash)g(will)g(write)g(the)630 1833 y(trace)37 b(output)f(generated)h +(Bash)g(will)g(write)g(the)630 2471 y(trace)37 b(output)f(generated)h (when)f(`)p Ft(set)29 b(-x)p Fu(')36 b(is)g(enabled)h(to)g(that)f -(\014le)h(descriptor.)58 b(This)630 1943 y(allo)m(ws)29 +(\014le)h(descriptor.)58 b(This)630 2580 y(allo)m(ws)29 b(tracing)h(output)d(to)i(b)s(e)f(separated)g(from)g(diagnostic)h(and)f -(error)f(messages.)41 b(The)630 2052 y(\014le)31 b(descriptor)f(is)h +(error)f(messages.)41 b(The)630 2690 y(\014le)31 b(descriptor)f(is)h (closed)g(when)f Ft(BASH_XTRACEFD)d Fu(is)k(unset)f(or)g(assigned)h(a)g -(new)f(v)-5 b(alue.)630 2162 y(Unsetting)45 b Ft(BASH_XTRACEFD)40 +(new)f(v)-5 b(alue.)630 2800 y(Unsetting)45 b Ft(BASH_XTRACEFD)40 b Fu(or)k(assigning)g(it)g(the)g(empt)m(y)h(string)e(causes)i(the)f -(trace)630 2271 y(output)33 b(to)i(b)s(e)d(sen)m(t)j(to)f(the)g +(trace)630 2909 y(output)33 b(to)i(b)s(e)d(sen)m(t)j(to)f(the)g (standard)e(error.)50 b(Note)35 b(that)g(setting)f Ft(BASH_XTRACEFD)c -Fu(to)630 2381 y(2)39 b(\(the)h(standard)e(error)g(\014le)h +Fu(to)630 3019 y(2)39 b(\(the)h(standard)e(error)g(\014le)h (descriptor\))h(and)e(then)h(unsetting)g(it)g(will)g(result)g(in)g(the) -630 2491 y(standard)30 b(error)g(b)s(eing)f(closed.)150 -2644 y Ft(CHILD_MAX)630 2754 y Fu(Set)35 b(the)h(n)m(um)m(b)s(er)e(of)h +630 3128 y(standard)30 b(error)g(b)s(eing)f(closed.)150 +3298 y Ft(CHILD_MAX)630 3407 y Fu(Set)35 b(the)h(n)m(um)m(b)s(er)e(of)h (exited)h(c)m(hild)g(status)f(v)-5 b(alues)36 b(for)f(the)g(shell)g(to) -h(remem)m(b)s(er.)55 b(Bash)630 2863 y(will)37 b(not)g(allo)m(w)i(this) +h(remem)m(b)s(er.)55 b(Bash)630 3517 y(will)37 b(not)g(allo)m(w)i(this) e(v)-5 b(alue)37 b(to)h(b)s(e)e(decreased)i(b)s(elo)m(w)f(a)g -Fm(posix)p Fu(-mandated)f(minim)m(um,)630 2973 y(and)30 +Fm(posix)p Fu(-mandated)f(minim)m(um,)630 3626 y(and)30 b(there)g(is)g(a)h(maxim)m(um)f(v)-5 b(alue)30 b(\(curren)m(tly)h (8192\))h(that)f(this)f(ma)m(y)g(not)h(exceed.)41 b(The)630 -3082 y(minim)m(um)30 b(v)-5 b(alue)30 b(is)h(system-dep)s(enden)m(t.) -150 3236 y Ft(COLUMNS)144 b Fu(Used)32 b(b)m(y)f(the)h +3736 y(minim)m(um)30 b(v)-5 b(alue)30 b(is)h(system-dep)s(enden)m(t.) +150 3905 y Ft(COLUMNS)144 b Fu(Used)32 b(b)m(y)f(the)h Ft(select)e Fu(command)h(to)i(determine)f(the)f(terminal)i(width)d -(when)h(prin)m(ting)630 3345 y(selection)39 b(lists.)63 +(when)h(prin)m(ting)630 4015 y(selection)39 b(lists.)63 b(Automatically)41 b(set)d(if)f(the)h Ft(checkwinsize)d -Fu(option)j(is)f(enabled)h(\(see)630 3455 y(Section)44 +Fu(option)j(is)f(enabled)h(\(see)630 4125 y(Section)44 b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(63\),)k(or)43 -b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 3565 -y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 3718 y -Ft(COMP_CWORD)630 3828 y Fu(An)38 b(index)g(in)m(to)h +b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 4234 +y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 4403 y +Ft(COMP_CWORD)630 4513 y Fu(An)38 b(index)g(in)m(to)h Ft(${COMP_WORDS})c Fu(of)k(the)g(w)m(ord)f(con)m(taining)i(the)e -(curren)m(t)g(cursor)g(p)s(o-)630 3937 y(sition.)72 b(This)40 +(curren)m(t)g(cursor)g(p)s(o-)630 4623 y(sition.)72 b(This)40 b(v)-5 b(ariable)41 b(is)f(a)m(v)-5 b(ailable)43 b(only)e(in)f(shell)h (functions)f(in)m(v)m(ok)m(ed)i(b)m(y)e(the)h(pro-)630 -4047 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g -([Programmable)g(Completion],)630 4156 y(page)31 b(128\).)150 -4310 y Ft(COMP_LINE)630 4419 y Fu(The)38 b(curren)m(t)h(command)f +4732 y(grammable)36 b(completion)g(facilities)i(\(see)e(Section)g(8.6)g +([Programmable)g(Completion],)630 4842 y(page)31 b(128\).)150 +5011 y Ft(COMP_LINE)630 5121 y Fu(The)38 b(curren)m(t)h(command)f (line.)66 b(This)37 b(v)-5 b(ariable)40 b(is)f(a)m(v)-5 -b(ailable)41 b(only)d(in)h(shell)f(functions)630 4529 +b(ailable)41 b(only)d(in)h(shell)f(functions)630 5230 y(and)25 b(external)h(commands)f(in)m(v)m(ok)m(ed)h(b)m(y)f(the)h -(programmable)f(completion)i(facilities)g(\(see)630 4639 -y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(128\).)150 -4792 y Ft(COMP_POINT)630 4902 y Fu(The)25 b(index)g(of)h(the)g(curren)m -(t)f(cursor)g(p)s(osition)h(relativ)m(e)i(to)e(the)g(b)s(eginning)f(of) -g(the)h(curren)m(t)630 5011 y(command.)40 b(If)27 b(the)h(curren)m(t)g -(cursor)g(p)s(osition)g(is)g(at)g(the)g(end)g(of)g(the)g(curren)m(t)g -(command,)630 5121 y(the)i(v)-5 b(alue)30 b(of)g(this)g(v)-5 -b(ariable)31 b(is)f(equal)g(to)h Ft(${#COMP_LINE})p Fu(.)37 -b(This)29 b(v)-5 b(ariable)31 b(is)f(a)m(v)-5 b(ailable)630 -5230 y(only)36 b(in)f(shell)h(functions)f(and)g(external)h(commands)g -(in)m(v)m(ok)m(ed)h(b)m(y)e(the)h(programmable)630 5340 -y(completion)c(facilities)g(\(see)g(Section)f(8.6)g([Programmable)g -(Completion],)h(page)f(128\).)p eop end +(programmable)f(completion)i(facilities)g(\(see)630 5340 +y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(128\).)p +eop end %%Page: 74 80 TeXDict begin 74 79 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(74)150 299 y Ft(COMP_TYPE)630 -408 y Fu(Set)27 b(to)h(an)f(in)m(teger)h(v)-5 b(alue)28 -b(corresp)s(onding)e(to)h(the)h(t)m(yp)s(e)f(of)g(completion)h -(attempted)g(that)630 518 y(caused)e(a)h(completion)h(function)e(to)h -(b)s(e)f(called:)40 b Fr(T)-8 b(AB)p Fu(,)27 b(for)g(normal)f -(completion,)j(`)p Ft(?)p Fu(',)e(for)630 628 y(listing)35 -b(completions)h(after)f(successiv)m(e)g(tabs,)h(`)p Ft(!)p -Fu(',)g(for)e(listing)h(alternativ)m(es)i(on)d(partial)630 -737 y(w)m(ord)22 b(completion,)k(`)p Ft(@)p Fu(',)f(to)e(list)g -(completions)h(if)f(the)g(w)m(ord)f(is)h(not)g(unmo)s(di\014ed,)f(or)h -(`)p Ft(\045)p Fu(',)h(for)630 847 y(men)m(u)i(completion.)41 -b(This)25 b(v)-5 b(ariable)27 b(is)g(a)m(v)-5 b(ailable)28 -b(only)f(in)f(shell)g(functions)g(and)g(external)630 -956 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g(programmable)h -(completion)g(facilities)i(\(see)e(Section)g(8.6)630 -1066 y([Programmable)e(Completion],)h(page)f(128\).)150 -1219 y Ft(COMP_KEY)96 b Fu(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i +b(Shell)30 b(V)-8 b(ariables)2459 b(74)150 299 y Ft(COMP_POINT)630 +408 y Fu(The)25 b(index)g(of)h(the)g(curren)m(t)f(cursor)g(p)s(osition) +h(relativ)m(e)i(to)e(the)g(b)s(eginning)f(of)g(the)h(curren)m(t)630 +518 y(command.)40 b(If)27 b(the)h(curren)m(t)g(cursor)g(p)s(osition)g +(is)g(at)g(the)g(end)g(of)g(the)g(curren)m(t)g(command,)630 +628 y(the)i(v)-5 b(alue)30 b(of)g(this)g(v)-5 b(ariable)31 +b(is)f(equal)g(to)h Ft(${#COMP_LINE})p Fu(.)37 b(This)29 +b(v)-5 b(ariable)31 b(is)f(a)m(v)-5 b(ailable)630 737 +y(only)36 b(in)f(shell)h(functions)f(and)g(external)h(commands)g(in)m +(v)m(ok)m(ed)h(b)m(y)e(the)h(programmable)630 847 y(completion)c +(facilities)g(\(see)g(Section)f(8.6)g([Programmable)g(Completion],)h +(page)f(128\).)150 1011 y Ft(COMP_TYPE)630 1121 y Fu(Set)c(to)h(an)f +(in)m(teger)h(v)-5 b(alue)28 b(corresp)s(onding)e(to)h(the)h(t)m(yp)s +(e)f(of)g(completion)h(attempted)g(that)630 1230 y(caused)e(a)h +(completion)h(function)e(to)h(b)s(e)f(called:)40 b Fr(T)-8 +b(AB)p Fu(,)27 b(for)g(normal)f(completion,)j(`)p Ft(?)p +Fu(',)e(for)630 1340 y(listing)35 b(completions)h(after)f(successiv)m +(e)g(tabs,)h(`)p Ft(!)p Fu(',)g(for)e(listing)h(alternativ)m(es)i(on)d +(partial)630 1450 y(w)m(ord)22 b(completion,)k(`)p Ft(@)p +Fu(',)f(to)e(list)g(completions)h(if)f(the)g(w)m(ord)f(is)h(not)g(unmo) +s(di\014ed,)f(or)h(`)p Ft(\045)p Fu(',)h(for)630 1559 +y(men)m(u)i(completion.)41 b(This)25 b(v)-5 b(ariable)27 +b(is)g(a)m(v)-5 b(ailable)28 b(only)f(in)f(shell)g(functions)g(and)g +(external)630 1669 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g +(programmable)h(completion)g(facilities)i(\(see)e(Section)g(8.6)630 +1778 y([Programmable)e(Completion],)h(page)f(128\).)150 +1943 y Ft(COMP_KEY)96 b Fu(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i (of)f(a)g(k)m(ey)h(sequence\))g(used)e(to)i(in)m(v)m(ok)m(e)h(the)e -(curren)m(t)g(completion)630 1329 y(function.)150 1482 -y Ft(COMP_WORDBREAKS)630 1592 y Fu(The)f(set)i(of)e(c)m(haracters)j +(curren)m(t)g(completion)630 2052 y(function.)150 2217 +y Ft(COMP_WORDBREAKS)630 2326 y Fu(The)f(set)i(of)e(c)m(haracters)j (that)e(the)g(Readline)g(library)g(treats)g(as)g(w)m(ord)g(separators)g -(when)630 1702 y(p)s(erforming)i(w)m(ord)h(completion.)51 +(when)630 2436 y(p)s(erforming)i(w)m(ord)h(completion.)51 b(If)33 b Ft(COMP_WORDBREAKS)c Fu(is)34 b(unset,)g(it)f(loses)i(its)e -(sp)s(ecial)630 1811 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g -(subsequen)m(tly)f(reset.)150 1965 y Ft(COMP_WORDS)630 -2074 y Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(consisting)g(of)f(the) +(sp)s(ecial)630 2545 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g +(subsequen)m(tly)f(reset.)150 2710 y Ft(COMP_WORDS)630 +2819 y Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(consisting)g(of)f(the) g(individual)f(w)m(ords)h(in)f(the)h(curren)m(t)g(command)630 -2184 y(line.)94 b(The)47 b(line)i(is)f(split)g(in)m(to)h(w)m(ords)e(as) +2929 y(line.)94 b(The)47 b(line)i(is)f(split)g(in)m(to)h(w)m(ords)e(as) h(Readline)h(w)m(ould)f(split)g(it,)53 b(using)47 b Ft(COMP_)630 -2293 y(WORDBREAKS)34 b Fu(as)i(describ)s(ed)g(ab)s(o)m(v)m(e.)60 +3039 y(WORDBREAKS)34 b Fu(as)i(describ)s(ed)g(ab)s(o)m(v)m(e.)60 b(This)36 b(v)-5 b(ariable)37 b(is)f(a)m(v)-5 b(ailable)39 -b(only)e(in)f(shell)h(func-)630 2403 y(tions)32 b(in)m(v)m(ok)m(ed)i(b) +b(only)e(in)f(shell)h(func-)630 3148 y(tions)32 b(in)m(v)m(ok)m(ed)i(b) m(y)d(the)i(programmable)f(completion)h(facilities)h(\(see)f(Section)g -(8.6)g([Pro-)630 2513 y(grammable)e(Completion],)g(page)g(128\).)150 -2666 y Ft(COMPREPLY)630 2776 y Fu(An)37 b(arra)m(y)h(v)-5 +(8.6)g([Pro-)630 3258 y(grammable)e(Completion],)g(page)g(128\).)150 +3422 y Ft(COMPREPLY)630 3532 y Fu(An)37 b(arra)m(y)h(v)-5 b(ariable)38 b(from)f(whic)m(h)g(Bash)g(reads)g(the)h(p)s(ossible)e -(completions)j(generated)630 2885 y(b)m(y)33 b(a)g(shell)h(function)f +(completions)j(generated)630 3641 y(b)m(y)33 b(a)g(shell)h(function)f (in)m(v)m(ok)m(ed)h(b)m(y)f(the)g(programmable)h(completion)g(facilit)m -(y)h(\(see)f(Sec-)630 2995 y(tion)g(8.6)g([Programmable)g(Completion],) +(y)h(\(see)f(Sec-)630 3751 y(tion)g(8.6)g([Programmable)g(Completion],) h(page)f(128\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains) -630 3104 y(one)c(p)s(ossible)f(completion.)150 3258 y +630 3861 y(one)c(p)s(ossible)f(completion.)150 4025 y Ft(COPROC)192 b Fu(An)27 b(arra)m(y)g(v)-5 b(ariable)28 b(created)g(to)f(hold)g(the)g(\014le)g(descriptors)g(for)g(output)f -(from)h(and)f(input)630 3367 y(to)31 b(an)f(unnamed)f(copro)s(cess)i +(from)h(and)f(input)630 4134 y(to)31 b(an)f(unnamed)f(copro)s(cess)i (\(see)g(Section)h(3.2.5)g([Copro)s(cesses],)f(page)g(15\).)150 -3521 y Ft(DIRSTACK)96 b Fu(An)26 b(arra)m(y)h(v)-5 b(ariable)28 +4299 y Ft(DIRSTACK)96 b Fu(An)26 b(arra)m(y)h(v)-5 b(ariable)28 b(con)m(taining)g(the)f(curren)m(t)f(con)m(ten)m(ts)j(of)e(the)f -(directory)i(stac)m(k.)41 b(Direc-)630 3630 y(tories)33 +(directory)i(stac)m(k.)41 b(Direc-)630 4408 y(tories)33 b(app)s(ear)f(in)g(the)h(stac)m(k)h(in)e(the)h(order)f(they)h(are)g (displa)m(y)m(ed)g(b)m(y)f(the)h Ft(dirs)e Fu(builtin.)630 -3740 y(Assigning)f(to)h(mem)m(b)s(ers)f(of)g(this)g(arra)m(y)g(v)-5 +4518 y(Assigning)f(to)h(mem)m(b)s(ers)f(of)g(this)g(arra)m(y)g(v)-5 b(ariable)31 b(ma)m(y)g(b)s(e)e(used)h(to)h(mo)s(dify)e(directories)630 -3850 y(already)41 b(in)f(the)h(stac)m(k,)k(but)40 b(the)h +4628 y(already)41 b(in)f(the)h(stac)m(k,)k(but)40 b(the)h Ft(pushd)e Fu(and)h Ft(popd)f Fu(builtins)h(m)m(ust)h(b)s(e)e(used)h -(to)i(add)630 3959 y(and)37 b(remo)m(v)m(e)h(directories.)63 +(to)i(add)630 4737 y(and)37 b(remo)m(v)m(e)h(directories.)63 b(Assignmen)m(t)37 b(to)h(this)f(v)-5 b(ariable)38 b(will)g(not)f(c)m -(hange)i(the)e(cur-)630 4069 y(ren)m(t)c(directory)-8 +(hange)i(the)e(cur-)630 4847 y(ren)m(t)c(directory)-8 b(.)47 b(If)32 b Ft(DIRSTACK)e Fu(is)i(unset,)g(it)h(loses)g(its)g(sp)s (ecial)g(prop)s(erties,)f(ev)m(en)h(if)f(it)h(is)630 -4178 y(subsequen)m(tly)d(reset.)150 4332 y Ft(EMACS)240 +4956 y(subsequen)m(tly)d(reset.)150 5121 y Ft(EMACS)240 b Fu(If)31 b(Bash)h(\014nds)d(this)j(v)-5 b(ariable)32 b(in)f(the)h(en)m(vironmen)m(t)g(when)e(the)i(shell)f(starts)h(with)f -(v)-5 b(alue)630 4441 y(`)p Ft(t)p Fu(',)36 b(it)f(assumes)f(that)h +(v)-5 b(alue)630 5230 y(`)p Ft(t)p Fu(',)36 b(it)f(assumes)f(that)h (the)g(shell)f(is)h(running)e(in)h(an)g(Emacs)h(shell)g(bu\013er)e(and) -h(disables)630 4551 y(line)d(editing.)150 4704 y Ft(ENV)336 -b Fu(Similar)35 b(to)g Ft(BASH_ENV)p Fu(;)h(used)e(when)g(the)h(shell)g -(is)g(in)m(v)m(ok)m(ed)h(in)e Fm(posix)h Fu(Mo)s(de)g(\(see)g(Sec-)630 -4814 y(tion)c(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(95\).)150 -4967 y Ft(EUID)288 b Fu(The)30 b(n)m(umeric)g(e\013ectiv)m(e)j(user)d -(id)g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 -b(ariable)31 b(is)f(readonly)-8 b(.)150 5121 y Ft(EXECIGNORE)630 -5230 y Fu(A)37 b(colon-separated)h(list)f(of)f(extended)h(glob)g -(patterns)f(\(see)i(Section)f(3.5.8.1)i([P)m(attern)630 -5340 y(Matc)m(hing],)i(page)c(31\))h(de\014ning)e(the)h(list)g(of)g -(\014lenames)g(to)g(b)s(e)g(ignored)g(b)m(y)f(command)p -eop end +h(disables)630 5340 y(line)d(editing.)p eop end %%Page: 75 81 TeXDict begin 75 80 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(75)630 299 y(searc)m(h.)41 -b(Files)29 b(whose)f(full)g(pathnames)g(matc)m(h)h(one)f(of)h(these)f -(patterns)h(are)f(not)h(consid-)630 408 y(ered)36 b(executable)i -(\014les)e(for)h(the)f(purp)s(oses)f(of)h(completion)i(and)d(command)h -(execution.)630 518 y(This)d(do)s(es)g(not)h(a\013ect)h(the)f(b)s(eha)m -(vior)g(of)f(the)h Ft([)p Fu(,)h Ft(test)p Fu(,)e(and)g -Ft([[)g Fu(commands.)50 b(Use)34 b(this)630 628 y(v)-5 -b(ariable)33 b(to)f(ignore)h(shared)e(library)h(\014les)g(that)g(ha)m -(v)m(e)h(the)g(executable)g(bit)f(set,)h(but)f(are)630 -737 y(not)f(executable)h(\014les.)150 886 y Ft(FCEDIT)192 +b(Shell)30 b(V)-8 b(ariables)2459 b(75)150 299 y Ft(ENV)336 +b Fu(Similar)35 b(to)g Ft(BASH_ENV)p Fu(;)h(used)e(when)g(the)h(shell)g +(is)g(in)m(v)m(ok)m(ed)h(in)e Fm(posix)h Fu(Mo)s(de)g(\(see)g(Sec-)630 +408 y(tion)c(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(95\).)150 +564 y Ft(EUID)288 b Fu(The)30 b(n)m(umeric)g(e\013ectiv)m(e)j(user)d +(id)g(of)g(the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 +b(ariable)31 b(is)f(readonly)-8 b(.)150 720 y Ft(EXECIGNORE)630 +830 y Fu(A)29 b(colon-separated)h(list)f(of)g(shell)g(patterns)f(\(see) +i(Section)f(3.5.8.1)i([P)m(attern)f(Matc)m(hing],)630 +939 y(page)h(31\))h(de\014ning)e(the)h(list)g(of)g(\014lenames)g(to)h +(b)s(e)e(ignored)g(b)m(y)h(command)g(searc)m(h.)42 b(Files)630 +1049 y(whose)23 b(full)g(pathnames)f(matc)m(h)i(one)g(of)f(these)h +(patterns)f(are)g(not)g(considered)g(executable)630 1158 +y(\014les)40 b(for)f(the)h(purp)s(oses)d(of)j(completion)h(and)e +(command)g(execution.)70 b(This)38 b(do)s(es)i(not)630 +1268 y(a\013ect)24 b(the)f(b)s(eha)m(vior)g(of)g(the)g +Ft([)p Fu(,)i Ft(test)p Fu(,)e(and)f Ft([[)g Fu(commands.)38 +b(Use)23 b(this)g(v)-5 b(ariable)24 b(to)f(ignore)630 +1377 y(shared)h(library)h(\014les)g(that)g(ha)m(v)m(e)h(the)f +(executable)i(bit)e(set,)i(but)d(are)h(not)g(executable)i(\014les.)630 +1487 y(The)j(pattern)g(matc)m(hing)i(honors)e(the)g(setting)i(of)e(the) +h Ft(extglob)d Fu(shell)j(option.)150 1643 y Ft(FCEDIT)192 b Fu(The)30 b(editor)h(used)e(as)i(a)g(default)f(b)m(y)h(the)f Ft(-e)g Fu(option)h(to)g(the)f Ft(fc)g Fu(builtin)g(command.)150 -1034 y Ft(FIGNORE)144 b Fu(A)35 b(colon-separated)i(list)f(of)g +1799 y Ft(FIGNORE)144 b Fu(A)35 b(colon-separated)i(list)f(of)g (su\016xes)e(to)i(ignore)g(when)e(p)s(erforming)g(\014lename)i(comple-) -630 1143 y(tion.)k(A)27 b(\014lename)g(whose)f(su\016x)g(matc)m(hes)i +630 1908 y(tion.)k(A)27 b(\014lename)g(whose)f(su\016x)g(matc)m(hes)i (one)f(of)g(the)g(en)m(tries)g(in)g Ft(FIGNORE)d Fu(is)j(excluded)630 -1253 y(from)j(the)g(list)h(of)g(matc)m(hed)g(\014lenames.)41 +2018 y(from)j(the)g(list)h(of)g(matc)m(hed)g(\014lenames.)41 b(A)30 b(sample)h(v)-5 b(alue)31 b(is)f(`)p Ft(.o:~)p -Fu(')150 1401 y Ft(FUNCNAME)96 b Fu(An)35 b(arra)m(y)i(v)-5 +Fu(')150 2173 y Ft(FUNCNAME)96 b Fu(An)35 b(arra)m(y)i(v)-5 b(ariable)36 b(con)m(taining)h(the)f(names)g(of)g(all)g(shell)g -(functions)g(curren)m(tly)f(in)h(the)630 1511 y(execution)g(call)h +(functions)g(curren)m(tly)f(in)h(the)630 2283 y(execution)g(call)h (stac)m(k.)57 b(The)34 b(elemen)m(t)j(with)e(index)g(0)h(is)f(the)g -(name)h(of)f(an)m(y)h(curren)m(tly-)630 1620 y(executing)f(shell)f +(name)h(of)f(an)m(y)h(curren)m(tly-)630 2393 y(executing)f(shell)f (function.)51 b(The)34 b(b)s(ottom-most)h(elemen)m(t)g(\(the)g(one)f -(with)g(the)g(highest)630 1730 y(index\))e(is)h Ft("main")p +(with)g(the)g(highest)630 2502 y(index\))e(is)h Ft("main")p Fu(.)44 b(This)32 b(v)-5 b(ariable)33 b(exists)g(only)g(when)e(a)i -(shell)f(function)g(is)g(executing.)630 1840 y(Assignmen)m(ts)23 +(shell)f(function)g(is)g(executing.)630 2612 y(Assignmen)m(ts)23 b(to)f Ft(FUNCNAME)e Fu(ha)m(v)m(e)k(no)e(e\013ect.)39 b(If)22 b Ft(FUNCNAME)e Fu(is)i(unset,)h(it)g(loses)g(its)f(sp)s(ecial) -630 1949 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g(subsequen)m -(tly)f(reset.)630 2078 y(This)h(v)-5 b(ariable)32 b(can)f(b)s(e)g(used) +630 2721 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g(subsequen)m +(tly)f(reset.)630 2854 y(This)h(v)-5 b(ariable)32 b(can)f(b)s(e)g(used) g(with)g Ft(BASH_LINENO)d Fu(and)j Ft(BASH_SOURCE)p Fu(.)40 -b(Eac)m(h)32 b(elemen)m(t)630 2188 y(of)g Ft(FUNCNAME)d +b(Eac)m(h)32 b(elemen)m(t)630 2964 y(of)g Ft(FUNCNAME)d Fu(has)j(corresp)s(onding)e(elemen)m(ts)j(in)f Ft(BASH_LINENO)c -Fu(and)k Ft(BASH_SOURCE)c Fu(to)630 2297 y(describ)s(e)39 +Fu(and)k Ft(BASH_SOURCE)c Fu(to)630 3073 y(describ)s(e)39 b(the)h(call)h(stac)m(k.)70 b(F)-8 b(or)41 b(instance,)i Ft(${FUNCNAME[$i]})35 b Fu(w)m(as)41 b(called)f(from)g(the)630 -2407 y(\014le)27 b Ft(${BASH_SOURCE[$i+1]})21 b Fu(at)27 +3183 y(\014le)27 b Ft(${BASH_SOURCE[$i+1]})21 b Fu(at)27 b(line)h(n)m(um)m(b)s(er)d Ft(${BASH_LINENO[$i]})p Fu(.)34 -b(The)27 b Ft(caller)630 2516 y Fu(builtin)j(displa)m(ys)g(the)h +b(The)27 b Ft(caller)630 3292 y Fu(builtin)j(displa)m(ys)g(the)h (curren)m(t)f(call)i(stac)m(k)g(using)d(this)i(information.)150 -2665 y Ft(FUNCNEST)96 b Fu(If)34 b(set)i(to)f(a)h(n)m(umeric)e(v)-5 +3448 y Ft(FUNCNEST)96 b Fu(If)34 b(set)i(to)f(a)h(n)m(umeric)e(v)-5 b(alue)36 b(greater)g(than)e(0,)j(de\014nes)d(a)h(maxim)m(um)g -(function)g(nesting)630 2774 y(lev)m(el.)42 b(F)-8 b(unction)29 +(function)g(nesting)630 3558 y(lev)m(el.)42 b(F)-8 b(unction)29 b(in)m(v)m(o)s(cations)h(that)f(exceed)h(this)e(nesting)h(lev)m(el)h -(will)f(cause)g(the)f(curren)m(t)630 2884 y(command)i(to)h(ab)s(ort.) -150 3032 y Ft(GLOBIGNORE)630 3142 y Fu(A)38 b(colon-separated)i(list)f +(will)f(cause)g(the)f(curren)m(t)630 3667 y(command)i(to)h(ab)s(ort.) +150 3823 y Ft(GLOBIGNORE)630 3933 y Fu(A)38 b(colon-separated)i(list)f (of)f(patterns)g(de\014ning)f(the)h(set)g(of)h(\014lenames)f(to)g(b)s -(e)g(ignored)630 3251 y(b)m(y)31 b(\014lename)g(expansion.)43 +(e)g(ignored)630 4042 y(b)m(y)31 b(\014lename)g(expansion.)43 b(If)31 b(a)h(\014lename)f(matc)m(hed)h(b)m(y)f(a)g(\014lename)h -(expansion)f(pattern)630 3361 y(also)i(matc)m(hes)g(one)f(of)g(the)g +(expansion)f(pattern)630 4152 y(also)i(matc)m(hes)g(one)f(of)g(the)g (patterns)g(in)f Ft(GLOBIGNORE)p Fu(,)f(it)i(is)g(remo)m(v)m(ed)h(from) -e(the)h(list)h(of)630 3471 y(matc)m(hes.)150 3619 y Ft(GROUPS)192 +e(the)h(list)h(of)630 4261 y(matc)m(hes.)41 b(The)27 +b(pattern)g(matc)m(hing)h(honors)f(the)g(setting)i(of)e(the)h +Ft(extglob)d Fu(shell)i(option.)150 4417 y Ft(GROUPS)192 b Fu(An)36 b(arra)m(y)g(v)-5 b(ariable)37 b(con)m(taining)g(the)f(list) h(of)f(groups)g(of)g(whic)m(h)f(the)i(curren)m(t)e(user)h(is)g(a)630 -3728 y(mem)m(b)s(er.)41 b(Assignmen)m(ts)30 b(to)i Ft(GROUPS)d +4527 y(mem)m(b)s(er.)41 b(Assignmen)m(ts)30 b(to)i Ft(GROUPS)d Fu(ha)m(v)m(e)i(no)g(e\013ect.)42 b(If)30 b Ft(GROUPS)f -Fu(is)i(unset,)f(it)h(loses)h(its)630 3838 y(sp)s(ecial)f(prop)s +Fu(is)i(unset,)f(it)h(loses)h(its)630 4636 y(sp)s(ecial)f(prop)s (erties,)f(ev)m(en)h(if)f(it)h(is)g(subsequen)m(tly)f(reset.)150 -3986 y Ft(histchars)630 4096 y Fu(Up)c(to)g(three)g(c)m(haracters)i +4792 y Ft(histchars)630 4902 y Fu(Up)c(to)g(three)g(c)m(haracters)i (whic)m(h)d(con)m(trol)j(history)d(expansion,)i(quic)m(k)g -(substitution,)g(and)630 4205 y(tok)m(enization)k(\(see)f(Section)f +(substitution,)g(and)630 5011 y(tok)m(enization)k(\(see)f(Section)f (9.3)h([History)f(In)m(teraction],)i(page)f(138\).)41 -b(The)29 b(\014rst)e(c)m(harac-)630 4315 y(ter)j(is)f(the)g +b(The)29 b(\014rst)e(c)m(harac-)630 5121 y(ter)j(is)f(the)g Fr(history)g(expansion)g Fu(c)m(haracter,)j(that)e(is,)f(the)h(c)m -(haracter)h(whic)m(h)d(signi\014es)i(the)630 4425 y(start)25 +(haracter)h(whic)m(h)d(signi\014es)i(the)630 5230 y(start)25 b(of)f(a)h(history)f(expansion,)i(normally)e(`)p Ft(!)p Fu('.)39 b(The)24 b(second)g(c)m(haracter)i(is)e(the)g(c)m(haracter)630 -4534 y(whic)m(h)36 b(signi\014es)g(`quic)m(k)h(substitution')f(when)f -(seen)h(as)g(the)g(\014rst)f(c)m(haracter)j(on)e(a)g(line,)630 -4644 y(normally)27 b(`)p Ft(^)p Fu('.)39 b(The)26 b(optional)i(third)d -(c)m(haracter)j(is)e(the)h(c)m(haracter)h(whic)m(h)e(indicates)h(that) -630 4753 y(the)34 b(remainder)f(of)h(the)g(line)g(is)f(a)h(commen)m(t)h -(when)e(found)f(as)i(the)g(\014rst)f(c)m(haracter)i(of)f(a)630 -4863 y(w)m(ord,)i(usually)f(`)p Ft(#)p Fu('.)55 b(The)34 -b(history)h(commen)m(t)h(c)m(haracter)h(causes)e(history)g -(substitution)630 4973 y(to)27 b(b)s(e)f(skipp)s(ed)f(for)i(the)f -(remaining)h(w)m(ords)f(on)h(the)f(line.)40 b(It)27 b(do)s(es)f(not)h -(necessarily)g(cause)630 5082 y(the)k(shell)f(parser)g(to)h(treat)g -(the)g(rest)g(of)f(the)h(line)f(as)h(a)g(commen)m(t.)150 -5230 y Ft(HISTCMD)144 b Fu(The)35 b(history)h(n)m(um)m(b)s(er,)g(or)f -(index)g(in)h(the)g(history)f(list,)j(of)e(the)g(curren)m(t)f(command.) -56 b(If)630 5340 y Ft(HISTCMD)28 b Fu(is)h(unset,)h(it)g(loses)h(its)f -(sp)s(ecial)g(prop)s(erties,)g(ev)m(en)g(if)g(it)g(is)g(subsequen)m -(tly)f(reset.)p eop end +5340 y(whic)m(h)36 b(signi\014es)g(`quic)m(k)h(substitution')f(when)f +(seen)h(as)g(the)g(\014rst)f(c)m(haracter)j(on)e(a)g(line,)p +eop end %%Page: 76 82 TeXDict begin 76 81 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(76)150 299 y Ft(HISTCONTROL)630 -408 y Fu(A)40 b(colon-separated)i(list)f(of)f(v)-5 b(alues)40 -b(con)m(trolling)i(ho)m(w)e(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)630 -518 y(history)29 b(list.)41 b(If)28 b(the)h(list)h(of)f(v)-5 +b(Shell)30 b(V)-8 b(ariables)2459 b(76)630 299 y(normally)27 +b(`)p Ft(^)p Fu('.)39 b(The)26 b(optional)i(third)d(c)m(haracter)j(is)e +(the)h(c)m(haracter)h(whic)m(h)e(indicates)h(that)630 +408 y(the)34 b(remainder)f(of)h(the)g(line)g(is)f(a)h(commen)m(t)h +(when)e(found)f(as)i(the)g(\014rst)f(c)m(haracter)i(of)f(a)630 +518 y(w)m(ord,)i(usually)f(`)p Ft(#)p Fu('.)55 b(The)34 +b(history)h(commen)m(t)h(c)m(haracter)h(causes)e(history)g +(substitution)630 628 y(to)27 b(b)s(e)f(skipp)s(ed)f(for)i(the)f +(remaining)h(w)m(ords)f(on)h(the)f(line.)40 b(It)27 b(do)s(es)f(not)h +(necessarily)g(cause)630 737 y(the)k(shell)f(parser)g(to)h(treat)g(the) +g(rest)g(of)f(the)h(line)f(as)h(a)g(commen)m(t.)150 887 +y Ft(HISTCMD)144 b Fu(The)35 b(history)h(n)m(um)m(b)s(er,)g(or)f(index) +g(in)h(the)g(history)f(list,)j(of)e(the)g(curren)m(t)f(command.)56 +b(If)630 996 y Ft(HISTCMD)28 b Fu(is)h(unset,)h(it)g(loses)h(its)f(sp)s +(ecial)g(prop)s(erties,)g(ev)m(en)g(if)g(it)g(is)g(subsequen)m(tly)f +(reset.)150 1146 y Ft(HISTCONTROL)630 1255 y Fu(A)40 +b(colon-separated)i(list)f(of)f(v)-5 b(alues)40 b(con)m(trolling)i(ho)m +(w)e(commands)g(are)h(sa)m(v)m(ed)g(on)f(the)630 1365 +y(history)29 b(list.)41 b(If)28 b(the)h(list)h(of)f(v)-5 b(alues)29 b(includes)f(`)p Ft(ignorespace)p Fu(',)f(lines)i(whic)m(h)g -(b)s(egin)f(with)630 628 y(a)39 b(space)g(c)m(haracter)i(are)e(not)g +(b)s(egin)f(with)630 1474 y(a)39 b(space)g(c)m(haracter)i(are)e(not)g (sa)m(v)m(ed)g(in)g(the)g(history)f(list.)66 b(A)39 b(v)-5 -b(alue)39 b(of)g(`)p Ft(ignoredups)p Fu(')630 737 y(causes)34 +b(alue)39 b(of)g(`)p Ft(ignoredups)p Fu(')630 1584 y(causes)34 b(lines)h(whic)m(h)f(matc)m(h)h(the)f(previous)f(history)h(en)m(try)h (to)g(not)f(b)s(e)f(sa)m(v)m(ed.)53 b(A)34 b(v)-5 b(alue)630 -847 y(of)32 b(`)p Ft(ignoreboth)p Fu(')d(is)j(shorthand)e(for)i(`)p +1694 y(of)32 b(`)p Ft(ignoreboth)p Fu(')d(is)j(shorthand)e(for)i(`)p Ft(ignorespace)p Fu(')d(and)i(`)p Ft(ignoredups)p Fu('.)42 -b(A)32 b(v)-5 b(alue)32 b(of)630 956 y(`)p Ft(erasedups)p +b(A)32 b(v)-5 b(alue)32 b(of)630 1803 y(`)p Ft(erasedups)p Fu(')f(causes)i(all)h(previous)f(lines)g(matc)m(hing)h(the)f(curren)m -(t)g(line)g(to)h(b)s(e)e(remo)m(v)m(ed)630 1066 y(from)42 +(t)g(line)g(to)h(b)s(e)e(remo)m(v)m(ed)630 1913 y(from)42 b(the)h(history)f(list)i(b)s(efore)e(that)h(line)g(is)g(sa)m(v)m(ed.)78 b(An)m(y)43 b(v)-5 b(alue)43 b(not)g(in)f(the)h(ab)s(o)m(v)m(e)630 -1176 y(list)35 b(is)g(ignored.)53 b(If)34 b Ft(HISTCONTROL)e +2022 y(list)35 b(is)g(ignored.)53 b(If)34 b Ft(HISTCONTROL)e Fu(is)i(unset,)i(or)e(do)s(es)h(not)g(include)f(a)h(v)-5 -b(alid)35 b(v)-5 b(alue,)36 b(all)630 1285 y(lines)30 +b(alid)35 b(v)-5 b(alue,)36 b(all)630 2132 y(lines)30 b(read)g(b)m(y)g(the)g(shell)g(parser)g(are)g(sa)m(v)m(ed)h(on)f(the)g (history)g(list,)h(sub)5 b(ject)30 b(to)g(the)g(v)-5 -b(alue)630 1395 y(of)42 b Ft(HISTIGNORE)p Fu(.)73 b(The)42 +b(alue)630 2242 y(of)42 b Ft(HISTIGNORE)p Fu(.)73 b(The)42 b(second)g(and)g(subsequen)m(t)f(lines)h(of)h(a)f(m)m(ulti-line)h(comp) -s(ound)630 1504 y(command)33 b(are)h(not)g(tested,)i(and)d(are)h(added) +s(ound)630 2351 y(command)33 b(are)h(not)g(tested,)i(and)d(are)h(added) f(to)h(the)g(history)g(regardless)g(of)g(the)f(v)-5 b(alue)630 -1614 y(of)31 b Ft(HISTCONTROL)p Fu(.)150 1763 y Ft(HISTFILE)96 +2461 y(of)31 b Ft(HISTCONTROL)p Fu(.)150 2610 y Ft(HISTFILE)96 b Fu(The)27 b(name)h(of)g(the)g(\014le)g(to)h(whic)m(h)f(the)g(command) f(history)h(is)g(sa)m(v)m(ed.)41 b(The)27 b(default)h(v)-5 -b(alue)630 1873 y(is)30 b Ft(~/.bash_history)p Fu(.)150 -2022 y Ft(HISTFILESIZE)630 2132 y Fu(The)c(maxim)m(um)f(n)m(um)m(b)s +b(alue)630 2720 y(is)30 b Ft(~/.bash_history)p Fu(.)150 +2869 y Ft(HISTFILESIZE)630 2979 y Fu(The)c(maxim)m(um)f(n)m(um)m(b)s (er)g(of)h(lines)h(con)m(tained)g(in)f(the)g(history)g(\014le.)39 -b(When)26 b(this)g(v)-5 b(ariable)630 2242 y(is)25 b(assigned)h(a)g(v) +b(When)26 b(this)g(v)-5 b(ariable)630 3088 y(is)25 b(assigned)h(a)g(v) -5 b(alue,)27 b(the)f(history)f(\014le)h(is)f(truncated,)i(if)e (necessary)-8 b(,)28 b(to)e(con)m(tain)g(no)g(more)630 -2351 y(than)37 b(that)h(n)m(um)m(b)s(er)d(of)j(lines)f(b)m(y)g(remo)m +3198 y(than)37 b(that)h(n)m(um)m(b)s(er)d(of)j(lines)f(b)m(y)g(remo)m (ving)h(the)f(oldest)h(en)m(tries.)62 b(The)37 b(history)g(\014le)g(is) -630 2461 y(also)i(truncated)f(to)h(this)e(size)i(after)g(writing)f(it)g +630 3308 y(also)i(truncated)f(to)h(this)e(size)i(after)g(writing)f(it)g (when)f(a)h(shell)h(exits.)64 b(If)37 b(the)h(v)-5 b(alue)39 -b(is)630 2570 y(0,)g(the)e(history)f(\014le)h(is)g(truncated)f(to)i +b(is)630 3417 y(0,)g(the)e(history)f(\014le)h(is)g(truncated)f(to)i (zero)f(size.)60 b(Non-n)m(umeric)37 b(v)-5 b(alues)37 -b(and)f(n)m(umeric)630 2680 y(v)-5 b(alues)31 b(less)f(than)g(zero)h +b(and)f(n)m(umeric)630 3527 y(v)-5 b(alues)31 b(less)f(than)g(zero)h (inhibit)f(truncation.)41 b(The)29 b(shell)i(sets)f(the)h(default)f(v) --5 b(alue)31 b(to)g(the)630 2790 y(v)-5 b(alue)31 b(of)f +-5 b(alue)31 b(to)g(the)630 3636 y(v)-5 b(alue)31 b(of)f Ft(HISTSIZE)f Fu(after)h(reading)h(an)m(y)g(startup)f(\014les.)150 -2939 y Ft(HISTIGNORE)630 3049 y Fu(A)j(colon-separated)h(list)f(of)g +3786 y Ft(HISTIGNORE)630 3895 y Fu(A)j(colon-separated)h(list)f(of)g (patterns)f(used)g(to)h(decide)g(whic)m(h)f(command)g(lines)h(should) -630 3158 y(b)s(e)f(sa)m(v)m(ed)h(on)g(the)f(history)h(list.)47 +630 4005 y(b)s(e)f(sa)m(v)m(ed)h(on)g(the)f(history)h(list.)47 b(Eac)m(h)33 b(pattern)g(is)f(anc)m(hored)h(at)g(the)f(b)s(eginning)g -(of)h(the)630 3268 y(line)43 b(and)e(m)m(ust)h(matc)m(h)h(the)g +(of)h(the)630 4115 y(line)43 b(and)e(m)m(ust)h(matc)m(h)h(the)g (complete)h(line)e(\(no)h(implicit)g(`)p Ft(*)p Fu(')f(is)g(app)s -(ended\).)75 b(Eac)m(h)630 3377 y(pattern)42 b(is)g(tested)g(against)h +(ended\).)75 b(Eac)m(h)630 4224 y(pattern)42 b(is)g(tested)g(against)h (the)f(line)g(after)g(the)g(c)m(hec)m(ks)h(sp)s(eci\014ed)e(b)m(y)h -Ft(HISTCONTROL)630 3487 y Fu(are)37 b(applied.)59 b(In)36 +Ft(HISTCONTROL)630 4334 y Fu(are)37 b(applied.)59 b(In)36 b(addition)h(to)g(the)g(normal)g(shell)f(pattern)h(matc)m(hing)h(c)m -(haracters,)i(`)p Ft(&)p Fu(')630 3597 y(matc)m(hes)d(the)f(previous)g +(haracters,)i(`)p Ft(&)p Fu(')630 4443 y(matc)m(hes)d(the)f(previous)g (history)g(line.)57 b(`)p Ft(&)p Fu(')36 b(ma)m(y)h(b)s(e)e(escap)s(ed) -h(using)g(a)g(bac)m(kslash;)k(the)630 3706 y(bac)m(kslash)34 +h(using)g(a)g(bac)m(kslash;)k(the)630 4553 y(bac)m(kslash)34 b(is)g(remo)m(v)m(ed)h(b)s(efore)e(attempting)i(a)g(matc)m(h.)51 -b(The)34 b(second)f(and)h(subsequen)m(t)630 3816 y(lines)e(of)h(a)g(m)m +b(The)34 b(second)f(and)h(subsequen)m(t)630 4663 y(lines)e(of)h(a)g(m)m (ulti-line)g(comp)s(ound)e(command)h(are)h(not)f(tested,)i(and)e(are)g -(added)g(to)h(the)630 3925 y(history)d(regardless)h(of)g(the)f(v)-5 -b(alue)31 b(of)g Ft(HISTIGNORE)p Fu(.)630 4055 y Ft(HISTIGNORE)20 +(added)g(to)h(the)630 4772 y(history)k(regardless)h(of)f(the)g(v)-5 +b(alue)38 b(of)f Ft(HISTIGNORE)p Fu(.)58 b(The)37 b(pattern)g(matc)m +(hing)i(honors)630 4882 y(the)31 b(setting)g(of)g(the)f +Ft(extglob)f Fu(shell)h(option.)630 5011 y Ft(HISTIGNORE)20 b Fu(subsumes)g(the)j(function)f(of)h Ft(HISTCONTROL)p Fu(.)35 b(A)23 b(pattern)f(of)h(`)p Ft(&)p Fu(')g(is)f(iden)m(tical)630 -4164 y(to)k Ft(ignoredups)p Fu(,)e(and)h(a)h(pattern)g(of)f(`)p +5121 y(to)k Ft(ignoredups)p Fu(,)e(and)h(a)h(pattern)g(of)f(`)p Ft([)31 b(]*)p Fu(')25 b(is)h(iden)m(tical)h(to)f Ft(ignorespace)p -Fu(.)36 b(Com)m(bining)630 4274 y(these)30 b(t)m(w)m(o)h(patterns,)f +Fu(.)36 b(Com)m(bining)630 5230 y(these)30 b(t)m(w)m(o)h(patterns,)f (separating)g(them)g(with)f(a)h(colon,)h(pro)m(vides)e(the)h -(functionalit)m(y)h(of)630 4384 y Ft(ignoreboth)p Fu(.)150 -4533 y Ft(HISTSIZE)96 b Fu(The)37 b(maxim)m(um)g(n)m(um)m(b)s(er)e(of)j -(commands)f(to)g(remem)m(b)s(er)g(on)g(the)g(history)g(list.)62 -b(If)37 b(the)630 4643 y(v)-5 b(alue)26 b(is)g(0,)i(commands)d(are)h -(not)h(sa)m(v)m(ed)g(in)e(the)h(history)g(list.)40 b(Numeric)26 -b(v)-5 b(alues)26 b(less)g(than)630 4752 y(zero)i(result)e(in)h(ev)m -(ery)g(command)g(b)s(eing)f(sa)m(v)m(ed)i(on)f(the)g(history)f(list)i -(\(there)f(is)g(no)g(limit\).)630 4862 y(The)j(shell)g(sets)h(the)g -(default)f(v)-5 b(alue)31 b(to)g(500)h(after)f(reading)f(an)m(y)h -(startup)f(\014les.)150 5011 y Ft(HISTTIMEFORMAT)630 -5121 y Fu(If)44 b(this)g(v)-5 b(ariable)45 b(is)f(set)g(and)g(not)g(n)m -(ull,)k(its)d(v)-5 b(alue)44 b(is)g(used)g(as)g(a)h(format)f(string)g -(for)630 5230 y Fr(strftime)c Fu(to)35 b(prin)m(t)f(the)h(time)g(stamp) -f(asso)s(ciated)i(with)f(eac)m(h)g(history)g(en)m(try)f(displa)m(y)m -(ed)630 5340 y(b)m(y)g(the)f Ft(history)f Fu(builtin.)50 -b(If)33 b(this)h(v)-5 b(ariable)34 b(is)g(set,)h(time)f(stamps)g(are)g -(written)f(to)i(the)p eop end +(functionalit)m(y)h(of)630 5340 y Ft(ignoreboth)p Fu(.)p +eop end %%Page: 77 83 TeXDict begin 77 82 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(77)630 299 y(history)26 -b(\014le)g(so)g(they)g(ma)m(y)h(b)s(e)e(preserv)m(ed)g(across)i(shell)f -(sessions.)39 b(This)25 b(uses)h(the)g(history)630 408 -y(commen)m(t)31 b(c)m(haracter)h(to)f(distinguish)f(timestamps)h(from)f -(other)g(history)h(lines.)150 577 y Ft(HOSTFILE)96 b -Fu(Con)m(tains)33 b(the)g(name)f(of)h(a)g(\014le)f(in)g(the)h(same)g -(format)g(as)f Ft(/etc/hosts)e Fu(that)j(should)f(b)s(e)630 -687 y(read)21 b(when)g(the)g(shell)h(needs)f(to)h(complete)h(a)e -(hostname.)38 b(The)21 b(list)h(of)g(p)s(ossible)f(hostname)630 -796 y(completions)27 b(ma)m(y)f(b)s(e)f(c)m(hanged)h(while)f(the)h -(shell)g(is)f(running;)h(the)g(next)f(time)i(hostname)630 -906 y(completion)33 b(is)g(attempted)g(after)g(the)f(v)-5 +b(Shell)30 b(V)-8 b(ariables)2459 b(77)150 299 y Ft(HISTSIZE)96 +b Fu(The)37 b(maxim)m(um)g(n)m(um)m(b)s(er)e(of)j(commands)f(to)g +(remem)m(b)s(er)g(on)g(the)g(history)g(list.)62 b(If)37 +b(the)630 408 y(v)-5 b(alue)26 b(is)g(0,)i(commands)d(are)h(not)h(sa)m +(v)m(ed)g(in)e(the)h(history)g(list.)40 b(Numeric)26 +b(v)-5 b(alues)26 b(less)g(than)630 518 y(zero)i(result)e(in)h(ev)m +(ery)g(command)g(b)s(eing)f(sa)m(v)m(ed)i(on)f(the)g(history)f(list)i +(\(there)f(is)g(no)g(limit\).)630 628 y(The)j(shell)g(sets)h(the)g +(default)f(v)-5 b(alue)31 b(to)g(500)h(after)f(reading)f(an)m(y)h +(startup)f(\014les.)150 803 y Ft(HISTTIMEFORMAT)630 913 +y Fu(If)44 b(this)g(v)-5 b(ariable)45 b(is)f(set)g(and)g(not)g(n)m +(ull,)k(its)d(v)-5 b(alue)44 b(is)g(used)g(as)g(a)h(format)f(string)g +(for)630 1022 y Fr(strftime)c Fu(to)35 b(prin)m(t)f(the)h(time)g(stamp) +f(asso)s(ciated)i(with)f(eac)m(h)g(history)g(en)m(try)f(displa)m(y)m +(ed)630 1132 y(b)m(y)g(the)f Ft(history)f Fu(builtin.)50 +b(If)33 b(this)h(v)-5 b(ariable)34 b(is)g(set,)h(time)f(stamps)g(are)g +(written)f(to)i(the)630 1241 y(history)26 b(\014le)g(so)g(they)g(ma)m +(y)h(b)s(e)e(preserv)m(ed)g(across)i(shell)f(sessions.)39 +b(This)25 b(uses)h(the)g(history)630 1351 y(commen)m(t)31 +b(c)m(haracter)h(to)f(distinguish)f(timestamps)h(from)f(other)g +(history)h(lines.)150 1526 y Ft(HOSTFILE)96 b Fu(Con)m(tains)33 +b(the)g(name)f(of)h(a)g(\014le)f(in)g(the)h(same)g(format)g(as)f +Ft(/etc/hosts)e Fu(that)j(should)f(b)s(e)630 1636 y(read)21 +b(when)g(the)g(shell)h(needs)f(to)h(complete)h(a)e(hostname.)38 +b(The)21 b(list)h(of)g(p)s(ossible)f(hostname)630 1745 +y(completions)27 b(ma)m(y)f(b)s(e)f(c)m(hanged)h(while)f(the)h(shell)g +(is)f(running;)h(the)g(next)f(time)i(hostname)630 1855 +y(completion)33 b(is)g(attempted)g(after)g(the)f(v)-5 b(alue)33 b(is)f(c)m(hanged,)i(Bash)e(adds)f(the)i(con)m(ten)m(ts)h(of) -630 1015 y(the)h(new)f(\014le)g(to)h(the)g(existing)h(list.)53 +630 1965 y(the)h(new)f(\014le)g(to)h(the)g(existing)h(list.)53 b(If)34 b Ft(HOSTFILE)e Fu(is)j(set,)h(but)e(has)g(no)h(v)-5 -b(alue,)36 b(or)e(do)s(es)630 1125 y(not)d(name)f(a)h(readable)g +b(alue,)36 b(or)e(do)s(es)630 2074 y(not)d(name)f(a)h(readable)g (\014le,)g(Bash)f(attempts)i(to)f(read)f Ft(/etc/hosts)e -Fu(to)j(obtain)g(the)f(list)630 1235 y(of)h(p)s(ossible)f(hostname)h +Fu(to)j(obtain)g(the)f(list)630 2184 y(of)h(p)s(ossible)f(hostname)h (completions.)43 b(When)31 b Ft(HOSTFILE)d Fu(is)j(unset,)f(the)h -(hostname)g(list)630 1344 y(is)f(cleared.)150 1513 y +(hostname)g(list)630 2293 y(is)f(cleared.)150 2469 y Ft(HOSTNAME)96 b Fu(The)30 b(name)g(of)h(the)f(curren)m(t)h(host.)150 -1681 y Ft(HOSTTYPE)96 b Fu(A)30 b(string)h(describing)f(the)g(mac)m -(hine)h(Bash)g(is)f(running)f(on.)150 1850 y Ft(IGNOREEOF)630 -1960 y Fu(Con)m(trols)e(the)h(action)g(of)f(the)g(shell)g(on)g(receipt) +2644 y Ft(HOSTTYPE)96 b Fu(A)30 b(string)h(describing)f(the)g(mac)m +(hine)h(Bash)g(is)f(running)f(on.)150 2819 y Ft(IGNOREEOF)630 +2929 y Fu(Con)m(trols)e(the)h(action)g(of)f(the)g(shell)g(on)g(receipt) h(of)f(an)g Ft(EOF)f Fu(c)m(haracter)i(as)g(the)f(sole)h(input.)630 -2069 y(If)i(set,)i(the)f(v)-5 b(alue)32 b(denotes)f(the)g(n)m(um)m(b)s +3039 y(If)i(set,)i(the)f(v)-5 b(alue)32 b(denotes)f(the)g(n)m(um)m(b)s (er)f(of)h(consecutiv)m(e)i Ft(EOF)d Fu(c)m(haracters)i(that)f(can)h(b) -s(e)630 2179 y(read)40 b(as)f(the)h(\014rst)f(c)m(haracter)i(on)f(an)f +s(e)630 3148 y(read)40 b(as)f(the)h(\014rst)f(c)m(haracter)i(on)f(an)f (input)g(line)h(b)s(efore)f(the)h(shell)g(will)g(exit.)70 -b(If)39 b(the)630 2288 y(v)-5 b(ariable)38 b(exists)f(but)f(do)s(es)g +b(If)39 b(the)630 3258 y(v)-5 b(ariable)38 b(exists)f(but)f(do)s(es)g (not)h(ha)m(v)m(e)h(a)g(n)m(umeric)e(v)-5 b(alue)37 b(\(or)h(has)e(no)h -(v)-5 b(alue\))37 b(then)g(the)630 2398 y(default)31 +(v)-5 b(alue\))37 b(then)g(the)630 3367 y(default)31 b(is)g(10.)43 b(If)30 b(the)h(v)-5 b(ariable)31 b(do)s(es)g(not)g (exist,)h(then)e Ft(EOF)g Fu(signi\014es)h(the)g(end)f(of)h(input)630 -2508 y(to)g(the)g(shell.)41 b(This)29 b(is)i(only)f(in)g(e\013ect)i -(for)e(in)m(teractiv)m(e)j(shells.)150 2676 y Ft(INPUTRC)144 +3477 y(to)g(the)g(shell.)41 b(This)29 b(is)i(only)f(in)g(e\013ect)i +(for)e(in)m(teractiv)m(e)j(shells.)150 3652 y Ft(INPUTRC)144 b Fu(The)68 b(name)h(of)f(the)h(Readline)g(initialization)j(\014le,)78 -b(o)m(v)m(erriding)69 b(the)g(default)g(of)630 2786 y -Ft(~/.inputrc)p Fu(.)150 2954 y Ft(LANG)288 b Fu(Used)28 +b(o)m(v)m(erriding)69 b(the)g(default)g(of)630 3762 y +Ft(~/.inputrc)p Fu(.)150 3937 y Ft(LANG)288 b Fu(Used)28 b(to)h(determine)f(the)g(lo)s(cale)h(category)h(for)e(an)m(y)h -(category)h(not)e(sp)s(eci\014cally)g(selected)630 3064 +(category)h(not)e(sp)s(eci\014cally)g(selected)630 4047 y(with)i(a)h(v)-5 b(ariable)31 b(starting)g(with)f Ft(LC_)p -Fu(.)150 3232 y Ft(LC_ALL)192 b Fu(This)28 b(v)-5 b(ariable)29 +Fu(.)150 4222 y Ft(LC_ALL)192 b Fu(This)28 b(v)-5 b(ariable)29 b(o)m(v)m(errides)h(the)f(v)-5 b(alue)29 b(of)g Ft(LANG)f Fu(and)g(an)m(y)h(other)g Ft(LC_)f Fu(v)-5 b(ariable)29 -b(sp)s(ecifying)630 3342 y(a)i(lo)s(cale)h(category)-8 -b(.)150 3511 y Ft(LC_COLLATE)630 3620 y Fu(This)37 b(v)-5 +b(sp)s(ecifying)630 4332 y(a)i(lo)s(cale)h(category)-8 +b(.)150 4507 y Ft(LC_COLLATE)630 4617 y Fu(This)37 b(v)-5 b(ariable)38 b(determines)g(the)g(collation)i(order)d(used)g(when)f -(sorting)i(the)g(results)g(of)630 3730 y(\014lename)e(expansion,)i(and) +(sorting)i(the)g(results)g(of)630 4726 y(\014lename)e(expansion,)i(and) e(determines)g(the)h(b)s(eha)m(vior)f(of)g(range)h(expressions,)h -(equiv-)630 3839 y(alence)e(classes,)h(and)e(collating)i(sequences)e +(equiv-)630 4836 y(alence)e(classes,)h(and)e(collating)i(sequences)e (within)f(\014lename)h(expansion)g(and)f(pattern)630 -3949 y(matc)m(hing)d(\(see)h(Section)f(3.5.8)h([Filename)g(Expansion],) -e(page)h(30\).)150 4118 y Ft(LC_CTYPE)96 b Fu(This)36 +4945 y(matc)m(hing)d(\(see)h(Section)f(3.5.8)h([Filename)g(Expansion],) +e(page)h(30\).)150 5121 y Ft(LC_CTYPE)96 b Fu(This)36 b(v)-5 b(ariable)37 b(determines)f(the)h(in)m(terpretation)h(of)f(c)m -(haracters)h(and)e(the)g(b)s(eha)m(vior)h(of)630 4227 +(haracters)h(and)e(the)g(b)s(eha)m(vior)h(of)630 5230 y(c)m(haracter)46 b(classes)g(within)e(\014lename)h(expansion)g(and)f -(pattern)h(matc)m(hing)h(\(see)f(Sec-)630 4337 y(tion)31 -b(3.5.8)h([Filename)g(Expansion],)e(page)h(30\).)150 -4505 y Ft(LC_MESSAGES)630 4615 y Fu(This)25 b(v)-5 b(ariable)27 -b(determines)f(the)g(lo)s(cale)i(used)d(to)i(translate)g(double-quoted) -f(strings)g(pre-)630 4725 y(ceded)31 b(b)m(y)f(a)h(`)p -Ft($)p Fu(')f(\(see)h(Section)h(3.1.2.5)g([Lo)s(cale)g(T)-8 -b(ranslation],)32 b(page)f(7\).)150 4893 y Ft(LC_NUMERIC)630 -5003 y Fu(This)f(v)-5 b(ariable)31 b(determines)f(the)h(lo)s(cale)h -(category)g(used)e(for)g(n)m(um)m(b)s(er)f(formatting.)150 -5171 y Ft(LC_TIME)144 b Fu(This)25 b(v)-5 b(ariable)26 -b(determines)g(the)g(lo)s(cale)h(category)h(used)d(for)g(data)h(and)f -(time)i(formatting.)150 5340 y Ft(LINENO)192 b Fu(The)30 -b(line)h(n)m(um)m(b)s(er)e(in)h(the)g(script)h(or)f(shell)g(function)h -(curren)m(tly)f(executing.)p eop end +(pattern)h(matc)m(hing)h(\(see)f(Sec-)630 5340 y(tion)31 +b(3.5.8)h([Filename)g(Expansion],)e(page)h(30\).)p eop +end %%Page: 78 84 TeXDict begin 78 83 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(78)150 299 y Ft(LINES)240 +b(Shell)30 b(V)-8 b(ariables)2459 b(78)150 299 y Ft(LC_MESSAGES)630 +408 y Fu(This)25 b(v)-5 b(ariable)27 b(determines)f(the)g(lo)s(cale)i +(used)d(to)i(translate)g(double-quoted)f(strings)g(pre-)630 +518 y(ceded)31 b(b)m(y)f(a)h(`)p Ft($)p Fu(')f(\(see)h(Section)h +(3.1.2.5)g([Lo)s(cale)g(T)-8 b(ranslation],)32 b(page)f(7\).)150 +679 y Ft(LC_NUMERIC)630 788 y Fu(This)f(v)-5 b(ariable)31 +b(determines)f(the)h(lo)s(cale)h(category)g(used)e(for)g(n)m(um)m(b)s +(er)f(formatting.)150 949 y Ft(LC_TIME)144 b Fu(This)25 +b(v)-5 b(ariable)26 b(determines)g(the)g(lo)s(cale)h(category)h(used)d +(for)g(data)h(and)f(time)i(formatting.)150 1110 y Ft(LINENO)192 +b Fu(The)30 b(line)h(n)m(um)m(b)s(er)e(in)h(the)g(script)h(or)f(shell)g +(function)h(curren)m(tly)f(executing.)150 1271 y Ft(LINES)240 b Fu(Used)43 b(b)m(y)g(the)g Ft(select)e Fu(command)i(to)g(determine)g -(the)g(column)g(length)g(for)g(prin)m(ting)630 408 y(selection)c +(the)g(column)g(length)g(for)g(prin)m(ting)630 1380 y(selection)c (lists.)63 b(Automatically)41 b(set)d(if)f(the)h Ft(checkwinsize)d -Fu(option)j(is)f(enabled)h(\(see)630 518 y(Section)44 +Fu(option)j(is)f(enabled)h(\(see)630 1490 y(Section)44 b(4.3.2)h([The)e(Shopt)g(Builtin],)k(page)d(63\),)k(or)43 -b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 628 -y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 796 y +b(in)g(an)g(in)m(teractiv)m(e)j(shell)e(up)s(on)630 1599 +y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 1760 y Ft(MACHTYPE)96 b Fu(A)26 b(string)g(that)h(fully)f(describ)s(es)f(the)h (system)g(t)m(yp)s(e)h(on)f(whic)m(h)f(Bash)i(is)f(executing,)i(in)e -(the)630 906 y(standard)k Fm(gnu)g Fr(cpu-compan)m(y-system)h -Fu(format.)150 1074 y Ft(MAILCHECK)630 1184 y Fu(Ho)m(w)d(often)g(\(in) +(the)630 1870 y(standard)k Fm(gnu)g Fr(cpu-compan)m(y-system)h +Fu(format.)150 2030 y Ft(MAILCHECK)630 2140 y Fu(Ho)m(w)d(often)g(\(in) g(seconds\))g(that)g(the)f(shell)h(should)f(c)m(hec)m(k)i(for)e(mail)h -(in)f(the)h(\014les)g(sp)s(eci\014ed)630 1294 y(in)i(the)h +(in)f(the)h(\014les)g(sp)s(eci\014ed)630 2250 y(in)i(the)h Ft(MAILPATH)e Fu(or)i Ft(MAIL)e Fu(v)-5 b(ariables.)43 b(The)30 b(default)h(is)f(60)i(seconds.)42 b(When)30 -b(it)h(is)g(time)630 1403 y(to)37 b(c)m(hec)m(k)h(for)e(mail,)j(the)e +b(it)h(is)g(time)630 2359 y(to)37 b(c)m(hec)m(k)h(for)e(mail,)j(the)e (shell)f(do)s(es)g(so)h(b)s(efore)f(displa)m(ying)h(the)f(primary)g -(prompt.)57 b(If)630 1513 y(this)37 b(v)-5 b(ariable)38 +(prompt.)57 b(If)630 2469 y(this)37 b(v)-5 b(ariable)38 b(is)f(unset,)h(or)f(set)h(to)g(a)f(v)-5 b(alue)38 b(that)f(is)g(not)h -(a)f(n)m(um)m(b)s(er)f(greater)i(than)f(or)630 1622 y(equal)31 +(a)f(n)m(um)m(b)s(er)f(greater)i(than)f(or)630 2578 y(equal)31 b(to)g(zero,)g(the)g(shell)g(disables)f(mail)h(c)m(hec)m(king.)150 -1791 y Ft(MAPFILE)144 b Fu(An)35 b(arra)m(y)h(v)-5 b(ariable)36 +2739 y Ft(MAPFILE)144 b Fu(An)35 b(arra)m(y)h(v)-5 b(ariable)36 b(created)g(to)h(hold)e(the)g(text)i(read)e(b)m(y)g(the)h -Ft(mapfile)d Fu(builtin)i(when)630 1901 y(no)30 b(v)-5 -b(ariable)31 b(name)g(is)f(supplied.)150 2069 y Ft(OLDPWD)192 +Ft(mapfile)d Fu(builtin)i(when)630 2849 y(no)30 b(v)-5 +b(ariable)31 b(name)g(is)f(supplied.)150 3009 y Ft(OLDPWD)192 b Fu(The)30 b(previous)g(w)m(orking)g(directory)h(as)g(set)g(b)m(y)f -(the)h Ft(cd)e Fu(builtin.)150 2238 y Ft(OPTERR)192 b +(the)h Ft(cd)e Fu(builtin.)150 3170 y Ft(OPTERR)192 b Fu(If)35 b(set)i(to)f(the)h(v)-5 b(alue)36 b(1,)i(Bash)e(displa)m(ys)g (error)f(messages)i(generated)g(b)m(y)f(the)g Ft(getopts)630 -2347 y Fu(builtin)30 b(command.)150 2516 y Ft(OSTYPE)192 +3280 y Fu(builtin)30 b(command.)150 3440 y Ft(OSTYPE)192 b Fu(A)30 b(string)h(describing)f(the)g(op)s(erating)h(system)g(Bash)f -(is)h(running)d(on.)150 2685 y Ft(PIPESTATUS)630 2794 +(is)h(running)d(on.)150 3601 y Ft(PIPESTATUS)630 3711 y Fu(An)23 b(arra)m(y)h(v)-5 b(ariable)24 b(\(see)h(Section)f(6.7)h ([Arra)m(ys],)g(page)f(90\))h(con)m(taining)g(a)f(list)g(of)g(exit)g -(sta-)630 2904 y(tus)h(v)-5 b(alues)27 b(from)e(the)h(pro)s(cesses)g +(sta-)630 3820 y(tus)h(v)-5 b(alues)27 b(from)e(the)h(pro)s(cesses)g (in)f(the)h(most-recen)m(tly-executed)j(foreground)c(pip)s(eline)630 -3013 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h -(command\).)150 3182 y Ft(POSIXLY_CORRECT)630 3292 y +3930 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h +(command\).)150 4091 y Ft(POSIXLY_CORRECT)630 4200 y Fu(If)h(this)g(v)-5 b(ariable)34 b(is)e(in)g(the)h(en)m(vironmen)m(t)g (when)e(Bash)i(starts,)g(the)g(shell)g(en)m(ters)g Fm(posix)630 -3401 y Fu(mo)s(de)22 b(\(see)h(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s +4310 y Fu(mo)s(de)22 b(\(see)h(Section)g(6.11)h([Bash)e(POSIX)f(Mo)s (de],)k(page)e(95\))g(b)s(efore)f(reading)g(the)g(startup)630 -3511 y(\014les,)36 b(as)e(if)h(the)f Ft(--posix)f Fu(in)m(v)m(o)s +4419 y(\014les,)36 b(as)e(if)h(the)f Ft(--posix)f Fu(in)m(v)m(o)s (cation)j(option)f(had)f(b)s(een)g(supplied.)51 b(If)34 -b(it)h(is)g(set)g(while)630 3620 y(the)c(shell)f(is)h(running,)d(Bash)j +b(it)h(is)g(set)g(while)630 4529 y(the)c(shell)f(is)h(running,)d(Bash)j (enables)g Fm(posix)e Fu(mo)s(de,)h(as)h(if)f(the)h(command)870 -3759 y Ft(set)47 b(-o)g(posix)630 3898 y Fu(had)30 b(b)s(een)f -(executed.)150 4067 y Ft(PPID)288 b Fu(The)30 b(pro)s(cess)g +4664 y Ft(set)47 b(-o)g(posix)630 4799 y Fu(had)30 b(b)s(een)f +(executed.)150 4960 y Ft(PPID)288 b Fu(The)30 b(pro)s(cess)g Fm(id)g Fu(of)h(the)f(shell's)h(paren)m(t)g(pro)s(cess.)40 b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)150 -4236 y Ft(PROMPT_COMMAND)630 4345 y Fu(If)32 b(set,)h(the)f(v)-5 +5121 y Ft(PROMPT_COMMAND)630 5230 y Fu(If)32 b(set,)h(the)f(v)-5 b(alue)33 b(is)f(in)m(terpreted)g(as)g(a)h(command)f(to)h(execute)g(b)s -(efore)f(the)g(prin)m(ting)g(of)630 4455 y(eac)m(h)g(primary)d(prompt)g -(\()p Ft($PS1)p Fu(\).)150 4623 y Ft(PROMPT_DIRTRIM)630 -4733 y Fu(If)e(set)g(to)h(a)g(n)m(um)m(b)s(er)e(greater)i(than)f(zero,) -i(the)e(v)-5 b(alue)28 b(is)f(used)g(as)g(the)h(n)m(um)m(b)s(er)e(of)h -(trailing)630 4843 y(directory)35 b(comp)s(onen)m(ts)g(to)h(retain)f -(when)f(expanding)g(the)h Ft(\\w)f Fu(and)g Ft(\\W)g -Fu(prompt)g(string)630 4952 y(escap)s(es)21 b(\(see)h(Section)f(6.9)h -([Con)m(trolling)g(the)f(Prompt],)h(page)f(93\).)39 b(Characters)21 -b(remo)m(v)m(ed)630 5062 y(are)31 b(replaced)g(with)f(an)g(ellipsis.) -150 5230 y Ft(PS3)336 b Fu(The)34 b(v)-5 b(alue)35 b(of)f(this)g(v)-5 -b(ariable)35 b(is)g(used)e(as)i(the)f(prompt)g(for)g(the)g -Ft(select)f Fu(command.)52 b(If)630 5340 y(this)30 b(v)-5 -b(ariable)31 b(is)g(not)f(set,)i(the)e Ft(select)f Fu(command)h -(prompts)f(with)h(`)p Ft(#?)g Fu(')p eop end +(efore)f(the)g(prin)m(ting)g(of)630 5340 y(eac)m(h)g(primary)d(prompt)g +(\()p Ft($PS1)p Fu(\).)p eop end %%Page: 79 85 TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(79)150 299 y Ft(PS4)336 -b Fu(The)24 b(v)-5 b(alue)25 b(is)f(the)h(prompt)e(prin)m(ted)h(b)s -(efore)g(the)h(command)f(line)h(is)f(ec)m(ho)s(ed)i(when)d(the)i -Ft(-x)630 408 y Fu(option)32 b(is)f(set)h(\(see)g(Section)h(4.3.1)g -([The)e(Set)g(Builtin],)i(page)f(59\).)45 b(The)31 b(\014rst)f(c)m -(haracter)630 518 y(of)k Ft(PS4)g Fu(is)g(replicated)i(m)m(ultiple)f -(times,)h(as)e(necessary)-8 b(,)37 b(to)e(indicate)g(m)m(ultiple)g(lev) -m(els)h(of)630 628 y(indirection.)41 b(The)30 b(default)h(is)f(`)p -Ft(+)g Fu('.)150 784 y Ft(PWD)336 b Fu(The)30 b(curren)m(t)g(w)m +b(Shell)30 b(V)-8 b(ariables)2459 b(79)150 299 y Ft(PROMPT_DIRTRIM)630 +408 y Fu(If)27 b(set)g(to)h(a)g(n)m(um)m(b)s(er)e(greater)i(than)f +(zero,)i(the)e(v)-5 b(alue)28 b(is)f(used)g(as)g(the)h(n)m(um)m(b)s(er) +e(of)h(trailing)630 518 y(directory)35 b(comp)s(onen)m(ts)g(to)h +(retain)f(when)f(expanding)g(the)h Ft(\\w)f Fu(and)g +Ft(\\W)g Fu(prompt)g(string)630 628 y(escap)s(es)21 b(\(see)h(Section)f +(6.9)h([Con)m(trolling)g(the)f(Prompt],)h(page)f(93\).)39 +b(Characters)21 b(remo)m(v)m(ed)630 737 y(are)31 b(replaced)g(with)f +(an)g(ellipsis.)150 911 y Ft(PS0)336 b Fu(The)30 b(v)-5 +b(alue)32 b(of)f(this)f(parameter)i(is)f(expanded)f(lik)m(e)i +Fr(PS1)38 b Fu(and)30 b(displa)m(y)m(ed)h(b)m(y)g(in)m(teractiv)m(e)630 +1020 y(shells)f(after)h(reading)g(a)g(command)f(and)f(b)s(efore)h(the)h +(command)f(is)h(executed.)150 1194 y Ft(PS3)336 b Fu(The)34 +b(v)-5 b(alue)35 b(of)f(this)g(v)-5 b(ariable)35 b(is)g(used)e(as)i +(the)f(prompt)g(for)g(the)g Ft(select)f Fu(command.)52 +b(If)630 1303 y(this)30 b(v)-5 b(ariable)31 b(is)g(not)f(set,)i(the)e +Ft(select)f Fu(command)h(prompts)f(with)h(`)p Ft(#?)g +Fu(')150 1477 y Ft(PS4)336 b Fu(The)24 b(v)-5 b(alue)25 +b(is)f(the)h(prompt)e(prin)m(ted)h(b)s(efore)g(the)h(command)f(line)h +(is)f(ec)m(ho)s(ed)i(when)d(the)i Ft(-x)630 1587 y Fu(option)32 +b(is)f(set)h(\(see)g(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f +(59\).)45 b(The)31 b(\014rst)f(c)m(haracter)630 1696 +y(of)k Ft(PS4)g Fu(is)g(replicated)i(m)m(ultiple)f(times,)h(as)e +(necessary)-8 b(,)37 b(to)e(indicate)g(m)m(ultiple)g(lev)m(els)h(of)630 +1806 y(indirection.)41 b(The)30 b(default)h(is)f(`)p +Ft(+)g Fu('.)150 1979 y Ft(PWD)336 b Fu(The)30 b(curren)m(t)g(w)m (orking)h(directory)g(as)f(set)h(b)m(y)f(the)h Ft(cd)f -Fu(builtin.)150 941 y Ft(RANDOM)192 b Fu(Eac)m(h)30 b(time)g(this)f -(parameter)g(is)g(referenced,)h(a)f(random)g(in)m(teger)h(b)s(et)m(w)m -(een)g(0)f(and)g(32767)630 1050 y(is)i(generated.)43 +Fu(builtin.)150 2153 y Ft(RANDOM)192 b Fu(Eac)m(h)30 +b(time)g(this)f(parameter)g(is)g(referenced,)h(a)f(random)g(in)m(teger) +h(b)s(et)m(w)m(een)g(0)f(and)g(32767)630 2262 y(is)i(generated.)43 b(Assigning)31 b(a)g(v)-5 b(alue)31 b(to)g(this)g(v)-5 b(ariable)31 b(seeds)g(the)g(random)f(n)m(um)m(b)s(er)f(gen-)630 -1160 y(erator.)150 1316 y Ft(READLINE_LINE)630 1426 y +2372 y(erator.)150 2545 y Ft(READLINE_LINE)630 2655 y Fu(The)e(con)m(ten)m(ts)i(of)f(the)g(Readline)g(line)g(bu\013er,)f(for) h(use)f(with)g(`)p Ft(bind)j(-x)p Fu(')d(\(see)h(Section)h(4.2)630 -1536 y([Bash)i(Builtins],)g(page)g(48\).)150 1692 y Ft(READLINE_POINT) -630 1802 y Fu(The)23 b(p)s(osition)g(of)g(the)h(insertion)f(p)s(oin)m +2765 y([Bash)i(Builtins],)g(page)g(48\).)150 2938 y Ft(READLINE_POINT) +630 3048 y Fu(The)23 b(p)s(osition)g(of)g(the)h(insertion)f(p)s(oin)m (t)g(in)g(the)g(Readline)h(line)f(bu\013er,)h(for)f(use)g(with)g(`)p -Ft(bind)630 1911 y(-x)p Fu(')30 b(\(see)h(Section)h(4.2)f([Bash)g -(Builtins],)g(page)g(48\).)150 2068 y Ft(REPLY)240 b +Ft(bind)630 3157 y(-x)p Fu(')30 b(\(see)h(Section)h(4.2)f([Bash)g +(Builtins],)g(page)g(48\).)150 3331 y Ft(REPLY)240 b Fu(The)30 b(default)g(v)-5 b(ariable)32 b(for)e(the)g -Ft(read)g Fu(builtin.)150 2225 y Ft(SECONDS)144 b Fu(This)40 +Ft(read)g Fu(builtin.)150 3504 y Ft(SECONDS)144 b Fu(This)40 b(v)-5 b(ariable)41 b(expands)f(to)h(the)g(n)m(um)m(b)s(er)e(of)i (seconds)g(since)g(the)f(shell)h(w)m(as)g(started.)630 -2334 y(Assignmen)m(t)i(to)g(this)g(v)-5 b(ariable)43 +3614 y(Assignmen)m(t)i(to)g(this)g(v)-5 b(ariable)43 b(resets)g(the)g(coun)m(t)g(to)g(the)g(v)-5 b(alue)43 -b(assigned,)j(and)c(the)630 2444 y(expanded)35 b(v)-5 +b(assigned,)j(and)c(the)630 3724 y(expanded)35 b(v)-5 b(alue)36 b(b)s(ecomes)h(the)f(v)-5 b(alue)36 b(assigned)g(plus)f(the)h -(n)m(um)m(b)s(er)f(of)h(seconds)g(since)630 2553 y(the)31 -b(assignmen)m(t.)150 2710 y Ft(SHELL)240 b Fu(The)29 +(n)m(um)m(b)s(er)f(of)h(seconds)g(since)630 3833 y(the)31 +b(assignmen)m(t.)150 4007 y Ft(SHELL)240 b Fu(The)29 b(full)h(pathname)g(to)h(the)f(shell)g(is)g(k)m(ept)g(in)g(this)g(en)m (vironmen)m(t)g(v)-5 b(ariable.)42 b(If)29 b(it)i(is)f(not)630 -2819 y(set)36 b(when)f(the)h(shell)g(starts,)i(Bash)e(assigns)h(to)f +4116 y(set)36 b(when)f(the)h(shell)g(starts,)i(Bash)e(assigns)h(to)f (it)h(the)f(full)f(pathname)h(of)g(the)g(curren)m(t)630 -2929 y(user's)30 b(login)h(shell.)150 3086 y Ft(SHELLOPTS)630 -3195 y Fu(A)g(colon-separated)h(list)f(of)g(enabled)f(shell)h(options.) +4226 y(user's)30 b(login)h(shell.)150 4399 y Ft(SHELLOPTS)630 +4509 y Fu(A)g(colon-separated)h(list)f(of)g(enabled)f(shell)h(options.) 41 b(Eac)m(h)31 b(w)m(ord)f(in)g(the)h(list)g(is)g(a)g(v)-5 -b(alid)630 3305 y(argumen)m(t)28 b(for)f(the)h Ft(-o)e +b(alid)630 4619 y(argumen)m(t)28 b(for)f(the)h Ft(-o)e Fu(option)i(to)g(the)g Ft(set)e Fu(builtin)h(command)g(\(see)i(Section) -f(4.3.1)h([The)630 3414 y(Set)g(Builtin],)h(page)f(59\).)42 +f(4.3.1)h([The)630 4728 y(Set)g(Builtin],)h(page)f(59\).)42 b(The)28 b(options)h(app)s(earing)f(in)g Ft(SHELLOPTS)e -Fu(are)j(those)h(rep)s(orted)630 3524 y(as)g(`)p Ft(on)p +Fu(are)j(those)h(rep)s(orted)630 4838 y(as)g(`)p Ft(on)p Fu(')f(b)m(y)h(`)p Ft(set)g(-o)p Fu('.)40 b(If)29 b(this)h(v)-5 b(ariable)30 b(is)g(in)f(the)h(en)m(vironmen)m(t)g(when)f(Bash)h -(starts)g(up,)630 3634 y(eac)m(h)41 b(shell)e(option)h(in)f(the)h(list) +(starts)g(up,)630 4947 y(eac)m(h)41 b(shell)e(option)h(in)f(the)h(list) g(will)f(b)s(e)g(enabled)h(b)s(efore)f(reading)g(an)m(y)h(startup)f -(\014les.)630 3743 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 -b(.)150 3900 y Ft(SHLVL)240 b Fu(Incremen)m(ted)21 b(b)m(y)g(one)g(eac) +(\014les.)630 5057 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 +b(.)150 5230 y Ft(SHLVL)240 b Fu(Incremen)m(ted)21 b(b)m(y)g(one)g(eac) m(h)h(time)f(a)h(new)e(instance)h(of)g(Bash)g(is)g(started.)38 -b(This)20 b(is)h(in)m(tended)630 4009 y(to)31 b(b)s(e)f(a)h(coun)m(t)g -(of)f(ho)m(w)h(deeply)f(y)m(our)g(Bash)h(shells)f(are)h(nested.)150 -4166 y Ft(TIMEFORMAT)630 4275 y Fu(The)f(v)-5 b(alue)32 -b(of)f(this)g(parameter)g(is)g(used)f(as)h(a)g(format)h(string)f(sp)s -(ecifying)f(ho)m(w)h(the)g(tim-)630 4385 y(ing)37 b(information)f(for)h -(pip)s(elines)f(pre\014xed)f(with)h(the)h Ft(time)e Fu(reserv)m(ed)i(w) -m(ord)f(should)g(b)s(e)630 4495 y(displa)m(y)m(ed.)k(The)27 -b(`)p Ft(\045)p Fu(')h(c)m(haracter)h(in)m(tro)s(duces)e(an)h(escap)s -(e)g(sequence)g(that)g(is)f(expanded)g(to)630 4604 y(a)37 -b(time)g(v)-5 b(alue)36 b(or)h(other)f(information.)59 -b(The)36 b(escap)s(e)g(sequences)h(and)e(their)i(meanings)630 -4714 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h -(p)s(ortions.)630 4870 y Ft(\045\045)384 b Fu(A)30 b(literal)i(`)p -Ft(\045)p Fu('.)630 5027 y Ft(\045[)p Fj(p)p Ft(][l]R)96 -b Fu(The)30 b(elapsed)h(time)g(in)f(seconds.)630 5183 -y Ft(\045[)p Fj(p)p Ft(][l]U)96 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h -(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(user)f(mo)s(de.)630 -5340 y Ft(\045[)p Fj(p)p Ft(][l]S)96 b Fu(The)30 b(n)m(um)m(b)s(er)f -(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(system)g(mo)s(de.)p +b(This)20 b(is)h(in)m(tended)630 5340 y(to)31 b(b)s(e)f(a)h(coun)m(t)g +(of)f(ho)m(w)h(deeply)f(y)m(our)g(Bash)h(shells)f(are)h(nested.)p eop end %%Page: 80 86 TeXDict begin 80 85 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(80)630 299 y Ft(\045P)384 -b Fu(The)30 b(CPU)g(p)s(ercen)m(tage,)i(computed)e(as)h(\(\045U)f -Ft(+)g Fu(\045S\))g(/)h(\045R.)630 458 y(The)23 b(optional)j -Fr(p)g Fu(is)e(a)g(digit)h(sp)s(ecifying)e(the)h(precision,)i(the)e(n)m -(um)m(b)s(er)f(of)h(fractional)h(digits)630 568 y(after)36 -b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35 b(v)-5 b(alue)36 -b(of)f(0)h(causes)g(no)f(decimal)h(p)s(oin)m(t)f(or)h(fraction)g(to)g -(b)s(e)630 677 y(output.)48 b(A)m(t)34 b(most)f(three)g(places)h(after) -f(the)g(decimal)h(p)s(oin)m(t)f(ma)m(y)h(b)s(e)e(sp)s(eci\014ed;)i(v)-5 -b(alues)630 787 y(of)31 b Fr(p)h Fu(greater)g(than)e(3)h(are)f(c)m -(hanged)h(to)g(3.)42 b(If)29 b Fr(p)k Fu(is)d(not)h(sp)s(eci\014ed,)f -(the)h(v)-5 b(alue)30 b(3)h(is)g(used.)630 922 y(The)54 -b(optional)h Ft(l)f Fu(sp)s(eci\014es)g(a)h(longer)f(format,)61 -b(including)54 b(min)m(utes,)61 b(of)54 b(the)g(form)630 -1031 y Fr(MM)10 b Fu(m)p Fr(SS)p Fu(.)p Fr(FF)d Fu(s.)103 -b(The)50 b(v)-5 b(alue)52 b(of)f Fr(p)j Fu(determines)d(whether)f(or)h -(not)h(the)f(fraction)h(is)630 1141 y(included.)630 1275 -y(If)30 b(this)g(v)-5 b(ariable)31 b(is)g(not)f(set,)i(Bash)e(acts)h -(as)g(if)f(it)h(had)f(the)h(v)-5 b(alue)870 1410 y Ft +b(Shell)30 b(V)-8 b(ariables)2459 b(80)150 299 y Ft(TIMEFORMAT)630 +408 y Fu(The)30 b(v)-5 b(alue)32 b(of)f(this)g(parameter)g(is)g(used)f +(as)h(a)g(format)h(string)f(sp)s(ecifying)f(ho)m(w)h(the)g(tim-)630 +518 y(ing)37 b(information)f(for)h(pip)s(elines)f(pre\014xed)f(with)h +(the)h Ft(time)e Fu(reserv)m(ed)i(w)m(ord)f(should)g(b)s(e)630 +628 y(displa)m(y)m(ed.)k(The)27 b(`)p Ft(\045)p Fu(')h(c)m(haracter)h +(in)m(tro)s(duces)e(an)h(escap)s(e)g(sequence)g(that)g(is)f(expanded)g +(to)630 737 y(a)37 b(time)g(v)-5 b(alue)36 b(or)h(other)f(information.) +59 b(The)36 b(escap)s(e)g(sequences)h(and)e(their)i(meanings)630 +847 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h(p) +s(ortions.)630 1006 y Ft(\045\045)384 b Fu(A)30 b(literal)i(`)p +Ft(\045)p Fu('.)630 1166 y Ft(\045[)p Fj(p)p Ft(][l]R)96 +b Fu(The)30 b(elapsed)h(time)g(in)f(seconds.)630 1325 +y Ft(\045[)p Fj(p)p Ft(][l]U)96 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h +(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(user)f(mo)s(de.)630 +1484 y Ft(\045[)p Fj(p)p Ft(][l]S)96 b Fu(The)30 b(n)m(um)m(b)s(er)f +(of)h(CPU)g(seconds)h(sp)s(en)m(t)f(in)g(system)g(mo)s(de.)630 +1644 y Ft(\045P)384 b Fu(The)30 b(CPU)g(p)s(ercen)m(tage,)i(computed)e +(as)h(\(\045U)f Ft(+)g Fu(\045S\))g(/)h(\045R.)630 1803 +y(The)23 b(optional)j Fr(p)g Fu(is)e(a)g(digit)h(sp)s(ecifying)e(the)h +(precision,)i(the)e(n)m(um)m(b)s(er)f(of)h(fractional)h(digits)630 +1913 y(after)36 b(a)f(decimal)i(p)s(oin)m(t.)55 b(A)35 +b(v)-5 b(alue)36 b(of)f(0)h(causes)g(no)f(decimal)h(p)s(oin)m(t)f(or)h +(fraction)g(to)g(b)s(e)630 2022 y(output.)48 b(A)m(t)34 +b(most)f(three)g(places)h(after)f(the)g(decimal)h(p)s(oin)m(t)f(ma)m(y) +h(b)s(e)e(sp)s(eci\014ed;)i(v)-5 b(alues)630 2132 y(of)31 +b Fr(p)h Fu(greater)g(than)e(3)h(are)f(c)m(hanged)h(to)g(3.)42 +b(If)29 b Fr(p)k Fu(is)d(not)h(sp)s(eci\014ed,)f(the)h(v)-5 +b(alue)30 b(3)h(is)g(used.)630 2267 y(The)54 b(optional)h +Ft(l)f Fu(sp)s(eci\014es)g(a)h(longer)f(format,)61 b(including)54 +b(min)m(utes,)61 b(of)54 b(the)g(form)630 2376 y Fr(MM)10 +b Fu(m)p Fr(SS)p Fu(.)p Fr(FF)d Fu(s.)103 b(The)50 b(v)-5 +b(alue)52 b(of)f Fr(p)j Fu(determines)d(whether)f(or)h(not)h(the)f +(fraction)h(is)630 2486 y(included.)630 2620 y(If)30 +b(this)g(v)-5 b(ariable)31 b(is)g(not)f(set,)i(Bash)e(acts)h(as)g(if)f +(it)h(had)f(the)h(v)-5 b(alue)870 2755 y Ft ($'\\nreal\\t\0453lR\\nuser\\t\0453)o(lU\\n)o(sys\\)o(t\0453)o(lS')630 -1544 y Fu(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f +2889 y Fu(If)37 b(the)g(v)-5 b(alue)38 b(is)f(n)m(ull,)i(no)f(timing)f (information)h(is)f(displa)m(y)m(ed.)62 b(A)37 b(trailing)i(newline)e -(is)630 1654 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m -(y)m(ed.)150 1813 y Ft(TMOUT)240 b Fu(If)22 b(set)h(to)g(a)g(v)-5 +(is)630 2999 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m +(y)m(ed.)150 3158 y Ft(TMOUT)240 b Fu(If)22 b(set)h(to)g(a)g(v)-5 b(alue)23 b(greater)h(than)e(zero,)j Ft(TMOUT)d Fu(is)g(treated)i(as)e -(the)h(default)g(timeout)g(for)g(the)630 1923 y Ft(read)31 +(the)h(default)g(timeout)g(for)g(the)630 3268 y Ft(read)31 b Fu(builtin)h(\(see)h(Section)f(4.2)i([Bash)e(Builtins],)h(page)g -(48\).)47 b(The)32 b Ft(select)e Fu(command)630 2032 +(48\).)47 b(The)32 b Ft(select)e Fu(command)630 3377 y(\(see)f(Section)h(3.2.4.2)g([Conditional)g(Constructs],)e(page)i -(10\))f(terminates)g(if)g(input)e(do)s(es)630 2142 y(not)k(arriv)m(e)g +(10\))f(terminates)g(if)g(input)e(do)s(es)630 3487 y(not)k(arriv)m(e)g (after)g Ft(TMOUT)e Fu(seconds)h(when)f(input)h(is)g(coming)h(from)f(a) -h(terminal.)630 2276 y(In)40 b(an)h(in)m(teractiv)m(e)i(shell,)h(the)d +h(terminal.)630 3621 y(In)40 b(an)h(in)m(teractiv)m(e)i(shell,)h(the)d (v)-5 b(alue)41 b(is)g(in)m(terpreted)g(as)f(the)h(n)m(um)m(b)s(er)f -(of)h(seconds)f(to)630 2386 y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input) +(of)h(seconds)f(to)630 3731 y(w)m(ait)28 b(for)e(a)g(line)h(of)g(input) e(after)i(issuing)f(the)h(primary)e(prompt.)39 b(Bash)26 -b(terminates)h(after)630 2496 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m +b(terminates)h(after)630 3841 y(w)m(aiting)32 b(for)e(that)h(n)m(um)m (b)s(er)e(of)h(seconds)h(if)f(a)h(complete)h(line)e(of)h(input)e(do)s -(es)h(not)h(arriv)m(e.)150 2655 y Ft(TMPDIR)192 b Fu(If)39 +(es)h(not)h(arriv)m(e.)150 4000 y Ft(TMPDIR)192 b Fu(If)39 b(set,)j(Bash)e(uses)f(its)h(v)-5 b(alue)40 b(as)f(the)h(name)f(of)h(a) -g(directory)g(in)f(whic)m(h)g(Bash)h(creates)630 2765 +g(directory)g(in)f(whic)m(h)g(Bash)h(creates)630 4110 y(temp)s(orary)30 b(\014les)g(for)g(the)h(shell's)g(use.)150 -2924 y Ft(UID)336 b Fu(The)30 b(n)m(umeric)g(real)h(user)f(id)g(of)g +4269 y Ft(UID)336 b Fu(The)30 b(n)m(umeric)g(real)h(user)f(id)g(of)g (the)h(curren)m(t)f(user.)40 b(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 b(.)p eop end %%Page: 81 87 TeXDict begin 81 86 bop 150 -116 a Fu(Chapter)30 b(6:)41 b(Bash)30 b(F)-8 b(eatures)2484 b(81)150 299 y Fp(6)80 -b(Bash)54 b(F)-13 b(eatures)150 504 y Fu(This)30 b(c)m(hapter)h -(describ)s(es)e(features)i(unique)e(to)i(Bash.)150 725 -y Fs(6.1)68 b(In)l(v)l(oking)46 b(Bash)390 884 y Ft(bash)h([long-opt])e +b(Bash)54 b(F)-13 b(eatures)150 502 y Fu(This)30 b(c)m(hapter)h +(describ)s(es)e(features)i(unique)e(to)i(Bash.)150 731 +y Fs(6.1)68 b(In)l(v)l(oking)46 b(Bash)390 890 y Ft(bash)h([long-opt])e ([-ir])h([-abefhkmnptuvxdBCDHP])c([-o)47 b Fj(option)p Ft(])e([-O)i Fj(shopt_option)p Ft(])e([)p Fj(ar-)390 -994 y(gument)h Ft(...)o(])390 1103 y(bash)h([long-opt])e +1000 y(gument)h Ft(...)o(])390 1110 y(bash)h([long-opt])e ([-abefhkmnptuvxdBCDHP])c([-o)47 b Fj(option)p Ft(])f([-O)h Fj(shopt_option)p Ft(])d(-c)j Fj(string)f Ft([)p Fj(ar-)390 -1213 y(gument)g Ft(...)o(])390 1323 y(bash)h([long-opt])e(-s)i +1219 y(gument)g Ft(...)o(])390 1329 y(bash)h([long-opt])e(-s)i ([-abefhkmnptuvxdBCDHP])42 b([-o)k Fj(option)p Ft(])g([-O)h -Fj(shopt_option)p Ft(])d([)p Fj(ar-)390 1432 y(gument)i -Ft(...)o(])275 1561 y Fu(All)31 b(of)g(the)f(single-c)m(haracter)k +Fj(shopt_option)p Ft(])d([)p Fj(ar-)390 1438 y(gument)i +Ft(...)o(])275 1567 y Fu(All)31 b(of)g(the)f(single-c)m(haracter)k (options)d(used)f(with)g(the)h Ft(set)f Fu(builtin)g(\(see)h(Section)h -(4.3.1)g([The)f(Set)150 1670 y(Builtin],)45 b(page)c(59\))i(can)e(b)s +(4.3.1)g([The)f(Set)150 1676 y(Builtin],)45 b(page)c(59\))i(can)e(b)s (e)f(used)h(as)g(options)g(when)f(the)i(shell)f(is)g(in)m(v)m(ok)m(ed.) -74 b(In)41 b(addition,)j(there)150 1780 y(are)38 b(sev)m(eral)h(m)m +74 b(In)41 b(addition,)j(there)150 1786 y(are)38 b(sev)m(eral)h(m)m (ulti-c)m(haracter)h(options)d(that)h(y)m(ou)g(can)g(use.)61 b(These)38 b(options)f(m)m(ust)h(app)s(ear)e(on)i(the)150 -1890 y(command)30 b(line)h(b)s(efore)f(the)g(single-c)m(haracter)j -(options)e(to)g(b)s(e)f(recognized.)150 2037 y Ft(--debugger)630 -2147 y Fu(Arrange)j(for)g(the)g(debugger)g(pro\014le)g(to)h(b)s(e)e +1896 y(command)30 b(line)h(b)s(efore)f(the)g(single-c)m(haracter)j +(options)e(to)g(b)s(e)f(recognized.)150 2043 y Ft(--debugger)630 +2152 y Fu(Arrange)j(for)g(the)g(debugger)g(pro\014le)g(to)h(b)s(e)e (executed)i(b)s(efore)f(the)g(shell)g(starts.)49 b(T)-8 -b(urns)630 2257 y(on)37 b(extended)g(debugging)g(mo)s(de)g(\(see)h +b(urns)630 2262 y(on)37 b(extended)g(debugging)g(mo)s(de)g(\(see)h (Section)g(4.3.2)g([The)f(Shopt)g(Builtin],)i(page)f(63)630 -2366 y(for)30 b(a)h(description)f(of)h(the)f Ft(extdebug)f -Fu(option)h(to)h(the)g Ft(shopt)e Fu(builtin\).)150 2514 -y Ft(--dump-po-strings)630 2623 y Fu(A)37 b(list)g(of)f(all)i +2371 y(for)30 b(a)h(description)f(of)h(the)f Ft(extdebug)f +Fu(option)h(to)h(the)g Ft(shopt)e Fu(builtin\).)150 2519 +y Ft(--dump-po-strings)630 2628 y Fu(A)37 b(list)g(of)f(all)i (double-quoted)e(strings)g(preceded)g(b)m(y)h(`)p Ft($)p -Fu(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 2733 +Fu(')f(is)h(prin)m(ted)f(on)g(the)h(standard)630 2738 y(output)29 b(in)g(the)g Fm(gnu)g Ft(gettext)f Fu(PO)g(\(p)s(ortable)i (ob)5 b(ject\))30 b(\014le)g(format.)40 b(Equiv)-5 b(alen)m(t)31 -b(to)f Ft(-D)630 2843 y Fu(except)h(for)f(the)h(output)f(format.)150 -2990 y Ft(--dump-strings)630 3100 y Fu(Equiv)-5 b(alen)m(t)31 -b(to)g Ft(-D)p Fu(.)150 3248 y Ft(--help)192 b Fu(Displa)m(y)32 +b(to)f Ft(-D)630 2847 y Fu(except)h(for)f(the)h(output)f(format.)150 +2995 y Ft(--dump-strings)630 3104 y Fu(Equiv)-5 b(alen)m(t)31 +b(to)g Ft(-D)p Fu(.)150 3251 y Ft(--help)192 b Fu(Displa)m(y)32 b(a)e(usage)h(message)h(on)e(standard)g(output)g(and)f(exit)j -(successfully)-8 b(.)150 3396 y Ft(--init-file)27 b Fj(filename)150 -3505 y Ft(--rcfile)h Fj(filename)630 3615 y Fu(Execute)23 +(successfully)-8 b(.)150 3399 y Ft(--init-file)27 b Fj(filename)150 +3508 y Ft(--rcfile)h Fj(filename)630 3618 y Fu(Execute)23 b(commands)e(from)g Fr(\014lename)28 b Fu(\(instead)22 b(of)g Ft(~/.bashrc)p Fu(\))e(in)h(an)h(in)m(teractiv)m(e)i(shell.)150 -3763 y Ft(--login)144 b Fu(Equiv)-5 b(alen)m(t)31 b(to)g -Ft(-l)p Fu(.)150 3910 y Ft(--noediting)630 4020 y Fu(Do)h(not)e(use)h +3765 y Ft(--login)144 b Fu(Equiv)-5 b(alen)m(t)31 b(to)g +Ft(-l)p Fu(.)150 3912 y Ft(--noediting)630 4022 y Fu(Do)h(not)e(use)h (the)g Fm(gnu)f Fu(Readline)i(library)e(\(see)h(Chapter)g(8)g([Command) -f(Line)g(Editing],)630 4130 y(page)h(103\))h(to)f(read)g(command)f +f(Line)g(Editing],)630 4131 y(page)h(103\))h(to)f(read)g(command)f (lines)g(when)g(the)g(shell)h(is)f(in)m(teractiv)m(e.)150 -4277 y Ft(--noprofile)630 4387 y Fu(Don't)22 b(load)g(the)g +4278 y Ft(--noprofile)630 4388 y Fu(Don't)22 b(load)g(the)g (system-wide)f(startup)g(\014le)h Ft(/etc/profile)c Fu(or)j(an)m(y)h -(of)f(the)h(p)s(ersonal)f(ini-)630 4496 y(tialization)34 +(of)f(the)h(p)s(ersonal)f(ini-)630 4498 y(tialization)34 b(\014les)e Ft(~/.bash_profile)p Fu(,)c Ft(~/.bash_login)p -Fu(,)g(or)k Ft(~/.profile)c Fu(when)j(Bash)630 4606 y(is)f(in)m(v)m(ok) +Fu(,)g(or)k Ft(~/.profile)c Fu(when)j(Bash)630 4607 y(is)f(in)m(v)m(ok) m(ed)i(as)f(a)g(login)g(shell.)150 4754 y Ft(--norc)192 b Fu(Don't)35 b(read)f(the)g Ft(~/.bashrc)e Fu(initialization)k(\014le) f(in)e(an)h(in)m(teractiv)m(e)j(shell.)52 b(This)33 b(is)h(on)630 -4863 y(b)m(y)c(default)h(if)f(the)h(shell)f(is)h(in)m(v)m(ok)m(ed)h(as) +4864 y(b)m(y)c(default)h(if)f(the)h(shell)f(is)h(in)m(v)m(ok)m(ed)h(as) e Ft(sh)p Fu(.)150 5011 y Ft(--posix)144 b Fu(Change)24 b(the)h(b)s(eha)m(vior)f(of)g(Bash)h(where)e(the)i(default)f(op)s (eration)h(di\013ers)f(from)f(the)i Fm(posix)630 5121 @@ -13957,65 +13991,65 @@ Fu(',)g(or)f(one)g(in)m(v)m(ok)m(ed)i(with)e(the)150 408 y Ft(--login)h Fu(option.)275 538 y(An)g Fl(inter)-5 b(active)37 b Fu(shell)30 b(is)f(one)g(started)h(without)f(non-option)h (argumen)m(ts,)g(unless)e Ft(-s)h Fu(is)g(sp)s(eci\014ed,)150 -648 y(without)k(sp)s(ecifying)h(the)f Ft(-c)g Fu(option,)i(and)e(whose) +647 y(without)k(sp)s(ecifying)h(the)f Ft(-c)g Fu(option,)i(and)e(whose) g(input)g(and)f(output)h(are)h(b)s(oth)f(connected)h(to)g(ter-)150 757 y(minals)g(\(as)g(determined)f(b)m(y)h Ft(isatty\(3\))p Fu(\),)e(or)i(one)g(started)g(with)f(the)h Ft(-i)f Fu(option.)51 -b(See)33 b(Section)i(6.3)150 867 y([In)m(teractiv)m(e)e(Shells],)e -(page)g(84,)g(for)f(more)h(information.)275 997 y(If)i(argumen)m(ts)h +b(See)33 b(Section)i(6.3)150 866 y([In)m(teractiv)m(e)e(Shells],)e +(page)g(84,)g(for)f(more)h(information.)275 996 y(If)i(argumen)m(ts)h (remain)g(after)h(option)f(pro)s(cessing,)h(and)e(neither)h(the)g -Ft(-c)g Fu(nor)f(the)h Ft(-s)g Fu(option)g(has)150 1106 +Ft(-c)g Fu(nor)f(the)h Ft(-s)g Fu(option)g(has)150 1105 y(b)s(een)44 b(supplied,)j(the)d(\014rst)g(argumen)m(t)h(is)g(assumed)e (to)j(b)s(e)d(the)i(name)g(of)f(a)h(\014le)g(con)m(taining)h(shell)150 -1216 y(commands)30 b(\(see)g(Section)h(3.8)g([Shell)f(Scripts],)g(page) +1215 y(commands)30 b(\(see)g(Section)h(3.8)g([Shell)f(Scripts],)g(page) h(40\).)41 b(When)30 b(Bash)g(is)g(in)m(v)m(ok)m(ed)i(in)d(this)h -(fashion,)150 1326 y Ft($0)37 b Fu(is)g(set)h(to)h(the)e(name)h(of)f +(fashion,)150 1324 y Ft($0)37 b Fu(is)g(set)h(to)h(the)e(name)h(of)f (the)h(\014le,)i(and)c(the)i(p)s(ositional)g(parameters)g(are)g(set)g -(to)g(the)g(remaining)150 1435 y(argumen)m(ts.)h(Bash)26 +(to)g(the)g(remaining)150 1434 y(argumen)m(ts.)h(Bash)26 b(reads)f(and)g(executes)h(commands)f(from)g(this)g(\014le,)i(then)e -(exits.)40 b(Bash's)25 b(exit)i(status)150 1545 y(is)f(the)h(exit)h +(exits.)40 b(Bash's)25 b(exit)i(status)150 1544 y(is)f(the)h(exit)h (status)e(of)h(the)g(last)g(command)f(executed)h(in)g(the)f(script.)40 -b(If)26 b(no)g(commands)g(are)h(executed,)150 1654 y(the)k(exit)g -(status)g(is)f(0.)150 1877 y Fs(6.2)68 b(Bash)45 b(Startup)g(Files)150 -2037 y Fu(This)23 b(section)j(describ)s(es)d(ho)m(w)i(Bash)f(executes)h +b(If)26 b(no)g(commands)g(are)h(executed,)150 1653 y(the)k(exit)g +(status)g(is)f(0.)150 1883 y Fs(6.2)68 b(Bash)45 b(Startup)g(Files)150 +2043 y Fu(This)23 b(section)j(describ)s(es)d(ho)m(w)i(Bash)f(executes)h (its)g(startup)f(\014les.)38 b(If)24 b(an)m(y)h(of)f(the)h(\014les)f -(exist)h(but)e(cannot)150 2146 y(b)s(e)29 b(read,)i(Bash)f(rep)s(orts)f +(exist)h(but)e(cannot)150 2152 y(b)s(e)29 b(read,)i(Bash)f(rep)s(orts)f (an)h(error.)40 b(Tildes)30 b(are)g(expanded)f(in)h(\014lenames)g(as)g -(describ)s(ed)f(ab)s(o)m(v)m(e)i(under)150 2256 y(Tilde)f(Expansion)g +(describ)s(ed)f(ab)s(o)m(v)m(e)i(under)150 2262 y(Tilde)f(Expansion)g (\(see)h(Section)h(3.5.2)g([Tilde)e(Expansion],)h(page)g(22\).)275 -2386 y(In)m(teractiv)m(e)h(shells)f(are)g(describ)s(ed)e(in)h(Section)h +2391 y(In)m(teractiv)m(e)h(shells)f(are)g(describ)s(ed)e(in)h(Section)h (6.3)h([In)m(teractiv)m(e)h(Shells],)d(page)h(84.)150 -2576 y Fk(In)m(v)m(ok)m(ed)40 b(as)h(an)f(in)m(teractiv)m(e)f(login)j -(shell,)g(or)g(with)e Fh(--login)150 2723 y Fu(When)c(Bash)f(is)h(in)m +2580 y Fk(In)m(v)m(ok)m(ed)40 b(as)h(an)f(in)m(teractiv)m(e)f(login)j +(shell,)g(or)g(with)e Fh(--login)150 2727 y Fu(When)c(Bash)f(is)h(in)m (v)m(ok)m(ed)h(as)f(an)g(in)m(teractiv)m(e)j(login)d(shell,)i(or)e(as)g -(a)g(non-in)m(teractiv)m(e)i(shell)e(with)g(the)150 2832 +(a)g(non-in)m(teractiv)m(e)i(shell)e(with)g(the)150 2837 y Ft(--login)30 b Fu(option,)k(it)f(\014rst)e(reads)h(and)g(executes)i (commands)e(from)f(the)i(\014le)f Ft(/etc/profile)p Fu(,)e(if)i(that) -150 2942 y(\014le)44 b(exists.)80 b(After)44 b(reading)g(that)g +150 2946 y(\014le)44 b(exists.)80 b(After)44 b(reading)g(that)g (\014le,)j(it)d(lo)s(oks)g(for)f Ft(~/.bash_profile)p -Fu(,)g Ft(~/.bash_login)p Fu(,)h(and)150 3051 y Ft(~/.profile)p +Fu(,)g Ft(~/.bash_login)p Fu(,)h(and)150 3056 y Ft(~/.profile)p Fu(,)25 b(in)i(that)g(order,)h(and)e(reads)h(and)f(executes)j(commands) -d(from)h(the)g(\014rst)f(one)i(that)f(exists)150 3161 +d(from)h(the)g(\014rst)f(one)i(that)f(exists)150 3165 y(and)j(is)h(readable.)42 b(The)30 b Ft(--noprofile)d Fu(option)k(ma)m(y)g(b)s(e)f(used)g(when)g(the)h(shell)f(is)h(started)g -(to)g(inhibit)150 3271 y(this)f(b)s(eha)m(vior.)275 3400 +(to)g(inhibit)150 3275 y(this)f(b)s(eha)m(vior.)275 3404 y(When)h(an)g(in)m(teractiv)m(e)k(login)d(shell)g(exits,)h(or)f(a)g (non-in)m(teractiv)m(e)i(login)f(shell)e(executes)i(the)f -Ft(exit)150 3510 y Fu(builtin)g(command,)i(Bash)e(reads)h(and)f +Ft(exit)150 3514 y Fu(builtin)g(command,)i(Bash)e(reads)h(and)f (executes)i(commands)e(from)g(the)h(\014le)g Ft(~/.bash_logout)p -Fu(,)d(if)i(it)150 3619 y(exists.)150 3809 y Fk(In)m(v)m(ok)m(ed)40 +Fu(,)d(if)i(it)150 3623 y(exists.)150 3812 y Fk(In)m(v)m(ok)m(ed)40 b(as)h(an)f(in)m(teractiv)m(e)f(non-login)k(shell)150 -3956 y Fu(When)g(an)h(in)m(teractiv)m(e)i(shell)e(that)g(is)f(not)h(a)g +3959 y Fu(When)g(an)h(in)m(teractiv)m(e)i(shell)e(that)g(is)f(not)h(a)g (login)g(shell)g(is)f(started,)48 b(Bash)c(reads)f(and)g(executes)150 -4066 y(commands)31 b(from)g Ft(~/.bashrc)p Fu(,)f(if)h(that)h(\014le)g +4069 y(commands)31 b(from)g Ft(~/.bashrc)p Fu(,)f(if)h(that)h(\014le)g (exists.)44 b(This)31 b(ma)m(y)h(b)s(e)f(inhibited)g(b)m(y)g(using)g -(the)h Ft(--norc)150 4175 y Fu(option.)40 b(The)27 b +(the)h Ft(--norc)150 4178 y Fu(option.)40 b(The)27 b Ft(--rcfile)h Fj(file)e Fu(option)h(will)g(force)h(Bash)f(to)h(read)f -(and)f(execute)j(commands)d(from)h Fr(\014le)150 4285 -y Fu(instead)k(of)f Ft(~/.bashrc)p Fu(.)275 4415 y(So,)g(t)m(ypically) +(and)f(execute)j(commands)d(from)h Fr(\014le)150 4288 +y Fu(instead)k(of)f Ft(~/.bashrc)p Fu(.)275 4417 y(So,)g(t)m(ypically) -8 b(,)33 b(y)m(our)d Ft(~/.bash_profile)c Fu(con)m(tains)32 -b(the)f(line)390 4545 y Ft(if)47 b([)h(-f)f(~/.bashrc)e(];)i(then)g(.)g -(~/.bashrc;)e(fi)150 4674 y Fu(after)31 b(\(or)g(b)s(efore\))f(an)m(y)h +b(the)f(line)390 4546 y Ft(if)47 b([)h(-f)f(~/.bashrc)e(];)i(then)g(.)g +(~/.bashrc;)e(fi)150 4676 y Fu(after)31 b(\(or)g(b)s(efore\))f(an)m(y)h (login-sp)s(eci\014c)g(initializations.)150 4864 y Fk(In)m(v)m(ok)m(ed) 40 b(non-in)m(teractiv)m(ely)150 5011 y Fu(When)33 b(Bash)g(is)g (started)h(non-in)m(teractiv)m(ely)-8 b(,)37 b(to)d(run)e(a)h(shell)h @@ -14030,81 +14064,81 @@ b(Bash)31 b(b)s(eha)m(v)m(es)g(as)g(if)f(the)g(follo)m(wing)150 TeXDict begin 84 89 bop 150 -116 a Fu(Chapter)30 b(6:)41 b(Bash)30 b(F)-8 b(eatures)2484 b(84)390 299 y Ft(if)47 b([)h(-n)f("$BASH_ENV")e(];)i(then)f(.)i("$BASH_ENV";)c(fi)150 -473 y Fu(but)30 b(the)g(v)-5 b(alue)31 b(of)g(the)f Ft(PATH)f +472 y Fu(but)30 b(the)g(v)-5 b(alue)31 b(of)g(the)f Ft(PATH)f Fu(v)-5 b(ariable)32 b(is)e(not)h(used)e(to)i(searc)m(h)g(for)f(the)h -(\014lename.)275 648 y(As)42 b(noted)g(ab)s(o)m(v)m(e,)47 +(\014lename.)275 646 y(As)42 b(noted)g(ab)s(o)m(v)m(e,)47 b(if)42 b(a)h(non-in)m(teractiv)m(e)i(shell)d(is)g(in)m(v)m(ok)m(ed)i -(with)e(the)h Ft(--login)d Fu(option,)46 b(Bash)150 758 +(with)e(the)h Ft(--login)d Fu(option,)46 b(Bash)150 756 y(attempts)31 b(to)g(read)g(and)e(execute)j(commands)e(from)g(the)h -(login)g(shell)g(startup)e(\014les.)150 997 y Fk(In)m(v)m(ok)m(ed)40 -b(with)g(name)h Fh(sh)150 1144 y Fu(If)c(Bash)g(is)g(in)m(v)m(ok)m(ed)i +(login)g(shell)g(startup)e(\014les.)150 994 y Fk(In)m(v)m(ok)m(ed)40 +b(with)g(name)h Fh(sh)150 1141 y Fu(If)c(Bash)g(is)g(in)m(v)m(ok)m(ed)i (with)e(the)g(name)g Ft(sh)p Fu(,)i(it)f(tries)f(to)h(mimic)g(the)f -(startup)g(b)s(eha)m(vior)g(of)h(historical)150 1253 +(startup)g(b)s(eha)m(vior)g(of)h(historical)150 1250 y(v)m(ersions)31 b(of)f Ft(sh)g Fu(as)h(closely)h(as)e(p)s(ossible,)g (while)h(conforming)f(to)h(the)g Fm(posix)e Fu(standard)h(as)h(w)m -(ell.)275 1428 y(When)50 b(in)m(v)m(ok)m(ed)j(as)f(an)f(in)m(teractiv)m +(ell.)275 1424 y(When)50 b(in)m(v)m(ok)m(ed)j(as)f(an)f(in)m(teractiv)m (e)j(login)e(shell,)57 b(or)51 b(as)g(a)h(non-in)m(teractiv)m(e)h -(shell)f(with)f(the)150 1538 y Ft(--login)31 b Fu(option,)k(it)e +(shell)f(with)f(the)150 1534 y Ft(--login)31 b Fu(option,)k(it)e (\014rst)g(attempts)h(to)g(read)f(and)g(execute)h(commands)f(from)g -Ft(/etc/profile)d Fu(and)150 1647 y Ft(~/.profile)p Fu(,)d(in)i(that)i +Ft(/etc/profile)d Fu(and)150 1643 y Ft(~/.profile)p Fu(,)d(in)i(that)i (order.)39 b(The)30 b Ft(--noprofile)c Fu(option)k(ma)m(y)g(b)s(e)f -(used)g(to)h(inhibit)f(this)h(b)s(eha)m(vior.)150 1757 +(used)g(to)h(inhibit)f(this)h(b)s(eha)m(vior.)150 1753 y(When)36 b(in)m(v)m(ok)m(ed)i(as)e(an)g(in)m(teractiv)m(e)j(shell)e (with)f(the)g(name)h Ft(sh)p Fu(,)g(Bash)f(lo)s(oks)h(for)f(the)h(v)-5 -b(ariable)37 b Ft(ENV)p Fu(,)150 1866 y(expands)29 b(its)i(v)-5 +b(ariable)37 b Ft(ENV)p Fu(,)150 1862 y(expands)29 b(its)i(v)-5 b(alue)30 b(if)h(it)f(is)g(de\014ned,)g(and)f(uses)h(the)g(expanded)g (v)-5 b(alue)30 b(as)h(the)f(name)g(of)g(a)h(\014le)f(to)h(read)150 -1976 y(and)g(execute.)46 b(Since)32 b(a)g(shell)g(in)m(v)m(ok)m(ed)h +1972 y(and)g(execute.)46 b(Since)32 b(a)g(shell)g(in)m(v)m(ok)m(ed)h (as)f Ft(sh)f Fu(do)s(es)g(not)h(attempt)h(to)g(read)e(and)g(execute)i -(commands)150 2085 y(from)39 b(an)m(y)g(other)h(startup)e(\014les,)k +(commands)150 2082 y(from)39 b(an)m(y)g(other)h(startup)e(\014les,)k (the)d Ft(--rcfile)e Fu(option)j(has)f(no)g(e\013ect.)69 -b(A)39 b(non-in)m(teractiv)m(e)j(shell)150 2195 y(in)m(v)m(ok)m(ed)32 +b(A)39 b(non-in)m(teractiv)m(e)j(shell)150 2191 y(in)m(v)m(ok)m(ed)32 b(with)e(the)g(name)h Ft(sh)f Fu(do)s(es)g(not)g(attempt)i(to)f(read)f -(an)m(y)h(other)g(startup)e(\014les.)275 2370 y(When)h(in)m(v)m(ok)m +(an)m(y)h(other)g(startup)e(\014les.)275 2365 y(When)h(in)m(v)m(ok)m (ed)h(as)g Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g Fm(posix)e Fu(mo)s(de)h(after)h(the)g(startup)f(\014les)g(are)h(read.)150 -2609 y Fk(In)m(v)m(ok)m(ed)40 b(in)h Fg(posix)g Fk(mo)s(de)150 -2756 y Fu(When)28 b(Bash)h(is)g(started)g(in)g Fm(posix)f +2603 y Fk(In)m(v)m(ok)m(ed)40 b(in)h Fg(posix)g Fk(mo)s(de)150 +2750 y Fu(When)28 b(Bash)h(is)g(started)g(in)g Fm(posix)f Fu(mo)s(de,)g(as)h(with)g(the)g Ft(--posix)d Fu(command)j(line)g -(option,)h(it)f(follo)m(ws)150 2865 y(the)24 b Fm(posix)f +(option,)h(it)f(follo)m(ws)150 2860 y(the)24 b Fm(posix)f Fu(standard)h(for)f(startup)h(\014les.)38 b(In)24 b(this)g(mo)s(de,)h (in)m(teractiv)m(e)i(shells)d(expand)f(the)h Ft(ENV)f -Fu(v)-5 b(ariable)150 2975 y(and)30 b(commands)g(are)g(read)h(and)e +Fu(v)-5 b(ariable)150 2969 y(and)30 b(commands)g(are)g(read)h(and)e (executed)j(from)d(the)i(\014le)f(whose)g(name)h(is)f(the)h(expanded)e -(v)-5 b(alue.)41 b(No)150 3085 y(other)31 b(startup)f(\014les)g(are)h -(read.)150 3324 y Fk(In)m(v)m(ok)m(ed)40 b(b)m(y)g(remote)h(shell)h -(daemon)150 3471 y Fu(Bash)36 b(attempts)h(to)g(determine)f(when)f(it)i +(v)-5 b(alue.)41 b(No)150 3079 y(other)31 b(startup)f(\014les)g(are)h +(read.)150 3317 y Fk(In)m(v)m(ok)m(ed)40 b(b)m(y)g(remote)h(shell)h +(daemon)150 3464 y Fu(Bash)36 b(attempts)h(to)g(determine)f(when)f(it)i (is)f(b)s(eing)g(run)e(with)i(its)g(standard)g(input)f(connected)i(to)g -(a)150 3580 y(net)m(w)m(ork)h(connection,)j(as)c(when)g(executed)h(b)m +(a)150 3574 y(net)m(w)m(ork)h(connection,)j(as)c(when)g(executed)h(b)m (y)f(the)h(remote)g(shell)g(daemon,)h(usually)e Ft(rshd)p -Fu(,)h(or)g(the)150 3690 y(secure)c(shell)f(daemon)h +Fu(,)h(or)g(the)150 3683 y(secure)c(shell)f(daemon)h Ft(sshd)p Fu(.)49 b(If)33 b(Bash)g(determines)h(it)g(is)f(b)s(eing)g -(run)f(in)i(this)f(fashion,)h(it)g(reads)g(and)150 3800 +(run)f(in)i(this)f(fashion,)h(it)g(reads)g(and)150 3793 y(executes)29 b(commands)e(from)g Ft(~/.bashrc)p Fu(,)e(if)j(that)g (\014le)f(exists)h(and)f(is)g(readable.)41 b(It)27 b(will)h(not)f(do)h -(this)f(if)150 3909 y(in)m(v)m(ok)m(ed)k(as)f Ft(sh)p +(this)f(if)150 3902 y(in)m(v)m(ok)m(ed)k(as)f Ft(sh)p Fu(.)40 b(The)29 b Ft(--norc)f Fu(option)i(ma)m(y)g(b)s(e)f(used)f(to)j (inhibit)e(this)g(b)s(eha)m(vior,)h(and)f(the)h Ft(--rcfile)150 -4019 y Fu(option)36 b(ma)m(y)g(b)s(e)e(used)h(to)h(force)g(another)f +4012 y Fu(option)36 b(ma)m(y)g(b)s(e)e(used)h(to)h(force)g(another)f (\014le)h(to)g(b)s(e)e(read,)j(but)d(neither)i Ft(rshd)e -Fu(nor)h Ft(sshd)f Fu(generally)150 4128 y(in)m(v)m(ok)m(e)e(the)f +Fu(nor)h Ft(sshd)f Fu(generally)150 4122 y(in)m(v)m(ok)m(e)e(the)f (shell)f(with)h(those)f(options)h(or)f(allo)m(w)i(them)f(to)g(b)s(e)e -(sp)s(eci\014ed.)150 4368 y Fk(In)m(v)m(ok)m(ed)40 b(with)g(unequal)h +(sp)s(eci\014ed.)150 4360 y Fk(In)m(v)m(ok)m(ed)40 b(with)g(unequal)h (e\013ectiv)m(e)e(and)i(real)g Fg(uid/gid)p Fk(s)150 -4515 y Fu(If)34 b(Bash)h(is)g(started)g(with)f(the)h(e\013ectiv)m(e)i +4507 y Fu(If)34 b(Bash)h(is)g(started)g(with)f(the)h(e\013ectiv)m(e)i (user)d(\(group\))h(id)f(not)h(equal)g(to)g(the)g(real)g(user)f -(\(group\))h(id,)150 4624 y(and)26 b(the)i Ft(-p)e Fu(option)h(is)g +(\(group\))h(id,)150 4616 y(and)26 b(the)i Ft(-p)e Fu(option)h(is)g (not)h(supplied,)e(no)h(startup)g(\014les)g(are)g(read,)h(shell)f -(functions)g(are)g(not)g(inherited)150 4734 y(from)41 +(functions)g(are)g(not)g(inherited)150 4726 y(from)41 b(the)g(en)m(vironmen)m(t,)j(the)d Ft(SHELLOPTS)p Fu(,)h Ft(BASHOPTS)p Fu(,)g Ft(CDPATH)p Fu(,)g(and)e Ft(GLOBIGNORE)e -Fu(v)-5 b(ariables,)45 b(if)150 4843 y(they)28 b(app)s(ear)f(in)h(the)g +Fu(v)-5 b(ariables,)45 b(if)150 4836 y(they)28 b(app)s(ear)f(in)h(the)g (en)m(vironmen)m(t,)i(are)e(ignored,)h(and)e(the)h(e\013ectiv)m(e)j -(user)c(id)h(is)g(set)g(to)h(the)f(real)h(user)150 4953 +(user)c(id)h(is)g(set)g(to)h(the)f(real)h(user)150 4945 y(id.)62 b(If)38 b(the)f Ft(-p)h Fu(option)g(is)f(supplied)g(at)h(in)m (v)m(o)s(cation,)k(the)c(startup)f(b)s(eha)m(vior)h(is)g(the)g(same,)i -(but)d(the)150 5063 y(e\013ectiv)m(e)c(user)d(id)g(is)g(not)h(reset.) -150 5355 y Fs(6.3)68 b(In)l(teractiv)l(e)47 b(Shells)p +(but)d(the)150 5055 y(e\013ectiv)m(e)c(user)d(id)g(is)g(not)h(reset.) +150 5354 y Fs(6.3)68 b(In)l(teractiv)l(e)47 b(Shells)p eop end %%Page: 85 91 TeXDict begin 85 90 bop 150 -116 a Fu(Chapter)30 b(6:)41 @@ -14153,24 +14187,26 @@ y(3.)61 b(Bash)39 b(expands)f(and)g(displa)m(ys)h Ft(PS1)f Fu(b)s(efore)h(reading)g(the)g(\014rst)f(line)h(of)g(a)g(command,)i (and)d(ex-)330 3936 y(pands)30 b(and)g(displa)m(ys)h Ft(PS2)e Fu(b)s(efore)i(reading)g(the)g(second)f(and)h(subsequen)m(t)f -(lines)h(of)g(a)g(m)m(ulti-line)330 4045 y(command.)199 -4177 y(4.)61 b(Bash)26 b(executes)i(the)e(v)-5 b(alue)27 -b(of)f(the)h Ft(PROMPT_COMMAND)22 b Fu(v)-5 b(ariable)27 -b(as)g(a)f(command)g(b)s(efore)g(prin)m(ting)330 4287 -y(the)31 b(primary)e(prompt,)h Ft($PS1)f Fu(\(see)i(Section)g(5.2)h -([Bash)f(V)-8 b(ariables],)32 b(page)f(70\).)199 4419 -y(5.)61 b(Readline)27 b(\(see)g(Chapter)e(8)h([Command)g(Line)g -(Editing],)h(page)g(103\))g(is)f(used)g(to)g(read)g(commands)330 -4528 y(from)k(the)g(user's)g(terminal.)199 4660 y(6.)61 -b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37 b(of)f(the)g -Ft(ignoreeof)e Fu(option)j(to)g Ft(set)29 b(-o)36 b Fu(instead)h(of)f -(exiting)i(imme-)330 4770 y(diately)f(when)e(it)i(receiv)m(es)h(an)e -Ft(EOF)f Fu(on)h(its)g(standard)f(input)g(when)h(reading)g(a)g(command) -g(\(see)330 4879 y(Section)31 b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g -(59\).)199 5011 y(7.)61 b(Command)43 b(history)h(\(see)h(Section)g(9.1) -g([Bash)f(History)h(F)-8 b(acilities],)51 b(page)45 b(136\))h(and)d -(history)330 5121 y(expansion)h(\(see)i(Section)f(9.3)h([History)g(In)m -(teraction],)k(page)45 b(138\))h(are)f(enabled)g(b)m(y)f(default.)330 +(lines)h(of)g(a)g(m)m(ulti-line)330 4045 y(command.)40 +b(Bash)31 b(displa)m(ys)f Ft(PS0)g Fu(after)h(it)g(reads)f(a)h(command) +f(but)f(b)s(efore)h(executing)i(it.)199 4177 y(4.)61 +b(Bash)26 b(executes)i(the)e(v)-5 b(alue)27 b(of)f(the)h +Ft(PROMPT_COMMAND)22 b Fu(v)-5 b(ariable)27 b(as)g(a)f(command)g(b)s +(efore)g(prin)m(ting)330 4287 y(the)31 b(primary)e(prompt,)h +Ft($PS1)f Fu(\(see)i(Section)g(5.2)h([Bash)f(V)-8 b(ariables],)32 +b(page)f(70\).)199 4419 y(5.)61 b(Readline)27 b(\(see)g(Chapter)e(8)h +([Command)g(Line)g(Editing],)h(page)g(103\))g(is)f(used)g(to)g(read)g +(commands)330 4528 y(from)k(the)g(user's)g(terminal.)199 +4660 y(6.)61 b(Bash)36 b(insp)s(ects)g(the)h(v)-5 b(alue)37 +b(of)f(the)g Ft(ignoreeof)e Fu(option)j(to)g Ft(set)29 +b(-o)36 b Fu(instead)h(of)f(exiting)i(imme-)330 4770 +y(diately)f(when)e(it)i(receiv)m(es)h(an)e Ft(EOF)f Fu(on)h(its)g +(standard)f(input)g(when)h(reading)g(a)g(command)g(\(see)330 +4879 y(Section)31 b(4.3.1)h([The)e(Set)h(Builtin],)g(page)g(59\).)199 +5011 y(7.)61 b(Command)43 b(history)h(\(see)h(Section)g(9.1)g([Bash)f +(History)h(F)-8 b(acilities],)51 b(page)45 b(136\))h(and)d(history)330 +5121 y(expansion)h(\(see)i(Section)f(9.3)h([History)g(In)m(teraction],) +k(page)45 b(138\))h(are)f(enabled)g(b)m(y)f(default.)330 5230 y(Bash)28 b(will)g(sa)m(v)m(e)h(the)f(command)f(history)h(to)g (the)g(\014le)g(named)f(b)m(y)h Ft($HISTFILE)d Fu(when)h(a)i(shell)g (with)330 5340 y(history)i(enabled)h(exits.)p eop end @@ -14178,82 +14214,82 @@ g([Bash)f(History)h(F)-8 b(acilities],)51 b(page)45 b(136\))h(and)d TeXDict begin 86 91 bop 150 -116 a Fu(Chapter)30 b(6:)41 b(Bash)30 b(F)-8 b(eatures)2484 b(86)199 299 y(8.)61 b(Alias)31 b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e -(89\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 431 +(89\))h(is)e(p)s(erformed)f(b)m(y)h(default.)199 430 y(9.)61 b(In)24 b(the)g(absence)h(of)f(an)m(y)h(traps,)g(Bash)g (ignores)f Ft(SIGTERM)f Fu(\(see)i(Section)g(3.7.6)h([Signals],)g(page) -f(39\).)154 563 y(10.)61 b(In)26 b(the)h(absence)h(of)f(an)m(y)g +f(39\).)154 562 y(10.)61 b(In)26 b(the)h(absence)h(of)f(an)m(y)g (traps,)g Ft(SIGINT)e Fu(is)i(caugh)m(t)h(and)f(handled)e(\(\(see)k (Section)e(3.7.6)i([Signals],)330 672 y(page)i(39\).)42 b Ft(SIGINT)29 b Fu(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154 -804 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i +803 y(11.)61 b(An)40 b(in)m(teractiv)m(e)j(login)e(shell)g(sends)e(a)i Ft(SIGHUP)d Fu(to)j(all)g(jobs)f(on)g(exit)h(if)g(the)f -Ft(huponexit)e Fu(shell)330 914 y(option)31 b(has)f(b)s(een)g(enabled)g +Ft(huponexit)e Fu(shell)330 913 y(option)31 b(has)f(b)s(een)g(enabled)g (\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(39\).)154 -1046 y(12.)61 b(The)29 b Ft(-n)g Fu(in)m(v)m(o)s(cation)j(option)e(is)g +1044 y(12.)61 b(The)29 b Ft(-n)g Fu(in)m(v)m(o)s(cation)j(option)e(is)g (ignored,)g(and)f(`)p Ft(set)h(-n)p Fu(')f(has)h(no)f(e\013ect)j(\(see) -e(Section)h(4.3.1)g([The)330 1155 y(Set)g(Builtin],)g(page)g(59\).)154 -1287 y(13.)61 b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e(mail)g(p)s(erio)s +e(Section)h(4.3.1)g([The)330 1154 y(Set)g(Builtin],)g(page)g(59\).)154 +1285 y(13.)61 b(Bash)32 b(will)g(c)m(hec)m(k)i(for)e(mail)g(p)s(erio)s (dically)-8 b(,)34 b(dep)s(ending)c(on)i(the)g(v)-5 b(alues)32 b(of)g(the)h Ft(MAIL)p Fu(,)e Ft(MAILPATH)p Fu(,)330 -1397 y(and)f Ft(MAILCHECK)e Fu(shell)i(v)-5 b(ariables)31 +1395 y(and)f Ft(MAILCHECK)e Fu(shell)i(v)-5 b(ariables)31 b(\(see)h(Section)f(5.2)g([Bash)g(V)-8 b(ariables],)32 -b(page)f(70\).)154 1528 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i +b(page)f(70\).)154 1526 y(14.)61 b(Expansion)32 b(errors)h(due)f(to)i (references)f(to)h(un)m(b)s(ound)c(shell)j(v)-5 b(ariables)34 b(after)g(`)p Ft(set)29 b(-u)p Fu(')k(has)g(b)s(een)330 -1638 y(enabled)d(will)h(not)g(cause)g(the)f(shell)h(to)g(exit)g(\(see)g +1636 y(enabled)d(will)h(not)g(cause)g(the)f(shell)h(to)g(exit)g(\(see)g (Section)h(4.3.1)g([The)e(Set)h(Builtin],)g(page)g(59\).)154 -1770 y(15.)61 b(The)48 b(shell)h(will)f(not)h(exit)g(on)g(expansion)f +1767 y(15.)61 b(The)48 b(shell)h(will)f(not)h(exit)g(on)g(expansion)f (errors)g(caused)g(b)m(y)h Fr(v)-5 b(ar)54 b Fu(b)s(eing)48 -b(unset)g(or)h(n)m(ull)f(in)330 1879 y Ft(${)p Fj(var)p +b(unset)g(or)h(n)m(ull)f(in)330 1877 y Ft(${)p Fj(var)p Ft(:?)p Fj(word)p Ft(})27 b Fu(expansions)j(\(see)h(Section)h(3.5.3)g ([Shell)e(P)m(arameter)i(Expansion],)e(page)h(23\).)154 -2011 y(16.)61 b(Redirection)31 b(errors)f(encoun)m(tered)h(b)m(y)f +2009 y(16.)61 b(Redirection)31 b(errors)f(encoun)m(tered)h(b)m(y)f (shell)h(builtins)f(will)g(not)h(cause)g(the)f(shell)h(to)g(exit.)154 -2143 y(17.)61 b(When)26 b(running)f(in)i Fm(posix)e Fu(mo)s(de,)j(a)f +2140 y(17.)61 b(When)26 b(running)f(in)i Fm(posix)e Fu(mo)s(de,)j(a)f (sp)s(ecial)g(builtin)f(returning)g(an)g(error)h(status)g(will)g(not)f -(cause)330 2253 y(the)31 b(shell)f(to)h(exit)h(\(see)f(Section)g(6.11)h -([Bash)f(POSIX)e(Mo)s(de],)i(page)g(95\).)154 2385 y(18.)61 +(cause)330 2250 y(the)31 b(shell)f(to)h(exit)h(\(see)f(Section)g(6.11)h +([Bash)f(POSIX)e(Mo)s(de],)i(page)g(95\).)154 2381 y(18.)61 b(A)34 b(failed)g Ft(exec)f Fu(will)h(not)g(cause)g(the)g(shell)g(to)g (exit)h(\(see)f(Section)h(4.1)g([Bourne)f(Shell)f(Builtins],)330 -2494 y(page)e(41\).)154 2626 y(19.)61 b(P)m(arser)31 +2491 y(page)e(41\).)154 2622 y(19.)61 b(P)m(arser)31 b(syn)m(tax)f(errors)g(will)h(not)g(cause)g(the)f(shell)h(to)g(exit.) -154 2758 y(20.)61 b(Simple)21 b(sp)s(elling)h(correction)g(for)g +154 2754 y(20.)61 b(Simple)21 b(sp)s(elling)h(correction)g(for)g (directory)g(argumen)m(ts)f(to)i(the)e Ft(cd)g Fu(builtin)g(is)h -(enabled)f(b)m(y)h(default)330 2868 y(\(see)35 b(the)g(description)f +(enabled)f(b)m(y)h(default)330 2863 y(\(see)35 b(the)g(description)f (of)h(the)f Ft(cdspell)f Fu(option)h(to)i(the)e Ft(shopt)f -Fu(builtin)h(in)g(Section)h(4.3.2)h([The)330 2977 y(Shopt)30 -b(Builtin],)h(page)g(63\).)154 3109 y(21.)61 b(The)42 +Fu(builtin)h(in)g(Section)h(4.3.2)h([The)330 2973 y(Shopt)30 +b(Builtin],)h(page)g(63\).)154 3105 y(21.)61 b(The)42 b(shell)h(will)g(c)m(hec)m(k)h(the)f(v)-5 b(alue)43 b(of)f(the)h Ft(TMOUT)e Fu(v)-5 b(ariable)44 b(and)e(exit)h(if)g(a)g(command)f(is)h -(not)330 3219 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s +(not)330 3214 y(read)30 b(within)g(the)g(sp)s(eci\014ed)f(n)m(um)m(b)s (er)g(of)i(seconds)f(after)g(prin)m(ting)g Ft($PS1)f -Fu(\(see)i(Section)g(5.2)h([Bash)330 3328 y(V)-8 b(ariables],)32 -b(page)f(70\).)150 3555 y Fs(6.4)68 b(Bash)45 b(Conditional)h -(Expressions)150 3715 y Fu(Conditional)26 b(expressions)g(are)g(used)f +Fu(\(see)i(Section)g(5.2)h([Bash)330 3324 y(V)-8 b(ariables],)32 +b(page)f(70\).)150 3559 y Fs(6.4)68 b(Bash)45 b(Conditional)h +(Expressions)150 3718 y Fu(Conditional)26 b(expressions)g(are)g(used)f (b)m(y)g(the)h Ft([[)f Fu(comp)s(ound)g(command)g(and)g(the)h -Ft(test)f Fu(and)g Ft([)g Fu(builtin)150 3824 y(commands.)275 -3956 y(Expressions)32 b(ma)m(y)h(b)s(e)g(unary)f(or)h(binary)-8 +Ft(test)f Fu(and)g Ft([)g Fu(builtin)150 3828 y(commands.)275 +3959 y(Expressions)32 b(ma)m(y)h(b)s(e)g(unary)f(or)h(binary)-8 b(.)48 b(Unary)33 b(expressions)f(are)i(often)f(used)f(to)i(examine)g -(the)150 4066 y(status)i(of)g(a)g(\014le.)57 b(There)35 +(the)150 4069 y(status)i(of)g(a)g(\014le.)57 b(There)35 b(are)h(string)g(op)s(erators)g(and)f(n)m(umeric)h(comparison)g(op)s -(erators)g(as)g(w)m(ell.)57 b(If)150 4175 y(the)27 b +(erators)g(as)g(w)m(ell.)57 b(If)150 4178 y(the)27 b Fr(\014le)33 b Fu(argumen)m(t)28 b(to)g(one)f(of)g(the)h(primaries)f (is)g(of)g(the)h(form)f Ft(/dev/fd/)p Fj(N)p Fu(,)e(then)i(\014le)h -(descriptor)f Fr(N)37 b Fu(is)150 4285 y(c)m(hec)m(k)m(ed.)51 +(descriptor)f Fr(N)37 b Fu(is)150 4288 y(c)m(hec)m(k)m(ed.)51 b(If)32 b(the)h Fr(\014le)39 b Fu(argumen)m(t)33 b(to)h(one)f(of)g(the) g(primaries)g(is)g(one)g(of)h Ft(/dev/stdin)p Fu(,)d -Ft(/dev/stdout)p Fu(,)150 4395 y(or)f Ft(/dev/stderr)p +Ft(/dev/stdout)p Fu(,)150 4397 y(or)f Ft(/dev/stderr)p Fu(,)e(\014le)i(descriptor)h(0,)g(1,)g(or)f(2,)h(resp)s(ectiv)m(ely)-8 -b(,)32 b(is)f(c)m(hec)m(k)m(ed.)275 4526 y(When)37 b(used)g(with)g +b(,)32 b(is)f(c)m(hec)m(k)m(ed.)275 4529 y(When)37 b(used)g(with)g Ft([[)p Fu(,)i(the)f(`)p Ft(<)p Fu(')g(and)f(`)p Ft(>)p Fu(')h(op)s(erators)g(sort)g(lexicographically)i(using)d(the)h(curren)m -(t)150 4636 y(lo)s(cale.)k(The)30 b Ft(test)f Fu(command)i(uses)f(ASCI) -s(I)e(ordering.)275 4768 y(Unless)44 b(otherwise)h(sp)s(eci\014ed,)j +(t)150 4639 y(lo)s(cale.)k(The)30 b Ft(test)f Fu(command)i(uses)f(ASCI) +s(I)e(ordering.)275 4770 y(Unless)44 b(otherwise)h(sp)s(eci\014ed,)j (primaries)c(that)h(op)s(erate)g(on)g(\014les)f(follo)m(w)i(sym)m(b)s -(olic)f(links)g(and)150 4878 y(op)s(erate)31 b(on)f(the)h(target)h(of)e +(olic)f(links)g(and)150 4880 y(op)s(erate)31 b(on)f(the)h(target)h(of)e (the)h(link,)f(rather)h(than)f(the)g(link)h(itself.)150 -5032 y Ft(-a)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g -Fr(\014le)36 b Fu(exists.)150 5186 y Ft(-b)30 b Fj(file)162 +5033 y Ft(-a)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g +Fr(\014le)36 b Fu(exists.)150 5187 y Ft(-b)30 b Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g Fr(\014le)36 b Fu(exists)31 b(and)f(is)g(a)h(blo)s(c)m(k)g(sp)s(ecial)g(\014le.)150 5340 y Ft(-c)f Fj(file)162 b Fu(T)-8 b(rue)30 b(if)g @@ -14339,132 +14375,132 @@ b(When)44 b(used)f(with)g(the)h Ft([[)g Fu(command,)j(this)d(p)s(er-) (v)m(e)j(\(see)f(Section)g(3.2.4.2)i([Conditional)630 737 y(Constructs],)30 b(page)h(10\).)630 872 y(`)p Ft(=)p Fu(')g(should)e(b)s(e)h(used)f(with)h(the)h Ft(test)e -Fu(command)h(for)g Fm(posix)g Fu(conformance.)150 1033 -y Fj(string1)e Ft(!=)i Fj(string2)630 1143 y Fu(T)-8 +Fu(command)h(for)g Fm(posix)g Fu(conformance.)150 1032 +y Fj(string1)e Ft(!=)i Fj(string2)630 1142 y Fu(T)-8 b(rue)30 b(if)g(the)h(strings)f(are)h(not)f(equal.)150 -1303 y Fj(string1)e Ft(<)i Fj(string2)630 1413 y Fu(T)-8 +1302 y Fj(string1)e Ft(<)i Fj(string2)630 1412 y Fu(T)-8 b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 b(b)s(efore)f -Fr(string2)38 b Fu(lexicographically)-8 b(.)150 1574 -y Fj(string1)28 b Ft(>)i Fj(string2)630 1683 y Fu(T)-8 +Fr(string2)38 b Fu(lexicographically)-8 b(.)150 1572 +y Fj(string1)28 b Ft(>)i Fj(string2)630 1682 y Fu(T)-8 b(rue)30 b(if)g Fr(string1)38 b Fu(sorts)31 b(after)g -Fr(string2)38 b Fu(lexicographically)-8 b(.)150 1844 -y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 1954 y Ft(OP)j Fu(is)h(one)g(of)h(`) +Fr(string2)38 b Fu(lexicographically)-8 b(.)150 1842 +y Fj(arg1)29 b Ft(OP)h Fj(arg2)630 1952 y Ft(OP)j Fu(is)h(one)g(of)h(`) p Ft(-eq)p Fu(',)f(`)p Ft(-ne)p Fu(',)h(`)p Ft(-lt)p Fu(',)g(`)p Ft(-le)p Fu(',)f(`)p Ft(-gt)p Fu(',)h(or)f(`)p Ft(-ge)p Fu('.)51 b(These)34 b(arithmetic)h(binary)630 -2063 y(op)s(erators)h(return)e(true)i(if)f Fr(arg1)44 +2061 y(op)s(erators)h(return)e(true)i(if)f Fr(arg1)44 b Fu(is)36 b(equal)g(to,)i(not)e(equal)g(to,)i(less)e(than,)h(less)f -(than)f(or)630 2173 y(equal)29 b(to,)g(greater)h(than,)e(or)g(greater)i +(than)f(or)630 2171 y(equal)29 b(to,)g(greater)h(than,)e(or)g(greater)i (than)d(or)i(equal)f(to)h Fr(arg2)p Fu(,)h(resp)s(ectiv)m(ely)-8 -b(.)42 b Fr(Arg1)36 b Fu(and)630 2282 y Fr(arg2)j Fu(ma)m(y)30 +b(.)42 b Fr(Arg1)36 b Fu(and)630 2280 y Fr(arg2)j Fu(ma)m(y)30 b(b)s(e)g(p)s(ositiv)m(e)i(or)e(negativ)m(e)j(in)m(tegers.)150 -2517 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 2676 y Fu(The)35 +2523 y Fs(6.5)68 b(Shell)45 b(Arithmetic)150 2682 y Fu(The)35 b(shell)g(allo)m(ws)i(arithmetic)f(expressions)f(to)h(b)s(e)f(ev)-5 b(aluated,)38 b(as)d(one)h(of)f(the)h(shell)f(expansions)g(or)150 -2786 y(b)m(y)30 b(the)h Ft(let)e Fu(and)h(the)h Ft(-i)e +2792 y(b)m(y)30 b(the)h Ft(let)e Fu(and)h(the)h Ft(-i)e Fu(option)i(to)g(the)g Ft(declare)d Fu(builtins.)275 -2921 y(Ev)-5 b(aluation)27 b(is)g(done)f(in)g(\014xed-width)g(in)m +2927 y(Ev)-5 b(aluation)27 b(is)g(done)f(in)g(\014xed-width)g(in)m (tegers)i(with)e(no)h(c)m(hec)m(k)h(for)e(o)m(v)m(er\015o)m(w,)j -(though)d(division)h(b)m(y)150 3031 y(0)g(is)g(trapp)s(ed)f(and)h +(though)d(division)h(b)m(y)150 3037 y(0)g(is)g(trapp)s(ed)f(and)h (\015agged)g(as)h(an)f(error.)39 b(The)26 b(op)s(erators)h(and)g(their) g(precedence,)h(asso)s(ciativit)m(y)-8 b(,)32 b(and)150 -3141 y(v)-5 b(alues)35 b(are)h(the)f(same)g(as)h(in)e(the)h(C)g +3146 y(v)-5 b(alues)35 b(are)h(the)f(same)g(as)h(in)e(the)h(C)g (language.)56 b(The)35 b(follo)m(wing)h(list)g(of)f(op)s(erators)g(is)g -(group)s(ed)f(in)m(to)150 3250 y(lev)m(els)27 b(of)f(equal-precedence)i +(group)s(ed)f(in)m(to)150 3256 y(lev)m(els)27 b(of)f(equal-precedence)i (op)s(erators.)39 b(The)25 b(lev)m(els)j(are)e(listed)h(in)e(order)h -(of)g(decreasing)g(precedence.)150 3412 y Fj(id)p Ft(++)j +(of)g(decreasing)g(precedence.)150 3416 y Fj(id)p Ft(++)j Fj(id)p Ft(--)67 b Fu(v)-5 b(ariable)31 b(p)s(ost-incremen)m(t)g(and)f -(p)s(ost-decremen)m(t)150 3572 y Ft(++)p Fj(id)f Ft(--)p +(p)s(ost-decremen)m(t)150 3577 y Ft(++)p Fj(id)f Ft(--)p Fj(id)67 b Fu(v)-5 b(ariable)31 b(pre-incremen)m(t)g(and)f -(pre-decremen)m(t)150 3733 y Ft(-)g(+)354 b Fu(unary)29 -b(min)m(us)h(and)g(plus)150 3894 y Ft(!)g(~)354 b Fu(logical)33 -b(and)d(bit)m(wise)h(negation)150 4054 y Ft(**)384 b -Fu(exp)s(onen)m(tiation)150 4215 y Ft(*)30 b(/)g(\045)276 +(pre-decremen)m(t)150 3737 y Ft(-)g(+)354 b Fu(unary)29 +b(min)m(us)h(and)g(plus)150 3897 y Ft(!)g(~)354 b Fu(logical)33 +b(and)d(bit)m(wise)h(negation)150 4058 y Ft(**)384 b +Fu(exp)s(onen)m(tiation)150 4218 y Ft(*)30 b(/)g(\045)276 b Fu(m)m(ultiplication,)33 b(division,)d(remainder)150 -4376 y Ft(+)g(-)354 b Fu(addition,)31 b(subtraction)150 -4536 y Ft(<<)f(>>)258 b Fu(left)31 b(and)f(righ)m(t)h(bit)m(wise)g -(shifts)150 4697 y Ft(<=)f(>=)g(<)g(>)102 b Fu(comparison)150 -4858 y Ft(==)30 b(!=)258 b Fu(equalit)m(y)32 b(and)e(inequalit)m(y)150 -5019 y Ft(&)432 b Fu(bit)m(wise)31 b(AND)150 5179 y Ft(^)432 +4378 y Ft(+)g(-)354 b Fu(addition,)31 b(subtraction)150 +4539 y Ft(<<)f(>>)258 b Fu(left)31 b(and)f(righ)m(t)h(bit)m(wise)g +(shifts)150 4699 y Ft(<=)f(>=)g(<)g(>)102 b Fu(comparison)150 +4859 y Ft(==)30 b(!=)258 b Fu(equalit)m(y)32 b(and)e(inequalit)m(y)150 +5019 y Ft(&)432 b Fu(bit)m(wise)31 b(AND)150 5180 y Ft(^)432 b Fu(bit)m(wise)31 b(exclusiv)m(e)h(OR)150 5340 y Ft(|)432 b Fu(bit)m(wise)31 b(OR)p eop end %%Page: 89 95 TeXDict begin 89 94 bop 150 -116 a Fu(Chapter)30 b(6:)41 b(Bash)30 b(F)-8 b(eatures)2484 b(89)150 299 y Ft(&&)384 -b Fu(logical)33 b(AND)150 446 y Ft(||)384 b Fu(logical)33 -b(OR)150 592 y Ft(expr)c(?)h(expr)f(:)h(expr)630 702 -y Fu(conditional)i(op)s(erator)150 849 y Ft(=)e(*=)g(/=)g(\045=)f(+=)h -(-=)g(<<=)f(>>=)h(&=)g(^=)f(|=)630 958 y Fu(assignmen)m(t)150 -1105 y Ft(expr1)g(,)h(expr2)630 1214 y Fu(comma)275 1361 +b Fu(logical)33 b(AND)150 445 y Ft(||)384 b Fu(logical)33 +b(OR)150 590 y Ft(expr)c(?)h(expr)f(:)h(expr)630 700 +y Fu(conditional)i(op)s(erator)150 846 y Ft(=)e(*=)g(/=)g(\045=)f(+=)h +(-=)g(<<=)f(>>=)h(&=)g(^=)f(|=)630 955 y Fu(assignmen)m(t)150 +1101 y Ft(expr1)g(,)h(expr2)630 1211 y Fu(comma)275 1356 y(Shell)38 b(v)-5 b(ariables)39 b(are)g(allo)m(w)m(ed)i(as)e(op)s (erands;)i(parameter)e(expansion)g(is)f(p)s(erformed)g(b)s(efore)g(the) -150 1471 y(expression)g(is)g(ev)-5 b(aluated.)66 b(Within)38 +150 1466 y(expression)g(is)g(ev)-5 b(aluated.)66 b(Within)38 b(an)h(expression,)h(shell)e(v)-5 b(ariables)39 b(ma)m(y)g(also)g(b)s -(e)f(referenced)g(b)m(y)150 1580 y(name)31 b(without)f(using)g(the)h +(e)f(referenced)g(b)m(y)150 1575 y(name)31 b(without)f(using)g(the)h (parameter)g(expansion)f(syn)m(tax.)42 b(A)31 b(shell)f(v)-5 -b(ariable)32 b(that)f(is)f(n)m(ull)h(or)f(unset)150 1690 +b(ariable)32 b(that)f(is)f(n)m(ull)h(or)f(unset)150 1685 y(ev)-5 b(aluates)41 b(to)f(0)g(when)e(referenced)h(b)m(y)g(name)h (without)f(using)g(the)g(parameter)h(expansion)f(syn)m(tax.)150 -1800 y(The)c(v)-5 b(alue)37 b(of)f(a)h(v)-5 b(ariable)36 +1795 y(The)c(v)-5 b(alue)37 b(of)f(a)h(v)-5 b(ariable)36 b(is)g(ev)-5 b(aluated)38 b(as)e(an)g(arithmetic)h(expression)f(when)f -(it)h(is)g(referenced,)i(or)150 1909 y(when)31 b(a)i(v)-5 +(it)h(is)g(referenced,)i(or)150 1904 y(when)31 b(a)i(v)-5 b(ariable)33 b(whic)m(h)f(has)g(b)s(een)f(giv)m(en)j(the)e Fr(in)m(teger)40 b Fu(attribute)33 b(using)f(`)p Ft(declare)d(-i)p -Fu(')i(is)i(assigned)150 2019 y(a)j(v)-5 b(alue.)58 b(A)36 +Fu(')i(is)i(assigned)150 2014 y(a)j(v)-5 b(alue.)58 b(A)36 b(n)m(ull)f(v)-5 b(alue)37 b(ev)-5 b(aluates)37 b(to)g(0.)57 b(A)36 b(shell)g(v)-5 b(ariable)37 b(need)e(not)h(ha)m(v)m(e)h(its)f -Fr(in)m(teger)44 b Fu(attribute)150 2128 y(turned)29 +Fr(in)m(teger)44 b Fu(attribute)150 2123 y(turned)29 b(on)h(to)i(b)s(e)d(used)h(in)g(an)g(expression.)275 -2256 y(Constan)m(ts)41 b(with)g(a)h(leading)f(0)h(are)g(in)m(terpreted) +2251 y(Constan)m(ts)41 b(with)g(a)h(leading)f(0)h(are)g(in)m(terpreted) f(as)g(o)s(ctal)i(n)m(um)m(b)s(ers.)72 b(A)41 b(leading)h(`)p -Ft(0x)p Fu(')f(or)g(`)p Ft(0X)p Fu(')150 2366 y(denotes)30 +Ft(0x)p Fu(')f(or)g(`)p Ft(0X)p Fu(')150 2361 y(denotes)30 b(hexadecimal.)42 b(Otherwise,)30 b(n)m(um)m(b)s(ers)f(tak)m(e)i(the)f (form)g([)p Fr(base)5 b Ft(#)p Fu(])p Fr(n)p Fu(,)30 -b(where)f(the)i(optional)g Fr(base)150 2476 y Fu(is)e(a)h(decimal)g(n)m +b(where)f(the)i(optional)g Fr(base)150 2470 y Fu(is)e(a)h(decimal)g(n)m (um)m(b)s(er)e(b)s(et)m(w)m(een)h(2)h(and)e(64)i(represen)m(ting)g(the) f(arithmetic)i(base,)e(and)g Fr(n)g Fu(is)g(a)g(n)m(um)m(b)s(er)150 -2585 y(in)c(that)g(base.)39 b(If)25 b Fr(base)5 b Ft(#)24 +2580 y(in)c(that)g(base.)39 b(If)25 b Fr(base)5 b Ft(#)24 b Fu(is)h(omitted,)j(then)c(base)h(10)h(is)f(used.)38 b(When)25 b(sp)s(ecifying)f Fr(n)p Fu(,)i(the)f(digits)h(greater)150 -2695 y(than)33 b(9)h(are)g(represen)m(ted)g(b)m(y)f(the)h(lo)m(w)m +2689 y(than)33 b(9)h(are)g(represen)m(ted)g(b)m(y)f(the)h(lo)m(w)m (ercase)i(letters,)g(the)d(upp)s(ercase)g(letters,)j(`)p Ft(@)p Fu(',)e(and)f(`)p Ft(_)p Fu(',)i(in)e(that)150 -2804 y(order.)69 b(If)39 b Fr(base)45 b Fu(is)40 b(less)g(than)g(or)f +2799 y(order.)69 b(If)39 b Fr(base)45 b Fu(is)40 b(less)g(than)g(or)f (equal)i(to)f(36,)k(lo)m(w)m(ercase)e(and)d(upp)s(ercase)g(letters)i -(ma)m(y)g(b)s(e)e(used)150 2914 y(in)m(terc)m(hangeably)32 +(ma)m(y)g(b)s(e)e(used)150 2909 y(in)m(terc)m(hangeably)32 b(to)f(represen)m(t)g(n)m(um)m(b)s(ers)e(b)s(et)m(w)m(een)i(10)g(and)f -(35.)275 3042 y(Op)s(erators)44 b(are)h(ev)-5 b(aluated)46 +(35.)275 3036 y(Op)s(erators)44 b(are)h(ev)-5 b(aluated)46 b(in)f(order)f(of)h(precedence.)85 b(Sub-expressions)44 -b(in)g(paren)m(theses)i(are)150 3152 y(ev)-5 b(aluated)32 +b(in)g(paren)m(theses)i(are)150 3146 y(ev)-5 b(aluated)32 b(\014rst)d(and)h(ma)m(y)h(o)m(v)m(erride)g(the)g(precedence)g(rules)f -(ab)s(o)m(v)m(e.)150 3371 y Fs(6.6)68 b(Aliases)150 3531 +(ab)s(o)m(v)m(e.)150 3373 y Fs(6.6)68 b(Aliases)150 3532 y Fr(Aliases)41 b Fu(allo)m(w)d(a)f(string)f(to)h(b)s(e)f(substituted)g (for)g(a)g(w)m(ord)g(when)g(it)h(is)f(used)f(as)i(the)g(\014rst)e(w)m -(ord)h(of)h(a)150 3640 y(simple)32 b(command.)45 b(The)31 +(ord)h(of)h(a)150 3642 y(simple)32 b(command.)45 b(The)31 b(shell)i(main)m(tains)f(a)h(list)f(of)g(aliases)i(that)e(ma)m(y)h(b)s -(e)e(set)h(and)g(unset)f(with)h(the)150 3750 y Ft(alias)d -Fu(and)h Ft(unalias)e Fu(builtin)i(commands.)275 3878 +(e)e(set)h(and)g(unset)f(with)h(the)150 3752 y Ft(alias)d +Fu(and)h Ft(unalias)e Fu(builtin)i(commands.)275 3879 y(The)f(\014rst)f(w)m(ord)i(of)f(eac)m(h)i(simple)f(command,)g(if)f (unquoted,)g(is)h(c)m(hec)m(k)m(ed)h(to)g(see)f(if)g(it)g(has)f(an)g -(alias.)150 3988 y(If)24 b(so,)i(that)g(w)m(ord)e(is)h(replaced)g(b)m +(alias.)150 3989 y(If)24 b(so,)i(that)g(w)m(ord)e(is)h(replaced)g(b)m (y)f(the)h(text)h(of)e(the)h(alias.)40 b(The)24 b(c)m(haracters)i(`)p Ft(/)p Fu(',)h(`)p Ft($)p Fu(',)f(`)p Ft(`)p Fu(',)g(`)p -Ft(=)p Fu(')f(and)f(an)m(y)h(of)150 4097 y(the)e(shell)g(metac)m +Ft(=)p Fu(')f(and)f(an)m(y)h(of)150 4098 y(the)e(shell)g(metac)m (haracters)i(or)e(quoting)g(c)m(haracters)h(listed)g(ab)s(o)m(v)m(e)g (ma)m(y)f(not)g(app)s(ear)f(in)h(an)g(alias)h(name.)150 -4207 y(The)e(replacemen)m(t)h(text)g(ma)m(y)g(con)m(tain)h(an)m(y)e(v) +4208 y(The)e(replacemen)m(t)h(text)g(ma)m(y)g(con)m(tain)h(an)m(y)e(v) -5 b(alid)23 b(shell)f(input,)h(including)f(shell)g(metac)m(haracters.) -40 b(The)150 4317 y(\014rst)35 b(w)m(ord)g(of)h(the)g(replacemen)m(t)i +40 b(The)150 4318 y(\014rst)35 b(w)m(ord)g(of)h(the)g(replacemen)m(t)i (text)e(is)g(tested)h(for)e(aliases,)k(but)c(a)h(w)m(ord)g(that)g(is)g -(iden)m(tical)i(to)e(an)150 4426 y(alias)c(b)s(eing)f(expanded)f(is)h +(iden)m(tical)i(to)e(an)150 4427 y(alias)c(b)s(eing)f(expanded)f(is)h (not)g(expanded)f(a)h(second)g(time.)43 b(This)30 b(means)h(that)g(one) -g(ma)m(y)h(alias)g Ft(ls)e Fu(to)150 4536 y Ft("ls)f(-F")p +g(ma)m(y)h(alias)g Ft(ls)e Fu(to)150 4537 y Ft("ls)f(-F")p Fu(,)f(for)f(instance,)i(and)d(Bash)i(do)s(es)f(not)h(try)f(to)h (recursiv)m(ely)g(expand)e(the)i(replacemen)m(t)h(text.)40 -b(If)150 4645 y(the)31 b(last)h(c)m(haracter)h(of)e(the)h(alias)g(v)-5 +b(If)150 4646 y(the)31 b(last)h(c)m(haracter)h(of)e(the)h(alias)g(v)-5 b(alue)31 b(is)h(a)f Fr(blank)p Fu(,)g(then)g(the)g(next)h(command)e(w) -m(ord)h(follo)m(wing)i(the)150 4755 y(alias)f(is)e(also)h(c)m(hec)m(k)m -(ed)i(for)d(alias)h(expansion.)275 4883 y(Aliases)e(are)f(created)i +m(ord)h(follo)m(wing)i(the)150 4756 y(alias)f(is)e(also)h(c)m(hec)m(k)m +(ed)i(for)d(alias)h(expansion.)275 4884 y(Aliases)e(are)f(created)i (and)d(listed)i(with)f(the)g Ft(alias)f Fu(command,)h(and)g(remo)m(v)m (ed)h(with)f(the)g Ft(unalias)150 4993 y Fu(command.)275 5121 y(There)44 b(is)h(no)g(mec)m(hanism)g(for)f(using)h(argumen)m(ts)g @@ -14482,72 +14518,72 @@ m(e,)j(unless)c(the)h Ft(expand_aliases)150 408 y Fu(shell)e(option)f (concerning)h(the)f(de\014nition)g(and)g(use)g(of)g(aliases)i(are)e (somewhat)h(confusing.)67 b(Bash)150 650 y(alw)m(a)m(ys)33 b(reads)f(at)g(least)i(one)e(complete)h(line)f(of)g(input)f(b)s(efore)g -(executing)i(an)m(y)g(of)f(the)g(commands)f(on)150 760 +(executing)i(an)m(y)g(of)f(the)g(commands)f(on)150 759 y(that)22 b(line.)39 b(Aliases)23 b(are)f(expanded)f(when)g(a)h (command)g(is)f(read,)j(not)e(when)f(it)h(is)g(executed.)39 b(Therefore,)150 869 y(an)24 b(alias)i(de\014nition)e(app)s(earing)g (on)g(the)h(same)g(line)f(as)h(another)g(command)f(do)s(es)g(not)h(tak) -m(e)h(e\013ect)g(un)m(til)150 979 y(the)k(next)f(line)h(of)g(input)f +m(e)h(e\013ect)g(un)m(til)150 978 y(the)k(next)f(line)h(of)g(input)f (is)g(read.)40 b(The)29 b(commands)h(follo)m(wing)h(the)e(alias)i (de\014nition)e(on)h(that)g(line)g(are)150 1088 y(not)j(a\013ected)h(b) m(y)f(the)g(new)f(alias.)49 b(This)32 b(b)s(eha)m(vior)h(is)g(also)g (an)g(issue)g(when)e(functions)i(are)g(executed.)150 1198 y(Aliases)c(are)g(expanded)e(when)g(a)i(function)e(de\014nition)h (is)g(read,)h(not)f(when)g(the)g(function)g(is)g(executed,)150 -1308 y(b)s(ecause)36 b(a)h(function)f(de\014nition)f(is)i(itself)g(a)f +1307 y(b)s(ecause)36 b(a)h(function)f(de\014nition)f(is)i(itself)g(a)f (command.)58 b(As)36 b(a)h(consequence,)h(aliases)g(de\014ned)d(in)h(a) 150 1417 y(function)28 b(are)h(not)g(a)m(v)-5 b(ailable)31 b(un)m(til)e(after)g(that)g(function)f(is)g(executed.)41 b(T)-8 b(o)29 b(b)s(e)f(safe,)i(alw)m(a)m(ys)g(put)e(alias)150 -1527 y(de\014nitions)i(on)g(a)h(separate)g(line,)g(and)f(do)g(not)h +1526 y(de\014nitions)i(on)g(a)h(separate)g(line,)g(and)f(do)g(not)h (use)f Ft(alias)f Fu(in)h(comp)s(ound)f(commands.)275 -1659 y(F)-8 b(or)31 b(almost)g(ev)m(ery)g(purp)s(ose,)e(shell)i +1658 y(F)-8 b(or)31 b(almost)g(ev)m(ery)g(purp)s(ose,)e(shell)i (functions)f(are)g(preferred)g(o)m(v)m(er)h(aliases.)150 -1886 y Fs(6.7)68 b(Arra)l(ys)150 2045 y Fu(Bash)33 b(pro)m(vides)g +1893 y Fs(6.7)68 b(Arra)l(ys)150 2052 y Fu(Bash)33 b(pro)m(vides)g (one-dimensional)g(indexed)f(and)h(asso)s(ciativ)m(e)i(arra)m(y)e(v)-5 b(ariables.)49 b(An)m(y)33 b(v)-5 b(ariable)33 b(ma)m(y)150 -2155 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e +2162 y(b)s(e)e(used)h(as)g(an)g(indexed)f(arra)m(y;)j(the)e Ft(declare)e Fu(builtin)h(will)i(explicitly)g(declare)g(an)f(arra)m(y) --8 b(.)46 b(There)32 b(is)150 2265 y(no)h(maxim)m(um)g(limit)h(on)f +-8 b(.)46 b(There)32 b(is)150 2271 y(no)h(maxim)m(um)g(limit)h(on)f (the)g(size)h(of)g(an)f(arra)m(y)-8 b(,)35 b(nor)d(an)m(y)i(requiremen) -m(t)f(that)h(mem)m(b)s(ers)e(b)s(e)g(indexed)150 2374 +m(t)f(that)h(mem)m(b)s(ers)e(b)s(e)g(indexed)150 2381 y(or)26 b(assigned)h(con)m(tiguously)-8 b(.)41 b(Indexed)25 b(arra)m(ys)i(are)f(referenced)g(using)g(in)m(tegers)i(\(including)e -(arithmetic)150 2484 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell) +(arithmetic)150 2490 y(expressions)38 b(\(see)h(Section)g(6.5)h([Shell) e(Arithmetic],)k(page)d(88\)\))h(and)d(are)i(zero-based;)k(asso)s -(ciativ)m(e)150 2593 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59 +(ciativ)m(e)150 2600 y(arra)m(ys)37 b(use)f(arbitrary)g(strings.)59 b(Unless)36 b(otherwise)h(noted,)h(indexed)e(arra)m(y)h(indices)f(m)m -(ust)g(b)s(e)g(non-)150 2703 y(negativ)m(e)d(in)m(tegers.)275 -2835 y(An)26 b(indexed)h(arra)m(y)h(is)f(created)h(automatically)j(if)c +(ust)g(b)s(e)g(non-)150 2710 y(negativ)m(e)d(in)m(tegers.)275 +2841 y(An)26 b(indexed)h(arra)m(y)h(is)f(created)h(automatically)j(if)c (an)m(y)g(v)-5 b(ariable)28 b(is)g(assigned)f(to)h(using)f(the)g(syn)m -(tax)390 2967 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p -Fj(value)150 3099 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g +(tax)390 2973 y Fj(name)p Ft([)p Fj(subscript)p Ft(]=)p +Fj(value)150 3104 y Fu(The)34 b Fr(subscript)h Fu(is)g(treated)g(as)g (an)f(arithmetic)i(expression)e(that)h(m)m(ust)g(ev)-5 b(aluate)36 b(to)f(a)g(n)m(um)m(b)s(er.)51 b(T)-8 b(o)150 -3208 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31 -b(use)390 3340 y Ft(declare)46 b(-a)h Fj(name)150 3472 -y Fu(The)30 b(syn)m(tax)390 3604 y Ft(declare)46 b(-a)h -Fj(name)p Ft([)p Fj(subscript)p Ft(])150 3736 y Fu(is)30 +3214 y(explicitly)32 b(declare)f(an)g(arra)m(y)-8 b(,)31 +b(use)390 3345 y Ft(declare)46 b(-a)h Fj(name)150 3477 +y Fu(The)30 b(syn)m(tax)390 3608 y Ft(declare)46 b(-a)h +Fj(name)p Ft([)p Fj(subscript)p Ft(])150 3740 y Fu(is)30 b(also)i(accepted;)g(the)e Fr(subscript)h Fu(is)g(ignored.)150 -3868 y(Asso)s(ciativ)m(e)i(arra)m(ys)d(are)h(created)h(using)390 -4000 y Ft(declare)46 b(-A)h Fj(name)p Ft(.)275 4132 y +3871 y(Asso)s(ciativ)m(e)i(arra)m(ys)d(are)h(created)h(using)390 +4003 y Ft(declare)46 b(-A)h Fj(name)p Ft(.)275 4134 y Fu(A)m(ttributes)f(ma)m(y)h(b)s(e)e(sp)s(eci\014ed)g(for)h(an)g(arra)m (y)g(v)-5 b(ariable)47 b(using)e(the)h Ft(declare)e Fu(and)h -Ft(readonly)150 4242 y Fu(builtins.)40 b(Eac)m(h)31 b(attribute)g +Ft(readonly)150 4244 y Fu(builtins.)40 b(Eac)m(h)31 b(attribute)g (applies)g(to)g(all)g(mem)m(b)s(ers)f(of)g(an)h(arra)m(y)-8 -b(.)275 4374 y(Arra)m(ys)30 b(are)h(assigned)f(to)h(using)f(comp)s -(ound)f(assignmen)m(ts)i(of)g(the)f(form)390 4506 y Fj(name)p -Ft(=\()p Fj(value1)44 b(value2)j Ft(...)f(\))150 4638 +b(.)275 4376 y(Arra)m(ys)30 b(are)h(assigned)f(to)h(using)f(comp)s +(ound)f(assignmen)m(ts)i(of)g(the)f(form)390 4507 y Fj(name)p +Ft(=\()p Fj(value1)44 b(value2)j Ft(...)f(\))150 4639 y Fu(where)38 b(eac)m(h)i Fr(v)-5 b(alue)44 b Fu(is)39 b(of)g(the)g(form)f Ft([)p Fj(subscript)p Ft(]=)p Fr(string)p Fu(.)63 b(Indexed)37 b(arra)m(y)j(assignmen)m(ts)f(do)g(not)150 -4747 y(require)31 b(an)m(ything)g(but)f Fr(string)p Fu(.)43 +4748 y(require)31 b(an)m(ything)g(but)f Fr(string)p Fu(.)43 b(When)31 b(assigning)g(to)h(indexed)e(arra)m(ys,)i(if)f(the)g -(optional)h(subscript)e(is)150 4857 y(supplied,)i(that)h(index)f(is)h +(optional)h(subscript)e(is)150 4858 y(supplied,)i(that)h(index)f(is)h (assigned)g(to;)h(otherwise)f(the)g(index)f(of)h(the)g(elemen)m(t)h -(assigned)f(is)f(the)h(last)150 4966 y(index)d(assigned)h(to)g(b)m(y)f +(assigned)f(is)f(the)h(last)150 4967 y(index)d(assigned)h(to)g(b)m(y)f (the)g(statemen)m(t)j(plus)c(one.)41 b(Indexing)30 b(starts)h(at)g -(zero.)275 5098 y(When)f(assigning)h(to)g(an)f(asso)s(ciativ)m(e)j +(zero.)275 5099 y(When)f(assigning)h(to)g(an)f(asso)s(ciativ)m(e)j (arra)m(y)-8 b(,)32 b(the)e(subscript)f(is)i(required.)275 5230 y(This)f(syn)m(tax)j(is)e(also)i(accepted)g(b)m(y)f(the)f Ft(declare)f Fu(builtin.)44 b(Individual)31 b(arra)m(y)h(elemen)m(ts)h @@ -14565,93 +14601,93 @@ b(is)h(in)m(terpreted)h(as)f(relativ)m(e)j(to)e(one)f(greater)i(than)e (the)g(maxim)m(um)g(index)g(of)h Fr(name)p Fu(,)j(so)150 518 y(negativ)m(e)30 b(indices)d(coun)m(t)h(bac)m(k)g(from)f(the)g(end) g(of)g(the)h(arra)m(y)-8 b(,)29 b(and)e(an)g(index)g(of)g(-1)h -(references)g(the)f(last)150 628 y(elemen)m(t.)275 778 +(references)g(the)f(last)150 628 y(elemen)m(t.)275 777 y(An)m(y)h(elemen)m(t)h(of)g(an)f(arra)m(y)g(ma)m(y)h(b)s(e)f (referenced)g(using)g Ft(${)p Fj(name)p Ft([)p Fj(subscript)p -Ft(]})p Fu(.)35 b(The)27 b(braces)i(are)150 887 y(required)f(to)j(a)m +Ft(]})p Fu(.)35 b(The)27 b(braces)i(are)150 886 y(required)f(to)j(a)m (v)m(oid)f(con\015icts)g(with)f(the)h(shell's)f(\014lename)h(expansion) f(op)s(erators.)41 b(If)28 b(the)i Fr(subscript)g Fu(is)150 -997 y(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)f(the)h(w)m(ord)f +996 y(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)f(the)h(w)m(ord)f (expands)f(to)i(all)g(mem)m(b)s(ers)e(of)i(the)f(arra)m(y)h Fr(name)p Fu(.)40 b(These)29 b(subscripts)f(di\013er)h(only)150 -1106 y(when)36 b(the)g(w)m(ord)g(app)s(ears)g(within)g(double)g +1105 y(when)36 b(the)g(w)m(ord)g(app)s(ears)g(within)g(double)g (quotes.)60 b(If)36 b(the)h(w)m(ord)f(is)g(double-quoted,)j -Ft(${)p Fj(name)p Ft([*]})150 1216 y Fu(expands)25 b(to)h(a)g(single)h +Ft(${)p Fj(name)p Ft([*]})150 1215 y Fu(expands)25 b(to)h(a)g(single)h (w)m(ord)e(with)g(the)h(v)-5 b(alue)26 b(of)g(eac)m(h)h(arra)m(y)f(mem) m(b)s(er)f(separated)h(b)m(y)g(the)f(\014rst)g(c)m(harac-)150 -1326 y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29 +1324 y(ter)j(of)g(the)h Ft(IFS)e Fu(v)-5 b(ariable,)29 b(and)f Ft(${)p Fj(name)p Ft([@]})d Fu(expands)i(eac)m(h)i(elemen)m(t)h (of)e Fr(name)33 b Fu(to)c(a)f(separate)h(w)m(ord.)150 -1435 y(When)j(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f +1434 y(When)j(there)h(are)f(no)g(arra)m(y)h(mem)m(b)s(ers,)f Ft(${)p Fj(name)p Ft([@]})e Fu(expands)h(to)i(nothing.)47 -b(If)31 b(the)i(double-quoted)150 1545 y(expansion)39 +b(If)31 b(the)i(double-quoted)150 1544 y(expansion)39 b(o)s(ccurs)h(within)f(a)h(w)m(ord,)i(the)d(expansion)h(of)g(the)f -(\014rst)g(parameter)h(is)g(joined)f(with)h(the)150 1654 +(\014rst)g(parameter)h(is)g(joined)f(with)h(the)150 1653 y(b)s(eginning)29 b(part)g(of)h(the)f(original)i(w)m(ord,)e(and)g(the)h (expansion)f(of)h(the)f(last)i(parameter)e(is)h(joined)f(with)150 -1764 y(the)g(last)h(part)f(of)g(the)g(original)h(w)m(ord.)40 +1763 y(the)g(last)h(part)f(of)g(the)g(original)h(w)m(ord.)40 b(This)28 b(is)h(analogous)h(to)f(the)h(expansion)e(of)h(the)g(sp)s -(ecial)h(param-)150 1874 y(eters)g(`)p Ft(@)p Fu(')f(and)g(`)p +(ecial)h(param-)150 1872 y(eters)g(`)p Ft(@)p Fu(')f(and)g(`)p Ft(*)p Fu('.)41 b Ft(${#)p Fj(name)p Ft([)p Fj(subscript)p Ft(]})24 b Fu(expands)k(to)i(the)g(length)g(of)f Ft(${)p Fj(name)p Ft([)p Fj(subscript)p Ft(]})p Fu(.)35 b(If)150 -1983 y Fr(subscript)28 b Fu(is)g(`)p Ft(@)p Fu(')f(or)h(`)p +1982 y Fr(subscript)28 b Fu(is)g(`)p Ft(@)p Fu(')f(or)h(`)p Ft(*)p Fu(',)g(the)g(expansion)f(is)g(the)h(n)m(um)m(b)s(er)e(of)i (elemen)m(ts)g(in)f(the)h(arra)m(y)-8 b(.)41 b(If)27 -b(the)g Fr(subscript)150 2093 y Fu(used)34 b(to)h(reference)g(an)f +b(the)g Fr(subscript)150 2092 y Fu(used)34 b(to)h(reference)g(an)f (elemen)m(t)i(of)f(an)f(indexed)g(arra)m(y)h(ev)-5 b(aluates)36 b(to)f(a)g(n)m(um)m(b)s(er)e(less)i(than)f(zero,)i(it)150 -2202 y(is)c(in)m(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h +2201 y(is)c(in)m(terpreted)h(as)f(relativ)m(e)i(to)f(one)f(greater)h (than)f(the)h(maxim)m(um)f(index)f(of)h(the)h(arra)m(y)-8 -b(,)33 b(so)g(negativ)m(e)150 2312 y(indices)d(coun)m(t)h(bac)m(k)h +b(,)33 b(so)g(negativ)m(e)150 2311 y(indices)d(coun)m(t)h(bac)m(k)h (from)e(the)g(end)g(of)g(the)h(arra)m(y)-8 b(,)31 b(and)f(an)g(index)g (of)h(-1)g(refers)f(to)h(the)g(last)g(elemen)m(t.)275 -2462 y(Referencing)41 b(an)f(arra)m(y)h(v)-5 b(ariable)42 +2460 y(Referencing)41 b(an)f(arra)m(y)h(v)-5 b(ariable)42 b(without)e(a)h(subscript)e(is)i(equiv)-5 b(alen)m(t)42 -b(to)f(referencing)g(with)g(a)150 2571 y(subscript)35 +b(to)f(referencing)g(with)g(a)150 2569 y(subscript)35 b(of)h(0.)57 b(An)m(y)36 b(reference)g(to)h(a)f(v)-5 b(ariable)36 b(using)g(a)g(v)-5 b(alid)36 b(subscript)f(is)h(legal,)j -(and)c Ft(bash)g Fu(will)150 2681 y(create)d(an)e(arra)m(y)h(if)f -(necessary)-8 b(.)275 2831 y(An)35 b(arra)m(y)i(v)-5 +(and)c Ft(bash)g Fu(will)150 2679 y(create)d(an)e(arra)m(y)h(if)f +(necessary)-8 b(.)275 2828 y(An)35 b(arra)m(y)i(v)-5 b(ariable)37 b(is)g(considered)f(set)h(if)f(a)h(subscript)e(has)h(b)s (een)g(assigned)g(a)h(v)-5 b(alue.)59 b(The)36 b(n)m(ull)150 -2941 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)275 -3091 y(It)29 b(is)h(p)s(ossible)f(to)h(obtain)g(the)f(k)m(eys)i +2937 y(string)30 b(is)h(a)g(v)-5 b(alid)30 b(v)-5 b(alue.)275 +3086 y(It)29 b(is)h(p)s(ossible)f(to)h(obtain)g(the)f(k)m(eys)i (\(indices\))f(of)f(an)h(arra)m(y)g(as)f(w)m(ell)i(as)f(the)f(v)-5 b(alues.)41 b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([@])p -Fi(})150 3200 y Fu(and)39 b($)p Fi({)p Fu(!)p Fr(name)5 +Fi(})150 3196 y Fu(and)39 b($)p Fi({)p Fu(!)p Fr(name)5 b Fu([*])p Fi(})43 b Fu(expand)c(to)i(the)f(indices)h(assigned)f(in)g (arra)m(y)g(v)-5 b(ariable)41 b Fr(name)p Fu(.)70 b(The)39 -b(treatmen)m(t)150 3310 y(when)i(in)g(double)g(quotes)h(is)f(similar)h +b(treatmen)m(t)150 3305 y(when)i(in)g(double)g(quotes)h(is)f(similar)h (to)h(the)e(expansion)h(of)f(the)h(sp)s(ecial)g(parameters)g(`)p -Ft(@)p Fu(')g(and)f(`)p Ft(*)p Fu(')150 3419 y(within)30 -b(double)g(quotes.)275 3569 y(The)j Ft(unset)g Fu(builtin)h(is)g(used)g +Ft(@)p Fu(')g(and)f(`)p Ft(*)p Fu(')150 3415 y(within)30 +b(double)g(quotes.)275 3564 y(The)j Ft(unset)g Fu(builtin)h(is)g(used)g (to)h(destro)m(y)g(arra)m(ys.)52 b Ft(unset)29 b Fj(name)p Ft([)p Fj(subscript)p Ft(])h Fu(destro)m(ys)35 b(the)g(ar-)150 -3679 y(ra)m(y)j(elemen)m(t)h(at)g(index)e Fr(subscript)p +3673 y(ra)m(y)j(elemen)m(t)h(at)g(index)e Fr(subscript)p Fu(.)61 b(Negativ)m(e)41 b(subscripts)36 b(to)i(indexed)g(arra)m(ys)g -(are)g(in)m(terpreted)g(as)150 3789 y(describ)s(ed)f(ab)s(o)m(v)m(e.)67 +(are)g(in)m(terpreted)g(as)150 3783 y(describ)s(ed)f(ab)s(o)m(v)m(e.)67 b(Care)38 b(m)m(ust)h(b)s(e)f(tak)m(en)h(to)h(a)m(v)m(oid)g(un)m(w)m (an)m(ted)e(side)h(e\013ects)h(caused)e(b)m(y)h(\014lename)150 -3898 y(expansion.)50 b Ft(unset)29 b Fj(name)p Fu(,)34 +3893 y(expansion.)50 b Ft(unset)29 b Fj(name)p Fu(,)34 b(where)f Fr(name)39 b Fu(is)34 b(an)f(arra)m(y)-8 b(,)36 b(remo)m(v)m(es)f(the)f(en)m(tire)g(arra)m(y)-8 b(.)52 -b(A)33 b(subscript)g(of)150 4008 y(`)p Ft(*)p Fu(')e(or)f(`)p +b(A)33 b(subscript)g(of)150 4002 y(`)p Ft(*)p Fu(')e(or)f(`)p Ft(@)p Fu(')g(also)i(remo)m(v)m(es)f(the)g(en)m(tire)g(arra)m(y)-8 -b(.)275 4158 y(The)20 b Ft(declare)p Fu(,)h Ft(local)p +b(.)275 4151 y(The)20 b Ft(declare)p Fu(,)h Ft(local)p Fu(,)h(and)e Ft(readonly)f Fu(builtins)h(eac)m(h)i(accept)g(a)g Ft(-a)e Fu(option)h(to)h(sp)s(ecify)f(an)f(indexed)150 -4267 y(arra)m(y)28 b(and)f(a)h Ft(-A)e Fu(option)i(to)g(sp)s(ecify)f +4261 y(arra)m(y)28 b(and)f(a)h Ft(-A)e Fu(option)i(to)g(sp)s(ecify)f (an)h(asso)s(ciativ)m(e)i(arra)m(y)-8 b(.)40 b(If)27 b(b)s(oth)g(options)h(are)g(supplied,)f Ft(-A)f Fu(tak)m(es)150 -4377 y(precedence.)55 b(The)35 b Ft(read)f Fu(builtin)h(accepts)h(a)g +4370 y(precedence.)55 b(The)35 b Ft(read)f Fu(builtin)h(accepts)h(a)g Ft(-a)e Fu(option)i(to)g(assign)f(a)g(list)h(of)f(w)m(ords)g(read)g -(from)g(the)150 4487 y(standard)h(input)g(to)i(an)f(arra)m(y)-8 +(from)g(the)150 4480 y(standard)h(input)g(to)i(an)f(arra)m(y)-8 b(,)40 b(and)c(can)h(read)g(v)-5 b(alues)38 b(from)e(the)h(standard)g -(input)f(in)m(to)i(individual)150 4596 y(arra)m(y)f(elemen)m(ts.)62 +(input)f(in)m(to)i(individual)150 4589 y(arra)m(y)f(elemen)m(ts.)62 b(The)36 b Ft(set)g Fu(and)h Ft(declare)d Fu(builtins)j(displa)m(y)g (arra)m(y)g(v)-5 b(alues)37 b(in)g(a)g(w)m(a)m(y)h(that)g(allo)m(ws)150 -4706 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)150 +4699 y(them)30 b(to)h(b)s(e)f(reused)g(as)g(input.)150 4961 y Fs(6.8)68 b(The)45 b(Directory)g(Stac)l(k)150 5121 y Fu(The)21 b(directory)h(stac)m(k)h(is)e(a)h(list)g(of)f(recen)m (tly-visited)j(directories.)39 b(The)20 b Ft(pushd)g @@ -14736,53 +14772,53 @@ Fj(N)384 b Fu(Brings)29 b(the)f Fr(N)10 b Fu(th)29 b(directory)g (\(coun)m(ting)h(from)e(the)g(left)i(of)e(the)h(list)g(prin)m(ted)1110 408 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the)f (top)g(of)h(the)f(list)h(b)m(y)f(rotating)i(the)1110 -518 y(stac)m(k.)630 683 y Ft(-)p Fj(N)384 b Fu(Brings)23 +518 y(stac)m(k.)630 682 y Ft(-)p Fj(N)384 b Fu(Brings)23 b(the)g Fr(N)10 b Fu(th)23 b(directory)h(\(coun)m(ting)g(from)e(the)i (righ)m(t)f(of)g(the)h(list)f(prin)m(ted)1110 792 y(b)m(y)34 b Ft(dirs)p Fu(,)g(starting)h(with)f(zero\))i(to)f(the)f(top)g(of)h (the)f(list)h(b)m(y)f(rotating)i(the)1110 902 y(stac)m(k.)630 -1067 y Fj(dir)336 b Fu(Mak)m(es)28 b Fr(dir)33 b Fu(b)s(e)27 +1066 y Fj(dir)336 b Fu(Mak)m(es)28 b Fr(dir)33 b Fu(b)s(e)27 b(the)g(top)g(of)g(the)h(stac)m(k,)h(making)e(it)h(the)f(new)g(curren)m -(t)g(direc-)1110 1176 y(tory)k(as)f(if)h(it)g(had)e(b)s(een)h(supplied) +(t)g(direc-)1110 1175 y(tory)k(as)f(if)h(it)g(had)e(b)s(een)h(supplied) f(as)i(an)f(argumen)m(t)h(to)g(the)f Ft(cd)g Fu(builtin.)150 -1417 y Fs(6.9)68 b(Con)l(trolling)47 b(the)e(Prompt)150 -1576 y Fu(The)24 b(v)-5 b(alue)24 b(of)h(the)f(v)-5 b(ariable)25 +1424 y Fs(6.9)68 b(Con)l(trolling)47 b(the)e(Prompt)150 +1583 y Fu(The)24 b(v)-5 b(alue)24 b(of)h(the)f(v)-5 b(ariable)25 b Ft(PROMPT_COMMAND)20 b Fu(is)25 b(examined)f(just)g(b)s(efore)f(Bash) -i(prin)m(ts)e(eac)m(h)j(primary)150 1686 y(prompt.)39 +i(prin)m(ts)e(eac)m(h)j(primary)150 1693 y(prompt.)39 b(If)28 b Ft(PROMPT_COMMAND)d Fu(is)j(set)h(and)f(has)g(a)h(non-n)m (ull)f(v)-5 b(alue,)29 b(then)f(the)h(v)-5 b(alue)29 -b(is)f(executed)i(just)150 1795 y(as)h(if)f(it)h(had)f(b)s(een)f(t)m -(yp)s(ed)h(on)h(the)f(command)g(line.)275 1935 y(In)d(addition,)j(the)f +b(is)f(executed)i(just)150 1802 y(as)h(if)f(it)h(had)f(b)s(een)f(t)m +(yp)s(ed)h(on)h(the)f(command)g(line.)275 1942 y(In)d(addition,)j(the)f (follo)m(wing)h(table)f(describ)s(es)f(the)h(sp)s(ecial)g(c)m (haracters)h(whic)m(h)f(can)f(app)s(ear)g(in)h(the)150 -2044 y(prompt)g(v)-5 b(ariables)32 b Ft(PS1)d Fu(to)i -Ft(PS4)p Fu(:)150 2212 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m -(haracter.)150 2376 y Ft(\\d)384 b Fu(The)30 b(date,)h(in)f +2051 y(prompt)g(v)-5 b(ariables)32 b Ft(PS1)d Fu(to)i +Ft(PS4)p Fu(:)150 2218 y Ft(\\a)384 b Fu(A)30 b(b)s(ell)h(c)m +(haracter.)150 2382 y Ft(\\d)384 b Fu(The)30 b(date,)h(in)f Ft(")p Fu(W)-8 b(eekda)m(y)32 b(Mon)m(th)f(Date)p Ft(")h Fu(format)f(\(e.g.,)h Ft(")p Fu(T)-8 b(ue)30 b(Ma)m(y)h(26)p -Ft(")p Fu(\).)150 2541 y Ft(\\D{)p Fj(format)p Ft(})630 -2651 y Fu(The)c Fr(format)i Fu(is)f(passed)e(to)i Ft(strftime)p +Ft(")p Fu(\).)150 2547 y Ft(\\D{)p Fj(format)p Ft(})630 +2656 y Fu(The)c Fr(format)i Fu(is)f(passed)e(to)i Ft(strftime)p Fu(\(3\))f(and)f(the)i(result)f(is)g(inserted)g(in)m(to)h(the)g(prompt) -630 2760 y(string;)42 b(an)d(empt)m(y)f Fr(format)j Fu(results)d(in)g +630 2766 y(string;)42 b(an)d(empt)m(y)f Fr(format)j Fu(results)d(in)g (a)h(lo)s(cale-sp)s(eci\014c)h(time)f(represen)m(tation.)65 -b(The)630 2870 y(braces)31 b(are)f(required.)150 3035 +b(The)630 2875 y(braces)31 b(are)f(required.)150 3040 y Ft(\\e)384 b Fu(An)30 b(escap)s(e)h(c)m(haracter.)150 -3199 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e -(`.'.)150 3364 y Ft(\\H)384 b Fu(The)30 b(hostname.)150 -3529 y Ft(\\j)384 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(jobs)g(curren)m -(tly)h(managed)g(b)m(y)f(the)g(shell.)150 3693 y Ft(\\l)384 +3204 y Ft(\\h)384 b Fu(The)30 b(hostname,)h(up)e(to)i(the)g(\014rst)e +(`.'.)150 3368 y Ft(\\H)384 b Fu(The)30 b(hostname.)150 +3533 y Ft(\\j)384 b Fu(The)30 b(n)m(um)m(b)s(er)f(of)h(jobs)g(curren)m +(tly)h(managed)g(b)m(y)f(the)g(shell.)150 3697 y Ft(\\l)384 b Fu(The)30 b(basename)h(of)f(the)h(shell's)f(terminal)h(device)g -(name.)150 3858 y Ft(\\n)384 b Fu(A)30 b(newline.)150 -4023 y Ft(\\r)384 b Fu(A)30 b(carriage)i(return.)150 -4187 y Ft(\\s)384 b Fu(The)22 b(name)g(of)h(the)f(shell,)i(the)f +(name.)150 3861 y Ft(\\n)384 b Fu(A)30 b(newline.)150 +4025 y Ft(\\r)384 b Fu(A)30 b(carriage)i(return.)150 +4190 y Ft(\\s)384 b Fu(The)22 b(name)g(of)h(the)f(shell,)i(the)f (basename)f(of)h Ft($0)f Fu(\(the)g(p)s(ortion)g(follo)m(wing)i(the)f -(\014nal)e(slash\).)150 4352 y Ft(\\t)384 b Fu(The)30 -b(time,)h(in)f(24-hour)h(HH:MM:SS)g(format.)150 4517 +(\014nal)e(slash\).)150 4354 y Ft(\\t)384 b Fu(The)30 +b(time,)h(in)f(24-hour)h(HH:MM:SS)g(format.)150 4518 y Ft(\\T)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(HH:MM:SS)g(format.) -150 4681 y Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(am/pm)f -(format.)150 4846 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f(24-hour)h +150 4683 y Ft(\\@)384 b Fu(The)30 b(time,)h(in)f(12-hour)h(am/pm)f +(format.)150 4847 y Ft(\\A)384 b Fu(The)30 b(time,)h(in)f(24-hour)h (HH:MM)g(format.)150 5011 y Ft(\\u)384 b Fu(The)30 b(username)g(of)g -(the)h(curren)m(t)f(user.)150 5175 y Ft(\\v)384 b Fu(The)30 +(the)h(curren)m(t)f(user.)150 5176 y Ft(\\v)384 b Fu(The)30 b(v)m(ersion)h(of)f(Bash)h(\(e.g.,)h(2.00\))150 5340 y Ft(\\V)384 b Fu(The)30 b(release)i(of)e(Bash,)h(v)m(ersion)g Ft(+)f Fu(patc)m(hlev)m(el)i(\(e.g.,)h(2.00.0\))p eop @@ -14793,70 +14829,70 @@ b(Bash)30 b(F)-8 b(eatures)2484 b(94)150 299 y Ft(\\w)384 b Fu(The)34 b(curren)m(t)h(w)m(orking)g(directory)-8 b(,)37 b(with)e Ft($HOME)e Fu(abbreviated)j(with)e(a)h(tilde)h(\(uses)f (the)630 408 y Ft($PROMPT_DIRTRIM)26 b Fu(v)-5 b(ariable\).)150 -569 y Ft(\\W)384 b Fu(The)30 b(basename)h(of)f Ft($PWD)p +568 y Ft(\\W)384 b Fu(The)30 b(basename)h(of)f Ft($PWD)p Fu(,)g(with)g Ft($HOME)f Fu(abbreviated)h(with)g(a)h(tilde.)150 -729 y Ft(\\!)384 b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f -(command.)150 889 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m(b)s(er) -f(of)i(this)f(command.)150 1050 y Ft(\\$)384 b Fu(If)30 +728 y Ft(\\!)384 b Fu(The)30 b(history)g(n)m(um)m(b)s(er)f(of)i(this)f +(command.)150 888 y Ft(\\#)384 b Fu(The)30 b(command)g(n)m(um)m(b)s(er) +f(of)i(this)f(command.)150 1048 y Ft(\\$)384 b Fu(If)30 b(the)g(e\013ectiv)m(e)j(uid)d(is)g(0,)h Ft(#)p Fu(,)g(otherwise)g -Ft($)p Fu(.)150 1210 y Ft(\\)p Fj(nnn)288 b Fu(The)30 +Ft($)p Fu(.)150 1208 y Ft(\\)p Fj(nnn)288 b Fu(The)30 b(c)m(haracter)i(whose)e(ASCI)s(I)f(co)s(de)h(is)h(the)f(o)s(ctal)i(v) --5 b(alue)31 b Fr(nnn)p Fu(.)150 1370 y Ft(\\\\)384 b -Fu(A)30 b(bac)m(kslash.)150 1530 y Ft(\\[)384 b Fu(Begin)38 +-5 b(alue)31 b Fr(nnn)p Fu(.)150 1368 y Ft(\\\\)384 b +Fu(A)30 b(bac)m(kslash.)150 1527 y Ft(\\[)384 b Fu(Begin)38 b(a)f(sequence)g(of)g(non-prin)m(ting)g(c)m(haracters.)61 b(This)36 b(could)h(b)s(e)g(used)f(to)h(em)m(b)s(ed)g(a)630 -1640 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e(prompt.) -150 1800 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f(non-prin)m -(ting)g(c)m(haracters.)275 1961 y(The)25 b(command)h(n)m(um)m(b)s(er)f +1637 y(terminal)31 b(con)m(trol)h(sequence)e(in)m(to)i(the)e(prompt.) +150 1797 y Ft(\\])384 b Fu(End)29 b(a)i(sequence)g(of)f(non-prin)m +(ting)g(c)m(haracters.)275 1957 y(The)25 b(command)h(n)m(um)m(b)s(er)f (and)h(the)g(history)g(n)m(um)m(b)s(er)f(are)i(usually)f(di\013eren)m -(t:)39 b(the)26 b(history)g(n)m(um)m(b)s(er)150 2071 +(t:)39 b(the)26 b(history)g(n)m(um)m(b)s(er)150 2066 y(of)h(a)f(command)h(is)f(its)h(p)s(osition)f(in)g(the)h(history)f (list,)i(whic)m(h)f(ma)m(y)g(include)f(commands)g(restored)g(from)150 -2180 y(the)39 b(history)h(\014le)f(\(see)h(Section)g(9.1)h([Bash)e +2176 y(the)39 b(history)h(\014le)f(\(see)h(Section)g(9.1)h([Bash)e (History)h(F)-8 b(acilities],)45 b(page)40 b(136\),)j(while)d(the)f -(command)150 2290 y(n)m(um)m(b)s(er)j(is)h(the)h(p)s(osition)f(in)g +(command)150 2286 y(n)m(um)m(b)s(er)j(is)h(the)h(p)s(osition)f(in)g (the)g(sequence)h(of)f(commands)g(executed)h(during)e(the)i(curren)m(t) -f(shell)150 2399 y(session.)275 2535 y(After)35 b(the)g(string)g(is)g +f(shell)150 2395 y(session.)275 2530 y(After)35 b(the)g(string)g(is)g (deco)s(ded,)h(it)f(is)g(expanded)f(via)i(parameter)f(expansion,)i -(command)d(substi-)150 2644 y(tution,)k(arithmetic)f(expansion,)g(and)e +(command)d(substi-)150 2640 y(tution,)k(arithmetic)f(expansion,)g(and)e (quote)h(remo)m(v)-5 b(al,)39 b(sub)5 b(ject)35 b(to)i(the)f(v)-5 -b(alue)36 b(of)g(the)g Ft(promptvars)150 2754 y Fu(shell)31 +b(alue)36 b(of)g(the)g Ft(promptvars)150 2749 y Fu(shell)31 b(option)f(\(see)i(Section)f(4.2)g([Bash)g(Builtins],)g(page)g(48\).) -150 2988 y Fs(6.10)68 b(The)45 b(Restricted)h(Shell)150 -3147 y Fu(If)34 b(Bash)g(is)g(started)g(with)g(the)g(name)h +150 2991 y Fs(6.10)68 b(The)45 b(Restricted)h(Shell)150 +3150 y Fu(If)34 b(Bash)g(is)g(started)g(with)g(the)g(name)h Ft(rbash)p Fu(,)e(or)h(the)h Ft(--restricted)30 b Fu(or)k -Ft(-r)g Fu(option)g(is)g(supplied)f(at)150 3257 y(in)m(v)m(o)s(cation,) +Ft(-r)g Fu(option)g(is)g(supplied)f(at)150 3260 y(in)m(v)m(o)s(cation,) d(the)d(shell)g(b)s(ecomes)h(restricted.)40 b(A)27 b(restricted)h (shell)f(is)g(used)f(to)i(set)f(up)f(an)h(en)m(vironmen)m(t)150 -3366 y(more)g(con)m(trolled)i(than)e(the)g(standard)g(shell.)40 +3369 y(more)g(con)m(trolled)i(than)e(the)g(standard)g(shell.)40 b(A)27 b(restricted)h(shell)f(b)s(eha)m(v)m(es)h(iden)m(tically)h(to)f -Ft(bash)e Fu(with)150 3476 y(the)31 b(exception)g(that)g(the)g(follo)m +Ft(bash)e Fu(with)150 3479 y(the)31 b(exception)g(that)g(the)g(follo)m (wing)h(are)e(disallo)m(w)m(ed)i(or)e(not)h(p)s(erformed:)225 -3611 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g(the)f -Ft(cd)g Fu(builtin.)225 3746 y Fq(\017)60 b Fu(Setting)31 +3614 y Fq(\017)60 b Fu(Changing)30 b(directories)h(with)g(the)f +Ft(cd)g Fu(builtin.)225 3749 y Fq(\017)60 b Fu(Setting)31 b(or)f(unsetting)h(the)g(v)-5 b(alues)30 b(of)h(the)f Ft(SHELL)p Fu(,)g Ft(PATH)p Fu(,)f Ft(ENV)p Fu(,)h(or)g -Ft(BASH_ENV)e Fu(v)-5 b(ariables.)225 3881 y Fq(\017)60 +Ft(BASH_ENV)e Fu(v)-5 b(ariables.)225 3883 y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(command)g(names)g(con)m(taining)i(slashes.)225 -4016 y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(a)h(\014lename)f(con)m +4018 y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(a)h(\014lename)f(con)m (taining)i(a)f(slash)f(as)h(an)f(argumen)m(t)h(to)g(the)f -Ft(.)h Fu(builtin)e(command.)225 4151 y Fq(\017)60 b +Ft(.)h Fu(builtin)e(command.)225 4153 y Fq(\017)60 b Fu(Sp)s(ecifying)32 b(a)g(\014lename)h(con)m(taining)h(a)e(slash)g(as)h (an)f(argumen)m(t)h(to)g(the)f Ft(-p)g Fu(option)h(to)g(the)f -Ft(hash)330 4261 y Fu(builtin)e(command.)225 4395 y Fq(\017)60 +Ft(hash)330 4262 y Fu(builtin)e(command.)225 4397 y Fq(\017)60 b Fu(Imp)s(orting)30 b(function)g(de\014nitions)g(from)f(the)i(shell)g -(en)m(vironmen)m(t)g(at)g(startup.)225 4530 y Fq(\017)60 +(en)m(vironmen)m(t)g(at)g(startup.)225 4532 y Fq(\017)60 b Fu(P)m(arsing)31 b(the)f(v)-5 b(alue)31 b(of)g Ft(SHELLOPTS)d Fu(from)h(the)i(shell)g(en)m(vironmen)m(t)g(at)g(startup.)225 -4665 y Fq(\017)60 b Fu(Redirecting)31 b(output)f(using)g(the)h(`)p +4666 y Fq(\017)60 b Fu(Redirecting)31 b(output)f(using)g(the)h(`)p Ft(>)p Fu(',)g(`)p Ft(>|)p Fu(',)f(`)p Ft(<>)p Fu(',)h(`)p Ft(>&)p Fu(',)f(`)p Ft(&>)p Fu(',)h(and)e(`)p Ft(>>)p -Fu(')i(redirection)g(op)s(erators.)225 4800 y Fq(\017)60 +Fu(')i(redirection)g(op)s(erators.)225 4801 y Fq(\017)60 b Fu(Using)31 b(the)f Ft(exec)f Fu(builtin)h(to)h(replace)h(the)e -(shell)h(with)f(another)h(command.)225 4935 y Fq(\017)60 +(shell)h(with)f(another)h(command.)225 4936 y Fq(\017)60 b Fu(Adding)24 b(or)g(deleting)i(builtin)e(commands)g(with)h(the)f Ft(-f)g Fu(and)g Ft(-d)g Fu(options)h(to)h(the)e Ft(enable)f -Fu(builtin.)225 5070 y Fq(\017)60 b Fu(Using)31 b(the)f +Fu(builtin.)225 5071 y Fq(\017)60 b Fu(Using)31 b(the)f Ft(enable)f Fu(builtin)h(command)g(to)h(enable)g(disabled)f(shell)g (builtins.)225 5205 y Fq(\017)60 b Fu(Sp)s(ecifying)30 b(the)g Ft(-p)g Fu(option)h(to)g(the)g Ft(command)d Fu(builtin.)225 @@ -14867,341 +14903,346 @@ Fu('.)p eop end TeXDict begin 95 100 bop 150 -116 a Fu(Chapter)30 b(6:)41 b(Bash)30 b(F)-8 b(eatures)2484 b(95)275 299 y(These)30 b(restrictions)h(are)g(enforced)f(after)h(an)m(y)g(startup)f(\014les)g -(are)h(read.)275 433 y(When)j(a)i(command)e(that)i(is)f(found)f(to)h(b) +(are)h(read.)275 427 y(When)j(a)i(command)e(that)i(is)f(found)f(to)h(b) s(e)g(a)g(shell)g(script)g(is)g(executed)h(\(see)g(Section)g(3.8)g -([Shell)150 542 y(Scripts],)25 b(page)e(40\),)j Ft(rbash)c +([Shell)150 537 y(Scripts],)25 b(page)e(40\),)j Ft(rbash)c Fu(turns)g(o\013)i(an)m(y)f(restrictions)h(in)f(the)g(shell)h(spa)m -(wned)e(to)i(execute)g(the)g(script.)150 774 y Fs(6.11)68 -b(Bash)45 b(POSIX)f(Mo)t(de)150 933 y Fu(Starting)39 +(wned)e(to)i(execute)g(the)g(script.)150 766 y Fs(6.11)68 +b(Bash)45 b(POSIX)f(Mo)t(de)150 925 y Fu(Starting)39 b(Bash)f(with)g(the)h Ft(--posix)d Fu(command-line)j(option)g(or)f (executing)h(`)p Ft(set)30 b(-o)g(posix)p Fu(')37 b(while)150 -1043 y(Bash)26 b(is)g(running)e(will)j(cause)f(Bash)g(to)h(conform)f +1035 y(Bash)26 b(is)g(running)e(will)j(cause)f(Bash)g(to)h(conform)f (more)g(closely)h(to)g(the)f Fm(posix)f Fu(standard)g(b)m(y)h(c)m -(hanging)150 1152 y(the)31 b(b)s(eha)m(vior)f(to)h(matc)m(h)g(that)g +(hanging)150 1144 y(the)31 b(b)s(eha)m(vior)f(to)h(matc)m(h)g(that)g (sp)s(eci\014ed)f(b)m(y)g Fm(posix)g Fu(in)g(areas)h(where)f(the)h -(Bash)f(default)h(di\013ers.)275 1286 y(When)f(in)m(v)m(ok)m(ed)h(as)g +(Bash)f(default)h(di\013ers.)275 1273 y(When)f(in)m(v)m(ok)m(ed)h(as)g Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g Fm(posix)e Fu(mo)s(de)h(after)h -(reading)g(the)f(startup)g(\014les.)275 1420 y(The)f(follo)m(wing)j +(reading)g(the)f(startup)g(\014les.)275 1401 y(The)f(follo)m(wing)j (list)f(is)g(what's)f(c)m(hanged)h(when)e(`)p Fm(posix)h -Fu(mo)s(de')h(is)f(in)g(e\013ect:)199 1554 y(1.)61 b(When)28 +Fu(mo)s(de')h(is)f(in)g(e\013ect:)199 1530 y(1.)61 b(When)28 b(a)i(command)e(in)g(the)h(hash)f(table)i(no)e(longer)h(exists,)h(Bash) f(will)g(re-searc)m(h)h Ft($PATH)d Fu(to)i(\014nd)330 -1663 y(the)i(new)e(lo)s(cation.)43 b(This)29 b(is)i(also)g(a)m(v)-5 +1640 y(the)i(new)e(lo)s(cation.)43 b(This)29 b(is)i(also)g(a)m(v)-5 b(ailable)33 b(with)d(`)p Ft(shopt)f(-s)h(checkhash)p -Fu('.)199 1797 y(2.)61 b(The)42 b(message)h(prin)m(ted)e(b)m(y)h(the)g +Fu('.)199 1768 y(2.)61 b(The)42 b(message)h(prin)m(ted)e(b)m(y)h(the)g (job)g(con)m(trol)i(co)s(de)e(and)f(builtins)h(when)f(a)h(job)g(exits)h -(with)f(a)330 1907 y(non-zero)31 b(status)g(is)f(`Done\(status\)'.)199 -2041 y(3.)61 b(The)40 b(message)h(prin)m(ted)f(b)m(y)g(the)h(job)f(con) +(with)f(a)330 1878 y(non-zero)31 b(status)g(is)f(`Done\(status\)'.)199 +2006 y(3.)61 b(The)40 b(message)h(prin)m(ted)f(b)m(y)g(the)h(job)f(con) m(trol)h(co)s(de)g(and)f(builtins)f(when)h(a)g(job)g(is)h(stopp)s(ed)e -(is)330 2150 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31 +(is)330 2116 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31 b(where)f Fr(signame)36 b Fu(is,)31 b(for)f(example,)h -Ft(SIGTSTP)p Fu(.)199 2284 y(4.)61 b(The)27 b Ft(bg)g -Fu(builtin)g(uses)g(the)h(required)f(format)h(to)g(describ)s(e)f(eac)m -(h)i(job)e(placed)h(in)f(the)h(bac)m(kground,)330 2394 -y(whic)m(h)h(do)s(es)g(not)g(include)g(an)g(indication)h(of)f(whether)f -(the)h(job)g(is)g(the)h(curren)m(t)e(or)h(previous)g(job.)199 -2528 y(5.)61 b(Reserv)m(ed)40 b(w)m(ords)g(app)s(earing)f(in)h(a)g(con) +Ft(SIGTSTP)p Fu(.)199 2244 y(4.)61 b(Alias)31 b(expansion)g(is)f(alw)m +(a)m(ys)i(enabled,)e(ev)m(en)i(in)e(non-in)m(teractiv)m(e)j(shells.)199 +2373 y(5.)61 b(Reserv)m(ed)40 b(w)m(ords)g(app)s(earing)f(in)h(a)g(con) m(text)i(where)d(reserv)m(ed)h(w)m(ords)f(are)i(recognized)g(do)f(not) -330 2637 y(undergo)30 b(alias)h(expansion.)199 2771 y(6.)61 +330 2483 y(undergo)30 b(alias)h(expansion.)199 2611 y(6.)61 b(The)38 b Fm(posix)h Ft(PS1)f Fu(and)g Ft(PS2)g Fu(expansions)g(of)i (`)p Ft(!)p Fu(')f(to)g(the)g(history)g(n)m(um)m(b)s(er)f(and)g(`)p -Ft(!!)p Fu(')h(to)g(`)p Ft(!)p Fu(')h(are)330 2881 y(enabled,)26 +Ft(!!)p Fu(')h(to)g(`)p Ft(!)p Fu(')h(are)330 2721 y(enabled,)26 b(and)f(parameter)g(expansion)g(is)g(p)s(erformed)e(on)i(the)g(v)-5 b(alues)25 b(of)g Ft(PS1)f Fu(and)h Ft(PS2)f Fu(regardless)330 -2990 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c -Fu(option.)199 3124 y(7.)61 b(The)30 b Fm(posix)g Fu(startup)f(\014les) +2830 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c +Fu(option.)199 2959 y(7.)61 b(The)30 b Fm(posix)g Fu(startup)f(\014les) i(are)g(executed)g(\()p Ft($ENV)p Fu(\))f(rather)g(than)g(the)h(normal) -f(Bash)g(\014les.)199 3258 y(8.)61 b(Tilde)30 b(expansion)g(is)f(only)h +f(Bash)g(\014les.)199 3087 y(8.)61 b(Tilde)30 b(expansion)g(is)f(only)h (p)s(erformed)f(on)h(assignmen)m(ts)g(preceding)g(a)g(command)g(name,)g -(rather)330 3368 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h -(on)e(the)h(line.)199 3502 y(9.)61 b(The)31 b Ft(command)e -Fu(builtin)i(do)s(es)g(not)h(prev)m(en)m(t)f(builtins)g(that)h(tak)m(e) -h(assignmen)m(t)f(statemen)m(ts)h(as)f(ar-)330 3611 y(gumen)m(ts)40 -b(from)e(expanding)h(them)g(as)h(assignmen)m(t)g(statemen)m(ts;)46 -b(when)38 b(not)i(in)f Fm(posix)f Fu(mo)s(de,)330 3721 -y(assignmen)m(t)k(builtins)e(lose)h(their)g(assignmen)m(t)h(statemen)m -(t)h(expansion)d(prop)s(erties)g(when)g(pre-)330 3830 -y(ceded)31 b(b)m(y)f Ft(command)p Fu(.)154 3964 y(10.)61 -b(The)30 b(default)g(history)h(\014le)f(is)h Ft(~/.sh_history)26 -b Fu(\(this)31 b(is)f(the)h(default)g(v)-5 b(alue)30 -b(of)h Ft($HISTFILE)p Fu(\).)154 4098 y(11.)61 b(The)23 -b(output)f(of)i(`)p Ft(kill)29 b(-l)p Fu(')23 b(prin)m(ts)f(all)i(the)g -(signal)f(names)g(on)g(a)h(single)g(line,)h(separated)e(b)m(y)g -(spaces,)330 4208 y(without)30 b(the)h(`)p Ft(SIG)p Fu(')f(pre\014x.) -154 4342 y(12.)61 b(The)30 b Ft(kill)f Fu(builtin)h(do)s(es)g(not)h -(accept)h(signal)f(names)f(with)g(a)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 -4476 y(13.)61 b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(if)g -Fr(\014lename)k Fu(in)30 b Ft(.)g Fr(\014lename)36 b -Fu(is)31 b(not)f(found.)154 4610 y(14.)61 b(Non-in)m(teractiv)m(e)41 -b(shells)d(exit)h(if)f(a)g(syn)m(tax)g(error)g(in)f(an)h(arithmetic)h -(expansion)f(results)f(in)h(an)330 4719 y(in)m(v)-5 b(alid)31 -b(expression.)154 4853 y(15.)61 b(Non-in)m(teractiv)m(e)34 -b(shells)c(exit)h(on)g(w)m(ord)f(expansion)g(errors.)154 -4987 y(16.)61 b(Non-in)m(teractiv)m(e)27 b(shells)c(exit)i(if)e(there)h -(is)f(a)h(syn)m(tax)g(error)f(in)g(a)h(script)f(read)g(with)h(the)f -Ft(.)g Fu(or)h Ft(source)330 5096 y Fu(builtins,)30 b(or)g(in)g(a)h -(string)g(pro)s(cessed)e(b)m(y)i(the)f Ft(eval)f Fu(builtin.)154 -5230 y(17.)61 b(Redirection)25 b(op)s(erators)f(do)g(not)g(p)s(erform)f +(rather)330 3197 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h +(on)e(the)h(line.)199 3325 y(9.)61 b(The)30 b(default)g(history)h +(\014le)f(is)h Ft(~/.sh_history)26 b Fu(\(this)31 b(is)f(the)h(default) +g(v)-5 b(alue)30 b(of)h Ft($HISTFILE)p Fu(\).)154 3454 +y(10.)61 b(Redirection)25 b(op)s(erators)f(do)g(not)g(p)s(erform)f (\014lename)h(expansion)g(on)g(the)g(w)m(ord)f(in)h(the)g(redirection) -330 5340 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)p +330 3564 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154 +3692 y(11.)61 b(Redirection)31 b(op)s(erators)g(do)f(not)h(p)s(erform)e +(w)m(ord)h(splitting)h(on)f(the)h(w)m(ord)f(in)g(the)g(redirection.)154 +3821 y(12.)61 b(F)-8 b(unction)35 b(names)g(m)m(ust)f(b)s(e)g(v)-5 +b(alid)35 b(shell)f Ft(name)p Fu(s.)52 b(That)34 b(is,)i(they)f(ma)m(y) +g(not)g(con)m(tain)g(c)m(haracters)330 3930 y(other)e(than)g(letters,)h +(digits,)h(and)d(underscores,)h(and)f(ma)m(y)h(not)g(start)h(with)e(a)h +(digit.)49 b(Declaring)330 4040 y(a)31 b(function)f(with)g(an)g(in)m(v) +-5 b(alid)31 b(name)g(causes)f(a)h(fatal)h(syn)m(tax)f(error)f(in)g +(non-in)m(teractiv)m(e)j(shells.)154 4168 y(13.)61 b(F)-8 +b(unction)31 b(names)f(ma)m(y)h(not)g(b)s(e)f(the)g(same)h(as)g(one)f +(of)h(the)f Fm(posix)g Fu(sp)s(ecial)h(builtins.)154 +4297 y(14.)61 b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e +(b)s(efore)h(shell)h(functions)f(during)f(command)h(lo)s(okup.)154 +4425 y(15.)61 b(Literal)28 b(tildes)g(that)f(app)s(ear)f(as)i(the)f +(\014rst)f(c)m(haracter)j(in)d(elemen)m(ts)j(of)e(the)g +Ft(PATH)f Fu(v)-5 b(ariable)27 b(are)h(not)330 4535 y(expanded)i(as)g +(describ)s(ed)f(ab)s(o)m(v)m(e)j(under)d(Section)i(3.5.2)h([Tilde)f +(Expansion],)f(page)h(22.)154 4663 y(16.)61 b(The)29 +b Ft(time)g Fu(reserv)m(ed)h(w)m(ord)g(ma)m(y)g(b)s(e)g(used)f(b)m(y)h +(itself)g(as)g(a)h(command.)40 b(When)30 b(used)f(in)g(this)h(w)m(a)m +(y)-8 b(,)330 4773 y(it)33 b(displa)m(ys)g(timing)g(statistics)h(for)e +(the)h(shell)g(and)f(its)g(completed)i(c)m(hildren.)47 +b(The)32 b Ft(TIMEFORMAT)330 4883 y Fu(v)-5 b(ariable)31 +b(con)m(trols)h(the)e(format)h(of)g(the)f(timing)h(information.)154 +5011 y(17.)61 b(When)33 b(parsing)g(and)f(expanding)h(a)h($)p +Fi({)6 b Fu(.)22 b(.)h(.)11 b Fi(})33 b Fu(expansion)g(that)h(app)s +(ears)f(within)f(double)h(quotes,)330 5121 y(single)42 +b(quotes)g(are)g(no)g(longer)g(sp)s(ecial)g(and)f(cannot)i(b)s(e)e +(used)g(to)h(quote)g(a)g(closing)h(brace)f(or)330 5230 +y(other)31 b(sp)s(ecial)h(c)m(haracter,)i(unless)c(the)i(op)s(erator)f +(is)g(one)h(of)f(those)h(de\014ned)e(to)i(p)s(erform)e(pattern)330 +5340 y(remo)m(v)-5 b(al.)42 b(In)30 b(this)g(case,)i(they)e(do)g(not)h +(ha)m(v)m(e)h(to)f(app)s(ear)e(as)i(matc)m(hed)g(pairs.)p eop end %%Page: 96 102 TeXDict begin 96 101 bop 150 -116 a Fu(Chapter)30 b(6:)41 b(Bash)30 b(F)-8 b(eatures)2484 b(96)154 299 y(18.)61 -b(Redirection)31 b(op)s(erators)g(do)f(not)h(p)s(erform)e(w)m(ord)h -(splitting)h(on)f(the)h(w)m(ord)f(in)g(the)g(redirection.)154 -433 y(19.)61 b(F)-8 b(unction)35 b(names)g(m)m(ust)f(b)s(e)g(v)-5 -b(alid)35 b(shell)f Ft(name)p Fu(s.)52 b(That)34 b(is,)i(they)f(ma)m(y) -g(not)g(con)m(tain)g(c)m(haracters)330 542 y(other)e(than)g(letters,)h -(digits,)h(and)d(underscores,)h(and)f(ma)m(y)h(not)g(start)h(with)e(a)h -(digit.)49 b(Declaring)330 652 y(a)31 b(function)f(with)g(an)g(in)m(v) --5 b(alid)31 b(name)g(causes)f(a)h(fatal)h(syn)m(tax)f(error)f(in)g -(non-in)m(teractiv)m(e)j(shells.)154 786 y(20.)61 b(F)-8 -b(unction)31 b(names)f(ma)m(y)h(not)g(b)s(e)f(the)g(same)h(as)g(one)f -(of)h(the)f Fm(posix)g Fu(sp)s(ecial)h(builtins.)154 -920 y(21.)61 b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e -(b)s(efore)h(shell)h(functions)f(during)f(command)h(lo)s(okup.)154 -1054 y(22.)61 b(Literal)28 b(tildes)g(that)f(app)s(ear)f(as)i(the)f -(\014rst)f(c)m(haracter)j(in)d(elemen)m(ts)j(of)e(the)g -Ft(PATH)f Fu(v)-5 b(ariable)27 b(are)h(not)330 1163 y(expanded)i(as)g -(describ)s(ed)f(ab)s(o)m(v)m(e)j(under)d(Section)i(3.5.2)h([Tilde)f -(Expansion],)f(page)h(22.)154 1297 y(23.)61 b(The)29 -b Ft(time)g Fu(reserv)m(ed)h(w)m(ord)g(ma)m(y)g(b)s(e)g(used)f(b)m(y)h -(itself)g(as)g(a)h(command.)40 b(When)30 b(used)f(in)g(this)h(w)m(a)m -(y)-8 b(,)330 1407 y(it)33 b(displa)m(ys)g(timing)g(statistics)h(for)e -(the)h(shell)g(and)f(its)g(completed)i(c)m(hildren.)47 -b(The)32 b Ft(TIMEFORMAT)330 1517 y Fu(v)-5 b(ariable)31 -b(con)m(trols)h(the)e(format)h(of)g(the)f(timing)h(information.)154 -1650 y(24.)61 b(When)33 b(parsing)g(and)f(expanding)h(a)h($)p -Fi({)6 b Fu(.)22 b(.)h(.)11 b Fi(})33 b Fu(expansion)g(that)h(app)s -(ears)f(within)f(double)h(quotes,)330 1760 y(single)42 -b(quotes)g(are)g(no)g(longer)g(sp)s(ecial)g(and)f(cannot)i(b)s(e)e -(used)g(to)h(quote)g(a)g(closing)h(brace)f(or)330 1870 -y(other)31 b(sp)s(ecial)h(c)m(haracter,)i(unless)c(the)i(op)s(erator)f -(is)g(one)h(of)f(those)h(de\014ned)e(to)i(p)s(erform)e(pattern)330 -1979 y(remo)m(v)-5 b(al.)42 b(In)30 b(this)g(case,)i(they)e(do)g(not)h -(ha)m(v)m(e)h(to)f(app)s(ear)e(as)i(matc)m(hed)g(pairs.)154 -2113 y(25.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h -Ft(time)d Fu(as)i(a)g(reserv)m(ed)f(w)m(ord)g(if)h(the)f(next)h(tok)m -(en)h(b)s(egins)d(with)i(a)330 2223 y(`)p Ft(-)p Fu('.)154 -2357 y(26.)61 b(If)24 b(a)g Fm(posix)g Fu(sp)s(ecial)h(builtin)f -(returns)f(an)h(error)g(status,)i(a)e(non-in)m(teractiv)m(e)j(shell)e -(exits.)39 b(The)24 b(fatal)330 2466 y(errors)30 b(are)h(those)f -(listed)h(in)f(the)h Fm(posix)e Fu(standard,)h(and)g(include)g(things)g -(lik)m(e)i(passing)e(incorrect)330 2576 y(options,)43 -b(redirection)d(errors,)i(v)-5 b(ariable)41 b(assignmen)m(t)g(errors)e -(for)g(assignmen)m(ts)i(preceding)f(the)330 2685 y(command)30 -b(name,)h(and)f(so)g(on.)154 2819 y(27.)61 b(A)31 b(non-in)m(teractiv)m -(e)j(shell)d(exits)h(with)e(an)h(error)g(status)g(if)g(a)g(v)-5 -b(ariable)32 b(assignmen)m(t)g(error)e(o)s(ccurs)330 -2929 y(when)38 b(no)h(command)g(name)g(follo)m(ws)i(the)e(assignmen)m -(t)h(statemen)m(ts.)69 b(A)39 b(v)-5 b(ariable)40 b(assignmen)m(t)330 -3039 y(error)30 b(o)s(ccurs,)g(for)g(example,)i(when)d(trying)i(to)g -(assign)f(a)h(v)-5 b(alue)31 b(to)g(a)g(readonly)f(v)-5 -b(ariable.)154 3173 y(28.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d -(exits)h(with)e(an)h(error)g(status)g(if)g(a)g(v)-5 b(ariable)32 -b(assignmen)m(t)g(error)e(o)s(ccurs)330 3282 y(in)g(an)g(assignmen)m(t) -i(statemen)m(t)g(preceding)e(a)h(sp)s(ecial)g(builtin,)f(but)g(not)g -(with)h(an)m(y)f(other)h(simple)330 3392 y(command.)154 -3526 y(29.)61 b(A)43 b(non-in)m(teractiv)m(e)i(shell)e(exits)h(with)f -(an)f(error)h(status)g(if)g(the)g(iteration)h(v)-5 b(ariable)44 -b(in)f(a)g Ft(for)330 3635 y Fu(statemen)m(t)32 b(or)f(the)f(selection) -i(v)-5 b(ariable)32 b(in)e(a)g Ft(select)f Fu(statemen)m(t)j(is)f(a)f -(readonly)h(v)-5 b(ariable.)154 3769 y(30.)61 b(Pro)s(cess)30 -b(substitution)g(is)h(not)f(a)m(v)-5 b(ailable.)154 3903 -y(31.)61 b(While)32 b(v)-5 b(ariable)32 b(indirection)f(is)g(a)m(v)-5 +b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h Ft(time)d +Fu(as)i(a)g(reserv)m(ed)f(w)m(ord)g(if)h(the)f(next)h(tok)m(en)h(b)s +(egins)d(with)i(a)330 408 y(`)p Ft(-)p Fu('.)154 540 +y(19.)61 b(The)30 b(`)p Ft(!)p Fu(')h(c)m(haracter)h(do)s(es)e(not)h +(in)m(tro)s(duce)g(history)f(expansion)h(within)f(a)h(double-quoted)g +(string,)330 650 y(ev)m(en)g(if)f(the)h Ft(histexpand)d +Fu(option)i(is)h(enabled.)154 781 y(20.)61 b(If)24 b(a)g +Fm(posix)g Fu(sp)s(ecial)h(builtin)f(returns)f(an)h(error)g(status,)i +(a)e(non-in)m(teractiv)m(e)j(shell)e(exits.)39 b(The)24 +b(fatal)330 891 y(errors)30 b(are)h(those)f(listed)h(in)f(the)h +Fm(posix)e Fu(standard,)h(and)g(include)g(things)g(lik)m(e)i(passing)e +(incorrect)330 1000 y(options,)43 b(redirection)d(errors,)i(v)-5 +b(ariable)41 b(assignmen)m(t)g(errors)e(for)g(assignmen)m(ts)i +(preceding)f(the)330 1110 y(command)30 b(name,)h(and)f(so)g(on.)154 +1241 y(21.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e +(an)h(error)g(status)g(if)g(a)g(v)-5 b(ariable)32 b(assignmen)m(t)g +(error)e(o)s(ccurs)330 1351 y(when)38 b(no)h(command)g(name)g(follo)m +(ws)i(the)e(assignmen)m(t)h(statemen)m(ts.)69 b(A)39 +b(v)-5 b(ariable)40 b(assignmen)m(t)330 1461 y(error)30 +b(o)s(ccurs,)g(for)g(example,)i(when)d(trying)i(to)g(assign)f(a)h(v)-5 +b(alue)31 b(to)g(a)g(readonly)f(v)-5 b(ariable.)154 1592 +y(22.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e(an)h +(error)g(status)g(if)g(a)g(v)-5 b(ariable)32 b(assignmen)m(t)g(error)e +(o)s(ccurs)330 1702 y(in)g(an)g(assignmen)m(t)i(statemen)m(t)g +(preceding)e(a)h(sp)s(ecial)g(builtin,)f(but)g(not)g(with)h(an)m(y)f +(other)h(simple)330 1811 y(command.)154 1943 y(23.)61 +b(A)43 b(non-in)m(teractiv)m(e)i(shell)e(exits)h(with)f(an)f(error)h +(status)g(if)g(the)g(iteration)h(v)-5 b(ariable)44 b(in)f(a)g +Ft(for)330 2052 y Fu(statemen)m(t)32 b(or)f(the)f(selection)i(v)-5 +b(ariable)32 b(in)e(a)g Ft(select)f Fu(statemen)m(t)j(is)f(a)f +(readonly)h(v)-5 b(ariable.)154 2184 y(24.)61 b(Non-in)m(teractiv)m(e) +34 b(shells)c(exit)h(if)g Fr(\014lename)k Fu(in)30 b +Ft(.)g Fr(\014lename)36 b Fu(is)31 b(not)f(found.)154 +2315 y(25.)61 b(Non-in)m(teractiv)m(e)41 b(shells)d(exit)h(if)f(a)g +(syn)m(tax)g(error)g(in)f(an)h(arithmetic)h(expansion)f(results)f(in)h +(an)330 2425 y(in)m(v)-5 b(alid)31 b(expression.)154 +2556 y(26.)61 b(Non-in)m(teractiv)m(e)34 b(shells)c(exit)h(on)g(w)m +(ord)f(expansion)g(errors.)154 2688 y(27.)61 b(Non-in)m(teractiv)m(e)27 +b(shells)c(exit)i(if)e(there)h(is)f(a)h(syn)m(tax)g(error)f(in)g(a)h +(script)f(read)g(with)h(the)f Ft(.)g Fu(or)h Ft(source)330 +2798 y Fu(builtins,)30 b(or)g(in)g(a)h(string)g(pro)s(cessed)e(b)m(y)i +(the)f Ft(eval)f Fu(builtin.)154 2929 y(28.)61 b(Pro)s(cess)30 +b(substitution)g(is)h(not)f(a)m(v)-5 b(ailable.)154 3061 +y(29.)61 b(While)32 b(v)-5 b(ariable)32 b(indirection)f(is)g(a)m(v)-5 b(ailable,)34 b(it)d(ma)m(y)h(not)f(b)s(e)g(applied)g(to)g(the)h(`)p Ft(#)p Fu(')f(and)f(`)p Ft(?)p Fu(')h(sp)s(ecial)330 -4013 y(parameters.)154 4147 y(32.)61 b(Assignmen)m(t)23 +3170 y(parameters.)154 3302 y(30.)61 b(Assignmen)m(t)23 b(statemen)m(ts)h(preceding)e Fm(posix)f Fu(sp)s(ecial)i(builtins)f(p)s -(ersist)g(in)f(the)i(shell)f(en)m(vironmen)m(t)330 4256 -y(after)31 b(the)f(builtin)g(completes.)154 4390 y(33.)61 +(ersist)g(in)f(the)i(shell)f(en)m(vironmen)m(t)330 3411 +y(after)31 b(the)f(builtin)g(completes.)154 3543 y(31.)61 b(Assignmen)m(t)35 b(statemen)m(ts)h(preceding)f(shell)f(function)g (calls)i(p)s(ersist)e(in)g(the)h(shell)f(en)m(vironmen)m(t)330 -4500 y(after)d(the)f(function)h(returns,)e(as)i(if)f(a)h +3652 y(after)d(the)f(function)h(returns,)e(as)i(if)f(a)h Fm(posix)e Fu(sp)s(ecial)i(builtin)f(command)g(had)g(b)s(een)g -(executed.)154 4634 y(34.)61 b(The)38 b Ft(export)f Fu(and)g -Ft(readonly)f Fu(builtin)i(commands)g(displa)m(y)h(their)f(output)g(in) -g(the)h(format)g(re-)330 4743 y(quired)30 b(b)m(y)g Fm(posix)p -Fu(.)154 4877 y(35.)61 b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g +(executed.)154 3784 y(32.)61 b(The)31 b Ft(command)e +Fu(builtin)i(do)s(es)g(not)h(prev)m(en)m(t)f(builtins)g(that)h(tak)m(e) +h(assignmen)m(t)f(statemen)m(ts)h(as)f(ar-)330 3893 y(gumen)m(ts)40 +b(from)e(expanding)h(them)g(as)h(assignmen)m(t)g(statemen)m(ts;)46 +b(when)38 b(not)i(in)f Fm(posix)f Fu(mo)s(de,)330 4003 +y(assignmen)m(t)k(builtins)e(lose)h(their)g(assignmen)m(t)h(statemen)m +(t)h(expansion)d(prop)s(erties)g(when)g(pre-)330 4113 +y(ceded)31 b(b)m(y)f Ft(command)p Fu(.)154 4244 y(33.)61 +b(The)27 b Ft(bg)g Fu(builtin)g(uses)g(the)h(required)f(format)h(to)g +(describ)s(e)f(eac)m(h)i(job)e(placed)h(in)f(the)h(bac)m(kground,)330 +4354 y(whic)m(h)h(do)s(es)g(not)g(include)g(an)g(indication)h(of)f +(whether)f(the)h(job)g(is)g(the)h(curren)m(t)e(or)h(previous)g(job.)154 +4485 y(34.)61 b(The)23 b(output)f(of)i(`)p Ft(kill)29 +b(-l)p Fu(')23 b(prin)m(ts)f(all)i(the)g(signal)f(names)g(on)g(a)h +(single)g(line,)h(separated)e(b)m(y)g(spaces,)330 4595 +y(without)30 b(the)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 +4726 y(35.)61 b(The)30 b Ft(kill)f Fu(builtin)h(do)s(es)g(not)h(accept) +h(signal)f(names)f(with)g(a)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 +4858 y(36.)61 b(The)38 b Ft(export)f Fu(and)g Ft(readonly)f +Fu(builtin)i(commands)g(displa)m(y)h(their)f(output)g(in)g(the)h +(format)g(re-)330 4967 y(quired)30 b(b)m(y)g Fm(posix)p +Fu(.)154 5099 y(37.)61 b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g (signal)i(names)e(without)g(the)h(leading)g Ft(SIG)p -Fu(.)154 5011 y(36.)61 b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g +Fu(.)154 5230 y(38.)61 b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g (c)m(hec)m(k)h(the)g(\014rst)e(argumen)m(t)i(for)e(a)i(p)s(ossible)e -(signal)i(sp)s(eci\014cation)330 5121 y(and)30 b(rev)m(ert)i(the)e +(signal)i(sp)s(eci\014cation)330 5340 y(and)30 b(rev)m(ert)i(the)e (signal)i(handling)e(to)h(the)g(original)h(disp)s(osition)e(if)h(it)g -(is,)g(unless)f(that)h(argumen)m(t)330 5230 y(consists)e(solely)g(of)g -(digits)g(and)f(is)g(a)h(v)-5 b(alid)29 b(signal)g(n)m(um)m(b)s(er.)38 -b(If)28 b(users)g(w)m(an)m(t)h(to)g(reset)g(the)g(handler)330 -5340 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s -(osition,)f(they)g(should)f(use)h(`)p Ft(-)p Fu(')g(as)g(the)g(\014rst) -f(argumen)m(t.)p eop end +(is,)g(unless)f(that)h(argumen)m(t)p eop end %%Page: 97 103 TeXDict begin 97 102 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(97)154 299 y(37.)61 -b(The)21 b Ft(.)h Fu(and)f Ft(source)f Fu(builtins)h(do)g(not)h(searc)m -(h)h(the)f(curren)m(t)f(directory)h(for)g(the)g(\014lename)f(argumen)m -(t)330 408 y(if)30 b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m(hing)g -Ft(PATH)p Fu(.)154 547 y(38.)61 b(Subshells)24 b(spa)m(wned)h(to)h -(execute)h(command)f(substitutions)f(inherit)g(the)h(v)-5 -b(alue)26 b(of)g(the)g Ft(-e)e Fu(option)330 656 y(from)37 -b(the)h(paren)m(t)g(shell.)63 b(When)38 b(not)g(in)f -Fm(posix)g Fu(mo)s(de,)j(Bash)e(clears)g(the)g Ft(-e)g -Fu(option)g(in)f(suc)m(h)330 766 y(subshells.)154 904 -y(39.)61 b(Alias)31 b(expansion)g(is)f(alw)m(a)m(ys)i(enabled,)e(ev)m -(en)i(in)e(non-in)m(teractiv)m(e)j(shells.)154 1042 y(40.)61 -b(When)43 b(the)g Ft(alias)f Fu(builtin)g(displa)m(ys)i(alias)g -(de\014nitions,)i(it)d(do)s(es)g(not)g(displa)m(y)h(them)f(with)g(a)330 -1151 y(leading)31 b(`)p Ft(alias)e Fu(')i(unless)f(the)g -Ft(-p)g Fu(option)h(is)f(supplied.)154 1289 y(41.)61 +b(Bash)30 b(F)-8 b(eatures)2484 b(97)330 299 y(consists)29 +b(solely)g(of)g(digits)g(and)f(is)g(a)h(v)-5 b(alid)29 +b(signal)g(n)m(um)m(b)s(er.)38 b(If)28 b(users)g(w)m(an)m(t)h(to)g +(reset)g(the)g(handler)330 408 y(for)h(a)g(giv)m(en)h(signal)g(to)f +(the)h(original)g(disp)s(osition,)f(they)g(should)f(use)h(`)p +Ft(-)p Fu(')g(as)g(the)g(\014rst)f(argumen)m(t.)154 548 +y(39.)61 b(The)21 b Ft(.)h Fu(and)f Ft(source)f Fu(builtins)h(do)g(not) +h(searc)m(h)h(the)f(curren)m(t)f(directory)h(for)g(the)g(\014lename)f +(argumen)m(t)330 658 y(if)30 b(it)h(is)g(not)f(found)f(b)m(y)i(searc)m +(hing)g Ft(PATH)p Fu(.)154 797 y(40.)61 b(Enabling)21 +b Fm(posix)g Fu(mo)s(de)g(has)g(the)g(e\013ect)i(of)e(setting)i(the)e +Ft(inherit_errexit)d Fu(option,)23 b(so)f(subshells)330 +907 y(spa)m(wned)27 b(to)i(execute)g(command)e(substitutions)h(inherit) +f(the)h(v)-5 b(alue)28 b(of)g(the)g Ft(-e)f Fu(option)h(from)g(the)330 +1016 y(paren)m(t)37 b(shell.)62 b(When)37 b(the)g Ft(inherit_errexit)c +Fu(option)38 b(is)f(not)h(enabled,)h(Bash)e(clears)h(the)g +Ft(-e)330 1126 y Fu(option)31 b(in)f(suc)m(h)g(subshells.)154 +1265 y(41.)61 b(When)43 b(the)g Ft(alias)f Fu(builtin)g(displa)m(ys)i +(alias)g(de\014nitions,)i(it)d(do)s(es)g(not)g(displa)m(y)h(them)f +(with)g(a)330 1375 y(leading)31 b(`)p Ft(alias)e Fu(')i(unless)f(the)g +Ft(-p)g Fu(option)h(is)f(supplied.)154 1514 y(42.)61 b(When)40 b(the)g Ft(set)f Fu(builtin)h(is)g(in)m(v)m(ok)m(ed)h (without)f(options,)j(it)e(do)s(es)f(not)g(displa)m(y)g(shell)g -(function)330 1399 y(names)30 b(and)g(de\014nitions.)154 -1537 y(42.)61 b(When)36 b(the)g Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok) +(function)330 1624 y(names)30 b(and)g(de\014nitions.)154 +1763 y(43.)61 b(When)36 b(the)g Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok) m(ed)i(without)e(options,)i(it)f(displa)m(ys)f(v)-5 b(ariable)37 -b(v)-5 b(alues)37 b(without)330 1647 y(quotes,)26 b(unless)d(they)i +b(v)-5 b(alues)37 b(without)330 1873 y(quotes,)26 b(unless)d(they)i (con)m(tain)g(shell)f(metac)m(haracters,)k(ev)m(en)d(if)f(the)g(result) -g(con)m(tains)i(nonprin)m(ting)330 1756 y(c)m(haracters.)154 -1894 y(43.)61 b(When)35 b(the)g Ft(cd)f Fu(builtin)h(is)g(in)m(v)m(ok)m +g(con)m(tains)i(nonprin)m(ting)330 1983 y(c)m(haracters.)154 +2122 y(44.)61 b(When)35 b(the)g Ft(cd)f Fu(builtin)h(is)g(in)m(v)m(ok)m (ed)i(in)d Fr(logical)41 b Fu(mo)s(de,)36 b(and)f(the)g(pathname)g -(constructed)g(from)330 2004 y Ft($PWD)i Fu(and)h(the)h(directory)f +(constructed)g(from)330 2232 y Ft($PWD)i Fu(and)h(the)h(directory)f (name)h(supplied)e(as)i(an)f(argumen)m(t)h(do)s(es)f(not)g(refer)h(to)g -(an)f(existing)330 2114 y(directory)-8 b(,)32 b Ft(cd)d +(an)f(existing)330 2341 y(directory)-8 b(,)32 b Ft(cd)d Fu(will)i(fail)g(instead)g(of)f(falling)h(bac)m(k)h(to)f -Fr(ph)m(ysical)j Fu(mo)s(de.)154 2252 y(44.)61 b(The)36 +Fr(ph)m(ysical)j Fu(mo)s(de.)154 2481 y(45.)61 b(The)36 b Ft(pwd)f Fu(builtin)h(v)m(eri\014es)h(that)g(the)f(v)-5 b(alue)37 b(it)g(prin)m(ts)e(is)i(the)f(same)h(as)f(the)h(curren)m(t)f -(directory)-8 b(,)330 2361 y(ev)m(en)31 b(if)f(it)h(is)g(not)f(ask)m +(directory)-8 b(,)330 2590 y(ev)m(en)31 b(if)f(it)h(is)g(not)f(ask)m (ed)h(to)g(c)m(hec)m(k)h(the)f(\014le)f(system)h(with)f(the)h -Ft(-P)e Fu(option.)154 2499 y(45.)61 b(When)35 b(listing)g(the)g +Ft(-P)e Fu(option.)154 2730 y(46.)61 b(When)35 b(listing)g(the)g (history)-8 b(,)36 b(the)f Ft(fc)g Fu(builtin)f(do)s(es)g(not)h -(include)g(an)f(indication)i(of)f(whether)f(or)330 2609 +(include)g(an)f(indication)i(of)f(whether)f(or)330 2839 y(not)d(a)f(history)h(en)m(try)f(has)g(b)s(een)g(mo)s(di\014ed.)154 -2747 y(46.)61 b(The)30 b(default)g(editor)h(used)f(b)m(y)g -Ft(fc)g Fu(is)g Ft(ed)p Fu(.)154 2885 y(47.)61 b(The)37 +2979 y(47.)61 b(The)30 b(default)g(editor)h(used)f(b)m(y)g +Ft(fc)g Fu(is)g Ft(ed)p Fu(.)154 3118 y(48.)61 b(The)37 b Ft(type)g Fu(and)g Ft(command)f Fu(builtins)i(will)g(not)g(rep)s(ort) f(a)i(non-executable)g(\014le)f(as)g(ha)m(ving)h(b)s(een)330 -2994 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g +3228 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g (execute)g(suc)m(h)f(a)g(\014le)g(if)g(it)g(is)g(the)g(only)g(so-named) -g(\014le)330 3104 y(found)i(in)h Ft($PATH)p Fu(.)154 -3242 y(48.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m +g(\014le)330 3337 y(found)i(in)h Ft($PATH)p Fu(.)154 +3477 y(49.)61 b(The)33 b Ft(vi)f Fu(editing)i(mo)s(de)f(will)g(in)m(v)m (ok)m(e)i(the)e Ft(vi)g Fu(editor)h(directly)f(when)f(the)i(`)p -Ft(v)p Fu(')f(command)g(is)g(run,)330 3352 y(instead)e(of)f(c)m(hec)m -(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 3490 -y(49.)61 b(When)41 b(the)g Ft(xpg_echo)e Fu(option)i(is)g(enabled,)j +Ft(v)p Fu(')f(command)g(is)g(run,)330 3587 y(instead)e(of)f(c)m(hec)m +(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 3726 +y(50.)61 b(When)41 b(the)g Ft(xpg_echo)e Fu(option)i(is)g(enabled,)j (Bash)d(do)s(es)g(not)g(attempt)h(to)g(in)m(terpret)f(an)m(y)h(ar-)330 -3599 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54 +3836 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54 b(Eac)m(h)35 b(argumen)m(t)g(is)f(displa)m(y)m(ed,)j(after)e(escap)s(e) -g(c)m(haracters)h(are)330 3709 y(con)m(v)m(erted.)154 -3847 y(50.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m +g(c)m(haracters)h(are)330 3945 y(con)m(v)m(erted.)154 +4085 y(51.)61 b(The)30 b Ft(ulimit)f Fu(builtin)g(uses)h(a)h(blo)s(c)m (k)g(size)g(of)g(512)g(b)m(ytes)g(for)f(the)h Ft(-c)f -Fu(and)g Ft(-f)f Fu(options.)154 3985 y(51.)61 b(The)39 +Fu(and)g Ft(-f)f Fu(options.)154 4224 y(52.)61 b(The)39 b(arriv)-5 b(al)41 b(of)f Ft(SIGCHLD)e Fu(when)h(a)h(trap)g(is)g(set)h (on)f Ft(SIGCHLD)e Fu(do)s(es)h(not)h(in)m(terrupt)g(the)g -Ft(wait)330 4095 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f +Ft(wait)330 4334 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f (immediately)-8 b(.)62 b(The)37 b(trap)f(command)h(is)g(run)e(once)j -(for)f(eac)m(h)330 4204 y(c)m(hild)31 b(that)g(exits.)154 -4342 y(52.)61 b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m +(for)f(eac)m(h)330 4443 y(c)m(hild)31 b(that)g(exits.)154 +4583 y(53.)61 b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m (terrupted)h(b)m(y)g(a)h(signal)f(for)g(whic)m(h)g(a)h(trap)f(has)g(b)s -(een)f(set.)40 b(If)27 b(Bash)330 4452 y(receiv)m(es)41 +(een)f(set.)40 b(If)27 b(Bash)330 4692 y(receiv)m(es)41 b(a)f(trapp)s(ed)e(signal)i(while)f(executing)h Ft(read)p Fu(,)h(the)e(trap)h(handler)e(executes)i(and)f Ft(read)330 -4561 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i(than)e(128.)275 -4732 y(There)k(is)g(other)h Fm(posix)f Fu(b)s(eha)m(vior)h(that)g(Bash) +4802 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i(than)e(128.)275 +4976 y(There)k(is)g(other)h Fm(posix)f Fu(b)s(eha)m(vior)h(that)g(Bash) g(do)s(es)f(not)h(implemen)m(t)g(b)m(y)g(default)f(ev)m(en)i(when)d(in) -150 4841 y Fm(posix)d Fu(mo)s(de.)40 b(Sp)s(eci\014cally:)199 -4983 y(1.)61 b(The)30 b Ft(fc)f Fu(builtin)h(c)m(hec)m(ks)i +150 5086 y Fm(posix)d Fu(mo)s(de.)40 b(Sp)s(eci\014cally:)199 +5230 y(1.)61 b(The)30 b Ft(fc)f Fu(builtin)h(c)m(hec)m(ks)i Ft($EDITOR)c Fu(as)j(a)f(program)g(to)h(edit)g(history)f(en)m(tries)h -(if)f Ft(FCEDIT)f Fu(is)h(unset,)330 5092 y(rather)g(than)g(defaulting) +(if)f Ft(FCEDIT)f Fu(is)h(unset,)330 5340 y(rather)g(than)g(defaulting) h(directly)g(to)g Ft(ed)p Fu(.)40 b Ft(fc)30 b Fu(uses)g -Ft(ed)g Fu(if)g Ft(EDITOR)f Fu(is)h(unset.)199 5230 y(2.)61 -b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i(Bash)e(requires)g(the)g -Ft(xpg_echo)e Fu(option)j(to)g(b)s(e)e(enabled)h(for)g(the)g -Ft(echo)f Fu(builtin)330 5340 y(to)j(b)s(e)f(fully)g(conforman)m(t.)p -eop end +Ft(ed)g Fu(if)g Ft(EDITOR)f Fu(is)h(unset.)p eop end %%Page: 98 104 TeXDict begin 98 103 bop 150 -116 a Fu(Chapter)30 b(6:)41 -b(Bash)30 b(F)-8 b(eatures)2484 b(98)275 299 y(Bash)26 -b(can)g(b)s(e)f(con\014gured)h(to)g(b)s(e)g Fm(posix)p -Fu(-conforman)m(t)g(b)m(y)g(default,)h(b)m(y)f(sp)s(ecifying)g(the)g -Ft(--enable-)150 408 y(strict-posix-default)c Fu(to)27 -b Ft(configure)e Fu(when)h(building)h(\(see)h(Section)g(10.8)g -([Optional)g(F)-8 b(eatures],)150 518 y(page)31 b(143\).)p +b(Bash)30 b(F)-8 b(eatures)2484 b(98)199 299 y(2.)61 +b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i(Bash)e(requires)g(the)g +Ft(xpg_echo)e Fu(option)j(to)g(b)s(e)e(enabled)h(for)g(the)g +Ft(echo)f Fu(builtin)330 408 y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 +568 y(Bash)c(can)g(b)s(e)f(con\014gured)h(to)g(b)s(e)g +Fm(posix)p Fu(-conforman)m(t)g(b)m(y)g(default,)h(b)m(y)f(sp)s +(ecifying)g(the)g Ft(--enable-)150 677 y(strict-posix-default)c +Fu(to)27 b Ft(configure)e Fu(when)h(building)h(\(see)h(Section)g(10.8)g +([Optional)g(F)-8 b(eatures],)150 787 y(page)31 b(143\).)p eop end %%Page: 99 105 TeXDict begin 99 104 bop 150 -116 a Fu(Chapter)30 b(7:)41 b(Job)30 b(Con)m(trol)2571 b(99)150 299 y Fp(7)80 b(Job)54 -b(Con)l(trol)150 521 y Fu(This)25 b(c)m(hapter)i(discusses)f(what)g +b(Con)l(trol)150 518 y Fu(This)25 b(c)m(hapter)i(discusses)f(what)g (job)f(con)m(trol)j(is,)f(ho)m(w)f(it)h(w)m(orks,)g(and)f(ho)m(w)g -(Bash)g(allo)m(ws)h(y)m(ou)g(to)g(access)150 631 y(its)k(facilities.) -150 858 y Fs(7.1)68 b(Job)45 b(Con)l(trol)h(Basics)150 -1018 y Fu(Job)27 b(con)m(trol)i(refers)e(to)h(the)g(abilit)m(y)h(to)f +(Bash)g(allo)m(ws)h(y)m(ou)g(to)g(access)150 628 y(its)k(facilities.) +150 863 y Fs(7.1)68 b(Job)45 b(Con)l(trol)h(Basics)150 +1022 y Fu(Job)27 b(con)m(trol)i(refers)e(to)h(the)g(abilit)m(y)h(to)f (selectiv)m(ely)j(stop)c(\(susp)s(end\))f(the)i(execution)h(of)e(pro)s -(cesses)h(and)150 1127 y(con)m(tin)m(ue)38 b(\(resume\))g(their)f +(cesses)h(and)150 1132 y(con)m(tin)m(ue)38 b(\(resume\))g(their)f (execution)h(at)g(a)g(later)g(p)s(oin)m(t.)61 b(A)37 b(user)g(t)m(ypically)i(emplo)m(ys)f(this)f(facilit)m(y)150 -1237 y(via)27 b(an)e(in)m(teractiv)m(e)k(in)m(terface)f(supplied)d +1241 y(via)27 b(an)e(in)m(teractiv)m(e)k(in)m(terface)f(supplied)d (join)m(tly)h(b)m(y)g(the)h(op)s(erating)f(system)g(k)m(ernel's)h -(terminal)f(driv)m(er)150 1347 y(and)k(Bash.)275 1479 +(terminal)f(driv)m(er)150 1351 y(and)k(Bash.)275 1482 y(The)23 b(shell)i(asso)s(ciates)h(a)f Fr(job)h Fu(with)e(eac)m(h)i (pip)s(eline.)38 b(It)25 b(k)m(eeps)f(a)h(table)h(of)e(curren)m(tly)h -(executing)g(jobs,)150 1588 y(whic)m(h)33 b(ma)m(y)i(b)s(e)e(listed)h +(executing)g(jobs,)150 1592 y(whic)m(h)33 b(ma)m(y)i(b)s(e)e(listed)h (with)f(the)h Ft(jobs)f Fu(command.)50 b(When)33 b(Bash)h(starts)g(a)g -(job)g(async)m(hronously)-8 b(,)34 b(it)150 1698 y(prin)m(ts)c(a)h -(line)f(that)h(lo)s(oks)g(lik)m(e:)390 1830 y Ft([1])47 -b(25647)150 1962 y Fu(indicating)34 b(that)g(this)f(job)g(is)g(job)g(n) +(job)g(async)m(hronously)-8 b(,)34 b(it)150 1701 y(prin)m(ts)c(a)h +(line)f(that)h(lo)s(oks)g(lik)m(e:)390 1833 y Ft([1])47 +b(25647)150 1965 y Fu(indicating)34 b(that)g(this)f(job)g(is)g(job)g(n) m(um)m(b)s(er)f(1)i(and)f(that)g(the)h(pro)s(cess)f Fm(id)g -Fu(of)g(the)h(last)g(pro)s(cess)f(in)g(the)150 2072 y(pip)s(eline)42 +Fu(of)g(the)h(last)g(pro)s(cess)f(in)g(the)150 2074 y(pip)s(eline)42 b(asso)s(ciated)i(with)e(this)g(job)g(is)h(25647.)78 b(All)43 b(of)g(the)g(pro)s(cesses)f(in)g(a)h(single)g(pip)s(eline)f -(are)150 2181 y(mem)m(b)s(ers)30 b(of)g(the)h(same)f(job.)41 +(are)150 2184 y(mem)m(b)s(ers)30 b(of)g(the)h(same)f(job.)41 b(Bash)30 b(uses)g(the)h Fr(job)h Fu(abstraction)f(as)g(the)g(basis)f -(for)g(job)g(con)m(trol.)275 2313 y(T)-8 b(o)23 b(facilitate)j(the)d +(for)g(job)g(con)m(trol.)275 2315 y(T)-8 b(o)23 b(facilitate)j(the)d (implemen)m(tation)i(of)f(the)f(user)f(in)m(terface)j(to)f(job)f(con)m -(trol,)j(the)d(op)s(erating)h(system)150 2423 y(main)m(tains)j(the)f +(trol,)j(the)d(op)s(erating)h(system)150 2425 y(main)m(tains)j(the)f (notion)h(of)f(a)g(curren)m(t)g(terminal)g(pro)s(cess)g(group)g Fm(id)p Fu(.)39 b(Mem)m(b)s(ers)26 b(of)g(this)g(pro)s(cess)f(group)150 -2533 y(\(pro)s(cesses)h(whose)g(pro)s(cess)g(group)g +2534 y(\(pro)s(cesses)h(whose)g(pro)s(cess)g(group)g Fm(id)g Fu(is)h(equal)g(to)g(the)f(curren)m(t)g(terminal)h(pro)s(cess)f -(group)f Fm(id)p Fu(\))i(receiv)m(e)150 2642 y(k)m(eyb)s +(group)f Fm(id)p Fu(\))i(receiv)m(e)150 2644 y(k)m(eyb)s (oard-generated)22 b(signals)g(suc)m(h)e(as)h Ft(SIGINT)p Fu(.)36 b(These)21 b(pro)s(cesses)g(are)g(said)g(to)g(b)s(e)g(in)f(the) -h(foreground.)150 2752 y(Bac)m(kground)38 b(pro)s(cesses)f(are)h(those) +h(foreground.)150 2754 y(Bac)m(kground)38 b(pro)s(cesses)f(are)h(those) g(whose)f(pro)s(cess)g(group)g Fm(id)h Fu(di\013ers)f(from)g(the)g -(terminal's;)42 b(suc)m(h)150 2861 y(pro)s(cesses)24 +(terminal's;)42 b(suc)m(h)150 2863 y(pro)s(cesses)24 b(are)g(imm)m(une)g(to)g(k)m(eyb)s(oard-generated)h(signals.)40 b(Only)23 b(foreground)g(pro)s(cesses)h(are)g(allo)m(w)m(ed)150 -2971 y(to)g(read)e(from)h(or,)h(if)f(the)g(user)f(so)i(sp)s(eci\014es)e +2973 y(to)g(read)e(from)h(or,)h(if)f(the)g(user)f(so)i(sp)s(eci\014es)e (with)h Ft(stty)29 b(tostop)p Fu(,)23 b(write)g(to)g(the)h(terminal.)38 -b(Bac)m(kground)150 3081 y(pro)s(cesses)27 b(whic)m(h)g(attempt)h(to)f +b(Bac)m(kground)150 3082 y(pro)s(cesses)27 b(whic)m(h)g(attempt)h(to)f (read)g(from)g(\(write)g(to)h(when)e Ft(stty)j(tostop)d -Fu(is)h(in)f(e\013ect\))j(the)e(terminal)150 3190 y(are)32 +Fu(is)h(in)f(e\013ect\))j(the)e(terminal)150 3192 y(are)32 b(sen)m(t)g(a)g Ft(SIGTTIN)e Fu(\()p Ft(SIGTTOU)p Fu(\))g(signal)i(b)m (y)g(the)g(k)m(ernel's)g(terminal)g(driv)m(er,)g(whic)m(h,)g(unless)f -(caugh)m(t,)150 3300 y(susp)s(ends)d(the)i(pro)s(cess.)275 -3432 y(If)k(the)i(op)s(erating)g(system)f(on)h(whic)m(h)f(Bash)g(is)h +(caugh)m(t,)150 3302 y(susp)s(ends)d(the)i(pro)s(cess.)275 +3433 y(If)k(the)i(op)s(erating)g(system)f(on)h(whic)m(h)f(Bash)g(is)h (running)d(supp)s(orts)h(job)h(con)m(trol,)j(Bash)e(con)m(tains)150 -3541 y(facilities)30 b(to)f(use)f(it.)40 b(T)m(yping)28 +3543 y(facilities)30 b(to)f(use)f(it.)40 b(T)m(yping)28 b(the)g Fr(susp)s(end)h Fu(c)m(haracter)h(\(t)m(ypically)g(`)p Ft(^Z)p Fu(',)f(Con)m(trol-Z\))g(while)f(a)g(pro)s(cess)150 -3651 y(is)42 b(running)f(causes)i(that)g(pro)s(cess)f(to)h(b)s(e)f +3652 y(is)42 b(running)f(causes)i(that)g(pro)s(cess)f(to)h(b)s(e)f (stopp)s(ed)f(and)h(returns)f(con)m(trol)j(to)f(Bash.)77 -b(T)m(yping)42 b(the)150 3761 y Fr(dela)m(y)m(ed)k(susp)s(end)f +b(T)m(yping)42 b(the)150 3762 y Fr(dela)m(y)m(ed)k(susp)s(end)f Fu(c)m(haracter)h(\(t)m(ypically)g(`)p Ft(^Y)p Fu(',)i(Con)m(trol-Y\))e (causes)e(the)h(pro)s(cess)e(to)i(b)s(e)f(stopp)s(ed)150 -3870 y(when)26 b(it)i(attempts)h(to)f(read)f(input)g(from)f(the)i +3871 y(when)26 b(it)i(attempts)h(to)f(read)f(input)g(from)f(the)i (terminal,)h(and)e(con)m(trol)h(to)g(b)s(e)f(returned)f(to)j(Bash.)39 -b(The)150 3980 y(user)e(then)g(manipulates)h(the)g(state)h(of)f(this)f +b(The)150 3981 y(user)e(then)g(manipulates)h(the)g(state)h(of)f(this)f (job,)j(using)d(the)h Ft(bg)f Fu(command)g(to)h(con)m(tin)m(ue)h(it)f -(in)g(the)150 4089 y(bac)m(kground,)g(the)f Ft(fg)g Fu(command)f(to)i +(in)g(the)150 4091 y(bac)m(kground,)g(the)f Ft(fg)g Fu(command)f(to)i (con)m(tin)m(ue)g(it)f(in)f(the)h(foreground,)h(or)f(the)g -Ft(kill)f Fu(command)g(to)150 4199 y(kill)27 b(it.)40 +Ft(kill)f Fu(command)g(to)150 4200 y(kill)27 b(it.)40 b(A)27 b(`)p Ft(^Z)p Fu(')g(tak)m(es)h(e\013ect)g(immediately)-8 b(,)29 b(and)d(has)h(the)f(additional)i(side)e(e\013ect)j(of)d(causing) -h(p)s(ending)150 4309 y(output)j(and)g(t)m(yp)s(eahead)h(to)g(b)s(e)e +h(p)s(ending)150 4310 y(output)j(and)g(t)m(yp)s(eahead)h(to)g(b)s(e)e (discarded.)275 4441 y(There)j(are)g(a)h(n)m(um)m(b)s(er)e(of)i(w)m(a)m (ys)g(to)h(refer)e(to)h(a)g(job)f(in)g(the)h(shell.)47 b(The)32 b(c)m(haracter)i(`)p Ft(\045)p Fu(')f(in)m(tro)s(duces)150 -4550 y(a)e(job)f(sp)s(eci\014cation)h(\()p Fr(jobsp)s(ec)6 +4551 y(a)e(job)f(sp)s(eci\014cation)h(\()p Fr(jobsp)s(ec)6 b Fu(\).)275 4682 y(Job)31 b(n)m(um)m(b)s(er)f Ft(n)h Fu(ma)m(y)h(b)s(e)f(referred)g(to)h(as)g(`)p Ft(\045n)p Fu('.)44 b(The)31 b(sym)m(b)s(ols)g(`)p Ft(\045\045)p @@ -15233,68 +15274,68 @@ Fu(',)g(on)f(the)h(other)g(hand,)g(refers)f(to)h(an)m(y)g(job)g(con)m (taining)h(the)f(string)f(`)p Ft(ce)p Fu(')h(in)f(its)h(command)150 628 y(line.)41 b(If)30 b(the)h(pre\014x)e(or)h(substring)f(matc)m(hes)j (more)e(than)h(one)f(job,)h(Bash)f(rep)s(orts)g(an)g(error.)275 -762 y(Simply)g(naming)h(a)g(job)g(can)g(b)s(e)f(used)h(to)g(bring)f(it) +761 y(Simply)g(naming)h(a)g(job)g(can)g(b)s(e)f(used)h(to)g(bring)f(it) i(in)m(to)g(the)f(foreground:)41 b(`)p Ft(\0451)p Fu(')31 b(is)g(a)h(synon)m(ym)e(for)150 871 y(`)p Ft(fg)g(\0451)p Fu(',)i(bringing)f(job)g(1)g(from)g(the)h(bac)m(kground)f(in)m(to)i (the)e(foreground.)44 b(Similarly)-8 b(,)32 b(`)p Ft(\0451)e(&)p -Fu(')i(resumes)150 981 y(job)e(1)h(in)f(the)g(bac)m(kground,)h(equiv)-5 -b(alen)m(t)32 b(to)f(`)p Ft(bg)f(\0451)p Fu(')275 1115 +Fu(')i(resumes)150 980 y(job)e(1)h(in)f(the)g(bac)m(kground,)h(equiv)-5 +b(alen)m(t)32 b(to)f(`)p Ft(bg)f(\0451)p Fu(')275 1114 y(The)g(shell)i(learns)f(immediately)i(whenev)m(er)e(a)h(job)f(c)m (hanges)h(state.)45 b(Normally)-8 b(,)33 b(Bash)e(w)m(aits)i(un)m(til) -150 1224 y(it)25 b(is)g(ab)s(out)f(to)i(prin)m(t)e(a)h(prompt)f(b)s +150 1223 y(it)25 b(is)g(ab)s(out)f(to)i(prin)m(t)e(a)h(prompt)f(b)s (efore)g(rep)s(orting)h(c)m(hanges)g(in)g(a)g(job's)f(status)h(so)g(as) -g(to)g(not)g(in)m(terrupt)150 1334 y(an)m(y)k(other)f(output.)40 +g(to)g(not)g(in)m(terrupt)150 1333 y(an)m(y)k(other)f(output.)40 b(If)28 b(the)g Ft(-b)g Fu(option)g(to)h(the)g Ft(set)e Fu(builtin)h(is)g(enabled,)h(Bash)g(rep)s(orts)e(suc)m(h)h(c)m(hanges) 150 1443 y(immediately)d(\(see)g(Section)g(4.3.1)g([The)f(Set)g (Builtin],)i(page)f(59\).)40 b(An)m(y)24 b(trap)f(on)h -Ft(SIGCHLD)e Fu(is)i(executed)150 1553 y(for)30 b(eac)m(h)i(c)m(hild)e -(pro)s(cess)g(that)h(exits.)275 1687 y(If)25 b(an)h(attempt)h(to)g +Ft(SIGCHLD)e Fu(is)i(executed)150 1552 y(for)30 b(eac)m(h)i(c)m(hild)e +(pro)s(cess)g(that)h(exits.)275 1686 y(If)25 b(an)h(attempt)h(to)g (exit)g(Bash)f(is)h(made)f(while)g(jobs)f(are)i(stopp)s(ed,)f(\(or)h -(running,)e(if)h(the)g Ft(checkjobs)150 1796 y Fu(option)e(is)f +(running,)e(if)h(the)g Ft(checkjobs)150 1795 y Fu(option)e(is)f (enabled)h({)g(see)g(Section)g(4.3.2)h([The)e(Shopt)g(Builtin],)j(page) e(63\),)i(the)e(shell)f(prin)m(ts)g(a)h(w)m(arning)150 -1906 y(message,)k(and)c(if)i(the)f Ft(checkjobs)e Fu(option)j(is)f +1905 y(message,)k(and)c(if)i(the)f Ft(checkjobs)e Fu(option)j(is)f (enabled,)i(lists)e(the)h(jobs)f(and)f(their)i(statuses.)39 -b(The)25 b Ft(jobs)150 2016 y Fu(command)36 b(ma)m(y)h(then)f(b)s(e)f +b(The)25 b Ft(jobs)150 2014 y Fu(command)36 b(ma)m(y)h(then)f(b)s(e)f (used)g(to)i(insp)s(ect)f(their)g(status.)59 b(If)36 -b(a)g(second)g(attempt)i(to)f(exit)g(is)f(made)150 2125 +b(a)g(second)g(attempt)i(to)f(exit)g(is)f(made)150 2124 y(without)e(an)f(in)m(terv)m(ening)i(command,)f(Bash)g(do)s(es)f(not)h (prin)m(t)g(another)f(w)m(arning,)i(and)e(an)m(y)h(stopp)s(ed)150 -2235 y(jobs)c(are)h(terminated.)150 2466 y Fs(7.2)68 -b(Job)45 b(Con)l(trol)h(Builtins)150 2650 y Ft(bg)870 -2784 y(bg)h([)p Fj(jobspec)f Ft(...)o(])630 2918 y Fu(Resume)24 +2234 y(jobs)c(are)h(terminated.)150 2472 y Fs(7.2)68 +b(Job)45 b(Con)l(trol)h(Builtins)150 2656 y Ft(bg)870 +2789 y(bg)h([)p Fj(jobspec)f Ft(...)o(])630 2923 y Fu(Resume)24 b(eac)m(h)h(susp)s(ended)d(job)i Fr(jobsp)s(ec)29 b Fu(in)24 b(the)g(bac)m(kground,)h(as)g(if)f(it)h(had)e(b)s(een)g(started)630 -3027 y(with)32 b(`)p Ft(&)p Fu('.)45 b(If)31 b Fr(jobsp)s(ec)37 +3032 y(with)32 b(`)p Ft(&)p Fu('.)45 b(If)31 b Fr(jobsp)s(ec)37 b Fu(is)32 b(not)g(supplied,)f(the)h(curren)m(t)g(job)f(is)h(used.)45 -b(The)31 b(return)g(status)630 3137 y(is)i(zero)g(unless)f(it)h(is)g +b(The)31 b(return)g(status)630 3142 y(is)i(zero)g(unless)f(it)h(is)g (run)e(when)h(job)g(con)m(trol)i(is)f(not)g(enabled,)h(or,)f(when)f -(run)f(with)h(job)630 3246 y(con)m(trol)h(enabled,)g(an)m(y)f +(run)f(with)h(job)630 3252 y(con)m(trol)h(enabled,)g(an)m(y)f Fr(jobsp)s(ec)37 b Fu(w)m(as)32 b(not)g(found)f(or)g(sp)s(eci\014es)h -(a)g(job)g(that)g(w)m(as)g(started)630 3356 y(without)e(job)g(con)m -(trol.)150 3514 y Ft(fg)870 3648 y(fg)47 b([)p Fj(jobspec)p -Ft(])630 3782 y Fu(Resume)c(the)g(job)g Fr(jobsp)s(ec)48 +(a)g(job)g(that)g(w)m(as)g(started)630 3361 y(without)e(job)g(con)m +(trol.)150 3519 y Ft(fg)870 3652 y(fg)47 b([)p Fj(jobspec)p +Ft(])630 3786 y Fu(Resume)c(the)g(job)g Fr(jobsp)s(ec)48 b Fu(in)43 b(the)g(foreground)g(and)f(mak)m(e)j(it)e(the)h(curren)m(t)f -(job.)78 b(If)630 3891 y Fr(jobsp)s(ec)41 b Fu(is)c(not)f(supplied,)h +(job.)78 b(If)630 3895 y Fr(jobsp)s(ec)41 b Fu(is)c(not)f(supplied,)h (the)f(curren)m(t)h(job)f(is)g(used.)58 b(The)36 b(return)f(status)h -(is)h(that)g(of)630 4001 y(the)d(command)g(placed)h(in)m(to)g(the)f +(is)h(that)g(of)630 4005 y(the)d(command)g(placed)h(in)m(to)g(the)f (foreground,)g(or)g(non-zero)h(if)f(run)f(when)g(job)g(con)m(trol)630 -4111 y(is)i(disabled)g(or,)i(when)d(run)g(with)h(job)g(con)m(trol)h +4114 y(is)i(disabled)g(or,)i(when)d(run)g(with)h(job)g(con)m(trol)h (enabled,)h Fr(jobsp)s(ec)j Fu(do)s(es)35 b(not)h(sp)s(ecify)f(a)630 -4220 y(v)-5 b(alid)31 b(job)f(or)g Fr(jobsp)s(ec)35 b +4224 y(v)-5 b(alid)31 b(job)f(or)g Fr(jobsp)s(ec)35 b Fu(sp)s(eci\014es)30 b(a)h(job)f(that)h(w)m(as)g(started)g(without)f -(job)g(con)m(trol.)150 4378 y Ft(jobs)870 4512 y(jobs)47 -b([-lnprs])e([)p Fj(jobspec)p Ft(])870 4622 y(jobs)i(-x)g -Fj(command)f Ft([)p Fj(arguments)p Ft(])630 4756 y Fu(The)30 +(job)g(con)m(trol.)150 4381 y Ft(jobs)870 4515 y(jobs)47 +b([-lnprs])e([)p Fj(jobspec)p Ft(])870 4625 y(jobs)i(-x)g +Fj(command)f Ft([)p Fj(arguments)p Ft(])630 4758 y Fu(The)30 b(\014rst)f(form)h(lists)h(the)g(activ)m(e)h(jobs.)41 b(The)30 b(options)g(ha)m(v)m(e)i(the)e(follo)m(wing)i(meanings:)630 -4914 y Ft(-l)384 b Fu(List)31 b(pro)s(cess)f Fm(id)p +4916 y Ft(-l)384 b Fu(List)31 b(pro)s(cess)f Fm(id)p Fu(s)g(in)g(addition)h(to)g(the)f(normal)h(information.)630 -5072 y Ft(-n)384 b Fu(Displa)m(y)26 b(information)f(only)h(ab)s(out)e +5073 y Ft(-n)384 b Fu(Displa)m(y)26 b(information)f(only)h(ab)s(out)e (jobs)h(that)g(ha)m(v)m(e)i(c)m(hanged)e(status)h(since)1110 -5182 y(the)31 b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f +5183 y(the)31 b(user)e(w)m(as)i(last)g(noti\014ed)f(of)h(their)f (status.)630 5340 y Ft(-p)384 b Fu(List)31 b(only)f(the)h(pro)s(cess)f Fm(id)g Fu(of)h(the)f(job's)g(pro)s(cess)g(group)g(leader.)p eop end @@ -15358,126 +15399,126 @@ b(neither)f Fr(jobsp)s(ec)41 b Fu(nor)35 b Fr(pid)j Fu(sp)s(eci\014es)d (an)h(activ)m(e)i(c)m(hild)e(pro)s(cess)f(of)h(the)630 3707 y(shell,)31 b(the)f(return)g(status)g(is)h(127.)150 3868 y Ft(disown)870 4004 y(disown)46 b([-ar])g([-h])h([)p -Fj(jobspec)f Ft(...)o(])630 4140 y Fu(Without)33 b(options,)h(remo)m(v) -m(e)g(eac)m(h)f Fr(jobsp)s(ec)38 b Fu(from)32 b(the)h(table)g(of)g -(activ)m(e)h(jobs.)47 b(If)32 b(the)h Ft(-h)630 4249 -y Fu(option)j(is)f(giv)m(en,)i(the)f(job)f(is)g(not)g(remo)m(v)m(ed)h -(from)f(the)g(table,)j(but)c(is)i(mark)m(ed)f(so)g(that)630 -4359 y Ft(SIGHUP)e Fu(is)j(not)f(sen)m(t)h(to)g(the)f(job)g(if)g(the)g -(shell)h(receiv)m(es)h(a)e Ft(SIGHUP)p Fu(.)54 b(If)34 -b Fr(jobsp)s(ec)40 b Fu(is)c(not)630 4468 y(presen)m(t,)41 -b(and)d(neither)h(the)g Ft(-a)f Fu(nor)g(the)h Ft(-r)f -Fu(option)h(is)g(supplied,)g(the)g(curren)m(t)g(job)f(is)630 -4578 y(used.)g(If)25 b(no)h Fr(jobsp)s(ec)k Fu(is)c(supplied,)f(the)h -Ft(-a)f Fu(option)h(means)g(to)g(remo)m(v)m(e)h(or)e(mark)h(all)g -(jobs;)630 4688 y(the)31 b Ft(-r)e Fu(option)i(without)g(a)f -Fr(jobsp)s(ec)36 b Fu(argumen)m(t)30 b(restricts)h(op)s(eration)g(to)g -(running)e(jobs.)150 4849 y Ft(suspend)870 4985 y(suspend)46 -b([-f])630 5121 y Fu(Susp)s(end)31 b(the)i(execution)h(of)g(this)f -(shell)g(un)m(til)h(it)g(receiv)m(es)h(a)e Ft(SIGCONT)f -Fu(signal.)50 b(A)33 b(login)630 5230 y(shell)28 b(cannot)g(b)s(e)f -(susp)s(ended;)g(the)g Ft(-f)g Fu(option)i(can)f(b)s(e)f(used)g(to)h(o) -m(v)m(erride)h(this)e(and)g(force)630 5340 y(the)k(susp)s(ension.)p -eop end +Fj(jobspec)f Ft(...)h(|)g Fj(pid)g Ft(...)g(])630 4140 +y Fu(Without)33 b(options,)h(remo)m(v)m(e)g(eac)m(h)f +Fr(jobsp)s(ec)38 b Fu(from)32 b(the)h(table)g(of)g(activ)m(e)h(jobs.)47 +b(If)32 b(the)h Ft(-h)630 4249 y Fu(option)j(is)f(giv)m(en,)i(the)f +(job)f(is)g(not)g(remo)m(v)m(ed)h(from)f(the)g(table,)j(but)c(is)i +(mark)m(ed)f(so)g(that)630 4359 y Ft(SIGHUP)e Fu(is)j(not)f(sen)m(t)h +(to)g(the)f(job)g(if)g(the)g(shell)h(receiv)m(es)h(a)e +Ft(SIGHUP)p Fu(.)54 b(If)34 b Fr(jobsp)s(ec)40 b Fu(is)c(not)630 +4468 y(presen)m(t,)41 b(and)d(neither)h(the)g Ft(-a)f +Fu(nor)g(the)h Ft(-r)f Fu(option)h(is)g(supplied,)g(the)g(curren)m(t)g +(job)f(is)630 4578 y(used.)g(If)25 b(no)h Fr(jobsp)s(ec)k +Fu(is)c(supplied,)f(the)h Ft(-a)f Fu(option)h(means)g(to)g(remo)m(v)m +(e)h(or)e(mark)h(all)g(jobs;)630 4688 y(the)31 b Ft(-r)e +Fu(option)i(without)g(a)f Fr(jobsp)s(ec)36 b Fu(argumen)m(t)30 +b(restricts)h(op)s(eration)g(to)g(running)e(jobs.)150 +4849 y Ft(suspend)870 4985 y(suspend)46 b([-f])630 5121 +y Fu(Susp)s(end)31 b(the)i(execution)h(of)g(this)f(shell)g(un)m(til)h +(it)g(receiv)m(es)h(a)e Ft(SIGCONT)f Fu(signal.)50 b(A)33 +b(login)630 5230 y(shell)28 b(cannot)g(b)s(e)f(susp)s(ended;)g(the)g +Ft(-f)g Fu(option)i(can)f(b)s(e)f(used)g(to)h(o)m(v)m(erride)h(this)e +(and)g(force)630 5340 y(the)k(susp)s(ension.)p eop end %%Page: 102 108 TeXDict begin 102 107 bop 150 -116 a Fu(Chapter)30 b(7:)41 b(Job)30 b(Con)m(trol)2526 b(102)275 299 y(When)30 b(job)f(con)m(trol)j (is)e(not)h(activ)m(e,)i(the)d Ft(kill)f Fu(and)h Ft(wait)f Fu(builtins)g(do)h(not)h(accept)h Fr(jobsp)s(ec)j Fu(argu-)150 408 y(men)m(ts.)41 b(They)30 b(m)m(ust)g(b)s(e)g(supplied)f(pro)s(cess) -h Fm(id)p Fu(s.)150 641 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V)-11 -b(ariables)150 825 y Ft(auto_resume)630 935 y Fu(This)31 +h Fm(id)p Fu(s.)150 649 y Fs(7.3)68 b(Job)45 b(Con)l(trol)h(V)-11 +b(ariables)150 834 y Ft(auto_resume)630 943 y Fu(This)31 b(v)-5 b(ariable)32 b(con)m(trols)g(ho)m(w)g(the)f(shell)h(in)m (teracts)h(with)e(the)h(user)e(and)h(job)g(con)m(trol.)45 -b(If)630 1044 y(this)28 b(v)-5 b(ariable)30 b(exists)f(then)f(single)h +b(If)630 1053 y(this)28 b(v)-5 b(ariable)30 b(exists)f(then)f(single)h (w)m(ord)f(simple)h(commands)f(without)g(redirections)i(are)630 -1154 y(treated)h(as)g(candidates)f(for)g(resumption)g(of)g(an)g +1162 y(treated)h(as)g(candidates)f(for)g(resumption)g(of)g(an)g (existing)h(job.)41 b(There)29 b(is)h(no)h(am)m(biguit)m(y)630 -1264 y(allo)m(w)m(ed;)f(if)d(there)g(is)g(more)g(than)f(one)h(job)g(b)s +1272 y(allo)m(w)m(ed;)f(if)d(there)g(is)g(more)g(than)f(one)h(job)g(b)s (eginning)f(with)g(the)h(string)g(t)m(yp)s(ed,)g(then)g(the)630 -1373 y(most)j(recen)m(tly)h(accessed)f(job)f(will)h(b)s(e)f(selected.) +1381 y(most)j(recen)m(tly)h(accessed)f(job)f(will)h(b)s(e)f(selected.) 42 b(The)29 b(name)g(of)h(a)g(stopp)s(ed)e(job,)i(in)f(this)630 -1483 y(con)m(text,)h(is)e(the)g(command)g(line)g(used)f(to)h(start)g +1491 y(con)m(text,)h(is)e(the)g(command)g(line)g(used)f(to)h(start)g (it.)41 b(If)27 b(this)h(v)-5 b(ariable)28 b(is)g(set)g(to)h(the)e(v)-5 -b(alue)630 1592 y(`)p Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f +b(alue)630 1601 y(`)p Ft(exact)p Fu(',)33 b(the)g(string)g(supplied)f (m)m(ust)h(matc)m(h)g(the)h(name)f(of)g(a)g(stopp)s(ed)f(job)h -(exactly;)j(if)630 1702 y(set)29 b(to)h(`)p Ft(substring)p +(exactly;)j(if)630 1710 y(set)29 b(to)h(`)p Ft(substring)p Fu(',)d(the)i(string)g(supplied)e(needs)i(to)g(matc)m(h)h(a)f -(substring)f(of)h(the)g(name)630 1812 y(of)38 b(a)f(stopp)s(ed)g(job.) +(substring)f(of)h(the)g(name)630 1820 y(of)38 b(a)f(stopp)s(ed)g(job.) 62 b(The)37 b(`)p Ft(substring)p Fu(')e(v)-5 b(alue)38 b(pro)m(vides)f(functionalit)m(y)i(analogous)g(to)630 -1921 y(the)f(`)p Ft(\045?)p Fu(')f(job)h Fm(id)f Fu(\(see)i(Section)f +1929 y(the)f(`)p Ft(\045?)p Fu(')f(job)h Fm(id)f Fu(\(see)i(Section)f (7.1)h([Job)f(Con)m(trol)g(Basics],)j(page)d(99\).)64 -b(If)37 b(set)h(to)h(an)m(y)630 2031 y(other)32 b(v)-5 +b(If)37 b(set)h(to)h(an)m(y)630 2039 y(other)32 b(v)-5 b(alue,)32 b(the)g(supplied)e(string)i(m)m(ust)f(b)s(e)g(a)h(pre\014x)f -(of)h(a)g(stopp)s(ed)e(job's)i(name;)g(this)630 2140 +(of)h(a)g(stopp)s(ed)e(job's)i(name;)g(this)630 2149 y(pro)m(vides)e(functionalit)m(y)i(analogous)g(to)f(the)g(`)p Ft(\045)p Fu(')f(job)g Fm(id)p Fu(.)p eop end %%Page: 103 109 TeXDict begin 103 108 bop 150 -116 a Fu(Chapter)30 b(8:)41 b(Command)29 b(Line)i(Editing)2062 b(103)150 299 y Fp(8)80 -b(Command)54 b(Line)f(Editing)150 640 y Fu(This)28 b(c)m(hapter)i +b(Command)54 b(Line)f(Editing)150 635 y Fu(This)28 b(c)m(hapter)i (describ)s(es)e(the)h(basic)g(features)h(of)f(the)g Fm(gnu)f Fu(command)h(line)g(editing)h(in)m(terface.)42 b(Com-)150 -749 y(mand)c(line)i(editing)f(is)g(pro)m(vided)g(b)m(y)g(the)g +745 y(mand)c(line)i(editing)f(is)g(pro)m(vided)g(b)m(y)g(the)g (Readline)h(library)-8 b(,)41 b(whic)m(h)e(is)g(used)f(b)m(y)h(sev)m -(eral)h(di\013eren)m(t)150 859 y(programs,)34 b(including)e(Bash.)49 +(eral)h(di\013eren)m(t)150 855 y(programs,)34 b(including)e(Bash.)49 b(Command)32 b(line)i(editing)f(is)g(enabled)g(b)m(y)g(default)g(when)f -(using)h(an)g(in-)150 969 y(teractiv)m(e)h(shell,)d(unless)g(the)g +(using)h(an)g(in-)150 964 y(teractiv)m(e)h(shell,)d(unless)g(the)g Ft(--noediting)d Fu(option)k(is)f(supplied)e(at)j(shell)f(in)m(v)m(o)s -(cation.)45 b(Line)31 b(editing)150 1078 y(is)g(also)h(used)f(when)f +(cation.)45 b(Line)31 b(editing)150 1074 y(is)g(also)h(used)f(when)f (using)h(the)g Ft(-e)g Fu(option)h(to)g(the)f Ft(read)f Fu(builtin)h(command)g(\(see)h(Section)g(4.2)h([Bash)150 -1188 y(Builtins],)j(page)f(48\).)52 b(By)35 b(default,)g(the)f(line)h +1183 y(Builtins],)j(page)f(48\).)52 b(By)35 b(default,)g(the)f(line)h (editing)f(commands)g(are)h(similar)f(to)h(those)f(of)g(Emacs.)150 -1297 y(A)h(vi-st)m(yle)h(line)f(editing)g(in)m(terface)h(is)e(also)i(a) +1293 y(A)h(vi-st)m(yle)h(line)f(editing)g(in)m(terface)h(is)e(also)i(a) m(v)-5 b(ailable.)55 b(Line)34 b(editing)h(can)g(b)s(e)f(enabled)g(at)h -(an)m(y)g(time)150 1407 y(using)h(the)g Ft(-o)30 b(emacs)35 +(an)m(y)g(time)150 1402 y(using)h(the)g Ft(-o)30 b(emacs)35 b Fu(or)h Ft(-o)30 b(vi)35 b Fu(options)i(to)g(the)f Ft(set)f Fu(builtin)h(command)g(\(see)h(Section)g(4.3.1)h([The)150 -1517 y(Set)31 b(Builtin],)g(page)g(59\),)h(or)e(disabled)g(using)g(the) +1512 y(Set)31 b(Builtin],)g(page)g(59\),)h(or)e(disabled)g(using)g(the) h Ft(+o)e(emacs)g Fu(or)i Ft(+o)e(vi)h Fu(options)h(to)g -Ft(set)p Fu(.)150 1802 y Fs(8.1)68 b(In)l(tro)t(duction)45 -b(to)g(Line)h(Editing)150 1962 y Fu(The)30 b(follo)m(wing)i(paragraphs) +Ft(set)p Fu(.)150 1804 y Fs(8.1)68 b(In)l(tro)t(duction)45 +b(to)g(Line)h(Editing)150 1963 y Fu(The)30 b(follo)m(wing)i(paragraphs) d(describ)s(e)h(the)h(notation)g(used)f(to)h(represen)m(t)f(k)m (eystrok)m(es.)275 2132 y(The)35 b(text)i Fj(C-k)f Fu(is)g(read)g(as)h (`Con)m(trol-K')g(and)f(describ)s(es)f(the)h(c)m(haracter)i(pro)s (duced)d(when)g(the)h Ft(k)150 2242 y Fu(k)m(ey)31 b(is)g(pressed)e (while)h(the)h(Con)m(trol)g(k)m(ey)g(is)g(depressed.)275 -2412 y(The)g(text)i Fj(M-k)e Fu(is)h(read)f(as)i(`Meta-K')g(and)f +2410 y(The)g(text)i Fj(M-k)e Fu(is)h(read)f(as)i(`Meta-K')g(and)f (describ)s(es)f(the)h(c)m(haracter)h(pro)s(duced)e(when)f(the)i(Meta) -150 2521 y(k)m(ey)i(\(if)f(y)m(ou)h(ha)m(v)m(e)g(one\))g(is)f +150 2520 y(k)m(ey)i(\(if)f(y)m(ou)h(ha)m(v)m(e)g(one\))g(is)f (depressed,)g(and)f(the)h Ft(k)g Fu(k)m(ey)h(is)f(pressed.)48 b(The)32 b(Meta)j(k)m(ey)e(is)h(lab)s(eled)f Ft(ALT)150 -2631 y Fu(on)c(man)m(y)h(k)m(eyb)s(oards.)40 b(On)29 +2629 y Fu(on)c(man)m(y)h(k)m(eyb)s(oards.)40 b(On)29 b(k)m(eyb)s(oards)g(with)h(t)m(w)m(o)h(k)m(eys)f(lab)s(eled)g Ft(ALT)e Fu(\(usually)i(to)g(either)g(side)g(of)g(the)150 -2740 y(space)h(bar\),)f(the)g Ft(ALT)f Fu(on)h(the)g(left)h(side)f(is)g +2739 y(space)h(bar\),)f(the)g Ft(ALT)f Fu(on)h(the)g(left)h(side)f(is)g (generally)h(set)f(to)h(w)m(ork)f(as)g(a)h(Meta)g(k)m(ey)-8 -b(.)42 b(The)29 b Ft(ALT)g Fu(k)m(ey)i(on)150 2850 y(the)c(righ)m(t)h +b(.)42 b(The)29 b Ft(ALT)g Fu(k)m(ey)i(on)150 2849 y(the)c(righ)m(t)h (ma)m(y)g(also)g(b)s(e)f(con\014gured)f(to)i(w)m(ork)f(as)h(a)f(Meta)i (k)m(ey)f(or)f(ma)m(y)h(b)s(e)e(con\014gured)h(as)g(some)h(other)150 -2960 y(mo)s(di\014er,)i(suc)m(h)g(as)g(a)h(Comp)s(ose)f(k)m(ey)h(for)f -(t)m(yping)h(accen)m(ted)h(c)m(haracters.)275 3130 y(If)23 +2958 y(mo)s(di\014er,)i(suc)m(h)g(as)g(a)h(Comp)s(ose)f(k)m(ey)h(for)f +(t)m(yping)h(accen)m(ted)h(c)m(haracters.)275 3127 y(If)23 b(y)m(ou)i(do)f(not)h(ha)m(v)m(e)h(a)f(Meta)g(or)g Ft(ALT)e Fu(k)m(ey)-8 b(,)27 b(or)e(another)f(k)m(ey)i(w)m(orking)e(as)h(a)g -(Meta)h(k)m(ey)-8 b(,)27 b(the)d(iden)m(tical)150 3239 +(Meta)h(k)m(ey)-8 b(,)27 b(the)d(iden)m(tical)150 3236 y(k)m(eystrok)m(e)30 b(can)f(b)s(e)f(generated)h(b)m(y)g(t)m(yping)g Ft(ESC)e Fl(\014rst)p Fu(,)j(and)e(then)g(t)m(yping)h Ft(k)p Fu(.)40 b(Either)28 b(pro)s(cess)g(is)g(kno)m(wn)150 -3349 y(as)j Fr(metafying)39 b Fu(the)30 b Ft(k)g Fu(k)m(ey)-8 -b(.)275 3519 y(The)39 b(text)j Fj(M-C-k)d Fu(is)h(read)g(as)h +3346 y(as)j Fr(metafying)39 b Fu(the)30 b Ft(k)g Fu(k)m(ey)-8 +b(.)275 3515 y(The)39 b(text)j Fj(M-C-k)d Fu(is)h(read)g(as)h (`Meta-Con)m(trol-k')j(and)39 b(describ)s(es)h(the)g(c)m(haracter)i -(pro)s(duced)d(b)m(y)150 3629 y Fr(metafying)g Fj(C-k)p -Fu(.)275 3799 y(In)c(addition,)j(sev)m(eral)f(k)m(eys)g(ha)m(v)m(e)g +(pro)s(duced)d(b)m(y)150 3624 y Fr(metafying)g Fj(C-k)p +Fu(.)275 3793 y(In)c(addition,)j(sev)m(eral)f(k)m(eys)g(ha)m(v)m(e)g (their)f(o)m(wn)g(names.)58 b(Sp)s(eci\014cally)-8 b(,)38 b Ft(DEL)p Fu(,)f Ft(ESC)p Fu(,)g Ft(LFD)p Fu(,)g Ft(SPC)p -Fu(,)g Ft(RET)p Fu(,)150 3908 y(and)d Ft(TAB)f Fu(all)j(stand)e(for)g +Fu(,)g Ft(RET)p Fu(,)150 3902 y(and)d Ft(TAB)f Fu(all)j(stand)e(for)g (themselv)m(es)i(when)d(seen)i(in)f(this)g(text,)j(or)d(in)h(an)f(init) -h(\014le)f(\(see)i(Section)f(8.3)150 4018 y([Readline)f(Init)g(File],)i +h(\014le)f(\(see)i(Section)f(8.3)150 4012 y([Readline)f(Init)g(File],)i (page)e(106\).)52 b(If)33 b(y)m(our)g(k)m(eyb)s(oard)h(lac)m(ks)g(a)g Ft(LFD)f Fu(k)m(ey)-8 b(,)36 b(t)m(yping)e Ft(C-j)e Fu(will)i(pro)s -(duce)150 4128 y(the)d(desired)e(c)m(haracter.)43 b(The)30 +(duce)150 4122 y(the)d(desired)e(c)m(haracter.)43 b(The)30 b Ft(RET)f Fu(k)m(ey)i(ma)m(y)g(b)s(e)f(lab)s(eled)h Ft(Return)d Fu(or)j Ft(Enter)d Fu(on)j(some)g(k)m(eyb)s(oards.)150 4413 y Fs(8.2)68 b(Readline)47 b(In)l(teraction)150 4573 @@ -15673,61 +15714,61 @@ Fu(c)m(haracters)i(will)150 1066 y(terminate)h(an)g(incremen)m(tal)g (searc)m(h)f(and)f(restore)h(the)150 1176 y(original)30 b(line.)41 b(When)28 b(the)h(searc)m(h)h(is)f(terminated,)h(the)f (history)g(en)m(try)g(con)m(taining)h(the)f(searc)m(h)h(string)150 -1285 y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 1428 +1285 y(b)s(ecomes)h(the)f(curren)m(t)g(line.)275 1427 y(T)-8 b(o)31 b(\014nd)e(other)j(matc)m(hing)g(en)m(tries)g(in)e(the)h (history)g(list,)h(t)m(yp)s(e)g Fj(C-r)e Fu(or)h Fj(C-s)f Fu(as)h(appropriate.)43 b(This)150 1537 y(will)26 b(searc)m(h)h(bac)m (kw)m(ard)g(or)f(forw)m(ard)g(in)f(the)i(history)f(for)g(the)g(next)g (en)m(try)h(matc)m(hing)g(the)f(searc)m(h)h(string)150 -1647 y(t)m(yp)s(ed)37 b(so)h(far.)63 b(An)m(y)38 b(other)f(k)m(ey)i +1646 y(t)m(yp)s(ed)37 b(so)h(far.)63 b(An)m(y)38 b(other)f(k)m(ey)i (sequence)f(b)s(ound)e(to)i(a)g(Readline)h(command)e(will)h(terminate)h -(the)150 1757 y(searc)m(h)26 b(and)f(execute)i(that)f(command.)39 +(the)150 1756 y(searc)m(h)26 b(and)f(execute)i(that)f(command.)39 b(F)-8 b(or)26 b(instance,)h(a)f Ft(RET)f Fu(will)g(terminate)i(the)f -(searc)m(h)g(and)e(accept)150 1866 y(the)30 b(line,)g(thereb)m(y)f +(searc)m(h)g(and)e(accept)150 1865 y(the)30 b(line,)g(thereb)m(y)f (executing)i(the)e(command)g(from)g(the)h(history)f(list.)41 -b(A)29 b(mo)m(v)m(emen)m(t)j(command)d(will)150 1976 +b(A)29 b(mo)m(v)m(emen)m(t)j(command)d(will)150 1975 y(terminate)i(the)g(searc)m(h,)g(mak)m(e)h(the)e(last)h(line)g(found)e (the)i(curren)m(t)f(line,)h(and)f(b)s(egin)g(editing.)275 -2119 y(Readline)35 b(remem)m(b)s(ers)f(the)h(last)h(incremen)m(tal)g +2117 y(Readline)35 b(remem)m(b)s(ers)f(the)h(last)h(incremen)m(tal)g (searc)m(h)f(string.)54 b(If)34 b(t)m(w)m(o)j Fj(C-r)p -Fu(s)c(are)i(t)m(yp)s(ed)g(without)150 2228 y(an)m(y)i(in)m(terv)m +Fu(s)c(are)i(t)m(yp)s(ed)g(without)150 2226 y(an)m(y)i(in)m(terv)m (ening)g(c)m(haracters)h(de\014ning)e(a)h(new)f(searc)m(h)h(string,)h (an)m(y)f(remem)m(b)s(ered)e(searc)m(h)i(string)g(is)150 -2338 y(used.)275 2480 y(Non-incremen)m(tal)48 b(searc)m(hes)g(read)e +2336 y(used.)275 2478 y(Non-incremen)m(tal)48 b(searc)m(hes)g(read)e (the)h(en)m(tire)h(searc)m(h)f(string)g(b)s(efore)f(starting)h(to)h -(searc)m(h)f(for)150 2590 y(matc)m(hing)d(history)e(lines.)78 +(searc)m(h)f(for)150 2587 y(matc)m(hing)d(history)e(lines.)78 b(The)42 b(searc)m(h)h(string)g(ma)m(y)g(b)s(e)f(t)m(yp)s(ed)g(b)m(y)g -(the)h(user)f(or)h(b)s(e)f(part)g(of)h(the)150 2700 y(con)m(ten)m(ts)32 -b(of)f(the)f(curren)m(t)g(line.)150 2944 y Fs(8.3)68 -b(Readline)47 b(Init)e(File)150 3104 y Fu(Although)f(the)g(Readline)g +(the)h(user)f(or)h(b)s(e)f(part)g(of)h(the)150 2697 y(con)m(ten)m(ts)32 +b(of)f(the)f(curren)m(t)g(line.)150 2949 y Fs(8.3)68 +b(Readline)47 b(Init)e(File)150 3108 y Fu(Although)f(the)g(Readline)g (library)f(comes)i(with)e(a)h(set)h(of)f(Emacs-lik)m(e)h(k)m -(eybindings)f(installed)g(b)m(y)150 3213 y(default,)26 +(eybindings)f(installed)g(b)m(y)150 3218 y(default,)26 b(it)g(is)e(p)s(ossible)h(to)g(use)f(a)i(di\013eren)m(t)f(set)g(of)g(k) m(eybindings.)38 b(An)m(y)25 b(user)f(can)h(customize)h(programs)150 -3323 y(that)45 b(use)f(Readline)h(b)m(y)f(putting)g(commands)g(in)g(an) +3327 y(that)45 b(use)f(Readline)h(b)m(y)f(putting)g(commands)g(in)g(an) g Fr(inputrc)49 b Fu(\014le,)g(con)m(v)m(en)m(tionally)e(in)d(his)g -(home)150 3433 y(directory)-8 b(.)59 b(The)35 b(name)i(of)f(this)g +(home)150 3437 y(directory)-8 b(.)59 b(The)35 b(name)i(of)f(this)g (\014le)g(is)g(tak)m(en)h(from)f(the)g(v)-5 b(alue)37 b(of)f(the)g(shell)h(v)-5 b(ariable)36 b Ft(INPUTRC)p -Fu(.)56 b(If)150 3542 y(that)36 b(v)-5 b(ariable)36 b(is)f(unset,)h +Fu(.)56 b(If)150 3546 y(that)36 b(v)-5 b(ariable)36 b(is)f(unset,)h (the)f(default)h(is)f Ft(~/.inputrc)p Fu(.)52 b(If)35 b(that)g(\014le)h(do)s(es)e(not)i(exist)g(or)f(cannot)h(b)s(e)150 -3652 y(read,)31 b(the)f(ultimate)i(default)e(is)h Ft(/etc/inputrc)p -Fu(.)275 3794 y(When)e(a)h(program)f(whic)m(h)h(uses)f(the)h(Readline)g +3656 y(read,)31 b(the)f(ultimate)i(default)e(is)h Ft(/etc/inputrc)p +Fu(.)275 3798 y(When)e(a)h(program)f(whic)m(h)h(uses)f(the)h(Readline)g (library)f(starts)h(up,)f(the)h(init)g(\014le)f(is)h(read,)g(and)f(the) -150 3904 y(k)m(ey)i(bindings)e(are)i(set.)275 4047 y(In)26 +150 3907 y(k)m(ey)i(bindings)e(are)i(set.)275 4049 y(In)26 b(addition,)i(the)f Ft(C-x)i(C-r)d Fu(command)h(re-reads)g(this)f(init) h(\014le,)h(th)m(us)f(incorp)s(orating)g(an)m(y)g(c)m(hanges)150 -4156 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g(it.)150 -4364 y Fk(8.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)150 -4511 y Fu(There)f(are)i(only)f(a)g(few)g(basic)g(constructs)h(allo)m(w) +4159 y(that)k(y)m(ou)g(migh)m(t)g(ha)m(v)m(e)g(made)g(to)g(it.)150 +4365 y Fk(8.3.1)63 b(Readline)40 b(Init)h(File)g(Syn)m(tax)150 +4512 y Fu(There)f(are)i(only)f(a)g(few)g(basic)g(constructs)h(allo)m(w) m(ed)h(in)d(the)h(Readline)h(init)f(\014le.)73 b(Blank)41 -b(lines)h(are)150 4620 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h +b(lines)h(are)150 4622 y(ignored.)72 b(Lines)41 b(b)s(eginning)f(with)h (a)g(`)p Ft(#)p Fu(')g(are)h(commen)m(ts.)73 b(Lines)41 b(b)s(eginning)f(with)g(a)i(`)p Ft($)p Fu(')f(indicate)150 -4730 y(conditional)e(constructs)f(\(see)g(Section)h(8.3.2)g +4731 y(conditional)e(constructs)f(\(see)g(Section)h(8.3.2)g ([Conditional)g(Init)e(Constructs],)j(page)e(114\).)64 -b(Other)150 4839 y(lines)31 b(denote)g(v)-5 b(ariable)31 +b(Other)150 4841 y(lines)31 b(denote)g(v)-5 b(ariable)31 b(settings)g(and)f(k)m(ey)h(bindings.)150 5011 y(V)-8 b(ariable)32 b(Settings)630 5121 y(Y)-8 b(ou)41 b(can)g(mo)s(dify)e (the)i(run-time)f(b)s(eha)m(vior)g(of)h(Readline)g(b)m(y)f(altering)h @@ -16360,47 +16401,47 @@ TeXDict begin 118 123 bop 150 -116 a Fu(Chapter)30 b(8:)41 b(Command)29 b(Line)i(Editing)2062 b(118)390 299 y Ft(#)47 b(For)g(FTP)390 408 y($if)g(Ftp)390 518 y("\\C-xg":)f("get)g(\\M-?")390 628 y("\\C-xt":)g("put)g(\\M-?")390 737 y("\\M-.":)g(yank-last-arg)390 -847 y($endif)150 1075 y Fs(8.4)68 b(Bindable)45 b(Readline)i(Commands) -150 1235 y Fu(This)32 b(section)h(describ)s(es)f(Readline)h(commands)f +847 y($endif)150 1083 y Fs(8.4)68 b(Bindable)45 b(Readline)i(Commands) +150 1242 y Fu(This)32 b(section)h(describ)s(es)f(Readline)h(commands)f (that)h(ma)m(y)h(b)s(e)d(b)s(ound)g(to)i(k)m(ey)g(sequences.)48 -b(Y)-8 b(ou)33 b(can)150 1344 y(list)40 b(y)m(our)f(k)m(ey)i(bindings)d +b(Y)-8 b(ou)33 b(can)150 1352 y(list)40 b(y)m(our)f(k)m(ey)i(bindings)d (b)m(y)h(executing)i Ft(bind)29 b(-P)39 b Fu(or,)j(for)d(a)h(more)g -(terse)g(format,)i(suitable)e(for)f(an)150 1454 y Fr(inputrc)34 +(terse)g(format,)i(suitable)e(for)f(an)150 1461 y Fr(inputrc)34 b Fu(\014le,)29 b Ft(bind)g(-p)p Fu(.)40 b(\(See)30 b(Section)f(4.2)h ([Bash)g(Builtins],)g(page)g(48.\))41 b(Command)28 b(names)h(without) -150 1563 y(an)h(accompan)m(ying)i(k)m(ey)f(sequence)g(are)g(un)m(b)s -(ound)d(b)m(y)i(default.)275 1696 y(In)25 b(the)h(follo)m(wing)i +150 1571 y(an)h(accompan)m(ying)i(k)m(ey)f(sequence)g(are)g(un)m(b)s +(ound)d(b)m(y)i(default.)275 1703 y(In)25 b(the)h(follo)m(wing)i (descriptions,)f Fr(p)s(oin)m(t)h Fu(refers)e(to)h(the)f(curren)m(t)g (cursor)g(p)s(osition,)h(and)f Fr(mark)31 b Fu(refers)150 -1805 y(to)40 b(a)f(cursor)f(p)s(osition)h(sa)m(v)m(ed)h(b)m(y)f(the)g +1813 y(to)40 b(a)f(cursor)f(p)s(osition)h(sa)m(v)m(ed)h(b)m(y)f(the)g Ft(set-mark)d Fu(command.)66 b(The)38 b(text)i(b)s(et)m(w)m(een)g(the)f -(p)s(oin)m(t)g(and)150 1915 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f -Fr(region)p Fu(.)150 2110 y Fk(8.4.1)63 b(Commands)42 -b(F)-10 b(or)41 b(Mo)m(ving)150 2280 y Ft(beginning-of-line)26 -b(\(C-a\))630 2390 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f -(curren)m(t)g(line.)150 2545 y Ft(end-of-line)d(\(C-e\))630 -2655 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 -2810 y Ft(forward-char)c(\(C-f\))630 2920 y Fu(Mo)m(v)m(e)32 -b(forw)m(ard)e(a)h(c)m(haracter.)150 3075 y Ft(backward-char)c(\(C-b\)) -630 3185 y Fu(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150 -3340 y Ft(forward-word)d(\(M-f\))630 3450 y Fu(Mo)m(v)m(e)32 +(p)s(oin)m(t)g(and)150 1922 y(mark)30 b(is)h(referred)e(to)i(as)g(the)f +Fr(region)p Fu(.)150 2117 y Fk(8.4.1)63 b(Commands)42 +b(F)-10 b(or)41 b(Mo)m(ving)150 2286 y Ft(beginning-of-line)26 +b(\(C-a\))630 2396 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(start)h(of)g(the)f +(curren)m(t)g(line.)150 2551 y Ft(end-of-line)d(\(C-e\))630 +2660 y Fu(Mo)m(v)m(e)32 b(to)g(the)e(end)g(of)g(the)h(line.)150 +2815 y Ft(forward-char)c(\(C-f\))630 2924 y Fu(Mo)m(v)m(e)32 +b(forw)m(ard)e(a)h(c)m(haracter.)150 3079 y Ft(backward-char)c(\(C-b\)) +630 3189 y Fu(Mo)m(v)m(e)32 b(bac)m(k)g(a)e(c)m(haracter.)150 +3343 y Ft(forward-word)d(\(M-f\))630 3453 y Fu(Mo)m(v)m(e)32 b(forw)m(ard)e(to)h(the)f(end)g(of)g(the)h(next)f(w)m(ord.)41 b(W)-8 b(ords)30 b(are)h(comp)s(osed)f(of)g(letters)i(and)630 -3559 y(digits.)150 3715 y Ft(backward-word)27 b(\(M-b\))630 -3824 y Fu(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g +3563 y(digits.)150 3717 y Ft(backward-word)27 b(\(M-b\))630 +3827 y Fu(Mo)m(v)m(e)36 b(bac)m(k)e(to)g(the)g(start)g(of)g(the)g (curren)m(t)f(or)g(previous)g(w)m(ord.)50 b(W)-8 b(ords)34 -b(are)g(comp)s(osed)630 3934 y(of)d(letters)g(and)f(digits.)150 -4089 y Ft(shell-forward-word)25 b(\(\))630 4199 y Fu(Mo)m(v)m(e)30 +b(are)g(comp)s(osed)630 3936 y(of)d(letters)g(and)f(digits.)150 +4091 y Ft(shell-forward-word)25 b(\(\))630 4201 y Fu(Mo)m(v)m(e)30 b(forw)m(ard)e(to)h(the)f(end)f(of)h(the)h(next)f(w)m(ord.)40 b(W)-8 b(ords)28 b(are)g(delimited)h(b)m(y)f(non-quoted)630 -4308 y(shell)j(metac)m(haracters.)150 4464 y Ft(shell-backward-word)25 -b(\(\))630 4573 y Fu(Mo)m(v)m(e)37 b(bac)m(k)e(to)h(the)f(start)g(of)g +4310 y(shell)j(metac)m(haracters.)150 4465 y Ft(shell-backward-word)25 +b(\(\))630 4575 y Fu(Mo)m(v)m(e)37 b(bac)m(k)e(to)h(the)f(start)g(of)g (the)g(curren)m(t)g(or)f(previous)h(w)m(ord.)53 b(W)-8 -b(ords)35 b(are)g(delimited)630 4683 y(b)m(y)30 b(non-quoted)h(shell)f -(metac)m(haracters.)150 4838 y Ft(clear-screen)d(\(C-l\))630 +b(ords)35 b(are)g(delimited)630 4684 y(b)m(y)30 b(non-quoted)h(shell)f +(metac)m(haracters.)150 4839 y Ft(clear-screen)d(\(C-l\))630 4948 y Fu(Clear)g(the)g(screen)f(and)h(redra)m(w)f(the)h(curren)m(t)f (line,)i(lea)m(ving)g(the)f(curren)m(t)g(line)g(at)g(the)g(top)630 -5057 y(of)k(the)f(screen.)150 5213 y Ft(redraw-current-line)25 +5058 y(of)k(the)f(screen.)150 5213 y Ft(redraw-current-line)25 b(\(\))630 5322 y Fu(Refresh)30 b(the)g(curren)m(t)h(line.)41 b(By)30 b(default,)h(this)f(is)h(un)m(b)s(ound.)p eop end @@ -16931,50 +16972,50 @@ b(Command)29 b(Line)i(Editing)2062 b(127)150 299 y Ft (y)f Ft(glob-expand-word)630 518 y Fu(is)h(displa)m(y)m(ed,)h(and)e (the)h(line)g(is)f(redra)m(wn.)50 b(If)33 b(a)h(n)m(umeric)g(argumen)m (t)g(is)f(supplied,)h(a)g(`)p Ft(*)p Fu(')630 628 y(is)c(app)s(ended)f -(b)s(efore)h(pathname)g(expansion.)150 804 y Ft(display-shell-version) -25 b(\(C-x)k(C-v\))630 913 y Fu(Displa)m(y)j(v)m(ersion)e(information)h +(b)s(efore)h(pathname)g(expansion.)150 803 y Ft(display-shell-version) +25 b(\(C-x)k(C-v\))630 912 y Fu(Displa)m(y)j(v)m(ersion)e(information)h (ab)s(out)f(the)h(curren)m(t)f(instance)h(of)f(Bash.)150 -1089 y Ft(shell-expand-line)c(\(M-C-e\))630 1199 y Fu(Expand)34 +1088 y Ft(shell-expand-line)c(\(M-C-e\))630 1197 y Fu(Expand)34 b(the)h(line)h(as)g(the)f(shell)h(do)s(es.)55 b(This)34 b(p)s(erforms)g(alias)i(and)f(history)g(expansion)630 -1308 y(as)f(w)m(ell)g(as)g(all)h(of)e(the)h(shell)g(w)m(ord)f +1307 y(as)f(w)m(ell)g(as)g(all)h(of)e(the)h(shell)g(w)m(ord)f (expansions)g(\(see)i(Section)f(3.5)h([Shell)e(Expansions],)630 -1418 y(page)e(21\).)150 1594 y Ft(history-expand-line)25 -b(\(M-^\))630 1703 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the) -h(curren)m(t)f(line.)150 1879 y Ft(magic-space)d(\(\))630 -1989 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g(curren)m(t)g +1416 y(page)e(21\).)150 1592 y Ft(history-expand-line)25 +b(\(M-^\))630 1701 y Fu(P)m(erform)30 b(history)h(expansion)f(on)g(the) +h(curren)m(t)f(line.)150 1876 y Ft(magic-space)d(\(\))630 +1986 y Fu(P)m(erform)c(history)g(expansion)g(on)g(the)g(curren)m(t)g (line)g(and)g(insert)g(a)g(space)h(\(see)g(Section)g(9.3)630 -2098 y([History)31 b(In)m(teraction],)i(page)e(138\).)150 -2274 y Ft(alias-expand-line)26 b(\(\))630 2384 y Fu(P)m(erform)i(alias) +2096 y([History)31 b(In)m(teraction],)i(page)e(138\).)150 +2271 y Ft(alias-expand-line)26 b(\(\))630 2380 y Fu(P)m(erform)i(alias) i(expansion)e(on)g(the)h(curren)m(t)f(line)h(\(see)g(Section)g(6.6)h -([Aliases],)g(page)f(89\).)150 2560 y Ft(history-and-alias-expand)o -(-lin)o(e)24 b(\(\))630 2669 y Fu(P)m(erform)30 b(history)h(and)e +([Aliases],)g(page)f(89\).)150 2556 y Ft(history-and-alias-expand)o +(-lin)o(e)24 b(\(\))630 2665 y Fu(P)m(erform)30 b(history)h(and)e (alias)j(expansion)e(on)g(the)h(curren)m(t)f(line.)150 -2845 y Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630 -2955 y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150 -3131 y Ft(operate-and-get-next)25 b(\(C-o\))630 3240 +2840 y Ft(insert-last-argument)25 b(\(M-.)k(or)h(M-_\))630 +2950 y Fu(A)g(synon)m(ym)g(for)g Ft(yank-last-arg)p Fu(.)150 +3125 y Ft(operate-and-get-next)25 b(\(C-o\))630 3235 y Fu(Accept)42 b(the)e(curren)m(t)h(line)f(for)h(execution)g(and)f (fetc)m(h)i(the)e(next)h(line)g(relativ)m(e)i(to)e(the)630 -3350 y(curren)m(t)30 b(line)h(from)f(the)g(history)h(for)f(editing.)41 -b(An)m(y)31 b(argumen)m(t)f(is)h(ignored.)150 3526 y -Ft(edit-and-execute-command)24 b(\(C-xC-e\))630 3635 +3344 y(curren)m(t)30 b(line)h(from)f(the)g(history)h(for)f(editing.)41 +b(An)m(y)31 b(argumen)m(t)f(is)h(ignored.)150 3520 y +Ft(edit-and-execute-command)24 b(\(C-xC-e\))630 3629 y Fu(In)m(v)m(ok)m(e)34 b(an)f(editor)g(on)g(the)g(curren)m(t)f (command)h(line,)h(and)e(execute)i(the)f(result)g(as)g(shell)630 -3745 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h +3739 y(commands.)81 b(Bash)44 b(attempts)h(to)g(in)m(v)m(ok)m(e)h Ft($VISUAL)p Fu(,)f Ft($EDITOR)p Fu(,)h(and)d Ft(emacs)g -Fu(as)h(the)630 3854 y(editor,)31 b(in)f(that)h(order.)150 -4112 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 4271 +Fu(as)h(the)630 3848 y(editor,)31 b(in)f(that)h(order.)150 +4113 y Fs(8.5)68 b(Readline)47 b(vi)e(Mo)t(de)150 4272 y Fu(While)32 b(the)g(Readline)g(library)f(do)s(es)g(not)h(ha)m(v)m(e)h (a)f(full)f(set)h(of)g Ft(vi)f Fu(editing)h(functions,)f(it)h(do)s(es)g -(con)m(tain)150 4381 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f +(con)m(tain)150 4382 y(enough)i(to)h(allo)m(w)g(simple)f(editing)h(of)f (the)g(line.)52 b(The)34 b(Readline)g Ft(vi)g Fu(mo)s(de)f(b)s(eha)m(v) -m(es)i(as)f(sp)s(eci\014ed)f(in)150 4490 y(the)e Fm(posix)e -Fu(standard.)275 4641 y(In)35 b(order)g(to)i(switc)m(h)f(in)m(teractiv) +m(es)i(as)f(sp)s(eci\014ed)f(in)150 4491 y(the)e Fm(posix)e +Fu(standard.)275 4642 y(In)35 b(order)g(to)i(switc)m(h)f(in)m(teractiv) m(ely)j(b)s(et)m(w)m(een)d Ft(emacs)f Fu(and)g Ft(vi)g Fu(editing)h(mo)s(des,)h(use)f(the)g(`)p Ft(set)30 b(-o)150 4751 y(emacs)p Fu(')43 b(and)h(`)p Ft(set)30 b(-o)f(vi)p Fu(')44 b(commands)g(\(see)i(Section)f(4.3.1)h([The)e(Set)h(Builtin],)j -(page)e(59\).)83 b(The)150 4860 y(Readline)31 b(default)g(is)f +(page)e(59\).)83 b(The)150 4861 y(Readline)31 b(default)g(is)f Ft(emacs)f Fu(mo)s(de.)275 5011 y(When)g(y)m(ou)i(en)m(ter)f(a)h(line)f (in)g Ft(vi)f Fu(mo)s(de,)h(y)m(ou)h(are)f(already)h(placed)f(in)g (`insertion')g(mo)s(de,)g(as)h(if)f(y)m(ou)150 5121 y(had)f(t)m(yp)s @@ -17181,63 +17222,63 @@ b(Command)29 b(Line)i(Editing)2062 b(130)390 299 y Ft ("/etc/bash_completion.d/$1)o(.sh)o(")42 b(>/dev/null)j(2>&1)i(&&)g (return)f(124)390 628 y(})390 737 y(complete)g(-D)h(-F)g (_completion_loader)c(-o)k(bashdefault)e(-o)i(default)150 -965 y Fs(8.7)68 b(Programmable)47 b(Completion)f(Builtins)150 -1124 y Fu(Three)21 b(builtin)g(commands)f(are)i(a)m(v)-5 +972 y Fs(8.7)68 b(Programmable)47 b(Completion)f(Builtins)150 +1131 y Fu(Three)21 b(builtin)g(commands)f(are)i(a)m(v)-5 b(ailable)24 b(to)e(manipulate)f(the)h(programmable)f(completion)h -(facilities:)150 1234 y(one)34 b(to)g(sp)s(ecify)f(ho)m(w)h(the)f +(facilities:)150 1241 y(one)34 b(to)g(sp)s(ecify)f(ho)m(w)h(the)f (argumen)m(ts)h(to)g(a)g(particular)g(command)f(are)h(to)g(b)s(e)f -(completed,)j(and)d(t)m(w)m(o)150 1344 y(to)e(mo)s(dify)f(the)g -(completion)i(as)e(it)h(is)g(happ)s(ening.)150 1498 y -Ft(compgen)870 1630 y(compgen)46 b([)p Fj(option)p Ft(])f([)p -Fj(word)p Ft(])630 1762 y Fu(Generate)27 b(p)s(ossible)e(completion)i +(completed,)j(and)d(t)m(w)m(o)150 1351 y(to)e(mo)s(dify)f(the)g +(completion)i(as)e(it)h(is)g(happ)s(ening.)150 1504 y +Ft(compgen)870 1636 y(compgen)46 b([)p Fj(option)p Ft(])f([)p +Fj(word)p Ft(])630 1767 y Fu(Generate)27 b(p)s(ossible)e(completion)i (matc)m(hes)g(for)e Fr(w)m(ord)k Fu(according)e(to)f(the)g -Fr(option)p Fu(s,)h(whic)m(h)630 1872 y(ma)m(y)32 b(b)s(e)f(an)m(y)h +Fr(option)p Fu(s,)h(whic)m(h)630 1877 y(ma)m(y)32 b(b)s(e)f(an)m(y)h (option)g(accepted)g(b)m(y)g(the)f Ft(complete)f Fu(builtin)h(with)g -(the)g(exception)i(of)f Ft(-p)630 1982 y Fu(and)39 b +(the)g(exception)i(of)f Ft(-p)630 1986 y Fu(and)39 b Ft(-r)p Fu(,)i(and)e(write)h(the)g(matc)m(hes)g(to)g(the)g(standard)f -(output.)68 b(When)39 b(using)g(the)h Ft(-F)630 2091 +(output.)68 b(When)39 b(using)g(the)h Ft(-F)630 2096 y Fu(or)33 b Ft(-C)f Fu(options,)i(the)e(v)-5 b(arious)33 b(shell)g(v)-5 b(ariables)33 b(set)g(b)m(y)g(the)g(programmable)g -(completion)630 2201 y(facilities,)g(while)d(a)m(v)-5 +(completion)630 2206 y(facilities,)g(while)d(a)m(v)-5 b(ailable,)33 b(will)e(not)g(ha)m(v)m(e)g(useful)f(v)-5 -b(alues.)630 2333 y(The)34 b(matc)m(hes)h(will)g(b)s(e)f(generated)h +b(alues.)630 2337 y(The)34 b(matc)m(hes)h(will)g(b)s(e)f(generated)h (in)f(the)h(same)g(w)m(a)m(y)g(as)g(if)f(the)h(programmable)f(com-)630 -2443 y(pletion)d(co)s(de)g(had)f(generated)i(them)e(directly)i(from)e -(a)h(completion)h(sp)s(eci\014cation)f(with)630 2552 +2447 y(pletion)d(co)s(de)g(had)f(generated)i(them)e(directly)i(from)e +(a)h(completion)h(sp)s(eci\014cation)f(with)630 2556 y(the)e(same)h(\015ags.)40 b(If)29 b Fr(w)m(ord)j Fu(is)d(sp)s (eci\014ed,)g(only)g(those)h(completions)g(matc)m(hing)g -Fr(w)m(ord)j Fu(will)630 2662 y(b)s(e)d(displa)m(y)m(ed.)630 -2794 y(The)24 b(return)g(v)-5 b(alue)25 b(is)g(true)f(unless)g(an)h(in) +Fr(w)m(ord)j Fu(will)630 2666 y(b)s(e)d(displa)m(y)m(ed.)630 +2797 y(The)24 b(return)g(v)-5 b(alue)25 b(is)g(true)f(unless)g(an)h(in) m(v)-5 b(alid)25 b(option)g(is)g(supplied,)f(or)h(no)g(matc)m(hes)g(w)m -(ere)630 2903 y(generated.)150 3058 y Ft(complete)870 -3190 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p -Ft(])e([-DE])h([-A)h Fj(action)p Ft(])f([-)870 3300 y(G)h -Fj(globpat)p Ft(])f([-W)h Fj(wordlist)p Ft(])870 3409 +(ere)630 2907 y(generated.)150 3060 y Ft(complete)870 +3192 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p +Ft(])e([-DE])h([-A)h Fj(action)p Ft(])f([-)870 3302 y(G)h +Fj(globpat)p Ft(])f([-W)h Fj(wordlist)p Ft(])870 3411 y([-F)g Fj(function)p Ft(])e([-C)i Fj(command)p Ft(])f([-X)h -Fj(filterpat)p Ft(])870 3519 y([-P)g Fj(prefix)p Ft(])f([-S)h +Fj(filterpat)p Ft(])870 3521 y([-P)g Fj(prefix)p Ft(])f([-S)h Fj(suffix)p Ft(])e Fj(name)i Ft([)p Fj(name)f Ft(...])870 -3629 y(complete)g(-pr)g([-DE])h([)p Fj(name)f Ft(...)o(])630 -3761 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i(eac)m(h)g +3630 y(complete)g(-pr)g([-DE])h([)p Fj(name)f Ft(...)o(])630 +3762 y Fu(Sp)s(ecify)37 b(ho)m(w)h(argumen)m(ts)f(to)i(eac)m(h)g Fr(name)j Fu(should)37 b(b)s(e)g(completed.)63 b(If)38 -b(the)f Ft(-p)g Fu(option)630 3870 y(is)30 b(supplied,)e(or)i(if)g(no)f +b(the)f Ft(-p)g Fu(option)630 3871 y(is)30 b(supplied,)e(or)i(if)g(no)f (options)h(are)g(supplied,)f(existing)h(completion)h(sp)s -(eci\014cations)g(are)630 3980 y(prin)m(ted)24 b(in)h(a)g(w)m(a)m(y)g +(eci\014cations)g(are)630 3981 y(prin)m(ted)24 b(in)h(a)g(w)m(a)m(y)g (that)h(allo)m(ws)g(them)e(to)i(b)s(e)e(reused)f(as)i(input.)38 -b(The)24 b Ft(-r)g Fu(option)i(remo)m(v)m(es)630 4089 +b(The)24 b Ft(-r)g Fu(option)i(remo)m(v)m(es)630 4091 y(a)i(completion)h(sp)s(eci\014cation)f(for)g(eac)m(h)h Fr(name)p Fu(,)f(or,)h(if)e(no)h Fr(name)5 b Fu(s)27 -b(are)h(supplied,)g(all)g(com-)630 4199 y(pletion)k(sp)s +b(are)h(supplied,)g(all)g(com-)630 4200 y(pletion)k(sp)s (eci\014cations.)44 b(The)30 b Ft(-D)h Fu(option)h(indicates)g(that)f -(the)h(remaining)f(options)h(and)630 4309 y(actions)27 +(the)h(remaining)f(options)h(and)630 4310 y(actions)27 b(should)e(apply)g(to)i(the)f(\\default")h(command)e(completion;)k -(that)e(is,)g(completion)630 4418 y(attempted)g(on)f(a)h(command)f(for) +(that)e(is,)g(completion)630 4419 y(attempted)g(on)f(a)h(command)f(for) g(whic)m(h)g(no)g(completion)i(has)d(previously)h(b)s(een)g(de\014ned.) -630 4528 y(The)f Ft(-E)g Fu(option)h(indicates)h(that)f(the)g +630 4529 y(The)f Ft(-E)g Fu(option)h(indicates)h(that)f(the)g (remaining)g(options)g(and)f(actions)i(should)e(apply)g(to)630 -4637 y(\\empt)m(y")32 b(command)e(completion;)i(that)f(is,)f +4639 y(\\empt)m(y")32 b(command)e(completion;)i(that)f(is,)f (completion)i(attempted)f(on)g(a)f(blank)g(line.)630 -4769 y(The)f(pro)s(cess)g(of)h(applying)g(these)g(completion)g(sp)s -(eci\014cations)h(when)d(w)m(ord)i(completion)630 4879 +4770 y(The)f(pro)s(cess)g(of)h(applying)g(these)g(completion)g(sp)s +(eci\014cations)h(when)d(w)m(ord)i(completion)630 4880 y(is)35 b(attempted)h(is)f(describ)s(ed)f(ab)s(o)m(v)m(e)j(\(see)f (Section)g(8.6)g([Programmable)g(Completion],)630 4989 y(page)31 b(128\).)42 b(The)30 b Ft(-D)g Fu(option)h(tak)m(es)h @@ -17368,64 +17409,64 @@ b(Command)29 b(Line)i(Editing)2062 b(133)630 299 y Ft(-P)30 b Fj(prefix)66 b Fr(pre\014x)39 b Fu(is)34 b(added)f(at)i(the)f(b)s (eginning)f(of)i(eac)m(h)g(p)s(ossible)e(completion)i(after)1110 408 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630 -568 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20 +567 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20 b(app)s(ended)f(to)i(eac)m(h)h(p)s(ossible)e(completion)i(after)f(all)g -(other)g(options)1110 678 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630 -837 y Ft(-W)h Fj(wordlist)1110 947 y Fu(The)24 b Fr(w)m(ordlist)k +(other)g(options)1110 677 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630 +835 y Ft(-W)h Fj(wordlist)1110 945 y Fu(The)24 b Fr(w)m(ordlist)k Fu(is)d(split)g(using)f(the)h(c)m(haracters)i(in)d(the)i -Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 1056 y(as)36 +Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 1054 y(as)36 b(delimiters,)i(and)e(eac)m(h)h(resultan)m(t)g(w)m(ord)e(is)h -(expanded.)57 b(The)35 b(p)s(ossible)1110 1166 y(completions)c(are)e +(expanded.)57 b(The)35 b(p)s(ossible)1110 1164 y(completions)c(are)e (the)h(mem)m(b)s(ers)f(of)g(the)h(resultan)m(t)g(list)g(whic)m(h)f -(matc)m(h)i(the)1110 1276 y(w)m(ord)f(b)s(eing)g(completed.)630 -1435 y Ft(-X)g Fj(filterpat)1110 1545 y Fr(\014lterpat)d +(matc)m(h)i(the)1110 1274 y(w)m(ord)f(b)s(eing)g(completed.)630 +1432 y Ft(-X)g Fj(filterpat)1110 1542 y Fr(\014lterpat)d Fu(is)e(a)g(pattern)g(as)f(used)g(for)h(\014lename)g(expansion.)38 -b(It)25 b(is)g(applied)f(to)1110 1654 y(the)30 b(list)f(of)h(p)s +b(It)25 b(is)g(applied)f(to)1110 1651 y(the)30 b(list)f(of)h(p)s (ossible)f(completions)h(generated)h(b)m(y)e(the)g(preceding)h(options) -1110 1764 y(and)d(argumen)m(ts,)i(and)e(eac)m(h)i(completion)g(matc)m -(hing)g Fr(\014lterpat)h Fu(is)e(remo)m(v)m(ed)1110 1874 +1110 1761 y(and)d(argumen)m(ts,)i(and)e(eac)m(h)i(completion)g(matc)m +(hing)g Fr(\014lterpat)h Fu(is)e(remo)m(v)m(ed)1110 1871 y(from)i(the)h(list.)42 b(A)30 b(leading)i(`)p Ft(!)p Fu(')e(in)g Fr(\014lterpat)j Fu(negates)f(the)f(pattern;)g(in)f(this) -1110 1983 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g -Fr(\014lterpat)i Fu(is)d(remo)m(v)m(ed.)630 2143 y(The)35 +1110 1980 y(case,)i(an)m(y)e(completion)i(not)f(matc)m(hing)g +Fr(\014lterpat)i Fu(is)d(remo)m(v)m(ed.)630 2139 y(The)35 b(return)g(v)-5 b(alue)37 b(is)f(true)f(unless)h(an)f(in)m(v)-5 b(alid)37 b(option)f(is)g(supplied,)g(an)g(option)h(other)630 -2252 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f +2248 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f Fr(name)44 b Fu(argumen)m(t,)c(an)e(attempt)i(is)e(made)g(to)630 -2362 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a) +2358 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a) h Fr(name)k Fu(for)30 b(whic)m(h)g(no)g(sp)s(eci\014cation)h(exists,) -630 2471 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s -(eci\014cation.)150 2631 y Ft(compopt)870 2766 y(compopt)46 +630 2468 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s +(eci\014cation.)150 2626 y Ft(compopt)870 2760 y(compopt)46 b([-o)h Fj(option)p Ft(])f([-DE])g([+o)h Fj(option)p -Ft(])f([)p Fj(name)p Ft(])630 2900 y Fu(Mo)s(dify)33 +Ft(])f([)p Fj(name)p Ft(])630 2894 y Fu(Mo)s(dify)33 b(completion)h(options)g(for)f(eac)m(h)h Fr(name)39 b Fu(according)34 b(to)g(the)f Fr(option)p Fu(s,)i(or)e(for)g(the)630 -3010 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f +3004 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f Fr(name)5 b Fu(s)44 b(are)h(supplied.)80 b(If)43 b(no)h -Fr(option)p Fu(s)h(are)630 3119 y(giv)m(en,)30 b(displa)m(y)e(the)g +Fr(option)p Fu(s)h(are)630 3114 y(giv)m(en,)30 b(displa)m(y)e(the)g (completion)h(options)g(for)e(eac)m(h)i Fr(name)34 b -Fu(or)27 b(the)i(curren)m(t)e(completion.)630 3229 y(The)f(p)s(ossible) +Fu(or)27 b(the)i(curren)m(t)e(completion.)630 3223 y(The)f(p)s(ossible) g(v)-5 b(alues)27 b(of)f Fr(option)h Fu(are)g(those)g(v)-5 b(alid)26 b(for)g(the)h Ft(complete)d Fu(builtin)i(describ)s(ed)630 -3339 y(ab)s(o)m(v)m(e.)41 b(The)28 b Ft(-D)g Fu(option)h(indicates)h +3333 y(ab)s(o)m(v)m(e.)41 b(The)28 b Ft(-D)g Fu(option)h(indicates)h (that)f(the)g(remaining)g(options)g(should)e(apply)h(to)i(the)630 -3448 y(\\default")j(command)f(completion;)i(that)f(is,)g(completion)g -(attempted)g(on)f(a)g(command)630 3558 y(for)g(whic)m(h)g(no)g +3442 y(\\default")j(command)f(completion;)i(that)f(is,)g(completion)g +(attempted)g(on)f(a)g(command)630 3552 y(for)g(whic)m(h)g(no)g (completion)i(has)e(previously)g(b)s(een)g(de\014ned.)45 -b(The)32 b Ft(-E)f Fu(option)i(indicates)630 3667 y(that)24 +b(The)32 b Ft(-E)f Fu(option)i(indicates)630 3662 y(that)24 b(the)g(remaining)g(options)g(should)e(apply)h(to)i(\\empt)m(y")g -(command)e(completion;)k(that)630 3777 y(is,)k(completion)g(attempted)h -(on)e(a)h(blank)f(line.)630 3911 y(The)g Ft(-D)g Fu(option)g(tak)m(es)i -(precedence)f(o)m(v)m(er)h Ft(-E)p Fu(.)630 4046 y(The)23 +(command)e(completion;)k(that)630 3771 y(is,)k(completion)g(attempted)h +(on)e(a)h(blank)f(line.)630 3905 y(The)g Ft(-D)g Fu(option)g(tak)m(es)i +(precedence)f(o)m(v)m(er)h Ft(-E)p Fu(.)630 4039 y(The)23 b(return)g(v)-5 b(alue)25 b(is)f(true)g(unless)f(an)h(in)m(v)-5 b(alid)24 b(option)h(is)f(supplied,)g(an)g(attempt)h(is)f(made)630 -4156 y(to)32 b(mo)s(dify)f(the)g(options)h(for)f(a)h +4149 y(to)32 b(mo)s(dify)f(the)g(options)h(for)f(a)h Fr(name)k Fu(for)31 b(whic)m(h)g(no)g(completion)i(sp)s(eci\014cation)f -(exists,)630 4265 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150 -4498 y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150 -4657 y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h +(exists,)630 4259 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150 +4499 y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150 +4658 y Fu(The)37 b(most)g(common)g(w)m(a)m(y)i(to)e(obtain)h (additional)g(completion)g(functionalit)m(y)h(b)s(ey)m(ond)d(the)i -(default)150 4767 y(actions)29 b Ft(complete)d Fu(and)i +(default)150 4768 y(actions)29 b Ft(complete)d Fu(and)i Ft(compgen)e Fu(pro)m(vide)i(is)h(to)f(use)g(a)h(shell)f(function)g (and)g(bind)e(it)j(to)g(a)g(particular)150 4877 y(command)h(using)g Ft(complete)e(-F)p Fu(.)275 5011 y(The)j(follo)m(wing)j(function)e(pro) @@ -17542,43 +17583,43 @@ Ft(cd)e Fu(command.)275 3601 y(Man)m(y)34 b(more)g(examples)g({)g(an)g 2943 3711 28 4 v 39 w(completion)i(pro)5 b(ject.)150 3821 y(This)33 b(is)h(installed)h(b)m(y)f(default)g(on)g(man)m(y)h (GNU/Lin)m(ux)f(distributions.)51 b(Originally)35 b(written)f(b)m(y)g -(Ian)150 3930 y(Macdonald,)45 b(the)c(pro)5 b(ject)42 -b(no)m(w)f(liv)m(es)i(at)f Ft(http:)9 b(/)g(/)e(bash-completio)o(n)i(.) -e(a)o(lio)o(th)i(.)d(debi)o(an)j(.)d(org)i(/)f Fu(.)150 -4040 y(There)30 b(are)h(p)s(orts)e(for)h(other)h(systems)f(suc)m(h)g -(as)h(Solaris)g(and)f(Mac)h(OS)f(X.)275 4174 y(An)54 -b(older)h(v)m(ersion)h(of)f(the)g(bash)p 1532 4174 V -40 w(completion)h(pac)m(k)-5 b(age)57 b(is)e(distributed)f(with)h(bash) -f(in)h(the)150 4284 y Ft(examples/complete)26 b Fu(sub)s(directory)-8 +(Ian)150 3930 y(Macdonald,)44 b(the)d(pro)5 b(ject)41 +b(no)m(w)f(liv)m(es)i(at)f Ft(http:)8 b(/)g(/)g(bash-completion)g(.)g +(alioth)g(.)g(debi)o(an)g(.)g(org)f(/)h Fu(.)150 4040 +y(There)30 b(are)h(p)s(orts)e(for)h(other)h(systems)f(suc)m(h)g(as)h +(Solaris)g(and)f(Mac)h(OS)f(X.)275 4174 y(An)54 b(older)h(v)m(ersion)h +(of)f(the)g(bash)p 1532 4174 V 40 w(completion)h(pac)m(k)-5 +b(age)57 b(is)e(distributed)f(with)h(bash)f(in)h(the)150 +4284 y Ft(examples/complete)26 b Fu(sub)s(directory)-8 b(.)p eop end %%Page: 136 142 TeXDict begin 136 141 bop 150 -116 a Fu(Chapter)30 b(9:)41 b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(136)150 299 y Fp(9)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)150 -543 y Fu(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the) +539 y Fu(This)42 b(c)m(hapter)h(describ)s(es)f(ho)m(w)g(to)h(use)g(the) f Fm(gnu)h Fu(History)g(Library)e(in)m(teractiv)m(ely)-8 -b(,)50 b(from)42 b(a)h(user's)150 653 y(standp)s(oin)m(t.)76 +b(,)50 b(from)42 b(a)h(user's)150 648 y(standp)s(oin)m(t.)76 b(It)42 b(should)f(b)s(e)h(considered)g(a)g(user's)g(guide.)76 b(F)-8 b(or)43 b(information)f(on)g(using)g(the)g Fm(gnu)150 -762 y Fu(History)31 b(Library)f(in)g(other)g(programs,)g(see)h(the)g -Fm(gnu)f Fu(Readline)h(Library)f(Man)m(ual.)150 1000 +758 y Fu(History)31 b(Library)f(in)g(other)g(programs,)g(see)h(the)g +Fm(gnu)f Fu(Readline)h(Library)f(Man)m(ual.)150 1001 y Fs(9.1)68 b(Bash)45 b(History)h(F)-11 b(acilities)150 -1159 y Fu(When)44 b(the)g Ft(-o)30 b(history)42 b Fu(option)i(to)h(the) +1161 y Fu(When)44 b(the)g Ft(-o)30 b(history)42 b Fu(option)i(to)h(the) f Ft(set)f Fu(builtin)h(is)g(enabled)g(\(see)g(Section)h(4.3.1)h([The)e -(Set)150 1269 y(Builtin],)32 b(page)g(59\),)h(the)e(shell)h(pro)m +(Set)150 1270 y(Builtin],)32 b(page)g(59\),)h(the)e(shell)h(pro)m (vides)f(access)h(to)g(the)f Fr(command)g(history)p Fu(,)h(the)f(list)h -(of)f(commands)150 1378 y(previously)h(t)m(yp)s(ed.)47 +(of)f(commands)150 1380 y(previously)h(t)m(yp)s(ed.)47 b(The)33 b(v)-5 b(alue)33 b(of)f(the)h Ft(HISTSIZE)e Fu(shell)h(v)-5 b(ariable)34 b(is)f(used)e(as)i(the)g(n)m(um)m(b)s(er)e -(of)i(com-)150 1488 y(mands)i(to)i(sa)m(v)m(e)h(in)e(a)g(history)h +(of)i(com-)150 1490 y(mands)i(to)i(sa)m(v)m(e)h(in)e(a)g(history)h (list.)58 b(The)36 b(text)h(of)g(the)f(last)h Ft($HISTSIZE)d -Fu(commands)i(\(default)g(500\))150 1597 y(is)h(sa)m(v)m(ed.)61 +Fu(commands)i(\(default)g(500\))150 1599 y(is)h(sa)m(v)m(ed.)61 b(The)36 b(shell)h(stores)h(eac)m(h)g(command)e(in)h(the)g(history)g (list)g(prior)f(to)i(parameter)f(and)f(v)-5 b(ari-)150 -1707 y(able)33 b(expansion)g(but)f(after)h(history)f(expansion)h(is)g +1709 y(able)33 b(expansion)g(but)f(after)h(history)f(expansion)h(is)g (p)s(erformed,)e(sub)5 b(ject)33 b(to)g(the)g(v)-5 b(alues)33 -b(of)g(the)g(shell)150 1817 y(v)-5 b(ariables)31 b Ft(HISTIGNORE)d -Fu(and)h Ft(HISTCONTROL)p Fu(.)275 1954 y(When)g(the)g(shell)h(starts)g +b(of)g(the)g(shell)150 1818 y(v)-5 b(ariables)31 b Ft(HISTIGNORE)d +Fu(and)h Ft(HISTCONTROL)p Fu(.)275 1955 y(When)g(the)g(shell)h(starts)g (up,)f(the)h(history)f(is)h(initialized)h(from)e(the)h(\014le)f(named)g (b)m(y)h(the)f Ft(HISTFILE)150 2064 y Fu(v)-5 b(ariable)26 b(\(default)g Ft(~/.bash_history)p Fu(\).)35 b(The)24 @@ -17591,55 +17632,55 @@ b(When)31 b(a)h(shell)g(with)g(history)f(enabled)h(exits,)h(the)f(last) h Ft($HISTSIZE)c Fu(lines)150 2393 y(are)35 b(copied)g(from)g(the)g (history)f(list)i(to)f(the)g(\014le)g(named)f(b)m(y)h Ft($HISTFILE)p Fu(.)51 b(If)35 b(the)g Ft(histappend)d -Fu(shell)150 2502 y(option)26 b(is)g(set)g(\(see)h(Section)f(4.2)h +Fu(shell)150 2503 y(option)26 b(is)g(set)g(\(see)h(Section)f(4.2)h ([Bash)f(Builtins],)h(page)g(48\),)h(the)e(lines)g(are)g(app)s(ended)e (to)i(the)g(history)150 2612 y(\014le,)36 b(otherwise)f(the)g(history)f (\014le)h(is)f(o)m(v)m(erwritten.)55 b(If)34 b Ft(HISTFILE)e Fu(is)j(unset,)g(or)g(if)f(the)h(history)f(\014le)h(is)150 -2721 y(un)m(writable,)f(the)f(history)g(is)g(not)h(sa)m(v)m(ed.)49 +2722 y(un)m(writable,)f(the)f(history)g(is)g(not)h(sa)m(v)m(ed.)49 b(After)34 b(sa)m(ving)g(the)f(history)-8 b(,)34 b(the)g(history)f (\014le)g(is)g(truncated)150 2831 y(to)g(con)m(tain)h(no)f(more)g(than) f Ft($HISTFILESIZE)d Fu(lines.)48 b(If)33 b Ft(HISTFILESIZE)c Fu(is)k(unset,)g(or)f(set)i(to)f(n)m(ull,)h(a)150 2941 y(non-n)m(umeric)c(v)-5 b(alue,)31 b(or)f(a)h(n)m(umeric)f(v)-5 b(alue)31 b(less)g(than)f(zero,)h(the)g(history)f(\014le)h(is)f(not)h -(truncated.)275 3078 y(If)g(the)h Ft(HISTTIMEFORMAT)d +(truncated.)275 3077 y(If)g(the)h Ft(HISTTIMEFORMAT)d Fu(is)j(set,)h(the)f(time)h(stamp)f(information)g(asso)s(ciated)i(with) -e(eac)m(h)h(history)150 3188 y(en)m(try)d(is)h(written)f(to)h(the)f +e(eac)m(h)h(history)150 3187 y(en)m(try)d(is)h(written)f(to)h(the)f (history)h(\014le,)f(mark)m(ed)h(with)f(the)g(history)g(commen)m(t)h(c) -m(haracter.)43 b(When)30 b(the)150 3298 y(history)22 +m(haracter.)43 b(When)30 b(the)150 3297 y(history)22 b(\014le)h(is)g(read,)h(lines)f(b)s(eginning)e(with)i(the)f(history)h (commen)m(t)g(c)m(haracter)h(follo)m(w)m(ed)h(immediately)150 -3407 y(b)m(y)30 b(a)h(digit)g(are)g(in)m(terpreted)g(as)f(timestamps)h -(for)f(the)h(previous)f(history)g(line.)275 3545 y(The)19 +3406 y(b)m(y)30 b(a)h(digit)g(are)g(in)m(terpreted)g(as)f(timestamps)h +(for)f(the)h(previous)f(history)g(line.)275 3543 y(The)19 b(builtin)h(command)g Ft(fc)g Fu(ma)m(y)h(b)s(e)f(used)f(to)i(list)g (or)g(edit)g(and)e(re-execute)j(a)f(p)s(ortion)f(of)g(the)h(history)150 -3655 y(list.)41 b(The)27 b Ft(history)f Fu(builtin)i(ma)m(y)h(b)s(e)e +3652 y(list.)41 b(The)27 b Ft(history)f Fu(builtin)i(ma)m(y)h(b)s(e)e (used)g(to)i(displa)m(y)g(or)f(mo)s(dify)f(the)h(history)g(list)h(and)f -(manipulate)150 3764 y(the)j(history)g(\014le.)42 b(When)31 +(manipulate)150 3762 y(the)j(history)g(\014le.)42 b(When)31 b(using)f(command-line)h(editing,)h(searc)m(h)f(commands)g(are)g(a)m(v) --5 b(ailable)33 b(in)e(eac)m(h)150 3874 y(editing)45 +-5 b(ailable)33 b(in)e(eac)m(h)150 3871 y(editing)45 b(mo)s(de)g(that)g(pro)m(vide)g(access)h(to)f(the)g(history)f(list)i (\(see)f(Section)h(8.4.2)g([Commands)e(F)-8 b(or)150 -3983 y(History],)31 b(page)h(119\).)275 4121 y(The)47 +3981 y(History],)31 b(page)h(119\).)275 4117 y(The)47 b(shell)i(allo)m(ws)h(con)m(trol)f(o)m(v)m(er)h(whic)m(h)e(commands)g (are)h(sa)m(v)m(ed)g(on)f(the)h(history)f(list.)95 b(The)150 -4231 y Ft(HISTCONTROL)25 b Fu(and)j Ft(HISTIGNORE)e Fu(v)-5 +4227 y Ft(HISTCONTROL)25 b Fu(and)j Ft(HISTIGNORE)e Fu(v)-5 b(ariables)29 b(ma)m(y)h(b)s(e)d(set)j(to)f(cause)g(the)g(shell)f(to)i -(sa)m(v)m(e)g(only)f(a)g(subset)150 4340 y(of)e(the)g(commands)f(en)m +(sa)m(v)m(e)g(only)f(a)g(subset)150 4336 y(of)e(the)g(commands)f(en)m (tered.)40 b(The)26 b Ft(cmdhist)f Fu(shell)i(option,)h(if)f(enabled,)g -(causes)h(the)e(shell)h(to)h(attempt)150 4450 y(to)23 +(causes)h(the)e(shell)h(to)h(attempt)150 4446 y(to)23 b(sa)m(v)m(e)h(eac)m(h)f(line)g(of)f(a)h(m)m(ulti-line)g(command)f(in)g (the)h(same)f(history)g(en)m(try)-8 b(,)25 b(adding)d(semicolons)h -(where)150 4560 y(necessary)37 b(to)f(preserv)m(e)h(syn)m(tactic)h +(where)150 4556 y(necessary)37 b(to)f(preserv)m(e)h(syn)m(tactic)h (correctness.)58 b(The)36 b Ft(lithist)e Fu(shell)i(option)h(causes)g -(the)f(shell)g(to)150 4669 y(sa)m(v)m(e)25 b(the)e(command)h(with)f(em) +(the)f(shell)g(to)150 4665 y(sa)m(v)m(e)25 b(the)e(command)h(with)f(em) m(b)s(edded)f(newlines)h(instead)h(of)f(semicolons.)40 -b(The)23 b Ft(shopt)e Fu(builtin)i(is)h(used)150 4779 +b(The)23 b Ft(shopt)e Fu(builtin)i(is)h(used)150 4775 y(to)31 b(set)g(these)g(options.)41 b(See)31 b(Section)g(4.2)g([Bash)g (Builtins],)g(page)g(48,)h(for)e(a)h(description)f(of)h -Ft(shopt)p Fu(.)150 5016 y Fs(9.2)68 b(Bash)45 b(History)h(Builtins)150 -5176 y Fu(Bash)31 b(pro)m(vides)f(t)m(w)m(o)i(builtin)e(commands)g +Ft(shopt)p Fu(.)150 5018 y Fs(9.2)68 b(Bash)45 b(History)h(Builtins)150 +5178 y Fu(Bash)31 b(pro)m(vides)f(t)m(w)m(o)i(builtin)e(commands)g (whic)m(h)g(manipulate)g(the)h(history)f(list)h(and)f(history)g (\014le.)150 5340 y Ft(fc)p eop end %%Page: 137 143 @@ -17727,78 +17768,78 @@ b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(138)630 408 y(the)26 b(curren)m(t)f(history)g(list.)40 b(These)25 b(are)h(lines)g(app)s(ended)e(to)i(the)f(history)h(\014le)1110 518 y(since)31 b(the)f(b)s(eginning)g(of)g(the)h(curren)m(t)f(Bash)h -(session.)630 665 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g(\014le)h +(session.)630 664 y Ft(-r)384 b Fu(Read)31 b(the)f(history)g(\014le)h (and)f(app)s(end)e(its)j(con)m(ten)m(ts)h(to)f(the)g(history)f(list.) -630 811 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m(t)f -(history)g(list)h(to)h(the)e(history)g(\014le.)630 958 +630 810 y Ft(-w)384 b Fu(W)-8 b(rite)32 b(out)e(the)h(curren)m(t)f +(history)g(list)h(to)h(the)e(history)g(\014le.)630 955 y Ft(-p)384 b Fu(P)m(erform)31 b(history)f(substitution)h(on)f(the)h Fr(arg)8 b Fu(s)31 b(and)f(displa)m(y)h(the)f(result)h(on)1110 -1068 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g -(in)g(the)g(history)g(list.)630 1214 y Ft(-s)384 b Fu(The)30 +1065 y(the)d(standard)f(output,)i(without)f(storing)g(the)g(results)g +(in)g(the)g(history)g(list.)630 1211 y Ft(-s)384 b Fu(The)30 b Fr(arg)8 b Fu(s)30 b(are)h(added)f(to)h(the)f(end)g(of)h(the)f (history)h(list)g(as)f(a)h(single)g(en)m(try)-8 b(.)630 -1361 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p +1356 y(When)26 b(an)m(y)h(of)f(the)g Ft(-w)p Fu(,)h Ft(-r)p Fu(,)g Ft(-a)p Fu(,)g(or)f Ft(-n)f Fu(options)i(is)f(used,)h(if)f Fr(\014lename)32 b Fu(is)26 b(giv)m(en,)i(then)e(it)h(is)630 -1471 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28 +1466 y(used)h(as)g(the)h(history)f(\014le.)40 b(If)28 b(not,)i(then)e(the)g(v)-5 b(alue)29 b(of)g(the)g Ft(HISTFILE)d -Fu(v)-5 b(ariable)29 b(is)f(used.)150 1691 y Fs(9.3)68 -b(History)46 b(Expansion)150 1850 y Fu(The)f(History)h(library)e(pro)m +Fu(v)-5 b(ariable)29 b(is)f(used.)150 1693 y Fs(9.3)68 +b(History)46 b(Expansion)150 1852 y Fu(The)f(History)h(library)e(pro)m (vides)i(a)f(history)g(expansion)g(feature)h(that)g(is)f(similar)h(to)g -(the)f(history)150 1960 y(expansion)g(pro)m(vided)f(b)m(y)h +(the)f(history)150 1962 y(expansion)g(pro)m(vided)f(b)m(y)h Ft(csh)p Fu(.)83 b(This)44 b(section)i(describ)s(es)e(the)h(syn)m(tax)h -(used)e(to)i(manipulate)f(the)150 2069 y(history)30 b(information.)275 -2197 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h +(used)e(to)i(manipulate)f(the)150 2072 y(history)30 b(information.)275 +2199 y(History)h(expansions)f(in)m(tro)s(duce)g(w)m(ords)g(from)g(the)h (history)f(list)h(in)m(to)g(the)g(input)f(stream,)h(making)150 -2307 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen) +2309 y(it)g(easy)g(to)g(rep)s(eat)g(commands,)f(insert)g(the)h(argumen) m(ts)f(to)h(a)g(previous)f(command)g(in)m(to)i(the)e(curren)m(t)150 -2416 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g -(quic)m(kly)-8 b(.)275 2545 y(History)40 b(expansion)g(is)h(p)s +2418 y(input)f(line,)i(or)g(\014x)f(errors)f(in)h(previous)g(commands)g +(quic)m(kly)-8 b(.)275 2546 y(History)40 b(expansion)g(is)h(p)s (erformed)d(immediately)k(after)f(a)f(complete)i(line)f(is)f(read,)j(b) -s(efore)d(the)150 2654 y(shell)31 b(breaks)f(it)h(in)m(to)g(w)m(ords.) -275 2782 y(History)c(expansion)f(tak)m(es)i(place)f(in)f(t)m(w)m(o)i +s(efore)d(the)150 2656 y(shell)31 b(breaks)f(it)h(in)m(to)g(w)m(ords.) +275 2783 y(History)c(expansion)f(tak)m(es)i(place)f(in)f(t)m(w)m(o)i (parts.)39 b(The)26 b(\014rst)g(is)g(to)h(determine)g(whic)m(h)f(line)h -(from)f(the)150 2892 y(history)i(list)g(should)f(b)s(e)g(used)g(during) +(from)f(the)150 2893 y(history)i(list)g(should)f(b)s(e)g(used)g(during) g(substitution.)39 b(The)27 b(second)h(is)g(to)h(select)g(p)s(ortions)e -(of)h(that)h(line)150 3001 y(for)d(inclusion)f(in)m(to)i(the)f(curren)m +(of)h(that)h(line)150 3002 y(for)d(inclusion)f(in)m(to)i(the)f(curren)m (t)f(one.)40 b(The)25 b(line)h(selected)h(from)f(the)g(history)f(is)h -(called)h(the)f Fr(ev)m(en)m(t)p Fu(,)j(and)150 3111 +(called)h(the)f Fr(ev)m(en)m(t)p Fu(,)j(and)150 3112 y(the)21 b(p)s(ortions)g(of)g(that)h(line)f(that)h(are)g(acted)g(up)s (on)e(are)h(called)h Fr(w)m(ords)p Fu(.)38 b(V)-8 b(arious)21 b Fr(mo)s(di\014ers)j Fu(are)e(a)m(v)-5 b(ailable)150 -3221 y(to)35 b(manipulate)f(the)g(selected)i(w)m(ords.)51 +3222 y(to)35 b(manipulate)f(the)g(selected)i(w)m(ords.)51 b(The)33 b(line)h(is)g(brok)m(en)g(in)m(to)h(w)m(ords)e(in)h(the)g -(same)h(fashion)e(that)150 3330 y(Bash)i(do)s(es,)h(so)f(that)h(sev)m +(same)h(fashion)e(that)150 3331 y(Bash)i(do)s(es,)h(so)f(that)h(sev)m (eral)g(w)m(ords)e(surrounded)f(b)m(y)i(quotes)g(are)g(considered)g -(one)g(w)m(ord.)54 b(History)150 3440 y(expansions)34 +(one)g(w)m(ord.)54 b(History)150 3441 y(expansions)34 b(are)g(in)m(tro)s(duced)f(b)m(y)h(the)g(app)s(earance)g(of)g(the)g (history)g(expansion)g(c)m(haracter,)i(whic)m(h)e(is)150 -3549 y(`)p Ft(!)p Fu(')39 b(b)m(y)g(default.)66 b(Only)38 +3550 y(`)p Ft(!)p Fu(')39 b(b)m(y)g(default.)66 b(Only)38 b(`)p Ft(\\)p Fu(')h(and)f(`)p Ft(')p Fu(')h(ma)m(y)h(b)s(e)e(used)g (to)h(escap)s(e)h(the)f(history)f(expansion)h(c)m(haracter,)150 -3659 y(but)27 b(the)i(history)f(expansion)g(c)m(haracter)i(is)e(also)h +3660 y(but)27 b(the)i(history)f(expansion)g(c)m(haracter)i(is)e(also)h (treated)g(as)g(quoted)f(if)g(it)h(immediately)h(precedes)e(the)150 -3769 y(closing)j(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275 +3770 y(closing)j(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275 3897 y(Sev)m(eral)40 b(shell)g(options)g(settable)h(with)e(the)h Ft(shopt)e Fu(builtin)h(\(see)h(Section)h(4.2)f([Bash)g(Builtins],)150 -4006 y(page)32 b(48\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)g(the)e(b)s +4007 y(page)32 b(48\))h(ma)m(y)f(b)s(e)f(used)g(to)i(tailor)g(the)e(b)s (eha)m(vior)h(of)g(history)g(expansion.)44 b(If)31 b(the)h Ft(histverify)d Fu(shell)150 4116 y(option)39 b(is)f(enabled,)i(and)e (Readline)g(is)h(b)s(eing)e(used,)j(history)e(substitutions)g(are)g (not)h(immediately)150 4226 y(passed)30 b(to)h(the)g(shell)g(parser.)40 b(Instead,)30 b(the)h(expanded)f(line)h(is)f(reloaded)h(in)m(to)h(the)e -(Readline)h(editing)150 4335 y(bu\013er)e(for)i(further)e(mo)s +(Readline)h(editing)150 4336 y(bu\013er)e(for)i(further)e(mo)s (di\014cation.)41 b(If)30 b(Readline)h(is)f(b)s(eing)g(used,)g(and)g (the)g Ft(histreedit)e Fu(shell)i(option)150 4445 y(is)k(enabled,)h(a)g (failed)g(history)f(expansion)g(will)g(b)s(e)g(reloaded)g(in)m(to)h -(the)g(Readline)f(editing)h(bu\013er)e(for)150 4554 y(correction.)68 +(the)g(Readline)f(editing)h(bu\013er)e(for)150 4555 y(correction.)68 b(The)38 b Ft(-p)h Fu(option)g(to)h(the)f Ft(history)e Fu(builtin)i(command)f(ma)m(y)i(b)s(e)e(used)g(to)i(see)g(what)f(a)150 4664 y(history)f(expansion)f(will)h(do)g(b)s(efore)f(using)h(it.)63 b(The)37 b Ft(-s)g Fu(option)i(to)f(the)g Ft(history)e -Fu(builtin)h(ma)m(y)i(b)s(e)150 4773 y(used)21 b(to)i(add)f(commands)g +Fu(builtin)h(ma)m(y)i(b)s(e)150 4774 y(used)21 b(to)i(add)f(commands)g (to)g(the)h(end)e(of)i(the)f(history)g(list)h(without)f(actually)i -(executing)f(them,)h(so)e(that)150 4883 y(they)31 b(are)f(a)m(v)-5 +(executing)f(them,)h(so)e(that)150 4884 y(they)31 b(are)f(a)m(v)-5 b(ailable)33 b(for)d(subsequen)m(t)g(recall.)42 b(This)29 b(is)i(most)g(useful)e(in)h(conjunction)h(with)f(Readline.)275 5011 y(The)j(shell)h(allo)m(ws)h(con)m(trol)h(of)e(the)g(v)-5 @@ -17934,73 +17975,73 @@ Fu(')f(mo)s(di\014er)e(once)i(to)g(eac)m(h)h(w)m(ord)e(in)g(the)g(ev)m %%Page: 141 147 TeXDict begin 141 146 bop 150 -116 a Fu(Chapter)30 b(10:)41 b(Installing)31 b(Bash)2356 b(141)150 299 y Fp(10)80 -b(Installing)52 b(Bash)150 556 y Fu(This)31 b(c)m(hapter)h(pro)m(vides) +b(Installing)52 b(Bash)150 554 y Fu(This)31 b(c)m(hapter)h(pro)m(vides) g(basic)g(instructions)f(for)g(installing)i(Bash)f(on)f(the)h(v)-5 -b(arious)31 b(supp)s(orted)f(plat-)150 665 y(forms.)40 +b(arious)31 b(supp)s(orted)f(plat-)150 664 y(forms.)40 b(The)28 b(distribution)h(supp)s(orts)e(the)j Fm(gnu)f Fu(op)s(erating)h(systems,)f(nearly)h(ev)m(ery)g(v)m(ersion)f(of)h -(Unix,)150 775 y(and)d(sev)m(eral)j(non-Unix)d(systems)h(suc)m(h)g(as)g +(Unix,)150 773 y(and)d(sev)m(eral)j(non-Unix)d(systems)h(suc)m(h)g(as)g (BeOS)g(and)f(In)m(terix.)40 b(Other)28 b(indep)s(enden)m(t)e(p)s(orts) -h(exist)i(for)150 884 y Fm(ms-dos)p Fu(,)h Fm(os/2)p -Fu(,)g(and)g(Windo)m(ws)g(platforms.)150 1128 y Fs(10.1)68 -b(Basic)45 b(Installation)150 1288 y Fu(These)30 b(are)h(installation)h -(instructions)e(for)h(Bash.)275 1430 y(The)e(simplest)i(w)m(a)m(y)g(to) -g(compile)h(Bash)e(is:)199 1572 y(1.)61 b Ft(cd)38 b +h(exist)i(for)150 883 y Fm(ms-dos)p Fu(,)h Fm(os/2)p +Fu(,)g(and)g(Windo)m(ws)g(platforms.)150 1134 y Fs(10.1)68 +b(Basic)45 b(Installation)150 1294 y Fu(These)30 b(are)h(installation)h +(instructions)e(for)h(Bash.)275 1435 y(The)e(simplest)i(w)m(a)m(y)g(to) +g(compile)h(Bash)e(is:)199 1577 y(1.)61 b Ft(cd)38 b Fu(to)h(the)f(directory)h(con)m(taining)h(the)f(source)f(co)s(de)h(and) f(t)m(yp)s(e)g(`)p Ft(./configure)p Fu(')e(to)j(con\014gure)330 -1681 y(Bash)c(for)f(y)m(our)h(system.)54 b(If)34 b(y)m(ou're)h(using)f +1686 y(Bash)c(for)f(y)m(our)h(system.)54 b(If)34 b(y)m(ou're)h(using)f Ft(csh)g Fu(on)g(an)h(old)g(v)m(ersion)g(of)g(System)f(V,)h(y)m(ou)g -(migh)m(t)330 1791 y(need)21 b(to)g(t)m(yp)s(e)g(`)p +(migh)m(t)330 1796 y(need)21 b(to)g(t)m(yp)s(e)g(`)p Ft(sh)30 b(./configure)p Fu(')18 b(instead)j(to)g(prev)m(en)m(t)h Ft(csh)e Fu(from)g(trying)h(to)g(execute)h Ft(configure)330 -1901 y Fu(itself.)330 2039 y(Running)30 b Ft(configure)f +1906 y Fu(itself.)330 2044 y(Running)30 b Ft(configure)f Fu(tak)m(es)k(some)e(time.)45 b(While)32 b(running,)e(it)i(prin)m(ts)f -(messages)h(telling)h(whic)m(h)330 2149 y(features)e(it)g(is)f(c)m(hec) -m(king)i(for.)199 2287 y(2.)61 b(T)m(yp)s(e)30 b(`)p +(messages)h(telling)h(whic)m(h)330 2153 y(features)e(it)g(is)f(c)m(hec) +m(king)i(for.)199 2291 y(2.)61 b(T)m(yp)s(e)30 b(`)p Ft(make)p Fu(')g(to)h(compile)g(Bash)g(and)e(build)h(the)g -Ft(bashbug)f Fu(bug)g(rep)s(orting)h(script.)199 2425 +Ft(bashbug)f Fu(bug)g(rep)s(orting)h(script.)199 2429 y(3.)61 b(Optionally)-8 b(,)32 b(t)m(yp)s(e)e(`)p Ft(make)g(tests)p -Fu(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199 2563 +Fu(')f(to)i(run)e(the)h(Bash)h(test)g(suite.)199 2567 y(4.)61 b(T)m(yp)s(e)36 b(`)p Ft(make)29 b(install)p Fu(')35 b(to)i(install)h Ft(bash)d Fu(and)h Ft(bashbug)p Fu(.)57 b(This)35 b(will)i(also)h(install)f(the)g(man)m(ual)330 -2673 y(pages)31 b(and)f(Info)g(\014le.)275 2844 y(The)20 +2677 y(pages)31 b(and)f(Info)g(\014le.)275 2847 y(The)20 b Ft(configure)f Fu(shell)i(script)g(attempts)h(to)g(guess)f(correct)i (v)-5 b(alues)21 b(for)g(v)-5 b(arious)21 b(system-dep)s(enden)m(t)150 -2953 y(v)-5 b(ariables)31 b(used)e(during)g(compilation.)42 +2956 y(v)-5 b(ariables)31 b(used)e(during)g(compilation.)42 b(It)31 b(uses)e(those)i(v)-5 b(alues)30 b(to)h(create)h(a)e -Ft(Makefile)e Fu(in)i(eac)m(h)i(direc-)150 3063 y(tory)k(of)g(the)g +Ft(Makefile)e Fu(in)i(eac)m(h)i(direc-)150 3066 y(tory)k(of)g(the)g (pac)m(k)-5 b(age)38 b(\(the)e(top)g(directory)-8 b(,)38 b(the)e Ft(builtins)p Fu(,)f Ft(doc)p Fu(,)i(and)e Ft(support)e -Fu(directories,)39 b(eac)m(h)150 3172 y(directory)29 +Fu(directories,)39 b(eac)m(h)150 3176 y(directory)29 b(under)d Ft(lib)p Fu(,)j(and)e(sev)m(eral)j(others\).)40 b(It)29 b(also)g(creates)h(a)e Ft(config.h)e Fu(\014le)j(con)m(taining) -g(system-)150 3282 y(dep)s(enden)m(t)e(de\014nitions.)40 +g(system-)150 3285 y(dep)s(enden)m(t)e(de\014nitions.)40 b(Finally)-8 b(,)31 b(it)d(creates)i(a)f(shell)g(script)f(named)g -Ft(config.status)d Fu(that)k(y)m(ou)g(can)150 3392 y(run)h(in)h(the)h +Ft(config.status)d Fu(that)k(y)m(ou)g(can)150 3395 y(run)h(in)h(the)h (future)f(to)h(recreate)h(the)f(curren)m(t)f(con\014guration,)i(a)f (\014le)f Ft(config.cache)e Fu(that)j(sa)m(v)m(es)h(the)150 -3501 y(results)39 b(of)g(its)h(tests)g(to)g(sp)s(eed)e(up)g +3504 y(results)39 b(of)g(its)h(tests)g(to)g(sp)s(eed)e(up)g (recon\014guring,)j(and)e(a)g(\014le)g Ft(config.log)e -Fu(con)m(taining)j(compiler)150 3611 y(output)30 b(\(useful)h(mainly)g +Fu(con)m(taining)j(compiler)150 3614 y(output)30 b(\(useful)h(mainly)g (for)f(debugging)h Ft(configure)p Fu(\).)40 b(If)30 b(at)h(some)h(p)s -(oin)m(t)e Ft(config.cache)e Fu(con)m(tains)150 3720 +(oin)m(t)e Ft(config.cache)e Fu(con)m(tains)150 3724 y(results)i(y)m(ou)h(don't)f(w)m(an)m(t)h(to)h(k)m(eep,)f(y)m(ou)g(ma)m -(y)g(remo)m(v)m(e)g(or)g(edit)g(it.)275 3862 y(T)-8 b(o)37 +(y)g(remo)m(v)m(e)g(or)g(edit)g(it.)275 3865 y(T)-8 b(o)37 b(\014nd)f(out)i(more)f(ab)s(out)h(the)f(options)h(and)f(argumen)m(ts)g -(that)h(the)g Ft(configure)d Fu(script)i(under-)150 3972 -y(stands,)30 b(t)m(yp)s(e)390 4114 y Ft(bash-2.04$)45 -b(./configure)g(--help)150 4256 y Fu(at)31 b(the)g(Bash)f(prompt)g(in)g -(y)m(our)g(Bash)h(source)f(directory)-8 b(.)275 4398 +(that)h(the)g Ft(configure)d Fu(script)i(under-)150 3975 +y(stands,)30 b(t)m(yp)s(e)390 4116 y Ft(bash-2.04$)45 +b(./configure)g(--help)150 4258 y Fu(at)31 b(the)g(Bash)f(prompt)g(in)g +(y)m(our)g(Bash)h(source)f(directory)-8 b(.)275 4399 y(If)53 b(y)m(ou)h(need)f(to)i(do)e(un)m(usual)g(things)g(to)i(compile) g(Bash,)k(please)c(try)e(to)i(\014gure)e(out)h(ho)m(w)150 -4508 y Ft(configure)47 b Fu(could)j(c)m(hec)m(k)h(whether)e(or)g(not)h +4509 y Ft(configure)47 b Fu(could)j(c)m(hec)m(k)h(whether)e(or)g(not)h (to)h(do)e(them,)55 b(and)49 b(mail)h(di\013s)f(or)h(instructions)f(to) -150 4617 y Ft(bash-maintainers@gnu.org)24 b Fu(so)30 +150 4619 y Ft(bash-maintainers@gnu.org)24 b Fu(so)30 b(they)h(can)g(b)s(e)e(considered)i(for)f(the)g(next)h(release.)275 4760 y(The)e(\014le)g Ft(configure.ac)d Fu(is)k(used)e(to)j(create)g Ft(configure)c Fu(b)m(y)i(a)h(program)f(called)i(Auto)s(conf.)40 -b(Y)-8 b(ou)150 4869 y(only)34 b(need)g Ft(configure.ac)d +b(Y)-8 b(ou)150 4870 y(only)34 b(need)g Ft(configure.ac)d Fu(if)i(y)m(ou)i(w)m(an)m(t)g(to)f(c)m(hange)i(it)e(or)g(regenerate)i Ft(configure)31 b Fu(using)j(a)g(new)m(er)150 4979 y(v)m(ersion)25 b(of)f(Auto)s(conf.)39 b(If)24 b(y)m(ou)h(do)f(this,)i(mak)m(e)f(sure)f @@ -18023,406 +18064,405 @@ Ft(configure)d Fu(initial)j(v)-5 b(alues)32 b(for)g(v)-5 b(ariables)32 b(b)m(y)g(setting)h(them)150 677 y(in)k(the)g(en)m (vironmen)m(t.)62 b(Using)38 b(a)f(Bourne-compatible)i(shell,)g(y)m(ou) f(can)g(do)f(that)h(on)f(the)g(command)150 787 y(line)31 -b(lik)m(e)g(this:)390 920 y Ft(CC=c89)46 b(CFLAGS=-O2)f(LIBS=-lposix)g -(./configure)275 1053 y Fu(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f +b(lik)m(e)g(this:)390 926 y Ft(CC=c89)46 b(CFLAGS=-O2)f(LIBS=-lposix)g +(./configure)275 1065 y Fu(On)29 b(systems)h(that)h(ha)m(v)m(e)h(the)f Ft(env)e Fu(program,)h(y)m(ou)h(can)g(do)f(it)h(lik)m(e)h(this:)390 -1186 y Ft(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42 -b(LDFLAGS=-s)j(./configure)275 1318 y Fu(The)29 b(con\014guration)i +1204 y Ft(env)47 b(CPPFLAGS=-I/usr/local/in)o(clud)o(e)42 +b(LDFLAGS=-s)j(./configure)275 1343 y Fu(The)29 b(con\014guration)i (pro)s(cess)f(uses)g(GCC)g(to)h(build)e(Bash)i(if)f(it)h(is)g(a)m(v)-5 -b(ailable.)150 1548 y Fs(10.3)68 b(Compiling)46 b(F)-11 -b(or)45 b(Multiple)g(Arc)l(hitectures)150 1707 y Fu(Y)-8 +b(ailable.)150 1590 y Fs(10.3)68 b(Compiling)46 b(F)-11 +b(or)45 b(Multiple)g(Arc)l(hitectures)150 1750 y Fu(Y)-8 b(ou)27 b(can)g(compile)g(Bash)g(for)f(more)h(than)f(one)h(kind)f(of)g (computer)h(at)g(the)g(same)g(time,)h(b)m(y)e(placing)i(the)150 -1817 y(ob)5 b(ject)31 b(\014les)f(for)g(eac)m(h)i(arc)m(hitecture)f(in) +1859 y(ob)5 b(ject)31 b(\014les)f(for)g(eac)m(h)i(arc)m(hitecture)f(in) f(their)g(o)m(wn)h(directory)-8 b(.)41 b(T)-8 b(o)31 b(do)f(this,)g(y)m(ou)h(m)m(ust)f(use)g(a)g(v)m(ersion)150 -1926 y(of)25 b Ft(make)f Fu(that)h(supp)s(orts)f(the)h +1969 y(of)25 b Ft(make)f Fu(that)h(supp)s(orts)f(the)h Ft(VPATH)e Fu(v)-5 b(ariable,)27 b(suc)m(h)e(as)g(GNU)h Ft(make)p Fu(.)37 b Ft(cd)25 b Fu(to)h(the)f(directory)g(where)g(y)m -(ou)150 2036 y(w)m(an)m(t)34 b(the)f(ob)5 b(ject)34 b(\014les)f(and)f +(ou)150 2078 y(w)m(an)m(t)34 b(the)f(ob)5 b(ject)34 b(\014les)f(and)f (executables)i(to)g(go)g(and)e(run)g(the)h Ft(configure)d -Fu(script)j(from)g(the)g(source)150 2145 y(directory)-8 +Fu(script)j(from)g(the)g(source)150 2188 y(directory)-8 b(.)44 b(Y)-8 b(ou)32 b(ma)m(y)g(need)f(to)h(supply)e(the)i Ft(--srcdir=PATH)27 b Fu(argumen)m(t)32 b(to)g(tell)h -Ft(configure)28 b Fu(where)150 2255 y(the)36 b(source)g(\014les)f(are.) +Ft(configure)28 b Fu(where)150 2297 y(the)36 b(source)g(\014les)f(are.) 57 b Ft(configure)33 b Fu(automatically)39 b(c)m(hec)m(ks)e(for)e(the)h -(source)g(co)s(de)f(in)h(the)f(directory)150 2364 y(that)c -Ft(configure)d Fu(is)i(in)g(and)g(in)g(`..'.)275 2497 +(source)g(co)s(de)f(in)h(the)f(directory)150 2407 y(that)c +Ft(configure)d Fu(is)i(in)g(and)g(in)g(`..'.)275 2546 y(If)20 b(y)m(ou)h(ha)m(v)m(e)i(to)e(use)g(a)g Ft(make)f Fu(that)i(do)s(es)e(not)i(supp)s(orts)d(the)i Ft(VPATH)e Fu(v)-5 b(ariable,)24 b(y)m(ou)e(can)f(compile)h(Bash)150 -2607 y(for)33 b(one)h(arc)m(hitecture)h(at)f(a)g(time)g(in)f(the)h +2656 y(for)33 b(one)h(arc)m(hitecture)h(at)f(a)g(time)g(in)f(the)h (source)g(co)s(de)f(directory)-8 b(.)51 b(After)34 b(y)m(ou)g(ha)m(v)m -(e)h(installed)f(Bash)150 2716 y(for)c(one)h(arc)m(hitecture,)h(use)e +(e)h(installed)f(Bash)150 2765 y(for)c(one)h(arc)m(hitecture,)h(use)e (`)p Ft(make)g(distclean)p Fu(')e(b)s(efore)i(recon\014guring)g(for)g -(another)g(arc)m(hitecture.)275 2849 y(Alternativ)m(ely)-8 +(another)g(arc)m(hitecture.)275 2904 y(Alternativ)m(ely)-8 b(,)30 b(if)c(y)m(our)g(system)h(supp)s(orts)d(sym)m(b)s(olic)j(links,) -g(y)m(ou)g(can)g(use)f(the)g Ft(support/mkclone)150 2959 +g(y)m(ou)g(can)g(use)f(the)g Ft(support/mkclone)150 3014 y Fu(script)d(to)h(create)g(a)f(build)f(tree)i(whic)m(h)f(has)f(sym)m (b)s(olic)i(links)e(bac)m(k)i(to)g(eac)m(h)g(\014le)f(in)g(the)g -(source)g(directory)-8 b(.)150 3068 y(Here's)41 b(an)f(example)i(that)f +(source)g(directory)-8 b(.)150 3123 y(Here's)41 b(an)f(example)i(that)f (creates)h(a)e(build)g(directory)h(in)f(the)h(curren)m(t)f(directory)h -(from)f(a)h(source)150 3178 y(directory)31 b Ft(/usr/gnu/src/bash-2.0)p -Fu(:)390 3311 y Ft(bash)47 b(/usr/gnu/src/bash-2.0/s)o(uppo)o(rt/)o +(from)f(a)h(source)150 3233 y(directory)31 b Ft(/usr/gnu/src/bash-2.0)p +Fu(:)390 3372 y Ft(bash)47 b(/usr/gnu/src/bash-2.0/s)o(uppo)o(rt/)o (mkcl)o(one)41 b(-s)47 b(/usr/gnu/src/bash-2.0)42 b(.)150 -3444 y Fu(The)c Ft(mkclone)e Fu(script)i(requires)g(Bash,)i(so)f(y)m +3511 y Fu(The)c Ft(mkclone)e Fu(script)i(requires)g(Bash,)i(so)f(y)m (ou)f(m)m(ust)h(ha)m(v)m(e)g(already)g(built)f(Bash)g(for)g(at)h(least) -h(one)150 3553 y(arc)m(hitecture)32 b(b)s(efore)e(y)m(ou)h(can)f +h(one)150 3620 y(arc)m(hitecture)32 b(b)s(efore)e(y)m(ou)h(can)f (create)i(build)e(directories)h(for)f(other)h(arc)m(hitectures.)150 -3782 y Fs(10.4)68 b(Installation)47 b(Names)150 3942 +3868 y Fs(10.4)68 b(Installation)47 b(Names)150 4027 y Fu(By)37 b(default,)i(`)p Ft(make)29 b(install)p Fu(')35 b(will)j(install)f(in)m(to)h Ft(/usr/local/bin)p Fu(,)d -Ft(/usr/local/man)p Fu(,)f(etc.)61 b(Y)-8 b(ou)150 4051 +Ft(/usr/local/man)p Fu(,)f(etc.)61 b(Y)-8 b(ou)150 4137 y(can)35 b(sp)s(ecify)f(an)h(installation)i(pre\014x)c(other)j(than)e Ft(/usr/local)e Fu(b)m(y)j(giving)g Ft(configure)e Fu(the)h(option)150 -4161 y Ft(--prefix=)p Fj(PATH)p Fu(,)41 b(or)g(b)m(y)g(sp)s(ecifying)h +4246 y Ft(--prefix=)p Fj(PATH)p Fu(,)41 b(or)g(b)m(y)g(sp)s(ecifying)h (a)f(v)-5 b(alue)42 b(for)f(the)h Ft(DESTDIR)d Fu(`)p Ft(make)p Fu(')i(v)-5 b(ariable)42 b(when)f(running)150 -4271 y(`)p Ft(make)29 b(install)p Fu('.)275 4403 y(Y)-8 +4356 y(`)p Ft(make)29 b(install)p Fu('.)275 4495 y(Y)-8 b(ou)71 b(can)h(sp)s(ecify)f(separate)h(installation)h(pre\014xes)d (for)h(arc)m(hitecture-sp)s(eci\014c)i(\014les)f(and)150 -4513 y(arc)m(hitecture-indep)s(enden)m(t)44 b(\014les.)80 +4604 y(arc)m(hitecture-indep)s(enden)m(t)44 b(\014les.)80 b(If)43 b(y)m(ou)h(giv)m(e)h Ft(configure)c Fu(the)j(option)g -Ft(--exec-prefix=)p Fj(PATH)p Fu(,)150 4623 y(`)p Ft(make)29 +Ft(--exec-prefix=)p Fj(PATH)p Fu(,)150 4714 y(`)p Ft(make)29 b(install)p Fu(')63 b(will)h(use)f Fr(P)-8 b(A)g(TH)75 b Fu(as)64 b(the)g(pre\014x)e(for)i(installing)h(programs)e(and)h -(libraries.)150 4732 y(Do)s(cumen)m(tation)32 b(and)e(other)h(data)g +(libraries.)150 4824 y(Do)s(cumen)m(tation)32 b(and)e(other)h(data)g (\014les)f(will)h(still)g(use)f(the)h(regular)f(pre\014x.)150 -4961 y Fs(10.5)68 b(Sp)t(ecifying)45 b(the)g(System)h(T)l(yp)t(e)150 -5121 y Fu(There)f(ma)m(y)g(b)s(e)f(some)i(features)f +5071 y Fs(10.5)68 b(Sp)t(ecifying)45 b(the)g(System)h(T)l(yp)t(e)150 +5230 y Fu(There)f(ma)m(y)g(b)s(e)f(some)i(features)f Ft(configure)e Fu(can)i(not)g(\014gure)g(out)g(automatically)-8 -b(,)52 b(but)44 b(need)h(to)150 5230 y(determine)26 b(b)m(y)g(the)g(t)m +b(,)52 b(but)44 b(need)h(to)150 5340 y(determine)26 b(b)m(y)g(the)g(t)m (yp)s(e)g(of)g(host)g(Bash)g(will)g(run)f(on.)39 b(Usually)26 -b Ft(configure)d Fu(can)k(\014gure)e(that)h(out,)i(but)150 -5340 y(if)g(it)g(prin)m(ts)f(a)h(message)g(sa)m(ying)h(it)f(can)g(not)f -(guess)h(the)g(host)f(t)m(yp)s(e,)i(giv)m(e)g(it)f(the)g -Ft(--host=TYPE)c Fu(option.)p eop end +b Ft(configure)d Fu(can)k(\014gure)e(that)h(out,)i(but)p +eop end %%Page: 143 149 TeXDict begin 143 148 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(143)150 299 y(`)p Ft(TYPE)p -Fu(')29 b(can)h(either)g(b)s(e)g(a)g(short)f(name)h(for)f(the)h(system) -g(t)m(yp)s(e,)h(suc)m(h)e(as)h(`)p Ft(sun4)p Fu(',)g(or)f(a)h -(canonical)i(name)150 408 y(with)e(three)h(\014elds:)40 -b(`)p Ft(CPU-COMPANY-SYSTEM)p Fu(')26 b(\(e.g.,)32 b(`)p -Ft(i386-unknown-freebsd4.2)p Fu('\).)275 539 y(See)e(the)h(\014le)f -Ft(support/config.sub)c Fu(for)k(the)g(p)s(ossible)g(v)-5 -b(alues)31 b(of)f(eac)m(h)i(\014eld.)150 764 y Fs(10.6)68 -b(Sharing)45 b(Defaults)150 924 y Fu(If)d(y)m(ou)i(w)m(an)m(t)g(to)f +b(Installing)31 b(Bash)2356 b(143)150 299 y(if)28 b(it)g(prin)m(ts)f(a) +h(message)g(sa)m(ying)h(it)f(can)g(not)f(guess)h(the)g(host)f(t)m(yp)s +(e,)i(giv)m(e)g(it)f(the)g Ft(--host=TYPE)c Fu(option.)150 +408 y(`)p Ft(TYPE)p Fu(')29 b(can)h(either)g(b)s(e)g(a)g(short)f(name)h +(for)f(the)h(system)g(t)m(yp)s(e,)h(suc)m(h)e(as)h(`)p +Ft(sun4)p Fu(',)g(or)f(a)h(canonical)i(name)150 518 y(with)e(three)h +(\014elds:)40 b(`)p Ft(CPU-COMPANY-SYSTEM)p Fu(')26 b(\(e.g.,)32 +b(`)p Ft(i386-unknown-freebsd4.2)p Fu('\).)275 663 y(See)e(the)h +(\014le)f Ft(support/config.sub)c Fu(for)k(the)g(p)s(ossible)g(v)-5 +b(alues)31 b(of)f(eac)m(h)i(\014eld.)150 919 y Fs(10.6)68 +b(Sharing)45 b(Defaults)150 1078 y Fu(If)d(y)m(ou)i(w)m(an)m(t)g(to)f (set)h(default)f(v)-5 b(alues)43 b(for)g Ft(configure)d Fu(scripts)j(to)h(share,)i(y)m(ou)d(can)g(create)i(a)e(site)150 -1033 y(shell)48 b(script)f(called)i Ft(config.site)44 +1188 y(shell)48 b(script)f(called)i Ft(config.site)44 b Fu(that)k(giv)m(es)h(default)f(v)-5 b(alues)48 b(for)f(v)-5 b(ariables)48 b(lik)m(e)h Ft(CC)p Fu(,)j Ft(cache_)150 -1143 y(file)p Fu(,)c(and)d Ft(prefix)p Fu(.)85 b Ft(configure)43 +1298 y(file)p Fu(,)c(and)d Ft(prefix)p Fu(.)85 b Ft(configure)43 b Fu(lo)s(oks)j(for)f Ft(PREFIX/share/config.site)39 -b Fu(if)46 b(it)g(exists,)k(then)150 1252 y Ft(PREFIX/etc/config.site) +b Fu(if)46 b(it)g(exists,)k(then)150 1407 y Ft(PREFIX/etc/config.site) 24 b Fu(if)31 b(it)g(exists.)42 b(Or,)30 b(y)m(ou)h(can)g(set)g(the)g Ft(CONFIG_SITE)c Fu(en)m(vironmen)m(t)k(v)-5 b(ari-)150 -1362 y(able)40 b(to)g(the)g(lo)s(cation)h(of)e(the)h(site)g(script.)67 +1517 y(able)40 b(to)g(the)g(lo)s(cation)h(of)e(the)h(site)g(script.)67 b(A)40 b(w)m(arning:)58 b(the)40 b(Bash)g Ft(configure)c -Fu(lo)s(oks)k(for)f(a)h(site)150 1472 y(script,)31 b(but)e(not)i(all)g -Ft(configure)d Fu(scripts)i(do.)150 1697 y Fs(10.7)68 -b(Op)t(eration)46 b(Con)l(trols)150 1856 y Ft(configure)28 +Fu(lo)s(oks)k(for)f(a)h(site)150 1626 y(script,)31 b(but)e(not)i(all)g +Ft(configure)d Fu(scripts)i(do.)150 1883 y Fs(10.7)68 +b(Op)t(eration)46 b(Con)l(trols)150 2042 y Ft(configure)28 b Fu(recognizes)k(the)e(follo)m(wing)i(options)f(to)g(con)m(trol)h(ho)m -(w)e(it)h(op)s(erates.)150 2008 y Ft(--cache-file=)p -Fj(file)630 2117 y Fu(Use)d(and)g(sa)m(v)m(e)h(the)f(results)g(of)g +(w)e(it)h(op)s(erates.)150 2217 y Ft(--cache-file=)p +Fj(file)630 2326 y Fu(Use)d(and)g(sa)m(v)m(e)h(the)f(results)g(of)g (the)h(tests)f(in)g Fr(\014le)33 b Fu(instead)28 b(of)h Ft(./config.cache)p Fu(.)36 b(Set)28 b Fr(\014le)630 -2227 y Fu(to)j Ft(/dev/null)d Fu(to)j(disable)g(cac)m(hing,)h(for)e -(debugging)g Ft(configure)p Fu(.)150 2379 y Ft(--help)192 +2436 y Fu(to)j Ft(/dev/null)d Fu(to)j(disable)g(cac)m(hing,)h(for)e +(debugging)g Ft(configure)p Fu(.)150 2606 y Ft(--help)192 b Fu(Prin)m(t)30 b(a)h(summary)e(of)i(the)f(options)h(to)g -Ft(configure)p Fu(,)d(and)i(exit.)150 2531 y Ft(--quiet)150 -2641 y(--silent)150 2750 y(-q)384 b Fu(Do)31 b(not)g(prin)m(t)f +Ft(configure)p Fu(,)d(and)i(exit.)150 2775 y Ft(--quiet)150 +2885 y(--silent)150 2995 y(-q)384 b Fu(Do)31 b(not)g(prin)m(t)f (messages)h(sa)m(ying)g(whic)m(h)g(c)m(hec)m(ks)g(are)g(b)s(eing)f -(made.)150 2902 y Ft(--srcdir=)p Fj(dir)630 3012 y Fu(Lo)s(ok)i(for)g +(made.)150 3164 y Ft(--srcdir=)p Fj(dir)630 3274 y Fu(Lo)s(ok)i(for)g (the)g(Bash)g(source)h(co)s(de)f(in)g(directory)g Fr(dir)p Fu(.)45 b(Usually)33 b Ft(configure)c Fu(can)j(deter-)630 -3121 y(mine)e(that)h(directory)g(automatically)-8 b(.)150 -3273 y Ft(--version)630 3383 y Fu(Prin)m(t)29 b(the)h(v)m(ersion)g(of)g +3383 y(mine)e(that)h(directory)g(automatically)-8 b(.)150 +3553 y Ft(--version)630 3663 y Fu(Prin)m(t)29 b(the)h(v)m(ersion)g(of)g (Auto)s(conf)f(used)g(to)h(generate)h(the)f Ft(configure)d -Fu(script,)j(and)f(exit.)275 3535 y Ft(configure)34 b +Fu(script,)j(and)f(exit.)275 3838 y Ft(configure)34 b Fu(also)k(accepts)g(some)g(other,)h(not)e(widely)g(used,)h(b)s -(oilerplate)g(options.)61 b(`)p Ft(configure)150 3644 +(oilerplate)g(options.)61 b(`)p Ft(configure)150 3947 y(--help)p Fu(')29 b(prin)m(ts)h(the)g(complete)i(list.)150 -3869 y Fs(10.8)68 b(Optional)46 b(F)-11 b(eatures)150 -4029 y Fu(The)29 b(Bash)h Ft(configure)d Fu(has)j(a)g(n)m(um)m(b)s(er)f +4203 y Fs(10.8)68 b(Optional)46 b(F)-11 b(eatures)150 +4363 y Fu(The)29 b(Bash)h Ft(configure)d Fu(has)j(a)g(n)m(um)m(b)s(er)f (of)h Ft(--enable-)p Fj(feature)25 b Fu(options,)30 b(where)g -Fr(feature)35 b Fu(indicates)150 4138 y(an)e(optional)i(part)e(of)h +Fr(feature)35 b Fu(indicates)150 4472 y(an)e(optional)i(part)e(of)h (Bash.)50 b(There)33 b(are)g(also)i(sev)m(eral)g Ft(--with-)p Fj(package)29 b Fu(options,)35 b(where)e Fr(pac)m(k)-5 -b(age)150 4248 y Fu(is)32 b(something)h(lik)m(e)h(`)p +b(age)150 4582 y Fu(is)32 b(something)h(lik)m(e)h(`)p Ft(bash-malloc)p Fu(')c(or)i(`)p Ft(purify)p Fu('.)45 b(T)-8 b(o)33 b(turn)e(o\013)i(the)f(default)h(use)f(of)g(a)h(pac)m(k) --5 b(age,)35 b(use)150 4357 y Ft(--without-)p Fj(package)p +-5 b(age,)35 b(use)150 4692 y Ft(--without-)p Fj(package)p Fu(.)46 b(T)-8 b(o)34 b(con\014gure)g(Bash)g(without)f(a)i(feature)f -(that)g(is)g(enabled)g(b)m(y)f(default,)i(use)150 4467 -y Ft(--disable-)p Fj(feature)p Fu(.)275 4598 y(Here)28 +(that)g(is)g(enabled)g(b)m(y)f(default,)i(use)150 4801 +y Ft(--disable-)p Fj(feature)p Fu(.)275 4946 y(Here)28 b(is)g(a)h(complete)g(list)g(of)f(the)h Ft(--enable-)c Fu(and)j Ft(--with-)e Fu(options)i(that)h(the)f(Bash)g -Ft(configure)150 4707 y Fu(recognizes.)150 4859 y Ft(--with-afs)630 -4969 y Fu(De\014ne)j(if)f(y)m(ou)h(are)f(using)g(the)h(Andrew)e(File)j -(System)e(from)g(T)-8 b(ransarc.)150 5121 y Ft(--with-bash-malloc)630 -5230 y Fu(Use)34 b(the)g(Bash)h(v)m(ersion)f(of)g Ft(malloc)e -Fu(in)i(the)g(directory)h Ft(lib/malloc)p Fu(.)48 b(This)34 -b(is)g(not)g(the)630 5340 y(same)e Ft(malloc)e Fu(that)j(app)s(ears)e -(in)g Fm(gnu)h Fu(lib)s(c,)g(but)f(an)h(older)f(v)m(ersion)i -(originally)g(deriv)m(ed)p eop end +Ft(configure)150 5056 y Fu(recognizes.)150 5230 y Ft(--with-afs)630 +5340 y Fu(De\014ne)j(if)f(y)m(ou)h(are)f(using)g(the)h(Andrew)e(File)j +(System)e(from)g(T)-8 b(ransarc.)p eop end %%Page: 144 150 TeXDict begin 144 149 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(144)630 299 y(from)32 b(the)h(4.2)g +b(Installing)31 b(Bash)2356 b(144)150 299 y Ft(--with-bash-malloc)630 +408 y Fu(Use)34 b(the)g(Bash)h(v)m(ersion)f(of)g Ft(malloc)e +Fu(in)i(the)g(directory)h Ft(lib/malloc)p Fu(.)48 b(This)34 +b(is)g(not)g(the)630 518 y(same)e Ft(malloc)e Fu(that)j(app)s(ears)e +(in)g Fm(gnu)h Fu(lib)s(c,)g(but)f(an)h(older)f(v)m(ersion)i +(originally)g(deriv)m(ed)630 628 y(from)f(the)h(4.2)g Fm(bsd)f Ft(malloc)p Fu(.)45 b(This)31 b Ft(malloc)g Fu(is)i(v)m(ery)f(fast,)i(but)e(w)m(astes)h(some)g(space)g(on)630 -408 y(eac)m(h)j(allo)s(cation.)58 b(This)34 b(option)i(is)f(enabled)g +737 y(eac)m(h)j(allo)s(cation.)58 b(This)34 b(option)i(is)f(enabled)g (b)m(y)g(default.)56 b(The)34 b Ft(NOTES)g Fu(\014le)h(con)m(tains)i(a) -630 518 y(list)29 b(of)f(systems)f(for)h(whic)m(h)g(this)g(should)e(b)s +630 847 y(list)29 b(of)f(systems)f(for)h(whic)m(h)g(this)g(should)e(b)s (e)i(turned)e(o\013,)j(and)f Ft(configure)d Fu(disables)j(this)630 -628 y(option)j(automatically)i(for)d(a)h(n)m(um)m(b)s(er)e(of)i -(systems.)150 789 y Ft(--with-curses)630 899 y Fu(Use)h(the)h(curses)e -(library)h(instead)g(of)h(the)f(termcap)g(library)-8 -b(.)46 b(This)32 b(should)f(b)s(e)g(supplied)630 1008 +956 y(option)j(automatically)i(for)d(a)h(n)m(um)m(b)s(er)e(of)i +(systems.)150 1120 y Ft(--with-curses)630 1230 y Fu(Use)h(the)h(curses) +e(library)h(instead)g(of)h(the)f(termcap)g(library)-8 +b(.)46 b(This)32 b(should)f(b)s(e)g(supplied)630 1339 y(if)f(y)m(our)h(system)f(has)g(an)h(inadequate)g(or)f(incomplete)i -(termcap)e(database.)150 1170 y Ft(--with-gnu-malloc)630 -1279 y Fu(A)g(synon)m(ym)g(for)g Ft(--with-bash-malloc)p -Fu(.)150 1441 y Ft(--with-installed-readlin)o(e[=)p Fj(P)o(REFI)o(X)p -Ft(])630 1550 y Fu(De\014ne)c(this)f(to)h(mak)m(e)h(Bash)f(link)f(with) +(termcap)e(database.)150 1503 y Ft(--with-gnu-malloc)630 +1613 y Fu(A)g(synon)m(ym)g(for)g Ft(--with-bash-malloc)p +Fu(.)150 1776 y Ft(--with-installed-readlin)o(e[=)p Fj(P)o(REFI)o(X)p +Ft(])630 1886 y Fu(De\014ne)c(this)f(to)h(mak)m(e)h(Bash)f(link)f(with) g(a)h(lo)s(cally-installed)i(v)m(ersion)e(of)g(Readline)g(rather)630 -1660 y(than)f(the)h(v)m(ersion)g(in)f Ft(lib/readline)p +1996 y(than)f(the)h(v)m(ersion)g(in)f Ft(lib/readline)p Fu(.)36 b(This)25 b(w)m(orks)g(only)h(with)f(Readline)h(5.0)h(and)e -(later)630 1769 y(v)m(ersions.)46 b(If)32 b Fr(PREFIX)41 +(later)630 2105 y(v)m(ersions.)46 b(If)32 b Fr(PREFIX)41 b Fu(is)32 b Ft(yes)f Fu(or)i(not)f(supplied,)f Ft(configure)f -Fu(uses)i(the)g(v)-5 b(alues)32 b(of)h(the)630 1879 y(mak)m(e)28 +Fu(uses)i(the)g(v)-5 b(alues)32 b(of)h(the)630 2215 y(mak)m(e)28 b(v)-5 b(ariables)29 b Ft(includedir)24 b Fu(and)j Ft(libdir)p Fu(,)g(whic)m(h)g(are)h(sub)s(directories)f(of)g Ft(prefix)f -Fu(b)m(y)630 1989 y(default,)44 b(to)d(\014nd)f(the)h(installed)g(v)m +Fu(b)m(y)630 2324 y(default,)44 b(to)d(\014nd)f(the)h(installed)g(v)m (ersion)h(of)f(Readline)g(if)g(it)g(is)g(not)g(in)g(the)g(standard)630 -2098 y(system)35 b(include)f(and)g(library)g(directories.)54 +2434 y(system)35 b(include)f(and)g(library)g(directories.)54 b(If)34 b Fr(PREFIX)43 b Fu(is)35 b Ft(no)p Fu(,)g(Bash)f(links)h(with) -f(the)630 2208 y(v)m(ersion)42 b(in)e Ft(lib/readline)p +f(the)630 2544 y(v)m(ersion)42 b(in)e Ft(lib/readline)p Fu(.)70 b(If)40 b Fr(PREFIX)51 b Fu(is)41 b(set)g(to)h(an)m(y)g(other)f -(v)-5 b(alue,)44 b Ft(configure)630 2317 y Fu(treats)27 +(v)-5 b(alue,)44 b Ft(configure)630 2653 y Fu(treats)27 b(it)g(as)f(a)h(directory)g(pathname)f(and)f(lo)s(oks)i(for)f(the)g -(installed)h(v)m(ersion)g(of)f(Readline)630 2427 y(in)34 +(installed)h(v)m(ersion)g(of)f(Readline)630 2763 y(in)34 b(sub)s(directories)f(of)h(that)h(directory)g(\(include)f(\014les)g(in) g Fr(PREFIX)9 b Fu(/)p Ft(include)32 b Fu(and)i(the)630 -2536 y(library)c(in)g Fr(PREFIX)9 b Fu(/)p Ft(lib)p Fu(\).)150 -2698 y Ft(--with-purify)630 2807 y Fu(De\014ne)23 b(this)g(to)h(use)f +2872 y(library)c(in)g Fr(PREFIX)9 b Fu(/)p Ft(lib)p Fu(\).)150 +3036 y Ft(--with-purify)630 3146 y Fu(De\014ne)23 b(this)g(to)h(use)f (the)g(Purify)f(memory)h(allo)s(cation)i(c)m(hec)m(k)m(er)g(from)e -(Rational)i(Soft)m(w)m(are.)150 2969 y Ft(--enable-minimal-config)630 -3078 y Fu(This)e(pro)s(duces)f(a)i(shell)g(with)f(minimal)h(features,)h +(Rational)i(Soft)m(w)m(are.)150 3309 y Ft(--enable-minimal-config)630 +3419 y Fu(This)e(pro)s(duces)f(a)i(shell)g(with)f(minimal)h(features,)h (close)g(to)f(the)g(historical)h(Bourne)e(shell.)275 -3241 y(There)k(are)i(sev)m(eral)g Ft(--enable-)d Fu(options)i(that)h +3585 y(There)k(are)i(sev)m(eral)g Ft(--enable-)d Fu(options)i(that)h (alter)g(ho)m(w)f(Bash)g(is)g(compiled)h(and)e(link)m(ed,)i(rather)150 -3350 y(than)h(c)m(hanging)h(run-time)f(features.)150 -3513 y Ft(--enable-largefile)630 3622 y Fu(Enable)e(supp)s(ort)f(for)h +3694 y(than)h(c)m(hanging)h(run-time)f(features.)150 +3860 y Ft(--enable-largefile)630 3970 y Fu(Enable)e(supp)s(ort)f(for)h (large)i(\014les)f(\()p Ft(http://www.sas.com/stand)o(ards)o(/la)o -(rge_)o(file)o(/)630 3732 y(x_open)5 b(.)t(20Mar96)g(.)t(html)p -Fu(\))31 b(if)37 b(the)f(op)s(erating)h(system)g(requires)f(sp)s(ecial) -h(compiler)g(op-)630 3842 y(tions)27 b(to)h(build)e(programs)h(whic)m +(rge_)o(file)o(/)630 4079 y(x_open)5 b(.)g(20Mar96)g(.)g(html)p +Fu(\))31 b(if)36 b(the)g(op)s(erating)h(system)f(requires)g(sp)s(ecial) +h(compiler)g(op-)630 4189 y(tions)27 b(to)h(build)e(programs)h(whic)m (h)g(can)g(access)h(large)h(\014les.)39 b(This)26 b(is)i(enabled)f(b)m -(y)f(default,)630 3951 y(if)k(the)h(op)s(erating)g(system)f(pro)m -(vides)h(large)g(\014le)g(supp)s(ort.)150 4113 y Ft(--enable-profiling) -630 4222 y Fu(This)g(builds)f(a)i(Bash)g(binary)f(that)h(pro)s(duces)e +(y)f(default,)630 4299 y(if)k(the)h(op)s(erating)g(system)f(pro)m +(vides)h(large)g(\014le)g(supp)s(ort.)150 4462 y Ft(--enable-profiling) +630 4572 y Fu(This)g(builds)f(a)i(Bash)g(binary)f(that)h(pro)s(duces)e (pro\014ling)h(information)h(to)h(b)s(e)d(pro)s(cessed)630 -4332 y(b)m(y)g Ft(gprof)f Fu(eac)m(h)j(time)f(it)g(is)f(executed.)150 -4493 y Ft(--enable-static-link)630 4603 y Fu(This)37 +4682 y(b)m(y)g Ft(gprof)f Fu(eac)m(h)j(time)f(it)g(is)f(executed.)150 +4845 y Ft(--enable-static-link)630 4955 y Fu(This)37 b(causes)h(Bash)f(to)h(b)s(e)f(link)m(ed)h(statically)-8 b(,)43 b(if)37 b Ft(gcc)g Fu(is)g(b)s(eing)g(used.)61 -b(This)37 b(could)h(b)s(e)630 4712 y(used)30 b(to)h(build)e(a)i(v)m -(ersion)g(to)g(use)f(as)g(ro)s(ot's)h(shell.)275 4875 +b(This)37 b(could)h(b)s(e)630 5064 y(used)30 b(to)h(build)e(a)i(v)m +(ersion)g(to)g(use)f(as)g(ro)s(ot's)h(shell.)275 5230 y(The)f(`)p Ft(minimal-config)p Fu(')d(option)k(can)g(b)s(e)f(used)f (to)j(disable)e(all)i(of)f(the)f(follo)m(wing)i(options,)g(but)d(it)150 -4984 y(is)h(pro)s(cessed)g(\014rst,)g(so)h(individual)f(options)g(ma)m +5340 y(is)h(pro)s(cessed)g(\014rst,)g(so)h(individual)f(options)g(ma)m (y)h(b)s(e)f(enabled)g(using)g(`)p Ft(enable-)p Fj(feature)p -Fu('.)275 5121 y(All)c(of)f(the)h(follo)m(wing)h(options)f(except)g -(for)g(`)p Ft(disabled-builtins)p Fu(',)c(`)p Ft(direxpand-default)p -Fu(',)h(and)150 5230 y(`)p Ft(xpg-echo-default)p Fu(')28 -b(are)33 b(enabled)f(b)m(y)g(default,)h(unless)e(the)i(op)s(erating)f -(system)h(do)s(es)e(not)i(pro)m(vide)150 5340 y(the)e(necessary)f(supp) -s(ort.)p eop end +Fu('.)p eop end %%Page: 145 151 TeXDict begin 145 150 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(145)150 299 y Ft(--enable-alias)630 -408 y Fu(Allo)m(w)41 b(alias)g(expansion)f(and)f(include)g(the)h -Ft(alias)f Fu(and)g Ft(unalias)e Fu(builtins)j(\(see)g(Sec-)630 -518 y(tion)31 b(6.6)g([Aliases],)i(page)e(89\).)150 682 -y Ft(--enable-arith-for-comma)o(nd)630 792 y Fu(Include)21 +b(Installing)31 b(Bash)2356 b(145)275 299 y(All)26 b(of)f(the)h(follo)m +(wing)h(options)f(except)g(for)g(`)p Ft(disabled-builtins)p +Fu(',)c(`)p Ft(direxpand-default)p Fu(',)h(and)150 408 +y(`)p Ft(xpg-echo-default)p Fu(')28 b(are)33 b(enabled)f(b)m(y)g +(default,)h(unless)e(the)i(op)s(erating)f(system)h(do)s(es)e(not)i(pro) +m(vide)150 518 y(the)e(necessary)f(supp)s(ort.)150 698 +y Ft(--enable-alias)630 807 y Fu(Allo)m(w)41 b(alias)g(expansion)f(and) +f(include)g(the)h Ft(alias)f Fu(and)g Ft(unalias)e Fu(builtins)j(\(see) +g(Sec-)630 917 y(tion)31 b(6.6)g([Aliases],)i(page)e(89\).)150 +1090 y Ft(--enable-arith-for-comma)o(nd)630 1200 y Fu(Include)21 b(supp)s(ort)g(for)g(the)i(alternate)g(form)f(of)g(the)g Ft(for)f Fu(command)h(that)h(b)s(eha)m(v)m(es)f(lik)m(e)i(the)630 -902 y(C)30 b(language)i Ft(for)d Fu(statemen)m(t)j(\(see)g(Section)f +1309 y(C)30 b(language)i Ft(for)d Fu(statemen)m(t)j(\(see)g(Section)f (3.2.4.1)i([Lo)s(oping)d(Constructs],)h(page)g(10\).)150 -1066 y Ft(--enable-array-variables)630 1176 y Fu(Include)h(supp)s(ort)g +1482 y Ft(--enable-array-variables)630 1592 y Fu(Include)h(supp)s(ort)g (for)h(one-dimensional)h(arra)m(y)f(shell)h(v)-5 b(ariables)33 -b(\(see)h(Section)g(6.7)h([Ar-)630 1285 y(ra)m(ys],)c(page)g(90\).)150 -1450 y Ft(--enable-bang-history)630 1559 y Fu(Include)36 +b(\(see)h(Section)g(6.7)h([Ar-)630 1701 y(ra)m(ys],)c(page)g(90\).)150 +1874 y Ft(--enable-bang-history)630 1984 y Fu(Include)36 b(supp)s(ort)f(for)h Ft(csh)p Fu(-lik)m(e)h(history)g(substitution)f -(\(see)h(Section)g(9.3)h([History)f(In-)630 1669 y(teraction],)c(page)e -(138\).)150 1833 y Ft(--enable-brace-expansion)630 1943 +(\(see)h(Section)g(9.3)h([History)f(In-)630 2093 y(teraction],)c(page)e +(138\).)150 2266 y Ft(--enable-brace-expansion)630 2376 y Fu(Include)40 b Ft(csh)p Fu(-lik)m(e)h(brace)f(expansion)g(\()h Ft(b{a,b}c)d Fq(7!)i Ft(bac)30 b(bbc)39 b Fu(\).)71 b(See)40 -b(Section)h(3.5.1)630 2052 y([Brace)32 b(Expansion],)e(page)h(21,)h -(for)e(a)g(complete)i(description.)150 2217 y Ft -(--enable-casemod-attribu)o(tes)630 2326 y Fu(Include)37 +b(Section)h(3.5.1)630 2485 y([Brace)32 b(Expansion],)e(page)h(21,)h +(for)e(a)g(complete)i(description.)150 2658 y Ft +(--enable-casemod-attribu)o(tes)630 2768 y Fu(Include)37 b(supp)s(ort)g(for)g(case-mo)s(difying)i(attributes)g(in)e(the)h -Ft(declare)e Fu(builtin)i(and)f(as-)630 2436 y(signmen)m(t)29 +Ft(declare)e Fu(builtin)i(and)f(as-)630 2878 y(signmen)m(t)29 b(statemen)m(ts.)41 b(V)-8 b(ariables)30 b(with)e(the)g Fr(upp)s(ercase)k Fu(attribute,)e(for)e(example,)i(will)630 -2545 y(ha)m(v)m(e)i(their)e(v)-5 b(alues)31 b(con)m(v)m(erted)h(to)f -(upp)s(ercase)e(up)s(on)g(assignmen)m(t.)150 2710 y Ft -(--enable-casemod-expansi)o(on)630 2819 y Fu(Include)h(supp)s(ort)e +2987 y(ha)m(v)m(e)i(their)e(v)-5 b(alues)31 b(con)m(v)m(erted)h(to)f +(upp)s(ercase)e(up)s(on)g(assignmen)m(t.)150 3160 y Ft +(--enable-casemod-expansi)o(on)630 3270 y Fu(Include)h(supp)s(ort)e (for)i(case-mo)s(difying)i(w)m(ord)e(expansions.)150 -2984 y Ft(--enable-command-timing)630 3093 y Fu(Include)43 +3443 y Ft(--enable-command-timing)630 3552 y Fu(Include)43 b(supp)s(ort)f(for)h(recognizing)i Ft(time)e Fu(as)g(a)h(reserv)m(ed)g -(w)m(ord)f(and)g(for)h(displa)m(ying)630 3203 y(timing)37 +(w)m(ord)f(and)g(for)h(displa)m(ying)630 3662 y(timing)37 b(statistics)h(for)e(the)g(pip)s(eline)g(follo)m(wing)i Ft(time)d Fu(\(see)i(Section)g(3.2.2)h([Pip)s(elines],)630 -3313 y(page)24 b(8\).)39 b(This)23 b(allo)m(ws)h(pip)s(elines)f(as)h(w) +3771 y(page)24 b(8\).)39 b(This)23 b(allo)m(ws)h(pip)s(elines)f(as)h(w) m(ell)g(as)g(shell)f(builtins)g(and)g(functions)g(to)h(b)s(e)e(timed.) -150 3477 y Ft(--enable-cond-command)630 3587 y Fu(Include)33 +150 3944 y Ft(--enable-cond-command)630 4054 y Fu(Include)33 b(supp)s(ort)f(for)i(the)g Ft([[)f Fu(conditional)i(command.)51 -b(\(see)34 b(Section)h(3.2.4.2)h([Condi-)630 3696 y(tional)c -(Constructs],)e(page)h(10\).)150 3861 y Ft(--enable-cond-regexp)630 -3970 y Fu(Include)k(supp)s(ort)f(for)i(matc)m(hing)h +b(\(see)34 b(Section)h(3.2.4.2)h([Condi-)630 4164 y(tional)c +(Constructs],)e(page)h(10\).)150 4337 y Ft(--enable-cond-regexp)630 +4446 y Fu(Include)k(supp)s(ort)f(for)i(matc)m(hing)h Fm(posix)e Fu(regular)h(expressions)g(using)f(the)h(`)p -Ft(=~)p Fu(')g(binary)630 4080 y(op)s(erator)25 b(in)f(the)h +Ft(=~)p Fu(')g(binary)630 4556 y(op)s(erator)25 b(in)f(the)h Ft([[)f Fu(conditional)h(command.)39 b(\(see)25 b(Section)h(3.2.4.2)h -([Conditional)e(Con-)630 4189 y(structs],)31 b(page)g(10\).)150 -4354 y Ft(--enable-coprocesses)630 4463 y Fu(Include)23 +([Conditional)e(Con-)630 4665 y(structs],)31 b(page)g(10\).)150 +4838 y Ft(--enable-coprocesses)630 4948 y Fu(Include)23 b(supp)s(ort)f(for)i(copro)s(cesses)g(and)f(the)h Ft(coproc)e Fu(reserv)m(ed)i(w)m(ord)g(\(see)h(Section)f(3.2.2)630 -4573 y([Pip)s(elines],)31 b(page)g(8\).)150 4737 y Ft -(--enable-debugger)630 4847 y Fu(Include)f(supp)s(ort)e(for)i(the)h -(bash)f(debugger)g(\(distributed)g(separately\).)150 -5011 y Ft(--enable-direxpand-defau)o(lt)630 5121 y Fu(Cause)53 -b(the)g Ft(direxpand)d Fu(shell)j(option)h(\(see)g(Section)f(4.3.2)i -([The)e(Shopt)f(Builtin],)630 5230 y(page)29 b(63\))g(to)f(b)s(e)f -(enabled)h(b)m(y)g(default)g(when)e(the)i(shell)g(starts.)41 -b(It)27 b(is)h(normally)g(disabled)630 5340 y(b)m(y)i(default.)p -eop end +5057 y([Pip)s(elines],)31 b(page)g(8\).)150 5230 y Ft +(--enable-debugger)630 5340 y Fu(Include)f(supp)s(ort)e(for)i(the)h +(bash)f(debugger)g(\(distributed)g(separately\).)p eop +end %%Page: 146 152 TeXDict begin 146 151 bop 150 -116 a Fu(Chapter)30 b(10:)41 b(Installing)31 b(Bash)2356 b(146)150 299 y Ft -(--enable-directory-stack)630 408 y Fu(Include)33 b(supp)s(ort)g(for)h -(a)g Ft(csh)p Fu(-lik)m(e)h(directory)f(stac)m(k)i(and)d(the)i +(--enable-direxpand-defau)o(lt)630 408 y Fu(Cause)53 +b(the)g Ft(direxpand)d Fu(shell)j(option)h(\(see)g(Section)f(4.3.2)i +([The)e(Shopt)f(Builtin],)630 518 y(page)29 b(63\))g(to)f(b)s(e)f +(enabled)h(b)m(y)g(default)g(when)e(the)i(shell)g(starts.)41 +b(It)27 b(is)h(normally)g(disabled)630 628 y(b)m(y)i(default.)150 +774 y Ft(--enable-directory-stack)630 883 y Fu(Include)j(supp)s(ort)g +(for)h(a)g Ft(csh)p Fu(-lik)m(e)h(directory)f(stac)m(k)i(and)d(the)i Ft(pushd)p Fu(,)f Ft(popd)p Fu(,)g(and)f Ft(dirs)630 -518 y Fu(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m -(k],)g(page)f(91\).)150 673 y Ft(--enable-disabled-builti)o(ns)630 -783 y Fu(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m +993 y Fu(builtins)d(\(see)h(Section)g(6.8)h([The)e(Directory)i(Stac)m +(k],)g(page)f(91\).)150 1139 y Ft(--enable-disabled-builti)o(ns)630 +1249 y Fu(Allo)m(w)40 b(builtin)e(commands)g(to)h(b)s(e)f(in)m(v)m(ok)m (ed)i(via)f(`)p Ft(builtin)29 b(xxx)p Fu(')37 b(ev)m(en)j(after)f -Ft(xxx)e Fu(has)630 892 y(b)s(een)31 b(disabled)g(using)g(`)p +Ft(xxx)e Fu(has)630 1358 y(b)s(een)31 b(disabled)g(using)g(`)p Ft(enable)d(-n)i(xxx)p Fu('.)43 b(See)32 b(Section)g(4.2)h([Bash)e -(Builtins],)i(page)f(48,)630 1002 y(for)e(details)i(of)e(the)h +(Builtins],)i(page)f(48,)630 1468 y(for)e(details)i(of)e(the)h Ft(builtin)d Fu(and)i Ft(enable)e Fu(builtin)i(commands.)150 -1157 y Ft(--enable-dparen-arithmet)o(ic)630 1267 y Fu(Include)42 +1614 y Ft(--enable-dparen-arithmet)o(ic)630 1724 y Fu(Include)42 b(supp)s(ort)f(for)h(the)h Ft(\(\(...)o(\)\))f Fu(command)g(\(see)i -(Section)f(3.2.4.2)i([Conditional)630 1377 y(Constructs],)30 -b(page)h(10\).)150 1532 y Ft(--enable-extended-glob)630 -1641 y Fu(Include)40 b(supp)s(ort)e(for)i(the)h(extended)f(pattern)h +(Section)f(3.2.4.2)i([Conditional)630 1833 y(Constructs],)30 +b(page)h(10\).)150 1979 y Ft(--enable-extended-glob)630 +2089 y Fu(Include)40 b(supp)s(ort)e(for)i(the)h(extended)f(pattern)h (matc)m(hing)g(features)g(describ)s(ed)e(ab)s(o)m(v)m(e)630 -1751 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i -(page)e(31.)150 1906 y Ft(--enable-extended-glob-d)o(efau)o(lt)630 -2016 y Fu(Set)40 b(the)g(default)g(v)-5 b(alue)41 b(of)f(the)g +2198 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i +(page)e(31.)150 2345 y Ft(--enable-extended-glob-d)o(efau)o(lt)630 +2454 y Fu(Set)40 b(the)g(default)g(v)-5 b(alue)41 b(of)f(the)g Fr(extglob)j Fu(shell)d(option)g(describ)s(ed)f(ab)s(o)m(v)m(e)i(under) -d(Sec-)630 2125 y(tion)31 b(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g -(63)g(to)h(b)s(e)d(enabled.)150 2281 y Ft(--enable-function-import)630 -2390 y Fu(Include)23 b(supp)s(ort)g(for)g(imp)s(orting)h(function)g +d(Sec-)630 2564 y(tion)31 b(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g +(63)g(to)h(b)s(e)d(enabled.)150 2710 y Ft(--enable-function-import)630 +2819 y Fu(Include)23 b(supp)s(ort)g(for)g(imp)s(orting)h(function)g (de\014nitions)f(exp)s(orted)h(b)m(y)g(another)g(instance)630 -2500 y(of)31 b(the)f(shell)h(from)f(the)g(en)m(vironmen)m(t.)41 +2929 y(of)31 b(the)f(shell)h(from)f(the)g(en)m(vironmen)m(t.)41 b(This)30 b(option)h(is)f(enabled)h(b)m(y)f(default.)150 -2655 y Ft(--enable-glob-asciirange)o(-def)o(ault)630 -2765 y Fu(Set)h(the)g(default)f(v)-5 b(alue)31 b(of)g(the)g +3075 y Ft(--enable-glob-asciirange)o(-def)o(ault)630 +3185 y Fu(Set)h(the)g(default)f(v)-5 b(alue)31 b(of)g(the)g Fr(globasciiranges)36 b Fu(shell)31 b(option)g(describ)s(ed)f(ab)s(o)m -(v)m(e)h(under)630 2874 y(Section)41 b(4.3.2)h([The)e(Shopt)f +(v)m(e)h(under)630 3294 y(Section)41 b(4.3.2)h([The)e(Shopt)f (Builtin],)44 b(page)d(63)g(to)g(b)s(e)f(enabled.)70 -b(This)39 b(con)m(trols)j(the)630 2984 y(b)s(eha)m(vior)21 +b(This)39 b(con)m(trols)j(the)630 3404 y(b)s(eha)m(vior)21 b(of)g(c)m(haracter)h(ranges)f(when)f(used)g(in)g(pattern)h(matc)m -(hing)h(brac)m(k)m(et)g(expressions.)150 3139 y Ft -(--enable-help-builtin)630 3249 y Fu(Include)i(the)h +(hing)h(brac)m(k)m(et)g(expressions.)150 3550 y Ft +(--enable-help-builtin)630 3660 y Fu(Include)i(the)h Ft(help)f Fu(builtin,)h(whic)m(h)g(displa)m(ys)f(help)h(on)f(shell)h -(builtins)f(and)h(v)-5 b(ariables)25 b(\(see)630 3358 +(builtins)f(and)h(v)-5 b(ariables)25 b(\(see)630 3769 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f(48\).)150 -3513 y Ft(--enable-history)630 3623 y Fu(Include)e(command)g(history)h +3915 y Ft(--enable-history)630 4025 y Fu(Include)e(command)g(history)h (and)f(the)h Ft(fc)f Fu(and)g Ft(history)e Fu(builtin)j(commands)f -(\(see)h(Sec-)630 3733 y(tion)h(9.1)g([Bash)g(History)g(F)-8 -b(acilities],)34 b(page)d(136\).)150 3888 y Ft(--enable-job-control)630 -3998 y Fu(This)e(enables)i(the)f(job)g(con)m(trol)h(features)g(\(see)g +(\(see)h(Sec-)630 4134 y(tion)h(9.1)g([Bash)g(History)g(F)-8 +b(acilities],)34 b(page)d(136\).)150 4281 y Ft(--enable-job-control)630 +4390 y Fu(This)e(enables)i(the)f(job)g(con)m(trol)h(features)g(\(see)g (Chapter)f(7)g([Job)g(Con)m(trol],)h(page)g(99\),)h(if)630 -4107 y(the)f(op)s(erating)f(system)h(supp)s(orts)d(them.)150 -4262 y Ft(--enable-multibyte)630 4372 y Fu(This)h(enables)i(supp)s(ort) +4500 y(the)f(op)s(erating)f(system)h(supp)s(orts)d(them.)150 +4646 y Ft(--enable-multibyte)630 4756 y Fu(This)h(enables)i(supp)s(ort) d(for)i(m)m(ultib)m(yte)h(c)m(haracters)g(if)f(the)g(op)s(erating)h -(system)f(pro)m(vides)630 4482 y(the)h(necessary)f(supp)s(ort.)150 -4637 y Ft(--enable-net-redirection)o(s)630 4746 y Fu(This)23 +(system)f(pro)m(vides)630 4865 y(the)h(necessary)f(supp)s(ort.)150 +5011 y Ft(--enable-net-redirection)o(s)630 5121 y Fu(This)23 b(enables)h(the)g(sp)s(ecial)h(handling)e(of)h(\014lenames)g(of)g(the)g -(form)g Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 4856 +(form)g Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 5230 y Fu(and)31 b Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)26 b Fu(when)31 b(used)g(in)g(redirections)h(\(see)g(Section)g(3.6)h -([Redirec-)630 4966 y(tions],)e(page)g(32\).)150 5121 -y Ft(--enable-process-substit)o(utio)o(n)630 5230 y Fu(This)49 -b(enables)i(pro)s(cess)f(substitution)g(\(see)h(Section)g(3.5.6)h([Pro) -s(cess)e(Substitution],)630 5340 y(page)31 b(30\))h(if)e(the)h(op)s -(erating)f(system)h(pro)m(vides)f(the)h(necessary)g(supp)s(ort.)p -eop end +([Redirec-)630 5340 y(tions],)e(page)g(32\).)p eop end %%Page: 147 153 TeXDict begin 147 152 bop 150 -116 a Fu(Chapter)30 b(10:)41 -b(Installing)31 b(Bash)2356 b(147)150 299 y Ft(--enable-progcomp)630 -408 y Fu(Enable)28 b(the)g(programmable)g(completion)i(facilities)g -(\(see)f(Section)g(8.6)g([Programmable)630 518 y(Completion],)i(page)h -(128\).)42 b(If)30 b(Readline)h(is)f(not)h(enabled,)f(this)h(option)g -(has)f(no)g(e\013ect.)150 677 y Ft(--enable-prompt-string-d)o(ecod)o -(ing)630 787 y Fu(T)-8 b(urn)30 b(on)i(the)f(in)m(terpretation)i(of)f -(a)g(n)m(um)m(b)s(er)e(of)i(bac)m(kslash-escap)s(ed)g(c)m(haracters)i -(in)d(the)630 897 y Ft($PS1)p Fu(,)36 b Ft($PS2)p Fu(,)g -Ft($PS3)p Fu(,)h(and)e Ft($PS4)f Fu(prompt)h(strings.)57 -b(See)36 b(Section)h(6.9)g([Con)m(trolling)g(the)630 -1006 y(Prompt],)30 b(page)h(93,)h(for)e(a)h(complete)h(list)f(of)f -(prompt)g(string)g(escap)s(e)h(sequences.)150 1166 y -Ft(--enable-readline)630 1275 y Fu(Include)d(supp)s(ort)f(for)h -(command-line)h(editing)g(and)f(history)g(with)g(the)h(Bash)g(v)m -(ersion)g(of)630 1385 y(the)i(Readline)g(library)f(\(see)h(Chapter)f(8) -g([Command)g(Line)g(Editing],)h(page)g(103\).)150 1544 -y Ft(--enable-restricted)630 1654 y Fu(Include)41 b(supp)s(ort)f(for)i -(a)g Fr(restricted)g(shell)p Fu(.)75 b(If)42 b(this)f(is)h(enabled,)j -(Bash,)g(when)c(called)630 1763 y(as)f Ft(rbash)p Fu(,)h(en)m(ters)f(a) -g(restricted)h(mo)s(de.)68 b(See)40 b(Section)h(6.10)g([The)f -(Restricted)h(Shell],)630 1873 y(page)31 b(94,)h(for)e(a)g(description) -h(of)f(restricted)h(mo)s(de.)150 2032 y Ft(--enable-select)630 -2142 y Fu(Include)25 b(the)h Ft(select)f Fu(comp)s(ound)f(command,)j -(whic)m(h)e(allo)m(ws)j(the)e(generation)h(of)f(simple)630 -2252 y(men)m(us)k(\(see)h(Section)g(3.2.4.2)i([Conditional)e -(Constructs],)g(page)g(10\).)150 2411 y Ft(--enable-separate-helpfi)o -(les)630 2521 y Fu(Use)h(external)h(\014les)f(for)g(the)g(do)s(cumen)m -(tation)h(displa)m(y)m(ed)f(b)m(y)g(the)g Ft(help)f Fu(builtin)h -(instead)630 2630 y(of)f(storing)f(the)h(text)g(in)m(ternally)-8 -b(.)150 2790 y Ft(--enable-single-help-str)o(ings)630 -2899 y Fu(Store)40 b(the)g(text)h(displa)m(y)m(ed)g(b)m(y)e(the)i -Ft(help)d Fu(builtin)i(as)g(a)g(single)h(string)f(for)f(eac)m(h)i(help) -630 3009 y(topic.)54 b(This)33 b(aids)i(in)f(translating)h(the)g(text)g -(to)g(di\013eren)m(t)g(languages.)54 b(Y)-8 b(ou)35 b(ma)m(y)g(need)630 -3118 y(to)c(disable)g(this)f(if)g(y)m(our)h(compiler)g(cannot)f(handle) -g(v)m(ery)h(long)g(string)f(literals.)150 3278 y Ft -(--enable-strict-posix-de)o(faul)o(t)630 3387 y Fu(Mak)m(e)c(Bash)f -Fm(posix)p Fu(-conforman)m(t)g(b)m(y)f(default)h(\(see)g(Section)h -(6.11)g([Bash)f(POSIX)e(Mo)s(de],)630 3497 y(page)31 -b(95\).)150 3656 y Ft(--enable-usg-echo-defaul)o(t)630 -3766 y Fu(A)f(synon)m(ym)g(for)g Ft(--enable-xpg-echo-default)p -Fu(.)150 3925 y Ft(--enable-xpg-echo-defaul)o(t)630 4035 +b(Installing)31 b(Bash)2356 b(147)150 299 y Ft +(--enable-process-substit)o(utio)o(n)630 408 y Fu(This)49 +b(enables)i(pro)s(cess)f(substitution)g(\(see)h(Section)g(3.5.6)h([Pro) +s(cess)e(Substitution],)630 518 y(page)31 b(30\))h(if)e(the)h(op)s +(erating)f(system)h(pro)m(vides)f(the)h(necessary)g(supp)s(ort.)150 +677 y Ft(--enable-progcomp)630 787 y Fu(Enable)d(the)g(programmable)g +(completion)i(facilities)g(\(see)f(Section)g(8.6)g([Programmable)630 +897 y(Completion],)i(page)h(128\).)42 b(If)30 b(Readline)h(is)f(not)h +(enabled,)f(this)h(option)g(has)f(no)g(e\013ect.)150 +1056 y Ft(--enable-prompt-string-d)o(ecod)o(ing)630 1166 +y Fu(T)-8 b(urn)30 b(on)i(the)f(in)m(terpretation)i(of)f(a)g(n)m(um)m +(b)s(er)e(of)i(bac)m(kslash-escap)s(ed)g(c)m(haracters)i(in)d(the)630 +1275 y Ft($PS1)p Fu(,)36 b Ft($PS2)p Fu(,)g Ft($PS3)p +Fu(,)h(and)e Ft($PS4)f Fu(prompt)h(strings.)57 b(See)36 +b(Section)h(6.9)g([Con)m(trolling)g(the)630 1385 y(Prompt],)30 +b(page)h(93,)h(for)e(a)h(complete)h(list)f(of)f(prompt)g(string)g +(escap)s(e)h(sequences.)150 1544 y Ft(--enable-readline)630 +1654 y Fu(Include)d(supp)s(ort)f(for)h(command-line)h(editing)g(and)f +(history)g(with)g(the)h(Bash)g(v)m(ersion)g(of)630 1763 +y(the)i(Readline)g(library)f(\(see)h(Chapter)f(8)g([Command)g(Line)g +(Editing],)h(page)g(103\).)150 1923 y Ft(--enable-restricted)630 +2032 y Fu(Include)41 b(supp)s(ort)f(for)i(a)g Fr(restricted)g(shell)p +Fu(.)75 b(If)42 b(this)f(is)h(enabled,)j(Bash,)g(when)c(called)630 +2142 y(as)f Ft(rbash)p Fu(,)h(en)m(ters)f(a)g(restricted)h(mo)s(de.)68 +b(See)40 b(Section)h(6.10)g([The)f(Restricted)h(Shell],)630 +2252 y(page)31 b(94,)h(for)e(a)g(description)h(of)f(restricted)h(mo)s +(de.)150 2411 y Ft(--enable-select)630 2521 y Fu(Include)25 +b(the)h Ft(select)f Fu(comp)s(ound)f(command,)j(whic)m(h)e(allo)m(ws)j +(the)e(generation)h(of)f(simple)630 2630 y(men)m(us)k(\(see)h(Section)g +(3.2.4.2)i([Conditional)e(Constructs],)g(page)g(10\).)150 +2790 y Ft(--enable-separate-helpfi)o(les)630 2899 y Fu(Use)h(external)h +(\014les)f(for)g(the)g(do)s(cumen)m(tation)h(displa)m(y)m(ed)f(b)m(y)g +(the)g Ft(help)f Fu(builtin)h(instead)630 3009 y(of)f(storing)f(the)h +(text)g(in)m(ternally)-8 b(.)150 3168 y Ft(--enable-single-help-str)o +(ings)630 3278 y Fu(Store)40 b(the)g(text)h(displa)m(y)m(ed)g(b)m(y)e +(the)i Ft(help)d Fu(builtin)i(as)g(a)g(single)h(string)f(for)f(eac)m(h) +i(help)630 3387 y(topic.)54 b(This)33 b(aids)i(in)f(translating)h(the)g +(text)g(to)g(di\013eren)m(t)g(languages.)54 b(Y)-8 b(ou)35 +b(ma)m(y)g(need)630 3497 y(to)c(disable)g(this)f(if)g(y)m(our)h +(compiler)g(cannot)f(handle)g(v)m(ery)h(long)g(string)f(literals.)150 +3656 y Ft(--enable-strict-posix-de)o(faul)o(t)630 3766 +y Fu(Mak)m(e)c(Bash)f Fm(posix)p Fu(-conforman)m(t)g(b)m(y)f(default)h +(\(see)g(Section)h(6.11)g([Bash)f(POSIX)e(Mo)s(de],)630 +3875 y(page)31 b(95\).)150 4035 y Ft(--enable-usg-echo-defaul)o(t)630 +4144 y Fu(A)f(synon)m(ym)g(for)g Ft(--enable-xpg-echo-default)p +Fu(.)150 4304 y Ft(--enable-xpg-echo-defaul)o(t)630 4413 y Fu(Mak)m(e)c(the)f Ft(echo)e Fu(builtin)i(expand)f(bac)m (kslash-escap)s(ed)h(c)m(haracters)h(b)m(y)f(default,)h(without)630 -4144 y(requiring)d(the)h Ft(-e)f Fu(option.)39 b(This)23 +4523 y(requiring)d(the)h Ft(-e)f Fu(option.)39 b(This)23 b(sets)h(the)g(default)g(v)-5 b(alue)24 b(of)g(the)g -Ft(xpg_echo)e Fu(shell)h(option)630 4254 y(to)28 b Ft(on)p +Ft(xpg_echo)e Fu(shell)h(option)630 4633 y(to)28 b Ft(on)p Fu(,)g(whic)m(h)f(mak)m(es)h(the)g(Bash)f Ft(echo)f Fu(b)s(eha)m(v)m(e) i(more)g(lik)m(e)h(the)e(v)m(ersion)h(sp)s(eci\014ed)f(in)g(the)630 -4364 y(Single)35 b(Unix)f(Sp)s(eci\014cation,)i(v)m(ersion)e(3.)53 +4742 y(Single)35 b(Unix)f(Sp)s(eci\014cation,)i(v)m(ersion)e(3.)53 b(See)35 b(Section)g(4.2)g([Bash)g(Builtins],)h(page)f(48,)630 -4473 y(for)30 b(a)h(description)f(of)h(the)f(escap)s(e)h(sequences)g -(that)g Ft(echo)e Fu(recognizes.)275 4633 y(The)f(\014le)i +4852 y(for)30 b(a)h(description)f(of)h(the)f(escap)s(e)h(sequences)g +(that)g Ft(echo)e Fu(recognizes.)275 5011 y(The)f(\014le)i Ft(config-top.h)c Fu(con)m(tains)31 b(C)d(Prepro)s(cessor)h(`)p Ft(#define)p Fu(')f(statemen)m(ts)j(for)f(options)f(whic)m(h)150 -4742 y(are)35 b(not)g(settable)i(from)d Ft(configure)p +5121 y(are)35 b(not)g(settable)i(from)d Ft(configure)p Fu(.)51 b(Some)35 b(of)g(these)g(are)h(not)f(mean)m(t)g(to)h(b)s(e)e(c) -m(hanged;)k(b)s(ew)m(are)d(of)150 4852 y(the)h(consequences)g(if)f(y)m +m(hanged;)k(b)s(ew)m(are)d(of)150 5230 y(the)h(consequences)g(if)f(y)m (ou)h(do.)55 b(Read)36 b(the)g(commen)m(ts)g(asso)s(ciated)h(with)e -(eac)m(h)i(de\014nition)e(for)g(more)150 4961 y(information)c(ab)s(out) +(eac)m(h)i(de\014nition)e(for)g(more)150 5340 y(information)c(ab)s(out) f(its)h(e\013ect.)p eop end %%Page: 148 154 TeXDict begin 148 153 bop 150 -116 a Fu(App)s(endix)29 @@ -18439,8 +18479,8 @@ b(ailable)33 b(for)d(FTP)g(from)g Ft(ftp://ftp.gnu.org/pub/gn)o(u/ba)o Fu(command)i(to)150 996 y(submit)25 b(a)h(bug)g(rep)s(ort.)38 b(If)26 b(y)m(ou)g(ha)m(v)m(e)h(a)f(\014x,)h(y)m(ou)f(are)g(encouraged) h(to)f(mail)h(that)f(as)g(w)m(ell!)40 b(Suggestions)150 -1106 y(and)j(`philosophical')i(bug)e(rep)s(orts)g(ma)m(y)i(b)s(e)e -(mailed)h(to)g Ft(bug-bash@gnu)11 b(.)d(org)40 b Fu(or)k(p)s(osted)f +1106 y(and)j(`philosophical')i(bug)e(rep)s(orts)f(ma)m(y)j(b)s(e)e +(mailed)h(to)g Ft(bug-bash@gnu)11 b(.)g(org)39 b Fu(or)k(p)s(osted)g (to)i(the)150 1215 y(Usenet)31 b(newsgroup)e Ft(gnu.bash.bug)p Fu(.)275 1350 y(All)i(bug)e(rep)s(orts)h(should)f(include:)225 1484 y Fq(\017)60 b Fu(The)30 b(v)m(ersion)h(n)m(um)m(b)s(er)e(of)h @@ -18835,72 +18875,72 @@ b(The)39 b Ft(ERR)g Fu(trap)g(is)330 408 y(not)g(inherited)f(b)m(y)h b Fu(option)i(to)g(the)g Ft(set)f Fu(builtin)g(is)330 518 y(enabled.)330 650 y(The)g Ft(trap)g Fu(builtin)h(\(see)g(Section)h (4.1)g([Bourne)f(Shell)g(Builtins],)i(page)f(41\))g(allo)m(ws)g(a)g -Ft(RETURN)330 760 y Fu(pseudo-signal)35 b(sp)s(eci\014cation,)j +Ft(RETURN)330 759 y Fu(pseudo-signal)35 b(sp)s(eci\014cation,)j (similar)d(to)h Ft(EXIT)e Fu(and)g Ft(DEBUG)p Fu(.)54 b(Commands)34 b(sp)s(eci\014ed)g(with)h(an)330 869 y Ft(RETURN)k Fu(trap)i(are)g(executed)h(b)s(efore)e(execution)i(resumes) -e(after)h(a)g(shell)g(function)g(or)g(a)g(shell)330 979 +e(after)h(a)g(shell)g(function)g(or)g(a)g(shell)330 978 y(script)36 b(executed)g(with)g Ft(.)f Fu(or)h Ft(source)e Fu(returns.)56 b(The)35 b Ft(RETURN)f Fu(trap)i(is)g(not)g(inherited)f (b)m(y)h(shell)330 1088 y(functions)k(unless)h(the)g(function)f(has)h (b)s(een)f(giv)m(en)i(the)f Ft(trace)e Fu(attribute)j(or)e(the)h Ft(functrace)330 1198 y Fu(option)31 b(has)f(b)s(een)g(enabled)g(using) -g(the)g Ft(shopt)f Fu(builtin.)225 1330 y Fq(\017)60 +g(the)g Ft(shopt)f Fu(builtin.)225 1329 y Fq(\017)60 b Fu(The)30 b(Bash)g Ft(type)f Fu(builtin)h(is)g(more)g(extensiv)m(e)i (and)d(giv)m(es)j(more)e(information)h(ab)s(out)f(the)g(names)330 -1440 y(it)h(\014nds)e(\(see)i(Section)g(4.2)h([Bash)e(Builtins],)i -(page)f(48\).)225 1571 y Fq(\017)60 b Fu(The)27 b(Bash)h +1439 y(it)h(\014nds)e(\(see)i(Section)g(4.2)h([Bash)e(Builtins],)i +(page)f(48\).)225 1570 y Fq(\017)60 b Fu(The)27 b(Bash)h Ft(umask)e Fu(builtin)h(p)s(ermits)g(a)h Ft(-p)f Fu(option)h(to)h (cause)f(the)g(output)f(to)h(b)s(e)f(displa)m(y)m(ed)h(in)g(the)330 -1681 y(form)i(of)h(a)g Ft(umask)f Fu(command)g(that)i(ma)m(y)f(b)s(e)f +1680 y(form)i(of)h(a)g Ft(umask)f Fu(command)g(that)i(ma)m(y)f(b)s(e)f (reused)g(as)h(input)f(\(see)i(Section)f(4.1)h([Bourne)f(Shell)330 -1791 y(Builtins],)g(page)g(41\).)225 1923 y Fq(\017)60 +1789 y(Builtins],)g(page)g(41\).)225 1921 y Fq(\017)60 b Fu(Bash)34 b(implemen)m(ts)h(a)g Ft(csh)p Fu(-lik)m(e)g(directory)f (stac)m(k,)j(and)d(pro)m(vides)g(the)g Ft(pushd)p Fu(,)g -Ft(popd)p Fu(,)g(and)g Ft(dirs)330 2032 y Fu(builtins)g(to)i +Ft(popd)p Fu(,)g(and)g Ft(dirs)330 2030 y Fu(builtins)g(to)i (manipulate)f(it)h(\(see)f(Section)h(6.8)g([The)f(Directory)h(Stac)m -(k],)i(page)d(91\).)56 b(Bash)35 b(also)330 2142 y(mak)m(es)c(the)g +(k],)i(page)d(91\).)56 b(Bash)35 b(also)330 2140 y(mak)m(es)c(the)g (directory)g(stac)m(k)g(visible)g(as)g(the)f(v)-5 b(alue)31 b(of)g(the)f Ft(DIRSTACK)f Fu(shell)h(v)-5 b(ariable.)225 -2274 y Fq(\017)60 b Fu(Bash)28 b(in)m(terprets)h(sp)s(ecial)g(bac)m +2272 y Fq(\017)60 b Fu(Bash)28 b(in)m(terprets)h(sp)s(ecial)g(bac)m (kslash-escap)s(ed)g(c)m(haracters)g(in)f(the)h(prompt)e(strings)h -(when)f(in)m(ter-)330 2383 y(activ)m(e)33 b(\(see)e(Section)g(6.9)h +(when)f(in)m(ter-)330 2381 y(activ)m(e)33 b(\(see)e(Section)g(6.9)h ([Con)m(trolling)f(the)g(Prompt],)f(page)h(93\).)225 -2515 y Fq(\017)60 b Fu(The)46 b(Bash)h(restricted)g(mo)s(de)f(is)h +2513 y Fq(\017)60 b Fu(The)46 b(Bash)h(restricted)g(mo)s(de)f(is)h (more)f(useful)g(\(see)h(Section)h(6.10)g([The)e(Restricted)i(Shell],) -330 2625 y(page)31 b(94\);)h(the)f(SVR4.2)g(shell)f(restricted)h(mo)s -(de)f(is)h(to)s(o)g(limited.)225 2757 y Fq(\017)60 b +330 2622 y(page)31 b(94\);)h(the)f(SVR4.2)g(shell)f(restricted)h(mo)s +(de)f(is)h(to)s(o)g(limited.)225 2754 y Fq(\017)60 b Fu(The)30 b Ft(disown)f Fu(builtin)h(can)h(remo)m(v)m(e)h(a)f(job)f (from)g(the)h(in)m(ternal)g(shell)g(job)f(table)i(\(see)f(Section)h -(7.2)330 2866 y([Job)e(Con)m(trol)h(Builtins],)g(page)g(100\))g(or)g +(7.2)330 2863 y([Job)e(Con)m(trol)h(Builtins],)g(page)g(100\))g(or)g (suppress)d(the)i(sending)g(of)g Ft(SIGHUP)e Fu(to)j(a)g(job)f(when)f -(the)330 2976 y(shell)i(exits)g(as)f(the)h(result)f(of)h(a)f -Ft(SIGHUP)p Fu(.)225 3108 y Fq(\017)60 b Fu(Bash)31 b(includes)f(a)g(n) +(the)330 2973 y(shell)i(exits)g(as)f(the)h(result)f(of)h(a)f +Ft(SIGHUP)p Fu(.)225 3104 y Fq(\017)60 b Fu(Bash)31 b(includes)f(a)g(n) m(um)m(b)s(er)f(of)i(features)g(to)g(supp)s(ort)d(a)j(separate)g -(debugger)f(for)h(shell)f(scripts.)225 3240 y Fq(\017)60 +(debugger)f(for)h(shell)f(scripts.)225 3236 y Fq(\017)60 b Fu(The)28 b(SVR4.2)h(shell)f(has)g(t)m(w)m(o)i(privilege-related)g (builtins)e(\()p Ft(mldmode)e Fu(and)i Ft(priv)p Fu(\))f(not)i(presen)m -(t)f(in)330 3350 y(Bash.)225 3482 y Fq(\017)60 b Fu(Bash)31 +(t)f(in)330 3346 y(Bash.)225 3477 y Fq(\017)60 b Fu(Bash)31 b(do)s(es)f(not)g(ha)m(v)m(e)i(the)e Ft(stop)g Fu(or)g -Ft(newgrp)f Fu(builtins.)225 3613 y Fq(\017)60 b Fu(Bash)31 +Ft(newgrp)f Fu(builtins.)225 3609 y Fq(\017)60 b Fu(Bash)31 b(do)s(es)f(not)g(use)g(the)h Ft(SHACCT)d Fu(v)-5 b(ariable)32 -b(or)e(p)s(erform)f(shell)i(accoun)m(ting.)225 3745 y +b(or)e(p)s(erform)f(shell)i(accoun)m(ting.)225 3740 y Fq(\017)60 b Fu(The)30 b(SVR4.2)h Ft(sh)f Fu(uses)g(a)g Ft(TIMEOUT)f Fu(v)-5 b(ariable)31 b(lik)m(e)h(Bash)e(uses)g -Ft(TMOUT)p Fu(.)150 3900 y(More)h(features)g(unique)e(to)i(Bash)g(ma)m +Ft(TMOUT)p Fu(.)150 3894 y(More)h(features)g(unique)e(to)i(Bash)g(ma)m (y)g(b)s(e)f(found)f(in)h(Chapter)f(6)i([Bash)g(F)-8 -b(eatures],)32 b(page)f(81.)150 4127 y Fs(B.1)67 b(Implemen)l(tation)48 +b(eatures],)32 b(page)f(81.)150 4128 y Fs(B.1)67 b(Implemen)l(tation)48 b(Di\013erences)e(F)-11 b(rom)44 b(The)h(SVR4.2)g(Shell)150 -4287 y Fu(Since)33 b(Bash)h(is)f(a)g(completely)i(new)e(implemen)m +4288 y Fu(Since)33 b(Bash)h(is)f(a)g(completely)i(new)e(implemen)m (tation,)j(it)e(do)s(es)e(not)i(su\013er)e(from)h(man)m(y)g(of)h(the)f -(limi-)150 4396 y(tations)f(of)e(the)h(SVR4.2)g(shell.)41 -b(F)-8 b(or)31 b(instance:)225 4528 y Fq(\017)60 b Fu(Bash)32 +(limi-)150 4397 y(tations)f(of)e(the)h(SVR4.2)g(shell.)41 +b(F)-8 b(or)31 b(instance:)225 4529 y Fq(\017)60 b Fu(Bash)32 b(do)s(es)f(not)h(fork)f(a)h(subshell)e(when)h(redirecting)h(in)m(to)h (or)e(out)h(of)g(a)g(shell)f(con)m(trol)i(structure)330 -4638 y(suc)m(h)d(as)h(an)f Ft(if)g Fu(or)g Ft(while)f +4639 y(suc)m(h)d(as)h(an)f Ft(if)g Fu(or)g Ft(while)f Fu(statemen)m(t.)225 4770 y Fq(\017)60 b Fu(Bash)29 b(do)s(es)f(not)h (allo)m(w)h(un)m(balanced)f(quotes.)41 b(The)28 b(SVR4.2)h(shell)g -(will)g(silen)m(tly)i(insert)d(a)h(needed)330 4879 y(closing)g(quote)g +(will)g(silen)m(tly)i(insert)d(a)h(needed)330 4880 y(closing)g(quote)g (at)f Ft(EOF)f Fu(under)g(certain)h(circumstances.)41 b(This)27 b(can)h(b)s(e)g(the)g(cause)g(of)g(some)h(hard-)330 4989 y(to-\014nd)h(errors.)225 5121 y Fq(\017)60 b Fu(The)45 @@ -19581,160 +19621,160 @@ eop end %%Page: 163 169 TeXDict begin 163 168 bop 150 -116 a Fu(App)s(endix)29 b(D:)i(Indexes)2623 b(163)150 299 y Fp(App)t(endix)52 -b(D)81 b(Indexes)150 631 y Fs(D.1)68 b(Index)45 b(of)g(Shell)g(Builtin) -g(Commands)150 868 y(.)150 984 y Fe(.)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g +b(D)81 b(Indexes)150 639 y Fs(D.1)68 b(Index)45 b(of)g(Shell)g(Builtin) +g(Commands)150 876 y(.)150 992 y Fe(.)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)39 b Fb(41)150 1218 y Fs(:)150 1335 +(:)h(:)f(:)g(:)g(:)39 b Fb(41)150 1226 y Fs(:)150 1343 y Fe(:)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)39 -b Fb(41)150 1579 y Fs([)150 1695 y Fe([)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(41)150 1586 y Fs([)150 1703 y Fe([)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)39 b Fb(45)150 1938 y Fs(A)150 2055 +(:)h(:)f(:)g(:)g(:)39 b Fb(45)150 1945 y Fs(A)150 2061 y Fe(alias)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 b Fb(48)150 -2289 y Fs(B)150 2405 y Fe(bg)8 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h +2295 y Fs(B)150 2411 y Fe(bg)8 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)35 b Fb(100)150 2493 y Fe(bind)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:) +(:)35 b Fb(100)150 2499 y Fe(bind)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -49 b Fb(48)150 2580 y Fe(break)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f +49 b Fb(48)150 2586 y Fe(break)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 -b Fb(42)150 2668 y Fe(builtin)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(42)150 2674 y Fe(builtin)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 -b Fb(49)150 2902 y Fs(C)150 3019 y Fe(caller)17 b Fc(:)e(:)e(:)g(:)g(:) +b Fb(49)150 2907 y Fs(C)150 3024 y Fe(caller)17 b Fc(:)e(:)e(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -43 b Fb(50)150 3106 y Fe(cd)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g +43 b Fb(50)150 3111 y Fe(cd)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)37 b Fb(42)150 3194 y Fe(command)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g +(:)37 b Fb(42)150 3199 y Fe(command)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 -b Fb(50)150 3281 y Fe(compgen)12 b Fc(:)j(:)e(:)g(:)h(:)f(:)g(:)g(:)g +b Fb(50)150 3286 y Fe(compgen)12 b Fc(:)j(:)e(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)39 b -Fb(130)150 3368 y Fe(complete)10 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:) +Fb(130)150 3373 y Fe(complete)10 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(130)150 -3456 y Fe(compopt)12 b Fc(:)j(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +3461 y Fe(compopt)12 b Fc(:)j(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)39 b Fb(133)150 3543 +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)39 b Fb(133)150 3548 y Fe(continue)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fb(42)150 3778 y -Fs(D)150 3894 y Fe(declare)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fb(42)150 3782 y +Fs(D)150 3898 y Fe(declare)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b -Fb(50)150 3982 y Fe(dirs)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +Fb(50)150 3986 y Fe(dirs)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(92)150 4069 y Fe(disown)15 b Fc(:)f(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:) +b Fb(92)150 4073 y Fe(disown)15 b Fc(:)f(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)42 -b Fb(101)150 4303 y Fs(E)150 4420 y Fe(echo)23 b Fc(:)13 +b Fb(101)150 4307 y Fs(E)150 4423 y Fe(echo)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(52)150 4507 y Fe(enable)17 +g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(52)150 4511 y Fe(enable)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(52)150 4595 y Fe(eval)23 +(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(52)150 4598 y Fe(eval)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(42)150 4682 y +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(42)150 4686 y Fe(exec)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(43)150 -4770 y Fe(exit)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +4773 y Fe(exit)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(43)150 4857 y Fe(export)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:) +b Fb(43)150 4860 y Fe(export)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43 -b Fb(43)150 5110 y Fs(F)150 5227 y Fe(fc)8 b Fc(:)14 +b Fb(43)150 5113 y Fs(F)150 5229 y Fe(fc)8 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)35 b Fb(136)150 5314 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)35 b Fb(136)150 5317 y Fe(fg)8 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)35 -b Fb(100)2025 868 y Fs(G)2025 988 y Fe(getopts)15 b Fc(:)f(:)f(:)g(:)g +b Fb(100)2025 876 y Fs(G)2025 996 y Fe(getopts)15 b Fc(:)f(:)f(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)41 -b Fb(43)2025 1250 y Fs(H)2025 1370 y Fe(hash)23 b Fc(:)13 +b Fb(43)2025 1258 y Fs(H)2025 1378 y Fe(hash)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(44)2025 1459 y Fe(help)23 +h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(44)2025 1467 y Fe(help)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(53)2025 1549 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(53)2025 1556 y Fe(history)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)39 b Fb(137)2025 1811 -y Fs(J)2025 1931 y Fe(jobs)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)39 b Fb(137)2025 1818 +y Fs(J)2025 1938 y Fe(jobs)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)47 -b Fb(100)2025 2193 y Fs(K)2025 2313 y Fe(kill)21 b Fc(:)13 +b Fb(100)2025 2200 y Fs(K)2025 2320 y Fe(kill)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)47 b Fb(101)2025 2557 y Fs(L)2025 -2677 y Fe(let)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +g(:)h(:)f(:)g(:)g(:)47 b Fb(101)2025 2563 y Fs(L)2025 +2683 y Fe(let)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 -b Fb(53)2025 2766 y Fe(local)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h +b Fb(53)2025 2772 y Fe(local)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 -b Fb(53)2025 2856 y Fe(logout)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g +b Fb(53)2025 2861 y Fe(logout)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 -b Fb(54)2025 3118 y Fs(M)2025 3238 y Fe(mapfile)15 b +b Fb(54)2025 3123 y Fs(M)2025 3243 y Fe(mapfile)15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)41 b Fb(54)2025 3500 y Fs(P)2025 3620 +h(:)f(:)g(:)g(:)41 b Fb(54)2025 3505 y Fs(P)2025 3625 y Fe(popd)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(92)2025 -3710 y Fe(printf)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +3714 y Fe(printf)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(54)2025 -3799 y Fe(pushd)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +3803 y Fe(pushd)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b -Fb(92)2025 3888 y Fe(pwd)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +Fb(92)2025 3892 y Fe(pwd)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 -b Fb(44)2025 4150 y Fs(R)2025 4270 y Fe(read)23 b Fc(:)13 +b Fb(44)2025 4154 y Fs(R)2025 4274 y Fe(read)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(55)2025 4360 y Fe(readarray)9 +h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(55)2025 4363 y Fe(readarray)9 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)36 b Fb(56)2025 4449 y Fe(readonly)12 b Fc(:)j(:)e(:)g(:)g +f(:)g(:)g(:)36 b Fb(56)2025 4452 y Fe(readonly)12 b Fc(:)j(:)e(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)39 -b Fb(44)2025 4538 y Fe(return)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g +b Fb(44)2025 4541 y Fe(return)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 -b Fb(45)2025 4782 y Fs(S)2025 4902 y Fe(set)8 b Fc(:)13 +b Fb(45)2025 4785 y Fs(S)2025 4905 y Fe(set)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(59)2025 4991 +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(59)2025 4994 y Fe(shift)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(45)2025 -5080 y Fe(shopt)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +5083 y Fe(shopt)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b -Fb(63)2025 5169 y Fe(source)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g +Fb(63)2025 5172 y Fe(source)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 -b Fb(57)2025 5259 y Fe(suspend)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(57)2025 5261 y Fe(suspend)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)39 b Fb(101)p eop end @@ -19771,115 +19811,115 @@ g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(48)2025 910 y Fs(W)2025 1026 y Fe(wait)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)47 b Fb(101)150 1259 y Fs(D.2)68 +g(:)h(:)f(:)g(:)g(:)47 b Fb(101)150 1267 y Fs(D.2)68 b(Index)45 b(of)g(Shell)g(Reserv)l(ed)h(W)-11 b(ords)150 -1495 y(!)150 1611 y Fe(!)15 b Fc(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +1504 y(!)150 1620 y Fe(!)15 b Fc(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)42 b Fb(8)150 1855 y Fs([)150 1971 y Fe([[)10 +g(:)g(:)42 b Fb(8)150 1863 y Fs([)150 1979 y Fe([[)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(12)150 -2220 y Fs(])150 2336 y Fe(]])10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:) +2228 y Fs(])150 2345 y Fe(]])10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)37 b Fb(12)150 2579 y Fa(|)150 2695 y Fe({)13 b Fc(:)g(:)g(:)g(:)h +g(:)37 b Fb(12)150 2587 y Fa(|)150 2703 y Fe({)13 b Fc(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)39 b Fb(14)150 2782 y Fe(})13 +(:)g(:)g(:)h(:)f(:)g(:)g(:)39 b Fb(14)150 2791 y Fe(})13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)39 b Fb(14)150 -3024 y Fs(C)150 3140 y Fe(case)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g +3032 y Fs(C)150 3148 y Fe(case)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(11)150 3374 y Fs(D)150 3490 y Fe(do)10 b Fc(:)k(:)f(:)g(:)g(:)g(:) +b Fb(11)150 3382 y Fs(D)150 3498 y Fe(do)10 b Fc(:)k(:)f(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)37 b Fb(10)150 3577 y Fe(done)23 b Fc(:)13 +g(:)g(:)g(:)g(:)37 b Fb(10)150 3585 y Fe(done)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(10)150 3810 y Fs(E)150 -3926 y Fe(elif)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(10)150 3819 y Fs(E)150 +3935 y Fe(elif)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(10)150 4014 y Fe(else)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g +b Fb(10)150 4022 y Fe(else)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(10)2025 1495 y Fe(esac)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g +b Fb(10)2025 1504 y Fe(esac)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 -b Fb(11)2025 1737 y Fs(F)2025 1856 y Fe(fi)10 b Fc(:)k(:)f(:)g(:)g(:)g +b Fb(11)2025 1745 y Fs(F)2025 1864 y Fe(fi)10 b Fc(:)k(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)37 b Fb(10)2025 1945 y Fe(for)8 b +(:)g(:)g(:)g(:)g(:)37 b Fb(10)2025 1953 y Fe(for)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(10)2025 -2033 y Fe(function)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +2042 y Fe(function)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)39 b Fb(17)2025 2275 -y Fs(I)2025 2394 y Fe(if)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)39 b Fb(17)2025 2283 +y Fs(I)2025 2402 y Fe(if)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -37 b Fb(10)2025 2483 y Fe(in)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) +37 b Fb(10)2025 2491 y Fe(in)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)37 b Fb(11)2025 2724 y Fs(S)2025 2843 y Fe(select)17 +g(:)37 b Fb(11)2025 2732 y Fs(S)2025 2852 y Fe(select)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(12)2025 3085 y Fs(T)2025 -3204 y Fe(then)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(12)2025 3093 y Fs(T)2025 +3212 y Fe(then)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 -b Fb(10)2025 3293 y Fe(time)7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g +b Fb(10)2025 3301 y Fe(time)7 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)34 b Fb(8)2025 3534 y Fs(U)2025 3653 y Fe(until)21 +(:)34 b Fb(8)2025 3542 y Fs(U)2025 3662 y Fe(until)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(10)2025 3894 y Fs(W)2025 -4014 y Fe(while)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(10)2025 3903 y Fs(W)2025 +4022 y Fe(while)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b -Fb(10)150 4246 y Fs(D.3)68 b(P)l(arameter)47 b(and)d(V)-11 -b(ariable)46 b(Index)150 4483 y(!)150 4603 y Fe(!)13 +Fb(10)150 4263 y Fs(D.3)68 b(P)l(arameter)47 b(and)d(V)-11 +b(ariable)46 b(Index)150 4499 y(!)150 4618 y Fe(!)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)39 b Fb(20)150 -4846 y Fs(#)150 4967 y Fe(#)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +4856 y Fs(#)150 4974 y Fe(#)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)39 b Fb(20)150 5220 y Fs($)150 5340 y Fe($)13 +(:)g(:)39 b Fb(20)150 5222 y Fs($)150 5340 y Fe($)13 b Fc(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)39 b Fb(20)2025 -4483 y Fe($!)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +4499 y Fe($!)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 -b Fb(20)2025 4574 y Fe($#)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +b Fb(20)2025 4590 y Fe($#)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)37 b Fb(20)2025 4665 y Fe($$)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)37 b Fb(20)2025 4681 y Fe($$)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)37 b Fb(20)2025 4756 y Fe($*)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)37 b Fb(20)2025 4771 y Fe($*)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)37 b Fb(20)2025 4847 y Fe($-)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g +(:)g(:)g(:)37 b Fb(20)2025 4862 y Fe($-)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)37 b Fb(20)2025 4938 y Fe($?)10 b Fc(:)k(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)37 b Fb(20)2025 4953 y Fe($?)10 b Fc(:)k(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)37 b Fb(20)2025 5029 y Fe($@)10 b +(:)g(:)g(:)g(:)g(:)37 b Fb(20)2025 5043 y Fe($@)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(20)2025 -5120 y Fe($_)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) +5134 y Fe($_)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)37 -b Fb(21)2025 5211 y Fe($0)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +b Fb(21)2025 5225 y Fe($0)10 b Fc(:)k(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)37 b Fb(21)p eop end @@ -19929,7 +19969,7 @@ g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)45 b Fb(71)150 3399 y Fe(BASH_COMPAT)24 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -48 b Fb(71)150 3486 y Fe(BASH_ENV)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f +48 b Fb(72)150 3486 y Fe(BASH_ENV)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fb(72)150 3574 y Fe(BASH_EXECUTION_STRING)13 b Fc(:)18 @@ -19995,7 +20035,7 @@ b Fb(74)2025 649 y Fe(COMP_LINE)9 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(73)2025 737 y Fe(COMP_POINT)7 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(73)2025 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(74)2025 825 y Fe(COMP_TYPE)9 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(74)2025 912 @@ -20047,13 +20087,13 @@ b Fb(109)2025 2950 y Fe(enable-keypad)14 b Fc(:)i(:)d(:)g(:)g(:)h(:)f g(:)g(:)g(:)g(:)h(:)f(:)g(:)41 b Fb(109)2025 3038 y Fe(ENV)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(74)2025 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(75)2025 3125 y Fe(EUID)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 -b Fb(74)2025 3213 y Fe(EXECIGNORE)7 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g +b Fb(75)2025 3213 y Fe(EXECIGNORE)7 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(74)2025 +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(75)2025 3301 y Fe(expand-tilde)17 b Fc(:)e(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)44 b Fb(109)2025 3555 y Fs(F)2025 3672 @@ -20081,7 +20121,7 @@ g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)36 b Fb(75)2025 4814 y Fe(HISTCMD)15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)41 -b Fb(75)2025 4902 y Fe(HISTCONTROL)24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g +b Fb(76)2025 4902 y Fe(HISTCONTROL)24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)48 b Fb(76)2025 4989 y Fe(HISTFILE)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g @@ -20103,212 +20143,215 @@ TeXDict begin 166 171 bop 150 -116 a Fu(App)s(endix)29 b(D:)i(Indexes)2623 b(166)150 299 y Fe(HISTSIZE)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)38 b Fb(76)150 387 y Fe(HISTTIMEFORMAT)14 +g(:)h(:)f(:)38 b Fb(77)150 386 y Fe(HISTTIMEFORMAT)14 b Fc(:)i(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)40 -b Fb(76)150 476 y Fe(HOME)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +b Fb(77)150 473 y Fe(HOME)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(70)150 565 y Fe(horizontal-scroll-mode)8 b Fc(:)18 +b Fb(70)150 561 y Fe(horizontal-scroll-mode)8 b Fc(:)18 b(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)35 b Fb(109)150 653 y Fe(HOSTFILE)12 b Fc(:)j(:)e(:)g(:)g(:) +(:)g(:)g(:)35 b Fb(109)150 648 y Fe(HOSTFILE)12 b Fc(:)j(:)e(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 -b Fb(77)150 742 y Fe(HOSTNAME)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(77)150 735 y Fe(HOSTNAME)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b -Fb(77)150 830 y Fe(HOSTTYPE)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g +Fb(77)150 822 y Fe(HOSTTYPE)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fb(77)150 -1070 y Fs(I)150 1189 y Fe(IFS)8 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g +1056 y Fs(I)150 1172 y Fe(IFS)8 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)34 b Fb(70)150 1278 y Fe(IGNOREEOF)9 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g +(:)34 b Fb(70)150 1259 y Fe(IGNOREEOF)9 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 -b Fb(77)150 1366 y Fe(input-meta)24 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g +b Fb(77)150 1346 y Fe(input-meta)24 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(109)150 1455 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(109)150 1433 y Fe(INPUTRC)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fb(77)150 1543 +(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fb(77)150 1521 y Fe(isearch-terminators)16 b Fc(:)h(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)43 -b Fb(110)150 1783 y Fs(K)150 1902 y Fe(keymap)15 b Fc(:)f(:)g(:)f(:)g +b Fb(110)150 1754 y Fs(K)150 1870 y Fe(keymap)15 b Fc(:)f(:)g(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)42 -b Fb(110)150 2161 y Fs(L)150 2280 y Fe(LANG)23 b Fc(:)13 +b Fb(110)150 2122 y Fs(L)150 2238 y Fe(LANG)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(77)150 2368 y Fe(LC_ALL)17 +g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(77)150 2325 y Fe(LC_ALL)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(77)150 2457 y Fe(LC_COLLATE)7 +(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(77)150 2413 y Fe(LC_COLLATE)7 b Fc(:)15 b(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)33 b Fb(77)150 2545 y Fe(LC_CTYPE)12 b Fc(:)j(:)e(:)g(:)g(:)g +f(:)g(:)33 b Fb(77)150 2500 y Fe(LC_CTYPE)12 b Fc(:)j(:)e(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 -b Fb(77)150 2634 y Fe(LC_MESSAGES)13 b Fc(:)j(:)d(:)g(:)g(:)g(:)g(:)g +b Fb(77)150 2587 y Fe(LC_MESSAGES)13 b Fc(:)j(:)d(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)40 b Fb(7,)26 b(77)150 2722 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)40 b Fb(7,)26 b(78)150 2674 y Fe(LC_NUMERIC)7 b Fc(:)15 b(:)e(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b Fb(77)150 2811 y Fe(LC_TIME)15 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b Fb(78)150 2762 y Fe(LC_TIME)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)41 b Fb(77)150 2899 y Fe(LINENO)17 +(:)f(:)g(:)g(:)g(:)41 b Fb(78)150 2849 y Fe(LINENO)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(77)150 2988 y Fe(LINES)21 +(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(78)150 2936 y Fe(LINES)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 b Fb(78)150 3228 y Fs(M)150 -3347 y Fe(MACHTYPE)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +g(:)g(:)h(:)f(:)g(:)g(:)g(:)46 b Fb(78)150 3169 y Fs(M)150 +3285 y Fe(MACHTYPE)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fb(78)150 3435 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fb(78)150 3373 y Fe(MAIL)23 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)49 b Fb(70)150 -3524 y Fe(MAILCHECK)9 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +3460 y Fe(MAILCHECK)9 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(78)150 3612 +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(78)150 3547 y Fe(MAILPATH)12 b Fc(:)j(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fb(70)150 3701 y +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)38 b Fb(70)150 3634 y Fe(MAPFILE)15 b Fc(:)f(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fb(78)150 3790 y +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fb(78)150 3722 y Fe(mark-modified-lines)16 b Fc(:)h(:)d(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)43 -b Fb(110)150 3878 y Fe(mark-symlinked-directories)16 +b Fb(110)150 3809 y Fe(mark-symlinked-directories)16 b Fc(:)i(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -42 b Fb(110)150 3967 y Fe(match-hidden-files)23 b Fc(:)13 +42 b Fb(110)150 3896 y Fe(match-hidden-files)23 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(110)150 4055 y Fe +(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(110)150 3983 y Fe (menu-complete-display-prefix)11 b Fc(:)19 b(:)13 b(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(111)150 4144 y Fe(meta-flag)7 +(:)h(:)f(:)g(:)g(:)g(:)g(:)37 b Fb(111)150 4071 y Fe(meta-flag)7 b Fc(:)16 b(:)d(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)34 b Fb(109)150 4403 y Fs(O)150 4521 y Fe(OLDPWD)17 +g(:)g(:)34 b Fb(109)150 4323 y Fs(O)150 4439 y Fe(OLDPWD)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(78)150 4610 y Fe(OPTARG)17 +(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(78)150 4526 y Fe(OPTARG)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(70)150 4698 y Fe(OPTERR)17 +(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(70)150 4613 y Fe(OPTERR)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(78)150 4787 y Fe(OPTIND)17 +(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(78)150 4700 y Fe(OPTIND)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(70)150 4876 y Fe(OSTYPE)17 +(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(70)150 4788 y Fe(OSTYPE)17 b Fc(:)e(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(78)2025 299 y Fe(output-meta)22 -b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 -b Fb(111)2025 551 y Fs(P)2025 667 y Fe(page-completions)7 +(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(78)150 4875 y Fe(output-meta)22 +b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)46 +b Fb(111)2025 299 y Fs(P)2025 421 y Fe(page-completions)7 b Fc(:)16 b(:)d(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(111)2025 -754 y Fe(PATH)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +511 y Fe(PATH)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 -b Fb(70)2025 841 y Fe(PIPESTATUS)7 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g +b Fb(70)2025 601 y Fe(PIPESTATUS)7 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)33 b Fb(78)2025 -929 y Fe(POSIXLY_CORRECT)11 b Fc(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h +690 y Fe(POSIXLY_CORRECT)11 b Fc(:)17 b(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)38 b Fb(78)2025 1016 y Fe(PPID)23 b Fc(:)13 +g(:)g(:)g(:)38 b Fb(78)2025 780 y Fe(PPID)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(78)2025 1103 y Fe(PROMPT_COMMAND)14 +h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(78)2025 870 y Fe(PROMPT_COMMAND)14 b Fc(:)i(:)d(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 -b Fb(78)2025 1190 y Fe(PROMPT_DIRTRIM)14 b Fc(:)i(:)d(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(78)2025 1278 y Fe(PS1)8 +b Fb(78)2025 960 y Fe(PROMPT_DIRTRIM)14 b Fc(:)i(:)d(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(79)2025 1050 y Fe(PS0)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(70)2025 -1365 y Fe(PS2)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 b Fb(79)2025 +1140 y Fe(PS1)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 -b Fb(70)2025 1452 y Fe(PS3)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +b Fb(70)2025 1230 y Fe(PS2)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -34 b Fb(78)2025 1540 y Fe(PS4)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g +34 b Fb(70)2025 1320 y Fe(PS3)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)34 b Fb(79)2025 1627 y Fe(PWD)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g +(:)34 b Fb(79)2025 1410 y Fe(PS4)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)34 b Fb(79)2025 1860 y Fs(R)2025 1976 y Fe(RANDOM)17 +(:)g(:)34 b Fb(79)2025 1500 y Fe(PWD)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) +g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)34 b Fb(79)2025 1748 y Fs(R)2025 1869 y Fe(RANDOM)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(79)2025 2063 y Fe(READLINE_LINE)16 +(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(79)2025 1959 y Fe(READLINE_LINE)16 b Fc(:)g(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 -b Fb(79)2025 2151 y Fe(READLINE_POINT)14 b Fc(:)i(:)d(:)g(:)g(:)g(:)h +b Fb(79)2025 2049 y Fe(READLINE_POINT)14 b Fc(:)i(:)d(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(79)2025 2238 y Fe(REPLY)21 +g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(79)2025 2139 y Fe(REPLY)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(79)2025 2325 y Fe +g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(79)2025 2229 y Fe (revert-all-at-newline)11 b Fc(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:) h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 -b Fb(111)2025 2558 y Fs(S)2025 2674 y Fe(SECONDS)15 b +b Fb(111)2025 2477 y Fs(S)2025 2598 y Fe(SECONDS)15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)41 b Fb(79)2025 2762 y Fe(SHELL)21 b +h(:)f(:)g(:)g(:)41 b Fb(79)2025 2688 y Fe(SHELL)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(79)2025 2849 y Fe(SHELLOPTS)9 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)46 b Fb(79)2025 2778 y Fe(SHELLOPTS)9 b Fc(:)15 b(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)36 b Fb(79)2025 2936 y Fe(SHLVL)21 b Fc(:)13 +f(:)g(:)g(:)36 b Fb(79)2025 2868 y Fe(SHLVL)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)46 b Fb(79)2025 3024 y Fe(show-all-if-ambiguous)11 +g(:)g(:)h(:)f(:)g(:)46 b Fb(79)2025 2958 y Fe(show-all-if-ambiguous)11 b Fc(:)18 b(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fb(111)2025 3111 y Fe +(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fb(111)2025 3048 y Fe (show-all-if-unmodified)8 b Fc(:)18 b(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)35 b -Fb(111)2025 3198 y Fe(show-mode-in-prompt)16 b Fc(:)h(:)c(:)g(:)h(:)f +Fb(111)2025 3138 y Fe(show-mode-in-prompt)16 b Fc(:)h(:)c(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)43 b Fb(111)2025 3285 y Fe(skip-completed-text)16 +g(:)43 b Fb(111)2025 3228 y Fe(skip-completed-text)16 b Fc(:)h(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b Fb(111)2025 3537 y Fs(T)2025 -3653 y Fe(TEXTDOMAIN)9 b Fc(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +g(:)g(:)h(:)f(:)g(:)g(:)g(:)43 b Fb(111)2025 3494 y Fs(T)2025 +3616 y Fe(TEXTDOMAIN)9 b Fc(:)15 b(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(7)2025 3741 +g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)36 b Fb(7)2025 3706 y Fe(TEXTDOMAINDIR)21 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)46 b Fb(7)2025 3828 y Fe(TIMEFORMAT)7 +g(:)g(:)g(:)g(:)g(:)46 b Fb(7)2025 3796 y Fe(TIMEFORMAT)7 b Fc(:)15 b(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)33 b Fb(79)2025 3915 y Fe(TMOUT)21 b Fc(:)13 +g(:)h(:)33 b Fb(80)2025 3886 y Fe(TMOUT)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)46 b Fb(80)2025 4002 y Fe(TMPDIR)17 +g(:)g(:)h(:)f(:)g(:)46 b Fb(80)2025 3976 y Fe(TMPDIR)17 b Fc(:)d(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(80)2025 4236 y Fs(U)2025 -4352 y Fe(UID)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(80)2025 4223 y Fs(U)2025 +4345 y Fe(UID)8 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)34 -b Fb(80)2025 4585 y Fs(V)2025 4701 y Fe(vi-cmd-mode-string)22 +b Fb(80)2025 4593 y Fs(V)2025 4714 y Fe(vi-cmd-mode-string)22 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)45 b Fb(112)2025 4788 +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)45 b Fb(112)2025 4804 y Fe(vi-ins-mode-string)22 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)45 -b Fb(112)2025 4876 y Fe(visible-stats)14 b Fc(:)i(:)d(:)g(:)g(:)h(:)f +b Fb(112)2025 4894 y Fe(visible-stats)14 b Fc(:)i(:)d(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)41 b Fb(112)150 5108 y Fs(D.4)68 -b(F)-11 b(unction)44 b(Index)150 5345 y(A)150 5461 y +g(:)g(:)g(:)g(:)h(:)f(:)g(:)41 b Fb(112)150 5135 y Fs(D.4)68 +b(F)-11 b(unction)44 b(Index)150 5372 y(A)150 5488 y Fe(abort)27 b(\(C-g\))9 b Fc(:)14 b(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(125)2025 5345 y Fe(accept-line)28 +h(:)f(:)g(:)g(:)g(:)g(:)36 b Fb(125)2025 5372 y Fe(accept-line)28 b(\(Newline)f(or)f(Return\))f Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)50 b Fb(119)p eop end %%Page: 167 173 @@ -20568,309 +20611,308 @@ b(\(M-C-y\))22 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)47 b Fb(120)2025 2617 y Fe(yank-pop)27 b(\(M-y\))20 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)g(:)h(:)45 b Fb(122)150 2850 y Fs(D.5)68 -b(Concept)45 b(Index)150 3110 y(A)150 3226 y Fb(alias)27 +g(:)g(:)g(:)g(:)h(:)45 b Fb(122)150 2858 y Fs(D.5)68 +b(Concept)45 b(Index)150 3118 y(A)150 3239 y Fb(alias)27 b(expansion)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)44 b Fb(89)150 3313 y(arithmetic)26 b(ev)l(aluation)16 +h(:)44 b Fb(89)150 3329 y(arithmetic)26 b(ev)l(aluation)16 b Fc(:)e(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)43 b Fb(88)150 3401 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)43 b Fb(88)150 3419 y(arithmetic)26 b(expansion)d Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 -b Fb(29)150 3488 y(arithmetic,)27 b(shell)17 b Fc(:)d(:)f(:)g(:)g(:)g +b Fb(29)150 3509 y(arithmetic,)27 b(shell)17 b Fc(:)d(:)f(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(88)150 3575 y(arra)n(ys)15 +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)43 b Fb(88)150 3599 y(arra)n(ys)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)41 b Fb(90)150 3826 y Fs(B)150 -3942 y Fb(bac)n(kground)9 b Fc(:)j(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)g(:)g(:)g(:)g(:)h(:)f(:)41 b Fb(90)150 3862 y Fs(B)150 +3984 y Fb(bac)n(kground)9 b Fc(:)j(:)i(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(99)150 4029 y(Bash)26 +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(99)150 4073 y(Bash)26 b(con\014guration)d Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)49 -b Fb(141)150 4117 y(Bash)26 b(installation)c Fc(:)13 +b Fb(141)150 4163 y(Bash)26 b(installation)c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)46 b Fb(141)150 -4204 y(Bourne)26 b(shell)13 b Fc(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +4253 y(Bourne)26 b(shell)13 b Fc(:)h(:)f(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(5)150 4291 +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 b Fb(5)150 4343 y(brace)26 b(expansion)20 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)47 b Fb(21)150 4379 y(builtin)9 b Fc(:)k(:)g(:)g(:)g(:) +g(:)g(:)g(:)g(:)47 b Fb(21)150 4433 y(builtin)9 b Fc(:)k(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)36 b Fb(3)150 4612 y Fs(C)150 4729 y Fb(command)26 +g(:)g(:)36 b Fb(3)150 4680 y Fs(C)150 4801 y Fb(command)26 b(editing)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)40 -b Fb(104)150 4816 y(command)26 b(execution)d Fc(:)13 +b Fb(104)150 4891 y(command)26 b(execution)d Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)49 b Fb(37)150 4903 +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)49 b Fb(37)150 4981 y(command)26 b(expansion)16 b Fc(:)d(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)42 -b Fb(36)150 4991 y(command)26 b(history)12 b Fc(:)h(:)g(:)g(:)g(:)g(:)h +b Fb(36)150 5070 y(command)26 b(history)12 b Fc(:)h(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)39 b Fb(136)150 5078 y(command)26 +g(:)g(:)g(:)g(:)g(:)39 b Fb(136)150 5160 y(command)26 b(searc)n(h)10 b Fc(:)j(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -36 b Fb(37)150 5165 y(command)26 b(substitution)15 b +36 b Fb(37)150 5250 y(command)26 b(substitution)15 b Fc(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)41 b Fb(29)150 5253 y(command)26 +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)41 b Fb(29)150 5340 y(command)26 b(timing)7 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)34 b Fb(8)150 5340 y(commands,)26 b(comp)r(ound)18 -b Fc(:)c(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(9)2025 3110 -y(commands,)26 b(conditional)d Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)48 -b Fb(10)2025 3197 y(commands,)26 b(grouping)9 b Fc(:)14 +g(:)34 b Fb(8)2025 3118 y(commands,)26 b(comp)r(ound)18 +b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)45 b Fb(9)2025 +3205 y(commands,)26 b(conditional)d Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)48 +b Fb(10)2025 3293 y(commands,)26 b(grouping)9 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(14)2025 3285 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)35 b Fb(14)2025 3380 y(commands,)26 b(lists)6 b Fc(:)15 b(:)e(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(9)2025 3373 y(commands,)26 +(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(9)2025 3468 y(commands,)26 b(lo)r(oping)16 b Fc(:)f(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)43 -b Fb(10)2025 3461 y(commands,)26 b(pip)r(elines)12 b +b Fb(10)2025 3555 y(commands,)26 b(pip)r(elines)12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)39 b Fb(8)2025 -3548 y(commands,)26 b(shell)15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g +3643 y(commands,)26 b(shell)15 b Fc(:)f(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)42 b Fb(8)2025 3636 y(commands,)26 +g(:)h(:)f(:)g(:)g(:)42 b Fb(8)2025 3730 y(commands,)26 b(simple)17 b Fc(:)d(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)44 -b Fb(8)2025 3724 y(commen)n(ts,)26 b(shell)7 b Fc(:)14 +b Fb(8)2025 3818 y(commen)n(ts,)26 b(shell)7 b Fc(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)35 -b Fb(7)2025 3812 y(completion)26 b(builtins)15 b Fc(:)f(:)f(:)g(:)g(:)g +b Fb(7)2025 3905 y(completion)26 b(builtins)15 b Fc(:)f(:)f(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)42 b Fb(130)2025 3899 y(con\014guration)15 +h(:)f(:)g(:)g(:)42 b Fb(130)2025 3993 y(con\014guration)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)42 -b Fb(141)2025 3987 y(con)n(trol)26 b(op)r(erator)20 b +b Fb(141)2025 4080 y(con)n(trol)26 b(op)r(erator)20 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)46 -b Fb(3)2025 4075 y(copro)r(cess)12 b Fc(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g +b Fb(3)2025 4168 y(copro)r(cess)12 b Fc(:)i(:)f(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)38 b -Fb(15)2025 4327 y Fs(D)2025 4444 y Fb(directory)26 b(stac)n(k)c +Fb(15)2025 4419 y Fs(D)2025 4535 y Fb(directory)26 b(stac)n(k)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49 -b Fb(91)2025 4697 y Fs(E)2025 4814 y Fb(editing)26 b(command)g(lines)11 +b Fb(91)2025 4786 y Fs(E)2025 4903 y Fb(editing)26 b(command)g(lines)11 b Fc(:)i(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fb(104)2025 4901 y(en)n(vironmen)n(t) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)38 b Fb(104)2025 4990 y(en)n(vironmen)n(t) 12 b Fc(:)g(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)39 b Fb(38)2025 4989 y(ev)l(aluation,)26 b(arithmetic)e +g(:)39 b Fb(38)2025 5078 y(ev)l(aluation,)26 b(arithmetic)e Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)49 b Fb(88)2025 5077 +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)49 b Fb(88)2025 5165 y(ev)n(en)n(t)24 b(designators)14 b Fc(:)h(:)e(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)g(:)41 b Fb(139)2025 5165 y(execution)25 b(en)n(vironmen)n(t)11 +g(:)g(:)g(:)41 b Fb(139)2025 5253 y(execution)25 b(en)n(vironmen)n(t)11 b Fc(:)i(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37 b Fb(37)2025 5252 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)37 b Fb(37)2025 5340 y(exit)25 b(status)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)g(:)g(:)45 b Fb(3,)26 b(39)2025 5340 y(expansion)20 -b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)47 b Fb(21)p eop end +h(:)f(:)g(:)g(:)g(:)45 b Fb(3,)26 b(39)p eop end %%Page: 169 175 TeXDict begin 169 174 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(169)150 299 y Fb(expansion,)26 -b(arithmetic)12 b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)38 -b Fb(29)150 387 y(expansion,)26 b(brace)10 b Fc(:)j(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)h(:)f(:)g(:)g(:)g(:)36 b Fb(21)150 475 y(expansion,)26 -b(\014lename)12 b Fc(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)38 -b Fb(30)150 563 y(expansion,)26 b(parameter)14 b Fc(:)g(:)f(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)g(:)40 b Fb(23)150 650 y(expansion,)26 b(pathname)18 -b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45 b Fb(30)150 -738 y(expansion,)26 b(tilde)8 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)34 b Fb(22)150 826 y(expressions,)27 -b(arithmetic)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 -b Fb(88)150 914 y(expressions,)27 b(conditional)11 b -Fc(:)j(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(86)150 1167 y Fs(F)150 -1285 y Fb(\014eld)15 b Fc(:)e(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)42 -b Fb(3)150 1373 y(\014lename)15 b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)42 -b Fb(3)150 1461 y(\014lename)26 b(expansion)d Fc(:)13 -b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 b Fb(30)150 -1548 y(foreground)24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49 b Fb(99)150 1636 y(functions,)26 -b(shell)21 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)47 b Fb(17)150 1890 y Fs(H)150 2007 y Fb(history)26 -b(builtins)14 b Fc(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -40 b Fb(136)150 2095 y(history)26 b(ev)n(en)n(ts)18 b -Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)46 -b Fb(139)150 2183 y(history)26 b(expansion)8 b Fc(:)13 -b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 b Fb(138)150 -2271 y(history)26 b(list)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g -(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(136)150 2359 -y(History)-6 b(,)26 b(ho)n(w)g(to)f(use)13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)h(:)39 b Fb(135)150 2612 y Fs(I)150 2729 y Fb(iden)n(ti\014er) -22 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +b(D:)i(Indexes)2623 b(169)150 299 y Fb(expansion)21 b +Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)47 b Fb(21)150 389 y(expansion,)26 b(arithmetic)12 +b Fc(:)i(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)38 b Fb(29)150 479 +y(expansion,)26 b(brace)10 b Fc(:)j(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)g(:)50 b Fb(3)150 2817 y(initialization)28 -b(\014le,)e(readline)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 b Fb(106)150 -2905 y(installation)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)40 b Fb(141)150 2993 y(in)n(teraction,)27 -b(readline)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)45 -b Fb(103)150 3081 y(in)n(teractiv)n(e)26 b(shell)14 b -Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fb(83,)26 -b(84)150 3169 y(in)n(ternationalization)14 b Fc(:)h(:)f(:)f(:)g(:)g(:)g +g(:)g(:)g(:)36 b Fb(21)150 569 y(expansion,)26 b(\014lename)12 +b Fc(:)h(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)38 b Fb(30)150 +660 y(expansion,)26 b(parameter)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +40 b Fb(23)150 750 y(expansion,)26 b(pathname)18 b Fc(:)13 +b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)45 b Fb(30)150 840 y(expansion,)26 +b(tilde)8 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)34 b Fb(22)150 930 y(expressions,)27 b(arithmetic)7 +b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)33 b Fb(88)150 1020 +y(expressions,)27 b(conditional)11 b Fc(:)j(:)g(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 +b Fb(86)150 1285 y Fs(F)150 1407 y Fb(\014eld)15 b Fc(:)e(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)42 b Fb(3)150 1497 y(\014lename)15 +b Fc(:)f(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)42 b Fb(3)150 1588 y(\014lename)26 +b(expansion)d Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)49 +b Fb(30)150 1678 y(foreground)24 b Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)g(:) +h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49 b Fb(99)150 +1768 y(functions,)26 b(shell)21 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g +(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)g(:)47 b Fb(17)150 2033 y Fs(H)150 +2155 y Fb(history)26 b(builtins)14 b Fc(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)g(:)h(:)40 b Fb(136)150 2245 y(history)26 +b(ev)n(en)n(ts)18 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h +(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)46 b Fb(139)150 2335 y(history)26 b(expansion)8 +b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)35 +b Fb(138)150 2425 y(history)26 b(list)21 b Fc(:)13 b(:)g(:)g(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 b Fb(136)150 +2516 y(History)-6 b(,)26 b(ho)n(w)g(to)f(use)13 b Fc(:)g(:)g(:)h(:)f(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)g(:)h(:)39 b Fb(135)150 2781 y Fs(I)150 2903 +y Fb(iden)n(ti\014er)22 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f +(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)50 b Fb(3)150 +2993 y(initialization)28 b(\014le,)e(readline)11 b Fc(:)j(:)f(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)38 +b Fb(106)150 3083 y(installation)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g(:) +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)40 b Fb(141)150 +3173 y(in)n(teraction,)27 b(readline)18 b Fc(:)c(:)f(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g +(:)g(:)45 b Fb(103)150 3263 y(in)n(teractiv)n(e)26 b(shell)14 +b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)41 b Fb(83,)26 +b(84)150 3354 y(in)n(ternationalization)14 b Fc(:)h(:)f(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)41 b Fb(7)150 3405 y Fs(J)150 3523 +g(:)h(:)f(:)g(:)g(:)41 b Fb(7)150 3602 y Fs(J)150 3724 y Fb(job)16 b Fc(:)e(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)43 -b Fb(3)150 3610 y(job)26 b(con)n(trol)13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f +b Fb(3)150 3814 y(job)26 b(con)n(trol)13 b Fc(:)h(:)f(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)40 b Fb(3,)26 -b(99)150 3864 y Fs(K)150 3981 y Fb(kill)g(ring)19 b Fc(:)13 +b(99)150 4079 y Fs(K)150 4201 y Fb(kill)g(ring)19 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)45 b Fb(105)150 4069 y(killing)27 b(text)17 b +f(:)g(:)45 b Fb(105)150 4291 y(killing)27 b(text)17 b Fc(:)c(:)g(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -44 b Fb(105)150 4322 y Fs(L)150 4440 y Fb(lo)r(calization)14 +44 b Fb(105)150 4556 y Fs(L)150 4679 y Fb(lo)r(calization)14 b Fc(:)i(:)d(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)41 b Fb(7)150 4528 y(login)27 b(shell)17 b +(:)f(:)g(:)41 b Fb(7)150 4769 y(login)27 b(shell)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)44 b Fb(83)150 4781 y Fs(M)150 4898 y Fb(matc)n(hing,)26 +g(:)g(:)44 b Fb(83)150 5034 y Fs(M)150 5156 y Fb(matc)n(hing,)26 b(pattern)20 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)47 -b Fb(31)150 4986 y(metac)n(haracter)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)g +b Fb(31)150 5246 y(metac)n(haracter)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(3)150 5223 -y Fs(N)150 5340 y Fb(name)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h -(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)40 -b Fb(3)2025 299 y(nativ)n(e)25 b(languages)13 b Fc(:)i(:)e(:)g(:)g(:)g +f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)45 b Fb(3)2025 299 +y Fs(N)2025 415 y Fb(name)13 b Fc(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) +f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)40 +b Fb(3)2025 503 y(nativ)n(e)25 b(languages)13 b Fc(:)i(:)e(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) -g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)40 b Fb(7)2025 388 +g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)40 b Fb(7)2025 590 y(notation,)26 b(readline)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) -g(:)g(:)34 b Fb(104)2025 649 y Fs(O)2025 770 y Fb(op)r(erator,)27 +g(:)g(:)34 b Fb(104)2025 841 y Fs(O)2025 958 y Fb(op)r(erator,)27 b(shell)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)43 b Fb(3)2025 1031 y Fs(P)2025 1152 y Fb(parameter)26 +f(:)g(:)43 b Fb(3)2025 1209 y Fs(P)2025 1326 y Fb(parameter)26 b(expansion)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)34 -b Fb(23)2025 1241 y(parameters)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(23)2025 1413 y(parameters)17 b Fc(:)d(:)f(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)44 b Fb(18)2025 -1331 y(parameters,)27 b(p)r(ositional)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g +1500 y(parameters,)27 b(p)r(ositional)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)44 b Fb(20)2025 1420 y(parameters,)27 b(sp)r(ecial)18 +h(:)44 b Fb(20)2025 1588 y(parameters,)27 b(sp)r(ecial)18 b Fc(:)c(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)44 b Fb(20)2025 -1509 y(pathname)25 b(expansion)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g +1675 y(pathname)25 b(expansion)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:) -h(:)38 b Fb(30)2025 1599 y(pattern)25 b(matc)n(hing)14 +h(:)38 b Fb(30)2025 1763 y(pattern)25 b(matc)n(hing)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)41 -b Fb(31)2025 1688 y(pip)r(eline)23 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g +b Fb(31)2025 1850 y(pip)r(eline)23 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)50 -b Fb(8)2025 1778 y(POSIX)17 b Fc(:)12 b(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g +b Fb(8)2025 1938 y(POSIX)17 b Fc(:)12 b(:)h(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)44 -b Fb(3)2025 1867 y(POSIX)24 b(Mo)r(de)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g +b Fb(3)2025 2025 y(POSIX)24 b(Mo)r(de)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:) f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)37 b Fb(95)2025 -1956 y(pro)r(cess)26 b(group)9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g +2113 y(pro)r(cess)26 b(group)9 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(3)2025 2046 +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(3)2025 2200 y(pro)r(cess)26 b(group)g(ID)21 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:) -f(:)g(:)g(:)g(:)g(:)49 b Fb(3)2025 2135 y(pro)r(cess)26 +f(:)g(:)g(:)g(:)g(:)49 b Fb(3)2025 2288 y(pro)r(cess)26 b(substitution)c Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g (:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)48 -b Fb(30)2025 2225 y(programmable)27 b(completion)20 b +b Fb(30)2025 2375 y(programmable)27 b(completion)20 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)46 b Fb(128)2025 2314 y(prompting)11 b +(:)g(:)h(:)f(:)46 b Fb(128)2025 2463 y(prompting)11 b Fc(:)i(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)g(:)38 b Fb(93)2025 2575 y Fs(Q)2025 2696 y Fb(quoting)10 +g(:)g(:)38 b Fb(93)2025 2714 y Fs(Q)2025 2830 y Fb(quoting)10 b Fc(:)j(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)g(:)g(:)h(:)f(:)g(:)37 b Fb(6)2025 2785 y(quoting,)26 +(:)g(:)g(:)g(:)h(:)f(:)g(:)37 b Fb(6)2025 2918 y(quoting,)26 b(ANSI)13 b Fc(:)e(:)j(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g (:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -h(:)f(:)40 b Fb(6)2025 3046 y Fs(R)2025 3167 y Fb(Readline,)26 +h(:)f(:)40 b Fb(6)2025 3169 y Fs(R)2025 3285 y Fb(Readline,)26 b(ho)n(w)g(to)g(use)c Fc(:)13 b(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)49 -b Fb(102)2025 3256 y(redirection)7 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g +b Fb(102)2025 3373 y(redirection)7 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)33 b -Fb(32)2025 3346 y(reserv)n(ed)25 b(w)n(ord)7 b Fc(:)14 +Fb(32)2025 3460 y(reserv)n(ed)25 b(w)n(ord)7 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)34 -b Fb(3)2025 3435 y(restricted)26 b(shell)8 b Fc(:)14 +b Fb(3)2025 3548 y(restricted)26 b(shell)8 b Fc(:)14 b(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g (:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)35 -b Fb(94)2025 3525 y(return)25 b(status)c Fc(:)13 b(:)h(:)f(:)g(:)g(:)g +b Fb(94)2025 3635 y(return)25 b(status)c Fc(:)13 b(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)48 b Fb(4)2025 -3769 y Fs(S)2025 3890 y Fb(shell)26 b(arithmetic)11 b +3870 y Fs(S)2025 3986 y Fb(shell)26 b(arithmetic)11 b Fc(:)j(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)37 -b Fb(88)2025 3979 y(shell)26 b(function)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g +b Fb(88)2025 4074 y(shell)26 b(function)12 b Fc(:)h(:)g(:)h(:)f(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)38 b Fb(17)2025 -4068 y(shell)26 b(script)c Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) +4161 y(shell)26 b(script)c Fc(:)13 b(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g -(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fb(40)2025 4158 +(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fb(40)2025 4249 y(shell)26 b(v)l(ariable)18 b Fc(:)c(:)f(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:) g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g -(:)h(:)f(:)g(:)g(:)g(:)g(:)45 b Fb(18)2025 4247 y(shell,)26 +(:)h(:)f(:)g(:)g(:)g(:)g(:)45 b Fb(18)2025 4336 y(shell,)26 b(in)n(teractiv)n(e)14 b Fc(:)g(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) -g(:)h(:)40 b Fb(84)2025 4337 y(signal)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h +g(:)h(:)40 b Fb(84)2025 4423 y(signal)7 b Fc(:)14 b(:)f(:)g(:)g(:)g(:)h (:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g -(:)g(:)34 b Fb(4)2025 4426 y(signal)27 b(handling)17 +(:)g(:)34 b Fb(4)2025 4511 y(signal)27 b(handling)17 b Fc(:)c(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)44 -b Fb(39)2025 4515 y(sp)r(ecial)27 b(builtin)10 b Fc(:)j(:)g(:)g(:)g(:)g +b Fb(39)2025 4598 y(sp)r(ecial)27 b(builtin)10 b Fc(:)j(:)g(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) -g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(4,)26 b(68)2025 -4605 y(startup)f(\014les)d Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) +g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)37 b Fb(4,)26 b(69)2025 +4686 y(startup)f(\014les)d Fc(:)13 b(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fb(83)2025 4694 y(susp)r(ending)25 +(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)48 b Fb(83)2025 4773 y(susp)r(ending)25 b(jobs)6 b Fc(:)14 b(:)g(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g -(:)33 b Fb(99)2025 4955 y Fs(T)2025 5076 y Fb(tilde)26 +(:)33 b Fb(99)2025 5024 y Fs(T)2025 5141 y Fb(tilde)26 b(expansion)18 b Fc(:)13 b(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f (:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:) -g(:)g(:)45 b Fb(22)2025 5165 y(tok)n(en)11 b Fc(:)h(:)i(:)f(:)g(:)g(:)g +g(:)g(:)45 b Fb(22)2025 5228 y(tok)n(en)11 b Fc(:)h(:)i(:)f(:)g(:)g(:)g (:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:) g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f -(:)g(:)38 b Fb(4)2025 5255 y(translation,)27 b(nativ)n(e)e(languages)13 +(:)g(:)38 b Fb(4)2025 5316 y(translation,)27 b(nativ)n(e)e(languages)13 b Fc(:)i(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:) g(:)g(:)g(:)40 b Fb(7)p eop end %%Page: 170 176 diff --git a/doc/bashref.texi b/doc/bashref.texi index 40b2f051..eb311e56 100644 --- a/doc/bashref.texi +++ b/doc/bashref.texi @@ -1,4 +1,4 @@ -input texinfo.tex @c -*- texinfo -*- +\input texinfo.tex @c -*- texinfo -*- @c %**start of header @setfilename bashref.info @settitle Bash Reference Manual @@ -454,7 +454,6 @@ When the shell is in @sc{posix} mode (@pxref{Bash POSIX Mode}), the @samp{!} has no special meaning within double quotes, even when history expansion is enabled. -The characters The characters @samp{$} and @samp{`} retain their special meaning within double quotes (@pxref{Shell Expansions}). The backslash retains its special meaning only when followed by one of diff --git a/doc/bashref.toc b/doc/bashref.toc index 96c21bab..79e8be43 100644 --- a/doc/bashref.toc +++ b/doc/bashref.toc @@ -62,7 +62,7 @@ @numsecentry{Modifying Shell Behavior}{4.3}{Modifying Shell Behavior}{59} @numsubsecentry{The Set Builtin}{4.3.1}{The Set Builtin}{59} @numsubsecentry{The Shopt Builtin}{4.3.2}{The Shopt Builtin}{63} -@numsecentry{Special Builtins}{4.4}{Special Builtins}{68} +@numsecentry{Special Builtins}{4.4}{Special Builtins}{69} @numchapentry{Shell Variables}{5}{Shell Variables}{70} @numsecentry{Bourne Shell Variables}{5.1}{Bourne Shell Variables}{70} @numsecentry{Bash Variables}{5.2}{Bash Variables}{70} diff --git a/doc/bashref.vr b/doc/bashref.vr index 563b8a91..0f7426d5 100644 --- a/doc/bashref.vr +++ b/doc/bashref.vr @@ -37,7 +37,7 @@ \entry{BASH_ARGV}{71}{\code {BASH_ARGV}} \entry{BASH_CMDS}{71}{\code {BASH_CMDS}} \entry{BASH_COMMAND}{71}{\code {BASH_COMMAND}} -\entry{BASH_COMPAT}{71}{\code {BASH_COMPAT}} +\entry{BASH_COMPAT}{72}{\code {BASH_COMPAT}} \entry{BASH_ENV}{72}{\code {BASH_ENV}} \entry{BASH_EXECUTION_STRING}{72}{\code {BASH_EXECUTION_STRING}} \entry{BASH_LINENO}{72}{\code {BASH_LINENO}} @@ -52,7 +52,7 @@ \entry{COLUMNS}{73}{\code {COLUMNS}} \entry{COMP_CWORD}{73}{\code {COMP_CWORD}} \entry{COMP_LINE}{73}{\code {COMP_LINE}} -\entry{COMP_POINT}{73}{\code {COMP_POINT}} +\entry{COMP_POINT}{74}{\code {COMP_POINT}} \entry{COMP_TYPE}{74}{\code {COMP_TYPE}} \entry{COMP_KEY}{74}{\code {COMP_KEY}} \entry{COMP_WORDBREAKS}{74}{\code {COMP_WORDBREAKS}} @@ -61,9 +61,9 @@ \entry{COPROC}{74}{\code {COPROC}} \entry{DIRSTACK}{74}{\code {DIRSTACK}} \entry{EMACS}{74}{\code {EMACS}} -\entry{ENV}{74}{\code {ENV}} -\entry{EUID}{74}{\code {EUID}} -\entry{EXECIGNORE}{74}{\code {EXECIGNORE}} +\entry{ENV}{75}{\code {ENV}} +\entry{EUID}{75}{\code {EUID}} +\entry{EXECIGNORE}{75}{\code {EXECIGNORE}} \entry{FCEDIT}{75}{\code {FCEDIT}} \entry{FIGNORE}{75}{\code {FIGNORE}} \entry{FUNCNAME}{75}{\code {FUNCNAME}} @@ -71,13 +71,13 @@ \entry{GLOBIGNORE}{75}{\code {GLOBIGNORE}} \entry{GROUPS}{75}{\code {GROUPS}} \entry{histchars}{75}{\code {histchars}} -\entry{HISTCMD}{75}{\code {HISTCMD}} +\entry{HISTCMD}{76}{\code {HISTCMD}} \entry{HISTCONTROL}{76}{\code {HISTCONTROL}} \entry{HISTFILE}{76}{\code {HISTFILE}} \entry{HISTFILESIZE}{76}{\code {HISTFILESIZE}} \entry{HISTIGNORE}{76}{\code {HISTIGNORE}} -\entry{HISTSIZE}{76}{\code {HISTSIZE}} -\entry{HISTTIMEFORMAT}{76}{\code {HISTTIMEFORMAT}} +\entry{HISTSIZE}{77}{\code {HISTSIZE}} +\entry{HISTTIMEFORMAT}{77}{\code {HISTTIMEFORMAT}} \entry{HOSTFILE}{77}{\code {HOSTFILE}} \entry{HOSTNAME}{77}{\code {HOSTNAME}} \entry{HOSTTYPE}{77}{\code {HOSTTYPE}} @@ -87,10 +87,10 @@ \entry{LC_ALL}{77}{\code {LC_ALL}} \entry{LC_COLLATE}{77}{\code {LC_COLLATE}} \entry{LC_CTYPE}{77}{\code {LC_CTYPE}} -\entry{LC_MESSAGES}{77}{\code {LC_MESSAGES}} -\entry{LC_NUMERIC}{77}{\code {LC_NUMERIC}} -\entry{LC_TIME}{77}{\code {LC_TIME}} -\entry{LINENO}{77}{\code {LINENO}} +\entry{LC_MESSAGES}{78}{\code {LC_MESSAGES}} +\entry{LC_NUMERIC}{78}{\code {LC_NUMERIC}} +\entry{LC_TIME}{78}{\code {LC_TIME}} +\entry{LINENO}{78}{\code {LINENO}} \entry{LINES}{78}{\code {LINES}} \entry{MACHTYPE}{78}{\code {MACHTYPE}} \entry{MAILCHECK}{78}{\code {MAILCHECK}} @@ -102,8 +102,9 @@ \entry{POSIXLY_CORRECT}{78}{\code {POSIXLY_CORRECT}} \entry{PPID}{78}{\code {PPID}} \entry{PROMPT_COMMAND}{78}{\code {PROMPT_COMMAND}} -\entry{PROMPT_DIRTRIM}{78}{\code {PROMPT_DIRTRIM}} -\entry{PS3}{78}{\code {PS3}} +\entry{PROMPT_DIRTRIM}{79}{\code {PROMPT_DIRTRIM}} +\entry{PS0}{79}{\code {PS0}} +\entry{PS3}{79}{\code {PS3}} \entry{PS4}{79}{\code {PS4}} \entry{PWD}{79}{\code {PWD}} \entry{RANDOM}{79}{\code {RANDOM}} @@ -114,7 +115,7 @@ \entry{SHELL}{79}{\code {SHELL}} \entry{SHELLOPTS}{79}{\code {SHELLOPTS}} \entry{SHLVL}{79}{\code {SHLVL}} -\entry{TIMEFORMAT}{79}{\code {TIMEFORMAT}} +\entry{TIMEFORMAT}{80}{\code {TIMEFORMAT}} \entry{TMOUT}{80}{\code {TMOUT}} \entry{TMPDIR}{80}{\code {TMPDIR}} \entry{UID}{80}{\code {UID}} diff --git a/doc/bashref.vrs b/doc/bashref.vrs index c050bf92..7833783c 100644 --- a/doc/bashref.vrs +++ b/doc/bashref.vrs @@ -34,7 +34,7 @@ \entry {\code {BASH_ARGV}}{71} \entry {\code {BASH_CMDS}}{71} \entry {\code {BASH_COMMAND}}{71} -\entry {\code {BASH_COMPAT}}{71} +\entry {\code {BASH_COMPAT}}{72} \entry {\code {BASH_ENV}}{72} \entry {\code {BASH_EXECUTION_STRING}}{72} \entry {\code {BASH_LINENO}}{72} @@ -60,7 +60,7 @@ \entry {\code {COMP_CWORD}}{73} \entry {\code {COMP_KEY}}{74} \entry {\code {COMP_LINE}}{73} -\entry {\code {COMP_POINT}}{73} +\entry {\code {COMP_POINT}}{74} \entry {\code {COMP_TYPE}}{74} \entry {\code {COMP_WORDBREAKS}}{74} \entry {\code {COMP_WORDS}}{74} @@ -82,9 +82,9 @@ \entry {\code {EMACS}}{74} \entry {\code {enable-bracketed-paste}}{109} \entry {\code {enable-keypad}}{109} -\entry {\code {ENV}}{74} -\entry {\code {EUID}}{74} -\entry {\code {EXECIGNORE}}{74} +\entry {\code {ENV}}{75} +\entry {\code {EUID}}{75} +\entry {\code {EXECIGNORE}}{75} \entry {\code {expand-tilde}}{109} \initial {F} \entry {\code {FCEDIT}}{75} @@ -96,15 +96,15 @@ \entry {\code {GROUPS}}{75} \initial {H} \entry {\code {histchars}}{75} -\entry {\code {HISTCMD}}{75} +\entry {\code {HISTCMD}}{76} \entry {\code {HISTCONTROL}}{76} \entry {\code {HISTFILE}}{76} \entry {\code {HISTFILESIZE}}{76} \entry {\code {HISTIGNORE}}{76} \entry {\code {history-preserve-point}}{109} \entry {\code {history-size}}{109} -\entry {\code {HISTSIZE}}{76} -\entry {\code {HISTTIMEFORMAT}}{76} +\entry {\code {HISTSIZE}}{77} +\entry {\code {HISTTIMEFORMAT}}{77} \entry {\code {HOME}}{70} \entry {\code {horizontal-scroll-mode}}{109} \entry {\code {HOSTFILE}}{77} @@ -123,10 +123,10 @@ \entry {\code {LC_ALL}}{77} \entry {\code {LC_COLLATE}}{77} \entry {\code {LC_CTYPE}}{77} -\entry {\code {LC_MESSAGES}}{7, 77} -\entry {\code {LC_NUMERIC}}{77} -\entry {\code {LC_TIME}}{77} -\entry {\code {LINENO}}{77} +\entry {\code {LC_MESSAGES}}{7, 78} +\entry {\code {LC_NUMERIC}}{78} +\entry {\code {LC_TIME}}{78} +\entry {\code {LINENO}}{78} \entry {\code {LINES}}{78} \initial {M} \entry {\code {MACHTYPE}}{78} @@ -153,10 +153,11 @@ \entry {\code {POSIXLY_CORRECT}}{78} \entry {\code {PPID}}{78} \entry {\code {PROMPT_COMMAND}}{78} -\entry {\code {PROMPT_DIRTRIM}}{78} +\entry {\code {PROMPT_DIRTRIM}}{79} +\entry {\code {PS0}}{79} \entry {\code {PS1}}{70} \entry {\code {PS2}}{70} -\entry {\code {PS3}}{78} +\entry {\code {PS3}}{79} \entry {\code {PS4}}{79} \entry {\code {PWD}}{79} \initial {R} @@ -177,7 +178,7 @@ \initial {T} \entry {\code {TEXTDOMAIN}}{7} \entry {\code {TEXTDOMAINDIR}}{7} -\entry {\code {TIMEFORMAT}}{79} +\entry {\code {TIMEFORMAT}}{80} \entry {\code {TMOUT}}{80} \entry {\code {TMPDIR}}{80} \initial {U} diff --git a/doc/builtins.0 b/doc/builtins.0 index 71e0f68f..b587f860 100644 --- a/doc/builtins.0 +++ b/doc/builtins.0 @@ -469,7 +469,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS The return value is 0 unless an invalid option is supplied or _n indexes beyond the end of the directory stack. - ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ...] + ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ... | _p_i_d ... ] Without options, remove each _j_o_b_s_p_e_c from the table of active jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option @@ -1319,148 +1319,156 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS If set, bbaasshh changes its behavior to that of version 3.2 with respect to locale-specific string comparison when using the [[[[ conditional command's << and >> operators - (see previous item). + (see previous item) and the effect of interrupting a + command list. Bash versions 3.2 and earlier continue + with the next command in the list after one terminates + due to an interrupt. ccoommppaatt4400 If set, bbaasshh changes its behavior to that of version 4.0 - with respect to locale-specific string comparison when - using the [[[[ conditional command's << and >> operators - (see description of ccoommppaatt3311) and the effect of inter- - rupting a command list. Bash versions 4.0 and later - interrupt the list as if the shell received the inter- - rupt; previous versions continue with the next command + with respect to locale-specific string comparison when + using the [[[[ conditional command's << and >> operators + (see description of ccoommppaatt3311) and the effect of inter- + rupting a command list. Bash versions 4.0 and later + interrupt the list as if the shell received the inter- + rupt; previous versions continue with the next command in the list. ccoommppaatt4411 - If set, bbaasshh, when in _p_o_s_i_x mode, treats a single quote - in a double-quoted parameter expansion as a special - character. The single quotes must match (an even num- - ber) and the characters between the single quotes are - considered quoted. This is the behavior of posix mode - through version 4.1. The default bash behavior remains + If set, bbaasshh, when in _p_o_s_i_x mode, treats a single quote + in a double-quoted parameter expansion as a special + character. The single quotes must match (an even num- + ber) and the characters between the single quotes are + considered quoted. This is the behavior of posix mode + through version 4.1. The default bash behavior remains as in previous versions. ccoommppaatt4422 - If set, bbaasshh does not process the replacement string in - the pattern substitution word expansion using quote + If set, bbaasshh does not process the replacement string in + the pattern substitution word expansion using quote removal. ccoommppaatt4433 - If set, bbaasshh does not print a warning message if an - attempt is made to use a quoted compound array assign- - ment as an argument to ddeeccllaarree, makes word expansion - errors non-fatal errors that cause the current command - to fail (the default behavior is to make them fatal + If set, bbaasshh does not print a warning message if an + attempt is made to use a quoted compound array assign- + ment as an argument to ddeeccllaarree, makes word expansion + errors non-fatal errors that cause the current command + to fail (the default behavior is to make them fatal errors that cause the shell to exit), and does not reset - the loop state when a shell function is executed (this - allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect + the loop state when a shell function is executed (this + allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect loops in the caller's context). ccoommpplleettee__ffuullllqquuoottee - If set, bbaasshh quotes all shell metacharacters in file- - names and directory names when performing completion. + If set, bbaasshh quotes all shell metacharacters in file- + names and directory names when performing completion. If not set, bbaasshh removes metacharacters such as the dol- - lar sign from the set of characters that will be quoted - in completed filenames when these metacharacters appear - in shell variable references in words to be completed. - This means that dollar signs in variable names that - expand to directories will not be quoted; however, any - dollar signs appearing in filenames will not be quoted, - either. This is active only when bash is using back- - slashes to quote completed filenames. This variable is - set by default, which is the default bash behavior in + lar sign from the set of characters that will be quoted + in completed filenames when these metacharacters appear + in shell variable references in words to be completed. + This means that dollar signs in variable names that + expand to directories will not be quoted; however, any + dollar signs appearing in filenames will not be quoted, + either. This is active only when bash is using back- + slashes to quote completed filenames. This variable is + set by default, which is the default bash behavior in versions through 4.2. ddiirreexxppaanndd - If set, bbaasshh replaces directory names with the results - of word expansion when performing filename completion. - This changes the contents of the readline editing buf- - fer. If not set, bbaasshh attempts to preserve what the + If set, bbaasshh replaces directory names with the results + of word expansion when performing filename completion. + This changes the contents of the readline editing buf- + fer. If not set, bbaasshh attempts to preserve what the user typed. ddiirrssppeellll - If set, bbaasshh attempts spelling correction on directory - names during word completion if the directory name ini- + If set, bbaasshh attempts spelling correction on directory + names during word completion if the directory name ini- tially supplied does not exist. - ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in + ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in the results of pathname expansion. eexxeeccffaaiill If set, a non-interactive shell will not exit if it can- - not execute the file specified as an argument to the - eexxeecc builtin command. An interactive shell does not + not execute the file specified as an argument to the + eexxeecc builtin command. An interactive shell does not exit if eexxeecc fails. eexxppaanndd__aalliiaasseess - If set, aliases are expanded as described above under + If set, aliases are expanded as described above under AALLIIAASSEESS. This option is enabled by default for interac- tive shells. eexxttddeebbuugg - If set, behavior intended for use by debuggers is + If set, behavior intended for use by debuggers is enabled: 11.. The --FF option to the ddeeccllaarree builtin displays the source file name and line number corresponding to each function name supplied as an argument. - 22.. If the command run by the DDEEBBUUGG trap returns a - non-zero value, the next command is skipped and + 22.. If the command run by the DDEEBBUUGG trap returns a + non-zero value, the next command is skipped and not executed. - 33.. If the command run by the DDEEBBUUGG trap returns a - value of 2, and the shell is executing in a sub- - routine (a shell function or a shell script exe- - cuted by the .. or ssoouurrccee builtins), the shell + 33.. If the command run by the DDEEBBUUGG trap returns a + value of 2, and the shell is executing in a sub- + routine (a shell function or a shell script exe- + cuted by the .. or ssoouurrccee builtins), the shell simulates a call to rreettuurrnn. - 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described + 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described in their descriptions above. - 55.. Function tracing is enabled: command substitu- + 55.. Function tracing is enabled: command substitu- tion, shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the DDEEBBUUGG and RREETTUURRNN traps. - 66.. Error tracing is enabled: command substitution, - shell functions, and subshells invoked with (( + 66.. Error tracing is enabled: command substitution, + shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the EERRRR trap. eexxttgglloobb If set, the extended pattern matching features described above under PPaatthhnnaammee EExxppaannssiioonn are enabled. eexxttqquuoottee - If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed - within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double + If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed + within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double quotes. This option is enabled by default. ffaaiillgglloobb - If set, patterns which fail to match filenames during + If set, patterns which fail to match filenames during pathname expansion result in an expansion error. ffoorrccee__ffiiggnnoorree - If set, the suffixes specified by the FFIIGGNNOORREE shell - variable cause words to be ignored when performing word + If set, the suffixes specified by the FFIIGGNNOORREE shell + variable cause words to be ignored when performing word completion even if the ignored words are the only possi- ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a - description of FFIIGGNNOORREE. This option is enabled by + description of FFIIGGNNOORREE. This option is enabled by default. gglloobbaasscciiiirraannggeess - If set, range expressions used in pattern matching - bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave - as if in the traditional C locale when performing com- + If set, range expressions used in pattern matching + bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave + as if in the traditional C locale when performing com- parisons. That is, the current locale's collating - sequence is not taken into account, so bb will not col- - late between AA and BB, and upper-case and lower-case + sequence is not taken into account, so bb will not col- + late between AA and BB, and upper-case and lower-case ASCII characters will collate together. gglloobbssttaarr If set, the pattern **** used in a pathname expansion con- - text will match all files and zero or more directories - and subdirectories. If the pattern is followed by a //, + text will match all files and zero or more directories + and subdirectories. If the pattern is followed by a //, only directories and subdirectories match. ggnnuu__eerrrrffmmtt If set, shell error messages are written in the standard GNU error message format. hhiissttaappppeenndd - If set, the history list is appended to the file named - by the value of the HHIISSTTFFIILLEE variable when the shell + If set, the history list is appended to the file named + by the value of the HHIISSTTFFIILLEE variable when the shell exits, rather than overwriting the file. hhiissttrreeeeddiitt - If set, and rreeaaddlliinnee is being used, a user is given the + If set, and rreeaaddlliinnee is being used, a user is given the opportunity to re-edit a failed history substitution. hhiissttvveerriiffyy - If set, and rreeaaddlliinnee is being used, the results of his- - tory substitution are not immediately passed to the - shell parser. Instead, the resulting line is loaded + If set, and rreeaaddlliinnee is being used, the results of his- + tory substitution are not immediately passed to the + shell parser. Instead, the resulting line is loaded into the rreeaaddlliinnee editing buffer, allowing further modi- fication. hhoossttccoommpplleettee If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to - perform hostname completion when a word containing a @@ - is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE + perform hostname completion when a word containing a @@ + is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE above). This is enabled by default. hhuuppoonneexxiitt If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an inter- active login shell exits. + iinnhheerriitt__eerrrreexxiitt + If set, command substitution inherits the value of the + eerrrreexxiitt option, instead of unsetting it in the subshell + environment. This option is enabled when _p_o_s_i_x _m_o_d_e is + enabled. iinntteerraaccttiivvee__ccoommmmeennttss If set, allow a word beginning with ## to cause that word and all remaining characters on that line to be ignored @@ -1628,7 +1636,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS function or a script executed with the .. or ssoouurrccee builtins fin- ishes executing. - If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a a + If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a pipeline (which may consist of a single simple command), a list, or a compound command returns a non-zero exit status, subject to the following conditions. The EERRRR trap is not executed if the diff --git a/doc/builtins.ps b/doc/builtins.ps index 11697f84..90e96c19 100644 --- a/doc/builtins.ps +++ b/doc/builtins.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.3 -%%CreationDate: Wed Oct 14 11:38:11 2015 +%%CreationDate: Thu Dec 3 11:00:53 2015 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic @@ -986,12 +986,12 @@ F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E -.15 G 2.758(sb).15 G -.15(ey)-2.758 G .258(ond the end of the direc-) .15 F(tory stack.)144 148.8 Q F1(diso)108 165.6 Q(wn)-.1 E F0([)2.5 E F1 (\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0 -(...])2.5 E -.4(Wi)144 177.6 S .121(thout options, remo).4 F .422 -.15 -(ve e)-.15 H(ach).15 E F2(jobspec)4.362 E F0 .122 -(from the table of acti)2.932 F .422 -.15(ve j)-.25 H 2.622(obs. If).15 -F F2(jobspec)4.362 E F0 .122(is not present, and)2.932 F .096 -(neither the)144 189.6 R F12.596 E F0 .096(nor the)2.596 F F1 -2.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E +(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 177.6 S .121 +(thout options, remo).4 F .422 -.15(ve e)-.15 H(ach).15 E F2(jobspec) +4.362 E F0 .122(from the table of acti)2.932 F .422 -.15(ve j)-.25 H +2.622(obs. If).15 F F2(jobspec)4.362 E F0 .122(is not present, and)2.932 +F .096(neither the)144 189.6 R F12.596 E F0 .096(nor the)2.596 F +F12.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E .096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1 2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each) .15 F F2(jobspec)145.74 201.6 Q F0 .585(is not remo)3.395 F -.15(ve)-.15 @@ -2329,674 +2329,679 @@ SF(str)2.5 E(coll)-.37 E F0(\(3\).).51 E/F2 10/Times-Bold@0 SF(compat32) (ersion 3.2 with respect to locale-speci\214c)-.15 F .422 (string comparison when using the)184 120 R F2([[)2.922 E F0 .422 (conditional command')2.922 F(s)-.55 E F2(<)2.922 E F0(and)2.922 E F2(>) -2.923 E F0 .423(operators \(see pre-)2.923 F(vious item\).)184 132 Q F2 -(compat40)144 144 Q F0 1.41(If set,)184 156 R F2(bash)3.91 E F0 1.41 -(changes its beha)3.91 F 1.409(vior to that of v)-.2 F 1.409 -(ersion 4.0 with respect to locale-speci\214c)-.15 F 2.007 -(string comparison when using the)184 168 R F2([[)4.507 E F0 2.008 -(conditional command')4.507 F(s)-.55 E F2(<)4.508 E F0(and)4.508 E F2(>) -4.508 E F0 2.008(operators \(see)4.508 F .77(description of)184 180 R F2 -(compat31)3.27 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 -(fect of interrupting a command list.)-.25 F .769(Bash v)5.769 F -(ersions)-.15 E .086 -(4.0 and later interrupt the list as if the shell recei)184 192 R -.15 -(ve)-.25 G 2.587(dt).15 G .087(he interrupt; pre)-2.587 F .087(vious v) --.25 F .087(ersions con-)-.15 F(tinue with the ne)184 204 Q -(xt command in the list.)-.15 E F2(compat41)144 216 Q F0 1.484(If set,) -184 228 R F2(bash)3.984 E F0 3.984(,w)C 1.484(hen in)-3.984 F F1(posix) -3.984 E F0 1.483 -(mode, treats a single quote in a double-quoted parameter)3.984 F -.15 -(ex)184 240 S .958(pansion as a special character).15 F 5.958(.T)-.55 G -.959(he single quotes must match \(an e)-5.958 F -.15(ve)-.25 G 3.459 -(nn).15 G .959(umber\) and)-3.459 F .59 -(the characters between the single quotes are considered quoted.)184 252 -R .59(This is the beha)5.59 F .59(vior of)-.2 F .589 -(posix mode through v)184 264 R .589(ersion 4.1.)-.15 F .589(The def) -5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .59 -(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 276 Q F2(compat42)144 288 Q -F0 1.797(If set,)184 300 R F2(bash)4.297 E F0 1.796 +2.923 E F0 .423(operators \(see pre-)2.923 F .481 +(vious item\) and the ef)184 132 R .481 +(fect of interrupting a command list.)-.25 F .48(Bash v)5.481 F .48 +(ersions 3.2 and earlier)-.15 F(continue with the ne)184 144 Q +(xt command in the list after one terminates due to an interrupt.)-.15 E +F2(compat40)144 156 Q F0 1.409(If set,)184 168 R F2(bash)3.909 E F0 +1.409(changes its beha)3.909 F 1.409(vior to that of v)-.2 F 1.41 +(ersion 4.0 with respect to locale-speci\214c)-.15 F 2.008 +(string comparison when using the)184 180 R F2([[)4.508 E F0 2.007 +(conditional command')4.508 F(s)-.55 E F2(<)4.507 E F0(and)4.507 E F2(>) +4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 192 R +F2(compat31)3.269 E F0 3.269(\)a)C .769(nd the ef)-3.269 F .769 +(fect of interrupting a command list.)-.25 F .77(Bash v)5.77 F(ersions) +-.15 E .087(4.0 and later interrupt the list as if the shell recei)184 +204 R -.15(ve)-.25 G 2.586(dt).15 G .086(he interrupt; pre)-2.586 F .086 +(vious v)-.25 F .086(ersions con-)-.15 F(tinue with the ne)184 216 Q +(xt command in the list.)-.15 E F2(compat41)144 228 Q F0 1.483(If set,) +184 240 R F2(bash)3.983 E F0 3.983(,w)C 1.483(hen in)-3.983 F F1(posix) +3.983 E F0 1.484 +(mode, treats a single quote in a double-quoted parameter)3.983 F -.15 +(ex)184 252 S .959(pansion as a special character).15 F 5.959(.T)-.55 G +.958(he single quotes must match \(an e)-5.959 F -.15(ve)-.25 G 3.458 +(nn).15 G .958(umber\) and)-3.458 F .59 +(the characters between the single quotes are considered quoted.)184 264 +R .59(This is the beha)5.59 F .59(vior of)-.2 F .59 +(posix mode through v)184 276 R .589(ersion 4.1.)-.15 F .589(The def) +5.589 F .589(ault bash beha)-.1 F .589(vior remains as in pre)-.2 F .589 +(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 288 Q F2(compat42)144 300 Q +F0 1.796(If set,)184 312 R F2(bash)4.296 E F0 1.796 (does not process the replacement string in the pattern substitution w) -4.296 F(ord)-.1 E -.15(ex)184 312 S(pansion using quote remo).15 E -.25 -(va)-.15 G(l.).25 E F2(compat43)144 324 Q F0 .14(If set,)184 336 R F2 -(bash)2.64 E F0 .14(does not print a w)2.64 F .141 -(arning message if an attempt is made to use a quoted com-)-.1 F .913 -(pound array assignment as an ar)184 348 R .913(gument to)-.18 F F2 -(declar)3.412 E(e)-.18 E F0 3.412(,m)C(ak)-3.412 E .912(es w)-.1 F .912 -(ord e)-.1 F .912(xpansion errors non-)-.15 F -.1(fa)184 360 S .352 +4.296 F(ord)-.1 E -.15(ex)184 324 S(pansion using quote remo).15 E -.25 +(va)-.15 G(l.).25 E F2(compat43)144 336 Q F0 .141(If set,)184 348 R F2 +(bash)2.641 E F0 .141(does not print a w)2.641 F .14 +(arning message if an attempt is made to use a quoted com-)-.1 F .912 +(pound array assignment as an ar)184 360 R .912(gument to)-.18 F F2 +(declar)3.413 E(e)-.18 E F0 3.413(,m)C(ak)-3.413 E .913(es w)-.1 F .913 +(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 372 S .353 (tal errors that cause the current command to f).1 F .353(ail \(the def) --.1 F .353(ault beha)-.1 F .353(vior is to mak)-.2 F 2.853(et)-.1 G(hem) --2.853 E -.1(fa)184 372 S 1.058(tal errors that cause the shell to e).1 -F 1.057(xit\), and does not reset the loop state when a shell)-.15 F -.374(function is e)184 384 R -.15(xe)-.15 G .374(cuted \(this allo).15 F -(ws)-.25 E F2(br)2.874 E(eak)-.18 E F0(or)2.875 E F2(continue)2.875 E F0 -.375(in a shell function to af)2.875 F .375(fect loops in)-.25 F -(the caller')184 396 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F2 -(complete_fullquote)144 408 Q F0 .654(If set,)184 420 R F2(bash)3.153 E +-.1 F .352(ault beha)-.1 F .352(vior is to mak)-.2 F 2.852(et)-.1 G(hem) +-2.852 E -.1(fa)184 384 S 1.057(tal errors that cause the shell to e).1 +F 1.058(xit\), and does not reset the loop state when a shell)-.15 F +.375(function is e)184 396 R -.15(xe)-.15 G .375(cuted \(this allo).15 F +(ws)-.25 E F2(br)2.875 E(eak)-.18 E F0(or)2.875 E F2(continue)2.875 E F0 +.374(in a shell function to af)2.875 F .374(fect loops in)-.25 F +(the caller')184 408 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F2 +(complete_fullquote)144 420 Q F0 .653(If set,)184 432 R F2(bash)3.153 E F0 .653(quotes all shell metacharacters in \214lenames and directory na\ -mes when per)3.153 F(-)-.2 E 1.524(forming completion.)184 432 R 1.524 -(If not set,)6.524 F F2(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 G +mes when per)3.153 F(-)-.2 E 1.525(forming completion.)184 444 R 1.524 +(If not set,)6.525 F F2(bash)4.024 E F0(remo)4.024 E -.15(ve)-.15 G 4.024(sm).15 G 1.524(etacharacters such as the dollar sign)-4.024 F 2.667(from the set of characters that will be quoted in completed \214l\ -enames when these)184 444 R .028(metacharacters appear in shell v)184 -456 R .028(ariable references in w)-.25 F .029(ords to be completed.)-.1 -F .029(This means)5.029 F 1.073(that dollar signs in v)184 468 R 1.073 +enames when these)184 456 R .029(metacharacters appear in shell v)184 +468 R .028(ariable references in w)-.25 F .028(ords to be completed.)-.1 +F .028(This means)5.028 F 1.072(that dollar signs in v)184 480 R 1.073 (ariable names that e)-.25 F 1.073 (xpand to directories will not be quoted; ho)-.15 F(w-)-.25 E -2.15 -.25 -(ev e)184 480 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 +(ev e)184 492 T 1.923 -.4(r, a).25 H 1.423 -.15(ny d).4 H 1.123 (ollar signs appearing in \214lenames will not be quoted, either).15 F -6.123(.T)-.55 G 1.123(his is acti)-6.123 F -.15(ve)-.25 G .59 +6.123(.T)-.55 G 1.122(his is acti)-6.123 F -.15(ve)-.25 G .59 (only when bash is using backslashes to quote completed \214lenames.)184 -492 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 504 Q +504 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 516 Q (ault, which is the def)-.1 E(ault bash beha)-.1 E(vior in v)-.2 E -(ersions through 4.2.)-.15 E F2(dir)144 516 Q(expand)-.18 E F0 .486 -(If set,)184 528 R F2(bash)2.986 E F0 .486 +(ersions through 4.2.)-.15 E F2(dir)144 528 Q(expand)-.18 E F0 .487 +(If set,)184 540 R F2(bash)2.987 E F0 .486 (replaces directory names with the results of w)2.986 F .486(ord e)-.1 F -.487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184 -540 R .179(This changes the contents of the readline editing b)5.18 F -(uf)-.2 E(fer)-.25 E 5.179(.I)-.55 G 2.679(fn)-5.179 G(ot)-2.679 E(set,) -184 552 Q F2(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G -(hat the user typed.)-2.5 E F2(dirspell)144 564 Q F0 .858(If set,)184 -564 R F2(bash)3.358 E F0 .858 -(attempts spelling correction on directory names during w)3.358 F .859 +.486(xpansion when perform-)-.15 F .179(ing \214lename completion.)184 +552 R .179(This changes the contents of the readline editing b)5.179 F +(uf)-.2 E(fer)-.25 E 5.18(.I)-.55 G 2.68(fn)-5.18 G(ot)-2.68 E(set,)184 +564 Q F2(bash)2.5 E F0(attempts to preserv)2.5 E 2.5(ew)-.15 G +(hat the user typed.)-2.5 E F2(dirspell)144 576 Q F0 .859(If set,)184 +576 R F2(bash)3.359 E F0 .858 +(attempts spelling correction on directory names during w)3.359 F .858 (ord completion if)-.1 F -(the directory name initially supplied does not e)184 576 Q(xist.)-.15 E -F2(dotglob)144 588 Q F0(If set,)184 588 Q F2(bash)2.5 E F0 +(the directory name initially supplied does not e)184 588 Q(xist.)-.15 E +F2(dotglob)144 600 Q F0(If set,)184 600 Q F2(bash)2.5 E F0 (includes \214lenames be)2.5 E(ginning with a `.)-.15 E 2.5('i)-.7 G 2.5 (nt)-2.5 G(he results of pathname e)-2.5 E(xpansion.)-.15 E F2(execfail) -144 600 Q F0 1.387(If set, a non-interacti)184 600 R 1.687 -.15(ve s) +144 612 Q F0 1.386(If set, a non-interacti)184 612 R 1.686 -.15(ve s) -.25 H 1.386(hell will not e).15 F 1.386(xit if it cannot e)-.15 F -.15 -(xe)-.15 G 1.386(cute the \214le speci\214ed as an).15 F(ar)184 612 Q +(xe)-.15 G 1.387(cute the \214le speci\214ed as an).15 F(ar)184 624 Q (gument to the)-.18 E F2(exec)2.5 E F0 -.2(bu)2.5 G(iltin command.).2 E (An interacti)5 E .3 -.15(ve s)-.25 H(hell does not e).15 E(xit if)-.15 -E F2(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F2(expand_aliases)144 624 Q F0 -.716(If set, aliases are e)184 636 R .717(xpanded as described abo)-.15 +E F2(exec)2.5 E F0 -.1(fa)2.5 G(ils.).1 E F2(expand_aliases)144 636 Q F0 +.717(If set, aliases are e)184 648 R .717(xpanded as described abo)-.15 F 1.017 -.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(ALIASES)3.217 E -/F4 9/Times-Roman@0 SF(.)A F0 .717(This option is enabled)5.217 F -(by def)184 648 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) -.15 E F2(extdeb)144 660 Q(ug)-.2 E F0(If set, beha)184 672 Q +/F4 9/Times-Roman@0 SF(.)A F0 .716(This option is enabled)5.217 F +(by def)184 660 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) +.15 E F2(extdeb)144 672 Q(ug)-.2 E F0(If set, beha)184 684 Q (vior intended for use by deb)-.2 E(uggers is enabled:)-.2 E F2(1.)184 -684 Q F0(The)220 684 Q F24.251 E F0 1.751(option to the)4.251 F F2 +696 Q F0(The)220 696 Q F24.25 E F0 1.75(option to the)4.25 F F2 (declar)4.251 E(e)-.18 E F0 -.2(bu)4.251 G 1.751 (iltin displays the source \214le name and line).2 F -(number corresponding to each function name supplied as an ar)220 696 Q -(gument.)-.18 E F2(2.)184 708 Q F0 1.667(If the command run by the)220 -708 R F2(DEB)4.167 E(UG)-.1 E F0 1.667(trap returns a non-zero v)4.167 F -1.667(alue, the ne)-.25 F(xt)-.15 E(command is skipped and not e)220 720 -Q -.15(xe)-.15 G(cuted.).15 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 -E(18)198.725 E 0 Cg EP +(number corresponding to each function name supplied as an ar)220 708 Q +(gument.)-.18 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(18)198.725 E +0 Cg EP %%Page: 19 19 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(3.)184 84 Q F0 .841 -(If the command run by the)220 84 R F1(DEB)3.341 E(UG)-.1 E F0 .841 -(trap returns a v)3.341 F .84(alue of 2, and the shell is)-.25 F -.15 -(exe)220 96 S .488 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(2.)184 84 Q F0 1.667 +(If the command run by the)220 84 R F1(DEB)4.167 E(UG)-.1 E F0 1.667 +(trap returns a non-zero v)4.167 F 1.667(alue, the ne)-.25 F(xt)-.15 E +(command is skipped and not e)220 96 Q -.15(xe)-.15 G(cuted.).15 E F1 +(3.)184 108 Q F0 .84(If the command run by the)220 108 R F1(DEB)3.34 E +(UG)-.1 E F0 .841(trap returns a v)3.341 F .841 +(alue of 2, and the shell is)-.25 F -.15(exe)220 120 S .488 (cuting in a subroutine \(a shell function or a shell script e).15 F -.15(xe)-.15 G .488(cuted by the).15 F F1(.)2.988 E F0(or)2.988 E F1 -(sour)220 108 Q(ce)-.18 E F0 -.2(bu)2.5 G +(sour)220 132 Q(ce)-.18 E F0 -.2(bu)2.5 G (iltins\), the shell simulates a call to).2 E F1 -.18(re)2.5 G(tur).18 E -(n)-.15 E F0(.)A F1(4.)184 120 Q/F2 9/Times-Bold@0 SF -.27(BA)220 120 S -(SH_ARGC).27 E F0(and)3.154 E F2 -.27(BA)3.404 G(SH_ARGV).27 E F0 .904 -(are updated as described in their descriptions)3.154 F(abo)220 132 Q --.15(ve)-.15 G(.).15 E F1(5.)184 144 Q F0 1.637(Function tracing is ena\ -bled: command substitution, shell functions, and sub-)220 144 R -(shells in)220 156 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 +(n)-.15 E F0(.)A F1(4.)184 144 Q/F2 9/Times-Bold@0 SF -.27(BA)220 144 S +(SH_ARGC).27 E F0(and)3.153 E F2 -.27(BA)3.403 G(SH_ARGV).27 E F0 .904 +(are updated as described in their descriptions)3.154 F(abo)220 156 Q +-.15(ve)-.15 G(.).15 E F1(5.)184 168 Q F0 1.637(Function tracing is ena\ +bled: command substitution, shell functions, and sub-)220 168 R +(shells in)220 180 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 (\()2.5 E/F3 10/Times-Italic@0 SF(command)2.5 E F1(\))2.5 E F0 (inherit the)2.5 E F1(DEB)2.5 E(UG)-.1 E F0(and)2.5 E F1(RETURN)2.5 E F0 -(traps.)2.5 E F1(6.)184 168 Q F0 1.082(Error tracing is enabled: comman\ -d substitution, shell functions, and subshells)220 168 R(in)220 180 Q +(traps.)2.5 E F1(6.)184 192 Q F0 1.082(Error tracing is enabled: comman\ +d substitution, shell functions, and subshells)220 192 R(in)220 204 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1(\()2.5 E F3(command) 2.5 E F1(\))2.5 E F0(inherit the)2.5 E F1(ERR)2.5 E F0(trap.)2.5 E F1 -(extglob)144 192 Q F0 .4(If set, the e)184 192 R .4 +(extglob)144 216 Q F0 .4(If set, the e)184 216 R .4 (xtended pattern matching features described abo)-.15 F .7 -.15(ve u) --.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 204 Q -F0(are enabled.)2.5 E F1(extquote)144 216 Q F0 2.473(If set,)184 228 R +-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 228 Q +F0(are enabled.)2.5 E F1(extquote)144 240 Q F0 2.473(If set,)184 252 R F1($)4.973 E F0<08>A F3(string)A F0 4.973<0861>C(nd)-4.973 E F1($)4.973 E F0(")A F3(string)A F0 4.973("q)C 2.473(uoting is performed within) -4.973 F F1(${)4.973 E F3(par)A(ameter)-.15 E F1(})A F0 -.15(ex)4.973 G -(pansions).15 E(enclosed in double quotes.)184 240 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 252 Q F0 -1.424(If set, patterns which f)184 252 R 1.425 -(ail to match \214lenames during pathname e)-.1 F 1.425 -(xpansion result in an)-.15 F -.15(ex)184 264 S(pansion error).15 E(.) --.55 E F1 -.25(fo)144 276 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.937(If set, the suf)184 288 R<8c78>-.25 E .936(es speci\214ed by the) +(pansions).15 E(enclosed in double quotes.)184 264 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 276 Q F0 +1.425(If set, patterns which f)184 276 R 1.425 +(ail to match \214lenames during pathname e)-.1 F 1.424 +(xpansion result in an)-.15 F -.15(ex)184 288 S(pansion error).15 E(.) +-.55 E F1 -.25(fo)144 300 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.936(If set, the suf)184 312 R<8c78>-.25 E .936(es speci\214ed by the) -.15 F F2(FIGNORE)3.436 E F0 .936(shell v)3.186 F .936(ariable cause w) --.25 F .936(ords to be ignored)-.1 F .32(when performing w)184 300 R .32 +-.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 324 R .32 (ord completion e)-.1 F -.15(ve)-.25 G 2.82(ni).15 G 2.82(ft)-2.82 G .32 -(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.948 -(pletions. See)184 312 R F2 .448(SHELL V)2.948 F(ARIABLES)-1.215 E F0 -(abo)2.698 E .748 -.15(ve f)-.15 H .448(or a description of).15 F F2 -(FIGNORE)2.947 E/F4 9/Times-Roman@0 SF(.)A F0 .447(This option is)4.947 -F(enabled by def)184 324 Q(ault.)-.1 E F1(globasciiranges)144 336 Q F0 -2.518(If set, range e)184 348 R 2.519 -(xpressions used in pattern matching brack)-.15 F 2.519(et e)-.1 F 2.519 -(xpressions \(see)-.15 F F2 -.09(Pa)5.019 G(tter).09 E(n)-.135 E -(Matching)184 360 Q F0(abo)2.965 E -.15(ve)-.15 G 3.215(\)b).15 G(eha) --3.215 E 1.015 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214 +(he ignored w)-2.82 F .32(ords are the only possible com-)-.1 F 2.947 +(pletions. See)184 336 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 +(abo)2.697 E .747 -.15(ve f)-.15 H .448(or a description of).15 F F2 +(FIGNORE)2.948 E/F4 9/Times-Roman@0 SF(.)A F0 .448(This option is)4.948 +F(enabled by def)184 348 Q(ault.)-.1 E F1(globasciiranges)144 360 Q F0 +2.519(If set, range e)184 372 R 2.519 +(xpressions used in pattern matching brack)-.15 F 2.518(et e)-.1 F 2.518 +(xpressions \(see)-.15 F F2 -.09(Pa)5.018 G(tter).09 E(n)-.135 E +(Matching)184 384 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha) +-3.214 E 1.014 -.15(ve a)-.2 H 3.214(si).15 G 3.214(fi)-3.214 G 3.214 (nt)-3.214 G .714(he traditional C locale when performing comparisons.) --3.214 F 1.02(That is, the current locale')184 372 R 3.52(sc)-.55 G 1.02 +-3.214 F 1.02(That is, the current locale')184 396 R 3.52(sc)-.55 G 1.02 (ollating sequence is not tak)-3.52 F 1.02(en into account, so)-.1 F F1 -(b)3.52 E F0 1.02(will not)3.52 F .957(collate between)184 384 R F1(A) -3.457 E F0(and)3.457 E F1(B)3.457 E F0 3.457(,a)C .957(nd upper)-3.457 F -.957(-case and lo)-.2 F(wer)-.25 E .956 -(-case ASCII characters will collate)-.2 F(together)184 396 Q(.)-.55 E -F1(globstar)144 408 Q F0 .518(If set, the pattern)184 408 R F1(**)3.018 -E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .519 -(xt will match all \214les and zero)-.15 F .432 -(or more directories and subdirectories.)184 420 R .431 -(If the pattern is follo)5.432 F .431(wed by a)-.25 F F1(/)2.931 E F0 -2.931(,o)C .431(nly directories)-2.931 F(and subdirectories match.)184 -432 Q F1(gnu_errfmt)144 444 Q F0(If set, shell error messages are writt\ -en in the standard GNU error message format.)184 456 Q F1(histappend)144 -468 Q F0 .676 +(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 408 R F1(A) +3.456 E F0(and)3.456 E F1(B)3.456 E F0 3.457(,a)C .957(nd upper)-3.457 F +.957(-case and lo)-.2 F(wer)-.25 E .957 +(-case ASCII characters will collate)-.2 F(together)184 420 Q(.)-.55 E +F1(globstar)144 432 Q F0 .519(If set, the pattern)184 432 R F1(**)3.019 +E F0 .519(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .518 +(xt will match all \214les and zero)-.15 F .431 +(or more directories and subdirectories.)184 444 R .431 +(If the pattern is follo)5.431 F .432(wed by a)-.25 F F1(/)2.932 E F0 +2.932(,o)C .432(nly directories)-2.932 F(and subdirectories match.)184 +456 Q F1(gnu_errfmt)144 468 Q F0(If set, shell error messages are writt\ +en in the standard GNU error message format.)184 480 Q F1(histappend)144 +492 Q F0 .676 (If set, the history list is appended to the \214le named by the v)184 -480 R .676(alue of the)-.25 F F2(HISTFILE)3.177 E F0 -.25(va)2.927 G -(ri-).25 E(able when the shell e)184 492 Q(xits, rather than o)-.15 E --.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 504 Q(eedit)-.18 -E F0 .576(If set, and)184 516 R F1 -.18(re)3.076 G(adline).18 E F0 .575 -(is being used, a user is gi)3.076 F -.15(ve)-.25 G 3.075(nt).15 G .575 -(he opportunity to re-edit a f)-3.075 F .575(ailed his-)-.1 F -(tory substitution.)184 528 Q F1(histv)144 540 Q(erify)-.1 E F0 .402 -(If set, and)184 552 R F1 -.18(re)2.903 G(adline).18 E F0 .403 +504 R .676(alue of the)-.25 F F2(HISTFILE)3.176 E F0 -.25(va)2.926 G +(ri-).25 E(able when the shell e)184 516 Q(xits, rather than o)-.15 E +-.15(ve)-.15 G(rwriting the \214le.).15 E F1(histr)144 528 Q(eedit)-.18 +E F0 .575(If set, and)184 540 R F1 -.18(re)3.075 G(adline).18 E F0 .575 +(is being used, a user is gi)3.075 F -.15(ve)-.25 G 3.075(nt).15 G .576 +(he opportunity to re-edit a f)-3.075 F .576(ailed his-)-.1 F +(tory substitution.)184 552 Q F1(histv)144 564 Q(erify)-.1 E F0 .403 +(If set, and)184 576 R F1 -.18(re)2.903 G(adline).18 E F0 .403 (is being used, the results of history substitution are not immediately) -2.903 F .662(passed to the shell parser)184 564 R 5.662(.I)-.55 G .661 -(nstead, the resulting line is loaded into the)-5.662 F F1 -.18(re)3.161 -G(adline).18 E F0(editing)3.161 E -.2(bu)184 576 S -.25(ff).2 G(er).25 E +2.903 F .661(passed to the shell parser)184 588 R 5.661(.I)-.55 G .662 +(nstead, the resulting line is loaded into the)-5.661 F F1 -.18(re)3.162 +G(adline).18 E F0(editing)3.162 E -.2(bu)184 600 S -.25(ff).2 G(er).25 E 2.5(,a)-.4 G(llo)-2.5 E(wing further modi\214cation.)-.25 E F1 -(hostcomplete)144 588 Q F0 1.181(If set, and)184 600 R F1 -.18(re)3.681 -G(adline).18 E F0 1.181(is being used,)3.681 F F1(bash)3.682 E F0 1.182 -(will attempt to perform hostname completion)3.682 F 1.381(when a w)184 -612 R 1.381(ord containing a)-.1 F F1(@)3.881 E F0 1.381 -(is being completed \(see)3.881 F F1(Completing)3.88 E F0(under)3.88 E -F2(READLINE)3.88 E F0(abo)184 624 Q -.15(ve)-.15 G 2.5(\). This).15 F -(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 636 Q F0(If set,) -184 648 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 +(hostcomplete)144 612 Q F0 1.182(If set, and)184 624 R F1 -.18(re)3.682 +G(adline).18 E F0 1.182(is being used,)3.682 F F1(bash)3.682 E F0 1.181 +(will attempt to perform hostname completion)3.681 F 1.38(when a w)184 +636 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381 +(is being completed \(see)3.881 F F1(Completing)3.881 E F0(under)3.881 E +F2(READLINE)3.881 E F0(abo)184 648 Q -.15(ve)-.15 G 2.5(\). This).15 F +(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 660 Q F0(If set,) +184 672 Q F1(bash)2.5 E F0(will send)2.5 E F2(SIGHUP)2.5 E F0 (to all jobs when an interacti)2.25 E .3 -.15(ve l)-.25 H(ogin shell e) -.15 E(xits.)-.15 E F1(interacti)144 660 Q -.1(ve)-.1 G(_comments).1 E F0 -.33(If set, allo)184 672 R 2.83(waw)-.25 G .33(ord be)-2.93 F .33 -(ginning with)-.15 F F1(#)2.83 E F0 .33(to cause that w)2.83 F .33 -(ord and all remaining characters on)-.1 F .967 -(that line to be ignored in an interacti)184 684 R 1.267 -.15(ve s)-.25 -H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)-.15 -G 3.467(\). This).15 F .967(option is)3.467 F(enabled by def)184 696 Q -(ault.)-.1 E F1(lastpipe)144 708 Q F0 .066 -(If set, and job control is not acti)184 708 R -.15(ve)-.25 G 2.566(,t) -.15 G .066(he shell runs the last command of a pipeline not e)-2.566 F --.15(xe)-.15 G(-).15 E(cuted in the background in the current shell en) -184 720 Q(vironment.)-.4 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E -(19)198.725 E 0 Cg EP +.15 E(xits.)-.15 E F1(inherit_err)144 684 Q(exit)-.18 E F0 .22 +(If set, command substitution inherits the v)184 696 R .219(alue of the) +-.25 F F1(err)2.719 E(exit)-.18 E F0 .219(option, instead of unsetting) +2.719 F(it in the subshell en)184 708 Q 2.5(vironment. This)-.4 F +(option is enabled when)2.5 E F3(posix mode)2.5 E F0(is enabled.)2.5 E +(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(19)198.725 E 0 Cg EP %%Page: 20 20 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(lithist)144 84 Q F0 -.655(If set, and the)184 84 R F1(cmdhist)3.155 E F0 .654 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(interacti)144 84 Q +-.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 96 R 2.83(waw)-.25 G +.33(ord be)-2.93 F .33(ginning with)-.15 F F1(#)2.83 E F0 .33 +(to cause that w)2.83 F .33(ord and all remaining characters on)-.1 F +.967(that line to be ignored in an interacti)184 108 R 1.267 -.15(ve s) +-.25 H .967(hell \(see).15 F/F2 9/Times-Bold@0 SF(COMMENTS)3.467 E F0 +(abo)3.217 E -.15(ve)-.15 G 3.467(\). This).15 F .967(option is)3.467 F +(enabled by def)184 120 Q(ault.)-.1 E F1(lastpipe)144 132 Q F0 .066 +(If set, and job control is not acti)184 132 R -.15(ve)-.25 G 2.566(,t) +.15 G .066(he shell runs the last command of a pipeline not e)-2.566 F +-.15(xe)-.15 G(-).15 E(cuted in the background in the current shell en) +184 144 Q(vironment.)-.4 E F1(lithist)144 156 Q F0 .655(If set, and the) +184 156 R F1(cmdhist)3.155 E F0 .654 (option is enabled, multi-line commands are sa)3.154 F -.15(ve)-.2 G 3.154(dt).15 G 3.154(ot)-3.154 G .654(he history)-3.154 F -(with embedded ne)184 96 Q +(with embedded ne)184 168 Q (wlines rather than using semicolon separators where possible.)-.25 E F1 -(login_shell)144 108 Q F0 .486 +(login_shell)144 180 Q F0 .486 (The shell sets this option if it is started as a login shell \(see)184 -120 R/F2 9/Times-Bold@0 SF(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo) -2.737 E -.15(ve)-.15 G 2.987(\). The).15 F -.25(va)184 132 S -(lue may not be changed.).25 E F1(mailwar)144 144 Q(n)-.15 E F0 .815 -(If set, and a \214le that)184 156 R F1(bash)3.315 E F0 .814 +192 R F2(INV)2.987 E(OCA)-.405 E(TION)-.855 E F0(abo)2.737 E -.15(ve) +-.15 G 2.987(\). The).15 F -.25(va)184 204 S(lue may not be changed.).25 +E F1(mailwar)144 216 Q(n)-.15 E F0 .815(If set, and a \214le that)184 +228 R F1(bash)3.315 E F0 .814 (is checking for mail has been accessed since the last time it)3.315 F --.1(wa)184 168 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E +-.1(wa)184 240 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E (`The mail in)-.74 E/F3 10/Times-Italic@0 SF(mail\214le)2.5 E F0 (has been read')2.5 E 2.5('i)-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1 -(no_empty_cmd_completion)144 180 Q F0 .324(If set, and)184 192 R F1 -.18 +(no_empty_cmd_completion)144 252 Q F0 .324(If set, and)184 264 R F1 -.18 (re)2.824 G(adline).18 E F0 .324(is being used,)2.824 F F1(bash)2.824 E F0 .324(will not attempt to search the)2.824 F F2 -.666(PA)2.825 G(TH) -.189 E F0 .325(for possible)2.575 F -(completions when completion is attempted on an empty line.)184 204 Q F1 -(nocaseglob)144 216 Q F0 .437(If set,)184 228 R F1(bash)2.937 E F0 .436 +(completions when completion is attempted on an empty line.)184 276 Q F1 +(nocaseglob)144 288 Q F0 .437(If set,)184 300 R F1(bash)2.937 E F0 .436 (matches \214lenames in a case\255insensiti)2.937 F .736 -.15(ve f)-.25 -H .436(ashion when performing pathname).05 F -.15(ex)184 240 S +H .436(ashion when performing pathname).05 F -.15(ex)184 312 S (pansion \(see).15 E F1 -.1(Pa)2.5 G(thname Expansion).1 E F0(abo)2.5 E --.15(ve)-.15 G(\).).15 E F1(nocasematch)144 252 Q F0 1.193(If set,)184 -264 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti) +-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 324 Q F0 1.193(If set,)184 +336 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti) 3.693 F 1.494 -.15(ve f)-.25 H 1.194(ashion when performing matching).05 -F .551(while e)184 276 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0 +F .551(while e)184 348 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0 (or)3.051 E F1([[)3.051 E F0 .551 (conditional commands, when performing pattern substitution)3.051 F -.1 -(wo)184 288 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ -le completions as part of programmable com-)-.15 F(pletion.)184 300 Q F1 -(nullglob)144 312 Q F0 .855(If set,)184 324 R F1(bash)3.355 E F0(allo) +(wo)184 360 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ +le completions as part of programmable com-)-.15 F(pletion.)184 372 Q F1 +(nullglob)144 384 Q F0 .855(If set,)184 396 R F1(bash)3.355 E F0(allo) 3.355 E .855(ws patterns which match no \214les \(see)-.25 F F1 -.1(Pa) 3.354 G .854(thname Expansion).1 F F0(abo)3.354 E -.15(ve)-.15 G 3.354 -(\)t).15 G(o)-3.354 E -.15(ex)184 336 S +(\)t).15 G(o)-3.354 E -.15(ex)184 408 S (pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 -348 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 -360 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677 +420 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 +432 R .677(acilities \(see)-.1 F F1(Pr)3.177 E .677 (ogrammable Completion)-.18 F F0(abo)3.177 E -.15(ve)-.15 G(\)).15 E -(are enabled.)184 372 Q(This option is enabled by def)5 E(ault.)-.1 E F1 -(pr)144 384 Q(omptv)-.18 E(ars)-.1 E F0 1.448 -(If set, prompt strings under)184 396 R 1.448(go parameter e)-.18 F -1.447(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 408 +(are enabled.)184 444 Q(This option is enabled by def)5 E(ault.)-.1 E F1 +(pr)144 456 Q(omptv)-.18 E(ars)-.1 E F0 1.448 +(If set, prompt strings under)184 468 R 1.448(go parameter e)-.18 F +1.447(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 480 S .17(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 (fter being e)-2.67 F .17(xpanded as described in)-.15 F F2(PR)2.671 E (OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G(.).15 E -(This option is enabled by def)184 420 Q(ault.)-.1 E F1 -.18(re)144 432 +(This option is enabled by def)184 492 Q(ault.)-.1 E F1 -.18(re)144 504 S(stricted_shell).18 E F0 1.069 (The shell sets this option if it is started in restricted mode \(see) -184 444 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 456 Q 2.86 +184 516 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 528 Q 2.86 (w\). The)-.25 F -.25(va)2.86 G .36(lue may not be changed.).25 F .36 (This is not reset when the startup \214les are e)5.36 F -.15(xe)-.15 G -(-).15 E(cuted, allo)184 468 Q(wing the startup \214les to disco)-.25 E +(-).15 E(cuted, allo)184 540 Q(wing the startup \214les to disco)-.25 E -.15(ve)-.15 G 2.5(rw).15 G(hether or not a shell is restricted.)-2.5 E -F1(shift_v)144 480 Q(erbose)-.1 E F0 .502(If set, the)184 492 R F1 +F1(shift_v)144 552 Q(erbose)-.1 E F0 .502(If set, the)184 564 R F1 (shift)3.002 E F0 -.2(bu)3.002 G .501 (iltin prints an error message when the shift count e).2 F .501 -(xceeds the number)-.15 F(of positional parameters.)184 504 Q F1(sour) -144 516 Q(cepath)-.18 E F0 .77(If set, the)184 528 R F1(sour)3.27 E(ce) +(xceeds the number)-.15 F(of positional parameters.)184 576 Q F1(sour) +144 588 Q(cepath)-.18 E F0 .77(If set, the)184 600 R F1(sour)3.27 E(ce) -.18 E F0(\()3.27 E F1(.)A F0 3.27(\)b)C .77(uiltin uses the v)-3.47 F .771(alue of)-.25 F F2 -.666(PA)3.271 G(TH)-.189 E F0 .771 (to \214nd the directory containing the)3.021 F -(\214le supplied as an ar)184 540 Q 2.5(gument. This)-.18 F -(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 552 Q F0 -(If set, the)184 564 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E +(\214le supplied as an ar)184 612 Q 2.5(gument. This)-.18 F +(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 624 Q F0 +(If set, the)184 636 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E (xpands backslash-escape sequences by def)-.15 E(ault.)-.1 E F1(suspend) -108 580.8 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 592.8 R +108 652.8 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 664.8 R -.15(xe)-.15 G 1.002(cution of this shell until it recei).15 F -.15(ve) -.25 G 3.501(sa).15 G F2(SIGCONT)A F0 3.501(signal. A)3.251 F 1.001 -(login shell cannot be)3.501 F .022(suspended; the)144 604.8 R F1 +(login shell cannot be)3.501 F .022(suspended; the)144 676.8 R F1 2.522 E F0 .022(option can be used to o)2.522 F -.15(ve)-.15 G .022 (rride this and force the suspension.).15 F .023(The return status is) -5.023 F 2.5(0u)144 616.8 S(nless the shell is a login shell and)-2.5 E +5.023 F 2.5(0u)144 688.8 S(nless the shell is a login shell and)-2.5 E F12.5 E F0(is not supplied, or if job control is not enabled.)2.5 -E F1(test)108 633.6 Q F3 -.2(ex)2.5 G(pr).2 E F1([)108 645.6 Q F3 -.2 +E F1(test)108 705.6 Q F3 -.2(ex)2.5 G(pr).2 E F1([)108 717.6 Q F3 -.2 (ex)2.5 G(pr).2 E F1(])2.5 E F0 .878 -(Return a status of 0 \(true\) or 1 \(f)144 645.6 R .877 +(Return a status of 0 \(true\) or 1 \(f)144 717.6 R .877 (alse\) depending on the e)-.1 F -.25(va)-.25 G .877 -(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 657.6 +(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 729.6 S(pr).2 E F0 5.53(.E).73 G .53 (ach operator and operand must be a separate ar)-5.53 F 3.03 -(gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.08 -(primaries described abo)144 669.6 R 3.38 -.15(ve u)-.15 H(nder).15 E F2 -(CONDITION)5.58 E 3.079(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)A -F1(test)7.579 E F0 3.079(does not accept an)5.579 F(y)-.15 E -(options, nor does it accept and ignore an ar)144 681.6 Q(gument of)-.18 -E F12.5 E F0(as signifying the end of options.)2.5 E .785 -(Expressions may be combined using the follo)144 699.6 R .786 -(wing operators, listed in decreasing order of prece-)-.25 F 3.412 -(dence. The)144 711.6 R -.25(eva)3.412 G .912 -(luation depends on the number of ar).25 F .911(guments; see belo)-.18 F -4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F -(used when there are \214v)144 723.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G -(ore ar)-2.5 E(guments.)-.18 E(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 -E(20)198.725 E 0 Cg EP +(gument. Expressions)-.18 F .53(are composed of the)3.03 F(GNU Bash-4.2) +72 768 Q(2004 Apr 20)148.735 E(20)198.725 E 0 Cg EP %%Page: 21 21 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(!)144 84 Q/F2 10 -/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F0 -.35(Tr)180 84 S(ue if).35 E -F2 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 E(alse.)-.1 E F1(\()144 96 Q F2 -.2 -(ex)2.5 G(pr).2 E F1(\))2.5 E F0 .26(Returns the v)180 96 R .26(alue of) --.25 F F2 -.2(ex)2.76 G(pr).2 E F0 5.26(.T)C .26(his may be used to o) --5.26 F -.15(ve)-.15 G .26(rride the normal precedence of opera-).15 F -(tors.)180 108 Q F2 -.2(ex)144 120 S(pr1).2 E F02.5 E F1(a)A F2 -.2 -(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 132 S(ue if both).35 E F2 -.2(ex)2.5 G -(pr1).2 E F0(and)2.5 E F2 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F2 --.2(ex)144 144 S(pr1).2 E F02.5 E F1(o)A F2 -.2(ex)2.5 G(pr2).2 E F0 --.35(Tr)180 156 S(ue if either).35 E F2 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 -E F2 -.2(ex)2.5 G(pr2).2 E F0(is true.)2.52 E F1(test)144 172.8 Q F0 -(and)2.5 E F1([)2.5 E F0 -.25(eva)2.5 G(luate conditional e).25 E +E(UIL)-.1 E(TINS\(1\))-.92 E 3.08(primaries described abo)144 84 R 3.38 +-.15(ve u)-.15 H(nder).15 E/F1 9/Times-Bold@0 SF(CONDITION)5.58 E 3.079 +(AL EXPRESSIONS)-.18 F/F2 9/Times-Roman@0 SF(.)A/F3 10/Times-Bold@0 SF +(test)7.579 E F0 3.079(does not accept an)5.579 F(y)-.15 E +(options, nor does it accept and ignore an ar)144 96 Q(gument of)-.18 E +F32.5 E F0(as signifying the end of options.)2.5 E .785 +(Expressions may be combined using the follo)144 114 R .786 +(wing operators, listed in decreasing order of prece-)-.25 F 3.412 +(dence. The)144 126 R -.25(eva)3.412 G .912 +(luation depends on the number of ar).25 F .911(guments; see belo)-.18 F +4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F +(used when there are \214v)144 138 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G(ore ar) +-2.5 E(guments.)-.18 E F3(!)144 150 Q/F4 10/Times-Italic@0 SF -.2(ex)2.5 +G(pr).2 E F0 -.35(Tr)180 150 S(ue if).35 E F4 -.2(ex)2.5 G(pr).2 E F0 +(is f)3.23 E(alse.)-.1 E F3(\()144 162 Q F4 -.2(ex)2.5 G(pr).2 E F3(\)) +2.5 E F0 .26(Returns the v)180 162 R .26(alue of)-.25 F F4 -.2(ex)2.76 G +(pr).2 E F0 5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G +.26(rride the normal precedence of opera-).15 F(tors.)180 174 Q F4 -.2 +(ex)144 186 S(pr1).2 E F02.5 E F3(a)A F4 -.2(ex)2.5 G(pr2).2 E F0 +-.35(Tr)180 198 S(ue if both).35 E F4 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E +F4 -.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F4 -.2(ex)144 210 S(pr1).2 +E F02.5 E F3(o)A F4 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 222 S +(ue if either).35 E F4 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F4 -.2(ex)2.5 G +(pr2).2 E F0(is true.)2.52 E F3(test)144 238.8 Q F0(and)2.5 E F3([)2.5 E +F0 -.25(eva)2.5 G(luate conditional e).25 E (xpressions using a set of rules based on the number of ar)-.15 E -(guments.)-.18 E 2.5(0a)144 190.8 S -.18(rg)-2.5 G(uments).18 E(The e) -180 202.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 214.8 S -.18 -(rg)-2.5 G(ument).18 E(The e)180 226.8 Q +(guments.)-.18 E 2.5(0a)144 256.8 S -.18(rg)-2.5 G(uments).18 E(The e) +180 268.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 280.8 S -.18 +(rg)-2.5 G(ument).18 E(The e)180 292.8 Q (xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 238.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) -180 250.8 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 +E 2.5(2a)144 304.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) +180 316.8 R .37(gument is)-.18 F F3(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 F .37(xpression is true if and only if the second ar)-.15 F .37 -(gument is null.)-.18 F .379(If the \214rst ar)180 262.8 R .38 +(gument is null.)-.18 F .379(If the \214rst ar)180 328.8 R .38 (gument is one of the unary conditional operators listed abo)-.18 F .68 --.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(CONDI-)2.88 E(TION)180 -274.8 Q .553(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(,)A F0 .552 -(the e)2.802 F .552(xpression is true if the unary test is true.)-.15 F -.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 286.8 Q +-.15(ve u)-.15 H(nder).15 E F1(CONDI-)2.88 E(TION)180 340.8 Q .553 +(AL EXPRESSIONS)-.18 F F2(,)A F0 .552(the e)2.802 F .552 +(xpression is true if the unary test is true.)-.15 F .552 +(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 352.8 Q (alid unary conditional operator)-.25 E 2.5(,t)-.4 G(he e)-2.5 E -(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 298.8 S -.18(rg)-2.5 G -(uments).18 E .236(The follo)180 310.8 R .236 +(xpression is f)-.15 E(alse.)-.1 E 2.5(3a)144 364.8 S -.18(rg)-2.5 G +(uments).18 E .236(The follo)180 376.8 R .236 (wing conditions are applied in the order listed.)-.25 F .236 (If the second ar)5.236 F .236(gument is one of)-.18 F .855 -(the binary conditional operators listed abo)180 322.8 R 1.155 -.15 -(ve u)-.15 H(nder).15 E F3(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F -F4(,)A F0(the)3.104 E .578(result of the e)180 334.8 R .578(xpression i\ +(the binary conditional operators listed abo)180 388.8 R 1.155 -.15 +(ve u)-.15 H(nder).15 E F1(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F +F2(,)A F0(the)3.104 E .578(result of the e)180 400.8 R .578(xpression i\ s the result of the binary test using the \214rst and third ar)-.15 F -(guments)-.18 E 1.333(as operands.)180 346.8 R(The)6.333 E F13.833 -E F0(and)3.833 E F13.832 E F0 1.332 +(guments)-.18 E 1.333(as operands.)180 412.8 R(The)6.333 E F33.833 +E F0(and)3.833 E F33.832 E F0 1.332 (operators are considered binary operators when there are)3.832 F .558 -(three ar)180 358.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 -F .558(gument is)-.18 F F1(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F +(three ar)180 424.8 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 +F .558(gument is)-.18 F F3(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F .558(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F (o-ar)-.1 E(gument)-.18 E .521(test using the second and third ar)180 -370.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .52 -(gument is e)-.18 F(xactly)-.15 E F1(\()3.02 E F0 .52(and the third)3.02 -F(ar)180 382.8 Q .485(gument is e)-.18 F(xactly)-.15 E F1(\))2.985 E F0 +436.8 R 3.021(guments. If)-.18 F .521(the \214rst ar)3.021 F .52 +(gument is e)-.18 F(xactly)-.15 E F3(\()3.02 E F0 .52(and the third)3.02 +F(ar)180 448.8 Q .485(gument is e)-.18 F(xactly)-.15 E F3(\))2.985 E F0 2.985(,t)C .485(he result is the one-ar)-2.985 F .485 (gument test of the second ar)-.18 F 2.985(gument. Other)-.18 F(-)-.2 E -(wise, the e)180 394.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 -406.8 S -.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 418.8 R -.385(gument is)-.18 F F1(!)2.885 E F0 2.885(,t)C .385 +(wise, the e)180 460.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 +472.8 S -.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 484.8 R +.385(gument is)-.18 F F3(!)2.885 E F0 2.885(,t)C .385 (he result is the ne)-2.885 F -.05(ga)-.15 G .384(tion of the three-ar) .05 F .384(gument e)-.18 F .384(xpression com-)-.15 F 1.647 -(posed of the remaining ar)180 430.8 R 4.147(guments. Otherwise,)-.18 F +(posed of the remaining ar)180 496.8 R 4.147(guments. Otherwise,)-.18 F 1.647(the e)4.147 F 1.648(xpression is parsed and e)-.15 F -.25(va)-.25 G(luated).25 E(according to precedence using the rules listed abo)180 -442.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 454.8 S 2.5(rm)-2.5 G(ore ar) --2.5 E(guments)-.18 E 1.635(The e)180 466.8 R 1.635 +508.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 520.8 S 2.5(rm)-2.5 G(ore ar) +-2.5 E(guments)-.18 E 1.635(The e)180 532.8 R 1.635 (xpression is parsed and e)-.15 F -.25(va)-.25 G 1.635 (luated according to precedence using the rules listed).25 F(abo)180 -478.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 496.8 Q F1(test)2.5 E -F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 E F1 +544.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 562.8 Q F3(test)2.5 E +F0(or)2.5 E F3([)2.5 E F0 2.5(,t)C(he)-2.5 E F3(<)2.5 E F0(and)2.5 E F3 (>)2.5 E F0(operators sort le)2.5 E -(xicographically using ASCII ordering.)-.15 E F1(times)108 513.6 Q F0 +(xicographically using ASCII ordering.)-.15 E F3(times)108 579.6 Q F0 1.229(Print the accumulated user and system times for the shell and for\ - processes run from the shell.)144 513.6 R(The return status is 0.)144 -525.6 Q F1(trap)108 542.4 Q F0([)2.5 E F1(\255lp)A F0 2.5(][)C([)-2.5 E -F2(ar)A(g)-.37 E F0(])A F2(sigspec)2.5 E F0(...])2.5 E .703(The command) -144 554.4 R F2(ar)3.533 E(g)-.37 E F0 .703(is to be read and e)3.423 F + processes run from the shell.)144 579.6 R(The return status is 0.)144 +591.6 Q F3(trap)108 608.4 Q F0([)2.5 E F3(\255lp)A F0 2.5(][)C([)-2.5 E +F4(ar)A(g)-.37 E F0(])A F4(sigspec)2.5 E F0(...])2.5 E .703(The command) +144 620.4 R F4(ar)3.533 E(g)-.37 E F0 .703(is to be read and e)3.423 F -.15(xe)-.15 G .702(cuted when the shell recei).15 F -.15(ve)-.25 G -3.202(ss).15 G(ignal\(s\))-3.202 E F2(sigspec)3.202 E F0 5.702(.I).31 G -(f)-5.702 E F2(ar)3.532 E(g)-.37 E F0(is)3.422 E .608 -(absent \(and there is a single)144 566.4 R F2(sigspec)3.108 E F0 3.108 -(\)o)C(r)-3.108 E F13.108 E F0 3.108(,e)C .608 +3.202(ss).15 G(ignal\(s\))-3.202 E F4(sigspec)3.202 E F0 5.702(.I).31 G +(f)-5.702 E F4(ar)3.532 E(g)-.37 E F0(is)3.422 E .608 +(absent \(and there is a single)144 632.4 R F4(sigspec)3.108 E F0 3.108 +(\)o)C(r)-3.108 E F33.108 E F0 3.108(,e)C .608 (ach speci\214ed signal is reset to its original disposition)-3.108 F -.659(\(the v)144 578.4 R .659(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658 -(is the null string the signal speci\214ed by each)3.378 F F2(sigspec) -144.34 590.4 Q F0 .58(is ignored by the shell and by the commands it in) -3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E -F0 .581(is not present and)3.301 F F13.081 E F0(has)3.081 E 1.215 -(been supplied, then the trap commands associated with each)144 602.4 R -F2(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 -F(gu-)-.18 E .86(ments are supplied or if only)144 614.4 R F13.36 -E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86 +.659(\(the v)144 644.4 R .659(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F4(ar)3.488 E(g)-.37 E F0 .658 +(is the null string the signal speci\214ed by each)3.378 F F4(sigspec) +144.34 656.4 Q F0 .58(is ignored by the shell and by the commands it in) +3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F4(ar)3.411 E(g)-.37 E +F0 .581(is not present and)3.301 F F33.081 E F0(has)3.081 E 1.215 +(been supplied, then the trap commands associated with each)144 668.4 R +F4(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 +F(gu-)-.18 E .86(ments are supplied or if only)144 680.4 R F33.36 +E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F3(trap)3.36 E F0 .86 (prints the list of commands associated with each)3.36 F 2.83 -(signal. The)144 626.4 R F12.83 E F0 .33(option causes the shell \ +(signal. The)144 692.4 R F32.83 E F0 .33(option causes the shell \ to print a list of signal names and their corresponding num-)2.83 F 4.31 -(bers. Each)144 638.4 R F2(sigspec)4.65 E F0 1.811 -(is either a signal name de\214ned in <)4.62 F F2(signal.h)A F0 1.811 +(bers. Each)144 704.4 R F4(sigspec)4.65 E F0 1.811 +(is either a signal name de\214ned in <)4.62 F F4(signal.h)A F0 1.811 (>, or a signal number)B 6.811(.S)-.55 G(ignal)-6.811 E -(names are case insensiti)144 650.4 Q .3 -.15(ve a)-.25 H(nd the).15 E -F3(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.649(If a)144 668.4 R F2 -(sigspec)4.489 E F0(is)4.459 E F3(EXIT)4.149 E F0 1.649 -(\(0\) the command)3.899 F F2(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F --.15(xe)-.15 G 1.649(cuted on e).15 F 1.648(xit from the shell.)-.15 F -1.648(If a)6.648 F F2(sigspec)4.488 E F0(is)4.458 E F3(DEB)144 680.4 Q -(UG)-.09 E F4(,)A F0 1.167(the command)3.417 F F2(ar)3.997 E(g)-.37 E F0 -1.167(is e)3.887 F -.15(xe)-.15 G 1.167(cuted before e).15 F -.15(ve) --.25 G(ry).15 E F2 1.168(simple command)3.667 F F0(,)A F2(for)3.668 E F0 -(command,)3.668 E F2(case)3.668 E F0(com-)3.668 E(mand,)144 692.4 Q F2 -(select)2.647 E F0 .147(command, e)2.647 F -.15(ve)-.25 G .147 -(ry arithmetic).15 F F2(for)2.647 E F0 .146 -(command, and before the \214rst command e)2.647 F -.15(xe)-.15 G .146 -(cutes in a).15 F .145(shell function \(see)144 704.4 R F3 .145 -(SHELL GRAMMAR)2.645 F F0(abo)2.395 E -.15(ve)-.15 G 2.646(\). Refer).15 -F .146(to the description of the)2.646 F F1(extdeb)2.646 E(ug)-.2 E F0 -.146(option to)2.646 F(the)144 716.4 Q F1(shopt)3.201 E F0 -.2(bu)3.201 -G .7(iltin for details of its ef).2 F .7(fect on the)-.25 F F1(DEB)3.2 E -(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F2(sigspec)3.54 E F0(is)3.51 E -F3(RETURN)3.2 E F4(,)A F0 .7(the com-)2.95 F(mand)144 728.4 Q F2(ar) -3.473 E(g)-.37 E F0 .643(is e)3.363 F -.15(xe)-.15 G .643 -(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G -.644(cuted with the).15 F F1(.)3.144 E F0(or)3.144 E F1(sour)3.144 E(ce) --.18 E F0 -.2(bu)3.144 G(iltins).2 E(GNU Bash-4.2)72 768 Q(2004 Apr 20) -148.735 E(21)198.725 E 0 Cg EP +(names are case insensiti)144 716.4 Q .3 -.15(ve a)-.25 H(nd the).15 E +F1(SIG)2.5 E F0(pre\214x is optional.)2.25 E(GNU Bash-4.2)72 768 Q +(2004 Apr 20)148.735 E(21)198.725 E 0 Cg EP %%Page: 22 22 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E(\214nishes e)144 84 Q -.15(xe)-.15 G -(cuting.).15 E .522(If a)144 102 R/F1 10/Times-Italic@0 SF(sigspec)3.362 -E F0(is)3.332 E/F2 9/Times-Bold@0 SF(ERR)3.022 E/F3 9/Times-Roman@0 SF -(,)A F0 .522(the command)2.772 F F1(ar)3.352 E(g)-.37 E F0 .522(is e) -3.242 F -.15(xe)-.15 G .522(cuted whene).15 F -.15(ve)-.25 G 3.022(raap) -.15 G .521(ipeline \(which may consist of a)-3.022 F .185(single simple\ - command\), a list, or a compound command returns a non\255zero e)144 -114 R .185(xit status, subject to)-.15 F .452(the follo)144 126 R .452 -(wing conditions.)-.25 F(The)5.452 E F2(ERR)2.952 E F0 .451 +E(UIL)-.1 E(TINS\(1\))-.92 E 1.649(If a)144 84 R/F1 10/Times-Italic@0 SF +(sigspec)4.489 E F0(is)4.459 E/F2 9/Times-Bold@0 SF(EXIT)4.149 E F0 +1.649(\(0\) the command)3.899 F F1(ar)4.479 E(g)-.37 E F0 1.649(is e) +4.369 F -.15(xe)-.15 G 1.649(cuted on e).15 F 1.648(xit from the shell.) +-.15 F 1.648(If a)6.648 F F1(sigspec)4.488 E F0(is)4.458 E F2(DEB)144 96 +Q(UG)-.09 E/F3 9/Times-Roman@0 SF(,)A F0 1.167(the command)3.417 F F1 +(ar)3.997 E(g)-.37 E F0 1.167(is e)3.887 F -.15(xe)-.15 G 1.167 +(cuted before e).15 F -.15(ve)-.25 G(ry).15 E F1 1.168(simple command) +3.667 F F0(,)A F1(for)3.668 E F0(command,)3.668 E F1(case)3.668 E F0 +(com-)3.668 E(mand,)144 108 Q F1(select)2.647 E F0 .147(command, e)2.647 +F -.15(ve)-.25 G .147(ry arithmetic).15 F F1(for)2.647 E F0 .146 +(command, and before the \214rst command e)2.647 F -.15(xe)-.15 G .146 +(cutes in a).15 F .145(shell function \(see)144 120 R F2 .145 +(SHELL GRAMMAR)2.645 F F0(abo)2.395 E -.15(ve)-.15 G 2.646(\). Refer).15 +F .146(to the description of the)2.646 F/F4 10/Times-Bold@0 SF(extdeb) +2.646 E(ug)-.2 E F0 .146(option to)2.646 F(the)144 132 Q F4(shopt)3.201 +E F0 -.2(bu)3.201 G .7(iltin for details of its ef).2 F .7(fect on the) +-.25 F F4(DEB)3.2 E(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F1(sigspec) +3.54 E F0(is)3.51 E F2(RETURN)3.2 E F3(,)A F0 .7(the com-)2.95 F(mand) +144 144 Q F1(ar)3.473 E(g)-.37 E F0 .643(is e)3.363 F -.15(xe)-.15 G +.643(cuted each time a shell function or a script e).15 F -.15(xe)-.15 G +.644(cuted with the).15 F F4(.)3.144 E F0(or)3.144 E F4(sour)3.144 E(ce) +-.18 E F0 -.2(bu)3.144 G(iltins).2 E(\214nishes e)144 156 Q -.15(xe)-.15 +G(cuting.).15 E .961(If a)144 174 R F1(sigspec)3.801 E F0(is)3.771 E F2 +(ERR)3.461 E F3(,)A F0 .961(the command)3.211 F F1(ar)3.791 E(g)-.37 E +F0 .961(is e)3.681 F -.15(xe)-.15 G .961(cuted whene).15 F -.15(ve)-.25 +G 3.461(ra).15 G .96(pipeline \(which may consist of a)-.001 F .185(sin\ +gle simple command\), a list, or a compound command returns a non\255ze\ +ro e)144 186 R .185(xit status, subject to)-.15 F .452(the follo)144 198 +R .452(wing conditions.)-.25 F(The)5.452 E F2(ERR)2.952 E F0 .451 (trap is not e)2.701 F -.15(xe)-.15 G .451(cuted if the f).15 F .451 (ailed command is part of the com-)-.1 F .387 -(mand list immediately follo)144 138 R .387(wing a)-.25 F/F4 10 -/Times-Bold@0 SF(while)2.887 E F0(or)2.887 E F4(until)2.888 E F0 -.1(ke) -2.888 G(yw)-.05 E .388(ord, part of the test in an)-.1 F F1(if)2.898 E -F0 .388(statement, part)4.848 F .778(of a command e)144 150 R -.15(xe) --.15 G .778(cuted in a).15 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E -F0 .778(list e)3.278 F .778(xcept the command follo)-.15 F .778 +(mand list immediately follo)144 210 R .387(wing a)-.25 F F4(while)2.887 +E F0(or)2.887 E F4(until)2.888 E F0 -.1(ke)2.888 G(yw)-.05 E .388 +(ord, part of the test in an)-.1 F F1(if)2.898 E F0 .388 +(statement, part)4.848 F .778(of a command e)144 222 R -.15(xe)-.15 G +.778(cuted in a).15 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.278 E F0 .778 +(list e)3.278 F .778(xcept the command follo)-.15 F .778 (wing the \214nal)-.25 F F4(&&)3.278 E F0(or)3.278 E F4(||)3.277 E F0 -3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 162 R 1.28 +3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 234 R 1.28 (ut the last, or if the command')-.2 F 3.78(sr)-.55 G 1.28(eturn v)-3.78 F 1.28(alue is being in)-.25 F -.15(ve)-.4 G 1.28(rted using).15 F F4(!) -3.78 E F0(.)A(These are the same conditions obe)144 174 Q(yed by the) +3.78 E F0(.)A(These are the same conditions obe)144 246 Q(yed by the) -.15 E F4(err)2.5 E(exit)-.18 E F0(\()2.5 E F4A F0 2.5(\)o)C (ption.)-2.5 E 1.095 (Signals ignored upon entry to the shell cannot be trapped or reset.)144 -192 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 -(being ignored are reset to their original v)144 204 R .662 +264 R -.35(Tr)6.095 G 1.095(apped signals that are not).35 F .662 +(being ignored are reset to their original v)144 276 R .662 (alues in a subshell or subshell en)-.25 F .662(vironment when one is) --.4 F 2.5(created. The)144 216 R(return status is f)2.5 E(alse if an)-.1 +-.4 F 2.5(created. The)144 288 R(return status is f)2.5 E(alse if an)-.1 E(y)-.15 E F1(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G (lid; otherwise).25 E F4(trap)2.5 E F0(returns true.)2.5 E F4(type)108 -232.8 Q F0([)2.5 E F4(\255aftpP)A F0(])A F1(name)2.5 E F0([)2.5 E F1 -(name)A F0(...])2.5 E -.4(Wi)144 244.8 S .174 +304.8 Q F0([)2.5 E F4(\255aftpP)A F0(])A F1(name)2.5 E F0([)2.5 E F1 +(name)A F0(...])2.5 E -.4(Wi)144 316.8 S .174 (th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F1(name) 3.034 E F0 -.1(wo)2.854 G .173 (uld be interpreted if used as a command name.).1 F .173(If the)5.173 F -F4144 256.8 Q F0 .842(option is used,)3.342 F F4(type)3.342 E F0 +F4144 328.8 Q F0 .842(option is used,)3.342 F F4(type)3.342 E F0 .843(prints a string which is one of)3.343 F F1(alias)3.343 E F0(,).27 E F1 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F1(function)3.343 E F0 (,).24 E F1 -.2(bu)3.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F1 -(\214le)5.253 E F0(if)3.523 E F1(name)144.36 268.8 Q F0 .087 +(\214le)5.253 E F0(if)3.523 E F1(name)144.36 340.8 Q F0 .087 (is an alias, shell reserv)2.767 F .087(ed w)-.15 F .087 (ord, function, b)-.1 F .086(uiltin, or disk \214le, respecti)-.2 F -.15 (ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F1 (name)2.946 E F0 .086(is not)2.766 F .118 -(found, then nothing is printed, and an e)144 280.8 R .118 +(found, then nothing is printed, and an e)144 352.8 R .118 (xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F F42.619 E F0 .119(option is used,)2.619 F F4(type)2.619 E F0 .855 -(either returns the name of the disk \214le that w)144 292.8 R .855 +(either returns the name of the disk \214le that w)144 364.8 R .855 (ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F F1(name)3.715 E F0 .855(were speci\214ed as a com-)3.535 F .64(mand name, or nothing if)144 -304.8 R/F5 10/Courier@0 SF .64(type -t name)3.14 F F0 -.1(wo)3.14 G .641 +376.8 R/F5 10/Courier@0 SF .64(type -t name)3.14 F F0 -.1(wo)3.14 G .641 (uld not return).1 F F1(\214le)3.141 E F0 5.641(.T).18 G(he)-5.641 E F4 3.141 E F0 .641(option forces a)3.141 F F2 -.666(PA)3.141 G(TH) --.189 E F0 .113(search for each)144 316.8 R F1(name)2.613 E F0 2.613(,e) +-.189 E F0 .113(search for each)144 388.8 R F1(name)2.613 E F0 2.613(,e) C -.15(ve)-2.863 G 2.613(ni).15 G(f)-2.613 E F5 .113(type -t name)2.613 F F0 -.1(wo)2.613 G .113(uld not return).1 F F1(\214le)2.613 E F0 5.113 (.I).18 G 2.613(fa)-5.113 G .112(command is hashed,)-.001 F F4 -2.612 E F0(and)144 328.8 Q F43.23 E F0 .73(print the hashed v)3.23 +2.612 E F0(and)144 400.8 Q F43.23 E F0 .73(print the hashed v)3.23 F .731 (alue, which is not necessarily the \214le that appears \214rst in)-.25 F F2 -.666(PA)3.231 G(TH)-.189 E F3(.)A F0 .731(If the)5.231 F F4 -144 340.8 Q F0 1.749(option is used,)4.249 F F4(type)4.248 E F0 1.748 +144 412.8 Q F0 1.749(option is used,)4.249 F F4(type)4.248 E F0 1.748 (prints all of the places that contain an e)4.248 F -.15(xe)-.15 G 1.748 (cutable named).15 F F1(name)4.248 E F0 6.748(.T).18 G(his)-6.748 E .744 -(includes aliases and functions, if and only if the)144 352.8 R F4 +(includes aliases and functions, if and only if the)144 424.8 R F4 3.244 E F0 .744(option is not also used.)3.244 F .744 (The table of hashed)5.744 F 1.223(commands is not consulted when using) -144 364.8 R F43.723 E F0 6.223(.T)C(he)-6.223 E F43.723 E F0 +144 436.8 R F43.723 E F0 6.223(.T)C(he)-6.223 E F43.723 E F0 1.223(option suppresses shell function lookup, as)3.723 F .325(with the) -144 376.8 R F4(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F4(type) +144 448.8 R F4(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F4(type) 5.325 E F0 .325(returns true if all of the ar)2.825 F .326 (guments are found, f)-.18 F .326(alse if an)-.1 F 2.826(ya)-.15 G .326 -(re not)-2.826 F(found.)144 388.8 Q F4(ulimit)108 405.6 Q F0([)2.5 E F4 +(re not)-2.826 F(found.)144 460.8 Q F4(ulimit)108 477.6 Q F0([)2.5 E F4 (\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F1(limit)A F0(]])A(Pro)144 -417.6 Q .244(vides control o)-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244 +489.6 Q .244(vides control o)-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244 (he resources a)-2.744 F -.25(va)-.2 G .244 (ilable to the shell and to processes started by it, on systems).25 F -.943(that allo)144 429.6 R 3.443(ws)-.25 G .943(uch control.)-3.443 F +.943(that allo)144 501.6 R 3.443(ws)-.25 G .943(uch control.)-3.443 F (The)5.943 E F43.443 E F0(and)3.443 E F43.444 E F0 .944 (options specify that the hard or soft limit is set for the)3.444 F(gi) -144 441.6 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 +144 513.6 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 (hard limit cannot be increased by a non-root user once it is set; a so\ -ft limit may)2.709 F .425(be increased up to the v)144 453.6 R .425 +ft limit may)2.709 F .425(be increased up to the v)144 525.6 R .425 (alue of the hard limit.)-.25 F .426(If neither)5.425 F F42.926 E F0(nor)2.926 E F42.926 E F0 .426 (is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144 -465.6 R .139(The v)5.139 F .139(alue of)-.25 F F1(limit)2.729 E F0 .139 +537.6 R .139(The v)5.139 F .139(alue of)-.25 F F1(limit)2.729 E F0 .139 (can be a number in the unit speci\214ed for the resource or one)3.319 F -.741(of the special v)144 477.6 R(alues)-.25 E F4(hard)3.241 E F0(,)A F4 +.741(of the special v)144 549.6 R(alues)-.25 E F4(hard)3.241 E F0(,)A F4 (soft)3.241 E F0 3.241(,o)C(r)-3.241 E F4(unlimited)3.241 E F0 3.241(,w) C .741(hich stand for the current hard limit, the current)-3.241 F .78 -(soft limit, and no limit, respecti)144 489.6 R -.15(ve)-.25 G(ly).15 E +(soft limit, and no limit, respecti)144 561.6 R -.15(ve)-.25 G(ly).15 E 5.78(.I)-.65 G(f)-5.78 E F1(limit)3.37 E F0 .78 (is omitted, the current v)3.96 F .78(alue of the soft limit of the)-.25 -F .498(resource is printed, unless the)144 501.6 R F42.999 E F0 +F .498(resource is printed, unless the)144 573.6 R F42.999 E F0 .499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .499 (more than one resource is speci\214ed, the)2.999 F -(limit name and unit are printed before the v)144 513.6 Q 2.5 +(limit name and unit are printed before the v)144 585.6 Q 2.5 (alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F4 -144 525.6 Q F0(All current limits are reported)180 525.6 Q F4 -144 537.6 Q F0(The maximum sock)180 537.6 Q(et b)-.1 E(uf)-.2 E -(fer size)-.25 E F4144 549.6 Q F0 -(The maximum size of core \214les created)180 549.6 Q F4144 561.6 -Q F0(The maximum size of a process')180 561.6 Q 2.5(sd)-.55 G(ata se) --2.5 E(gment)-.15 E F4144 573.6 Q F0 -(The maximum scheduling priority \("nice"\))180 573.6 Q F4144 -585.6 Q F0 +144 597.6 Q F0(All current limits are reported)180 597.6 Q F4 +144 609.6 Q F0(The maximum sock)180 609.6 Q(et b)-.1 E(uf)-.2 E +(fer size)-.25 E F4144 621.6 Q F0 +(The maximum size of core \214les created)180 621.6 Q F4144 633.6 +Q F0(The maximum size of a process')180 633.6 Q 2.5(sd)-.55 G(ata se) +-2.5 E(gment)-.15 E F4144 645.6 Q F0 +(The maximum scheduling priority \("nice"\))180 645.6 Q F4144 +657.6 Q F0 (The maximum size of \214les written by the shell and its children)180 -585.6 Q F4144 597.6 Q F0(The maximum number of pending signals)180 -597.6 Q F4144 609.6 Q F0 -(The maximum number of kqueues that may be allocated)180 609.6 Q F4 -144 621.6 Q F0(The maximum size that may be lock)180 621.6 Q -(ed into memory)-.1 E F4144 633.6 Q F0 -(The maximum resident set size \(man)180 633.6 Q 2.5(ys)-.15 G -(ystems do not honor this limit\))-2.5 E F4144 645.6 Q F0 .791(Th\ +657.6 Q F4144 669.6 Q F0(The maximum number of pending signals)180 +669.6 Q F4144 681.6 Q F0 +(The maximum number of kqueues that may be allocated)180 681.6 Q F4 +144 693.6 Q F0(The maximum size that may be lock)180 693.6 Q +(ed into memory)-.1 E F4144 705.6 Q F0 +(The maximum resident set size \(man)180 705.6 Q 2.5(ys)-.15 G +(ystems do not honor this limit\))-2.5 E F4144 717.6 Q F0 .791(Th\ e maximum number of open \214le descriptors \(most systems do not allo) -180 645.6 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F -(be set\))180 657.6 Q F4144 669.6 Q F0 -(The pipe size in 512-byte blocks \(this may not be set\))180 669.6 Q F4 -144 681.6 Q F0 -(The maximum number of bytes in POSIX message queues)180 681.6 Q F4 -144 693.6 Q F0(The maximum real-time scheduling priority)180 693.6 -Q F4144 705.6 Q F0(The maximum stack size)180 705.6 Q F4144 -717.6 Q F0(The maximum amount of cpu time in seconds)180 717.6 Q -(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(22)198.725 E 0 Cg EP +180 717.6 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F +(be set\))180 729.6 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(22) +198.725 E 0 Cg EP %%Page: 23 23 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0 -(The maximum number of processes a)180 84 Q -.25(va)-.2 G -(ilable to a single user).25 E F1144 96 Q F0 .47 -(The maximum amount of virtual memory a)180 96 R -.25(va)-.2 G .47 -(ilable to the shell and, on some systems, to).25 F(its children)180 108 -Q F1144 120 Q F0(The maximum number of \214le locks)180 120 Q F1 -144 132 Q F0(The maximum number of pseudoterminals)180 132 Q F1 -144 144 Q F0(The maximum number of threads)180 144 Q(If)144 160.8 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))180 84 Q F1 +144 96 Q F0(The maximum number of bytes in POSIX message queues) +180 96 Q F1144 108 Q F0(The maximum real-time scheduling priority) +180 108 Q F1144 120 Q F0(The maximum stack size)180 120 Q F1 +144 132 Q F0(The maximum amount of cpu time in seconds)180 132 Q F1 +144 144 Q F0(The maximum number of processes a)180 144 Q -.25(va) +-.2 G(ilable to a single user).25 E F1144 156 Q F0 .47 +(The maximum amount of virtual memory a)180 156 R -.25(va)-.2 G .47 +(ilable to the shell and, on some systems, to).25 F(its children)180 168 +Q F1144 180 Q F0(The maximum number of \214le locks)180 180 Q F1 +144 192 Q F0(The maximum number of pseudoterminals)180 192 Q F1 +144 204 Q F0(The maximum number of threads)180 204 Q(If)144 220.8 Q/F2 10/Times-Italic@0 SF(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve) -.25 G .468(n, and the).15 F F12.968 E F0 .468 (option is not used,)2.968 F F2(limit)2.968 E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468(alue of the speci\214ed resource.)-3.218 F(If)5.468 -E .044(no option is gi)144 172.8 R -.15(ve)-.25 G .044(n, then).15 F F1 +E .044(no option is gi)144 232.8 R -.15(ve)-.25 G .044(n, then).15 F F1 2.544 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 (lues are in 1024-byte increments, e)1.11 F .045(xcept for)-.15 F F1 2.545 E F0 2.545(,w)C .045(hich is)-2.545 F 1.589(in seconds;)144 -184.8 R F14.089 E F0 4.089(,w)C 1.589 +244.8 R F14.089 E F0 4.089(,w)C 1.589 (hich is in units of 512-byte blocks;)-4.089 F F14.089 E F0(,)A F1 4.089 E F0(,)A F14.089 E F0(,)A F14.089 E F0(,)A F1 4.089 E F0 4.089(,a)C(nd)-4.089 E F14.089 E F0 4.088(,w)C -1.588(hich are)-4.088 F 1.438(unscaled v)144 196.8 R 1.438 +1.588(hich are)-4.088 F 1.438(unscaled v)144 256.8 R 1.438 (alues; and, when in Posix mode,)-.25 F F13.939 E F0(and)3.939 E F13.939 E F0 3.939(,w)C 1.439(hich are in 512-byte increments.) --3.939 F(The)6.439 E .404(return status is 0 unless an in)144 208.8 R +-3.939 F(The)6.439 E .404(return status is 0 unless an in)144 268.8 R -.25(va)-.4 G .404(lid option or ar).25 F .404 (gument is supplied, or an error occurs while setting)-.18 F 2.5(an)144 -220.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 237.6 Q F0([)2.5 E +280.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 297.6 Q F0([)2.5 E F1A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(mode)-2.5 E F0(])A -.2(The user \214le-creation mask is set to)144 249.6 R F2(mode)2.7 E F0 +.2(The user \214le-creation mask is set to)144 309.6 R F2(mode)2.7 E F0 5.2(.I).18 G(f)-5.2 E F2(mode)3.08 E F0(be)2.88 E .2 (gins with a digit, it is interpreted as an octal)-.15 F .066(number; o\ therwise it is interpreted as a symbolic mode mask similar to that acce\ -pted by)144 261.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -273.6 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 +pted by)144 321.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +333.6 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 (alue of the mask is printed.)-.25 F(The)5.382 E F12.882 E F0 .382 (option causes the mask to be)2.882 F .547 -(printed in symbolic form; the def)144 285.6 R .547 +(printed in symbolic form; the def)144 345.6 R .547 (ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G (he)-3.047 E F13.047 E F0 .547(option is supplied, and)3.047 F F2 -(mode)144.38 297.6 Q F0 .551 +(mode)144.38 357.6 Q F0 .551 (is omitted, the output is in a form that may be reused as input.)3.231 -F .552(The return status is 0 if the)5.552 F(mode w)144 309.6 Q +F .552(The return status is 0 if the)5.552 F(mode w)144 369.6 Q (as successfully changed or if no)-.1 E F2(mode)2.5 E F0(ar)2.5 E (gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E F1 -(unalias)108 326.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 -(...])2.5 E(Remo)144 338.4 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) +(unalias)108 386.4 Q F0<5bad>2.5 E F1(a)A F0 2.5(][)C F2(name)-2.5 E F0 +(...])2.5 E(Remo)144 398.4 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) 4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 F(If)6.655 E F14.155 E F0 1.655(is supplied, all alias de\214nitions are)4.155 -F(remo)144 350.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E +F(remo)144 410.4 Q -.15(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E (alue is true unless a supplied)-.25 E F2(name)2.86 E F0 -(is not a de\214ned alias.)2.68 E F1(unset)108 367.2 Q F0<5bad>2.5 E F1 +(is not a de\214ned alias.)2.68 E F1(unset)108 427.2 Q F0<5bad>2.5 E F1 (fv)A F0 2.5(][)C-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...]) -2.5 E -.15(Fo)144 379.2 S 3.827(re).15 G(ach)-3.827 E F2(name)3.827 E F0 +2.5 E -.15(Fo)144 439.2 S 3.827(re).15 G(ach)-3.827 E F2(name)3.827 E F0 3.827(,r).18 G(emo)-3.827 E 1.627 -.15(ve t)-.15 H 1.327 (he corresponding v).15 F 1.327(ariable or function.)-.25 F 1.327 (If the)6.327 F F13.828 E F0 1.328(option is gi)3.828 F -.15(ve) --.25 G 1.328(n, each).15 F F2(name)144.36 391.2 Q F0 1.551 +-.25 G 1.328(n, each).15 F F2(name)144.36 451.2 Q F0 1.551 (refers to a shell v)4.231 F 1.551(ariable, and that v)-.25 F 1.551 (ariable is remo)-.25 F -.15(ve)-.15 G 4.05(d. Read-only).15 F -.25(va) -4.05 G 1.55(riables may not be).25 F 4.641(unset. If)144 403.2 R F1 +4.05 G 1.55(riables may not be).25 F 4.641(unset. If)144 463.2 R F1 4.641 E F0 2.141(is speci\214ed, each)4.641 F F2(name)5.001 E F0 2.141(refers to a shell function, and the function de\214nition is)4.821 -F(remo)144 415.2 Q -.15(ve)-.15 G 2.538(d. If).15 F(the)2.537 E F1 +F(remo)144 475.2 Q -.15(ve)-.15 G 2.538(d. If).15 F(the)2.537 E F1 2.537 E F0 .037(option is supplied, and)2.537 F F2(name)2.537 E F0 .037 (is a v)2.537 F .037(ariable with the)-.25 F F2(namer)2.537 E(ef)-.37 E F0(attrib)2.537 E(ute,)-.2 E F2(name)2.537 E F0(will)2.537 E .492 -(be unset rather than the v)144 427.2 R .492(ariable it references.)-.25 +(be unset rather than the v)144 487.2 R .492(ariable it references.)-.25 F F15.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F1 2.992 E F0 .492(option is supplied.)2.992 F .493(If no)5.493 F -.221(options are supplied, each)144 439.2 R F2(name)2.721 E F0 .221 +.221(options are supplied, each)144 499.2 R F2(name)2.721 E F0 .221 (refers to a v)2.721 F .22(ariable; if there is no v)-.25 F .22 (ariable by that name, an)-.25 F 2.72(yf)-.15 G(unc-)-2.72 E 1.188 -(tion with that name is unset.)144 451.2 R 1.189(Each unset v)6.189 F +(tion with that name is unset.)144 511.2 R 1.189(Each unset v)6.189 F 1.189(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.689(df).15 G 1.189(rom the en)-3.689 F(vironment)-.4 E 3.206 -(passed to subsequent commands.)144 463.2 R 3.206(If an)8.206 F 5.706 +(passed to subsequent commands.)144 523.2 R 3.206(If an)8.206 F 5.706 (yo)-.15 G(f)-5.706 E/F3 9/Times-Bold@0 SF(COMP_W)5.706 E(ORDBREAKS)-.09 E/F4 9/Times-Roman@0 SF(,)A F3(RANDOM)5.455 E F4(,)A F3(SECONDS)5.455 E -F4(,)A F3(LINENO)144 475.2 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) +F4(,)A F3(LINENO)144 535.2 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) 4.347 E(AME)-.18 E F4(,)A F3(GR)4.347 E(OUPS)-.27 E F4(,)A F0(or)4.348 E F3(DIRST)4.598 E -.495(AC)-.81 G(K).495 E F0 2.098(are unset, the)4.348 F 4.598(yl)-.15 G 2.098(ose their special)-4.598 F(properties, e)144 -487.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 +547.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 G(re subsequently reset.)-2.5 E(The e)5 E(xit status is true unless a) --.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 504 Q +-.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 564 Q F0([)2.5 E F1A F0 2.5(][)C F2 2.5(n.)-2.5 G(..)-2.5 E F0(])A -.8 -(Wa)144 516 S .027(it for each speci\214ed child process and return its\ +(Wa)144 576 S .027(it for each speci\214ed child process and return its\ termination status.).8 F(Each)5.026 E F2(n)2.886 E F0 .026 (may be a process ID)2.766 F .256 -(or a job speci\214cation; if a job spec is gi)144 528 R -.15(ve)-.25 G +(or a job speci\214cation; if a job spec is gi)144 588 R -.15(ve)-.25 G .256(n, all processes in that job').15 F 2.756(sp)-.55 G .256 (ipeline are w)-2.756 F .256(aited for)-.1 F 5.256(.I)-.55 G(f)-5.256 E -F2(n)3.116 E F0 .318(is not gi)144 540 R -.15(ve)-.25 G .318 +F2(n)3.116 E F0 .318(is not gi)144 600 R -.15(ve)-.25 G .318 (n, all currently acti).15 F .618 -.15(ve c)-.25 H .318 (hild processes are w).15 F .318(aited for)-.1 F 2.818(,a)-.4 G .318 (nd the return status is zero.)-2.818 F .317(If the)5.317 F F1144 -552 Q F0 .361(option is supplied,)2.861 F F1(wait)2.861 E F0 -.1(wa) +612 Q F0 .361(option is supplied,)2.861 F F1(wait)2.861 E F0 -.1(wa) 2.861 G .361(its for an).1 F 2.862(yj)-.15 G .362 (ob to terminate and returns its e)-2.862 F .362(xit status.)-.15 F(If) -5.362 E F2(n)3.222 E F0(speci\214es)3.102 E 2.596(an)144 564 S(on-e) +5.362 E F2(n)3.222 E F0(speci\214es)3.102 E 2.596(an)144 624 S(on-e) -2.596 E .096(xistent process or job, the return status is 127.)-.15 F .095(Otherwise, the return status is the e)5.095 F .095(xit status)-.15 -F(of the last process or job w)144 576 Q(aited for)-.1 E(.)-.55 E/F5 -10.95/Times-Bold@0 SF(SEE ALSO)72 592.8 Q F0(bash\(1\), sh\(1\))108 -604.8 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(23)198.725 E 0 Cg EP +F(of the last process or job w)144 636 Q(aited for)-.1 E(.)-.55 E/F5 +10.95/Times-Bold@0 SF(SEE ALSO)72 652.8 Q F0(bash\(1\), sh\(1\))108 +664.8 Q(GNU Bash-4.2)72 768 Q(2004 Apr 20)148.735 E(23)198.725 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/rbash.ps b/doc/rbash.ps index b1b08f3e..cf25691b 100644 --- a/doc/rbash.ps +++ b/doc/rbash.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.3 -%%CreationDate: Wed Oct 14 11:38:11 2015 +%%CreationDate: Thu Dec 3 11:00:54 2015 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%DocumentSuppliedResources: procset grops 1.22 3 diff --git a/doc/texinfo.tex.20131227 b/doc/texinfo.tex.20131227 new file mode 100644 index 00000000..bfd765dd --- /dev/null +++ b/doc/texinfo.tex.20131227 @@ -0,0 +1,10145 @@ +% texinfo.tex -- TeX macros to handle Texinfo files. +% +% Load plain if necessary, i.e., if running under initex. +\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi +% +\def\texinfoversion{2013-09-11.11} +% +% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995, +% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, +% 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc. +% +% This texinfo.tex file is free software: you can redistribute it and/or +% modify it under the terms of the GNU General Public License as +% published by the Free Software Foundation, either version 3 of the +% License, or (at your option) any later version. +% +% This texinfo.tex file is distributed in the hope that it will be +% useful, but WITHOUT ANY WARRANTY; without even the implied warranty +% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +% General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program. If not, see . +% +% As a special exception, when this file is read by TeX when processing +% a Texinfo source document, you may use the result without +% restriction. This Exception is an additional permission under section 7 +% of the GNU General Public License, version 3 ("GPLv3"). +% +% Please try the latest version of texinfo.tex before submitting bug +% reports; you can get the latest version from: +% http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or +% http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or +% http://www.gnu.org/software/texinfo/ (the Texinfo home page) +% The texinfo.tex in any given distribution could well be out +% of date, so if that's what you're using, please check. +% +% Send bug reports to bug-texinfo@gnu.org. Please include including a +% complete document in each bug report with which we can reproduce the +% problem. Patches are, of course, greatly appreciated. +% +% To process a Texinfo manual with TeX, it's most reliable to use the +% texi2dvi shell script that comes with the distribution. For a simple +% manual foo.texi, however, you can get away with this: +% tex foo.texi +% texindex foo.?? +% tex foo.texi +% tex foo.texi +% dvips foo.dvi -o # or whatever; this makes foo.ps. +% The extra TeX runs get the cross-reference information correct. +% Sometimes one run after texindex suffices, and sometimes you need more +% than two; texi2dvi does it as many times as necessary. +% +% It is possible to adapt texinfo.tex for other languages, to some +% extent. You can get the existing language-specific files from the +% full Texinfo distribution. +% +% The GNU Texinfo home page is http://www.gnu.org/software/texinfo. + + +\message{Loading texinfo [version \texinfoversion]:} + +% If in a .fmt file, print the version number +% and turn on active characters that we couldn't do earlier because +% they might have appeared in the input file name. +\everyjob{\message{[Texinfo version \texinfoversion]}% + \catcode`+=\active \catcode`\_=\active} + +\chardef\other=12 + +% We never want plain's \outer definition of \+ in Texinfo. +% For @tex, we can use \tabalign. +\let\+ = \relax + +% Save some plain tex macros whose names we will redefine. +\let\ptexb=\b +\let\ptexbullet=\bullet +\let\ptexc=\c +\let\ptexcomma=\, +\let\ptexdot=\. +\let\ptexdots=\dots +\let\ptexend=\end +\let\ptexequiv=\equiv +\let\ptexexclam=\! +\let\ptexfootnote=\footnote +\let\ptexgtr=> +\let\ptexhat=^ +\let\ptexi=\i +\let\ptexindent=\indent +\let\ptexinsert=\insert +\let\ptexlbrace=\{ +\let\ptexless=< +\let\ptexnewwrite\newwrite +\let\ptexnoindent=\noindent +\let\ptexplus=+ +\let\ptexraggedright=\raggedright +\let\ptexrbrace=\} +\let\ptexslash=\/ +\let\ptexstar=\* +\let\ptext=\t +\let\ptextop=\top +{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode + +% If this character appears in an error message or help string, it +% starts a new line in the output. +\newlinechar = `^^J + +% Use TeX 3.0's \inputlineno to get the line number, for better error +% messages, but if we're using an old version of TeX, don't do anything. +% +\ifx\inputlineno\thisisundefined + \let\linenumber = \empty % Pre-3.0. +\else + \def\linenumber{l.\the\inputlineno:\space} +\fi + +% Set up fixed words for English if not already set. +\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi +\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi +\ifx\putworderror\undefined \gdef\putworderror{error}\fi +\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi +\ifx\putwordin\undefined \gdef\putwordin{in}\fi +\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi +\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi +\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi +\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi +\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi +\ifx\putwordNoTitle\undefined \gdef\putwordNoTitle{No Title}\fi +\ifx\putwordof\undefined \gdef\putwordof{of}\fi +\ifx\putwordon\undefined \gdef\putwordon{on}\fi +\ifx\putwordpage\undefined \gdef\putwordpage{page}\fi +\ifx\putwordsection\undefined \gdef\putwordsection{section}\fi +\ifx\putwordSection\undefined \gdef\putwordSection{Section}\fi +\ifx\putwordsee\undefined \gdef\putwordsee{see}\fi +\ifx\putwordSee\undefined \gdef\putwordSee{See}\fi +\ifx\putwordShortTOC\undefined \gdef\putwordShortTOC{Short Contents}\fi +\ifx\putwordTOC\undefined \gdef\putwordTOC{Table of Contents}\fi +% +\ifx\putwordMJan\undefined \gdef\putwordMJan{January}\fi +\ifx\putwordMFeb\undefined \gdef\putwordMFeb{February}\fi +\ifx\putwordMMar\undefined \gdef\putwordMMar{March}\fi +\ifx\putwordMApr\undefined \gdef\putwordMApr{April}\fi +\ifx\putwordMMay\undefined \gdef\putwordMMay{May}\fi +\ifx\putwordMJun\undefined \gdef\putwordMJun{June}\fi +\ifx\putwordMJul\undefined \gdef\putwordMJul{July}\fi +\ifx\putwordMAug\undefined \gdef\putwordMAug{August}\fi +\ifx\putwordMSep\undefined \gdef\putwordMSep{September}\fi +\ifx\putwordMOct\undefined \gdef\putwordMOct{October}\fi +\ifx\putwordMNov\undefined \gdef\putwordMNov{November}\fi +\ifx\putwordMDec\undefined \gdef\putwordMDec{December}\fi +% +\ifx\putwordDefmac\undefined \gdef\putwordDefmac{Macro}\fi +\ifx\putwordDefspec\undefined \gdef\putwordDefspec{Special Form}\fi +\ifx\putwordDefvar\undefined \gdef\putwordDefvar{Variable}\fi +\ifx\putwordDefopt\undefined \gdef\putwordDefopt{User Option}\fi +\ifx\putwordDeffunc\undefined \gdef\putwordDeffunc{Function}\fi + +% Since the category of space is not known, we have to be careful. +\chardef\spacecat = 10 +\def\spaceisspace{\catcode`\ =\spacecat} + +% sometimes characters are active, so we need control sequences. +\chardef\ampChar = `\& +\chardef\colonChar = `\: +\chardef\commaChar = `\, +\chardef\dashChar = `\- +\chardef\dotChar = `\. +\chardef\exclamChar= `\! +\chardef\hashChar = `\# +\chardef\lquoteChar= `\` +\chardef\questChar = `\? +\chardef\rquoteChar= `\' +\chardef\semiChar = `\; +\chardef\slashChar = `\/ +\chardef\underChar = `\_ + +% Ignore a token. +% +\def\gobble#1{} + +% The following is used inside several \edef's. +\def\makecsname#1{\expandafter\noexpand\csname#1\endcsname} + +% Hyphenation fixes. +\hyphenation{ + Flor-i-da Ghost-script Ghost-view Mac-OS Post-Script + ap-pen-dix bit-map bit-maps + data-base data-bases eshell fall-ing half-way long-est man-u-script + man-u-scripts mini-buf-fer mini-buf-fers over-view par-a-digm + par-a-digms rath-er rec-tan-gu-lar ro-bot-ics se-vere-ly set-up spa-ces + spell-ing spell-ings + stand-alone strong-est time-stamp time-stamps which-ever white-space + wide-spread wrap-around +} + +% Margin to add to right of even pages, to left of odd pages. +\newdimen\bindingoffset +\newdimen\normaloffset +\newdimen\pagewidth \newdimen\pageheight + +% For a final copy, take out the rectangles +% that mark overfull boxes (in case you have decided +% that the text looks ok even though it passes the margin). +% +\def\finalout{\overfullrule=0pt } + +% Sometimes it is convenient to have everything in the transcript file +% and nothing on the terminal. We don't just call \tracingall here, +% since that produces some useless output on the terminal. We also make +% some effort to order the tracing commands to reduce output in the log +% file; cf. trace.sty in LaTeX. +% +\def\gloggingall{\begingroup \globaldefs = 1 \loggingall \endgroup}% +\def\loggingall{% + \tracingstats2 + \tracingpages1 + \tracinglostchars2 % 2 gives us more in etex + \tracingparagraphs1 + \tracingoutput1 + \tracingmacros2 + \tracingrestores1 + \showboxbreadth\maxdimen \showboxdepth\maxdimen + \ifx\eTeXversion\thisisundefined\else % etex gives us more logging + \tracingscantokens1 + \tracingifs1 + \tracinggroups1 + \tracingnesting2 + \tracingassigns1 + \fi + \tracingcommands3 % 3 gives us more in etex + \errorcontextlines16 +}% + +% @errormsg{MSG}. Do the index-like expansions on MSG, but if things +% aren't perfect, it's not the end of the world, being an error message, +% after all. +% +\def\errormsg{\begingroup \indexnofonts \doerrormsg} +\def\doerrormsg#1{\errmessage{#1}} + +% add check for \lastpenalty to plain's definitions. If the last thing +% we did was a \nobreak, we don't want to insert more space. +% +\def\smallbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\smallskipamount + \removelastskip\penalty-50\smallskip\fi\fi} +\def\medbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\medskipamount + \removelastskip\penalty-100\medskip\fi\fi} +\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount + \removelastskip\penalty-200\bigskip\fi\fi} + +% Do @cropmarks to get crop marks. +% +\newif\ifcropmarks +\let\cropmarks = \cropmarkstrue +% +% Dimensions to add cropmarks at corners. +% Added by P. A. MacKay, 12 Nov. 1986 +% +\newdimen\outerhsize \newdimen\outervsize % set by the paper size routines +\newdimen\cornerlong \cornerlong=1pc +\newdimen\cornerthick \cornerthick=.3pt +\newdimen\topandbottommargin \topandbottommargin=.75in + +% Output a mark which sets \thischapter, \thissection and \thiscolor. +% We dump everything together because we only have one kind of mark. +% This works because we only use \botmark / \topmark, not \firstmark. +% +% A mark contains a subexpression of the \ifcase ... \fi construct. +% \get*marks macros below extract the needed part using \ifcase. +% +% Another complication is to let the user choose whether \thischapter +% (\thissection) refers to the chapter (section) in effect at the top +% of a page, or that at the bottom of a page. The solution is +% described on page 260 of The TeXbook. It involves outputting two +% marks for the sectioning macros, one before the section break, and +% one after. I won't pretend I can describe this better than DEK... +\def\domark{% + \toks0=\expandafter{\lastchapterdefs}% + \toks2=\expandafter{\lastsectiondefs}% + \toks4=\expandafter{\prevchapterdefs}% + \toks6=\expandafter{\prevsectiondefs}% + \toks8=\expandafter{\lastcolordefs}% + \mark{% + \the\toks0 \the\toks2 % 0: top marks (\last...) + \noexpand\or \the\toks4 \the\toks6 % 1: bottom marks (default, \prev...) + \noexpand\else \the\toks8 % 2: color marks + }% +} +% \topmark doesn't work for the very first chapter (after the title +% page or the contents), so we use \firstmark there -- this gets us +% the mark with the chapter defs, unless the user sneaks in, e.g., +% @setcolor (or @url, or @link, etc.) between @contents and the very +% first @chapter. +\def\gettopheadingmarks{% + \ifcase0\topmark\fi + \ifx\thischapter\empty \ifcase0\firstmark\fi \fi +} +\def\getbottomheadingmarks{\ifcase1\botmark\fi} +\def\getcolormarks{\ifcase2\topmark\fi} + +% Avoid "undefined control sequence" errors. +\def\lastchapterdefs{} +\def\lastsectiondefs{} +\def\prevchapterdefs{} +\def\prevsectiondefs{} +\def\lastcolordefs{} + +% Main output routine. +\chardef\PAGE = 255 +\output = {\onepageout{\pagecontents\PAGE}} + +\newbox\headlinebox +\newbox\footlinebox + +% \onepageout takes a vbox as an argument. Note that \pagecontents +% does insertions, but you have to call it yourself. +\def\onepageout#1{% + \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi + % + \ifodd\pageno \advance\hoffset by \bindingoffset + \else \advance\hoffset by -\bindingoffset\fi + % + % Do this outside of the \shipout so @code etc. will be expanded in + % the headline as they should be, not taken literally (outputting ''code). + \def\commmonheadfootline{\let\hsize=\pagewidth \texinfochars} + % + \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi + \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}% + % + \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi + \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}% + % + {% + % Have to do this stuff outside the \shipout because we want it to + % take effect in \write's, yet the group defined by the \vbox ends + % before the \shipout runs. + % + \indexdummies % don't expand commands in the output. + \normalturnoffactive % \ in index entries must not stay \, e.g., if + % the page break happens to be in the middle of an example. + % We don't want .vr (or whatever) entries like this: + % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}} + % "\acronym" won't work when it's read back in; + % it needs to be + % {\code {{\tt \backslashcurfont }acronym} + \shipout\vbox{% + % Do this early so pdf references go to the beginning of the page. + \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi + % + \ifcropmarks \vbox to \outervsize\bgroup + \hsize = \outerhsize + \vskip-\topandbottommargin + \vtop to0pt{% + \line{\ewtop\hfil\ewtop}% + \nointerlineskip + \line{% + \vbox{\moveleft\cornerthick\nstop}% + \hfill + \vbox{\moveright\cornerthick\nstop}% + }% + \vss}% + \vskip\topandbottommargin + \line\bgroup + \hfil % center the page within the outer (page) hsize. + \ifodd\pageno\hskip\bindingoffset\fi + \vbox\bgroup + \fi + % + \unvbox\headlinebox + \pagebody{#1}% + \ifdim\ht\footlinebox > 0pt + % Only leave this space if the footline is nonempty. + % (We lessened \vsize for it in \oddfootingyyy.) + % The \baselineskip=24pt in plain's \makefootline has no effect. + \vskip 24pt + \unvbox\footlinebox + \fi + % + \ifcropmarks + \egroup % end of \vbox\bgroup + \hfil\egroup % end of (centering) \line\bgroup + \vskip\topandbottommargin plus1fill minus1fill + \boxmaxdepth = \cornerthick + \vbox to0pt{\vss + \line{% + \vbox{\moveleft\cornerthick\nsbot}% + \hfill + \vbox{\moveright\cornerthick\nsbot}% + }% + \nointerlineskip + \line{\ewbot\hfil\ewbot}% + }% + \egroup % \vbox from first cropmarks clause + \fi + }% end of \shipout\vbox + }% end of group with \indexdummies + \advancepageno + \ifnum\outputpenalty>-20000 \else\dosupereject\fi +} + +\newinsert\margin \dimen\margin=\maxdimen + +\def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}} +{\catcode`\@ =11 +\gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi +% marginal hacks, juha@viisa.uucp (Juha Takala) +\ifvoid\margin\else % marginal info is present + \rlap{\kern\hsize\vbox to\z@{\kern1pt\box\margin \vss}}\fi +\dimen@=\dp#1\relax \unvbox#1\relax +\ifvoid\footins\else\vskip\skip\footins\footnoterule \unvbox\footins\fi +\ifr@ggedbottom \kern-\dimen@ \vfil \fi} +} + +% Here are the rules for the cropmarks. Note that they are +% offset so that the space between them is truly \outerhsize or \outervsize +% (P. A. MacKay, 12 November, 1986) +% +\def\ewtop{\vrule height\cornerthick depth0pt width\cornerlong} +\def\nstop{\vbox + {\hrule height\cornerthick depth\cornerlong width\cornerthick}} +\def\ewbot{\vrule height0pt depth\cornerthick width\cornerlong} +\def\nsbot{\vbox + {\hrule height\cornerlong depth\cornerthick width\cornerthick}} + +% Parse an argument, then pass it to #1. The argument is the rest of +% the input line (except we remove a trailing comment). #1 should be a +% macro which expects an ordinary undelimited TeX argument. +% +\def\parsearg{\parseargusing{}} +\def\parseargusing#1#2{% + \def\argtorun{#2}% + \begingroup + \obeylines + \spaceisspace + #1% + \parseargline\empty% Insert the \empty token, see \finishparsearg below. +} + +{\obeylines % + \gdef\parseargline#1^^M{% + \endgroup % End of the group started in \parsearg. + \argremovecomment #1\comment\ArgTerm% + }% +} + +% First remove any @comment, then any @c comment. +\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm} +\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm} + +% Each occurrence of `\^^M' or `\^^M' is replaced by a single space. +% +% \argremovec might leave us with trailing space, e.g., +% @end itemize @c foo +% This space token undergoes the same procedure and is eventually removed +% by \finishparsearg. +% +\def\argcheckspaces#1\^^M{\argcheckspacesX#1\^^M \^^M} +\def\argcheckspacesX#1 \^^M{\argcheckspacesY#1\^^M} +\def\argcheckspacesY#1\^^M#2\^^M#3\ArgTerm{% + \def\temp{#3}% + \ifx\temp\empty + % Do not use \next, perhaps the caller of \parsearg uses it; reuse \temp: + \let\temp\finishparsearg + \else + \let\temp\argcheckspaces + \fi + % Put the space token in: + \temp#1 #3\ArgTerm +} + +% If a _delimited_ argument is enclosed in braces, they get stripped; so +% to get _exactly_ the rest of the line, we had to prevent such situation. +% We prepended an \empty token at the very beginning and we expand it now, +% just before passing the control to \argtorun. +% (Similarly, we have to think about #3 of \argcheckspacesY above: it is +% either the null string, or it ends with \^^M---thus there is no danger +% that a pair of braces would be stripped. +% +% But first, we have to remove the trailing space token. +% +\def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}} + +% \parseargdef\foo{...} +% is roughly equivalent to +% \def\foo{\parsearg\Xfoo} +% \def\Xfoo#1{...} +% +% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my +% favourite TeX trick. --kasal, 16nov03 + +\def\parseargdef#1{% + \expandafter \doparseargdef \csname\string#1\endcsname #1% +} +\def\doparseargdef#1#2{% + \def#2{\parsearg#1}% + \def#1##1% +} + +% Several utility definitions with active space: +{ + \obeyspaces + \gdef\obeyedspace{ } + + % Make each space character in the input produce a normal interword + % space in the output. Don't allow a line break at this space, as this + % is used only in environments like @example, where each line of input + % should produce a line of output anyway. + % + \gdef\sepspaces{\obeyspaces\let =\tie} + + % If an index command is used in an @example environment, any spaces + % therein should become regular spaces in the raw index file, not the + % expansion of \tie (\leavevmode \penalty \@M \ ). + \gdef\unsepspaces{\let =\space} +} + + +\def\flushcr{\ifx\par\lisppar \def\next##1{}\else \let\next=\relax \fi \next} + +% Define the framework for environments in texinfo.tex. It's used like this: +% +% \envdef\foo{...} +% \def\Efoo{...} +% +% It's the responsibility of \envdef to insert \begingroup before the +% actual body; @end closes the group after calling \Efoo. \envdef also +% defines \thisenv, so the current environment is known; @end checks +% whether the environment name matches. The \checkenv macro can also be +% used to check whether the current environment is the one expected. +% +% Non-false conditionals (@iftex, @ifset) don't fit into this, so they +% are not treated as environments; they don't open a group. (The +% implementation of @end takes care not to call \endgroup in this +% special case.) + + +% At run-time, environments start with this: +\def\startenvironment#1{\begingroup\def\thisenv{#1}} +% initialize +\let\thisenv\empty + +% ... but they get defined via ``\envdef\foo{...}'': +\long\def\envdef#1#2{\def#1{\startenvironment#1#2}} +\def\envparseargdef#1#2{\parseargdef#1{\startenvironment#1#2}} + +% Check whether we're in the right environment: +\def\checkenv#1{% + \def\temp{#1}% + \ifx\thisenv\temp + \else + \badenverr + \fi +} + +% Environment mismatch, #1 expected: +\def\badenverr{% + \errhelp = \EMsimple + \errmessage{This command can appear only \inenvironment\temp, + not \inenvironment\thisenv}% +} +\def\inenvironment#1{% + \ifx#1\empty + outside of any environment% + \else + in environment \expandafter\string#1% + \fi +} + +% @end foo executes the definition of \Efoo. +% But first, it executes a specialized version of \checkenv +% +\parseargdef\end{% + \if 1\csname iscond.#1\endcsname + \else + % The general wording of \badenverr may not be ideal. + \expandafter\checkenv\csname#1\endcsname + \csname E#1\endcsname + \endgroup + \fi +} + +\newhelp\EMsimple{Press RETURN to continue.} + + +% Be sure we're in horizontal mode when doing a tie, since we make space +% equivalent to this in @example-like environments. Otherwise, a space +% at the beginning of a line will start with \penalty -- and +% since \penalty is valid in vertical mode, we'd end up putting the +% penalty on the vertical list instead of in the new paragraph. +{\catcode`@ = 11 + % Avoid using \@M directly, because that causes trouble + % if the definition is written into an index file. + \global\let\tiepenalty = \@M + \gdef\tie{\leavevmode\penalty\tiepenalty\ } +} + +% @: forces normal size whitespace following. +\def\:{\spacefactor=1000 } + +% @* forces a line break. +\def\*{\unskip\hfil\break\hbox{}\ignorespaces} + +% @/ allows a line break. +\let\/=\allowbreak + +% @. is an end-of-sentence period. +\def\.{.\spacefactor=\endofsentencespacefactor\space} + +% @! is an end-of-sentence bang. +\def\!{!\spacefactor=\endofsentencespacefactor\space} + +% @? is an end-of-sentence query. +\def\?{?\spacefactor=\endofsentencespacefactor\space} + +% @frenchspacing on|off says whether to put extra space after punctuation. +% +\def\onword{on} +\def\offword{off} +% +\parseargdef\frenchspacing{% + \def\temp{#1}% + \ifx\temp\onword \plainfrenchspacing + \else\ifx\temp\offword \plainnonfrenchspacing + \else + \errhelp = \EMsimple + \errmessage{Unknown @frenchspacing option `\temp', must be on|off}% + \fi\fi +} + +% @w prevents a word break. Without the \leavevmode, @w at the +% beginning of a paragraph, when TeX is still in vertical mode, would +% produce a whole line of output instead of starting the paragraph. +\def\w#1{\leavevmode\hbox{#1}} + +% @group ... @end group forces ... to be all on one page, by enclosing +% it in a TeX vbox. We use \vtop instead of \vbox to construct the box +% to keep its height that of a normal line. According to the rules for +% \topskip (p.114 of the TeXbook), the glue inserted is +% max (\topskip - \ht (first item), 0). If that height is large, +% therefore, no glue is inserted, and the space between the headline and +% the text is small, which looks bad. +% +% Another complication is that the group might be very large. This can +% cause the glue on the previous page to be unduly stretched, because it +% does not have much material. In this case, it's better to add an +% explicit \vfill so that the extra space is at the bottom. The +% threshold for doing this is if the group is more than \vfilllimit +% percent of a page (\vfilllimit can be changed inside of @tex). +% +\newbox\groupbox +\def\vfilllimit{0.7} +% +\envdef\group{% + \ifnum\catcode`\^^M=\active \else + \errhelp = \groupinvalidhelp + \errmessage{@group invalid in context where filling is enabled}% + \fi + \startsavinginserts + % + \setbox\groupbox = \vtop\bgroup + % Do @comment since we are called inside an environment such as + % @example, where each end-of-line in the input causes an + % end-of-line in the output. We don't want the end-of-line after + % the `@group' to put extra space in the output. Since @group + % should appear on a line by itself (according to the Texinfo + % manual), we don't worry about eating any user text. + \comment +} +% +% The \vtop produces a box with normal height and large depth; thus, TeX puts +% \baselineskip glue before it, and (when the next line of text is done) +% \lineskip glue after it. Thus, space below is not quite equal to space +% above. But it's pretty close. +\def\Egroup{% + % To get correct interline space between the last line of the group + % and the first line afterwards, we have to propagate \prevdepth. + \endgraf % Not \par, as it may have been set to \lisppar. + \global\dimen1 = \prevdepth + \egroup % End the \vtop. + % \dimen0 is the vertical size of the group's box. + \dimen0 = \ht\groupbox \advance\dimen0 by \dp\groupbox + % \dimen2 is how much space is left on the page (more or less). + \dimen2 = \pageheight \advance\dimen2 by -\pagetotal + % if the group doesn't fit on the current page, and it's a big big + % group, force a page break. + \ifdim \dimen0 > \dimen2 + \ifdim \pagetotal < \vfilllimit\pageheight + \page + \fi + \fi + \box\groupbox + \prevdepth = \dimen1 + \checkinserts +} +% +% TeX puts in an \escapechar (i.e., `@') at the beginning of the help +% message, so this ends up printing `@group can only ...'. +% +\newhelp\groupinvalidhelp{% +group can only be used in environments such as @example,^^J% +where each line of input produces a line of output.} + +% @need space-in-mils +% forces a page break if there is not space-in-mils remaining. + +\newdimen\mil \mil=0.001in + +\parseargdef\need{% + % Ensure vertical mode, so we don't make a big box in the middle of a + % paragraph. + \par + % + % If the @need value is less than one line space, it's useless. + \dimen0 = #1\mil + \dimen2 = \ht\strutbox + \advance\dimen2 by \dp\strutbox + \ifdim\dimen0 > \dimen2 + % + % Do a \strut just to make the height of this box be normal, so the + % normal leading is inserted relative to the preceding line. + % And a page break here is fine. + \vtop to #1\mil{\strut\vfil}% + % + % TeX does not even consider page breaks if a penalty added to the + % main vertical list is 10000 or more. But in order to see if the + % empty box we just added fits on the page, we must make it consider + % page breaks. On the other hand, we don't want to actually break the + % page after the empty box. So we use a penalty of 9999. + % + % There is an extremely small chance that TeX will actually break the + % page at this \penalty, if there are no other feasible breakpoints in + % sight. (If the user is using lots of big @group commands, which + % almost-but-not-quite fill up a page, TeX will have a hard time doing + % good page breaking, for example.) However, I could not construct an + % example where a page broke at this \penalty; if it happens in a real + % document, then we can reconsider our strategy. + \penalty9999 + % + % Back up by the size of the box, whether we did a page break or not. + \kern -#1\mil + % + % Do not allow a page break right after this kern. + \nobreak + \fi +} + +% @br forces paragraph break (and is undocumented). + +\let\br = \par + +% @page forces the start of a new page. +% +\def\page{\par\vfill\supereject} + +% @exdent text.... +% outputs text on separate line in roman font, starting at standard page margin + +% This records the amount of indent in the innermost environment. +% That's how much \exdent should take out. +\newskip\exdentamount + +% This defn is used inside fill environments such as @defun. +\parseargdef\exdent{\hfil\break\hbox{\kern -\exdentamount{\rm#1}}\hfil\break} + +% This defn is used inside nofill environments such as @example. +\parseargdef\nofillexdent{{\advance \leftskip by -\exdentamount + \leftline{\hskip\leftskip{\rm#1}}}} + +% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current +% paragraph. For more general purposes, use the \margin insertion +% class. WHICH is `l' or `r'. Not documented, written for gawk manual. +% +\newskip\inmarginspacing \inmarginspacing=1cm +\def\strutdepth{\dp\strutbox} +% +\def\doinmargin#1#2{\strut\vadjust{% + \nobreak + \kern-\strutdepth + \vtop to \strutdepth{% + \baselineskip=\strutdepth + \vss + % if you have multiple lines of stuff to put here, you'll need to + % make the vbox yourself of the appropriate size. + \ifx#1l% + \llap{\ignorespaces #2\hskip\inmarginspacing}% + \else + \rlap{\hskip\hsize \hskip\inmarginspacing \ignorespaces #2}% + \fi + \null + }% +}} +\def\inleftmargin{\doinmargin l} +\def\inrightmargin{\doinmargin r} +% +% @inmargin{TEXT [, RIGHT-TEXT]} +% (if RIGHT-TEXT is given, use TEXT for left page, RIGHT-TEXT for right; +% else use TEXT for both). +% +\def\inmargin#1{\parseinmargin #1,,\finish} +\def\parseinmargin#1,#2,#3\finish{% not perfect, but better than nothing. + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \def\lefttext{#1}% have both texts + \def\righttext{#2}% + \else + \def\lefttext{#1}% have only one text + \def\righttext{#1}% + \fi + % + \ifodd\pageno + \def\temp{\inrightmargin\righttext}% odd page -> outside is right margin + \else + \def\temp{\inleftmargin\lefttext}% + \fi + \temp +} + +% @| inserts a changebar to the left of the current line. It should +% surround any changed text. This approach does *not* work if the +% change spans more than two lines of output. To handle that, we would +% have adopt a much more difficult approach (putting marks into the main +% vertical list for the beginning and end of each change). This command +% is not documented, not supported, and doesn't work. +% +\def\|{% + % \vadjust can only be used in horizontal mode. + \leavevmode + % + % Append this vertical mode material after the current line in the output. + \vadjust{% + % We want to insert a rule with the height and depth of the current + % leading; that is exactly what \strutbox is supposed to record. + \vskip-\baselineskip + % + % \vadjust-items are inserted at the left edge of the type. So + % the \llap here moves out into the left-hand margin. + \llap{% + % + % For a thicker or thinner bar, change the `1pt'. + \vrule height\baselineskip width1pt + % + % This is the space between the bar and the text. + \hskip 12pt + }% + }% +} + +% @include FILE -- \input text of FILE. +% +\def\include{\parseargusing\filenamecatcodes\includezzz} +\def\includezzz#1{% + \pushthisfilestack + \def\thisfile{#1}% + {% + \makevalueexpandable % we want to expand any @value in FILE. + \turnoffactive % and allow special characters in the expansion + \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @include of #1^^J}% + \edef\temp{\noexpand\input #1 }% + % + % This trickery is to read FILE outside of a group, in case it makes + % definitions, etc. + \expandafter + }\temp + \popthisfilestack +} +\def\filenamecatcodes{% + \catcode`\\=\other + \catcode`~=\other + \catcode`^=\other + \catcode`_=\other + \catcode`|=\other + \catcode`<=\other + \catcode`>=\other + \catcode`+=\other + \catcode`-=\other + \catcode`\`=\other + \catcode`\'=\other +} + +\def\pushthisfilestack{% + \expandafter\pushthisfilestackX\popthisfilestack\StackTerm +} +\def\pushthisfilestackX{% + \expandafter\pushthisfilestackY\thisfile\StackTerm +} +\def\pushthisfilestackY #1\StackTerm #2\StackTerm {% + \gdef\popthisfilestack{\gdef\thisfile{#1}\gdef\popthisfilestack{#2}}% +} + +\def\popthisfilestack{\errthisfilestackempty} +\def\errthisfilestackempty{\errmessage{Internal error: + the stack of filenames is empty.}} +% +\def\thisfile{} + +% @center line +% outputs that line, centered. +% +\parseargdef\center{% + \ifhmode + \let\centersub\centerH + \else + \let\centersub\centerV + \fi + \centersub{\hfil \ignorespaces#1\unskip \hfil}% + \let\centersub\relax % don't let the definition persist, just in case +} +\def\centerH#1{{% + \hfil\break + \advance\hsize by -\leftskip + \advance\hsize by -\rightskip + \line{#1}% + \break +}} +% +\newcount\centerpenalty +\def\centerV#1{% + % The idea here is the same as in \startdefun, \cartouche, etc.: if + % @center is the first thing after a section heading, we need to wipe + % out the negative parskip inserted by \sectionheading, but still + % prevent a page break here. + \centerpenalty = \lastpenalty + \ifnum\centerpenalty>10000 \vskip\parskip \fi + \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi + \line{\kern\leftskip #1\kern\rightskip}% +} + +% @sp n outputs n lines of vertical space +% +\parseargdef\sp{\vskip #1\baselineskip} + +% @comment ...line which is ignored... +% @c is the same as @comment +% @ignore ... @end ignore is another way to write a comment +% +\def\comment{\begingroup \catcode`\^^M=\other% +\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other% +\commentxxx} +{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}} +% +\let\c=\comment + +% @paragraphindent NCHARS +% We'll use ems for NCHARS, close enough. +% NCHARS can also be the word `asis' or `none'. +% We cannot feasibly implement @paragraphindent asis, though. +% +\def\asisword{asis} % no translation, these are keywords +\def\noneword{none} +% +\parseargdef\paragraphindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \defaultparindent = 0pt + \else + \defaultparindent = #1em + \fi + \fi + \parindent = \defaultparindent +} + +% @exampleindent NCHARS +% We'll use ems for NCHARS like @paragraphindent. +% It seems @exampleindent asis isn't necessary, but +% I preserve it to make it similar to @paragraphindent. +\parseargdef\exampleindent{% + \def\temp{#1}% + \ifx\temp\asisword + \else + \ifx\temp\noneword + \lispnarrowing = 0pt + \else + \lispnarrowing = #1em + \fi + \fi +} + +% @firstparagraphindent WORD +% If WORD is `none', then suppress indentation of the first paragraph +% after a section heading. If WORD is `insert', then do indent at such +% paragraphs. +% +% The paragraph indentation is suppressed or not by calling +% \suppressfirstparagraphindent, which the sectioning commands do. +% We switch the definition of this back and forth according to WORD. +% By default, we suppress indentation. +% +\def\suppressfirstparagraphindent{\dosuppressfirstparagraphindent} +\def\insertword{insert} +% +\parseargdef\firstparagraphindent{% + \def\temp{#1}% + \ifx\temp\noneword + \let\suppressfirstparagraphindent = \dosuppressfirstparagraphindent + \else\ifx\temp\insertword + \let\suppressfirstparagraphindent = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @firstparagraphindent option `\temp'}% + \fi\fi +} + +% Here is how we actually suppress indentation. Redefine \everypar to +% \kern backwards by \parindent, and then reset itself to empty. +% +% We also make \indent itself not actually do anything until the next +% paragraph. +% +\gdef\dosuppressfirstparagraphindent{% + \gdef\indent{% + \restorefirstparagraphindent + \indent + }% + \gdef\noindent{% + \restorefirstparagraphindent + \noindent + }% + \global\everypar = {% + \kern -\parindent + \restorefirstparagraphindent + }% +} + +\gdef\restorefirstparagraphindent{% + \global \let \indent = \ptexindent + \global \let \noindent = \ptexnoindent + \global \everypar = {}% +} + + +% @refill is a no-op. +\let\refill=\relax + +% If working on a large document in chapters, it is convenient to +% be able to disable indexing, cross-referencing, and contents, for test runs. +% This is done with @novalidate (before @setfilename). +% +\newif\iflinks \linkstrue % by default we want the aux files. +\let\novalidate = \linksfalse + +% @setfilename is done at the beginning of every texinfo file. +% So open here the files we need to have open while reading the input. +% This makes it possible to make a .fmt file for texinfo. +\def\setfilename{% + \fixbackslash % Turn off hack to swallow `\input texinfo'. + \iflinks + \tryauxfile + % Open the new aux file. TeX will close it automatically at exit. + \immediate\openout\auxfile=\jobname.aux + \fi % \openindices needs to do some work in any case. + \openindices + \let\setfilename=\comment % Ignore extra @setfilename cmds. + % + % If texinfo.cnf is present on the system, read it. + % Useful for site-wide @afourpaper, etc. + \openin 1 texinfo.cnf + \ifeof 1 \else \input texinfo.cnf \fi + \closein 1 + % + \comment % Ignore the actual filename. +} + +% Called from \setfilename. +% +\def\openindices{% + \newindex{cp}% + \newcodeindex{fn}% + \newcodeindex{vr}% + \newcodeindex{tp}% + \newcodeindex{ky}% + \newcodeindex{pg}% +} + +% @bye. +\outer\def\bye{\pagealignmacro\tracingstats=1\ptexend} + + +\message{pdf,} +% adobe `portable' document format +\newcount\tempnum +\newcount\lnkcount +\newtoks\filename +\newcount\filenamelength +\newcount\pgn +\newtoks\toksA +\newtoks\toksB +\newtoks\toksC +\newtoks\toksD +\newbox\boxA +\newcount\countA +\newif\ifpdf +\newif\ifpdfmakepagedest + +% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1 +% can be set). So we test for \relax and 0 as well as being undefined. +\ifx\pdfoutput\thisisundefined +\else + \ifx\pdfoutput\relax + \else + \ifcase\pdfoutput + \else + \pdftrue + \fi + \fi +\fi + +% PDF uses PostScript string constants for the names of xref targets, +% for display in the outlines, and in other places. Thus, we have to +% double any backslashes. Otherwise, a name like "\node" will be +% interpreted as a newline (\n), followed by o, d, e. Not good. +% +% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and +% related messages. The final outcome is that it is up to the TeX user +% to double the backslashes and otherwise make the string valid, so +% that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to +% do this reliably, so we use it. + +% #1 is a control sequence in which to do the replacements, +% which we \xdef. +\def\txiescapepdf#1{% + \ifx\pdfescapestring\thisisundefined + % No primitive available; should we give a warning or log? + % Many times it won't matter. + \else + % The expandable \pdfescapestring primitive escapes parentheses, + % backslashes, and other special chars. + \xdef#1{\pdfescapestring{#1}}% + \fi +} + +\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images +with PDF output, and none of those formats could be found. (.eps cannot +be supported due to the design of the PDF format; use regular TeX (DVI +output) for that.)} + +\ifpdf + % + % Color manipulation macros based on pdfcolor.tex, + % except using rgb instead of cmyk; the latter is said to render as a + % very dark gray on-screen and a very dark halftone in print, instead + % of actual black. + \def\rgbDarkRed{0.50 0.09 0.12} + \def\rgbBlack{0 0 0} + % + % k sets the color for filling (usual text, etc.); + % K sets the color for stroking (thin rules, e.g., normal _'s). + \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}} + % + % Set color, and create a mark which defines \thiscolor accordingly, + % so that \makeheadline knows which color to restore. + \def\setcolor#1{% + \xdef\lastcolordefs{\gdef\noexpand\thiscolor{#1}}% + \domark + \pdfsetcolor{#1}% + } + % + \def\maincolor{\rgbBlack} + \pdfsetcolor{\maincolor} + \edef\thiscolor{\maincolor} + \def\lastcolordefs{} + % + \def\makefootline{% + \baselineskip24pt + \line{\pdfsetcolor{\maincolor}\the\footline}% + } + % + \def\makeheadline{% + \vbox to 0pt{% + \vskip-22.5pt + \line{% + \vbox to8.5pt{}% + % Extract \thiscolor definition from the marks. + \getcolormarks + % Typeset the headline with \maincolor, then restore the color. + \pdfsetcolor{\maincolor}\the\headline\pdfsetcolor{\thiscolor}% + }% + \vss + }% + \nointerlineskip + } + % + % + \pdfcatalog{/PageMode /UseOutlines} + % + % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto). + \def\dopdfimage#1#2#3{% + \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}% + \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}% + % + % pdftex (and the PDF format) support .pdf, .png, .jpg (among + % others). Let's try in that order, PDF first since if + % someone has a scalable image, presumably better to use that than a + % bitmap. + \let\pdfimgext=\empty + \begingroup + \openin 1 #1.pdf \ifeof 1 + \openin 1 #1.PDF \ifeof 1 + \openin 1 #1.png \ifeof 1 + \openin 1 #1.jpg \ifeof 1 + \openin 1 #1.jpeg \ifeof 1 + \openin 1 #1.JPG \ifeof 1 + \errhelp = \nopdfimagehelp + \errmessage{Could not find image file #1 for pdf}% + \else \gdef\pdfimgext{JPG}% + \fi + \else \gdef\pdfimgext{jpeg}% + \fi + \else \gdef\pdfimgext{jpg}% + \fi + \else \gdef\pdfimgext{png}% + \fi + \else \gdef\pdfimgext{PDF}% + \fi + \else \gdef\pdfimgext{pdf}% + \fi + \closein 1 + \endgroup + % + % without \immediate, ancient pdftex seg faults when the same image is + % included twice. (Version 3.14159-pre-1.0-unofficial-20010704.) + \ifnum\pdftexversion < 14 + \immediate\pdfimage + \else + \immediate\pdfximage + \fi + \ifdim \wd0 >0pt width \pdfimagewidth \fi + \ifdim \wd2 >0pt height \pdfimageheight \fi + \ifnum\pdftexversion<13 + #1.\pdfimgext + \else + {#1.\pdfimgext}% + \fi + \ifnum\pdftexversion < 14 \else + \pdfrefximage \pdflastximage + \fi} + % + \def\pdfmkdest#1{{% + % We have to set dummies so commands such as @code, and characters + % such as \, aren't expanded when present in a section title. + \indexnofonts + \turnoffactive + \makevalueexpandable + \def\pdfdestname{#1}% + \txiescapepdf\pdfdestname + \safewhatsit{\pdfdest name{\pdfdestname} xyz}% + }} + % + % used to mark target names; must be expandable. + \def\pdfmkpgn#1{#1} + % + % by default, use a color that is dark enough to print on paper as + % nearly black, but still distinguishable for online viewing. + \def\urlcolor{\rgbDarkRed} + \def\linkcolor{\rgbDarkRed} + \def\endlink{\setcolor{\maincolor}\pdfendlink} + % + % Adding outlines to PDF; macros for calculating structure of outlines + % come from Petr Olsak + \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0% + \else \csname#1\endcsname \fi} + \def\advancenumber#1{\tempnum=\expnumber{#1}\relax + \advance\tempnum by 1 + \expandafter\xdef\csname#1\endcsname{\the\tempnum}} + % + % #1 is the section text, which is what will be displayed in the + % outline by the pdf viewer. #2 is the pdf expression for the number + % of subentries (or empty, for subsubsections). #3 is the node text, + % which might be empty if this toc entry had no corresponding node. + % #4 is the page number + % + \def\dopdfoutline#1#2#3#4{% + % Generate a link to the node text if that exists; else, use the + % page number. We could generate a destination for the section + % text in the case where a section has no node, but it doesn't + % seem worth the trouble, since most documents are normally structured. + \edef\pdfoutlinedest{#3}% + \ifx\pdfoutlinedest\empty + \def\pdfoutlinedest{#4}% + \else + \txiescapepdf\pdfoutlinedest + \fi + % + % Also escape PDF chars in the display string. + \edef\pdfoutlinetext{#1}% + \txiescapepdf\pdfoutlinetext + % + \pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}% + } + % + \def\pdfmakeoutlines{% + \begingroup + % Read toc silently, to get counts of subentries for \pdfoutline. + \def\partentry##1##2##3##4{}% ignore parts in the outlines + \def\numchapentry##1##2##3##4{% + \def\thischapnum{##2}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + }% + \def\numsecentry##1##2##3##4{% + \advancenumber{chap\thischapnum}% + \def\thissecnum{##2}% + \def\thissubsecnum{0}% + }% + \def\numsubsecentry##1##2##3##4{% + \advancenumber{sec\thissecnum}% + \def\thissubsecnum{##2}% + }% + \def\numsubsubsecentry##1##2##3##4{% + \advancenumber{subsec\thissubsecnum}% + }% + \def\thischapnum{0}% + \def\thissecnum{0}% + \def\thissubsecnum{0}% + % + % use \def rather than \let here because we redefine \chapentry et + % al. a second time, below. + \def\appentry{\numchapentry}% + \def\appsecentry{\numsecentry}% + \def\appsubsecentry{\numsubsecentry}% + \def\appsubsubsecentry{\numsubsubsecentry}% + \def\unnchapentry{\numchapentry}% + \def\unnsecentry{\numsecentry}% + \def\unnsubsecentry{\numsubsecentry}% + \def\unnsubsubsecentry{\numsubsubsecentry}% + \readdatafile{toc}% + % + % Read toc second time, this time actually producing the outlines. + % The `-' means take the \expnumber as the absolute number of + % subentries, which we calculated on our first read of the .toc above. + % + % We use the node names as the destinations. + \def\numchapentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{chap##2}}{##3}{##4}}% + \def\numsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{sec##2}}{##3}{##4}}% + \def\numsubsecentry##1##2##3##4{% + \dopdfoutline{##1}{count-\expnumber{subsec##2}}{##3}{##4}}% + \def\numsubsubsecentry##1##2##3##4{% count is always zero + \dopdfoutline{##1}{}{##3}{##4}}% + % + % PDF outlines are displayed using system fonts, instead of + % document fonts. Therefore we cannot use special characters, + % since the encoding is unknown. For example, the eogonek from + % Latin 2 (0xea) gets translated to a | character. Info from + % Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100. + % + % TODO this right, we have to translate 8-bit characters to + % their "best" equivalent, based on the @documentencoding. Too + % much work for too little return. Just use the ASCII equivalents + % we use for the index sort strings. + % + \indexnofonts + \setupdatafile + % We can have normal brace characters in the PDF outlines, unlike + % Texinfo index files. So set that up. + \def\{{\lbracecharliteral}% + \def\}{\rbracecharliteral}% + \catcode`\\=\active \otherbackslash + \input \tocreadfilename + \endgroup + } + {\catcode`[=1 \catcode`]=2 + \catcode`{=\other \catcode`}=\other + \gdef\lbracecharliteral[{]% + \gdef\rbracecharliteral[}]% + ] + % + \def\skipspaces#1{\def\PP{#1}\def\D{|}% + \ifx\PP\D\let\nextsp\relax + \else\let\nextsp\skipspaces + \addtokens{\filename}{\PP}% + \advance\filenamelength by 1 + \fi + \nextsp} + \def\getfilename#1{% + \filenamelength=0 + % If we don't expand the argument now, \skipspaces will get + % snagged on things like "@value{foo}". + \edef\temp{#1}% + \expandafter\skipspaces\temp|\relax + } + \ifnum\pdftexversion < 14 + \let \startlink \pdfannotlink + \else + \let \startlink \pdfstartlink + \fi + % make a live url in pdf output. + \def\pdfurl#1{% + \begingroup + % it seems we really need yet another set of dummies; have not + % tried to figure out what each command should do in the context + % of @url. for now, just make @/ a no-op, that's the only one + % people have actually reported a problem with. + % + \normalturnoffactive + \def\@{@}% + \let\/=\empty + \makevalueexpandable + % do we want to go so far as to use \indexnofonts instead of just + % special-casing \var here? + \def\var##1{##1}% + % + \leavevmode\setcolor{\urlcolor}% + \startlink attr{/Border [0 0 0]}% + user{/Subtype /Link /A << /S /URI /URI (#1) >>}% + \endgroup} + \def\pdfgettoks#1.{\setbox\boxA=\hbox{\toksA={#1.}\toksB={}\maketoks}} + \def\addtokens#1#2{\edef\addtoks{\noexpand#1={\the#1#2}}\addtoks} + \def\adn#1{\addtokens{\toksC}{#1}\global\countA=1\let\next=\maketoks} + \def\poptoks#1#2|ENDTOKS|{\let\first=#1\toksD={#1}\toksA={#2}} + \def\maketoks{% + \expandafter\poptoks\the\toksA|ENDTOKS|\relax + \ifx\first0\adn0 + \else\ifx\first1\adn1 \else\ifx\first2\adn2 \else\ifx\first3\adn3 + \else\ifx\first4\adn4 \else\ifx\first5\adn5 \else\ifx\first6\adn6 + \else\ifx\first7\adn7 \else\ifx\first8\adn8 \else\ifx\first9\adn9 + \else + \ifnum0=\countA\else\makelink\fi + \ifx\first.\let\next=\done\else + \let\next=\maketoks + \addtokens{\toksB}{\the\toksD} + \ifx\first,\addtokens{\toksB}{\space}\fi + \fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \next} + \def\makelink{\addtokens{\toksB}% + {\noexpand\pdflink{\the\toksC}}\toksC={}\global\countA=0} + \def\pdflink#1{% + \startlink attr{/Border [0 0 0]} goto name{\pdfmkpgn{#1}} + \setcolor{\linkcolor}#1\endlink} + \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st} +\else + % non-pdf mode + \let\pdfmkdest = \gobble + \let\pdfurl = \gobble + \let\endlink = \relax + \let\setcolor = \gobble + \let\pdfsetcolor = \gobble + \let\pdfmakeoutlines = \relax +\fi % \ifx\pdfoutput + + +\message{fonts,} + +% Change the current font style to #1, remembering it in \curfontstyle. +% For now, we do not accumulate font styles: @b{@i{foo}} prints foo in +% italics, not bold italics. +% +\def\setfontstyle#1{% + \def\curfontstyle{#1}% not as a control sequence, because we are \edef'd. + \csname ten#1\endcsname % change the current font +} + +% Select #1 fonts with the current style. +% +\def\selectfonts#1{\csname #1fonts\endcsname \csname\curfontstyle\endcsname} + +\def\rm{\fam=0 \setfontstyle{rm}} +\def\it{\fam=\itfam \setfontstyle{it}} +\def\sl{\fam=\slfam \setfontstyle{sl}} +\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf} +\def\tt{\fam=\ttfam \setfontstyle{tt}} + +% Unfortunately, we have to override this for titles and the like, since +% in those cases "rm" is bold. Sigh. +\def\rmisbold{\rm\def\curfontstyle{bf}} + +% Texinfo sort of supports the sans serif font style, which plain TeX does not. +% So we set up a \sf. +\newfam\sffam +\def\sf{\fam=\sffam \setfontstyle{sf}} +\let\li = \sf % Sometimes we call it \li, not \sf. + +% We don't need math for this font style. +\def\ttsl{\setfontstyle{ttsl}} + + +% Set the baselineskip to #1, and the lineskip and strut size +% correspondingly. There is no deep meaning behind these magic numbers +% used as factors; they just match (closely enough) what Knuth defined. +% +\def\lineskipfactor{.08333} +\def\strutheightpercent{.70833} +\def\strutdepthpercent {.29167} +% +% can get a sort of poor man's double spacing by redefining this. +\def\baselinefactor{1} +% +\newdimen\textleading +\def\setleading#1{% + \dimen0 = #1\relax + \normalbaselineskip = \baselinefactor\dimen0 + \normallineskip = \lineskipfactor\normalbaselineskip + \normalbaselines + \setbox\strutbox =\hbox{% + \vrule width0pt height\strutheightpercent\baselineskip + depth \strutdepthpercent \baselineskip + }% +} + +% PDF CMaps. See also LaTeX's t1.cmap. +% +% do nothing with this by default. +\expandafter\let\csname cmapOT1\endcsname\gobble +\expandafter\let\csname cmapOT1IT\endcsname\gobble +\expandafter\let\csname cmapOT1TT\endcsname\gobble + +% if we are producing pdf, and we have \pdffontattr, then define cmaps. +% (\pdffontattr was introduced many years ago, but people still run +% older pdftex's; it's easy to conditionalize, so we do.) +\ifpdf \ifx\pdffontattr\thisisundefined \else + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1-0) +%%Title: (TeX-OT1-0 TeX OT1 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1) +/Supplement 0 +>> def +/CMapName /TeX-OT1-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<23> <26> <0023> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +40 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +% +% \cmapOT1IT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1IT-0) +%%Title: (TeX-OT1IT-0 TeX OT1IT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1IT) +/Supplement 0 +>> def +/CMapName /TeX-OT1IT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +8 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<25> <26> <0025> +<28> <3B> <0028> +<3F> <5B> <003F> +<5D> <5E> <005D> +<61> <7A> <0061> +<7B> <7C> <2013> +endbfrange +42 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <00660066> +<0C> <00660069> +<0D> <0066006C> +<0E> <006600660069> +<0F> <00660066006C> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<21> <0021> +<22> <201D> +<23> <0023> +<24> <00A3> +<27> <2019> +<3C> <00A1> +<3D> <003D> +<3E> <00BF> +<5C> <201C> +<5F> <02D9> +<60> <2018> +<7D> <02DD> +<7E> <007E> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1IT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +% +% \cmapOT1TT + \begingroup + \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char. + \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap +%%DocumentNeededResources: ProcSet (CIDInit) +%%IncludeResource: ProcSet (CIDInit) +%%BeginResource: CMap (TeX-OT1TT-0) +%%Title: (TeX-OT1TT-0 TeX OT1TT 0) +%%Version: 1.000 +%%EndComments +/CIDInit /ProcSet findresource begin +12 dict begin +begincmap +/CIDSystemInfo +<< /Registry (TeX) +/Ordering (OT1TT) +/Supplement 0 +>> def +/CMapName /TeX-OT1TT-0 def +/CMapType 2 def +1 begincodespacerange +<00> <7F> +endcodespacerange +5 beginbfrange +<00> <01> <0393> +<09> <0A> <03A8> +<21> <26> <0021> +<28> <5F> <0028> +<61> <7E> <0061> +endbfrange +32 beginbfchar +<02> <0398> +<03> <039B> +<04> <039E> +<05> <03A0> +<06> <03A3> +<07> <03D2> +<08> <03A6> +<0B> <2191> +<0C> <2193> +<0D> <0027> +<0E> <00A1> +<0F> <00BF> +<10> <0131> +<11> <0237> +<12> <0060> +<13> <00B4> +<14> <02C7> +<15> <02D8> +<16> <00AF> +<17> <02DA> +<18> <00B8> +<19> <00DF> +<1A> <00E6> +<1B> <0153> +<1C> <00F8> +<1D> <00C6> +<1E> <0152> +<1F> <00D8> +<20> <2423> +<27> <2019> +<60> <2018> +<7F> <00A8> +endbfchar +endcmap +CMapName currentdict /CMap defineresource pop +end +end +%%EndResource +%%EOF + }\endgroup + \expandafter\edef\csname cmapOT1TT\endcsname#1{% + \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}% + }% +\fi\fi + + +% Set the font macro #1 to the font named \fontprefix#2. +% #3 is the font's design size, #4 is a scale factor, #5 is the CMap +% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit). +% Example: +% #1 = \textrm +% #2 = \rmshape +% #3 = 10 +% #4 = \mainmagstep +% #5 = OT1 +% +\def\setfont#1#2#3#4#5{% + \font#1=\fontprefix#2#3 scaled #4 + \csname cmap#5\endcsname#1% +} +% This is what gets called when #5 of \setfont is empty. +\let\cmap\gobble +% +% (end of cmaps) + +% Use cm as the default font prefix. +% To specify the font prefix, you must define \fontprefix +% before you read in texinfo.tex. +\ifx\fontprefix\thisisundefined +\def\fontprefix{cm} +\fi +% Support font families that don't use the same naming scheme as CM. +\def\rmshape{r} +\def\rmbshape{bx} % where the normal face is bold +\def\bfshape{b} +\def\bxshape{bx} +\def\ttshape{tt} +\def\ttbshape{tt} +\def\ttslshape{sltt} +\def\itshape{ti} +\def\itbshape{bxti} +\def\slshape{sl} +\def\slbshape{bxsl} +\def\sfshape{ss} +\def\sfbshape{ss} +\def\scshape{csc} +\def\scbshape{csc} + +% Definitions for a main text size of 11pt. (The default in Texinfo.) +% +\def\definetextfontsizexi{% +% Text fonts (11.2pt, magstep1). +\def\textnominalsize{11pt} +\edef\mainmagstep{\magstephalf} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1095} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstep1}{OT1} +\setfont\deftt\ttshape{10}{\magstep1}{OT1TT} +\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter (and unnumbered) fonts (17.28pt). +\def\chapnominalsize{17pt} +\setfont\chaprm\rmbshape{12}{\magstep2}{OT1} +\setfont\chapit\itbshape{10}{\magstep3}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep3}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT} +\setfont\chapsf\sfbshape{17}{1000}{OT1} +\let\chapbf=\chaprm +\setfont\chapsc\scbshape{10}{\magstep3}{OT1} +\font\chapi=cmmi12 scaled \magstep2 +\font\chapsy=cmsy10 scaled \magstep3 +\def\chapecsize{1728} + +% Section fonts (14.4pt). +\def\secnominalsize{14pt} +\setfont\secrm\rmbshape{12}{\magstep1}{OT1} +\setfont\secit\itbshape{10}{\magstep2}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep2}{OT1} +\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\secsf\sfbshape{12}{\magstep1}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep2}{OT1} +\font\seci=cmmi12 scaled \magstep1 +\font\secsy=cmsy10 scaled \magstep2 +\def\sececsize{1440} + +% Subsection fonts (13.15pt). +\def\ssecnominalsize{13pt} +\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1} +\setfont\ssecit\itbshape{10}{1315}{OT1IT} +\setfont\ssecsl\slbshape{10}{1315}{OT1} +\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT} +\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1315}{OT1} +\font\sseci=cmmi12 scaled \magstephalf +\font\ssecsy=cmsy10 scaled 1315 +\def\ssececsize{1200} + +% Reduced fonts for @acro in text (10pt). +\def\reducednominalsize{10pt} +\setfont\reducedrm\rmshape{10}{1000}{OT1} +\setfont\reducedtt\ttshape{10}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{1000}{OT1} +\setfont\reducedit\itshape{10}{1000}{OT1IT} +\setfont\reducedsl\slshape{10}{1000}{OT1} +\setfont\reducedsf\sfshape{10}{1000}{OT1} +\setfont\reducedsc\scshape{10}{1000}{OT1} +\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT} +\font\reducedi=cmmi10 +\font\reducedsy=cmsy10 +\def\reducedecsize{1000} + +\textleading = 13.2pt % line spacing for 11pt CM +\textfonts % reset the current fonts +\rm +} % end of 11pt text font size definitions, \definetextfontsizexi + + +% Definitions to make the main text be 10pt Computer Modern, with +% section, chapter, etc., sizes following suit. This is for the GNU +% Press printing of the Emacs 22 manual. Maybe other manuals in the +% future. Used with @smallbook, which sets the leading to 12pt. +% +\def\definetextfontsizex{% +% Text fonts (10pt). +\def\textnominalsize{10pt} +\edef\mainmagstep{1000} +\setfont\textrm\rmshape{10}{\mainmagstep}{OT1} +\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT} +\setfont\textbf\bfshape{10}{\mainmagstep}{OT1} +\setfont\textit\itshape{10}{\mainmagstep}{OT1IT} +\setfont\textsl\slshape{10}{\mainmagstep}{OT1} +\setfont\textsf\sfshape{10}{\mainmagstep}{OT1} +\setfont\textsc\scshape{10}{\mainmagstep}{OT1} +\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT} +\font\texti=cmmi10 scaled \mainmagstep +\font\textsy=cmsy10 scaled \mainmagstep +\def\textecsize{1000} + +% A few fonts for @defun names and args. +\setfont\defbf\bfshape{10}{\magstephalf}{OT1} +\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT} +\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT} +\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf} + +% Fonts for indices, footnotes, small examples (9pt). +\def\smallnominalsize{9pt} +\setfont\smallrm\rmshape{9}{1000}{OT1} +\setfont\smalltt\ttshape{9}{1000}{OT1TT} +\setfont\smallbf\bfshape{10}{900}{OT1} +\setfont\smallit\itshape{9}{1000}{OT1IT} +\setfont\smallsl\slshape{9}{1000}{OT1} +\setfont\smallsf\sfshape{9}{1000}{OT1} +\setfont\smallsc\scshape{10}{900}{OT1} +\setfont\smallttsl\ttslshape{10}{900}{OT1TT} +\font\smalli=cmmi9 +\font\smallsy=cmsy9 +\def\smallecsize{0900} + +% Fonts for small examples (8pt). +\def\smallernominalsize{8pt} +\setfont\smallerrm\rmshape{8}{1000}{OT1} +\setfont\smallertt\ttshape{8}{1000}{OT1TT} +\setfont\smallerbf\bfshape{10}{800}{OT1} +\setfont\smallerit\itshape{8}{1000}{OT1IT} +\setfont\smallersl\slshape{8}{1000}{OT1} +\setfont\smallersf\sfshape{8}{1000}{OT1} +\setfont\smallersc\scshape{10}{800}{OT1} +\setfont\smallerttsl\ttslshape{10}{800}{OT1TT} +\font\smalleri=cmmi8 +\font\smallersy=cmsy8 +\def\smallerecsize{0800} + +% Fonts for title page (20.4pt): +\def\titlenominalsize{20pt} +\setfont\titlerm\rmbshape{12}{\magstep3}{OT1} +\setfont\titleit\itbshape{10}{\magstep4}{OT1IT} +\setfont\titlesl\slbshape{10}{\magstep4}{OT1} +\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT} +\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT} +\setfont\titlesf\sfbshape{17}{\magstep1}{OT1} +\let\titlebf=\titlerm +\setfont\titlesc\scbshape{10}{\magstep4}{OT1} +\font\titlei=cmmi12 scaled \magstep3 +\font\titlesy=cmsy10 scaled \magstep4 +\def\titleecsize{2074} + +% Chapter fonts (14.4pt). +\def\chapnominalsize{14pt} +\setfont\chaprm\rmbshape{12}{\magstep1}{OT1} +\setfont\chapit\itbshape{10}{\magstep2}{OT1IT} +\setfont\chapsl\slbshape{10}{\magstep2}{OT1} +\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT} +\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT} +\setfont\chapsf\sfbshape{12}{\magstep1}{OT1} +\let\chapbf\chaprm +\setfont\chapsc\scbshape{10}{\magstep2}{OT1} +\font\chapi=cmmi12 scaled \magstep1 +\font\chapsy=cmsy10 scaled \magstep2 +\def\chapecsize{1440} + +% Section fonts (12pt). +\def\secnominalsize{12pt} +\setfont\secrm\rmbshape{12}{1000}{OT1} +\setfont\secit\itbshape{10}{\magstep1}{OT1IT} +\setfont\secsl\slbshape{10}{\magstep1}{OT1} +\setfont\sectt\ttbshape{12}{1000}{OT1TT} +\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT} +\setfont\secsf\sfbshape{12}{1000}{OT1} +\let\secbf\secrm +\setfont\secsc\scbshape{10}{\magstep1}{OT1} +\font\seci=cmmi12 +\font\secsy=cmsy10 scaled \magstep1 +\def\sececsize{1200} + +% Subsection fonts (10pt). +\def\ssecnominalsize{10pt} +\setfont\ssecrm\rmbshape{10}{1000}{OT1} +\setfont\ssecit\itbshape{10}{1000}{OT1IT} +\setfont\ssecsl\slbshape{10}{1000}{OT1} +\setfont\ssectt\ttbshape{10}{1000}{OT1TT} +\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT} +\setfont\ssecsf\sfbshape{10}{1000}{OT1} +\let\ssecbf\ssecrm +\setfont\ssecsc\scbshape{10}{1000}{OT1} +\font\sseci=cmmi10 +\font\ssecsy=cmsy10 +\def\ssececsize{1000} + +% Reduced fonts for @acro in text (9pt). +\def\reducednominalsize{9pt} +\setfont\reducedrm\rmshape{9}{1000}{OT1} +\setfont\reducedtt\ttshape{9}{1000}{OT1TT} +\setfont\reducedbf\bfshape{10}{900}{OT1} +\setfont\reducedit\itshape{9}{1000}{OT1IT} +\setfont\reducedsl\slshape{9}{1000}{OT1} +\setfont\reducedsf\sfshape{9}{1000}{OT1} +\setfont\reducedsc\scshape{10}{900}{OT1} +\setfont\reducedttsl\ttslshape{10}{900}{OT1TT} +\font\reducedi=cmmi9 +\font\reducedsy=cmsy9 +\def\reducedecsize{0900} + +\divide\parskip by 2 % reduce space between paragraphs +\textleading = 12pt % line spacing for 10pt CM +\textfonts % reset the current fonts +\rm +} % end of 10pt text font size definitions, \definetextfontsizex + + +% We provide the user-level command +% @fonttextsize 10 +% (or 11) to redefine the text font size. pt is assumed. +% +\def\xiword{11} +\def\xword{10} +\def\xwordpt{10pt} +% +\parseargdef\fonttextsize{% + \def\textsizearg{#1}% + %\wlog{doing @fonttextsize \textsizearg}% + % + % Set \globaldefs so that documents can use this inside @tex, since + % makeinfo 4.8 does not support it, but we need it nonetheless. + % + \begingroup \globaldefs=1 + \ifx\textsizearg\xword \definetextfontsizex + \else \ifx\textsizearg\xiword \definetextfontsizexi + \else + \errhelp=\EMsimple + \errmessage{@fonttextsize only supports `10' or `11', not `\textsizearg'} + \fi\fi + \endgroup +} + + +% In order for the font changes to affect most math symbols and letters, +% we have to define the \textfont of the standard families. Since +% texinfo doesn't allow for producing subscripts and superscripts except +% in the main text, we don't bother to reset \scriptfont and +% \scriptscriptfont (which would also require loading a lot more fonts). +% +\def\resetmathfonts{% + \textfont0=\tenrm \textfont1=\teni \textfont2=\tensy + \textfont\itfam=\tenit \textfont\slfam=\tensl \textfont\bffam=\tenbf + \textfont\ttfam=\tentt \textfont\sffam=\tensf +} + +% The font-changing commands redefine the meanings of \tenSTYLE, instead +% of just \STYLE. We do this because \STYLE needs to also set the +% current \fam for math mode. Our \STYLE (e.g., \rm) commands hardwire +% \tenSTYLE to set the current font. +% +% Each font-changing command also sets the names \lsize (one size lower) +% and \lllsize (three sizes lower). These relative commands are used in +% the LaTeX logo and acronyms. +% +% This all needs generalizing, badly. +% +\def\textfonts{% + \let\tenrm=\textrm \let\tenit=\textit \let\tensl=\textsl + \let\tenbf=\textbf \let\tentt=\texttt \let\smallcaps=\textsc + \let\tensf=\textsf \let\teni=\texti \let\tensy=\textsy + \let\tenttsl=\textttsl + \def\curfontsize{text}% + \def\lsize{reduced}\def\lllsize{smaller}% + \resetmathfonts \setleading{\textleading}} +\def\titlefonts{% + \let\tenrm=\titlerm \let\tenit=\titleit \let\tensl=\titlesl + \let\tenbf=\titlebf \let\tentt=\titlett \let\smallcaps=\titlesc + \let\tensf=\titlesf \let\teni=\titlei \let\tensy=\titlesy + \let\tenttsl=\titlettsl + \def\curfontsize{title}% + \def\lsize{chap}\def\lllsize{subsec}% + \resetmathfonts \setleading{27pt}} +\def\titlefont#1{{\titlefonts\rmisbold #1}} +\def\chapfonts{% + \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl + \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc + \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy + \let\tenttsl=\chapttsl + \def\curfontsize{chap}% + \def\lsize{sec}\def\lllsize{text}% + \resetmathfonts \setleading{19pt}} +\def\secfonts{% + \let\tenrm=\secrm \let\tenit=\secit \let\tensl=\secsl + \let\tenbf=\secbf \let\tentt=\sectt \let\smallcaps=\secsc + \let\tensf=\secsf \let\teni=\seci \let\tensy=\secsy + \let\tenttsl=\secttsl + \def\curfontsize{sec}% + \def\lsize{subsec}\def\lllsize{reduced}% + \resetmathfonts \setleading{16pt}} +\def\subsecfonts{% + \let\tenrm=\ssecrm \let\tenit=\ssecit \let\tensl=\ssecsl + \let\tenbf=\ssecbf \let\tentt=\ssectt \let\smallcaps=\ssecsc + \let\tensf=\ssecsf \let\teni=\sseci \let\tensy=\ssecsy + \let\tenttsl=\ssecttsl + \def\curfontsize{ssec}% + \def\lsize{text}\def\lllsize{small}% + \resetmathfonts \setleading{15pt}} +\let\subsubsecfonts = \subsecfonts +\def\reducedfonts{% + \let\tenrm=\reducedrm \let\tenit=\reducedit \let\tensl=\reducedsl + \let\tenbf=\reducedbf \let\tentt=\reducedtt \let\reducedcaps=\reducedsc + \let\tensf=\reducedsf \let\teni=\reducedi \let\tensy=\reducedsy + \let\tenttsl=\reducedttsl + \def\curfontsize{reduced}% + \def\lsize{small}\def\lllsize{smaller}% + \resetmathfonts \setleading{10.5pt}} +\def\smallfonts{% + \let\tenrm=\smallrm \let\tenit=\smallit \let\tensl=\smallsl + \let\tenbf=\smallbf \let\tentt=\smalltt \let\smallcaps=\smallsc + \let\tensf=\smallsf \let\teni=\smalli \let\tensy=\smallsy + \let\tenttsl=\smallttsl + \def\curfontsize{small}% + \def\lsize{smaller}\def\lllsize{smaller}% + \resetmathfonts \setleading{10.5pt}} +\def\smallerfonts{% + \let\tenrm=\smallerrm \let\tenit=\smallerit \let\tensl=\smallersl + \let\tenbf=\smallerbf \let\tentt=\smallertt \let\smallcaps=\smallersc + \let\tensf=\smallersf \let\teni=\smalleri \let\tensy=\smallersy + \let\tenttsl=\smallerttsl + \def\curfontsize{smaller}% + \def\lsize{smaller}\def\lllsize{smaller}% + \resetmathfonts \setleading{9.5pt}} + +% Fonts for short table of contents. +\setfont\shortcontrm\rmshape{12}{1000}{OT1} +\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12 +\setfont\shortcontsl\slshape{12}{1000}{OT1} +\setfont\shortconttt\ttshape{12}{1000}{OT1TT} + +% Define these just so they can be easily changed for other fonts. +\def\angleleft{$\langle$} +\def\angleright{$\rangle$} + +% Set the fonts to use with the @small... environments. +\let\smallexamplefonts = \smallfonts + +% About \smallexamplefonts. If we use \smallfonts (9pt), @smallexample +% can fit this many characters: +% 8.5x11=86 smallbook=72 a4=90 a5=69 +% If we use \scriptfonts (8pt), then we can fit this many characters: +% 8.5x11=90+ smallbook=80 a4=90+ a5=77 +% For me, subjectively, the few extra characters that fit aren't worth +% the additional smallness of 8pt. So I'm making the default 9pt. +% +% By the way, for comparison, here's what fits with @example (10pt): +% 8.5x11=71 smallbook=60 a4=75 a5=58 +% --karl, 24jan03. + +% Set up the default fonts, so we can use them for creating boxes. +% +\definetextfontsizexi + + +\message{markup,} + +% Check if we are currently using a typewriter font. Since all the +% Computer Modern typewriter fonts have zero interword stretch (and +% shrink), and it is reasonable to expect all typewriter fonts to have +% this property, we can check that font parameter. +% +\def\ifmonospace{\ifdim\fontdimen3\font=0pt } + +% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will +% define and register \INITMACRO to be called on markup style changes. +% \INITMACRO can check \currentmarkupstyle for the innermost +% style and the set of \ifmarkupSTYLE switches for all styles +% currently in effect. +\newif\ifmarkupvar +\newif\ifmarkupsamp +\newif\ifmarkupkey +%\newif\ifmarkupfile % @file == @samp. +%\newif\ifmarkupoption % @option == @samp. +\newif\ifmarkupcode +\newif\ifmarkupkbd +%\newif\ifmarkupenv % @env == @code. +%\newif\ifmarkupcommand % @command == @code. +\newif\ifmarkuptex % @tex (and part of @math, for now). +\newif\ifmarkupexample +\newif\ifmarkupverb +\newif\ifmarkupverbatim + +\let\currentmarkupstyle\empty + +\def\setupmarkupstyle#1{% + \csname markup#1true\endcsname + \def\currentmarkupstyle{#1}% + \markupstylesetup +} + +\let\markupstylesetup\empty + +\def\defmarkupstylesetup#1{% + \expandafter\def\expandafter\markupstylesetup + \expandafter{\markupstylesetup #1}% + \def#1% +} + +% Markup style setup for left and right quotes. +\defmarkupstylesetup\markupsetuplq{% + \expandafter\let\expandafter \temp + \csname markupsetuplq\currentmarkupstyle\endcsname + \ifx\temp\relax \markupsetuplqdefault \else \temp \fi +} + +\defmarkupstylesetup\markupsetuprq{% + \expandafter\let\expandafter \temp + \csname markupsetuprq\currentmarkupstyle\endcsname + \ifx\temp\relax \markupsetuprqdefault \else \temp \fi +} + +{ +\catcode`\'=\active +\catcode`\`=\active + +\gdef\markupsetuplqdefault{\let`\lq} +\gdef\markupsetuprqdefault{\let'\rq} + +\gdef\markupsetcodequoteleft{\let`\codequoteleft} +\gdef\markupsetcodequoteright{\let'\codequoteright} +} + +\let\markupsetuplqcode \markupsetcodequoteleft +\let\markupsetuprqcode \markupsetcodequoteright +% +\let\markupsetuplqexample \markupsetcodequoteleft +\let\markupsetuprqexample \markupsetcodequoteright +% +\let\markupsetuplqkbd \markupsetcodequoteleft +\let\markupsetuprqkbd \markupsetcodequoteright +% +\let\markupsetuplqsamp \markupsetcodequoteleft +\let\markupsetuprqsamp \markupsetcodequoteright +% +\let\markupsetuplqverb \markupsetcodequoteleft +\let\markupsetuprqverb \markupsetcodequoteright +% +\let\markupsetuplqverbatim \markupsetcodequoteleft +\let\markupsetuprqverbatim \markupsetcodequoteright + +% Allow an option to not use regular directed right quote/apostrophe +% (char 0x27), but instead the undirected quote from cmtt (char 0x0d). +% The undirected quote is ugly, so don't make it the default, but it +% works for pasting with more pdf viewers (at least evince), the +% lilypond developers report. xpdf does work with the regular 0x27. +% +\def\codequoteright{% + \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax + \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax + '% + \else \char'15 \fi + \else \char'15 \fi +} +% +% and a similar option for the left quote char vs. a grave accent. +% Modern fonts display ASCII 0x60 as a grave accent, so some people like +% the code environments to do likewise. +% +\def\codequoteleft{% + \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax + \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax + % [Knuth] pp. 380,381,391 + % \relax disables Spanish ligatures ?` and !` of \tt font. + \relax`% + \else \char'22 \fi + \else \char'22 \fi +} + +% Commands to set the quote options. +% +\parseargdef\codequoteundirected{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequoteundirected\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}% + \fi\fi +} +% +\parseargdef\codequotebacktick{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = t% + \else\ifx\temp\offword + \expandafter\let\csname SETtxicodequotebacktick\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}% + \fi\fi +} + +% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font. +\def\noligaturesquoteleft{\relax\lq} + +% Count depth in font-changes, for error checks +\newcount\fontdepth \fontdepth=0 + +% Font commands. + +% #1 is the font command (\sl or \it), #2 is the text to slant. +% If we are in a monospaced environment, however, 1) always use \ttsl, +% and 2) do not add an italic correction. +\def\dosmartslant#1#2{% + \ifusingtt + {{\ttsl #2}\let\next=\relax}% + {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}% + \next +} +\def\smartslanted{\dosmartslant\sl} +\def\smartitalic{\dosmartslant\it} + +% Output an italic correction unless \next (presumed to be the following +% character) is such as not to need one. +\def\smartitaliccorrection{% + \ifx\next,% + \else\ifx\next-% + \else\ifx\next.% + \else\ifx\next\.% + \else\ifx\next\comma% + \else\ptexslash + \fi\fi\fi\fi\fi + \aftersmartic +} + +% Unconditional use \ttsl, and no ic. @var is set to this for defuns. +\def\ttslanted#1{{\ttsl #1}} + +% @cite is like \smartslanted except unconditionally use \sl. We never want +% ttsl for book titles, do we? +\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection} + +\def\aftersmartic{} +\def\var#1{% + \let\saveaftersmartic = \aftersmartic + \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}% + \smartslanted{#1}% +} + +\let\i=\smartitalic +\let\slanted=\smartslanted +\let\dfn=\smartslanted +\let\emph=\smartitalic + +% Explicit font changes: @r, @sc, undocumented @ii. +\def\r#1{{\rm #1}} % roman font +\def\sc#1{{\smallcaps#1}} % smallcaps font +\def\ii#1{{\it #1}} % italic font + +% @b, explicit bold. Also @strong. +\def\b#1{{\bf #1}} +\let\strong=\b + +% @sansserif, explicit sans. +\def\sansserif#1{{\sf #1}} + +% We can't just use \exhyphenpenalty, because that only has effect at +% the end of a paragraph. Restore normal hyphenation at the end of the +% group within which \nohyphenation is presumably called. +% +\def\nohyphenation{\hyphenchar\font = -1 \aftergroup\restorehyphenation} +\def\restorehyphenation{\hyphenchar\font = `- } + +% Set sfcode to normal for the chars that usually have another value. +% Can't use plain's \frenchspacing because it uses the `\x notation, and +% sometimes \x has an active definition that messes things up. +% +\catcode`@=11 + \def\plainfrenchspacing{% + \sfcode\dotChar =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m + \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m + \def\endofsentencespacefactor{1000}% for @. and friends + } + \def\plainnonfrenchspacing{% + \sfcode`\.3000\sfcode`\?3000\sfcode`\!3000 + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 + \def\endofsentencespacefactor{3000}% for @. and friends + } +\catcode`@=\other +\def\endofsentencespacefactor{3000}% default + +% @t, explicit typewriter. +\def\t#1{% + {\tt \rawbackslash \plainfrenchspacing #1}% + \null +} + +% @samp. +\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}} + +% @indicateurl is \samp, that is, with quotes. +\let\indicateurl=\samp + +% @code (and similar) prints in typewriter, but with spaces the same +% size as normal in the surrounding text, without hyphenation, etc. +% This is a subroutine for that. +\def\tclose#1{% + {% + % Change normal interword space to be same as for the current font. + \spaceskip = \fontdimen2\font + % + % Switch to typewriter. + \tt + % + % But `\ ' produces the large typewriter interword space. + \def\ {{\spaceskip = 0pt{} }}% + % + % Turn off hyphenation. + \nohyphenation + % + \rawbackslash + \plainfrenchspacing + #1% + }% + \null % reset spacefactor to 1000 +} + +% We *must* turn on hyphenation at `-' and `_' in @code. +% (But see \codedashfinish below.) +% Otherwise, it is too hard to avoid overfull hboxes +% in the Emacs manual, the Library manual, etc. +% +% Unfortunately, TeX uses one parameter (\hyphenchar) to control +% both hyphenation at - and hyphenation within words. +% We must therefore turn them both off (\tclose does that) +% and arrange explicitly to hyphenate at a dash. -- rms. +{ + \catcode`\-=\active \catcode`\_=\active + \catcode`\'=\active \catcode`\`=\active + \global\let'=\rq \global\let`=\lq % default definitions + % + \global\def\code{\begingroup + \setupmarkupstyle{code}% + % The following should really be moved into \setupmarkupstyle handlers. + \catcode\dashChar=\active \catcode\underChar=\active + \ifallowcodebreaks + \let-\codedash + \let_\codeunder + \else + \let-\normaldash + \let_\realunder + \fi + % Given -foo (with a single dash), we do not want to allow a break + % after the hyphen. + \global\let\codedashprev=\codedash + % + \codex + } + % + \gdef\codedash{\futurelet\next\codedashfinish} + \gdef\codedashfinish{% + \normaldash % always output the dash character itself. + % + % Now, output a discretionary to allow a line break, unless + % (a) the next character is a -, or + % (b) the preceding character is a -. + % E.g., given --posix, we do not want to allow a break after either -. + % Given --foo-bar, we do want to allow a break between the - and the b. + \ifx\next\codedash \else + \ifx\codedashprev\codedash + \else \discretionary{}{}{}\fi + \fi + % we need the space after the = for the case when \next itself is a + % space token; it would get swallowed otherwise. As in @code{- a}. + \global\let\codedashprev= \next + } +} +\def\normaldash{-} +% +\def\codex #1{\tclose{#1}\endgroup} + +\def\codeunder{% + % this is all so @math{@code{var_name}+1} can work. In math mode, _ + % is "active" (mathcode"8000) and \normalunderscore (or \char95, etc.) + % will therefore expand the active definition of _, which is us + % (inside @code that is), therefore an endless loop. + \ifusingtt{\ifmmode + \mathchar"075F % class 0=ordinary, family 7=ttfam, pos 0x5F=_. + \else\normalunderscore \fi + \discretionary{}{}{}}% + {\_}% +} + +% An additional complication: the above will allow breaks after, e.g., +% each of the four underscores in __typeof__. This is bad. +% @allowcodebreaks provides a document-level way to turn breaking at - +% and _ on and off. +% +\newif\ifallowcodebreaks \allowcodebreakstrue + +\def\keywordtrue{true} +\def\keywordfalse{false} + +\parseargdef\allowcodebreaks{% + \def\txiarg{#1}% + \ifx\txiarg\keywordtrue + \allowcodebreakstrue + \else\ifx\txiarg\keywordfalse + \allowcodebreaksfalse + \else + \errhelp = \EMsimple + \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}% + \fi\fi +} + +% For @command, @env, @file, @option quotes seem unnecessary, +% so use \code rather than \samp. +\let\command=\code +\let\env=\code +\let\file=\code +\let\option=\code + +% @uref (abbreviation for `urlref') takes an optional (comma-separated) +% second argument specifying the text to display and an optional third +% arg as text to display instead of (rather than in addition to) the url +% itself. First (mandatory) arg is the url. +% (This \urefnobreak definition isn't used now, leaving it for a while +% for comparison.) +\def\urefnobreak#1{\dourefnobreak #1,,,\finish} +\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup + \unsepspaces + \pdfurl{#1}% + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt + \unhbox0 % third arg given, show only that + \else + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \ifpdf + \unhbox0 % PDF: 2nd arg given, show only it + \else + \unhbox0\ (\code{#1})% DVI: 2nd arg given, show both it and url + \fi + \else + \code{#1}% only url given, so show it + \fi + \fi + \endlink +\endgroup} + +% This \urefbreak definition is the active one. +\def\urefbreak{\begingroup \urefcatcodes \dourefbreak} +\let\uref=\urefbreak +\def\dourefbreak#1{\urefbreakfinish #1,,,\finish} +\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example + \unsepspaces + \pdfurl{#1}% + \setbox0 = \hbox{\ignorespaces #3}% + \ifdim\wd0 > 0pt + \unhbox0 % third arg given, show only that + \else + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0 > 0pt + \ifpdf + \unhbox0 % PDF: 2nd arg given, show only it + \else + \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url + \fi + \else + \urefcode{#1}% only url given, so show it + \fi + \fi + \endlink +\endgroup} + +% Allow line breaks around only a few characters (only). +\def\urefcatcodes{% + \catcode\ampChar=\active \catcode\dotChar=\active + \catcode\hashChar=\active \catcode\questChar=\active + \catcode\slashChar=\active +} +{ + \urefcatcodes + % + \global\def\urefcode{\begingroup + \setupmarkupstyle{code}% + \urefcatcodes + \let&\urefcodeamp + \let.\urefcodedot + \let#\urefcodehash + \let?\urefcodequest + \let/\urefcodeslash + \codex + } + % + % By default, they are just regular characters. + \global\def&{\normalamp} + \global\def.{\normaldot} + \global\def#{\normalhash} + \global\def?{\normalquest} + \global\def/{\normalslash} +} + +% we put a little stretch before and after the breakable chars, to help +% line breaking of long url's. The unequal skips make look better in +% cmtt at least, especially for dots. +\def\urefprestretch{\urefprebreak \hskip0pt plus.13em } +\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em } +% +\def\urefcodeamp{\urefprestretch \&\urefpoststretch} +\def\urefcodedot{\urefprestretch .\urefpoststretch} +\def\urefcodehash{\urefprestretch \#\urefpoststretch} +\def\urefcodequest{\urefprestretch ?\urefpoststretch} +\def\urefcodeslash{\futurelet\next\urefcodeslashfinish} +{ + \catcode`\/=\active + \global\def\urefcodeslashfinish{% + \urefprestretch \slashChar + % Allow line break only after the final / in a sequence of + % slashes, to avoid line break between the slashes in http://. + \ifx\next/\else \urefpoststretch \fi + } +} + +% One more complication: by default we'll break after the special +% characters, but some people like to break before the special chars, so +% allow that. Also allow no breaking at all, for manual control. +% +\parseargdef\urefbreakstyle{% + \def\txiarg{#1}% + \ifx\txiarg\wordnone + \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordbefore + \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak} + \else\ifx\txiarg\wordafter + \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak} + \else + \errhelp = \EMsimple + \errmessage{Unknown @urefbreakstyle setting `\txiarg'}% + \fi\fi\fi +} +\def\wordafter{after} +\def\wordbefore{before} +\def\wordnone{none} + +\urefbreakstyle after + +% @url synonym for @uref, since that's how everyone uses it. +% +\let\url=\uref + +% rms does not like angle brackets --karl, 17may97. +% So now @email is just like @uref, unless we are pdf. +% +%\def\email#1{\angleleft{\tt #1}\angleright} +\ifpdf + \def\email#1{\doemail#1,,\finish} + \def\doemail#1,#2,#3\finish{\begingroup + \unsepspaces + \pdfurl{mailto:#1}% + \setbox0 = \hbox{\ignorespaces #2}% + \ifdim\wd0>0pt\unhbox0\else\code{#1}\fi + \endlink + \endgroup} +\else + \let\email=\uref +\fi + +% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always), +% `example' (@kbd uses ttsl only inside of @example and friends), +% or `code' (@kbd uses normal tty font always). +\parseargdef\kbdinputstyle{% + \def\txiarg{#1}% + \ifx\txiarg\worddistinct + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}% + \else\ifx\txiarg\wordexample + \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}% + \else\ifx\txiarg\wordcode + \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}% + \else + \errhelp = \EMsimple + \errmessage{Unknown @kbdinputstyle setting `\txiarg'}% + \fi\fi\fi +} +\def\worddistinct{distinct} +\def\wordexample{example} +\def\wordcode{code} + +% Default is `distinct'. +\kbdinputstyle distinct + +% @kbd is like @code, except that if the argument is just one @key command, +% then @kbd has no effect. +\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}} + +\def\xkey{\key} +\def\kbdsub#1#2#3\par{% + \def\one{#1}\def\three{#3}\def\threex{??}% + \ifx\one\xkey\ifx\threex\three \key{#2}% + \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi + \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi +} + +% definition of @key that produces a lozenge. Doesn't adjust to text size. +%\setfont\keyrm\rmshape{8}{1000}{OT1} +%\font\keysy=cmsy9 +%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{% +% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{% +% \vbox{\hrule\kern-0.4pt +% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}% +% \kern-0.4pt\hrule}% +% \kern-.06em\raise0.4pt\hbox{\angleright}}}} + +% definition of @key with no lozenge. If the current font is already +% monospace, don't change it; that way, we respect @kbdinputstyle. But +% if it isn't monospace, then use \tt. +% +\def\key#1{{\setupmarkupstyle{key}% + \nohyphenation + \ifmonospace\else\tt\fi + #1}\null} + +% @clicksequence{File @click{} Open ...} +\def\clicksequence#1{\begingroup #1\endgroup} + +% @clickstyle @arrow (by default) +\parseargdef\clickstyle{\def\click{#1}} +\def\click{\arrow} + +% Typeset a dimension, e.g., `in' or `pt'. The only reason for the +% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt. +% +\def\dmn#1{\thinspace #1} + +% @l was never documented to mean ``switch to the Lisp font'', +% and it is not used as such in any manual I can find. We need it for +% Polish suppressed-l. --karl, 22sep96. +%\def\l#1{{\li #1}\null} + +% @acronym for "FBI", "NATO", and the like. +% We print this one point size smaller, since it's intended for +% all-uppercase. +% +\def\acronym#1{\doacronym #1,,\finish} +\def\doacronym#1,#2,#3\finish{% + {\selectfonts\lsize #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + \null % reset \spacefactor=1000 +} + +% @abbr for "Comput. J." and the like. +% No font change, but don't do end-of-sentence spacing. +% +\def\abbr#1{\doabbr #1,,\finish} +\def\doabbr#1,#2,#3\finish{% + {\plainfrenchspacing #1}% + \def\temp{#2}% + \ifx\temp\empty \else + \space ({\unsepspaces \ignorespaces \temp \unskip})% + \fi + \null % reset \spacefactor=1000 +} + +% @asis just yields its argument. Used with @table, for example. +% +\def\asis#1{#1} + +% @math outputs its argument in math mode. +% +% One complication: _ usually means subscripts, but it could also mean +% an actual _ character, as in @math{@var{some_variable} + 1}. So make +% _ active, and distinguish by seeing if the current family is \slfam, +% which is what @var uses. +{ + \catcode`\_ = \active + \gdef\mathunderscore{% + \catcode`\_=\active + \def_{\ifnum\fam=\slfam \_\else\sb\fi}% + } +} +% Another complication: we want \\ (and @\) to output a math (or tt) \. +% FYI, plain.tex uses \\ as a temporary control sequence (for no +% particular reason), but this is not advertised and we don't care. +% +% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\. +\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi} +% +\def\math{% + \tex + \mathunderscore + \let\\ = \mathbackslash + \mathactive + % make the texinfo accent commands work in math mode + \let\"=\ddot + \let\'=\acute + \let\==\bar + \let\^=\hat + \let\`=\grave + \let\u=\breve + \let\v=\check + \let\~=\tilde + \let\dotaccent=\dot + $\finishmath +} +\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex. + +% Some active characters (such as <) are spaced differently in math. +% We have to reset their definitions in case the @math was an argument +% to a command which sets the catcodes (such as @item or @section). +% +{ + \catcode`^ = \active + \catcode`< = \active + \catcode`> = \active + \catcode`+ = \active + \catcode`' = \active + \gdef\mathactive{% + \let^ = \ptexhat + \let< = \ptexless + \let> = \ptexgtr + \let+ = \ptexplus + \let' = \ptexquoteright + } +} + +% ctrl is no longer a Texinfo command, but leave this definition for fun. +\def\ctrl #1{{\tt \rawbackslash \hat}#1} + +% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}. +% Ignore unless FMTNAME == tex; then it is like @iftex and @tex, +% except specified as a normal braced arg, so no newlines to worry about. +% +\def\outfmtnametex{tex} +% +\long\def\inlinefmt#1{\doinlinefmt #1,\finish} +\long\def\doinlinefmt#1,#2,\finish{% + \def\inlinefmtname{#1}% + \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi +} +% +% @inlinefmtifelse{FMTNAME,THEN-TEXT,ELSE-TEXT} expands THEN-TEXT if +% FMTNAME is tex, else ELSE-TEXT. +\long\def\inlinefmtifelse#1{\doinlinefmtifelse #1,,,\finish} +\long\def\doinlinefmtifelse#1,#2,#3,#4,\finish{% + \def\inlinefmtname{#1}% + \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\else \ignorespaces #3\fi +} +% +% For raw, must switch into @tex before parsing the argument, to avoid +% setting catcodes prematurely. Doing it this way means that, for +% example, @inlineraw{html, foo{bar} gets a parse error instead of being +% ignored. But this isn't important because if people want a literal +% *right* brace they would have to use a command anyway, so they may as +% well use a command to get a left brace too. We could re-use the +% delimiter character idea from \verb, but it seems like overkill. +% +\long\def\inlineraw{\tex \doinlineraw} +\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish} +\def\doinlinerawtwo#1,#2,\finish{% + \def\inlinerawname{#1}% + \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi + \endgroup % close group opened by \tex. +} + +% @inlineifset{VAR, TEXT} expands TEXT if VAR is @set. +% +\long\def\inlineifset#1{\doinlineifset #1,\finish} +\long\def\doinlineifset#1,#2,\finish{% + \def\inlinevarname{#1}% + \expandafter\ifx\csname SET\inlinevarname\endcsname\relax + \else\ignorespaces#2\fi +} + +% @inlineifclear{VAR, TEXT} expands TEXT if VAR is not @set. +% +\long\def\inlineifclear#1{\doinlineifclear #1,\finish} +\long\def\doinlineifclear#1,#2,\finish{% + \def\inlinevarname{#1}% + \expandafter\ifx\csname SET\inlinevarname\endcsname\relax \ignorespaces#2\fi +} + + +\message{glyphs,} +% and logos. + +% @@ prints an @, as does @atchar{}. +\def\@{\char64 } +\let\atchar=\@ + +% @{ @} @lbracechar{} @rbracechar{} all generate brace characters. +% Unless we're in typewriter, use \ecfont because the CM text fonts do +% not have braces, and we don't want to switch into math. +\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}} +\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}} +\let\{=\mylbrace \let\lbracechar=\{ +\let\}=\myrbrace \let\rbracechar=\} +\begingroup + % Definitions to produce \{ and \} commands for indices, + % and @{ and @} for the aux/toc files. + \catcode`\{ = \other \catcode`\} = \other + \catcode`\[ = 1 \catcode`\] = 2 + \catcode`\! = 0 \catcode`\\ = \other + !gdef!lbracecmd[\{]% + !gdef!rbracecmd[\}]% + !gdef!lbraceatcmd[@{]% + !gdef!rbraceatcmd[@}]% +!endgroup + +% @comma{} to avoid , parsing problems. +\let\comma = , + +% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent +% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H. +\let\, = \ptexc +\let\dotaccent = \ptexdot +\def\ringaccent#1{{\accent23 #1}} +\let\tieaccent = \ptext +\let\ubaraccent = \ptexb +\let\udotaccent = \d + +% Other special characters: @questiondown @exclamdown @ordf @ordm +% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss. +\def\questiondown{?`} +\def\exclamdown{!`} +\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}} +\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}} + +% Dotless i and dotless j, used for accents. +\def\imacro{i} +\def\jmacro{j} +\def\dotless#1{% + \def\temp{#1}% + \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi + \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi + \else \errmessage{@dotless can be used only with i or j}% + \fi\fi +} + +% The \TeX{} logo, as in plain, but resetting the spacing so that a +% period following counts as ending a sentence. (Idea found in latex.) +% +\edef\TeX{\TeX \spacefactor=1000 } + +% @LaTeX{} logo. Not quite the same results as the definition in +% latex.ltx, since we use a different font for the raised A; it's most +% convenient for us to use an explicitly smaller font, rather than using +% the \scriptstyle font (since we don't reset \scriptstyle and +% \scriptscriptstyle). +% +\def\LaTeX{% + L\kern-.36em + {\setbox0=\hbox{T}% + \vbox to \ht0{\hbox{% + \ifx\textnominalsize\xwordpt + % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX. + % Revert to plain's \scriptsize, which is 7pt. + \count255=\the\fam $\fam\count255 \scriptstyle A$% + \else + % For 11pt, we can use our lllsize. + \selectfonts\lllsize A% + \fi + }% + \vss + }}% + \kern-.15em + \TeX +} + +% Some math mode symbols. +\def\bullet{$\ptexbullet$} +\def\geq{\ifmmode \ge\else $\ge$\fi} +\def\leq{\ifmmode \le\else $\le$\fi} +\def\minus{\ifmmode -\else $-$\fi} + +% @dots{} outputs an ellipsis using the current font. +% We do .5em per period so that it has the same spacing in the cm +% typewriter fonts as three actual period characters; on the other hand, +% in other typewriter fonts three periods are wider than 1.5em. So do +% whichever is larger. +% +\def\dots{% + \leavevmode + \setbox0=\hbox{...}% get width of three periods + \ifdim\wd0 > 1.5em + \dimen0 = \wd0 + \else + \dimen0 = 1.5em + \fi + \hbox to \dimen0{% + \hskip 0pt plus.25fil + .\hskip 0pt plus1fil + .\hskip 0pt plus1fil + .\hskip 0pt plus.5fil + }% +} + +% @enddots{} is an end-of-sentence ellipsis. +% +\def\enddots{% + \dots + \spacefactor=\endofsentencespacefactor +} + +% @point{}, @result{}, @expansion{}, @print{}, @equiv{}. +% +% Since these characters are used in examples, they should be an even number of +% \tt widths. Each \tt character is 1en, so two makes it 1em. +% +\def\point{$\star$} +\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}} +\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}} +\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}} +\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}} +\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}} + +% The @error{} command. +% Adapted from the TeXbook's \boxit. +% +\newbox\errorbox +% +{\tentt \global\dimen0 = 3em}% Width of the box. +\dimen2 = .55pt % Thickness of rules +% The text. (`r' is open on the right, `e' somewhat less so on the left.) +\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt} +% +\setbox\errorbox=\hbox to \dimen0{\hfil + \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right. + \advance\hsize by -2\dimen2 % Rules. + \vbox{% + \hrule height\dimen2 + \hbox{\vrule width\dimen2 \kern3pt % Space to left of text. + \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below. + \kern3pt\vrule width\dimen2}% Space to right. + \hrule height\dimen2} + \hfil} +% +\def\error{\leavevmode\lower.7ex\copy\errorbox} + +% @pounds{} is a sterling sign, which Knuth put in the CM italic font. +% +\def\pounds{{\it\$}} + +% @euro{} comes from a separate font, depending on the current style. +% We use the free feym* fonts from the eurosym package by Henrik +% Theiling, which support regular, slanted, bold and bold slanted (and +% "outlined" (blackboard board, sort of) versions, which we don't need). +% It is available from http://www.ctan.org/tex-archive/fonts/eurosym. +% +% Although only regular is the truly official Euro symbol, we ignore +% that. The Euro is designed to be slightly taller than the regular +% font height. +% +% feymr - regular +% feymo - slanted +% feybr - bold +% feybo - bold slanted +% +% There is no good (free) typewriter version, to my knowledge. +% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide. +% Hmm. +% +% Also doesn't work in math. Do we need to do math with euro symbols? +% Hope not. +% +% +\def\euro{{\eurofont e}} +\def\eurofont{% + % We set the font at each command, rather than predefining it in + % \textfonts and the other font-switching commands, so that + % installations which never need the symbol don't have to have the + % font installed. + % + % There is only one designed size (nominal 10pt), so we always scale + % that to the current nominal size. + % + % By the way, simply using "at 1em" works for cmr10 and the like, but + % does not work for cmbx10 and other extended/shrunken fonts. + % + \def\eurosize{\csname\curfontsize nominalsize\endcsname}% + % + \ifx\curfontstyle\bfstylename + % bold: + \font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize + \else + % regular: + \font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize + \fi + \thiseurofont +} + +% Glyphs from the EC fonts. We don't use \let for the aliases, because +% sometimes we redefine the original macro, and the alias should reflect +% the redefinition. +% +% Use LaTeX names for the Icelandic letters. +\def\DH{{\ecfont \char"D0}} % Eth +\def\dh{{\ecfont \char"F0}} % eth +\def\TH{{\ecfont \char"DE}} % Thorn +\def\th{{\ecfont \char"FE}} % thorn +% +\def\guillemetleft{{\ecfont \char"13}} +\def\guillemotleft{\guillemetleft} +\def\guillemetright{{\ecfont \char"14}} +\def\guillemotright{\guillemetright} +\def\guilsinglleft{{\ecfont \char"0E}} +\def\guilsinglright{{\ecfont \char"0F}} +\def\quotedblbase{{\ecfont \char"12}} +\def\quotesinglbase{{\ecfont \char"0D}} +% +% This positioning is not perfect (see the ogonek LaTeX package), but +% we have the precomposed glyphs for the most common cases. We put the +% tests to use those glyphs in the single \ogonek macro so we have fewer +% dummy definitions to worry about for index entries, etc. +% +% ogonek is also used with other letters in Lithuanian (IOU), but using +% the precomposed glyphs for those is not so easy since they aren't in +% the same EC font. +\def\ogonek#1{{% + \def\temp{#1}% + \ifx\temp\macrocharA\Aogonek + \else\ifx\temp\macrochara\aogonek + \else\ifx\temp\macrocharE\Eogonek + \else\ifx\temp\macrochare\eogonek + \else + \ecfont \setbox0=\hbox{#1}% + \ifdim\ht0=1ex\accent"0C #1% + \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}% + \fi + \fi\fi\fi\fi + }% +} +\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A} +\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a} +\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E} +\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e} +% +% Use the ec* fonts (cm-super in outline format) for non-CM glyphs. +\def\ecfont{% + % We can't distinguish serif/sans and italic/slanted, but this + % is used for crude hacks anyway (like adding French and German + % quotes to documents typeset with CM, where we lose kerning), so + % hopefully nobody will notice/care. + \edef\ecsize{\csname\curfontsize ecsize\endcsname}% + \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}% + \ifmonospace + % typewriter: + \font\thisecfont = ectt\ecsize \space at \nominalsize + \else + \ifx\curfontstyle\bfstylename + % bold: + \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize + \else + % regular: + \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize + \fi + \fi + \thisecfont +} + +% @registeredsymbol - R in a circle. The font for the R should really +% be smaller yet, but lllsize is the best we can do for now. +% Adapted from the plain.tex definition of \copyright. +% +\def\registeredsymbol{% + $^{{\ooalign{\hfil\raise.07ex\hbox{\selectfonts\lllsize R}% + \hfil\crcr\Orb}}% + }$% +} + +% @textdegree - the normal degrees sign. +% +\def\textdegree{$^\circ$} + +% Laurent Siebenmann reports \Orb undefined with: +% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38 +% so we'll define it if necessary. +% +\ifx\Orb\thisisundefined +\def\Orb{\mathhexbox20D} +\fi + +% Quotes. +\chardef\quotedblleft="5C +\chardef\quotedblright=`\" +\chardef\quoteleft=`\` +\chardef\quoteright=`\' + + +\message{page headings,} + +\newskip\titlepagetopglue \titlepagetopglue = 1.5in +\newskip\titlepagebottomglue \titlepagebottomglue = 2pc + +% First the title page. Must do @settitle before @titlepage. +\newif\ifseenauthor +\newif\iffinishedtitlepage + +% Do an implicit @contents or @shortcontents after @end titlepage if the +% user says @setcontentsaftertitlepage or @setshortcontentsaftertitlepage. +% +\newif\ifsetcontentsaftertitlepage + \let\setcontentsaftertitlepage = \setcontentsaftertitlepagetrue +\newif\ifsetshortcontentsaftertitlepage + \let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue + +\parseargdef\shorttitlepage{% + \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}% + \endgroup\page\hbox{}\page} + +\envdef\titlepage{% + % Open one extra group, as we want to close it in the middle of \Etitlepage. + \begingroup + \parindent=0pt \textfonts + % Leave some space at the very top of the page. + \vglue\titlepagetopglue + % No rule at page bottom unless we print one at the top with @title. + \finishedtitlepagetrue + % + % Most title ``pages'' are actually two pages long, with space + % at the top of the second. We don't want the ragged left on the second. + \let\oldpage = \page + \def\page{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + \let\page = \oldpage + \page + \null + }% +} + +\def\Etitlepage{% + \iffinishedtitlepage\else + \finishtitlepage + \fi + % It is important to do the page break before ending the group, + % because the headline and footline are only empty inside the group. + % If we use the new definition of \page, we always get a blank page + % after the title page, which we certainly don't want. + \oldpage + \endgroup + % + % Need this before the \...aftertitlepage checks so that if they are + % in effect the toc pages will come out with page numbers. + \HEADINGSon + % + % If they want short, they certainly want long too. + \ifsetshortcontentsaftertitlepage + \shortcontents + \contents + \global\let\shortcontents = \relax + \global\let\contents = \relax + \fi + % + \ifsetcontentsaftertitlepage + \contents + \global\let\contents = \relax + \global\let\shortcontents = \relax + \fi +} + +\def\finishtitlepage{% + \vskip4pt \hrule height 2pt width \hsize + \vskip\titlepagebottomglue + \finishedtitlepagetrue +} + +% Settings used for typesetting titles: no hyphenation, no indentation, +% don't worry much about spacing, ragged right. This should be used +% inside a \vbox, and fonts need to be set appropriately first. Because +% it is always used for titles, nothing else, we call \rmisbold. \par +% should be specified before the end of the \vbox, since a vbox is a group. +% +\def\raggedtitlesettings{% + \rmisbold + \hyphenpenalty=10000 + \parindent=0pt + \tolerance=5000 + \ptexraggedright +} + +% Macros to be used within @titlepage: + +\let\subtitlerm=\tenrm +\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines} + +\parseargdef\title{% + \checkenv\titlepage + \vbox{\titlefonts \raggedtitlesettings #1\par}% + % print a rule at the page bottom also. + \finishedtitlepagefalse + \vskip4pt \hrule height 4pt width \hsize \vskip4pt +} + +\parseargdef\subtitle{% + \checkenv\titlepage + {\subtitlefont \rightline{#1}}% +} + +% @author should come last, but may come many times. +% It can also be used inside @quotation. +% +\parseargdef\author{% + \def\temp{\quotation}% + \ifx\thisenv\temp + \def\quotationauthor{#1}% printed in \Equotation. + \else + \checkenv\titlepage + \ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi + {\secfonts\rmisbold \leftline{#1}}% + \fi +} + + +% Set up page headings and footings. + +\let\thispage=\folio + +\newtoks\evenheadline % headline on even pages +\newtoks\oddheadline % headline on odd pages +\newtoks\evenfootline % footline on even pages +\newtoks\oddfootline % footline on odd pages + +% Now make TeX use those variables +\headline={{\textfonts\rm \ifodd\pageno \the\oddheadline + \else \the\evenheadline \fi}} +\footline={{\textfonts\rm \ifodd\pageno \the\oddfootline + \else \the\evenfootline \fi}\HEADINGShook} +\let\HEADINGShook=\relax + +% Commands to set those variables. +% For example, this is what @headings on does +% @evenheading @thistitle|@thispage|@thischapter +% @oddheading @thischapter|@thispage|@thistitle +% @evenfooting @thisfile|| +% @oddfooting ||@thisfile + + +\def\evenheading{\parsearg\evenheadingxxx} +\def\evenheadingxxx #1{\evenheadingyyy #1\|\|\|\|\finish} +\def\evenheadingyyy #1\|#2\|#3\|#4\finish{% +\global\evenheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddheading{\parsearg\oddheadingxxx} +\def\oddheadingxxx #1{\oddheadingyyy #1\|\|\|\|\finish} +\def\oddheadingyyy #1\|#2\|#3\|#4\finish{% +\global\oddheadline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\parseargdef\everyheading{\oddheadingxxx{#1}\evenheadingxxx{#1}}% + +\def\evenfooting{\parsearg\evenfootingxxx} +\def\evenfootingxxx #1{\evenfootingyyy #1\|\|\|\|\finish} +\def\evenfootingyyy #1\|#2\|#3\|#4\finish{% +\global\evenfootline={\rlap{\centerline{#2}}\line{#1\hfil#3}}} + +\def\oddfooting{\parsearg\oddfootingxxx} +\def\oddfootingxxx #1{\oddfootingyyy #1\|\|\|\|\finish} +\def\oddfootingyyy #1\|#2\|#3\|#4\finish{% + \global\oddfootline = {\rlap{\centerline{#2}}\line{#1\hfil#3}}% + % + % Leave some space for the footline. Hopefully ok to assume + % @evenfooting will not be used by itself. + \global\advance\pageheight by -12pt + \global\advance\vsize by -12pt +} + +\parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}} + +% @evenheadingmarks top \thischapter <- chapter at the top of a page +% @evenheadingmarks bottom \thischapter <- chapter at the bottom of a page +% +% The same set of arguments for: +% +% @oddheadingmarks +% @evenfootingmarks +% @oddfootingmarks +% @everyheadingmarks +% @everyfootingmarks + +\def\evenheadingmarks{\headingmarks{even}{heading}} +\def\oddheadingmarks{\headingmarks{odd}{heading}} +\def\evenfootingmarks{\headingmarks{even}{footing}} +\def\oddfootingmarks{\headingmarks{odd}{footing}} +\def\everyheadingmarks#1 {\headingmarks{even}{heading}{#1} + \headingmarks{odd}{heading}{#1} } +\def\everyfootingmarks#1 {\headingmarks{even}{footing}{#1} + \headingmarks{odd}{footing}{#1} } +% #1 = even/odd, #2 = heading/footing, #3 = top/bottom. +\def\headingmarks#1#2#3 {% + \expandafter\let\expandafter\temp \csname get#3headingmarks\endcsname + \global\expandafter\let\csname get#1#2marks\endcsname \temp +} + +\everyheadingmarks bottom +\everyfootingmarks bottom + +% @headings double turns headings on for double-sided printing. +% @headings single turns headings on for single-sided printing. +% @headings off turns them off. +% @headings on same as @headings double, retained for compatibility. +% @headings after turns on double-sided headings after this page. +% @headings doubleafter turns on double-sided headings after this page. +% @headings singleafter turns on single-sided headings after this page. +% By default, they are off at the start of a document, +% and turned `on' after @end titlepage. + +\def\headings #1 {\csname HEADINGS#1\endcsname} + +\def\headingsoff{% non-global headings elimination + \evenheadline={\hfil}\evenfootline={\hfil}% + \oddheadline={\hfil}\oddfootline={\hfil}% +} + +\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting +\HEADINGSoff % it's the default + +% When we turn headings on, set the page number to 1. +% For double-sided printing, put current file name in lower left corner, +% chapter name on inside top of right hand pages, document +% title on inside top of left hand pages, and page numbers on outside top +% edge of all pages. +\def\HEADINGSdouble{% +\global\pageno=1 +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} +\let\contentsalignmacro = \chappager + +% For single-sided printing, chapter title goes across top left of page, +% page number on top right. +\def\HEADINGSsingle{% +\global\pageno=1 +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} +\def\HEADINGSon{\HEADINGSdouble} + +\def\HEADINGSafter{\let\HEADINGShook=\HEADINGSdoublex} +\let\HEADINGSdoubleafter=\HEADINGSafter +\def\HEADINGSdoublex{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\folio\hfil\thistitle}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chapoddpage +} + +\def\HEADINGSsingleafter{\let\HEADINGShook=\HEADINGSsinglex} +\def\HEADINGSsinglex{% +\global\evenfootline={\hfil} +\global\oddfootline={\hfil} +\global\evenheadline={\line{\thischapter\hfil\folio}} +\global\oddheadline={\line{\thischapter\hfil\folio}} +\global\let\contentsalignmacro = \chappager +} + +% Subroutines used in generating headings +% This produces Day Month Year style of output. +% Only define if not already defined, in case a txi-??.tex file has set +% up a different format (e.g., txi-cs.tex does this). +\ifx\today\thisisundefined +\def\today{% + \number\day\space + \ifcase\month + \or\putwordMJan\or\putwordMFeb\or\putwordMMar\or\putwordMApr + \or\putwordMMay\or\putwordMJun\or\putwordMJul\or\putwordMAug + \or\putwordMSep\or\putwordMOct\or\putwordMNov\or\putwordMDec + \fi + \space\number\year} +\fi + +% @settitle line... specifies the title of the document, for headings. +% It generates no output of its own. +\def\thistitle{\putwordNoTitle} +\def\settitle{\parsearg{\gdef\thistitle}} + + +\message{tables,} +% Tables -- @table, @ftable, @vtable, @item(x). + +% default indentation of table text +\newdimen\tableindent \tableindent=.8in +% default indentation of @itemize and @enumerate text +\newdimen\itemindent \itemindent=.3in +% margin between end of table item and start of table text. +\newdimen\itemmargin \itemmargin=.1in + +% used internally for \itemindent minus \itemmargin +\newdimen\itemmax + +% Note @table, @ftable, and @vtable define @item, @itemx, etc., with +% these defs. +% They also define \itemindex +% to index the item name in whatever manner is desired (perhaps none). + +\newif\ifitemxneedsnegativevskip + +\def\itemxpar{\par\ifitemxneedsnegativevskip\nobreak\vskip-\parskip\nobreak\fi} + +\def\internalBitem{\smallbreak \parsearg\itemzzz} +\def\internalBitemx{\itemxpar \parsearg\itemzzz} + +\def\itemzzz #1{\begingroup % + \advance\hsize by -\rightskip + \advance\hsize by -\tableindent + \setbox0=\hbox{\itemindicate{#1}}% + \itemindex{#1}% + \nobreak % This prevents a break before @itemx. + % + % If the item text does not fit in the space we have, put it on a line + % by itself, and do not allow a page break either before or after that + % line. We do not start a paragraph here because then if the next + % command is, e.g., @kindex, the whatsit would get put into the + % horizontal list on a line by itself, resulting in extra blank space. + \ifdim \wd0>\itemmax + % + % Make this a paragraph so we get the \parskip glue and wrapping, + % but leave it ragged-right. + \begingroup + \advance\leftskip by-\tableindent + \advance\hsize by\tableindent + \advance\rightskip by0pt plus1fil\relax + \leavevmode\unhbox0\par + \endgroup + % + % We're going to be starting a paragraph, but we don't want the + % \parskip glue -- logically it's part of the @item we just started. + \nobreak \vskip-\parskip + % + % Stop a page break at the \parskip glue coming up. However, if + % what follows is an environment such as @example, there will be no + % \parskip glue; then the negative vskip we just inserted would + % cause the example and the item to crash together. So we use this + % bizarre value of 10001 as a signal to \aboveenvbreak to insert + % \parskip glue after all. Section titles are handled this way also. + % + \penalty 10001 + \endgroup + \itemxneedsnegativevskipfalse + \else + % The item text fits into the space. Start a paragraph, so that the + % following text (if any) will end up on the same line. + \noindent + % Do this with kerns and \unhbox so that if there is a footnote in + % the item text, it can migrate to the main vertical list and + % eventually be printed. + \nobreak\kern-\tableindent + \dimen0 = \itemmax \advance\dimen0 by \itemmargin \advance\dimen0 by -\wd0 + \unhbox0 + \nobreak\kern\dimen0 + \endgroup + \itemxneedsnegativevskiptrue + \fi +} + +\def\item{\errmessage{@item while not in a list environment}} +\def\itemx{\errmessage{@itemx while not in a list environment}} + +% @table, @ftable, @vtable. +\envdef\table{% + \let\itemindex\gobble + \tablecheck{table}% +} +\envdef\ftable{% + \def\itemindex ##1{\doind {fn}{\code{##1}}}% + \tablecheck{ftable}% +} +\envdef\vtable{% + \def\itemindex ##1{\doind {vr}{\code{##1}}}% + \tablecheck{vtable}% +} +\def\tablecheck#1{% + \ifnum \the\catcode`\^^M=\active + \endgroup + \errmessage{This command won't work in this context; perhaps the problem is + that we are \inenvironment\thisenv}% + \def\next{\doignore{#1}}% + \else + \let\next\tablex + \fi + \next +} +\def\tablex#1{% + \def\itemindicate{#1}% + \parsearg\tabley +} +\def\tabley#1{% + {% + \makevalueexpandable + \edef\temp{\noexpand\tablez #1\space\space\space}% + \expandafter + }\temp \endtablez +} +\def\tablez #1 #2 #3 #4\endtablez{% + \aboveenvbreak + \ifnum 0#1>0 \advance \leftskip by #1\mil \fi + \ifnum 0#2>0 \tableindent=#2\mil \fi + \ifnum 0#3>0 \advance \rightskip by #3\mil \fi + \itemmax=\tableindent + \advance \itemmax by -\itemmargin + \advance \leftskip by \tableindent + \exdentamount=\tableindent + \parindent = 0pt + \parskip = \smallskipamount + \ifdim \parskip=0pt \parskip=2pt \fi + \let\item = \internalBitem + \let\itemx = \internalBitemx +} +\def\Etable{\endgraf\afterenvbreak} +\let\Eftable\Etable +\let\Evtable\Etable +\let\Eitemize\Etable +\let\Eenumerate\Etable + +% This is the counter used by @enumerate, which is really @itemize + +\newcount \itemno + +\envdef\itemize{\parsearg\doitemize} + +\def\doitemize#1{% + \aboveenvbreak + \itemmax=\itemindent + \advance\itemmax by -\itemmargin + \advance\leftskip by \itemindent + \exdentamount=\itemindent + \parindent=0pt + \parskip=\smallskipamount + \ifdim\parskip=0pt \parskip=2pt \fi + % + % Try typesetting the item mark that if the document erroneously says + % something like @itemize @samp (intending @table), there's an error + % right away at the @itemize. It's not the best error message in the + % world, but it's better than leaving it to the @item. This means if + % the user wants an empty mark, they have to say @w{} not just @w. + \def\itemcontents{#1}% + \setbox0 = \hbox{\itemcontents}% + % + % @itemize with no arg is equivalent to @itemize @bullet. + \ifx\itemcontents\empty\def\itemcontents{\bullet}\fi + % + \let\item=\itemizeitem +} + +% Definition of @item while inside @itemize and @enumerate. +% +\def\itemizeitem{% + \advance\itemno by 1 % for enumerations + {\let\par=\endgraf \smallbreak}% reasonable place to break + {% + % If the document has an @itemize directly after a section title, a + % \nobreak will be last on the list, and \sectionheading will have + % done a \vskip-\parskip. In that case, we don't want to zero + % parskip, or the item text will crash with the heading. On the + % other hand, when there is normal text preceding the item (as there + % usually is), we do want to zero parskip, or there would be too much + % space. In that case, we won't have a \nobreak before. At least + % that's the theory. + \ifnum\lastpenalty<10000 \parskip=0in \fi + \noindent + \hbox to 0pt{\hss \itemcontents \kern\itemmargin}% + % + \vadjust{\penalty 1200}}% not good to break after first line of item. + \flushcr +} + +% \splitoff TOKENS\endmark defines \first to be the first token in +% TOKENS, and \rest to be the remainder. +% +\def\splitoff#1#2\endmark{\def\first{#1}\def\rest{#2}}% + +% Allow an optional argument of an uppercase letter, lowercase letter, +% or number, to specify the first label in the enumerated list. No +% argument is the same as `1'. +% +\envparseargdef\enumerate{\enumeratey #1 \endenumeratey} +\def\enumeratey #1 #2\endenumeratey{% + % If we were given no argument, pretend we were given `1'. + \def\thearg{#1}% + \ifx\thearg\empty \def\thearg{1}\fi + % + % Detect if the argument is a single token. If so, it might be a + % letter. Otherwise, the only valid thing it can be is a number. + % (We will always have one token, because of the test we just made. + % This is a good thing, since \splitoff doesn't work given nothing at + % all -- the first parameter is undelimited.) + \expandafter\splitoff\thearg\endmark + \ifx\rest\empty + % Only one token in the argument. It could still be anything. + % A ``lowercase letter'' is one whose \lccode is nonzero. + % An ``uppercase letter'' is one whose \lccode is both nonzero, and + % not equal to itself. + % Otherwise, we assume it's a number. + % + % We need the \relax at the end of the \ifnum lines to stop TeX from + % continuing to look for a . + % + \ifnum\lccode\expandafter`\thearg=0\relax + \numericenumerate % a number (we hope) + \else + % It's a letter. + \ifnum\lccode\expandafter`\thearg=\expandafter`\thearg\relax + \lowercaseenumerate % lowercase letter + \else + \uppercaseenumerate % uppercase letter + \fi + \fi + \else + % Multiple tokens in the argument. We hope it's a number. + \numericenumerate + \fi +} + +% An @enumerate whose labels are integers. The starting integer is +% given in \thearg. +% +\def\numericenumerate{% + \itemno = \thearg + \startenumeration{\the\itemno}% +} + +% The starting (lowercase) letter is in \thearg. +\def\lowercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more lowercase letters in @enumerate; get a bigger + alphabet}% + \fi + \char\lccode\itemno + }% +} + +% The starting (uppercase) letter is in \thearg. +\def\uppercaseenumerate{% + \itemno = \expandafter`\thearg + \startenumeration{% + % Be sure we're not beyond the end of the alphabet. + \ifnum\itemno=0 + \errmessage{No more uppercase letters in @enumerate; get a bigger + alphabet} + \fi + \char\uccode\itemno + }% +} + +% Call \doitemize, adding a period to the first argument and supplying the +% common last two arguments. Also subtract one from the initial value in +% \itemno, since @item increments \itemno. +% +\def\startenumeration#1{% + \advance\itemno by -1 + \doitemize{#1.}\flushcr +} + +% @alphaenumerate and @capsenumerate are abbreviations for giving an arg +% to @enumerate. +% +\def\alphaenumerate{\enumerate{a}} +\def\capsenumerate{\enumerate{A}} +\def\Ealphaenumerate{\Eenumerate} +\def\Ecapsenumerate{\Eenumerate} + + +% @multitable macros +% Amy Hendrickson, 8/18/94, 3/6/96 +% +% @multitable ... @end multitable will make as many columns as desired. +% Contents of each column will wrap at width given in preamble. Width +% can be specified either with sample text given in a template line, +% or in percent of \hsize, the current width of text on page. + +% Table can continue over pages but will only break between lines. + +% To make preamble: +% +% Either define widths of columns in terms of percent of \hsize: +% @multitable @columnfractions .25 .3 .45 +% @item ... +% +% Numbers following @columnfractions are the percent of the total +% current hsize to be used for each column. You may use as many +% columns as desired. + + +% Or use a template: +% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +% @item ... +% using the widest term desired in each column. + +% Each new table line starts with @item, each subsequent new column +% starts with @tab. Empty columns may be produced by supplying @tab's +% with nothing between them for as many times as empty columns are needed, +% ie, @tab@tab@tab will produce two empty columns. + +% @item, @tab do not need to be on their own lines, but it will not hurt +% if they are. + +% Sample multitable: + +% @multitable {Column 1 template} {Column 2 template} {Column 3 template} +% @item first col stuff @tab second col stuff @tab third col +% @item +% first col stuff +% @tab +% second col stuff +% @tab +% third col +% @item first col stuff @tab second col stuff +% @tab Many paragraphs of text may be used in any column. +% +% They will wrap at the width determined by the template. +% @item@tab@tab This will be in third column. +% @end multitable + +% Default dimensions may be reset by user. +% @multitableparskip is vertical space between paragraphs in table. +% @multitableparindent is paragraph indent in table. +% @multitablecolmargin is horizontal space to be left between columns. +% @multitablelinespace is space to leave between table items, baseline +% to baseline. +% 0pt means it depends on current normal line spacing. +% +\newskip\multitableparskip +\newskip\multitableparindent +\newdimen\multitablecolspace +\newskip\multitablelinespace +\multitableparskip=0pt +\multitableparindent=6pt +\multitablecolspace=12pt +\multitablelinespace=0pt + +% Macros used to set up halign preamble: +% +\let\endsetuptable\relax +\def\xendsetuptable{\endsetuptable} +\let\columnfractions\relax +\def\xcolumnfractions{\columnfractions} +\newif\ifsetpercent + +% #1 is the @columnfraction, usually a decimal number like .5, but might +% be just 1. We just use it, whatever it is. +% +\def\pickupwholefraction#1 {% + \global\advance\colcount by 1 + \expandafter\xdef\csname col\the\colcount\endcsname{#1\hsize}% + \setuptable +} + +\newcount\colcount +\def\setuptable#1{% + \def\firstarg{#1}% + \ifx\firstarg\xendsetuptable + \let\go = \relax + \else + \ifx\firstarg\xcolumnfractions + \global\setpercenttrue + \else + \ifsetpercent + \let\go\pickupwholefraction + \else + \global\advance\colcount by 1 + \setbox0=\hbox{#1\unskip\space}% Add a normal word space as a + % separator; typically that is always in the input, anyway. + \expandafter\xdef\csname col\the\colcount\endcsname{\the\wd0}% + \fi + \fi + \ifx\go\pickupwholefraction + % Put the argument back for the \pickupwholefraction call, so + % we'll always have a period there to be parsed. + \def\go{\pickupwholefraction#1}% + \else + \let\go = \setuptable + \fi% + \fi + \go +} + +% multitable-only commands. +% +% @headitem starts a heading row, which we typeset in bold. +% Assignments have to be global since we are inside the implicit group +% of an alignment entry. \everycr resets \everytab so we don't have to +% undo it ourselves. +\def\headitemfont{\b}% for people to use in the template row; not changeable +\def\headitem{% + \checkenv\multitable + \crcr + \global\everytab={\bf}% can't use \headitemfont since the parsing differs + \the\everytab % for the first item +}% +% +% A \tab used to include \hskip1sp. But then the space in a template +% line is not enough. That is bad. So let's go back to just `&' until +% we again encounter the problem the 1sp was intended to solve. +% --karl, nathan@acm.org, 20apr99. +\def\tab{\checkenv\multitable &\the\everytab}% + +% @multitable ... @end multitable definitions: +% +\newtoks\everytab % insert after every tab. +% +\envdef\multitable{% + \vskip\parskip + \startsavinginserts + % + % @item within a multitable starts a normal row. + % We use \def instead of \let so that if one of the multitable entries + % contains an @itemize, we don't choke on the \item (seen as \crcr aka + % \endtemplate) expanding \doitemize. + \def\item{\crcr}% + % + \tolerance=9500 + \hbadness=9500 + \setmultitablespacing + \parskip=\multitableparskip + \parindent=\multitableparindent + \overfullrule=0pt + \global\colcount=0 + % + \everycr = {% + \noalign{% + \global\everytab={}% + \global\colcount=0 % Reset the column counter. + % Check for saved footnotes, etc. + \checkinserts + % Keeps underfull box messages off when table breaks over pages. + %\filbreak + % Maybe so, but it also creates really weird page breaks when the + % table breaks over pages. Wouldn't \vfil be better? Wait until the + % problem manifests itself, so it can be fixed for real --karl. + }% + }% + % + \parsearg\domultitable +} +\def\domultitable#1{% + % To parse everything between @multitable and @item: + \setuptable#1 \endsetuptable + % + % This preamble sets up a generic column definition, which will + % be used as many times as user calls for columns. + % \vtop will set a single line and will also let text wrap and + % continue for many paragraphs if desired. + \halign\bgroup &% + \global\advance\colcount by 1 + \multistrut + \vtop{% + % Use the current \colcount to find the correct column width: + \hsize=\expandafter\csname col\the\colcount\endcsname + % + % In order to keep entries from bumping into each other + % we will add a \leftskip of \multitablecolspace to all columns after + % the first one. + % + % If a template has been used, we will add \multitablecolspace + % to the width of each template entry. + % + % If the user has set preamble in terms of percent of \hsize we will + % use that dimension as the width of the column, and the \leftskip + % will keep entries from bumping into each other. Table will start at + % left margin and final column will justify at right margin. + % + % Make sure we don't inherit \rightskip from the outer environment. + \rightskip=0pt + \ifnum\colcount=1 + % The first column will be indented with the surrounding text. + \advance\hsize by\leftskip + \else + \ifsetpercent \else + % If user has not set preamble in terms of percent of \hsize + % we will advance \hsize by \multitablecolspace. + \advance\hsize by \multitablecolspace + \fi + % In either case we will make \leftskip=\multitablecolspace: + \leftskip=\multitablecolspace + \fi + % Ignoring space at the beginning and end avoids an occasional spurious + % blank line, when TeX decides to break the line at the space before the + % box from the multistrut, so the strut ends up on a line by itself. + % For example: + % @multitable @columnfractions .11 .89 + % @item @code{#} + % @tab Legal holiday which is valid in major parts of the whole country. + % Is automatically provided with highlighting sequences respectively + % marking characters. + \noindent\ignorespaces##\unskip\multistrut + }\cr +} +\def\Emultitable{% + \crcr + \egroup % end the \halign + \global\setpercentfalse +} + +\def\setmultitablespacing{% + \def\multistrut{\strut}% just use the standard line spacing + % + % Compute \multitablelinespace (if not defined by user) for use in + % \multitableparskip calculation. We used define \multistrut based on + % this, but (ironically) that caused the spacing to be off. + % See bug-texinfo report from Werner Lemberg, 31 Oct 2004 12:52:20 +0100. +\ifdim\multitablelinespace=0pt +\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip +\global\advance\multitablelinespace by-\ht0 +\fi +% Test to see if parskip is larger than space between lines of +% table. If not, do nothing. +% If so, set to same dimension as multitablelinespace. +\ifdim\multitableparskip>\multitablelinespace +\global\multitableparskip=\multitablelinespace +\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller + % than skip between lines in the table. +\fi% +\ifdim\multitableparskip=0pt +\global\multitableparskip=\multitablelinespace +\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller + % than skip between lines in the table. +\fi} + + +\message{conditionals,} + +% @iftex, @ifnotdocbook, @ifnothtml, @ifnotinfo, @ifnotplaintext, +% @ifnotxml always succeed. They currently do nothing; we don't +% attempt to check whether the conditionals are properly nested. But we +% have to remember that they are conditionals, so that @end doesn't +% attempt to close an environment group. +% +\def\makecond#1{% + \expandafter\let\csname #1\endcsname = \relax + \expandafter\let\csname iscond.#1\endcsname = 1 +} +\makecond{iftex} +\makecond{ifnotdocbook} +\makecond{ifnothtml} +\makecond{ifnotinfo} +\makecond{ifnotplaintext} +\makecond{ifnotxml} + +% Ignore @ignore, @ifhtml, @ifinfo, and the like. +% +\def\direntry{\doignore{direntry}} +\def\documentdescription{\doignore{documentdescription}} +\def\docbook{\doignore{docbook}} +\def\html{\doignore{html}} +\def\ifdocbook{\doignore{ifdocbook}} +\def\ifhtml{\doignore{ifhtml}} +\def\ifinfo{\doignore{ifinfo}} +\def\ifnottex{\doignore{ifnottex}} +\def\ifplaintext{\doignore{ifplaintext}} +\def\ifxml{\doignore{ifxml}} +\def\ignore{\doignore{ignore}} +\def\menu{\doignore{menu}} +\def\xml{\doignore{xml}} + +% Ignore text until a line `@end #1', keeping track of nested conditionals. +% +% A count to remember the depth of nesting. +\newcount\doignorecount + +\def\doignore#1{\begingroup + % Scan in ``verbatim'' mode: + \obeylines + \catcode`\@ = \other + \catcode`\{ = \other + \catcode`\} = \other + % + % Make sure that spaces turn into tokens that match what \doignoretext wants. + \spaceisspace + % + % Count number of #1's that we've seen. + \doignorecount = 0 + % + % Swallow text until we reach the matching `@end #1'. + \dodoignore{#1}% +} + +{ \catcode`_=11 % We want to use \_STOP_ which cannot appear in texinfo source. + \obeylines % + % + \gdef\dodoignore#1{% + % #1 contains the command name as a string, e.g., `ifinfo'. + % + % Define a command to find the next `@end #1'. + \long\def\doignoretext##1^^M@end #1{% + \doignoretextyyy##1^^M@#1\_STOP_}% + % + % And this command to find another #1 command, at the beginning of a + % line. (Otherwise, we would consider a line `@c @ifset', for + % example, to count as an @ifset for nesting.) + \long\def\doignoretextyyy##1^^M@#1##2\_STOP_{\doignoreyyy{##2}\_STOP_}% + % + % And now expand that command. + \doignoretext ^^M% + }% +} + +\def\doignoreyyy#1{% + \def\temp{#1}% + \ifx\temp\empty % Nothing found. + \let\next\doignoretextzzz + \else % Found a nested condition, ... + \advance\doignorecount by 1 + \let\next\doignoretextyyy % ..., look for another. + % If we're here, #1 ends with ^^M\ifinfo (for example). + \fi + \next #1% the token \_STOP_ is present just after this macro. +} + +% We have to swallow the remaining "\_STOP_". +% +\def\doignoretextzzz#1{% + \ifnum\doignorecount = 0 % We have just found the outermost @end. + \let\next\enddoignore + \else % Still inside a nested condition. + \advance\doignorecount by -1 + \let\next\doignoretext % Look for the next @end. + \fi + \next +} + +% Finish off ignored text. +{ \obeylines% + % Ignore anything after the last `@end #1'; this matters in verbatim + % environments, where otherwise the newline after an ignored conditional + % would result in a blank line in the output. + \gdef\enddoignore#1^^M{\endgroup\ignorespaces}% +} + + +% @set VAR sets the variable VAR to an empty value. +% @set VAR REST-OF-LINE sets VAR to the value REST-OF-LINE. +% +% Since we want to separate VAR from REST-OF-LINE (which might be +% empty), we can't just use \parsearg; we have to insert a space of our +% own to delimit the rest of the line, and then take it out again if we +% didn't need it. +% We rely on the fact that \parsearg sets \catcode`\ =10. +% +\parseargdef\set{\setyyy#1 \endsetyyy} +\def\setyyy#1 #2\endsetyyy{% + {% + \makevalueexpandable + \def\temp{#2}% + \edef\next{\gdef\makecsname{SET#1}}% + \ifx\temp\empty + \next{}% + \else + \setzzz#2\endsetzzz + \fi + }% +} +% Remove the trailing space \setxxx inserted. +\def\setzzz#1 \endsetzzz{\next{#1}} + +% @clear VAR clears (i.e., unsets) the variable VAR. +% +\parseargdef\clear{% + {% + \makevalueexpandable + \global\expandafter\let\csname SET#1\endcsname=\relax + }% +} + +% @value{foo} gets the text saved in variable foo. +\def\value{\begingroup\makevalueexpandable\valuexxx} +\def\valuexxx#1{\expandablevalue{#1}\endgroup} +{ + \catcode`\-=\active \catcode`\_=\active + % + \gdef\makevalueexpandable{% + \let\value = \expandablevalue + % We don't want these characters active, ... + \catcode`\-=\other \catcode`\_=\other + % ..., but we might end up with active ones in the argument if + % we're called from @code, as @code{@value{foo-bar_}}, though. + % So \let them to their normal equivalents. + \let-\normaldash \let_\normalunderscore + } +} + +% We have this subroutine so that we can handle at least some @value's +% properly in indexes (we call \makevalueexpandable in \indexdummies). +% The command has to be fully expandable (if the variable is set), since +% the result winds up in the index file. This means that if the +% variable's value contains other Texinfo commands, it's almost certain +% it will fail (although perhaps we could fix that with sufficient work +% to do a one-level expansion on the result, instead of complete). +% +% Unfortunately, this has the consequence that when _ is in the *value* +% of an @set, it does not print properly in the roman fonts (get the cmr +% dot accent at position 126 instead). No fix comes to mind, and it's +% been this way since 2003 or earlier, so just ignore it. +% +\def\expandablevalue#1{% + \expandafter\ifx\csname SET#1\endcsname\relax + {[No value for ``#1'']}% + \message{Variable `#1', used in @value, is not set.}% + \else + \csname SET#1\endcsname + \fi +} + +% @ifset VAR ... @end ifset reads the `...' iff VAR has been defined +% with @set. +% +% To get the special treatment we need for `@end ifset,' we call +% \makecond and then redefine. +% +\makecond{ifset} +\def\ifset{\parsearg{\doifset{\let\next=\ifsetfail}}} +\def\doifset#1#2{% + {% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname SET#2\endcsname\relax + #1% If not set, redefine \next. + \fi + \expandafter + }\next +} +\def\ifsetfail{\doignore{ifset}} + +% @ifclear VAR ... @end executes the `...' iff VAR has never been +% defined with @set, or has been undefined with @clear. +% +% The `\else' inside the `\doifset' parameter is a trick to reuse the +% above code: if the variable is not set, do nothing, if it is set, +% then redefine \next to \ifclearfail. +% +\makecond{ifclear} +\def\ifclear{\parsearg{\doifset{\else \let\next=\ifclearfail}}} +\def\ifclearfail{\doignore{ifclear}} + +% @ifcommandisdefined CMD ... @end executes the `...' if CMD (written +% without the @) is in fact defined. We can only feasibly check at the +% TeX level, so something like `mathcode' is going to considered +% defined even though it is not a Texinfo command. +% +\makecond{ifcommanddefined} +\def\ifcommanddefined{\parsearg{\doifcmddefined{\let\next=\ifcmddefinedfail}}} +% +\def\doifcmddefined#1#2{{% + \makevalueexpandable + \let\next=\empty + \expandafter\ifx\csname #2\endcsname\relax + #1% If not defined, \let\next as above. + \fi + \expandafter + }\next +} +\def\ifcmddefinedfail{\doignore{ifcommanddefined}} + +% @ifcommandnotdefined CMD ... handled similar to @ifclear above. +\makecond{ifcommandnotdefined} +\def\ifcommandnotdefined{% + \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}} +\def\ifcmdnotdefinedfail{\doignore{ifcommandnotdefined}} + +% Set the `txicommandconditionals' variable, so documents have a way to +% test if the @ifcommand...defined conditionals are available. +\set txicommandconditionals + +% @dircategory CATEGORY -- specify a category of the dir file +% which this file should belong to. Ignore this in TeX. +\let\dircategory=\comment + +% @defininfoenclose. +\let\definfoenclose=\comment + + +\message{indexing,} +% Index generation facilities + +% Define \newwrite to be identical to plain tex's \newwrite +% except not \outer, so it can be used within macros and \if's. +\edef\newwrite{\makecsname{ptexnewwrite}} + +% \newindex {foo} defines an index named foo. +% It automatically defines \fooindex such that +% \fooindex ...rest of line... puts an entry in the index foo. +% It also defines \fooindfile to be the number of the output channel for +% the file that accumulates this index. The file's extension is foo. +% The name of an index should be no more than 2 characters long +% for the sake of vms. +% +\def\newindex#1{% + \iflinks + \expandafter\newwrite \csname#1indfile\endcsname + \openout \csname#1indfile\endcsname \jobname.#1 % Open the file + \fi + \expandafter\xdef\csname#1index\endcsname{% % Define @#1index + \noexpand\doindex{#1}} +} + +% @defindex foo == \newindex{foo} +% +\def\defindex{\parsearg\newindex} + +% Define @defcodeindex, like @defindex except put all entries in @code. +% +\def\defcodeindex{\parsearg\newcodeindex} +% +\def\newcodeindex#1{% + \iflinks + \expandafter\newwrite \csname#1indfile\endcsname + \openout \csname#1indfile\endcsname \jobname.#1 + \fi + \expandafter\xdef\csname#1index\endcsname{% + \noexpand\docodeindex{#1}}% +} + + +% @synindex foo bar makes index foo feed into index bar. +% Do this instead of @defindex foo if you don't want it as a separate index. +% +% @syncodeindex foo bar similar, but put all entries made for index foo +% inside @code. +% +\def\synindex#1 #2 {\dosynindex\doindex{#1}{#2}} +\def\syncodeindex#1 #2 {\dosynindex\docodeindex{#1}{#2}} + +% #1 is \doindex or \docodeindex, #2 the index getting redefined (foo), +% #3 the target index (bar). +\def\dosynindex#1#2#3{% + % Only do \closeout if we haven't already done it, else we'll end up + % closing the target index. + \expandafter \ifx\csname donesynindex#2\endcsname \relax + % The \closeout helps reduce unnecessary open files; the limit on the + % Acorn RISC OS is a mere 16 files. + \expandafter\closeout\csname#2indfile\endcsname + \expandafter\let\csname donesynindex#2\endcsname = 1 + \fi + % redefine \fooindfile: + \expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname + \expandafter\let\csname#2indfile\endcsname=\temp + % redefine \fooindex: + \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}% +} + +% Define \doindex, the driver for all \fooindex macros. +% Argument #1 is generated by the calling \fooindex macro, +% and it is "foo", the name of the index. + +% \doindex just uses \parsearg; it calls \doind for the actual work. +% This is because \doind is more useful to call from other macros. + +% There is also \dosubind {index}{topic}{subtopic} +% which makes an entry in a two-level index such as the operation index. + +\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer} +\def\singleindexer #1{\doind{\indexname}{#1}} + +% like the previous two, but they put @code around the argument. +\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer} +\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}} + +% Take care of Texinfo commands that can appear in an index entry. +% Since there are some commands we want to expand, and others we don't, +% we have to laboriously prevent expansion for those that we don't. +% +\def\indexdummies{% + \escapechar = `\\ % use backslash in output files. + \def\@{@}% change to @@ when we switch to @ as escape char in index files. + \def\ {\realbackslash\space }% + % + % Need these unexpandable (because we define \tt as a dummy) + % definitions when @{ or @} appear in index entry text. Also, more + % complicated, when \tex is in effect and \{ is a \delimiter again. + % We can't use \lbracecmd and \rbracecmd because texindex assumes + % braces and backslashes are used only as delimiters. Perhaps we + % should define @lbrace and @rbrace commands a la @comma. + \def\{{{\tt\char123}}% + \def\}{{\tt\char125}}% + % + % I don't entirely understand this, but when an index entry is + % generated from a macro call, the \endinput which \scanmacro inserts + % causes processing to be prematurely terminated. This is, + % apparently, because \indexsorttmp is fully expanded, and \endinput + % is an expandable command. The redefinition below makes \endinput + % disappear altogether for that purpose -- although logging shows that + % processing continues to some further point. On the other hand, it + % seems \endinput does not hurt in the printed index arg, since that + % is still getting written without apparent harm. + % + % Sample source (mac-idx3.tex, reported by Graham Percival to + % help-texinfo, 22may06): + % @macro funindex {WORD} + % @findex xyz + % @end macro + % ... + % @funindex commtest + % + % The above is not enough to reproduce the bug, but it gives the flavor. + % + % Sample whatsit resulting: + % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}} + % + % So: + \let\endinput = \empty + % + % Do the redefinitions. + \commondummies +} + +% For the aux and toc files, @ is the escape character. So we want to +% redefine everything using @ as the escape character (instead of +% \realbackslash, still used for index files). When everything uses @, +% this will be simpler. +% +\def\atdummies{% + \def\@{@@}% + \def\ {@ }% + \let\{ = \lbraceatcmd + \let\} = \rbraceatcmd + % + % Do the redefinitions. + \commondummies + \otherbackslash +} + +% Called from \indexdummies and \atdummies. +% +\def\commondummies{% + % + % \definedummyword defines \#1 as \string\#1\space, thus effectively + % preventing its expansion. This is used only for control words, + % not control letters, because the \space would be incorrect for + % control characters, but is needed to separate the control word + % from whatever follows. + % + % For control letters, we have \definedummyletter, which omits the + % space. + % + % These can be used both for control words that take an argument and + % those that do not. If it is followed by {arg} in the input, then + % that will dutifully get written to the index (or wherever). + % + \def\definedummyword ##1{\def##1{\string##1\space}}% + \def\definedummyletter##1{\def##1{\string##1}}% + \let\definedummyaccent\definedummyletter + % + \commondummiesnofonts + % + \definedummyletter\_% + \definedummyletter\-% + % + % Non-English letters. + \definedummyword\AA + \definedummyword\AE + \definedummyword\DH + \definedummyword\L + \definedummyword\O + \definedummyword\OE + \definedummyword\TH + \definedummyword\aa + \definedummyword\ae + \definedummyword\dh + \definedummyword\exclamdown + \definedummyword\l + \definedummyword\o + \definedummyword\oe + \definedummyword\ordf + \definedummyword\ordm + \definedummyword\questiondown + \definedummyword\ss + \definedummyword\th + % + % Although these internal commands shouldn't show up, sometimes they do. + \definedummyword\bf + \definedummyword\gtr + \definedummyword\hat + \definedummyword\less + \definedummyword\sf + \definedummyword\sl + \definedummyword\tclose + \definedummyword\tt + % + \definedummyword\LaTeX + \definedummyword\TeX + % + % Assorted special characters. + \definedummyword\arrow + \definedummyword\bullet + \definedummyword\comma + \definedummyword\copyright + \definedummyword\registeredsymbol + \definedummyword\dots + \definedummyword\enddots + \definedummyword\entrybreak + \definedummyword\equiv + \definedummyword\error + \definedummyword\euro + \definedummyword\expansion + \definedummyword\geq + \definedummyword\guillemetleft + \definedummyword\guillemetright + \definedummyword\guilsinglleft + \definedummyword\guilsinglright + \definedummyword\lbracechar + \definedummyword\leq + \definedummyword\minus + \definedummyword\ogonek + \definedummyword\pounds + \definedummyword\point + \definedummyword\print + \definedummyword\quotedblbase + \definedummyword\quotedblleft + \definedummyword\quotedblright + \definedummyword\quoteleft + \definedummyword\quoteright + \definedummyword\quotesinglbase + \definedummyword\rbracechar + \definedummyword\result + \definedummyword\textdegree + % + % We want to disable all macros so that they are not expanded by \write. + \macrolist + % + \normalturnoffactive + % + % Handle some cases of @value -- where it does not contain any + % (non-fully-expandable) commands. + \makevalueexpandable +} + +% \commondummiesnofonts: common to \commondummies and \indexnofonts. +% +\def\commondummiesnofonts{% + % Control letters and accents. + \definedummyletter\!% + \definedummyaccent\"% + \definedummyaccent\'% + \definedummyletter\*% + \definedummyaccent\,% + \definedummyletter\.% + \definedummyletter\/% + \definedummyletter\:% + \definedummyaccent\=% + \definedummyletter\?% + \definedummyaccent\^% + \definedummyaccent\`% + \definedummyaccent\~% + \definedummyword\u + \definedummyword\v + \definedummyword\H + \definedummyword\dotaccent + \definedummyword\ogonek + \definedummyword\ringaccent + \definedummyword\tieaccent + \definedummyword\ubaraccent + \definedummyword\udotaccent + \definedummyword\dotless + % + % Texinfo font commands. + \definedummyword\b + \definedummyword\i + \definedummyword\r + \definedummyword\sansserif + \definedummyword\sc + \definedummyword\slanted + \definedummyword\t + % + % Commands that take arguments. + \definedummyword\abbr + \definedummyword\acronym + \definedummyword\anchor + \definedummyword\cite + \definedummyword\code + \definedummyword\command + \definedummyword\dfn + \definedummyword\dmn + \definedummyword\email + \definedummyword\emph + \definedummyword\env + \definedummyword\file + \definedummyword\image + \definedummyword\indicateurl + \definedummyword\inforef + \definedummyword\kbd + \definedummyword\key + \definedummyword\math + \definedummyword\option + \definedummyword\pxref + \definedummyword\ref + \definedummyword\samp + \definedummyword\strong + \definedummyword\tie + \definedummyword\uref + \definedummyword\url + \definedummyword\var + \definedummyword\verb + \definedummyword\w + \definedummyword\xref +} + +% \indexnofonts is used when outputting the strings to sort the index +% by, and when constructing control sequence names. It eliminates all +% control sequences and just writes whatever the best ASCII sort string +% would be for a given command (usually its argument). +% +\def\indexnofonts{% + % Accent commands should become @asis. + \def\definedummyaccent##1{\let##1\asis}% + % We can just ignore other control letters. + \def\definedummyletter##1{\let##1\empty}% + % All control words become @asis by default; overrides below. + \let\definedummyword\definedummyaccent + % + \commondummiesnofonts + % + % Don't no-op \tt, since it isn't a user-level command + % and is used in the definitions of the active chars like <, >, |, etc. + % Likewise with the other plain tex font commands. + %\let\tt=\asis + % + \def\ { }% + \def\@{@}% + \def\_{\normalunderscore}% + \def\-{}% @- shouldn't affect sorting + % + % Unfortunately, texindex is not prepared to handle braces in the + % content at all. So for index sorting, we map @{ and @} to strings + % starting with |, since that ASCII character is between ASCII { and }. + \def\{{|a}% + \def\lbracechar{|a}% + % + \def\}{|b}% + \def\rbracechar{|b}% + % + % Non-English letters. + \def\AA{AA}% + \def\AE{AE}% + \def\DH{DZZ}% + \def\L{L}% + \def\OE{OE}% + \def\O{O}% + \def\TH{ZZZ}% + \def\aa{aa}% + \def\ae{ae}% + \def\dh{dzz}% + \def\exclamdown{!}% + \def\l{l}% + \def\oe{oe}% + \def\ordf{a}% + \def\ordm{o}% + \def\o{o}% + \def\questiondown{?}% + \def\ss{ss}% + \def\th{zzz}% + % + \def\LaTeX{LaTeX}% + \def\TeX{TeX}% + % + % Assorted special characters. + % (The following {} will end up in the sort string, but that's ok.) + \def\arrow{->}% + \def\bullet{bullet}% + \def\comma{,}% + \def\copyright{copyright}% + \def\dots{...}% + \def\enddots{...}% + \def\equiv{==}% + \def\error{error}% + \def\euro{euro}% + \def\expansion{==>}% + \def\geq{>=}% + \def\guillemetleft{<<}% + \def\guillemetright{>>}% + \def\guilsinglleft{<}% + \def\guilsinglright{>}% + \def\leq{<=}% + \def\minus{-}% + \def\point{.}% + \def\pounds{pounds}% + \def\print{-|}% + \def\quotedblbase{"}% + \def\quotedblleft{"}% + \def\quotedblright{"}% + \def\quoteleft{`}% + \def\quoteright{'}% + \def\quotesinglbase{,}% + \def\registeredsymbol{R}% + \def\result{=>}% + \def\textdegree{o}% + % + \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax + \else \indexlquoteignore \fi + % + % We need to get rid of all macros, leaving only the arguments (if present). + % Of course this is not nearly correct, but it is the best we can do for now. + % makeinfo does not expand macros in the argument to @deffn, which ends up + % writing an index entry, and texindex isn't prepared for an index sort entry + % that starts with \. + % + % Since macro invocations are followed by braces, we can just redefine them + % to take a single TeX argument. The case of a macro invocation that + % goes to end-of-line is not handled. + % + \macrolist +} + +% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us +% ignore left quotes in the sort term. +{\catcode`\`=\active + \gdef\indexlquoteignore{\let`=\empty}} + +\let\indexbackslash=0 %overridden during \printindex. +\let\SETmarginindex=\relax % put index entries in margin (undocumented)? + +% Most index entries go through here, but \dosubind is the general case. +% #1 is the index name, #2 is the entry text. +\def\doind#1#2{\dosubind{#1}{#2}{}} + +% Workhorse for all \fooindexes. +% #1 is name of index, #2 is stuff to put there, #3 is subentry -- +% empty if called from \doind, as we usually are (the main exception +% is with most defuns, which call us directly). +% +\def\dosubind#1#2#3{% + \iflinks + {% + % Store the main index entry text (including the third arg). + \toks0 = {#2}% + % If third arg is present, precede it with a space. + \def\thirdarg{#3}% + \ifx\thirdarg\empty \else + \toks0 = \expandafter{\the\toks0 \space #3}% + \fi + % + \edef\writeto{\csname#1indfile\endcsname}% + % + \safewhatsit\dosubindwrite + }% + \fi +} + +% Write the entry in \toks0 to the index file: +% +\def\dosubindwrite{% + % Put the index entry in the margin if desired. + \ifx\SETmarginindex\relax\else + \insert\margin{\hbox{\vrule height8pt depth3pt width0pt \the\toks0}}% + \fi + % + % Remember, we are within a group. + \indexdummies % Must do this here, since \bf, etc expand at this stage + \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now + % so it will be output as is; and it will print as backslash. + % + % Process the index entry with all font commands turned off, to + % get the string to sort by. + {\indexnofonts + \edef\temp{\the\toks0}% need full expansion + \xdef\indexsorttmp{\temp}% + }% + % + % Set up the complete index entry, with both the sort key and + % the original text, including any font commands. We write + % three arguments to \entry to the .?? file (four in the + % subentry case), texindex reduces to two when writing the .??s + % sorted result. + \edef\temp{% + \write\writeto{% + \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}% + }% + \temp +} + +% Take care of unwanted page breaks/skips around a whatsit: +% +% If a skip is the last thing on the list now, preserve it +% by backing up by \lastskip, doing the \write, then inserting +% the skip again. Otherwise, the whatsit generated by the +% \write or \pdfdest will make \lastskip zero. The result is that +% sequences like this: +% @end defun +% @tindex whatever +% @defun ... +% will have extra space inserted, because the \medbreak in the +% start of the @defun won't see the skip inserted by the @end of +% the previous defun. +% +% But don't do any of this if we're not in vertical mode. We +% don't want to do a \vskip and prematurely end a paragraph. +% +% Avoid page breaks due to these extra skips, too. +% +% But wait, there is a catch there: +% We'll have to check whether \lastskip is zero skip. \ifdim is not +% sufficient for this purpose, as it ignores stretch and shrink parts +% of the skip. The only way seems to be to check the textual +% representation of the skip. +% +% The following is almost like \def\zeroskipmacro{0.0pt} except that +% the ``p'' and ``t'' characters have catcode \other, not 11 (letter). +% +\edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname} +% +\newskip\whatsitskip +\newcount\whatsitpenalty +% +% ..., ready, GO: +% +\def\safewhatsit#1{\ifhmode + #1% + \else + % \lastskip and \lastpenalty cannot both be nonzero simultaneously. + \whatsitskip = \lastskip + \edef\lastskipmacro{\the\lastskip}% + \whatsitpenalty = \lastpenalty + % + % If \lastskip is nonzero, that means the last item was a + % skip. And since a skip is discardable, that means this + % -\whatsitskip glue we're inserting is preceded by a + % non-discardable item, therefore it is not a potential + % breakpoint, therefore no \nobreak needed. + \ifx\lastskipmacro\zeroskipmacro + \else + \vskip-\whatsitskip + \fi + % + #1% + % + \ifx\lastskipmacro\zeroskipmacro + % If \lastskip was zero, perhaps the last item was a penalty, and + % perhaps it was >=10000, e.g., a \nobreak. In that case, we want + % to re-insert the same penalty (values >10000 are used for various + % signals); since we just inserted a non-discardable item, any + % following glue (such as a \parskip) would be a breakpoint. For example: + % @deffn deffn-whatever + % @vindex index-whatever + % Description. + % would allow a break between the index-whatever whatsit + % and the "Description." paragraph. + \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi + \else + % On the other hand, if we had a nonzero \lastskip, + % this make-up glue would be preceded by a non-discardable item + % (the whatsit from the \write), so we must insert a \nobreak. + \nobreak\vskip\whatsitskip + \fi +\fi} + +% The index entry written in the file actually looks like +% \entry {sortstring}{page}{topic} +% or +% \entry {sortstring}{page}{topic}{subtopic} +% The texindex program reads in these files and writes files +% containing these kinds of lines: +% \initial {c} +% before the first topic whose initial is c +% \entry {topic}{pagelist} +% for a topic that is used without subtopics +% \primary {topic} +% for the beginning of a topic that is used with subtopics +% \secondary {subtopic}{pagelist} +% for each subtopic. + +% Define the user-accessible indexing commands +% @findex, @vindex, @kindex, @cindex. + +\def\findex {\fnindex} +\def\kindex {\kyindex} +\def\cindex {\cpindex} +\def\vindex {\vrindex} +\def\tindex {\tpindex} +\def\pindex {\pgindex} + +\def\cindexsub {\begingroup\obeylines\cindexsub} +{\obeylines % +\gdef\cindexsub "#1" #2^^M{\endgroup % +\dosubind{cp}{#2}{#1}}} + +% Define the macros used in formatting output of the sorted index material. + +% @printindex causes a particular index (the ??s file) to get printed. +% It does not print any chapter heading (usually an @unnumbered). +% +\parseargdef\printindex{\begingroup + \dobreak \chapheadingskip{10000}% + % + \smallfonts \rm + \tolerance = 9500 + \plainfrenchspacing + \everypar = {}% don't want the \kern\-parindent from indentation suppression. + % + % See if the index file exists and is nonempty. + % Change catcode of @ here so that if the index file contains + % \initial {@} + % as its first line, TeX doesn't complain about mismatched braces + % (because it thinks @} is a control sequence). + \catcode`\@ = 11 + \openin 1 \jobname.#1s + \ifeof 1 + % \enddoublecolumns gets confused if there is no text in the index, + % and it loses the chapter title and the aux file entries for the + % index. The easiest way to prevent this problem is to make sure + % there is some text. + \putwordIndexNonexistent + \else + % + % If the index file exists but is empty, then \openin leaves \ifeof + % false. We have to make TeX try to read something from the file, so + % it can discover if there is anything in it. + \read 1 to \temp + \ifeof 1 + \putwordIndexIsEmpty + \else + % Index files are almost Texinfo source, but we use \ as the escape + % character. It would be better to use @, but that's too big a change + % to make right now. + \def\indexbackslash{\backslashcurfont}% + \catcode`\\ = 0 + \escapechar = `\\ + \begindoublecolumns + \input \jobname.#1s + \enddoublecolumns + \fi + \fi + \closein 1 +\endgroup} + +% These macros are used by the sorted index file itself. +% Change them to control the appearance of the index. + +\def\initial#1{{% + % Some minor font changes for the special characters. + \let\tentt=\sectt \let\tt=\sectt \let\sf=\sectt + % + % Remove any glue we may have, we'll be inserting our own. + \removelastskip + % + % We like breaks before the index initials, so insert a bonus. + \nobreak + \vskip 0pt plus 3\baselineskip + \penalty 0 + \vskip 0pt plus -3\baselineskip + % + % Typeset the initial. Making this add up to a whole number of + % baselineskips increases the chance of the dots lining up from column + % to column. It still won't often be perfect, because of the stretch + % we need before each entry, but it's better. + % + % No shrink because it confuses \balancecolumns. + \vskip 1.67\baselineskip plus .5\baselineskip + \leftline{\secbf #1}% + % Do our best not to break after the initial. + \nobreak + \vskip .33\baselineskip plus .1\baselineskip +}} + +% \entry typesets a paragraph consisting of the text (#1), dot leaders, and +% then page number (#2) flushed to the right margin. It is used for index +% and table of contents entries. The paragraph is indented by \leftskip. +% +% A straightforward implementation would start like this: +% \def\entry#1#2{... +% But this freezes the catcodes in the argument, and can cause problems to +% @code, which sets - active. This problem was fixed by a kludge--- +% ``-'' was active throughout whole index, but this isn't really right. +% The right solution is to prevent \entry from swallowing the whole text. +% --kasal, 21nov03 +\def\entry{% + \begingroup + % + % Start a new paragraph if necessary, so our assignments below can't + % affect previous text. + \par + % + % Do not fill out the last line with white space. + \parfillskip = 0in + % + % No extra space above this paragraph. + \parskip = 0in + % + % Do not prefer a separate line ending with a hyphen to fewer lines. + \finalhyphendemerits = 0 + % + % \hangindent is only relevant when the entry text and page number + % don't both fit on one line. In that case, bob suggests starting the + % dots pretty far over on the line. Unfortunately, a large + % indentation looks wrong when the entry text itself is broken across + % lines. So we use a small indentation and put up with long leaders. + % + % \hangafter is reset to 1 (which is the value we want) at the start + % of each paragraph, so we need not do anything with that. + \hangindent = 2em + % + % When the entry text needs to be broken, just fill out the first line + % with blank space. + \rightskip = 0pt plus1fil + % + % A bit of stretch before each entry for the benefit of balancing + % columns. + \vskip 0pt plus1pt + % + % When reading the text of entry, convert explicit line breaks + % from @* into spaces. The user might give these in long section + % titles, for instance. + \def\*{\unskip\space\ignorespaces}% + \def\entrybreak{\hfil\break}% + % + % Swallow the left brace of the text (first parameter): + \afterassignment\doentry + \let\temp = +} +\def\entrybreak{\unskip\space\ignorespaces}% +\def\doentry{% + \bgroup % Instead of the swallowed brace. + \noindent + \aftergroup\finishentry + % And now comes the text of the entry. +} +\def\finishentry#1{% + % #1 is the page number. + % + % The following is kludged to not output a line of dots in the index if + % there are no page numbers. The next person who breaks this will be + % cursed by a Unix daemon. + \setbox\boxA = \hbox{#1}% + \ifdim\wd\boxA = 0pt + \ % + \else + % + % If we must, put the page number on a line of its own, and fill out + % this line with blank space. (The \hfil is overwhelmed with the + % fill leaders glue in \indexdotfill if the page number does fit.) + \hfil\penalty50 + \null\nobreak\indexdotfill % Have leaders before the page number. + % + % The `\ ' here is removed by the implicit \unskip that TeX does as + % part of (the primitive) \par. Without it, a spurious underfull + % \hbox ensues. + \ifpdf + \pdfgettoks#1.% + \ \the\toksA + \else + \ #1% + \fi + \fi + \par + \endgroup +} + +% Like plain.tex's \dotfill, except uses up at least 1 em. +\def\indexdotfill{\cleaders + \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill} + +\def\primary #1{\line{#1\hfil}} + +\newskip\secondaryindent \secondaryindent=0.5cm +\def\secondary#1#2{{% + \parfillskip=0in + \parskip=0in + \hangindent=1in + \hangafter=1 + \noindent\hskip\secondaryindent\hbox{#1}\indexdotfill + \ifpdf + \pdfgettoks#2.\ \the\toksA % The page number ends the paragraph. + \else + #2 + \fi + \par +}} + +% Define two-column mode, which we use to typeset indexes. +% Adapted from the TeXbook, page 416, which is to say, +% the manmac.tex format used to print the TeXbook itself. +\catcode`\@=11 + +\newbox\partialpage +\newdimen\doublecolumnhsize + +\def\begindoublecolumns{\begingroup % ended by \enddoublecolumns + % Grab any single-column material above us. + \output = {% + % + % Here is a possibility not foreseen in manmac: if we accumulate a + % whole lot of material, we might end up calling this \output + % routine twice in a row (see the doublecol-lose test, which is + % essentially a couple of indexes with @setchapternewpage off). In + % that case we just ship out what is in \partialpage with the normal + % output routine. Generally, \partialpage will be empty when this + % runs and this will be a no-op. See the indexspread.tex test case. + \ifvoid\partialpage \else + \onepageout{\pagecontents\partialpage}% + \fi + % + \global\setbox\partialpage = \vbox{% + % Unvbox the main output page. + \unvbox\PAGE + \kern-\topskip \kern\baselineskip + }% + }% + \eject % run that output routine to set \partialpage + % + % Use the double-column output routine for subsequent pages. + \output = {\doublecolumnout}% + % + % Change the page size parameters. We could do this once outside this + % routine, in each of @smallbook, @afourpaper, and the default 8.5x11 + % format, but then we repeat the same computation. Repeating a couple + % of assignments once per index is clearly meaningless for the + % execution time, so we may as well do it in one place. + % + % First we halve the line length, less a little for the gutter between + % the columns. We compute the gutter based on the line length, so it + % changes automatically with the paper format. The magic constant + % below is chosen so that the gutter has the same value (well, +-<1pt) + % as it did when we hard-coded it. + % + % We put the result in a separate register, \doublecolumhsize, so we + % can restore it in \pagesofar, after \hsize itself has (potentially) + % been clobbered. + % + \doublecolumnhsize = \hsize + \advance\doublecolumnhsize by -.04154\hsize + \divide\doublecolumnhsize by 2 + \hsize = \doublecolumnhsize + % + % Double the \vsize as well. (We don't need a separate register here, + % since nobody clobbers \vsize.) + \vsize = 2\vsize +} + +% The double-column output routine for all double-column pages except +% the last. +% +\def\doublecolumnout{% + \splittopskip=\topskip \splitmaxdepth=\maxdepth + % Get the available space for the double columns -- the normal + % (undoubled) page height minus any material left over from the + % previous page. + \dimen@ = \vsize + \divide\dimen@ by 2 + \advance\dimen@ by -\ht\partialpage + % + % box0 will be the left-hand column, box2 the right. + \setbox0=\vsplit255 to\dimen@ \setbox2=\vsplit255 to\dimen@ + \onepageout\pagesofar + \unvbox255 + \penalty\outputpenalty +} +% +% Re-output the contents of the output page -- any previous material, +% followed by the two boxes we just split, in box0 and box2. +\def\pagesofar{% + \unvbox\partialpage + % + \hsize = \doublecolumnhsize + \wd0=\hsize \wd2=\hsize + \hbox to\pagewidth{\box0\hfil\box2}% +} +% +% All done with double columns. +\def\enddoublecolumns{% + % The following penalty ensures that the page builder is exercised + % _before_ we change the output routine. This is necessary in the + % following situation: + % + % The last section of the index consists only of a single entry. + % Before this section, \pagetotal is less than \pagegoal, so no + % break occurs before the last section starts. However, the last + % section, consisting of \initial and the single \entry, does not + % fit on the page and has to be broken off. Without the following + % penalty the page builder will not be exercised until \eject + % below, and by that time we'll already have changed the output + % routine to the \balancecolumns version, so the next-to-last + % double-column page will be processed with \balancecolumns, which + % is wrong: The two columns will go to the main vertical list, with + % the broken-off section in the recent contributions. As soon as + % the output routine finishes, TeX starts reconsidering the page + % break. The two columns and the broken-off section both fit on the + % page, because the two columns now take up only half of the page + % goal. When TeX sees \eject from below which follows the final + % section, it invokes the new output routine that we've set after + % \balancecolumns below; \onepageout will try to fit the two columns + % and the final section into the vbox of \pageheight (see + % \pagebody), causing an overfull box. + % + % Note that glue won't work here, because glue does not exercise the + % page builder, unlike penalties (see The TeXbook, pp. 280-281). + \penalty0 + % + \output = {% + % Split the last of the double-column material. Leave it on the + % current page, no automatic page break. + \balancecolumns + % + % If we end up splitting too much material for the current page, + % though, there will be another page break right after this \output + % invocation ends. Having called \balancecolumns once, we do not + % want to call it again. Therefore, reset \output to its normal + % definition right away. (We hope \balancecolumns will never be + % called on to balance too much material, but if it is, this makes + % the output somewhat more palatable.) + \global\output = {\onepageout{\pagecontents\PAGE}}% + }% + \eject + \endgroup % started in \begindoublecolumns + % + % \pagegoal was set to the doubled \vsize above, since we restarted + % the current page. We're now back to normal single-column + % typesetting, so reset \pagegoal to the normal \vsize (after the + % \endgroup where \vsize got restored). + \pagegoal = \vsize +} +% +% Called at the end of the double column material. +\def\balancecolumns{% + \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120. + \dimen@ = \ht0 + \advance\dimen@ by \topskip + \advance\dimen@ by-\baselineskip + \divide\dimen@ by 2 % target to split to + %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}% + \splittopskip = \topskip + % Loop until we get a decent breakpoint. + {% + \vbadness = 10000 + \loop + \global\setbox3 = \copy0 + \global\setbox1 = \vsplit3 to \dimen@ + \ifdim\ht3>\dimen@ + \global\advance\dimen@ by 1pt + \repeat + }% + %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}% + \setbox0=\vbox to\dimen@{\unvbox1}% + \setbox2=\vbox to\dimen@{\unvbox3}% + % + \pagesofar +} +\catcode`\@ = \other + + +\message{sectioning,} +% Chapters, sections, etc. + +% Let's start with @part. +\outer\parseargdef\part{\partzzz{#1}} +\def\partzzz#1{% + \chapoddpage + \null + \vskip.3\vsize % move it down on the page a bit + \begingroup + \noindent \titlefonts\rmisbold #1\par % the text + \let\lastnode=\empty % no node to associate with + \writetocentry{part}{#1}{}% but put it in the toc + \headingsoff % no headline or footline on the part page + \chapoddpage + \endgroup +} + +% \unnumberedno is an oxymoron. But we count the unnumbered +% sections so that we can refer to them unambiguously in the pdf +% outlines by their "section number". We avoid collisions with chapter +% numbers by starting them at 10000. (If a document ever has 10000 +% chapters, we're in trouble anyway, I'm sure.) +\newcount\unnumberedno \unnumberedno = 10000 +\newcount\chapno +\newcount\secno \secno=0 +\newcount\subsecno \subsecno=0 +\newcount\subsubsecno \subsubsecno=0 + +% This counter is funny since it counts through charcodes of letters A, B, ... +\newcount\appendixno \appendixno = `\@ +% +% \def\appendixletter{\char\the\appendixno} +% We do the following ugly conditional instead of the above simple +% construct for the sake of pdftex, which needs the actual +% letter in the expansion, not just typeset. +% +\def\appendixletter{% + \ifnum\appendixno=`A A% + \else\ifnum\appendixno=`B B% + \else\ifnum\appendixno=`C C% + \else\ifnum\appendixno=`D D% + \else\ifnum\appendixno=`E E% + \else\ifnum\appendixno=`F F% + \else\ifnum\appendixno=`G G% + \else\ifnum\appendixno=`H H% + \else\ifnum\appendixno=`I I% + \else\ifnum\appendixno=`J J% + \else\ifnum\appendixno=`K K% + \else\ifnum\appendixno=`L L% + \else\ifnum\appendixno=`M M% + \else\ifnum\appendixno=`N N% + \else\ifnum\appendixno=`O O% + \else\ifnum\appendixno=`P P% + \else\ifnum\appendixno=`Q Q% + \else\ifnum\appendixno=`R R% + \else\ifnum\appendixno=`S S% + \else\ifnum\appendixno=`T T% + \else\ifnum\appendixno=`U U% + \else\ifnum\appendixno=`V V% + \else\ifnum\appendixno=`W W% + \else\ifnum\appendixno=`X X% + \else\ifnum\appendixno=`Y Y% + \else\ifnum\appendixno=`Z Z% + % The \the is necessary, despite appearances, because \appendixletter is + % expanded while writing the .toc file. \char\appendixno is not + % expandable, thus it is written literally, thus all appendixes come out + % with the same letter (or @) in the toc without it. + \else\char\the\appendixno + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} + +% Each @chapter defines these (using marks) as the number+name, number +% and name of the chapter. Page headings and footings can use +% these. @section does likewise. +\def\thischapter{} +\def\thischapternum{} +\def\thischaptername{} +\def\thissection{} +\def\thissectionnum{} +\def\thissectionname{} + +\newcount\absseclevel % used to calculate proper heading level +\newcount\secbase\secbase=0 % @raisesections/@lowersections modify this count + +% @raisesections: treat @section as chapter, @subsection as section, etc. +\def\raisesections{\global\advance\secbase by -1} +\let\up=\raisesections % original BFox name + +% @lowersections: treat @chapter as section, @section as subsection, etc. +\def\lowersections{\global\advance\secbase by 1} +\let\down=\lowersections % original BFox name + +% we only have subsub. +\chardef\maxseclevel = 3 +% +% A numbered section within an unnumbered changes to unnumbered too. +% To achieve this, remember the "biggest" unnum. sec. we are currently in: +\chardef\unnlevel = \maxseclevel +% +% Trace whether the current chapter is an appendix or not: +% \chapheadtype is "N" or "A", unnumbered chapters are ignored. +\def\chapheadtype{N} + +% Choose a heading macro +% #1 is heading type +% #2 is heading level +% #3 is text for heading +\def\genhead#1#2#3{% + % Compute the abs. sec. level: + \absseclevel=#2 + \advance\absseclevel by \secbase + % Make sure \absseclevel doesn't fall outside the range: + \ifnum \absseclevel < 0 + \absseclevel = 0 + \else + \ifnum \absseclevel > 3 + \absseclevel = 3 + \fi + \fi + % The heading type: + \def\headtype{#1}% + \if \headtype U% + \ifnum \absseclevel < \unnlevel + \chardef\unnlevel = \absseclevel + \fi + \else + % Check for appendix sections: + \ifnum \absseclevel = 0 + \edef\chapheadtype{\headtype}% + \else + \if \headtype A\if \chapheadtype N% + \errmessage{@appendix... within a non-appendix chapter}% + \fi\fi + \fi + % Check for numbered within unnumbered: + \ifnum \absseclevel > \unnlevel + \def\headtype{U}% + \else + \chardef\unnlevel = 3 + \fi + \fi + % Now print the heading: + \if \headtype U% + \ifcase\absseclevel + \unnumberedzzz{#3}% + \or \unnumberedseczzz{#3}% + \or \unnumberedsubseczzz{#3}% + \or \unnumberedsubsubseczzz{#3}% + \fi + \else + \if \headtype A% + \ifcase\absseclevel + \appendixzzz{#3}% + \or \appendixsectionzzz{#3}% + \or \appendixsubseczzz{#3}% + \or \appendixsubsubseczzz{#3}% + \fi + \else + \ifcase\absseclevel + \chapterzzz{#3}% + \or \seczzz{#3}% + \or \numberedsubseczzz{#3}% + \or \numberedsubsubseczzz{#3}% + \fi + \fi + \fi + \suppressfirstparagraphindent +} + +% an interface: +\def\numhead{\genhead N} +\def\apphead{\genhead A} +\def\unnmhead{\genhead U} + +% @chapter, @appendix, @unnumbered. Increment top-level counter, reset +% all lower-level sectioning counters to zero. +% +% Also set \chaplevelprefix, which we prepend to @float sequence numbers +% (e.g., figures), q.v. By default (before any chapter), that is empty. +\let\chaplevelprefix = \empty +% +\outer\parseargdef\chapter{\numhead0{#1}} % normally numhead0 calls chapterzzz +\def\chapterzzz#1{% + % section resetting is \global in case the chapter is in a group, such + % as an @include file. + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\chapno by 1 + % + % Used for \float. + \gdef\chaplevelprefix{\the\chapno.}% + \resetallfloatnos + % + % \putwordChapter can contain complex things in translations. + \toks0=\expandafter{\putwordChapter}% + \message{\the\toks0 \space \the\chapno}% + % + % Write the actual heading. + \chapmacro{#1}{Ynumbered}{\the\chapno}% + % + % So @section and the like are numbered underneath this chapter. + \global\let\section = \numberedsec + \global\let\subsection = \numberedsubsec + \global\let\subsubsection = \numberedsubsubsec +} + +\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz +% +\def\appendixzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\appendixno by 1 + \gdef\chaplevelprefix{\appendixletter.}% + \resetallfloatnos + % + % \putwordAppendix can contain complex things in translations. + \toks0=\expandafter{\putwordAppendix}% + \message{\the\toks0 \space \appendixletter}% + % + \chapmacro{#1}{Yappendix}{\appendixletter}% + % + \global\let\section = \appendixsec + \global\let\subsection = \appendixsubsec + \global\let\subsubsection = \appendixsubsubsec +} + +% normally unnmhead0 calls unnumberedzzz: +\outer\parseargdef\unnumbered{\unnmhead0{#1}} +\def\unnumberedzzz#1{% + \global\secno=0 \global\subsecno=0 \global\subsubsecno=0 + \global\advance\unnumberedno by 1 + % + % Since an unnumbered has no number, no prefix for figures. + \global\let\chaplevelprefix = \empty + \resetallfloatnos + % + % This used to be simply \message{#1}, but TeX fully expands the + % argument to \message. Therefore, if #1 contained @-commands, TeX + % expanded them. For example, in `@unnumbered The @cite{Book}', TeX + % expanded @cite (which turns out to cause errors because \cite is meant + % to be executed, not expanded). + % + % Anyway, we don't want the fully-expanded definition of @cite to appear + % as a result of the \message, we just want `@cite' itself. We use + % \the to achieve this: TeX expands \the only once, + % simply yielding the contents of . (We also do this for + % the toc entries.) + \toks0 = {#1}% + \message{(\the\toks0)}% + % + \chapmacro{#1}{Ynothing}{\the\unnumberedno}% + % + \global\let\section = \unnumberedsec + \global\let\subsection = \unnumberedsubsec + \global\let\subsubsection = \unnumberedsubsubsec +} + +% @centerchap is like @unnumbered, but the heading is centered. +\outer\parseargdef\centerchap{% + % Well, we could do the following in a group, but that would break + % an assumption that \chapmacro is called at the outermost level. + % Thus we are safer this way: --kasal, 24feb04 + \let\centerparametersmaybe = \centerparameters + \unnmhead0{#1}% + \let\centerparametersmaybe = \relax +} + +% @top is like @unnumbered. +\let\top\unnumbered + +% Sections. +% +\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz +\def\seczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}% +} + +% normally calls appendixsectionzzz: +\outer\parseargdef\appendixsection{\apphead1{#1}} +\def\appendixsectionzzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}% +} +\let\appendixsec\appendixsection + +% normally calls unnumberedseczzz: +\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} +\def\unnumberedseczzz#1{% + \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1 + \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}% +} + +% Subsections. +% +% normally calls numberedsubseczzz: +\outer\parseargdef\numberedsubsec{\numhead2{#1}} +\def\numberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}% +} + +% normally calls appendixsubseczzz: +\outer\parseargdef\appendixsubsec{\apphead2{#1}} +\def\appendixsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno}% +} + +% normally calls unnumberedsubseczzz: +\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} +\def\unnumberedsubseczzz#1{% + \global\subsubsecno=0 \global\advance\subsecno by 1 + \sectionheading{#1}{subsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno}% +} + +% Subsubsections. +% +% normally numberedsubsubseczzz: +\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} +\def\numberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynumbered}% + {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% normally appendixsubsubseczzz: +\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} +\def\appendixsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Yappendix}% + {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% normally unnumberedsubsubseczzz: +\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} +\def\unnumberedsubsubseczzz#1{% + \global\advance\subsubsecno by 1 + \sectionheading{#1}{subsubsec}{Ynothing}% + {\the\unnumberedno.\the\secno.\the\subsecno.\the\subsubsecno}% +} + +% These macros control what the section commands do, according +% to what kind of chapter we are in (ordinary, appendix, or unnumbered). +% Define them by default for a numbered chapter. +\let\section = \numberedsec +\let\subsection = \numberedsubsec +\let\subsubsection = \numberedsubsubsec + +% Define @majorheading, @heading and @subheading + +\def\majorheading{% + {\advance\chapheadingskip by 10pt \chapbreak }% + \parsearg\chapheadingzzz +} + +\def\chapheading{\chapbreak \parsearg\chapheadingzzz} +\def\chapheadingzzz#1{% + \vbox{\chapfonts \raggedtitlesettings #1\par}% + \nobreak\bigskip \nobreak + \suppressfirstparagraphindent +} + +% @heading, @subheading, @subsubheading. +\parseargdef\heading{\sectionheading{#1}{sec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subheading{\sectionheading{#1}{subsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} +\parseargdef\subsubheading{\sectionheading{#1}{subsubsec}{Yomitfromtoc}{} + \suppressfirstparagraphindent} + +% These macros generate a chapter, section, etc. heading only +% (including whitespace, linebreaking, etc. around it), +% given all the information in convenient, parsed form. + +% Args are the skip and penalty (usually negative) +\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi} + +% Parameter controlling skip before chapter headings (if needed) +\newskip\chapheadingskip + +% Define plain chapter starts, and page on/off switching for it. +\def\chapbreak{\dobreak \chapheadingskip {-4000}} +\def\chappager{\par\vfill\supereject} +% Because \domark is called before \chapoddpage, the filler page will +% get the headings for the next chapter, which is wrong. But we don't +% care -- we just disable all headings on the filler page. +\def\chapoddpage{% + \chappager + \ifodd\pageno \else + \begingroup + \headingsoff + \null + \chappager + \endgroup + \fi +} + +\def\setchapternewpage #1 {\csname CHAPPAG#1\endcsname} + +\def\CHAPPAGoff{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chapbreak +\global\let\pagealignmacro=\chappager} + +\def\CHAPPAGon{% +\global\let\contentsalignmacro = \chappager +\global\let\pchapsepmacro=\chappager +\global\let\pagealignmacro=\chappager +\global\def\HEADINGSon{\HEADINGSsingle}} + +\def\CHAPPAGodd{% +\global\let\contentsalignmacro = \chapoddpage +\global\let\pchapsepmacro=\chapoddpage +\global\let\pagealignmacro=\chapoddpage +\global\def\HEADINGSon{\HEADINGSdouble}} + +\CHAPPAGon + +% Chapter opening. +% +% #1 is the text, #2 is the section type (Ynumbered, Ynothing, +% Yappendix, Yomitfromtoc), #3 the chapter number. +% +% To test against our argument. +\def\Ynothingkeyword{Ynothing} +\def\Yomitfromtockeyword{Yomitfromtoc} +\def\Yappendixkeyword{Yappendix} +% +\def\chapmacro#1#2#3{% + % Insert the first mark before the heading break (see notes for \domark). + \let\prevchapterdefs=\lastchapterdefs + \let\prevsectiondefs=\lastsectiondefs + \gdef\lastsectiondefs{\gdef\thissectionname{}\gdef\thissectionnum{}% + \gdef\thissection{}}% + % + \def\temptype{#2}% + \ifx\temptype\Ynothingkeyword + \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{\thischaptername}}% + \else\ifx\temptype\Yomitfromtockeyword + \gdef\lastchapterdefs{\gdef\thischaptername{#1}\gdef\thischapternum{}% + \gdef\thischapter{}}% + \else\ifx\temptype\Yappendixkeyword + \toks0={#1}% + \xdef\lastchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\appendixletter}% + % \noexpand\putwordAppendix avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordAppendix{} + \noexpand\thischapternum: + \noexpand\thischaptername}% + }% + \else + \toks0={#1}% + \xdef\lastchapterdefs{% + \gdef\noexpand\thischaptername{\the\toks0}% + \gdef\noexpand\thischapternum{\the\chapno}% + % \noexpand\putwordChapter avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thischapter{\noexpand\putwordChapter{} + \noexpand\thischapternum: + \noexpand\thischaptername}% + }% + \fi\fi\fi + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert the chapter heading break. + \pchapsepmacro + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \let\prevchapterdefs=\lastchapterdefs + \let\prevsectiondefs=\lastsectiondefs + \domark + % + {% + \chapfonts \rmisbold + % + % Have to define \lastsection before calling \donoderef, because the + % xref code eventually uses it. On the other hand, it has to be called + % after \pchapsepmacro, or the headline will change too soon. + \gdef\lastsection{#1}% + % + % Only insert the separating space if we have a chapter/appendix + % number, and don't print the unnumbered ``number''. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unnchap}% + \else\ifx\temptype\Yomitfromtockeyword + \setbox0 = \hbox{}% contents like unnumbered, but no toc entry + \def\toctype{omit}% + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{\putwordAppendix{} #3\enspace}% + \def\toctype{app}% + \else + \setbox0 = \hbox{#3\enspace}% + \def\toctype{numchap}% + \fi\fi\fi + % + % Write the toc entry for this chapter. Must come before the + % \donoderef, because we include the current node name in the toc + % entry, and \donoderef resets it to empty. + \writetocentry{\toctype}{#1}{#3}% + % + % For pdftex, we have to write out the node definition (aka, make + % the pdfdest) after any page break, but before the actual text has + % been typeset. If the destination for the pdf outline is after the + % text, then jumping from the outline may wind up with the text not + % being visible, for instance under high magnification. + \donoderef{#2}% + % + % Typeset the actual heading. + \nobreak % Avoid page breaks at the interline glue. + \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe + \unhbox0 #1\par}% + }% + \nobreak\bigskip % no page break after a chapter title + \nobreak +} + +% @centerchap -- centered and unnumbered. +\let\centerparametersmaybe = \relax +\def\centerparameters{% + \advance\rightskip by 3\rightskip + \leftskip = \rightskip + \parfillskip = 0pt +} + + +% I don't think this chapter style is supported any more, so I'm not +% updating it with the new noderef stuff. We'll see. --karl, 11aug03. +% +\def\setchapterstyle #1 {\csname CHAPF#1\endcsname} +% +\def\unnchfopen #1{% + \chapoddpage + \vbox{\chapfonts \raggedtitlesettings #1\par}% + \nobreak\bigskip\nobreak +} +\def\chfopen #1#2{\chapoddpage {\chapfonts +\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}% +\par\penalty 5000 % +} +\def\centerchfopen #1{% + \chapoddpage + \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}% + \nobreak\bigskip \nobreak +} +\def\CHAPFopen{% + \global\let\chapmacro=\chfopen + \global\let\centerchapmacro=\centerchfopen} + + +% Section titles. These macros combine the section number parts and +% call the generic \sectionheading to do the printing. +% +\newskip\secheadingskip +\def\secheadingbreak{\dobreak \secheadingskip{-1000}} + +% Subsection titles. +\newskip\subsecheadingskip +\def\subsecheadingbreak{\dobreak \subsecheadingskip{-500}} + +% Subsubsection titles. +\def\subsubsecheadingskip{\subsecheadingskip} +\def\subsubsecheadingbreak{\subsecheadingbreak} + + +% Print any size, any type, section title. +% +% #1 is the text, #2 is the section level (sec/subsec/subsubsec), #3 is +% the section type for xrefs (Ynumbered, Ynothing, Yappendix), #4 is the +% section number. +% +\def\seckeyword{sec} +% +\def\sectionheading#1#2#3#4{% + {% + \checkenv{}% should not be in an environment. + % + % Switch to the right set of fonts. + \csname #2fonts\endcsname \rmisbold + % + \def\sectionlevel{#2}% + \def\temptype{#3}% + % + % Insert first mark before the heading break (see notes for \domark). + \let\prevsectiondefs=\lastsectiondefs + \ifx\temptype\Ynothingkeyword + \ifx\sectionlevel\seckeyword + \gdef\lastsectiondefs{\gdef\thissectionname{#1}\gdef\thissectionnum{}% + \gdef\thissection{\thissectionname}}% + \fi + \else\ifx\temptype\Yomitfromtockeyword + % Don't redefine \thissection. + \else\ifx\temptype\Yappendixkeyword + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\lastsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: + \noexpand\thissectionname}% + }% + \fi + \else + \ifx\sectionlevel\seckeyword + \toks0={#1}% + \xdef\lastsectiondefs{% + \gdef\noexpand\thissectionname{\the\toks0}% + \gdef\noexpand\thissectionnum{#4}% + % \noexpand\putwordSection avoids expanding indigestible + % commands in some of the translations. + \gdef\noexpand\thissection{\noexpand\putwordSection{} + \noexpand\thissectionnum: + \noexpand\thissectionname}% + }% + \fi + \fi\fi\fi + % + % Go into vertical mode. Usually we'll already be there, but we + % don't want the following whatsit to end up in a preceding paragraph + % if the document didn't happen to have a blank line. + \par + % + % Output the mark. Pass it through \safewhatsit, to take care of + % the preceding space. + \safewhatsit\domark + % + % Insert space above the heading. + \csname #2headingbreak\endcsname + % + % Now the second mark, after the heading break. No break points + % between here and the heading. + \global\let\prevsectiondefs=\lastsectiondefs + \domark + % + % Only insert the space after the number if we have a section number. + \ifx\temptype\Ynothingkeyword + \setbox0 = \hbox{}% + \def\toctype{unn}% + \gdef\lastsection{#1}% + \else\ifx\temptype\Yomitfromtockeyword + % for @headings -- no section number, don't include in toc, + % and don't redefine \lastsection. + \setbox0 = \hbox{}% + \def\toctype{omit}% + \let\sectionlevel=\empty + \else\ifx\temptype\Yappendixkeyword + \setbox0 = \hbox{#4\enspace}% + \def\toctype{app}% + \gdef\lastsection{#1}% + \else + \setbox0 = \hbox{#4\enspace}% + \def\toctype{num}% + \gdef\lastsection{#1}% + \fi\fi\fi + % + % Write the toc entry (before \donoderef). See comments in \chapmacro. + \writetocentry{\toctype\sectionlevel}{#1}{#4}% + % + % Write the node reference (= pdf destination for pdftex). + % Again, see comments in \chapmacro. + \donoderef{#3}% + % + % Interline glue will be inserted when the vbox is completed. + % That glue will be a valid breakpoint for the page, since it'll be + % preceded by a whatsit (usually from the \donoderef, or from the + % \writetocentry if there was no node). We don't want to allow that + % break, since then the whatsits could end up on page n while the + % section is on page n+1, thus toc/etc. are wrong. Debian bug 276000. + \nobreak + % + % Output the actual section heading. + \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright + \hangindent=\wd0 % zero if no section number + \unhbox0 #1}% + }% + % Add extra space after the heading -- half of whatever came above it. + % Don't allow stretch, though. + \kern .5 \csname #2headingskip\endcsname + % + % Do not let the kern be a potential breakpoint, as it would be if it + % was followed by glue. + \nobreak + % + % We'll almost certainly start a paragraph next, so don't let that + % glue accumulate. (Not a breakpoint because it's preceded by a + % discardable item.) However, when a paragraph is not started next + % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out + % or the negative glue will cause weirdly wrong output, typically + % obscuring the section heading with something else. + \vskip-\parskip + % + % This is so the last item on the main vertical list is a known + % \penalty > 10000, so \startdefun, etc., can recognize the situation + % and do the needful. + \penalty 10001 +} + + +\message{toc,} +% Table of contents. +\newwrite\tocfile + +% Write an entry to the toc file, opening it if necessary. +% Called from @chapter, etc. +% +% Example usage: \writetocentry{sec}{Section Name}{\the\chapno.\the\secno} +% We append the current node name (if any) and page number as additional +% arguments for the \{chap,sec,...}entry macros which will eventually +% read this. The node name is used in the pdf outlines as the +% destination to jump to. +% +% We open the .toc file for writing here instead of at @setfilename (or +% any other fixed time) so that @contents can be anywhere in the document. +% But if #1 is `omit', then we don't do anything. This is used for the +% table of contents chapter openings themselves. +% +\newif\iftocfileopened +\def\omitkeyword{omit}% +% +\def\writetocentry#1#2#3{% + \edef\writetoctype{#1}% + \ifx\writetoctype\omitkeyword \else + \iftocfileopened\else + \immediate\openout\tocfile = \jobname.toc + \global\tocfileopenedtrue + \fi + % + \iflinks + {\atdummies + \edef\temp{% + \write\tocfile{@#1entry{#2}{#3}{\lastnode}{\noexpand\folio}}}% + \temp + }% + \fi + \fi + % + % Tell \shipout to create a pdf destination on each page, if we're + % writing pdf. These are used in the table of contents. We can't + % just write one on every page because the title pages are numbered + % 1 and 2 (the page numbers aren't printed), and so are the first + % two pages of the document. Thus, we'd have two destinations named + % `1', and two named `2'. + \ifpdf \global\pdfmakepagedesttrue \fi +} + + +% These characters do not print properly in the Computer Modern roman +% fonts, so we must take special care. This is more or less redundant +% with the Texinfo input format setup at the end of this file. +% +\def\activecatcodes{% + \catcode`\"=\active + \catcode`\$=\active + \catcode`\<=\active + \catcode`\>=\active + \catcode`\\=\active + \catcode`\^=\active + \catcode`\_=\active + \catcode`\|=\active + \catcode`\~=\active +} + + +% Read the toc file, which is essentially Texinfo input. +\def\readtocfile{% + \setupdatafile + \activecatcodes + \input \tocreadfilename +} + +\newskip\contentsrightmargin \contentsrightmargin=1in +\newcount\savepageno +\newcount\lastnegativepageno \lastnegativepageno = -1 + +% Prepare to read what we've written to \tocfile. +% +\def\startcontents#1{% + % If @setchapternewpage on, and @headings double, the contents should + % start on an odd page, unlike chapters. Thus, we maintain + % \contentsalignmacro in parallel with \pagealignmacro. + % From: Torbjorn Granlund + \contentsalignmacro + \immediate\closeout\tocfile + % + % Don't need to put `Contents' or `Short Contents' in the headline. + % It is abundantly clear what they are. + \chapmacro{#1}{Yomitfromtoc}{}% + % + \savepageno = \pageno + \begingroup % Set up to handle contents files properly. + \raggedbottom % Worry more about breakpoints than the bottom. + \advance\hsize by -\contentsrightmargin % Don't use the full line length. + % + % Roman numerals for page numbers. + \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi +} + +% redefined for the two-volume lispref. We always output on +% \jobname.toc even if this is redefined. +% +\def\tocreadfilename{\jobname.toc} + +% Normal (long) toc. +% +\def\contents{% + \startcontents{\putwordTOC}% + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \readtocfile + \fi + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \ifeof 1 \else + \pdfmakeoutlines + \fi + \closein 1 + \endgroup + \lastnegativepageno = \pageno + \global\pageno = \savepageno +} + +% And just the chapters. +\def\summarycontents{% + \startcontents{\putwordShortTOC}% + % + \let\partentry = \shortpartentry + \let\numchapentry = \shortchapentry + \let\appentry = \shortchapentry + \let\unnchapentry = \shortunnchapentry + % We want a true roman here for the page numbers. + \secfonts + \let\rm=\shortcontrm \let\bf=\shortcontbf + \let\sl=\shortcontsl \let\tt=\shortconttt + \rm + \hyphenpenalty = 10000 + \advance\baselineskip by 1pt % Open it up a little. + \def\numsecentry##1##2##3##4{} + \let\appsecentry = \numsecentry + \let\unnsecentry = \numsecentry + \let\numsubsecentry = \numsecentry + \let\appsubsecentry = \numsecentry + \let\unnsubsecentry = \numsecentry + \let\numsubsubsecentry = \numsecentry + \let\appsubsubsecentry = \numsecentry + \let\unnsubsubsecentry = \numsecentry + \openin 1 \tocreadfilename\space + \ifeof 1 \else + \readtocfile + \fi + \closein 1 + \vfill \eject + \contentsalignmacro % in case @setchapternewpage odd is in effect + \endgroup + \lastnegativepageno = \pageno + \global\pageno = \savepageno +} +\let\shortcontents = \summarycontents + +% Typeset the label for a chapter or appendix for the short contents. +% The arg is, e.g., `A' for an appendix, or `3' for a chapter. +% +\def\shortchaplabel#1{% + % This space should be enough, since a single number is .5em, and the + % widest letter (M) is 1em, at least in the Computer Modern fonts. + % But use \hss just in case. + % (This space doesn't include the extra space that gets added after + % the label; that gets put in by \shortchapentry above.) + % + % We'd like to right-justify chapter numbers, but that looks strange + % with appendix letters. And right-justifying numbers and + % left-justifying letters looks strange when there is less than 10 + % chapters. Have to read the whole toc once to know how many chapters + % there are before deciding ... + \hbox to 1em{#1\hss}% +} + +% These macros generate individual entries in the table of contents. +% The first argument is the chapter or section name. +% The last argument is the page number. +% The arguments in between are the chapter number, section number, ... + +% Parts, in the main contents. Replace the part number, which doesn't +% exist, with an empty box. Let's hope all the numbers have the same width. +% Also ignore the page number, which is conventionally not printed. +\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}} +\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}} +% +% Parts, in the short toc. +\def\shortpartentry#1#2#3#4{% + \penalty-300 + \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip + \shortchapentry{{\bf #1}}{\numeralbox}{}{}% +} + +% Chapters, in the main contents. +\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}} +% +% Chapters, in the short toc. +% See comments in \dochapentry re vbox and related settings. +\def\shortchapentry#1#2#3#4{% + \tocentry{\shortchaplabel{#2}\labelspace #1}{\doshortpageno\bgroup#4\egroup}% +} + +% Appendices, in the main contents. +% Need the word Appendix, and a fixed-size box. +% +\def\appendixbox#1{% + % We use M since it's probably the widest letter. + \setbox0 = \hbox{\putwordAppendix{} M}% + \hbox to \wd0{\putwordAppendix{} #1\hss}} +% +\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}} + +% Unnumbered chapters. +\def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}} +\def\shortunnchapentry#1#2#3#4{\tocentry{#1}{\doshortpageno\bgroup#4\egroup}} + +% Sections. +\def\numsecentry#1#2#3#4{\dosecentry{#2\labelspace#1}{#4}} +\let\appsecentry=\numsecentry +\def\unnsecentry#1#2#3#4{\dosecentry{#1}{#4}} + +% Subsections. +\def\numsubsecentry#1#2#3#4{\dosubsecentry{#2\labelspace#1}{#4}} +\let\appsubsecentry=\numsubsecentry +\def\unnsubsecentry#1#2#3#4{\dosubsecentry{#1}{#4}} + +% And subsubsections. +\def\numsubsubsecentry#1#2#3#4{\dosubsubsecentry{#2\labelspace#1}{#4}} +\let\appsubsubsecentry=\numsubsubsecentry +\def\unnsubsubsecentry#1#2#3#4{\dosubsubsecentry{#1}{#4}} + +% This parameter controls the indentation of the various levels. +% Same as \defaultparindent. +\newdimen\tocindent \tocindent = 15pt + +% Now for the actual typesetting. In all these, #1 is the text and #2 is the +% page number. +% +% If the toc has to be broken over pages, we want it to be at chapters +% if at all possible; hence the \penalty. +\def\dochapentry#1#2{% + \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip + \begingroup + \chapentryfonts + \tocentry{#1}{\dopageno\bgroup#2\egroup}% + \endgroup + \nobreak\vskip .25\baselineskip plus.1\baselineskip +} + +\def\dosecentry#1#2{\begingroup + \secentryfonts \leftskip=\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +\def\dosubsecentry#1#2{\begingroup + \subsecentryfonts \leftskip=2\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +\def\dosubsubsecentry#1#2{\begingroup + \subsubsecentryfonts \leftskip=3\tocindent + \tocentry{#1}{\dopageno\bgroup#2\egroup}% +\endgroup} + +% We use the same \entry macro as for the index entries. +\let\tocentry = \entry + +% Space between chapter (or whatever) number and the title. +\def\labelspace{\hskip1em \relax} + +\def\dopageno#1{{\rm #1}} +\def\doshortpageno#1{{\rm #1}} + +\def\chapentryfonts{\secfonts \rm} +\def\secentryfonts{\textfonts} +\def\subsecentryfonts{\textfonts} +\def\subsubsecentryfonts{\textfonts} + + +\message{environments,} +% @foo ... @end foo. + +% @tex ... @end tex escapes into raw TeX temporarily. +% One exception: @ is still an escape character, so that @end tex works. +% But \@ or @@ will get a plain @ character. + +\envdef\tex{% + \setupmarkupstyle{tex}% + \catcode `\\=0 \catcode `\{=1 \catcode `\}=2 + \catcode `\$=3 \catcode `\&=4 \catcode `\#=6 + \catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie + \catcode `\%=14 + \catcode `\+=\other + \catcode `\"=\other + \catcode `\|=\other + \catcode `\<=\other + \catcode `\>=\other + \catcode `\`=\other + \catcode `\'=\other + \escapechar=`\\ + % + % ' is active in math mode (mathcode"8000). So reset it, and all our + % other math active characters (just in case), to plain's definitions. + \mathactive + % + \let\b=\ptexb + \let\bullet=\ptexbullet + \let\c=\ptexc + \let\,=\ptexcomma + \let\.=\ptexdot + \let\dots=\ptexdots + \let\equiv=\ptexequiv + \let\!=\ptexexclam + \let\i=\ptexi + \let\indent=\ptexindent + \let\noindent=\ptexnoindent + \let\{=\ptexlbrace + \let\+=\tabalign + \let\}=\ptexrbrace + \let\/=\ptexslash + \let\*=\ptexstar + \let\t=\ptext + \expandafter \let\csname top\endcsname=\ptextop % we've made it outer + \let\frenchspacing=\plainfrenchspacing + % + \def\endldots{\mathinner{\ldots\ldots\ldots\ldots}}% + \def\enddots{\relax\ifmmode\endldots\else$\mathsurround=0pt \endldots\,$\fi}% + \def\@{@}% +} +% There is no need to define \Etex. + +% Define @lisp ... @end lisp. +% @lisp environment forms a group so it can rebind things, +% including the definition of @end lisp (which normally is erroneous). + +% Amount to narrow the margins by for @lisp. +\newskip\lispnarrowing \lispnarrowing=0.4in + +% This is the definition that ^^M gets inside @lisp, @example, and other +% such environments. \null is better than a space, since it doesn't +% have any width. +\def\lisppar{\null\endgraf} + +% This space is always present above and below environments. +\newskip\envskipamount \envskipamount = 0pt + +% Make spacing and below environment symmetrical. We use \parskip here +% to help in doing that, since in @example-like environments \parskip +% is reset to zero; thus the \afterenvbreak inserts no space -- but the +% start of the next paragraph will insert \parskip. +% +\def\aboveenvbreak{{% + % =10000 instead of <10000 because of a special case in \itemzzz and + % \sectionheading, q.v. + \ifnum \lastpenalty=10000 \else + \advance\envskipamount by \parskip + \endgraf + \ifdim\lastskip<\envskipamount + \removelastskip + % it's not a good place to break if the last penalty was \nobreak + % or better ... + \ifnum\lastpenalty<10000 \penalty-50 \fi + \vskip\envskipamount + \fi + \fi +}} + +\let\afterenvbreak = \aboveenvbreak + +% \nonarrowing is a flag. If "set", @lisp etc don't narrow margins; it will +% also clear it, so that its embedded environments do the narrowing again. +\let\nonarrowing=\relax + +% @cartouche ... @end cartouche: draw rectangle w/rounded corners around +% environment contents. +\font\circle=lcircle10 +\newdimen\circthick +\newdimen\cartouter\newdimen\cartinner +\newskip\normbskip\newskip\normpskip\newskip\normlskip +\circthick=\fontdimen8\circle +% +\def\ctl{{\circle\char'013\hskip -6pt}}% 6pt from pl file: 1/2charwidth +\def\ctr{{\hskip 6pt\circle\char'010}} +\def\cbl{{\circle\char'012\hskip -6pt}} +\def\cbr{{\hskip 6pt\circle\char'011}} +\def\carttop{\hbox to \cartouter{\hskip\lskip + \ctl\leaders\hrule height\circthick\hfil\ctr + \hskip\rskip}} +\def\cartbot{\hbox to \cartouter{\hskip\lskip + \cbl\leaders\hrule height\circthick\hfil\cbr + \hskip\rskip}} +% +\newskip\lskip\newskip\rskip + +\envdef\cartouche{% + \ifhmode\par\fi % can't be in the midst of a paragraph. + \startsavinginserts + \lskip=\leftskip \rskip=\rightskip + \leftskip=0pt\rightskip=0pt % we want these *outside*. + \cartinner=\hsize \advance\cartinner by-\lskip + \advance\cartinner by-\rskip + \cartouter=\hsize + \advance\cartouter by 18.4pt % allow for 3pt kerns on either + % side, and for 6pt waste from + % each corner char, and rule thickness + \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip + % Flag to tell @lisp, etc., not to narrow margin. + \let\nonarrowing = t% + % + % If this cartouche directly follows a sectioning command, we need the + % \parskip glue (backspaced over by default) or the cartouche can + % collide with the section heading. + \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi + % + \vbox\bgroup + \baselineskip=0pt\parskip=0pt\lineskip=0pt + \carttop + \hbox\bgroup + \hskip\lskip + \vrule\kern3pt + \vbox\bgroup + \kern3pt + \hsize=\cartinner + \baselineskip=\normbskip + \lineskip=\normlskip + \parskip=\normpskip + \vskip -\parskip + \comment % For explanation, see the end of def\group. +} +\def\Ecartouche{% + \ifhmode\par\fi + \kern3pt + \egroup + \kern3pt\vrule + \hskip\rskip + \egroup + \cartbot + \egroup + \checkinserts +} + + +% This macro is called at the beginning of all the @example variants, +% inside a group. +\newdimen\nonfillparindent +\def\nonfillstart{% + \aboveenvbreak + \ifdim\hfuzz < 12pt \hfuzz = 12pt \fi % Don't be fussy + \sepspaces % Make spaces be word-separators rather than space tokens. + \let\par = \lisppar % don't ignore blank lines + \obeylines % each line of input is a line of output + \parskip = 0pt + % Turn off paragraph indentation but redefine \indent to emulate + % the normal \indent. + \nonfillparindent=\parindent + \parindent = 0pt + \let\indent\nonfillindent + % + \emergencystretch = 0pt % don't try to avoid overfull boxes + \ifx\nonarrowing\relax + \advance \leftskip by \lispnarrowing + \exdentamount=\lispnarrowing + \else + \let\nonarrowing = \relax + \fi + \let\exdent=\nofillexdent +} + +\begingroup +\obeyspaces +% We want to swallow spaces (but not other tokens) after the fake +% @indent in our nonfill-environments, where spaces are normally +% active and set to @tie, resulting in them not being ignored after +% @indent. +\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}% +\gdef\nonfillindentcheck{% +\ifx\temp % +\expandafter\nonfillindentgobble% +\else% +\leavevmode\nonfillindentbox% +\fi% +}% +\endgroup +\def\nonfillindentgobble#1{\nonfillindent} +\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}} + +% If you want all examples etc. small: @set dispenvsize small. +% If you want even small examples the full size: @set dispenvsize nosmall. +% This affects the following displayed environments: +% @example, @display, @format, @lisp +% +\def\smallword{small} +\def\nosmallword{nosmall} +\let\SETdispenvsize\relax +\def\setnormaldispenv{% + \ifx\SETdispenvsize\smallword + % end paragraph for sake of leading, in case document has no blank + % line. This is redundant with what happens in \aboveenvbreak, but + % we need to do it before changing the fonts, and it's inconvenient + % to change the fonts afterward. + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi +} +\def\setsmalldispenv{% + \ifx\SETdispenvsize\nosmallword + \else + \ifnum \lastpenalty=10000 \else \endgraf \fi + \smallexamplefonts \rm + \fi +} + +% We often define two environments, @foo and @smallfoo. +% Let's do it in one command. #1 is the env name, #2 the definition. +\def\makedispenvdef#1#2{% + \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}% + \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}% + \expandafter\let\csname E#1\endcsname \afterenvbreak + \expandafter\let\csname Esmall#1\endcsname \afterenvbreak +} + +% Define two environment synonyms (#1 and #2) for an environment. +\def\maketwodispenvdef#1#2#3{% + \makedispenvdef{#1}{#3}% + \makedispenvdef{#2}{#3}% +} +% +% @lisp: indented, narrowed, typewriter font; +% @example: same as @lisp. +% +% @smallexample and @smalllisp: use smaller fonts. +% Originally contributed by Pavel@xerox. +% +\maketwodispenvdef{lisp}{example}{% + \nonfillstart + \tt\setupmarkupstyle{example}% + \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special. + \gobble % eat return +} +% @display/@smalldisplay: same as @lisp except keep current font. +% +\makedispenvdef{display}{% + \nonfillstart + \gobble +} + +% @format/@smallformat: same as @display except don't narrow margins. +% +\makedispenvdef{format}{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} + +% @flushleft: same as @format, but doesn't obey \SETdispenvsize. +\envdef\flushleft{% + \let\nonarrowing = t% + \nonfillstart + \gobble +} +\let\Eflushleft = \afterenvbreak + +% @flushright. +% +\envdef\flushright{% + \let\nonarrowing = t% + \nonfillstart + \advance\leftskip by 0pt plus 1fill\relax + \gobble +} +\let\Eflushright = \afterenvbreak + + +% @raggedright does more-or-less normal line breaking but no right +% justification. From plain.tex. +\envdef\raggedright{% + \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax +} +\let\Eraggedright\par + +\envdef\raggedleft{% + \parindent=0pt \leftskip0pt plus2em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. +} +\let\Eraggedleft\par + +\envdef\raggedcenter{% + \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em + \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt + \hbadness=10000 % Last line will usually be underfull, so turn off + % badness reporting. +} +\let\Eraggedcenter\par + + +% @quotation does normal linebreaking (hence we can't use \nonfillstart) +% and narrows the margins. We keep \parskip nonzero in general, since +% we're doing normal filling. So, when using \aboveenvbreak and +% \afterenvbreak, temporarily make \parskip 0. +% +\makedispenvdef{quotation}{\quotationstart} +% +\def\quotationstart{% + \indentedblockstart % same as \indentedblock, but increase right margin too. + \ifx\nonarrowing\relax + \advance\rightskip by \lispnarrowing + \fi + \parsearg\quotationlabel +} + +% We have retained a nonzero parskip for the environment, since we're +% doing normal filling. +% +\def\Equotation{% + \par + \ifx\quotationauthor\thisisundefined\else + % indent a bit. + \leftline{\kern 2\leftskip \sl ---\quotationauthor}% + \fi + {\parskip=0pt \afterenvbreak}% +} +\def\Esmallquotation{\Equotation} + +% If we're given an argument, typeset it in bold with a colon after. +\def\quotationlabel#1{% + \def\temp{#1}% + \ifx\temp\empty \else + {\bf #1: }% + \fi +} + +% @indentedblock is like @quotation, but indents only on the left and +% has no optional argument. +% +\makedispenvdef{indentedblock}{\indentedblockstart} +% +\def\indentedblockstart{% + {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip + \parindent=0pt + % + % @cartouche defines \nonarrowing to inhibit narrowing at next level down. + \ifx\nonarrowing\relax + \advance\leftskip by \lispnarrowing + \exdentamount = \lispnarrowing + \else + \let\nonarrowing = \relax + \fi +} + +% Keep a nonzero parskip for the environment, since we're doing normal filling. +% +\def\Eindentedblock{% + \par + {\parskip=0pt \afterenvbreak}% +} +\def\Esmallindentedblock{\Eindentedblock} + + +% LaTeX-like @verbatim...@end verbatim and @verb{...} +% If we want to allow any as delimiter, +% we need the curly braces so that makeinfo sees the @verb command, eg: +% `@verbx...x' would look like the '@verbx' command. --janneke@gnu.org +% +% [Knuth]: Donald Ervin Knuth, 1996. The TeXbook. +% +% [Knuth] p.344; only we need to do the other characters Texinfo sets +% active too. Otherwise, they get lost as the first character on a +% verbatim line. +\def\dospecials{% + \do\ \do\\\do\{\do\}\do\$\do\&% + \do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~% + \do\<\do\>\do\|\do\@\do+\do\"% + % Don't do the quotes -- if we do, @set txicodequoteundirected and + % @set txicodequotebacktick will not have effect on @verb and + % @verbatim, and ?` and !` ligatures won't get disabled. + %\do\`\do\'% +} +% +% [Knuth] p. 380 +\def\uncatcodespecials{% + \def\do##1{\catcode`##1=\other}\dospecials} +% +% Setup for the @verb command. +% +% Eight spaces for a tab +\begingroup + \catcode`\^^I=\active + \gdef\tabeightspaces{\catcode`\^^I=\active\def^^I{\ \ \ \ \ \ \ \ }} +\endgroup +% +\def\setupverb{% + \tt % easiest (and conventionally used) font for verbatim + \def\par{\leavevmode\endgraf}% + \setupmarkupstyle{verb}% + \tabeightspaces + % Respect line breaks, + % print special symbols as themselves, and + % make each space count + % must do in this order: + \obeylines \uncatcodespecials \sepspaces +} + +% Setup for the @verbatim environment +% +% Real tab expansion. +\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount +% +% We typeset each line of the verbatim in an \hbox, so we can handle +% tabs. The \global is in case the verbatim line starts with an accent, +% or some other command that starts with a begin-group. Otherwise, the +% entire \verbbox would disappear at the corresponding end-group, before +% it is typeset. Meanwhile, we can't have nested verbatim commands +% (can we?), so the \global won't be overwriting itself. +\newbox\verbbox +\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup} +% +\begingroup + \catcode`\^^I=\active + \gdef\tabexpand{% + \catcode`\^^I=\active + \def^^I{\leavevmode\egroup + \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab + \divide\dimen\verbbox by\tabw + \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw + \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw + \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox + }% + } +\endgroup + +% start the verbatim environment. +\def\setupverbatim{% + \let\nonarrowing = t% + \nonfillstart + \tt % easiest (and conventionally used) font for verbatim + % The \leavevmode here is for blank lines. Otherwise, we would + % never \starttabox and the \egroup would end verbatim mode. + \def\par{\leavevmode\egroup\box\verbbox\endgraf}% + \tabexpand + \setupmarkupstyle{verbatim}% + % Respect line breaks, + % print special symbols as themselves, and + % make each space count. + % Must do in this order: + \obeylines \uncatcodespecials \sepspaces + \everypar{\starttabbox}% +} + +% Do the @verb magic: verbatim text is quoted by unique +% delimiter characters. Before first delimiter expect a +% right brace, after last delimiter expect closing brace: +% +% \def\doverb'{'#1'}'{#1} +% +% [Knuth] p. 382; only eat outer {} +\begingroup + \catcode`[=1\catcode`]=2\catcode`\{=\other\catcode`\}=\other + \gdef\doverb{#1[\def\next##1#1}[##1\endgroup]\next] +\endgroup +% +\def\verb{\begingroup\setupverb\doverb} +% +% +% Do the @verbatim magic: define the macro \doverbatim so that +% the (first) argument ends when '@end verbatim' is reached, ie: +% +% \def\doverbatim#1@end verbatim{#1} +% +% For Texinfo it's a lot easier than for LaTeX, +% because texinfo's \verbatim doesn't stop at '\end{verbatim}': +% we need not redefine '\', '{' and '}'. +% +% Inspired by LaTeX's verbatim command set [latex.ltx] +% +\begingroup + \catcode`\ =\active + \obeylines % + % ignore everything up to the first ^^M, that's the newline at the end + % of the @verbatim input line itself. Otherwise we get an extra blank + % line in the output. + \xdef\doverbatim#1^^M#2@end verbatim{#2\noexpand\end\gobble verbatim}% + % We really want {...\end verbatim} in the body of the macro, but + % without the active space; thus we have to use \xdef and \gobble. +\endgroup +% +\envdef\verbatim{% + \setupverbatim\doverbatim +} +\let\Everbatim = \afterenvbreak + + +% @verbatiminclude FILE - insert text of file in verbatim environment. +% +\def\verbatiminclude{\parseargusing\filenamecatcodes\doverbatiminclude} +% +\def\doverbatiminclude#1{% + {% + \makevalueexpandable + \setupverbatim + \indexnofonts % Allow `@@' and other weird things in file names. + \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}% + \input #1 + \afterenvbreak + }% +} + +% @copying ... @end copying. +% Save the text away for @insertcopying later. +% +% We save the uninterpreted tokens, rather than creating a box. +% Saving the text in a box would be much easier, but then all the +% typesetting commands (@smallbook, font changes, etc.) have to be done +% beforehand -- and a) we want @copying to be done first in the source +% file; b) letting users define the frontmatter in as flexible order as +% possible is very desirable. +% +\def\copying{\checkenv{}\begingroup\scanargctxt\docopying} +\def\docopying#1@end copying{\endgroup\def\copyingtext{#1}} +% +\def\insertcopying{% + \begingroup + \parindent = 0pt % paragraph indentation looks wrong on title page + \scanexp\copyingtext + \endgroup +} + + +\message{defuns,} +% @defun etc. + +\newskip\defbodyindent \defbodyindent=.4in +\newskip\defargsindent \defargsindent=50pt +\newskip\deflastargmargin \deflastargmargin=18pt +\newcount\defunpenalty + +% Start the processing of @deffn: +\def\startdefun{% + \ifnum\lastpenalty<10000 + \medbreak + \defunpenalty=10003 % Will keep this @deffn together with the + % following @def command, see below. + \else + % If there are two @def commands in a row, we'll have a \nobreak, + % which is there to keep the function description together with its + % header. But if there's nothing but headers, we need to allow a + % break somewhere. Check specifically for penalty 10002, inserted + % by \printdefunline, instead of 10000, since the sectioning + % commands also insert a nobreak penalty, and we don't want to allow + % a break between a section heading and a defun. + % + % As a further refinement, we avoid "club" headers by signalling + % with penalty of 10003 after the very first @deffn in the + % sequence (see above), and penalty of 10002 after any following + % @def command. + \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi + % + % Similarly, after a section heading, do not allow a break. + % But do insert the glue. + \medskip % preceded by discardable penalty, so not a breakpoint + \fi + % + \parindent=0in + \advance\leftskip by \defbodyindent + \exdentamount=\defbodyindent +} + +\def\dodefunx#1{% + % First, check whether we are in the right environment: + \checkenv#1% + % + % As above, allow line break if we have multiple x headers in a row. + % It's not a great place, though. + \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi + % + % And now, it's time to reuse the body of the original defun: + \expandafter\gobbledefun#1% +} +\def\gobbledefun#1\startdefun{} + +% \printdefunline \deffnheader{text} +% +\def\printdefunline#1#2{% + \begingroup + % call \deffnheader: + #1#2 \endheader + % common ending: + \interlinepenalty = 10000 + \advance\rightskip by 0pt plus 1fil\relax + \endgraf + \nobreak\vskip -\parskip + \penalty\defunpenalty % signal to \startdefun and \dodefunx + % Some of the @defun-type tags do not enable magic parentheses, + % rendering the following check redundant. But we don't optimize. + \checkparencounts + \endgroup +} + +\def\Edefun{\endgraf\medbreak} + +% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn; +% the only thing remaining is to define \deffnheader. +% +\def\makedefun#1{% + \expandafter\let\csname E#1\endcsname = \Edefun + \edef\temp{\noexpand\domakedefun + \makecsname{#1}\makecsname{#1x}\makecsname{#1header}}% + \temp +} + +% \domakedefun \deffn \deffnx \deffnheader +% +% Define \deffn and \deffnx, without parameters. +% \deffnheader has to be defined explicitly. +% +\def\domakedefun#1#2#3{% + \envdef#1{% + \startdefun + \doingtypefnfalse % distinguish typed functions from all else + \parseargusing\activeparens{\printdefunline#3}% + }% + \def#2{\dodefunx#1}% + \def#3% +} + +\newif\ifdoingtypefn % doing typed function? +\newif\ifrettypeownline % typeset return type on its own line? + +% @deftypefnnewline on|off says whether the return type of typed functions +% are printed on their own line. This affects @deftypefn, @deftypefun, +% @deftypeop, and @deftypemethod. +% +\parseargdef\deftypefnnewline{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETtxideftypefnnl\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @txideftypefnnl value `\temp', + must be on|off}% + \fi\fi +} + +% Untyped functions: + +% @deffn category name args +\makedefun{deffn}{\deffngeneral{}} + +% @deffn category class name args +\makedefun{defop}#1 {\defopon{#1\ \putwordon}} + +% \defopon {category on}class name args +\def\defopon#1#2 {\deffngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + +% \deffngeneral {subind}category name args +% +\def\deffngeneral#1#2 #3 #4\endheader{% + % Remember that \dosubind{fn}{foo}{} is equivalent to \doind{fn}{foo}. + \dosubind{fn}{\code{#3}}{#1}% + \defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}% +} + +% Typed functions: + +% @deftypefn category type name args +\makedefun{deftypefn}{\deftypefngeneral{}} + +% @deftypeop category class type name args +\makedefun{deftypeop}#1 {\deftypeopon{#1\ \putwordon}} + +% \deftypeopon {category on}class type name args +\def\deftypeopon#1#2 {\deftypefngeneral{\putwordon\ \code{#2}}{#1\ \code{#2}} } + +% \deftypefngeneral {subind}category type name args +% +\def\deftypefngeneral#1#2 #3 #4 #5\endheader{% + \dosubind{fn}{\code{#4}}{#1}% + \doingtypefntrue + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +} + +% Typed variables: + +% @deftypevr category type var args +\makedefun{deftypevr}{\deftypecvgeneral{}} + +% @deftypecv category class type var args +\makedefun{deftypecv}#1 {\deftypecvof{#1\ \putwordof}} + +% \deftypecvof {category of}class type var args +\def\deftypecvof#1#2 {\deftypecvgeneral{\putwordof\ \code{#2}}{#1\ \code{#2}} } + +% \deftypecvgeneral {subind}category type var args +% +\def\deftypecvgeneral#1#2 #3 #4 #5\endheader{% + \dosubind{vr}{\code{#4}}{#1}% + \defname{#2}{#3}{#4}\defunargs{#5\unskip}% +} + +% Untyped variables: + +% @defvr category var args +\makedefun{defvr}#1 {\deftypevrheader{#1} {} } + +% @defcv category class var args +\makedefun{defcv}#1 {\defcvof{#1\ \putwordof}} + +% \defcvof {category of}class var args +\def\defcvof#1#2 {\deftypecvof{#1}#2 {} } + +% Types: + +% @deftp category name args +\makedefun{deftp}#1 #2 #3\endheader{% + \doind{tp}{\code{#2}}% + \defname{#1}{}{#2}\defunargs{#3\unskip}% +} + +% Remaining @defun-like shortcuts: +\makedefun{defun}{\deffnheader{\putwordDeffunc} } +\makedefun{defmac}{\deffnheader{\putwordDefmac} } +\makedefun{defspec}{\deffnheader{\putwordDefspec} } +\makedefun{deftypefun}{\deftypefnheader{\putwordDeffunc} } +\makedefun{defvar}{\defvrheader{\putwordDefvar} } +\makedefun{defopt}{\defvrheader{\putwordDefopt} } +\makedefun{deftypevar}{\deftypevrheader{\putwordDefvar} } +\makedefun{defmethod}{\defopon\putwordMethodon} +\makedefun{deftypemethod}{\deftypeopon\putwordMethodon} +\makedefun{defivar}{\defcvof\putwordInstanceVariableof} +\makedefun{deftypeivar}{\deftypecvof\putwordInstanceVariableof} + +% \defname, which formats the name of the @def (not the args). +% #1 is the category, such as "Function". +% #2 is the return type, if any. +% #3 is the function name. +% +% We are followed by (but not passed) the arguments, if any. +% +\def\defname#1#2#3{% + \par + % Get the values of \leftskip and \rightskip as they were outside the @def... + \advance\leftskip by -\defbodyindent + % + % Determine if we are typesetting the return type of a typed function + % on a line by itself. + \rettypeownlinefalse + \ifdoingtypefn % doing a typed function specifically? + % then check user option for putting return type on its own line: + \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else + \rettypeownlinetrue + \fi + \fi + % + % How we'll format the category name. Putting it in brackets helps + % distinguish it from the body text that may end up on the next line + % just below it. + \def\temp{#1}% + \setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi} + % + % Figure out line sizes for the paragraph shape. We'll always have at + % least two. + \tempnum = 2 + % + % The first line needs space for \box0; but if \rightskip is nonzero, + % we need only space for the part of \box0 which exceeds it: + \dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip + % + % If doing a return type on its own line, we'll have another line. + \ifrettypeownline + \advance\tempnum by 1 + \def\maybeshapeline{0in \hsize}% + \else + \def\maybeshapeline{}% + \fi + % + % The continuations: + \dimen2=\hsize \advance\dimen2 by -\defargsindent + % + % The final paragraph shape: + \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2 + % + % Put the category name at the right margin. + \noindent + \hbox to 0pt{% + \hfil\box0 \kern-\hsize + % \hsize has to be shortened this way: + \kern\leftskip + % Intentionally do not respect \rightskip, since we need the space. + }% + % + % Allow all lines to be underfull without complaint: + \tolerance=10000 \hbadness=10000 + \exdentamount=\defbodyindent + {% + % defun fonts. We use typewriter by default (used to be bold) because: + % . we're printing identifiers, they should be in tt in principle. + % . in languages with many accents, such as Czech or French, it's + % common to leave accents off identifiers. The result looks ok in + % tt, but exceedingly strange in rm. + % . we don't want -- and --- to be treated as ligatures. + % . this still does not fix the ?` and !` ligatures, but so far no + % one has made identifiers using them :). + \df \tt + \def\temp{#2}% text of the return type + \ifx\temp\empty\else + \tclose{\temp}% typeset the return type + \ifrettypeownline + % put return type on its own line; prohibit line break following: + \hfil\vadjust{\nobreak}\break + \else + \space % type on same line, so just followed by a space + \fi + \fi % no return type + #3% output function name + }% + {\rm\enskip}% hskip 0.5 em of \tenrm + % + \boldbrax + % arguments will be output next, if any. +} + +% Print arguments in slanted roman (not ttsl), inconsistently with using +% tt for the name. This is because literal text is sometimes needed in +% the argument list (groff manual), and ttsl and tt are not very +% distinguishable. Prevent hyphenation at `-' chars. +% +\def\defunargs#1{% + % use sl by default (not ttsl), + % tt for the names. + \df \sl \hyphenchar\font=0 + % + % On the other hand, if an argument has two dashes (for instance), we + % want a way to get ttsl. We used to recommend @var for that, so + % leave the code in, but it's strange for @var to lead to typewriter. + % Nowadays we recommend @code, since the difference between a ttsl hyphen + % and a tt hyphen is pretty tiny. @code also disables ?` !`. + \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}% + #1% + \sl\hyphenchar\font=45 +} + +% We want ()&[] to print specially on the defun line. +% +\def\activeparens{% + \catcode`\(=\active \catcode`\)=\active + \catcode`\[=\active \catcode`\]=\active + \catcode`\&=\active +} + +% Make control sequences which act like normal parenthesis chars. +\let\lparen = ( \let\rparen = ) + +% Be sure that we always have a definition for `(', etc. For example, +% if the fn name has parens in it, \boldbrax will not be in effect yet, +% so TeX would otherwise complain about undefined control sequence. +{ + \activeparens + \global\let(=\lparen \global\let)=\rparen + \global\let[=\lbrack \global\let]=\rbrack + \global\let& = \& + + \gdef\boldbrax{\let(=\opnr\let)=\clnr\let[=\lbrb\let]=\rbrb} + \gdef\magicamp{\let&=\amprm} +} + +\newcount\parencount + +% If we encounter &foo, then turn on ()-hacking afterwards +\newif\ifampseen +\def\amprm#1 {\ampseentrue{\bf\ }} + +\def\parenfont{% + \ifampseen + % At the first level, print parens in roman, + % otherwise use the default font. + \ifnum \parencount=1 \rm \fi + \else + % The \sf parens (in \boldbrax) actually are a little bolder than + % the contained text. This is especially needed for [ and ] . + \sf + \fi +} +\def\infirstlevel#1{% + \ifampseen + \ifnum\parencount=1 + #1% + \fi + \fi +} +\def\bfafterword#1 {#1 \bf} + +\def\opnr{% + \global\advance\parencount by 1 + {\parenfont(}% + \infirstlevel \bfafterword +} +\def\clnr{% + {\parenfont)}% + \infirstlevel \sl + \global\advance\parencount by -1 +} + +\newcount\brackcount +\def\lbrb{% + \global\advance\brackcount by 1 + {\bf[}% +} +\def\rbrb{% + {\bf]}% + \global\advance\brackcount by -1 +} + +\def\checkparencounts{% + \ifnum\parencount=0 \else \badparencount \fi + \ifnum\brackcount=0 \else \badbrackcount \fi +} +% these should not use \errmessage; the glibc manual, at least, actually +% has such constructs (when documenting function pointers). +\def\badparencount{% + \message{Warning: unbalanced parentheses in @def...}% + \global\parencount=0 +} +\def\badbrackcount{% + \message{Warning: unbalanced square brackets in @def...}% + \global\brackcount=0 +} + + +\message{macros,} +% @macro. + +% To do this right we need a feature of e-TeX, \scantokens, +% which we arrange to emulate with a temporary file in ordinary TeX. +\ifx\eTeXversion\thisisundefined + \newwrite\macscribble + \def\scantokens#1{% + \toks0={#1}% + \immediate\openout\macscribble=\jobname.tmp + \immediate\write\macscribble{\the\toks0}% + \immediate\closeout\macscribble + \input \jobname.tmp + } +\fi + +\def\scanmacro#1{\begingroup + \newlinechar`\^^M + \let\xeatspaces\eatspaces + % + % Undo catcode changes of \startcontents and \doprintindex + % When called from @insertcopying or (short)caption, we need active + % backslash to get it printed correctly. Previously, we had + % \catcode`\\=\other instead. We'll see whether a problem appears + % with macro expansion. --kasal, 19aug04 + \catcode`\@=0 \catcode`\\=\active \escapechar=`\@ + % + % ... and for \example: + \spaceisspace + % + % The \empty here causes a following catcode 5 newline to be eaten as + % part of reading whitespace after a control sequence. It does not + % eat a catcode 13 newline. There's no good way to handle the two + % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX + % would then have different behavior). See the Macro Details node in + % the manual for the workaround we recommend for macros and + % line-oriented commands. + % + \scantokens{#1\empty}% +\endgroup} + +\def\scanexp#1{% + \edef\temp{\noexpand\scanmacro{#1}}% + \temp +} + +\newcount\paramno % Count of parameters +\newtoks\macname % Macro name +\newif\ifrecursive % Is it recursive? + +% List of all defined macros in the form +% \definedummyword\macro1\definedummyword\macro2... +% Currently is also contains all @aliases; the list can be split +% if there is a need. +\def\macrolist{} + +% Add the macro to \macrolist +\def\addtomacrolist#1{\expandafter \addtomacrolistxxx \csname#1\endcsname} +\def\addtomacrolistxxx#1{% + \toks0 = \expandafter{\macrolist\definedummyword#1}% + \xdef\macrolist{\the\toks0}% +} + +% Utility routines. +% This does \let #1 = #2, with \csnames; that is, +% \let \csname#1\endcsname = \csname#2\endcsname +% (except of course we have to play expansion games). +% +\def\cslet#1#2{% + \expandafter\let + \csname#1\expandafter\endcsname + \csname#2\endcsname +} + +% Trim leading and trailing spaces off a string. +% Concepts from aro-bend problem 15 (see CTAN). +{\catcode`\@=11 +\gdef\eatspaces #1{\expandafter\trim@\expandafter{#1 }} +\gdef\trim@ #1{\trim@@ @#1 @ #1 @ @@} +\gdef\trim@@ #1@ #2@ #3@@{\trim@@@\empty #2 @} +\def\unbrace#1{#1} +\unbrace{\gdef\trim@@@ #1 } #2@{#1} +} + +% Trim a single trailing ^^M off a string. +{\catcode`\^^M=\other \catcode`\Q=3% +\gdef\eatcr #1{\eatcra #1Q^^MQ}% +\gdef\eatcra#1^^MQ{\eatcrb#1Q}% +\gdef\eatcrb#1Q#2Q{#1}% +} + +% Macro bodies are absorbed as an argument in a context where +% all characters are catcode 10, 11 or 12, except \ which is active +% (as in normal texinfo). It is necessary to change the definition of \ +% to recognize macro arguments; this is the job of \mbodybackslash. +% +% Non-ASCII encodings make 8-bit characters active, so un-activate +% them to avoid their expansion. Must do this non-globally, to +% confine the change to the current group. +% +% It's necessary to have hard CRs when the macro is executed. This is +% done by making ^^M (\endlinechar) catcode 12 when reading the macro +% body, and then making it the \newlinechar in \scanmacro. +% +\def\scanctxt{% used as subroutine + \catcode`\"=\other + \catcode`\+=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\@=\other + \catcode`\^=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\~=\other + \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi +} + +\def\scanargctxt{% used for copying and captions, not macros. + \scanctxt + \catcode`\\=\other + \catcode`\^^M=\other +} + +\def\macrobodyctxt{% used for @macro definitions + \scanctxt + \catcode`\{=\other + \catcode`\}=\other + \catcode`\^^M=\other + \usembodybackslash +} + +\def\macroargctxt{% used when scanning invocations + \scanctxt + \catcode`\\=0 +} +% why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes" +% for the single characters \ { }. Thus, we end up with the "commands" +% that would be written @\ @{ @} in a Texinfo document. +% +% We already have @{ and @}. For @\, we define it here, and only for +% this purpose, to produce a typewriter backslash (so, the @\ that we +% define for @math can't be used with @macro calls): +% +\def\\{\normalbackslash}% +% +% We would like to do this for \, too, since that is what makeinfo does. +% But it is not possible, because Texinfo already has a command @, for a +% cedilla accent. Documents must use @comma{} instead. +% +% \anythingelse will almost certainly be an error of some kind. + + +% \mbodybackslash is the definition of \ in @macro bodies. +% It maps \foo\ => \csname macarg.foo\endcsname => #N +% where N is the macro parameter number. +% We define \csname macarg.\endcsname to be \realbackslash, so +% \\ in macro replacement text gets you a backslash. +% +{\catcode`@=0 @catcode`@\=@active + @gdef@usembodybackslash{@let\=@mbodybackslash} + @gdef@mbodybackslash#1\{@csname macarg.#1@endcsname} +} +\expandafter\def\csname macarg.\endcsname{\realbackslash} + +\def\margbackslash#1{\char`\#1 } + +\def\macro{\recursivefalse\parsearg\macroxxx} +\def\rmacro{\recursivetrue\parsearg\macroxxx} + +\def\macroxxx#1{% + \getargs{#1}% now \macname is the macname and \argl the arglist + \ifx\argl\empty % no arguments + \paramno=0\relax + \else + \expandafter\parsemargdef \argl;% + \if\paramno>256\relax + \ifx\eTeXversion\thisisundefined + \errhelp = \EMsimple + \errmessage{You need eTeX to compile a file with macros with more than 256 arguments} + \fi + \fi + \fi + \if1\csname ismacro.\the\macname\endcsname + \message{Warning: redefining \the\macname}% + \else + \expandafter\ifx\csname \the\macname\endcsname \relax + \else \errmessage{Macro name \the\macname\space already defined}\fi + \global\cslet{macsave.\the\macname}{\the\macname}% + \global\expandafter\let\csname ismacro.\the\macname\endcsname=1% + \addtomacrolist{\the\macname}% + \fi + \begingroup \macrobodyctxt + \ifrecursive \expandafter\parsermacbody + \else \expandafter\parsemacbody + \fi} + +\parseargdef\unmacro{% + \if1\csname ismacro.#1\endcsname + \global\cslet{#1}{macsave.#1}% + \global\expandafter\let \csname ismacro.#1\endcsname=0% + % Remove the macro name from \macrolist: + \begingroup + \expandafter\let\csname#1\endcsname \relax + \let\definedummyword\unmacrodo + \xdef\macrolist{\macrolist}% + \endgroup + \else + \errmessage{Macro #1 not defined}% + \fi +} + +% Called by \do from \dounmacro on each macro. The idea is to omit any +% macro definitions that have been changed to \relax. +% +\def\unmacrodo#1{% + \ifx #1\relax + % remove this + \else + \noexpand\definedummyword \noexpand#1% + \fi +} + +% This makes use of the obscure feature that if the last token of a +% is #, then the preceding argument is delimited by +% an opening brace, and that opening brace is not consumed. +\def\getargs#1{\getargsxxx#1{}} +\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs} +\def\getmacname#1 #2\relax{\macname={#1}} +\def\getmacargs#1{\def\argl{#1}} + +% For macro processing make @ a letter so that we can make Texinfo private macro names. +\edef\texiatcatcode{\the\catcode`\@} +\catcode `@=11\relax + +% Parse the optional {params} list. Set up \paramno and \paramlist +% so \defmacro knows what to do. Define \macarg.BLAH for each BLAH +% in the params list to some hook where the argument si to be expanded. If +% there are less than 10 arguments that hook is to be replaced by ##N where N +% is the position in that list, that is to say the macro arguments are to be +% defined `a la TeX in the macro body. +% +% That gets used by \mbodybackslash (above). +% +% We need to get `macro parameter char #' into several definitions. +% The technique used is stolen from LaTeX: let \hash be something +% unexpandable, insert that wherever you need a #, and then redefine +% it to # just before using the token list produced. +% +% The same technique is used to protect \eatspaces till just before +% the macro is used. +% +% If there are 10 or more arguments, a different technique is used, where the +% hook remains in the body, and when macro is to be expanded the body is +% processed again to replace the arguments. +% +% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the +% argument N value and then \edef the body (nothing else will expand because of +% the catcode regime underwhich the body was input). +% +% If you compile with TeX (not eTeX), and you have macros with 10 or more +% arguments, you need that no macro has more than 256 arguments, otherwise an +% error is produced. +\def\parsemargdef#1;{% + \paramno=0\def\paramlist{}% + \let\hash\relax + \let\xeatspaces\relax + \parsemargdefxxx#1,;,% + % In case that there are 10 or more arguments we parse again the arguments + % list to set new definitions for the \macarg.BLAH macros corresponding to + % each BLAH argument. It was anyhow needed to parse already once this list + % in order to count the arguments, and as macros with at most 9 arguments + % are by far more frequent than macro with 10 or more arguments, defining + % twice the \macarg.BLAH macros does not cost too much processing power. + \ifnum\paramno<10\relax\else + \paramno0\relax + \parsemmanyargdef@@#1,;,% 10 or more arguments + \fi +} +\def\parsemargdefxxx#1,{% + \if#1;\let\next=\relax + \else \let\next=\parsemargdefxxx + \advance\paramno by 1 + \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname + {\xeatspaces{\hash\the\paramno}}% + \edef\paramlist{\paramlist\hash\the\paramno,}% + \fi\next} + +\def\parsemmanyargdef@@#1,{% + \if#1;\let\next=\relax + \else + \let\next=\parsemmanyargdef@@ + \edef\tempb{\eatspaces{#1}}% + \expandafter\def\expandafter\tempa + \expandafter{\csname macarg.\tempb\endcsname}% + % Note that we need some extra \noexpand\noexpand, this is because we + % don't want \the to be expanded in the \parsermacbody as it uses an + % \xdef . + \expandafter\edef\tempa + {\noexpand\noexpand\noexpand\the\toks\the\paramno}% + \advance\paramno by 1\relax + \fi\next} + +% These two commands read recursive and nonrecursive macro bodies. +% (They're different since rec and nonrec macros end differently.) +% + +\catcode `\@\texiatcatcode +\long\def\parsemacbody#1@end macro% +{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% +\long\def\parsermacbody#1@end rmacro% +{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}% +\catcode `\@=11\relax + +\let\endargs@\relax +\let\nil@\relax +\def\nilm@{\nil@}% +\long\def\nillm@{\nil@}% + +% This macro is expanded during the Texinfo macro expansion, not during its +% definition. It gets all the arguments values and assigns them to macros +% macarg.ARGNAME +% +% #1 is the macro name +% #2 is the list of argument names +% #3 is the list of argument values +\def\getargvals@#1#2#3{% + \def\macargdeflist@{}% + \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion. + \def\paramlist{#2,\nil@}% + \def\macroname{#1}% + \begingroup + \macroargctxt + \def\argvaluelist{#3,\nil@}% + \def\@tempa{#3}% + \ifx\@tempa\empty + \setemptyargvalues@ + \else + \getargvals@@ + \fi +} + +% +\def\getargvals@@{% + \ifx\paramlist\nilm@ + % Some sanity check needed here that \argvaluelist is also empty. + \ifx\argvaluelist\nillm@ + \else + \errhelp = \EMsimple + \errmessage{Too many arguments in macro `\macroname'!}% + \fi + \let\next\macargexpandinbody@ + \else + \ifx\argvaluelist\nillm@ + % No more arguments values passed to macro. Set remaining named-arg + % macros to empty. + \let\next\setemptyargvalues@ + \else + % pop current arg name into \@tempb + \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}% + \expandafter\@tempa\expandafter{\paramlist}% + % pop current argument value into \@tempc + \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}% + \expandafter\@tempa\expandafter{\argvaluelist}% + % Here \@tempb is the current arg name and \@tempc is the current arg value. + % First place the new argument macro definition into \@tempd + \expandafter\macname\expandafter{\@tempc}% + \expandafter\let\csname macarg.\@tempb\endcsname\relax + \expandafter\def\expandafter\@tempe\expandafter{% + \csname macarg.\@tempb\endcsname}% + \edef\@tempd{\long\def\@tempe{\the\macname}}% + \push@\@tempd\macargdeflist@ + \let\next\getargvals@@ + \fi + \fi + \next +} + +\def\push@#1#2{% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter#2% + \expandafter\expandafter\expandafter{% + \expandafter#1#2}% +} + +% Replace arguments by their values in the macro body, and place the result +% in macro \@tempa +\def\macvalstoargs@{% + % To do this we use the property that token registers that are \the'ed + % within an \edef expand only once. So we are going to place all argument + % values into respective token registers. + % + % First we save the token context, and initialize argument numbering. + \begingroup + \paramno0\relax + % Then, for each argument number #N, we place the corresponding argument + % value into a new token list register \toks#N + \expandafter\putargsintokens@\saveparamlist@,;,% + % Then, we expand the body so that argument are replaced by their + % values. The trick for values not to be expanded themselves is that they + % are within tokens and that tokens expand only once in an \edef . + \edef\@tempc{\csname mac.\macroname .body\endcsname}% + % Now we restore the token stack pointer to free the token list registers + % which we have used, but we make sure that expanded body is saved after + % group. + \expandafter + \endgroup + \expandafter\def\expandafter\@tempa\expandafter{\@tempc}% + } + +\def\macargexpandinbody@{% + %% Define the named-macro outside of this group and then close this group. + \expandafter + \endgroup + \macargdeflist@ + % First the replace in body the macro arguments by their values, the result + % is in \@tempa . + \macvalstoargs@ + % Then we point at the \norecurse or \gobble (for recursive) macro value + % with \@tempb . + \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname + % Depending on whether it is recursive or not, we need some tailing + % \egroup . + \ifx\@tempb\gobble + \let\@tempc\relax + \else + \let\@tempc\egroup + \fi + % And now we do the real job: + \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}% + \@tempd +} + +\def\putargsintokens@#1,{% + \if#1;\let\next\relax + \else + \let\next\putargsintokens@ + % First we allocate the new token list register, and give it a temporary + % alias \@tempb . + \toksdef\@tempb\the\paramno + % Then we place the argument value into that token list register. + \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname + \expandafter\@tempb\expandafter{\@tempa}% + \advance\paramno by 1\relax + \fi + \next +} + +% Save the token stack pointer into macro #1 +\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}} +% Restore the token stack pointer from number in macro #1 +\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax} +% newtoks that can be used non \outer . +\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi} + +% Tailing missing arguments are set to empty +\def\setemptyargvalues@{% + \ifx\paramlist\nilm@ + \let\next\macargexpandinbody@ + \else + \expandafter\setemptyargvaluesparser@\paramlist\endargs@ + \let\next\setemptyargvalues@ + \fi + \next +} + +\def\setemptyargvaluesparser@#1,#2\endargs@{% + \expandafter\def\expandafter\@tempa\expandafter{% + \expandafter\def\csname macarg.#1\endcsname{}}% + \push@\@tempa\macargdeflist@ + \def\paramlist{#2}% +} + +% #1 is the element target macro +% #2 is the list macro +% #3,#4\endargs@ is the list value +\def\pop@#1#2#3,#4\endargs@{% + \def#1{#3}% + \def#2{#4}% +} +\long\def\longpop@#1#2#3,#4\endargs@{% + \long\def#1{#3}% + \long\def#2{#4}% +} + +% This defines a Texinfo @macro. There are eight cases: recursive and +% nonrecursive macros of zero, one, up to nine, and many arguments. +% Much magic with \expandafter here. +% \xdef is used so that macro definitions will survive the file +% they're defined in; @include reads the file inside a group. +% +\def\defmacro{% + \let\hash=##% convert placeholders to macro parameter chars + \ifrecursive + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\scanmacro{\temp}}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname xxx\endcsname}% + \expandafter\xdef\csname\the\macname xxx\endcsname##1{% + \egroup\noexpand\scanmacro{\temp}}% + \else + \ifnum\paramno<10\relax % at most 9 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\csname\the\macname xx\endcsname}% + \expandafter\xdef\csname\the\macname xx\endcsname##1{% + \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname xxx\endcsname + \paramlist{\egroup\noexpand\scanmacro{\temp}}% + \else % 10 or more + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\getargvals@{\the\macname}{\argl}% + }% + \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp + \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble + \fi + \fi + \else + \ifcase\paramno + % 0 + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \or % 1 + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \noexpand\braceorline + \expandafter\noexpand\csname\the\macname xxx\endcsname}% + \expandafter\xdef\csname\the\macname xxx\endcsname##1{% + \egroup + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \else % at most 9 + \ifnum\paramno<10\relax + \expandafter\xdef\csname\the\macname\endcsname{% + \bgroup\noexpand\macroargctxt + \expandafter\noexpand\csname\the\macname xx\endcsname}% + \expandafter\xdef\csname\the\macname xx\endcsname##1{% + \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}% + \expandafter\expandafter + \expandafter\xdef + \expandafter\expandafter + \csname\the\macname xxx\endcsname + \paramlist{% + \egroup + \noexpand\norecurse{\the\macname}% + \noexpand\scanmacro{\temp}\egroup}% + \else % 10 or more: + \expandafter\xdef\csname\the\macname\endcsname{% + \noexpand\getargvals@{\the\macname}{\argl}% + }% + \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp + \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse + \fi + \fi + \fi} + +\catcode `\@\texiatcatcode\relax + +\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}} + +% \braceorline decides whether the next nonwhitespace character is a +% {. If so it reads up to the closing }, if not, it reads the whole +% line. Whatever was read is then fed to the next control sequence +% as an argument (by \parsebrace or \parsearg). +% +\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx} +\def\braceorlinexxx{% + \ifx\nchar\bgroup\else + \expandafter\parsearg + \fi \macnamexxx} + + +% @alias. +% We need some trickery to remove the optional spaces around the equal +% sign. Make them active and then expand them all to nothing. +% +\def\alias{\parseargusing\obeyspaces\aliasxxx} +\def\aliasxxx #1{\aliasyyy#1\relax} +\def\aliasyyy #1=#2\relax{% + {% + \expandafter\let\obeyedspace=\empty + \addtomacrolist{#1}% + \xdef\next{\global\let\makecsname{#1}=\makecsname{#2}}% + }% + \next +} + + +\message{cross references,} + +\newwrite\auxfile +\newif\ifhavexrefs % True if xref values are known. +\newif\ifwarnedxrefs % True if we warned once that they aren't known. + +% @inforef is relatively simple. +\def\inforef #1{\inforefzzz #1,,,,**} +\def\inforefzzz #1,#2,#3,#4**{% + \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}}, + node \samp{\ignorespaces#1{}}} + +% @node's only job in TeX is to define \lastnode, which is used in +% cross-references. The @node line might or might not have commas, and +% might or might not have spaces before the first comma, like: +% @node foo , bar , ... +% We don't want such trailing spaces in the node name. +% +\parseargdef\node{\checkenv{}\donode #1 ,\finishnodeparse} +% +% also remove a trailing comma, in case of something like this: +% @node Help-Cross, , , Cross-refs +\def\donode#1 ,#2\finishnodeparse{\dodonode #1,\finishnodeparse} +\def\dodonode#1,#2\finishnodeparse{\gdef\lastnode{#1}} + +\let\nwnode=\node +\let\lastnode=\empty + +% Write a cross-reference definition for the current node. #1 is the +% type (Ynumbered, Yappendix, Ynothing). +% +\def\donoderef#1{% + \ifx\lastnode\empty\else + \setref{\lastnode}{#1}% + \global\let\lastnode=\empty + \fi +} + +% @anchor{NAME} -- define xref target at arbitrary point. +% +\newcount\savesfregister +% +\def\savesf{\relax \ifhmode \savesfregister=\spacefactor \fi} +\def\restoresf{\relax \ifhmode \spacefactor=\savesfregister \fi} +\def\anchor#1{\savesf \setref{#1}{Ynothing}\restoresf \ignorespaces} + +% \setref{NAME}{SNT} defines a cross-reference point NAME (a node or an +% anchor), which consists of three parts: +% 1) NAME-title - the current sectioning name taken from \lastsection, +% or the anchor name. +% 2) NAME-snt - section number and type, passed as the SNT arg, or +% empty for anchors. +% 3) NAME-pg - the page number. +% +% This is called from \donoderef, \anchor, and \dofloat. In the case of +% floats, there is an additional part, which is not written here: +% 4) NAME-lof - the text as it should appear in a @listoffloats. +% +\def\setref#1#2{% + \pdfmkdest{#1}% + \iflinks + {% + \atdummies % preserve commands, but don't expand them + \edef\writexrdef##1##2{% + \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef + ##1}{##2}}% these are parameters of \writexrdef + }% + \toks0 = \expandafter{\lastsection}% + \immediate \writexrdef{title}{\the\toks0 }% + \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc. + \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout + }% + \fi +} + +% @xrefautosectiontitle on|off says whether @section(ing) names are used +% automatically in xrefs, if the third arg is not explicitly specified. +% This was provided as a "secret" @set xref-automatic-section-title +% variable, now it's official. +% +\parseargdef\xrefautomaticsectiontitle{% + \def\temp{#1}% + \ifx\temp\onword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \empty + \else\ifx\temp\offword + \expandafter\let\csname SETxref-automatic-section-title\endcsname + = \relax + \else + \errhelp = \EMsimple + \errmessage{Unknown @xrefautomaticsectiontitle value `\temp', + must be on|off}% + \fi\fi +} + +% +% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is +% the node name, #2 the name of the Info cross-reference, #3 the printed +% node name, #4 the name of the Info file, #5 the name of the printed +% manual. All but the node name can be omitted. +% +\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]} +\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]} +\def\ref#1{\xrefX[#1,,,,,,,]} +% +\newbox\toprefbox +\newbox\printedrefnamebox +\newbox\infofilenamebox +\newbox\printedmanualbox +% +\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup + \unsepspaces + % + % Get args without leading/trailing spaces. + \def\printedrefname{\ignorespaces #3}% + \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}% + % + \def\infofilename{\ignorespaces #4}% + \setbox\infofilenamebox = \hbox{\infofilename\unskip}% + % + \def\printedmanual{\ignorespaces #5}% + \setbox\printedmanualbox = \hbox{\printedmanual\unskip}% + % + % If the printed reference name (arg #3) was not explicitly given in + % the @xref, figure out what we want to use. + \ifdim \wd\printedrefnamebox = 0pt + % No printed node name was explicitly given. + \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax + % Not auto section-title: use node name inside the square brackets. + \def\printedrefname{\ignorespaces #1}% + \else + % Auto section-title: use chapter/section title inside + % the square brackets if we have it. + \ifdim \wd\printedmanualbox > 0pt + % It is in another manual, so we don't have it; use node name. + \def\printedrefname{\ignorespaces #1}% + \else + \ifhavexrefs + % We (should) know the real title if we have the xref values. + \def\printedrefname{\refx{#1-title}{}}% + \else + % Otherwise just copy the Info node name. + \def\printedrefname{\ignorespaces #1}% + \fi% + \fi + \fi + \fi + % + % Make link in pdf output. + \ifpdf + {\indexnofonts + \turnoffactive + \makevalueexpandable + % This expands tokens, so do it after making catcode changes, so _ + % etc. don't get their TeX definitions. This ignores all spaces in + % #4, including (wrongly) those in the middle of the filename. + \getfilename{#4}% + % + % This (wrongly) does not take account of leading or trailing + % spaces in #1, which should be ignored. + \edef\pdfxrefdest{#1}% + \ifx\pdfxrefdest\empty + \def\pdfxrefdest{Top}% no empty targets + \else + \txiescapepdf\pdfxrefdest % escape PDF special chars + \fi + % + \leavevmode + \startlink attr{/Border [0 0 0]}% + \ifnum\filenamelength>0 + goto file{\the\filename.pdf} name{\pdfxrefdest}% + \else + goto name{\pdfmkpgn{\pdfxrefdest}}% + \fi + }% + \setcolor{\linkcolor}% + \fi + % + % Float references are printed completely differently: "Figure 1.2" + % instead of "[somenode], p.3". We distinguish them by the + % LABEL-title being set to a magic string. + {% + % Have to otherify everything special to allow the \csname to + % include an _ in the xref name, etc. + \indexnofonts + \turnoffactive + \expandafter\global\expandafter\let\expandafter\Xthisreftitle + \csname XR#1-title\endcsname + }% + \iffloat\Xthisreftitle + % If the user specified the print name (third arg) to the ref, + % print it instead of our usual "Figure 1.2". + \ifdim\wd\printedrefnamebox = 0pt + \refx{#1-snt}{}% + \else + \printedrefname + \fi + % + % If the user also gave the printed manual name (fifth arg), append + % "in MANUALNAME". + \ifdim \wd\printedmanualbox > 0pt + \space \putwordin{} \cite{\printedmanual}% + \fi + \else + % node/anchor (non-float) references. + % + % If we use \unhbox to print the node names, TeX does not insert + % empty discretionaries after hyphens, which means that it will not + % find a line break at a hyphen in a node names. Since some manuals + % are best written with fairly long node names, containing hyphens, + % this is a loss. Therefore, we give the text of the node name + % again, so it is as if TeX is seeing it for the first time. + % + \ifdim \wd\printedmanualbox > 0pt + % Cross-manual reference with a printed manual name. + % + \crossmanualxref{\cite{\printedmanual\unskip}}% + % + \else\ifdim \wd\infofilenamebox > 0pt + % Cross-manual reference with only an info filename (arg 4), no + % printed manual name (arg 5). This is essentially the same as + % the case above; we output the filename, since we have nothing else. + % + \crossmanualxref{\code{\infofilename\unskip}}% + % + \else + % Reference within this manual. + % + % _ (for example) has to be the character _ for the purposes of the + % control sequence corresponding to the node, but it has to expand + % into the usual \leavevmode...\vrule stuff for purposes of + % printing. So we \turnoffactive for the \refx-snt, back on for the + % printing, back off for the \refx-pg. + {\turnoffactive + % Only output a following space if the -snt ref is nonempty; for + % @unnumbered and @anchor, it won't be. + \setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}% + \ifdim \wd2 > 0pt \refx{#1-snt}\space\fi + }% + % output the `[mynode]' via the macro below so it can be overridden. + \xrefprintnodename\printedrefname + % + % But we always want a comma and a space: + ,\space + % + % output the `page 3'. + \turnoffactive \putwordpage\tie\refx{#1-pg}{}% + \fi\fi + \fi + \endlink +\endgroup} + +% Output a cross-manual xref to #1. Used just above (twice). +% +% Only include the text "Section ``foo'' in" if the foo is neither +% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply +% "see The Foo Manual", the idea being to refer to the whole manual. +% +% But, this being TeX, we can't easily compare our node name against the +% string "Top" while ignoring the possible spaces before and after in +% the input. By adding the arbitrary 7sp below, we make it much less +% likely that a real node name would have the same width as "Top" (e.g., +% in a monospaced font). Hopefully it will never happen in practice. +% +% For the same basic reason, we retypeset the "Top" at every +% reference, since the current font is indeterminate. +% +\def\crossmanualxref#1{% + \setbox\toprefbox = \hbox{Top\kern7sp}% + \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}% + \ifdim \wd2 > 7sp % nonempty? + \ifdim \wd2 = \wd\toprefbox \else % same as Top? + \putwordSection{} ``\printedrefname'' \putwordin{}\space + \fi + \fi + #1% +} + +% This macro is called from \xrefX for the `[nodename]' part of xref +% output. It's a separate macro only so it can be changed more easily, +% since square brackets don't work well in some documents. Particularly +% one that Bob is working on :). +% +\def\xrefprintnodename#1{[#1]} + +% Things referred to by \setref. +% +\def\Ynothing{} +\def\Yomitfromtoc{} +\def\Ynumbered{% + \ifnum\secno=0 + \putwordChapter@tie \the\chapno + \else \ifnum\subsecno=0 + \putwordSection@tie \the\chapno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno + \else + \putwordSection@tie \the\chapno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} +\def\Yappendix{% + \ifnum\secno=0 + \putwordAppendix@tie @char\the\appendixno{}% + \else \ifnum\subsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno + \else \ifnum\subsubsecno=0 + \putwordSection@tie @char\the\appendixno.\the\secno.\the\subsecno + \else + \putwordSection@tie + @char\the\appendixno.\the\secno.\the\subsecno.\the\subsubsecno + \fi\fi\fi +} + +% Define \refx{NAME}{SUFFIX} to reference a cross-reference string named NAME. +% If its value is nonempty, SUFFIX is output afterward. +% +\def\refx#1#2{% + {% + \indexnofonts + \otherbackslash + \expandafter\global\expandafter\let\expandafter\thisrefX + \csname XR#1\endcsname + }% + \ifx\thisrefX\relax + % If not defined, say something at least. + \angleleft un\-de\-fined\angleright + \iflinks + \ifhavexrefs + {\toks0 = {#1}% avoid expansion of possibly-complex value + \message{\linenumber Undefined cross reference `\the\toks0'.}}% + \else + \ifwarnedxrefs\else + \global\warnedxrefstrue + \message{Cross reference values unknown; you must run TeX again.}% + \fi + \fi + \fi + \else + % It's defined, so just use it. + \thisrefX + \fi + #2% Output the suffix in any case. +} + +% This is the macro invoked by entries in the aux file. Usually it's +% just a \def (we prepend XR to the control sequence name to avoid +% collisions). But if this is a float type, we have more work to do. +% +\def\xrdef#1#2{% + {% The node name might contain 8-bit characters, which in our current + % implementation are changed to commands like @'e. Don't let these + % mess up the control sequence name. + \indexnofonts + \turnoffactive + \xdef\safexrefname{#1}% + }% + % + \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref + % + % Was that xref control sequence that we just defined for a float? + \expandafter\iffloat\csname XR\safexrefname\endcsname + % it was a float, and we have the (safe) float type in \iffloattype. + \expandafter\let\expandafter\floatlist + \csname floatlist\iffloattype\endcsname + % + % Is this the first time we've seen this float type? + \expandafter\ifx\floatlist\relax + \toks0 = {\do}% yes, so just \do + \else + % had it before, so preserve previous elements in list. + \toks0 = \expandafter{\floatlist\do}% + \fi + % + % Remember this xref in the control sequence \floatlistFLOATTYPE, + % for later use in \listoffloats. + \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0 + {\safexrefname}}% + \fi +} + +% Read the last existing aux file, if any. No error if none exists. +% +\def\tryauxfile{% + \openin 1 \jobname.aux + \ifeof 1 \else + \readdatafile{aux}% + \global\havexrefstrue + \fi + \closein 1 +} + +\def\setupdatafile{% + \catcode`\^^@=\other + \catcode`\^^A=\other + \catcode`\^^B=\other + \catcode`\^^C=\other + \catcode`\^^D=\other + \catcode`\^^E=\other + \catcode`\^^F=\other + \catcode`\^^G=\other + \catcode`\^^H=\other + \catcode`\^^K=\other + \catcode`\^^L=\other + \catcode`\^^N=\other + \catcode`\^^P=\other + \catcode`\^^Q=\other + \catcode`\^^R=\other + \catcode`\^^S=\other + \catcode`\^^T=\other + \catcode`\^^U=\other + \catcode`\^^V=\other + \catcode`\^^W=\other + \catcode`\^^X=\other + \catcode`\^^Z=\other + \catcode`\^^[=\other + \catcode`\^^\=\other + \catcode`\^^]=\other + \catcode`\^^^=\other + \catcode`\^^_=\other + % It was suggested to set the catcode of ^ to 7, which would allow ^^e4 etc. + % in xref tags, i.e., node names. But since ^^e4 notation isn't + % supported in the main text, it doesn't seem desirable. Furthermore, + % that is not enough: for node names that actually contain a ^ + % character, we would end up writing a line like this: 'xrdef {'hat + % b-title}{'hat b} and \xrdef does a \csname...\endcsname on the first + % argument, and \hat is not an expandable control sequence. It could + % all be worked out, but why? Either we support ^^ or we don't. + % + % The other change necessary for this was to define \auxhat: + % \def\auxhat{\def^{'hat }}% extra space so ok if followed by letter + % and then to call \auxhat in \setq. + % + \catcode`\^=\other + % + % Special characters. Should be turned off anyway, but... + \catcode`\~=\other + \catcode`\[=\other + \catcode`\]=\other + \catcode`\"=\other + \catcode`\_=\other + \catcode`\|=\other + \catcode`\<=\other + \catcode`\>=\other + \catcode`\$=\other + \catcode`\#=\other + \catcode`\&=\other + \catcode`\%=\other + \catcode`+=\other % avoid \+ for paranoia even though we've turned it off + % + % This is to support \ in node names and titles, since the \ + % characters end up in a \csname. It's easier than + % leaving it active and making its active definition an actual \ + % character. What I don't understand is why it works in the *value* + % of the xrdef. Seems like it should be a catcode12 \, and that + % should not typeset properly. But it works, so I'm moving on for + % now. --karl, 15jan04. + \catcode`\\=\other + % + % Make the characters 128-255 be printing characters. + {% + \count1=128 + \def\loop{% + \catcode\count1=\other + \advance\count1 by 1 + \ifnum \count1<256 \loop \fi + }% + }% + % + % @ is our escape character in .aux files, and we need braces. + \catcode`\{=1 + \catcode`\}=2 + \catcode`\@=0 +} + +\def\readdatafile#1{% +\begingroup + \setupdatafile + \input\jobname.#1 +\endgroup} + + +\message{insertions,} +% including footnotes. + +\newcount \footnoteno + +% The trailing space in the following definition for supereject is +% vital for proper filling; pages come out unaligned when you do a +% pagealignmacro call if that space before the closing brace is +% removed. (Generally, numeric constants should always be followed by a +% space to prevent strange expansion errors.) +\def\supereject{\par\penalty -20000\footnoteno =0 } + +% @footnotestyle is meaningful for Info output only. +\let\footnotestyle=\comment + +{\catcode `\@=11 +% +% Auto-number footnotes. Otherwise like plain. +\gdef\footnote{% + \let\indent=\ptexindent + \let\noindent=\ptexnoindent + \global\advance\footnoteno by \@ne + \edef\thisfootno{$^{\the\footnoteno}$}% + % + % In case the footnote comes at the end of a sentence, preserve the + % extra spacing after we do the footnote number. + \let\@sf\empty + \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\ptexslash\fi + % + % Remove inadvertent blank space before typesetting the footnote number. + \unskip + \thisfootno\@sf + \dofootnote +}% + +% Don't bother with the trickery in plain.tex to not require the +% footnote text as a parameter. Our footnotes don't need to be so general. +% +% Oh yes, they do; otherwise, @ifset (and anything else that uses +% \parseargline) fails inside footnotes because the tokens are fixed when +% the footnote is read. --karl, 16nov96. +% +\gdef\dofootnote{% + \insert\footins\bgroup + % We want to typeset this text as a normal paragraph, even if the + % footnote reference occurs in (for example) a display environment. + % So reset some parameters. + \hsize=\pagewidth + \interlinepenalty\interfootnotelinepenalty + \splittopskip\ht\strutbox % top baseline for broken footnotes + \splitmaxdepth\dp\strutbox + \floatingpenalty\@MM + \leftskip\z@skip + \rightskip\z@skip + \spaceskip\z@skip + \xspaceskip\z@skip + \parindent\defaultparindent + % + \smallfonts \rm + % + % Because we use hanging indentation in footnotes, a @noindent appears + % to exdent this text, so make it be a no-op. makeinfo does not use + % hanging indentation so @noindent can still be needed within footnote + % text after an @example or the like (not that this is good style). + \let\noindent = \relax + % + % Hang the footnote text off the number. Use \everypar in case the + % footnote extends for more than one paragraph. + \everypar = {\hang}% + \textindent{\thisfootno}% + % + % Don't crash into the line above the footnote text. Since this + % expands into a box, it must come within the paragraph, lest it + % provide a place where TeX can split the footnote. + \footstrut + % + % Invoke rest of plain TeX footnote routine. + \futurelet\next\fo@t +} +}%end \catcode `\@=11 + +% In case a @footnote appears in a vbox, save the footnote text and create +% the real \insert just after the vbox finished. Otherwise, the insertion +% would be lost. +% Similarly, if a @footnote appears inside an alignment, save the footnote +% text to a box and make the \insert when a row of the table is finished. +% And the same can be done for other insert classes. --kasal, 16nov03. + +% Replace the \insert primitive by a cheating macro. +% Deeper inside, just make sure that the saved insertions are not spilled +% out prematurely. +% +\def\startsavinginserts{% + \ifx \insert\ptexinsert + \let\insert\saveinsert + \else + \let\checkinserts\relax + \fi +} + +% This \insert replacement works for both \insert\footins{foo} and +% \insert\footins\bgroup foo\egroup, but it doesn't work for \insert27{foo}. +% +\def\saveinsert#1{% + \edef\next{\noexpand\savetobox \makeSAVEname#1}% + \afterassignment\next + % swallow the left brace + \let\temp = +} +\def\makeSAVEname#1{\makecsname{SAVE\expandafter\gobble\string#1}} +\def\savetobox#1{\global\setbox#1 = \vbox\bgroup \unvbox#1} + +\def\checksaveins#1{\ifvoid#1\else \placesaveins#1\fi} + +\def\placesaveins#1{% + \ptexinsert \csname\expandafter\gobblesave\string#1\endcsname + {\box#1}% +} + +% eat @SAVE -- beware, all of them have catcode \other: +{ + \def\dospecials{\do S\do A\do V\do E} \uncatcodespecials % ;-) + \gdef\gobblesave @SAVE{} +} + +% initialization: +\def\newsaveins #1{% + \edef\next{\noexpand\newsaveinsX \makeSAVEname#1}% + \next +} +\def\newsaveinsX #1{% + \csname newbox\endcsname #1% + \expandafter\def\expandafter\checkinserts\expandafter{\checkinserts + \checksaveins #1}% +} + +% initialize: +\let\checkinserts\empty +\newsaveins\footins +\newsaveins\margin + + +% @image. We use the macros from epsf.tex to support this. +% If epsf.tex is not installed and @image is used, we complain. +% +% Check for and read epsf.tex up front. If we read it only at @image +% time, we might be inside a group, and then its definitions would get +% undone and the next image would fail. +\openin 1 = epsf.tex +\ifeof 1 \else + % Do not bother showing banner with epsf.tex v2.7k (available in + % doc/epsf.tex and on ctan). + \def\epsfannounce{\toks0 = }% + \input epsf.tex +\fi +\closein 1 +% +% We will only complain once about lack of epsf.tex. +\newif\ifwarnednoepsf +\newhelp\noepsfhelp{epsf.tex must be installed for images to + work. It is also included in the Texinfo distribution, or you can get + it from ftp://tug.org/tex/epsf.tex.} +% +\def\image#1{% + \ifx\epsfbox\thisisundefined + \ifwarnednoepsf \else + \errhelp = \noepsfhelp + \errmessage{epsf.tex not found, images will be ignored}% + \global\warnednoepsftrue + \fi + \else + \imagexxx #1,,,,,\finish + \fi +} +% +% Arguments to @image: +% #1 is (mandatory) image filename; we tack on .eps extension. +% #2 is (optional) width, #3 is (optional) height. +% #4 is (ignored optional) html alt text. +% #5 is (ignored optional) extension. +% #6 is just the usual extra ignored arg for parsing stuff. +\newif\ifimagevmode +\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup + \catcode`\^^M = 5 % in case we're inside an example + \normalturnoffactive % allow _ et al. in names + % If the image is by itself, center it. + \ifvmode + \imagevmodetrue + \else \ifx\centersub\centerV + % for @center @image, we need a vbox so we can have our vertical space + \imagevmodetrue + \vbox\bgroup % vbox has better behavior than vtop herev + \fi\fi + % + \ifimagevmode + \nobreak\medskip + % Usually we'll have text after the image which will insert + % \parskip glue, so insert it here too to equalize the space + % above and below. + \nobreak\vskip\parskip + \nobreak + \fi + % + % Leave vertical mode so that indentation from an enclosing + % environment such as @quotation is respected. + % However, if we're at the top level, we don't want the + % normal paragraph indentation. + % On the other hand, if we are in the case of @center @image, we don't + % want to start a paragraph, which will create a hsize-width box and + % eradicate the centering. + \ifx\centersub\centerV\else \noindent \fi + % + % Output the image. + \ifpdf + \dopdfimage{#1}{#2}{#3}% + \else + % \epsfbox itself resets \epsf?size at each figure. + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \epsfxsize=#2\relax \fi + \setbox0 = \hbox{\ignorespaces #3}\ifdim\wd0 > 0pt \epsfysize=#3\relax \fi + \epsfbox{#1.eps}% + \fi + % + \ifimagevmode + \medskip % space after a standalone image + \fi + \ifx\centersub\centerV \egroup \fi +\endgroup} + + +% @float FLOATTYPE,LABEL,LOC ... @end float for displayed figures, tables, +% etc. We don't actually implement floating yet, we always include the +% float "here". But it seemed the best name for the future. +% +\envparseargdef\float{\eatcommaspace\eatcommaspace\dofloat#1, , ,\finish} + +% There may be a space before second and/or third parameter; delete it. +\def\eatcommaspace#1, {#1,} + +% #1 is the optional FLOATTYPE, the text label for this float, typically +% "Figure", "Table", "Example", etc. Can't contain commas. If omitted, +% this float will not be numbered and cannot be referred to. +% +% #2 is the optional xref label. Also must be present for the float to +% be referable. +% +% #3 is the optional positioning argument; for now, it is ignored. It +% will somehow specify the positions allowed to float to (here, top, bottom). +% +% We keep a separate counter for each FLOATTYPE, which we reset at each +% chapter-level command. +\let\resetallfloatnos=\empty +% +\def\dofloat#1,#2,#3,#4\finish{% + \let\thiscaption=\empty + \let\thisshortcaption=\empty + % + % don't lose footnotes inside @float. + % + % BEWARE: when the floats start float, we have to issue warning whenever an + % insert appears inside a float which could possibly float. --kasal, 26may04 + % + \startsavinginserts + % + % We can't be used inside a paragraph. + \par + % + \vtop\bgroup + \def\floattype{#1}% + \def\floatlabel{#2}% + \def\floatloc{#3}% we do nothing with this yet. + % + \ifx\floattype\empty + \let\safefloattype=\empty + \else + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + \fi + % + % If label is given but no type, we handle that as the empty type. + \ifx\floatlabel\empty \else + % We want each FLOATTYPE to be numbered separately (Figure 1, + % Table 1, Figure 2, ...). (And if no label, no number.) + % + \expandafter\getfloatno\csname\safefloattype floatno\endcsname + \global\advance\floatno by 1 + % + {% + % This magic value for \lastsection is output by \setref as the + % XREFLABEL-title value. \xrefX uses it to distinguish float + % labels (which have a completely different output format) from + % node and anchor labels. And \xrdef uses it to construct the + % lists of floats. + % + \edef\lastsection{\floatmagic=\safefloattype}% + \setref{\floatlabel}{Yfloat}% + }% + \fi + % + % start with \parskip glue, I guess. + \vskip\parskip + % + % Don't suppress indentation if a float happens to start a section. + \restorefirstparagraphindent +} + +% we have these possibilities: +% @float Foo,lbl & @caption{Cap}: Foo 1.1: Cap +% @float Foo,lbl & no caption: Foo 1.1 +% @float Foo & @caption{Cap}: Foo: Cap +% @float Foo & no caption: Foo +% @float ,lbl & Caption{Cap}: 1.1: Cap +% @float ,lbl & no caption: 1.1 +% @float & @caption{Cap}: Cap +% @float & no caption: +% +\def\Efloat{% + \let\floatident = \empty + % + % In all cases, if we have a float type, it comes first. + \ifx\floattype\empty \else \def\floatident{\floattype}\fi + % + % If we have an xref label, the number comes next. + \ifx\floatlabel\empty \else + \ifx\floattype\empty \else % if also had float type, need tie first. + \appendtomacro\floatident{\tie}% + \fi + % the number. + \appendtomacro\floatident{\chaplevelprefix\the\floatno}% + \fi + % + % Start the printed caption with what we've constructed in + % \floatident, but keep it separate; we need \floatident again. + \let\captionline = \floatident + % + \ifx\thiscaption\empty \else + \ifx\floatident\empty \else + \appendtomacro\captionline{: }% had ident, so need a colon between + \fi + % + % caption text. + \appendtomacro\captionline{\scanexp\thiscaption}% + \fi + % + % If we have anything to print, print it, with space before. + % Eventually this needs to become an \insert. + \ifx\captionline\empty \else + \vskip.5\parskip + \captionline + % + % Space below caption. + \vskip\parskip + \fi + % + % If have an xref label, write the list of floats info. Do this + % after the caption, to avoid chance of it being a breakpoint. + \ifx\floatlabel\empty \else + % Write the text that goes in the lof to the aux file as + % \floatlabel-lof. Besides \floatident, we include the short + % caption if specified, else the full caption if specified, else nothing. + {% + \atdummies + % + % since we read the caption text in the macro world, where ^^M + % is turned into a normal character, we have to scan it back, so + % we don't write the literal three characters "^^M" into the aux file. + \scanexp{% + \xdef\noexpand\gtemp{% + \ifx\thisshortcaption\empty + \thiscaption + \else + \thisshortcaption + \fi + }% + }% + \immediate\write\auxfile{@xrdef{\floatlabel-lof}{\floatident + \ifx\gtemp\empty \else : \gtemp \fi}}% + }% + \fi + \egroup % end of \vtop + % + % place the captured inserts + % + % BEWARE: when the floats start floating, we have to issue warning + % whenever an insert appears inside a float which could possibly + % float. --kasal, 26may04 + % + \checkinserts +} + +% Append the tokens #2 to the definition of macro #1, not expanding either. +% +\def\appendtomacro#1#2{% + \expandafter\def\expandafter#1\expandafter{#1#2}% +} + +% @caption, @shortcaption +% +\def\caption{\docaption\thiscaption} +\def\shortcaption{\docaption\thisshortcaption} +\def\docaption{\checkenv\float \bgroup\scanargctxt\defcaption} +\def\defcaption#1#2{\egroup \def#1{#2}} + +% The parameter is the control sequence identifying the counter we are +% going to use. Create it if it doesn't exist and assign it to \floatno. +\def\getfloatno#1{% + \ifx#1\relax + % Haven't seen this figure type before. + \csname newcount\endcsname #1% + % + % Remember to reset this floatno at the next chap. + \expandafter\gdef\expandafter\resetallfloatnos + \expandafter{\resetallfloatnos #1=0 }% + \fi + \let\floatno#1% +} + +% \setref calls this to get the XREFLABEL-snt value. We want an @xref +% to the FLOATLABEL to expand to "Figure 3.1". We call \setref when we +% first read the @float command. +% +\def\Yfloat{\floattype@tie \chaplevelprefix\the\floatno}% + +% Magic string used for the XREFLABEL-title value, so \xrefX can +% distinguish floats from other xref types. +\def\floatmagic{!!float!!} + +% #1 is the control sequence we are passed; we expand into a conditional +% which is true if #1 represents a float ref. That is, the magic +% \lastsection value which we \setref above. +% +\def\iffloat#1{\expandafter\doiffloat#1==\finish} +% +% #1 is (maybe) the \floatmagic string. If so, #2 will be the +% (safe) float type for this float. We set \iffloattype to #2. +% +\def\doiffloat#1=#2=#3\finish{% + \def\temp{#1}% + \def\iffloattype{#2}% + \ifx\temp\floatmagic +} + +% @listoffloats FLOATTYPE - print a list of floats like a table of contents. +% +\parseargdef\listoffloats{% + \def\floattype{#1}% floattype + {% + % the floattype might have accents or other special characters, + % but we need to use it in a control sequence name. + \indexnofonts + \turnoffactive + \xdef\safefloattype{\floattype}% + }% + % + % \xrdef saves the floats as a \do-list in \floatlistSAFEFLOATTYPE. + \expandafter\ifx\csname floatlist\safefloattype\endcsname \relax + \ifhavexrefs + % if the user said @listoffloats foo but never @float foo. + \message{\linenumber No `\safefloattype' floats to list.}% + \fi + \else + \begingroup + \leftskip=\tocindent % indent these entries like a toc + \let\do=\listoffloatsdo + \csname floatlist\safefloattype\endcsname + \endgroup + \fi +} + +% This is called on each entry in a list of floats. We're passed the +% xref label, in the form LABEL-title, which is how we save it in the +% aux file. We strip off the -title and look up \XRLABEL-lof, which +% has the text we're supposed to typeset here. +% +% Figures without xref labels will not be included in the list (since +% they won't appear in the aux file). +% +\def\listoffloatsdo#1{\listoffloatsdoentry#1\finish} +\def\listoffloatsdoentry#1-title\finish{{% + % Can't fully expand XR#1-lof because it can contain anything. Just + % pass the control sequence. On the other hand, XR#1-pg is just the + % page number, and we want to fully expand that so we can get a link + % in pdf output. + \toksA = \expandafter{\csname XR#1-lof\endcsname}% + % + % use the same \entry macro we use to generate the TOC and index. + \edef\writeentry{\noexpand\entry{\the\toksA}{\csname XR#1-pg\endcsname}}% + \writeentry +}} + + +\message{localization,} + +% For single-language documents, @documentlanguage is usually given very +% early, just after @documentencoding. Single argument is the language +% (de) or locale (de_DE) abbreviation. +% +{ + \catcode`\_ = \active + \globaldefs=1 +\parseargdef\documentlanguage{\begingroup + \let_=\normalunderscore % normal _ character for filenames + \tex % read txi-??.tex file in plain TeX. + % Read the file by the name they passed if it exists. + \openin 1 txi-#1.tex + \ifeof 1 + \documentlanguagetrywithoutunderscore{#1_\finish}% + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 + \endgroup % end raw TeX +\endgroup} +% +% If they passed de_DE, and txi-de_DE.tex doesn't exist, +% try txi-de.tex. +% +\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{% + \openin 1 txi-#1.tex + \ifeof 1 + \errhelp = \nolanghelp + \errmessage{Cannot read language file txi-#1.tex}% + \else + \globaldefs = 1 % everything in the txi-LL files needs to persist + \input txi-#1.tex + \fi + \closein 1 +} +}% end of special _ catcode +% +\newhelp\nolanghelp{The given language definition file cannot be found or +is empty. Maybe you need to install it? Putting it in the current +directory should work if nowhere else does.} + +% This macro is called from txi-??.tex files; the first argument is the +% \language name to set (without the "\lang@" prefix), the second and +% third args are \{left,right}hyphenmin. +% +% The language names to pass are determined when the format is built. +% See the etex.log file created at that time, e.g., +% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log. +% +% With TeX Live 2008, etex now includes hyphenation patterns for all +% available languages. This means we can support hyphenation in +% Texinfo, at least to some extent. (This still doesn't solve the +% accented characters problem.) +% +\catcode`@=11 +\def\txisetlanguage#1#2#3{% + % do not set the language if the name is undefined in the current TeX. + \expandafter\ifx\csname lang@#1\endcsname \relax + \message{no patterns for #1}% + \else + \global\language = \csname lang@#1\endcsname + \fi + % but there is no harm in adjusting the hyphenmin values regardless. + \global\lefthyphenmin = #2\relax + \global\righthyphenmin = #3\relax +} + +% Helpers for encodings. +% Set the catcode of characters 128 through 255 to the specified number. +% +\def\setnonasciicharscatcode#1{% + \count255=128 + \loop\ifnum\count255<256 + \global\catcode\count255=#1\relax + \advance\count255 by 1 + \repeat +} + +\def\setnonasciicharscatcodenonglobal#1{% + \count255=128 + \loop\ifnum\count255<256 + \catcode\count255=#1\relax + \advance\count255 by 1 + \repeat +} + +% @documentencoding sets the definition of non-ASCII characters +% according to the specified encoding. +% +\parseargdef\documentencoding{% + % Encoding being declared for the document. + \def\declaredencoding{\csname #1.enc\endcsname}% + % + % Supported encodings: names converted to tokens in order to be able + % to compare them with \ifx. + \def\ascii{\csname US-ASCII.enc\endcsname}% + \def\latnine{\csname ISO-8859-15.enc\endcsname}% + \def\latone{\csname ISO-8859-1.enc\endcsname}% + \def\lattwo{\csname ISO-8859-2.enc\endcsname}% + \def\utfeight{\csname UTF-8.enc\endcsname}% + % + \ifx \declaredencoding \ascii + \asciichardefs + % + \else \ifx \declaredencoding \lattwo + \setnonasciicharscatcode\active + \lattwochardefs + % + \else \ifx \declaredencoding \latone + \setnonasciicharscatcode\active + \latonechardefs + % + \else \ifx \declaredencoding \latnine + \setnonasciicharscatcode\active + \latninechardefs + % + \else \ifx \declaredencoding \utfeight + \setnonasciicharscatcode\active + \utfeightchardefs + % + \else + \message{Unknown document encoding #1, ignoring.}% + % + \fi % utfeight + \fi % latnine + \fi % latone + \fi % lattwo + \fi % ascii +} + +% A message to be logged when using a character that isn't available +% the default font encoding (OT1). +% +\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}} + +% Take account of \c (plain) vs. \, (Texinfo) difference. +\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi} + +% First, make active non-ASCII characters in order for them to be +% correctly categorized when TeX reads the replacement text of +% macros containing the character definitions. +\setnonasciicharscatcode\active +% +% Latin1 (ISO-8859-1) character definitions. +\def\latonechardefs{% + \gdef^^a0{\tie} + \gdef^^a1{\exclamdown} + \gdef^^a2{\missingcharmsg{CENT SIGN}} + \gdef^^a3{{\pounds}} + \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} + \gdef^^a5{\missingcharmsg{YEN SIGN}} + \gdef^^a6{\missingcharmsg{BROKEN BAR}} + \gdef^^a7{\S} + \gdef^^a8{\"{}} + \gdef^^a9{\copyright} + \gdef^^aa{\ordf} + \gdef^^ab{\guillemetleft} + \gdef^^ac{$\lnot$} + \gdef^^ad{\-} + \gdef^^ae{\registeredsymbol} + \gdef^^af{\={}} + % + \gdef^^b0{\textdegree} + \gdef^^b1{$\pm$} + \gdef^^b2{$^2$} + \gdef^^b3{$^3$} + \gdef^^b4{\'{}} + \gdef^^b5{$\mu$} + \gdef^^b6{\P} + % + \gdef^^b7{$^.$} + \gdef^^b8{\cedilla\ } + \gdef^^b9{$^1$} + \gdef^^ba{\ordm} + % + \gdef^^bb{\guillemetright} + \gdef^^bc{$1\over4$} + \gdef^^bd{$1\over2$} + \gdef^^be{$3\over4$} + \gdef^^bf{\questiondown} + % + \gdef^^c0{\`A} + \gdef^^c1{\'A} + \gdef^^c2{\^A} + \gdef^^c3{\~A} + \gdef^^c4{\"A} + \gdef^^c5{\ringaccent A} + \gdef^^c6{\AE} + \gdef^^c7{\cedilla C} + \gdef^^c8{\`E} + \gdef^^c9{\'E} + \gdef^^ca{\^E} + \gdef^^cb{\"E} + \gdef^^cc{\`I} + \gdef^^cd{\'I} + \gdef^^ce{\^I} + \gdef^^cf{\"I} + % + \gdef^^d0{\DH} + \gdef^^d1{\~N} + \gdef^^d2{\`O} + \gdef^^d3{\'O} + \gdef^^d4{\^O} + \gdef^^d5{\~O} + \gdef^^d6{\"O} + \gdef^^d7{$\times$} + \gdef^^d8{\O} + \gdef^^d9{\`U} + \gdef^^da{\'U} + \gdef^^db{\^U} + \gdef^^dc{\"U} + \gdef^^dd{\'Y} + \gdef^^de{\TH} + \gdef^^df{\ss} + % + \gdef^^e0{\`a} + \gdef^^e1{\'a} + \gdef^^e2{\^a} + \gdef^^e3{\~a} + \gdef^^e4{\"a} + \gdef^^e5{\ringaccent a} + \gdef^^e6{\ae} + \gdef^^e7{\cedilla c} + \gdef^^e8{\`e} + \gdef^^e9{\'e} + \gdef^^ea{\^e} + \gdef^^eb{\"e} + \gdef^^ec{\`{\dotless i}} + \gdef^^ed{\'{\dotless i}} + \gdef^^ee{\^{\dotless i}} + \gdef^^ef{\"{\dotless i}} + % + \gdef^^f0{\dh} + \gdef^^f1{\~n} + \gdef^^f2{\`o} + \gdef^^f3{\'o} + \gdef^^f4{\^o} + \gdef^^f5{\~o} + \gdef^^f6{\"o} + \gdef^^f7{$\div$} + \gdef^^f8{\o} + \gdef^^f9{\`u} + \gdef^^fa{\'u} + \gdef^^fb{\^u} + \gdef^^fc{\"u} + \gdef^^fd{\'y} + \gdef^^fe{\th} + \gdef^^ff{\"y} +} + +% Latin9 (ISO-8859-15) encoding character definitions. +\def\latninechardefs{% + % Encoding is almost identical to Latin1. + \latonechardefs + % + \gdef^^a4{\euro} + \gdef^^a6{\v S} + \gdef^^a8{\v s} + \gdef^^b4{\v Z} + \gdef^^b8{\v z} + \gdef^^bc{\OE} + \gdef^^bd{\oe} + \gdef^^be{\"Y} +} + +% Latin2 (ISO-8859-2) character definitions. +\def\lattwochardefs{% + \gdef^^a0{\tie} + \gdef^^a1{\ogonek{A}} + \gdef^^a2{\u{}} + \gdef^^a3{\L} + \gdef^^a4{\missingcharmsg{CURRENCY SIGN}} + \gdef^^a5{\v L} + \gdef^^a6{\'S} + \gdef^^a7{\S} + \gdef^^a8{\"{}} + \gdef^^a9{\v S} + \gdef^^aa{\cedilla S} + \gdef^^ab{\v T} + \gdef^^ac{\'Z} + \gdef^^ad{\-} + \gdef^^ae{\v Z} + \gdef^^af{\dotaccent Z} + % + \gdef^^b0{\textdegree} + \gdef^^b1{\ogonek{a}} + \gdef^^b2{\ogonek{ }} + \gdef^^b3{\l} + \gdef^^b4{\'{}} + \gdef^^b5{\v l} + \gdef^^b6{\'s} + \gdef^^b7{\v{}} + \gdef^^b8{\cedilla\ } + \gdef^^b9{\v s} + \gdef^^ba{\cedilla s} + \gdef^^bb{\v t} + \gdef^^bc{\'z} + \gdef^^bd{\H{}} + \gdef^^be{\v z} + \gdef^^bf{\dotaccent z} + % + \gdef^^c0{\'R} + \gdef^^c1{\'A} + \gdef^^c2{\^A} + \gdef^^c3{\u A} + \gdef^^c4{\"A} + \gdef^^c5{\'L} + \gdef^^c6{\'C} + \gdef^^c7{\cedilla C} + \gdef^^c8{\v C} + \gdef^^c9{\'E} + \gdef^^ca{\ogonek{E}} + \gdef^^cb{\"E} + \gdef^^cc{\v E} + \gdef^^cd{\'I} + \gdef^^ce{\^I} + \gdef^^cf{\v D} + % + \gdef^^d0{\DH} + \gdef^^d1{\'N} + \gdef^^d2{\v N} + \gdef^^d3{\'O} + \gdef^^d4{\^O} + \gdef^^d5{\H O} + \gdef^^d6{\"O} + \gdef^^d7{$\times$} + \gdef^^d8{\v R} + \gdef^^d9{\ringaccent U} + \gdef^^da{\'U} + \gdef^^db{\H U} + \gdef^^dc{\"U} + \gdef^^dd{\'Y} + \gdef^^de{\cedilla T} + \gdef^^df{\ss} + % + \gdef^^e0{\'r} + \gdef^^e1{\'a} + \gdef^^e2{\^a} + \gdef^^e3{\u a} + \gdef^^e4{\"a} + \gdef^^e5{\'l} + \gdef^^e6{\'c} + \gdef^^e7{\cedilla c} + \gdef^^e8{\v c} + \gdef^^e9{\'e} + \gdef^^ea{\ogonek{e}} + \gdef^^eb{\"e} + \gdef^^ec{\v e} + \gdef^^ed{\'{\dotless{i}}} + \gdef^^ee{\^{\dotless{i}}} + \gdef^^ef{\v d} + % + \gdef^^f0{\dh} + \gdef^^f1{\'n} + \gdef^^f2{\v n} + \gdef^^f3{\'o} + \gdef^^f4{\^o} + \gdef^^f5{\H o} + \gdef^^f6{\"o} + \gdef^^f7{$\div$} + \gdef^^f8{\v r} + \gdef^^f9{\ringaccent u} + \gdef^^fa{\'u} + \gdef^^fb{\H u} + \gdef^^fc{\"u} + \gdef^^fd{\'y} + \gdef^^fe{\cedilla t} + \gdef^^ff{\dotaccent{}} +} + +% UTF-8 character definitions. +% +% This code to support UTF-8 is based on LaTeX's utf8.def, with some +% changes for Texinfo conventions. It is included here under the GPL by +% permission from Frank Mittelbach and the LaTeX team. +% +\newcount\countUTFx +\newcount\countUTFy +\newcount\countUTFz + +\gdef\UTFviiiTwoOctets#1#2{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\endcsname} +% +\gdef\UTFviiiThreeOctets#1#2#3{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname} +% +\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter + \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname} + +\gdef\UTFviiiDefined#1{% + \ifx #1\relax + \message{\linenumber Unicode char \string #1 not defined for Texinfo}% + \else + \expandafter #1% + \fi +} + +\begingroup + \catcode`\~13 + \catcode`\"12 + + \def\UTFviiiLoop{% + \global\catcode\countUTFx\active + \uccode`\~\countUTFx + \uppercase\expandafter{\UTFviiiTmp}% + \advance\countUTFx by 1 + \ifnum\countUTFx < \countUTFy + \expandafter\UTFviiiLoop + \fi} + + \countUTFx = "C2 + \countUTFy = "E0 + \def\UTFviiiTmp{% + \xdef~{\noexpand\UTFviiiTwoOctets\string~}} + \UTFviiiLoop + + \countUTFx = "E0 + \countUTFy = "F0 + \def\UTFviiiTmp{% + \xdef~{\noexpand\UTFviiiThreeOctets\string~}} + \UTFviiiLoop + + \countUTFx = "F0 + \countUTFy = "F4 + \def\UTFviiiTmp{% + \xdef~{\noexpand\UTFviiiFourOctets\string~}} + \UTFviiiLoop +\endgroup + +\begingroup + \catcode`\"=12 + \catcode`\<=12 + \catcode`\.=12 + \catcode`\,=12 + \catcode`\;=12 + \catcode`\!=12 + \catcode`\~=13 + + \gdef\DeclareUnicodeCharacter#1#2{% + \countUTFz = "#1\relax + %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}% + \begingroup + \parseXMLCharref + \def\UTFviiiTwoOctets##1##2{% + \csname u8:##1\string ##2\endcsname}% + \def\UTFviiiThreeOctets##1##2##3{% + \csname u8:##1\string ##2\string ##3\endcsname}% + \def\UTFviiiFourOctets##1##2##3##4{% + \csname u8:##1\string ##2\string ##3\string ##4\endcsname}% + \expandafter\expandafter\expandafter\expandafter + \expandafter\expandafter\expandafter + \gdef\UTFviiiTmp{#2}% + \endgroup} + + \gdef\parseXMLCharref{% + \ifnum\countUTFz < "A0\relax + \errhelp = \EMsimple + \errmessage{Cannot define Unicode char value < 00A0}% + \else\ifnum\countUTFz < "800\relax + \parseUTFviiiA,% + \parseUTFviiiB C\UTFviiiTwoOctets.,% + \else\ifnum\countUTFz < "10000\relax + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiB E\UTFviiiThreeOctets.{,;}% + \else + \parseUTFviiiA;% + \parseUTFviiiA,% + \parseUTFviiiA!% + \parseUTFviiiB F\UTFviiiFourOctets.{!,;}% + \fi\fi\fi + } + + \gdef\parseUTFviiiA#1{% + \countUTFx = \countUTFz + \divide\countUTFz by 64 + \countUTFy = \countUTFz + \multiply\countUTFz by 64 + \advance\countUTFx by -\countUTFz + \advance\countUTFx by 128 + \uccode `#1\countUTFx + \countUTFz = \countUTFy} + + \gdef\parseUTFviiiB#1#2#3#4{% + \advance\countUTFz by "#10\relax + \uccode `#3\countUTFz + \uppercase{\gdef\UTFviiiTmp{#2#3#4}}} +\endgroup + +\def\utfeightchardefs{% + \DeclareUnicodeCharacter{00A0}{\tie} + \DeclareUnicodeCharacter{00A1}{\exclamdown} + \DeclareUnicodeCharacter{00A3}{\pounds} + \DeclareUnicodeCharacter{00A8}{\"{ }} + \DeclareUnicodeCharacter{00A9}{\copyright} + \DeclareUnicodeCharacter{00AA}{\ordf} + \DeclareUnicodeCharacter{00AB}{\guillemetleft} + \DeclareUnicodeCharacter{00AD}{\-} + \DeclareUnicodeCharacter{00AE}{\registeredsymbol} + \DeclareUnicodeCharacter{00AF}{\={ }} + + \DeclareUnicodeCharacter{00B0}{\ringaccent{ }} + \DeclareUnicodeCharacter{00B4}{\'{ }} + \DeclareUnicodeCharacter{00B8}{\cedilla{ }} + \DeclareUnicodeCharacter{00BA}{\ordm} + \DeclareUnicodeCharacter{00BB}{\guillemetright} + \DeclareUnicodeCharacter{00BF}{\questiondown} + + \DeclareUnicodeCharacter{00C0}{\`A} + \DeclareUnicodeCharacter{00C1}{\'A} + \DeclareUnicodeCharacter{00C2}{\^A} + \DeclareUnicodeCharacter{00C3}{\~A} + \DeclareUnicodeCharacter{00C4}{\"A} + \DeclareUnicodeCharacter{00C5}{\AA} + \DeclareUnicodeCharacter{00C6}{\AE} + \DeclareUnicodeCharacter{00C7}{\cedilla{C}} + \DeclareUnicodeCharacter{00C8}{\`E} + \DeclareUnicodeCharacter{00C9}{\'E} + \DeclareUnicodeCharacter{00CA}{\^E} + \DeclareUnicodeCharacter{00CB}{\"E} + \DeclareUnicodeCharacter{00CC}{\`I} + \DeclareUnicodeCharacter{00CD}{\'I} + \DeclareUnicodeCharacter{00CE}{\^I} + \DeclareUnicodeCharacter{00CF}{\"I} + + \DeclareUnicodeCharacter{00D0}{\DH} + \DeclareUnicodeCharacter{00D1}{\~N} + \DeclareUnicodeCharacter{00D2}{\`O} + \DeclareUnicodeCharacter{00D3}{\'O} + \DeclareUnicodeCharacter{00D4}{\^O} + \DeclareUnicodeCharacter{00D5}{\~O} + \DeclareUnicodeCharacter{00D6}{\"O} + \DeclareUnicodeCharacter{00D8}{\O} + \DeclareUnicodeCharacter{00D9}{\`U} + \DeclareUnicodeCharacter{00DA}{\'U} + \DeclareUnicodeCharacter{00DB}{\^U} + \DeclareUnicodeCharacter{00DC}{\"U} + \DeclareUnicodeCharacter{00DD}{\'Y} + \DeclareUnicodeCharacter{00DE}{\TH} + \DeclareUnicodeCharacter{00DF}{\ss} + + \DeclareUnicodeCharacter{00E0}{\`a} + \DeclareUnicodeCharacter{00E1}{\'a} + \DeclareUnicodeCharacter{00E2}{\^a} + \DeclareUnicodeCharacter{00E3}{\~a} + \DeclareUnicodeCharacter{00E4}{\"a} + \DeclareUnicodeCharacter{00E5}{\aa} + \DeclareUnicodeCharacter{00E6}{\ae} + \DeclareUnicodeCharacter{00E7}{\cedilla{c}} + \DeclareUnicodeCharacter{00E8}{\`e} + \DeclareUnicodeCharacter{00E9}{\'e} + \DeclareUnicodeCharacter{00EA}{\^e} + \DeclareUnicodeCharacter{00EB}{\"e} + \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}} + \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}} + \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}} + \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}} + + \DeclareUnicodeCharacter{00F0}{\dh} + \DeclareUnicodeCharacter{00F1}{\~n} + \DeclareUnicodeCharacter{00F2}{\`o} + \DeclareUnicodeCharacter{00F3}{\'o} + \DeclareUnicodeCharacter{00F4}{\^o} + \DeclareUnicodeCharacter{00F5}{\~o} + \DeclareUnicodeCharacter{00F6}{\"o} + \DeclareUnicodeCharacter{00F8}{\o} + \DeclareUnicodeCharacter{00F9}{\`u} + \DeclareUnicodeCharacter{00FA}{\'u} + \DeclareUnicodeCharacter{00FB}{\^u} + \DeclareUnicodeCharacter{00FC}{\"u} + \DeclareUnicodeCharacter{00FD}{\'y} + \DeclareUnicodeCharacter{00FE}{\th} + \DeclareUnicodeCharacter{00FF}{\"y} + + \DeclareUnicodeCharacter{0100}{\=A} + \DeclareUnicodeCharacter{0101}{\=a} + \DeclareUnicodeCharacter{0102}{\u{A}} + \DeclareUnicodeCharacter{0103}{\u{a}} + \DeclareUnicodeCharacter{0104}{\ogonek{A}} + \DeclareUnicodeCharacter{0105}{\ogonek{a}} + \DeclareUnicodeCharacter{0106}{\'C} + \DeclareUnicodeCharacter{0107}{\'c} + \DeclareUnicodeCharacter{0108}{\^C} + \DeclareUnicodeCharacter{0109}{\^c} + \DeclareUnicodeCharacter{0118}{\ogonek{E}} + \DeclareUnicodeCharacter{0119}{\ogonek{e}} + \DeclareUnicodeCharacter{010A}{\dotaccent{C}} + \DeclareUnicodeCharacter{010B}{\dotaccent{c}} + \DeclareUnicodeCharacter{010C}{\v{C}} + \DeclareUnicodeCharacter{010D}{\v{c}} + \DeclareUnicodeCharacter{010E}{\v{D}} + + \DeclareUnicodeCharacter{0112}{\=E} + \DeclareUnicodeCharacter{0113}{\=e} + \DeclareUnicodeCharacter{0114}{\u{E}} + \DeclareUnicodeCharacter{0115}{\u{e}} + \DeclareUnicodeCharacter{0116}{\dotaccent{E}} + \DeclareUnicodeCharacter{0117}{\dotaccent{e}} + \DeclareUnicodeCharacter{011A}{\v{E}} + \DeclareUnicodeCharacter{011B}{\v{e}} + \DeclareUnicodeCharacter{011C}{\^G} + \DeclareUnicodeCharacter{011D}{\^g} + \DeclareUnicodeCharacter{011E}{\u{G}} + \DeclareUnicodeCharacter{011F}{\u{g}} + + \DeclareUnicodeCharacter{0120}{\dotaccent{G}} + \DeclareUnicodeCharacter{0121}{\dotaccent{g}} + \DeclareUnicodeCharacter{0124}{\^H} + \DeclareUnicodeCharacter{0125}{\^h} + \DeclareUnicodeCharacter{0128}{\~I} + \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}} + \DeclareUnicodeCharacter{012A}{\=I} + \DeclareUnicodeCharacter{012B}{\={\dotless{i}}} + \DeclareUnicodeCharacter{012C}{\u{I}} + \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}} + + \DeclareUnicodeCharacter{0130}{\dotaccent{I}} + \DeclareUnicodeCharacter{0131}{\dotless{i}} + \DeclareUnicodeCharacter{0132}{IJ} + \DeclareUnicodeCharacter{0133}{ij} + \DeclareUnicodeCharacter{0134}{\^J} + \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}} + \DeclareUnicodeCharacter{0139}{\'L} + \DeclareUnicodeCharacter{013A}{\'l} + + \DeclareUnicodeCharacter{0141}{\L} + \DeclareUnicodeCharacter{0142}{\l} + \DeclareUnicodeCharacter{0143}{\'N} + \DeclareUnicodeCharacter{0144}{\'n} + \DeclareUnicodeCharacter{0147}{\v{N}} + \DeclareUnicodeCharacter{0148}{\v{n}} + \DeclareUnicodeCharacter{014C}{\=O} + \DeclareUnicodeCharacter{014D}{\=o} + \DeclareUnicodeCharacter{014E}{\u{O}} + \DeclareUnicodeCharacter{014F}{\u{o}} + + \DeclareUnicodeCharacter{0150}{\H{O}} + \DeclareUnicodeCharacter{0151}{\H{o}} + \DeclareUnicodeCharacter{0152}{\OE} + \DeclareUnicodeCharacter{0153}{\oe} + \DeclareUnicodeCharacter{0154}{\'R} + \DeclareUnicodeCharacter{0155}{\'r} + \DeclareUnicodeCharacter{0158}{\v{R}} + \DeclareUnicodeCharacter{0159}{\v{r}} + \DeclareUnicodeCharacter{015A}{\'S} + \DeclareUnicodeCharacter{015B}{\'s} + \DeclareUnicodeCharacter{015C}{\^S} + \DeclareUnicodeCharacter{015D}{\^s} + \DeclareUnicodeCharacter{015E}{\cedilla{S}} + \DeclareUnicodeCharacter{015F}{\cedilla{s}} + + \DeclareUnicodeCharacter{0160}{\v{S}} + \DeclareUnicodeCharacter{0161}{\v{s}} + \DeclareUnicodeCharacter{0162}{\cedilla{t}} + \DeclareUnicodeCharacter{0163}{\cedilla{T}} + \DeclareUnicodeCharacter{0164}{\v{T}} + + \DeclareUnicodeCharacter{0168}{\~U} + \DeclareUnicodeCharacter{0169}{\~u} + \DeclareUnicodeCharacter{016A}{\=U} + \DeclareUnicodeCharacter{016B}{\=u} + \DeclareUnicodeCharacter{016C}{\u{U}} + \DeclareUnicodeCharacter{016D}{\u{u}} + \DeclareUnicodeCharacter{016E}{\ringaccent{U}} + \DeclareUnicodeCharacter{016F}{\ringaccent{u}} + + \DeclareUnicodeCharacter{0170}{\H{U}} + \DeclareUnicodeCharacter{0171}{\H{u}} + \DeclareUnicodeCharacter{0174}{\^W} + \DeclareUnicodeCharacter{0175}{\^w} + \DeclareUnicodeCharacter{0176}{\^Y} + \DeclareUnicodeCharacter{0177}{\^y} + \DeclareUnicodeCharacter{0178}{\"Y} + \DeclareUnicodeCharacter{0179}{\'Z} + \DeclareUnicodeCharacter{017A}{\'z} + \DeclareUnicodeCharacter{017B}{\dotaccent{Z}} + \DeclareUnicodeCharacter{017C}{\dotaccent{z}} + \DeclareUnicodeCharacter{017D}{\v{Z}} + \DeclareUnicodeCharacter{017E}{\v{z}} + + \DeclareUnicodeCharacter{01C4}{D\v{Z}} + \DeclareUnicodeCharacter{01C5}{D\v{z}} + \DeclareUnicodeCharacter{01C6}{d\v{z}} + \DeclareUnicodeCharacter{01C7}{LJ} + \DeclareUnicodeCharacter{01C8}{Lj} + \DeclareUnicodeCharacter{01C9}{lj} + \DeclareUnicodeCharacter{01CA}{NJ} + \DeclareUnicodeCharacter{01CB}{Nj} + \DeclareUnicodeCharacter{01CC}{nj} + \DeclareUnicodeCharacter{01CD}{\v{A}} + \DeclareUnicodeCharacter{01CE}{\v{a}} + \DeclareUnicodeCharacter{01CF}{\v{I}} + + \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}} + \DeclareUnicodeCharacter{01D1}{\v{O}} + \DeclareUnicodeCharacter{01D2}{\v{o}} + \DeclareUnicodeCharacter{01D3}{\v{U}} + \DeclareUnicodeCharacter{01D4}{\v{u}} + + \DeclareUnicodeCharacter{01E2}{\={\AE}} + \DeclareUnicodeCharacter{01E3}{\={\ae}} + \DeclareUnicodeCharacter{01E6}{\v{G}} + \DeclareUnicodeCharacter{01E7}{\v{g}} + \DeclareUnicodeCharacter{01E8}{\v{K}} + \DeclareUnicodeCharacter{01E9}{\v{k}} + + \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}} + \DeclareUnicodeCharacter{01F1}{DZ} + \DeclareUnicodeCharacter{01F2}{Dz} + \DeclareUnicodeCharacter{01F3}{dz} + \DeclareUnicodeCharacter{01F4}{\'G} + \DeclareUnicodeCharacter{01F5}{\'g} + \DeclareUnicodeCharacter{01F8}{\`N} + \DeclareUnicodeCharacter{01F9}{\`n} + \DeclareUnicodeCharacter{01FC}{\'{\AE}} + \DeclareUnicodeCharacter{01FD}{\'{\ae}} + \DeclareUnicodeCharacter{01FE}{\'{\O}} + \DeclareUnicodeCharacter{01FF}{\'{\o}} + + \DeclareUnicodeCharacter{021E}{\v{H}} + \DeclareUnicodeCharacter{021F}{\v{h}} + + \DeclareUnicodeCharacter{0226}{\dotaccent{A}} + \DeclareUnicodeCharacter{0227}{\dotaccent{a}} + \DeclareUnicodeCharacter{0228}{\cedilla{E}} + \DeclareUnicodeCharacter{0229}{\cedilla{e}} + \DeclareUnicodeCharacter{022E}{\dotaccent{O}} + \DeclareUnicodeCharacter{022F}{\dotaccent{o}} + + \DeclareUnicodeCharacter{0232}{\=Y} + \DeclareUnicodeCharacter{0233}{\=y} + \DeclareUnicodeCharacter{0237}{\dotless{j}} + + \DeclareUnicodeCharacter{02DB}{\ogonek{ }} + + \DeclareUnicodeCharacter{1E02}{\dotaccent{B}} + \DeclareUnicodeCharacter{1E03}{\dotaccent{b}} + \DeclareUnicodeCharacter{1E04}{\udotaccent{B}} + \DeclareUnicodeCharacter{1E05}{\udotaccent{b}} + \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}} + \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}} + \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}} + \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}} + \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}} + \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}} + \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}} + \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}} + + \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}} + \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}} + + \DeclareUnicodeCharacter{1E20}{\=G} + \DeclareUnicodeCharacter{1E21}{\=g} + \DeclareUnicodeCharacter{1E22}{\dotaccent{H}} + \DeclareUnicodeCharacter{1E23}{\dotaccent{h}} + \DeclareUnicodeCharacter{1E24}{\udotaccent{H}} + \DeclareUnicodeCharacter{1E25}{\udotaccent{h}} + \DeclareUnicodeCharacter{1E26}{\"H} + \DeclareUnicodeCharacter{1E27}{\"h} + + \DeclareUnicodeCharacter{1E30}{\'K} + \DeclareUnicodeCharacter{1E31}{\'k} + \DeclareUnicodeCharacter{1E32}{\udotaccent{K}} + \DeclareUnicodeCharacter{1E33}{\udotaccent{k}} + \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}} + \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}} + \DeclareUnicodeCharacter{1E36}{\udotaccent{L}} + \DeclareUnicodeCharacter{1E37}{\udotaccent{l}} + \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}} + \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}} + \DeclareUnicodeCharacter{1E3E}{\'M} + \DeclareUnicodeCharacter{1E3F}{\'m} + + \DeclareUnicodeCharacter{1E40}{\dotaccent{M}} + \DeclareUnicodeCharacter{1E41}{\dotaccent{m}} + \DeclareUnicodeCharacter{1E42}{\udotaccent{M}} + \DeclareUnicodeCharacter{1E43}{\udotaccent{m}} + \DeclareUnicodeCharacter{1E44}{\dotaccent{N}} + \DeclareUnicodeCharacter{1E45}{\dotaccent{n}} + \DeclareUnicodeCharacter{1E46}{\udotaccent{N}} + \DeclareUnicodeCharacter{1E47}{\udotaccent{n}} + \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}} + \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}} + + \DeclareUnicodeCharacter{1E54}{\'P} + \DeclareUnicodeCharacter{1E55}{\'p} + \DeclareUnicodeCharacter{1E56}{\dotaccent{P}} + \DeclareUnicodeCharacter{1E57}{\dotaccent{p}} + \DeclareUnicodeCharacter{1E58}{\dotaccent{R}} + \DeclareUnicodeCharacter{1E59}{\dotaccent{r}} + \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}} + \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}} + \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}} + \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}} + + \DeclareUnicodeCharacter{1E60}{\dotaccent{S}} + \DeclareUnicodeCharacter{1E61}{\dotaccent{s}} + \DeclareUnicodeCharacter{1E62}{\udotaccent{S}} + \DeclareUnicodeCharacter{1E63}{\udotaccent{s}} + \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}} + \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}} + \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}} + \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}} + \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}} + \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}} + + \DeclareUnicodeCharacter{1E7C}{\~V} + \DeclareUnicodeCharacter{1E7D}{\~v} + \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}} + \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}} + + \DeclareUnicodeCharacter{1E80}{\`W} + \DeclareUnicodeCharacter{1E81}{\`w} + \DeclareUnicodeCharacter{1E82}{\'W} + \DeclareUnicodeCharacter{1E83}{\'w} + \DeclareUnicodeCharacter{1E84}{\"W} + \DeclareUnicodeCharacter{1E85}{\"w} + \DeclareUnicodeCharacter{1E86}{\dotaccent{W}} + \DeclareUnicodeCharacter{1E87}{\dotaccent{w}} + \DeclareUnicodeCharacter{1E88}{\udotaccent{W}} + \DeclareUnicodeCharacter{1E89}{\udotaccent{w}} + \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}} + \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}} + \DeclareUnicodeCharacter{1E8C}{\"X} + \DeclareUnicodeCharacter{1E8D}{\"x} + \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}} + \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}} + + \DeclareUnicodeCharacter{1E90}{\^Z} + \DeclareUnicodeCharacter{1E91}{\^z} + \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}} + \DeclareUnicodeCharacter{1E93}{\udotaccent{z}} + \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}} + \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}} + \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}} + \DeclareUnicodeCharacter{1E97}{\"t} + \DeclareUnicodeCharacter{1E98}{\ringaccent{w}} + \DeclareUnicodeCharacter{1E99}{\ringaccent{y}} + + \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}} + \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}} + + \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}} + \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}} + \DeclareUnicodeCharacter{1EBC}{\~E} + \DeclareUnicodeCharacter{1EBD}{\~e} + + \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}} + \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}} + \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}} + \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}} + + \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}} + \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}} + + \DeclareUnicodeCharacter{1EF2}{\`Y} + \DeclareUnicodeCharacter{1EF3}{\`y} + \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}} + + \DeclareUnicodeCharacter{1EF8}{\~Y} + \DeclareUnicodeCharacter{1EF9}{\~y} + + \DeclareUnicodeCharacter{2013}{--} + \DeclareUnicodeCharacter{2014}{---} + \DeclareUnicodeCharacter{2018}{\quoteleft} + \DeclareUnicodeCharacter{2019}{\quoteright} + \DeclareUnicodeCharacter{201A}{\quotesinglbase} + \DeclareUnicodeCharacter{201C}{\quotedblleft} + \DeclareUnicodeCharacter{201D}{\quotedblright} + \DeclareUnicodeCharacter{201E}{\quotedblbase} + \DeclareUnicodeCharacter{2022}{\bullet} + \DeclareUnicodeCharacter{2026}{\dots} + \DeclareUnicodeCharacter{2039}{\guilsinglleft} + \DeclareUnicodeCharacter{203A}{\guilsinglright} + \DeclareUnicodeCharacter{20AC}{\euro} + + \DeclareUnicodeCharacter{2192}{\expansion} + \DeclareUnicodeCharacter{21D2}{\result} + + \DeclareUnicodeCharacter{2212}{\minus} + \DeclareUnicodeCharacter{2217}{\point} + \DeclareUnicodeCharacter{2261}{\equiv} +}% end of \utfeightchardefs + + +% US-ASCII character definitions. +\def\asciichardefs{% nothing need be done + \relax +} + +% Make non-ASCII characters printable again for compatibility with +% existing Texinfo documents that may use them, even without declaring a +% document encoding. +% +\setnonasciicharscatcode \other + + +\message{formatting,} + +\newdimen\defaultparindent \defaultparindent = 15pt + +\chapheadingskip = 15pt plus 4pt minus 2pt +\secheadingskip = 12pt plus 3pt minus 2pt +\subsecheadingskip = 9pt plus 2pt minus 2pt + +% Prevent underfull vbox error messages. +\vbadness = 10000 + +% Don't be very finicky about underfull hboxes, either. +\hbadness = 6666 + +% Following George Bush, get rid of widows and orphans. +\widowpenalty=10000 +\clubpenalty=10000 + +% Use TeX 3.0's \emergencystretch to help line breaking, but if we're +% using an old version of TeX, don't do anything. We want the amount of +% stretch added to depend on the line length, hence the dependence on +% \hsize. We call this whenever the paper size is set. +% +\def\setemergencystretch{% + \ifx\emergencystretch\thisisundefined + % Allow us to assign to \emergencystretch anyway. + \def\emergencystretch{\dimen0}% + \else + \emergencystretch = .15\hsize + \fi +} + +% Parameters in order: 1) textheight; 2) textwidth; +% 3) voffset; 4) hoffset; 5) binding offset; 6) topskip; +% 7) physical page height; 8) physical page width. +% +% We also call \setleading{\textleading}, so the caller should define +% \textleading. The caller should also set \parskip. +% +\def\internalpagesizes#1#2#3#4#5#6#7#8{% + \voffset = #3\relax + \topskip = #6\relax + \splittopskip = \topskip + % + \vsize = #1\relax + \advance\vsize by \topskip + \outervsize = \vsize + \advance\outervsize by 2\topandbottommargin + \pageheight = \vsize + % + \hsize = #2\relax + \outerhsize = \hsize + \advance\outerhsize by 0.5in + \pagewidth = \hsize + % + \normaloffset = #4\relax + \bindingoffset = #5\relax + % + \ifpdf + \pdfpageheight #7\relax + \pdfpagewidth #8\relax + % if we don't reset these, they will remain at "1 true in" of + % whatever layout pdftex was dumped with. + \pdfhorigin = 1 true in + \pdfvorigin = 1 true in + \fi + % + \setleading{\textleading} + % + \parindent = \defaultparindent + \setemergencystretch +} + +% @letterpaper (the default). +\def\letterpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % If page is nothing but text, make it come out even. + \internalpagesizes{607.2pt}{6in}% that's 46 lines + {\voffset}{.25in}% + {\bindingoffset}{36pt}% + {11in}{8.5in}% +}} + +% Use @smallbook to reset parameters for 7x9.25 trim size. +\def\smallbook{{\globaldefs = 1 + \parskip = 2pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.5in}{5in}% + {-.2in}{0in}% + {\bindingoffset}{16pt}% + {9.25in}{7in}% + % + \lispnarrowing = 0.3in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = .5cm +}} + +% Use @smallerbook to reset parameters for 6x9 trim size. +% (Just testing, parameters still in flux.) +\def\smallerbook{{\globaldefs = 1 + \parskip = 1.5pt plus 1pt + \textleading = 12pt + % + \internalpagesizes{7.4in}{4.8in}% + {-.2in}{-.4in}% + {0pt}{14pt}% + {9in}{6in}% + % + \lispnarrowing = 0.25in + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = .4cm +}} + +% Use @afourpaper to print on European A4 paper. +\def\afourpaper{{\globaldefs = 1 + \parskip = 3pt plus 2pt minus 1pt + \textleading = 13.2pt + % + % Double-side printing via postscript on Laserjet 4050 + % prints double-sided nicely when \bindingoffset=10mm and \hoffset=-6mm. + % To change the settings for a different printer or situation, adjust + % \normaloffset until the front-side and back-side texts align. Then + % do the same for \bindingoffset. You can set these for testing in + % your texinfo source file like this: + % @tex + % \global\normaloffset = -6mm + % \global\bindingoffset = 10mm + % @end tex + \internalpagesizes{673.2pt}{160mm}% that's 51 lines + {\voffset}{\hoffset}% + {\bindingoffset}{44pt}% + {297mm}{210mm}% + % + \tolerance = 700 + \hfuzz = 1pt + \contentsrightmargin = 0pt + \defbodyindent = 5mm +}} + +% Use @afivepaper to print on European A5 paper. +% From romildo@urano.iceb.ufop.br, 2 July 2000. +% He also recommends making @example and @lisp be small. +\def\afivepaper{{\globaldefs = 1 + \parskip = 2pt plus 1pt minus 0.1pt + \textleading = 12.5pt + % + \internalpagesizes{160mm}{120mm}% + {\voffset}{\hoffset}% + {\bindingoffset}{8pt}% + {210mm}{148mm}% + % + \lispnarrowing = 0.2in + \tolerance = 800 + \hfuzz = 1.2pt + \contentsrightmargin = 0pt + \defbodyindent = 2mm + \tableindent = 12mm +}} + +% A specific text layout, 24x15cm overall, intended for A4 paper. +\def\afourlatex{{\globaldefs = 1 + \afourpaper + \internalpagesizes{237mm}{150mm}% + {\voffset}{4.6mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + % + % Must explicitly reset to 0 because we call \afourpaper. + \globaldefs = 0 +}} + +% Use @afourwide to print on A4 paper in landscape format. +\def\afourwide{{\globaldefs = 1 + \afourpaper + \internalpagesizes{241mm}{165mm}% + {\voffset}{-2.95mm}% + {\bindingoffset}{7mm}% + {297mm}{210mm}% + \globaldefs = 0 +}} + +% @pagesizes TEXTHEIGHT[,TEXTWIDTH] +% Perhaps we should allow setting the margins, \topskip, \parskip, +% and/or leading, also. Or perhaps we should compute them somehow. +% +\parseargdef\pagesizes{\pagesizesyyy #1,,\finish} +\def\pagesizesyyy#1,#2,#3\finish{{% + \setbox0 = \hbox{\ignorespaces #2}\ifdim\wd0 > 0pt \hsize=#2\relax \fi + \globaldefs = 1 + % + \parskip = 3pt plus 2pt minus 1pt + \setleading{\textleading}% + % + \dimen0 = #1\relax + \advance\dimen0 by \voffset + % + \dimen2 = \hsize + \advance\dimen2 by \normaloffset + % + \internalpagesizes{#1}{\hsize}% + {\voffset}{\normaloffset}% + {\bindingoffset}{44pt}% + {\dimen0}{\dimen2}% +}} + +% Set default to letter. +% +\letterpaper + + +\message{and turning on texinfo input format.} + +\def^^L{\par} % remove \outer, so ^L can appear in an @comment + +% DEL is a comment character, in case @c does not suffice. +\catcode`\^^? = 14 + +% Define macros to output various characters with catcode for normal text. +\catcode`\"=\other \def\normaldoublequote{"} +\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix +\catcode`\+=\other \def\normalplus{+} +\catcode`\<=\other \def\normalless{<} +\catcode`\>=\other \def\normalgreater{>} +\catcode`\^=\other \def\normalcaret{^} +\catcode`\_=\other \def\normalunderscore{_} +\catcode`\|=\other \def\normalverticalbar{|} +\catcode`\~=\other \def\normaltilde{~} + +% This macro is used to make a character print one way in \tt +% (where it can probably be output as-is), and another way in other fonts, +% where something hairier probably needs to be done. +% +% #1 is what to print if we are indeed using \tt; #2 is what to print +% otherwise. Since all the Computer Modern typewriter fonts have zero +% interword stretch (and shrink), and it is reasonable to expect all +% typewriter fonts to have this, we can check that font parameter. +% +\def\ifusingtt#1#2{\ifdim \fontdimen3\font=0pt #1\else #2\fi} + +% Same as above, but check for italic font. Actually this also catches +% non-italic slanted fonts since it is impossible to distinguish them from +% italic fonts. But since this is only used by $ and it uses \sl anyway +% this is not a problem. +\def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi} + +% Turn off all special characters except @ +% (and those which the user can use as if they were ordinary). +% Most of these we simply print from the \tt font, but for some, we can +% use math or other variants that look better in normal text. + +\catcode`\"=\active +\def\activedoublequote{{\tt\char34}} +\let"=\activedoublequote +\catcode`\~=\active \def\activetilde{{\tt\char126}} \let~ = \activetilde +\chardef\hat=`\^ +\catcode`\^=\active \def\activehat{{\tt \hat}} \let^ = \activehat + +\catcode`\_=\active +\def_{\ifusingtt\normalunderscore\_} +\let\realunder=_ +% Subroutine for the previous macro. +\def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em } + +\catcode`\|=\active +\def|{{\tt\char124}} + +\chardef \less=`\< +\catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless +\chardef \gtr=`\> +\catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr +\catcode`\+=\active \def+{{\tt \char 43}} +\catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix + +% used for headline/footline in the output routine, in case the page +% breaks in the middle of an @tex block. +\def\texinfochars{% + \let< = \activeless + \let> = \activegtr + \let~ = \activetilde + \let^ = \activehat + \markupsetuplqdefault \markupsetuprqdefault + \let\b = \strong + \let\i = \smartitalic + % in principle, all other definitions in \tex have to be undone too. +} + +% If a .fmt file is being used, characters that might appear in a file +% name cannot be active until we have parsed the command line. +% So turn them off again, and have \everyjob (or @setfilename) turn them on. +% \otherifyactive is called near the end of this file. +\def\otherifyactive{\catcode`+=\other \catcode`\_=\other} + +% Used sometimes to turn off (effectively) the active characters even after +% parsing them. +\def\turnoffactive{% + \normalturnoffactive + \otherbackslash +} + +\catcode`\@=0 + +% \backslashcurfont outputs one backslash character in current font, +% as in \char`\\. +\global\chardef\backslashcurfont=`\\ +\global\let\rawbackslashxx=\backslashcurfont % let existing .??s files work + +% \realbackslash is an actual character `\' with catcode other, and +% \doublebackslash is two of them (for the pdf outlines). +{\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}} + +% In texinfo, backslash is an active character; it prints the backslash +% in fixed width font. +\catcode`\\=\active % @ for escape char from now on. + +% The story here is that in math mode, the \char of \backslashcurfont +% ends up printing the roman \ from the math symbol font (because \char +% in math mode uses the \mathcode, and plain.tex sets +% \mathcode`\\="026E). It seems better for @backslashchar{} to always +% print a typewriter backslash, hence we use an explicit \mathchar, +% which is the decimal equivalent of "715c (class 7, e.g., use \fam; +% ignored family value; char position "5C). We can't use " for the +% usual hex value because it has already been made active. +@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}} +@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents. + +% On startup, @fixbackslash assigns: +% @let \ = @normalbackslash +% \rawbackslash defines an active \ to do \backslashcurfont. +% \otherbackslash defines an active \ to be a literal `\' character with +% catcode other. We switch back and forth between these. +@gdef@rawbackslash{@let\=@backslashcurfont} +@gdef@otherbackslash{@let\=@realbackslash} + +% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of +% the literal character `\'. Also revert - to its normal character, in +% case the active - from code has slipped in. +% +{@catcode`- = @active + @gdef@normalturnoffactive{% + @let-=@normaldash + @let"=@normaldoublequote + @let$=@normaldollar %$ font-lock fix + @let+=@normalplus + @let<=@normalless + @let>=@normalgreater + @let\=@normalbackslash + @let^=@normalcaret + @let_=@normalunderscore + @let|=@normalverticalbar + @let~=@normaltilde + @markupsetuplqdefault + @markupsetuprqdefault + @unsepspaces + } +} + +% Make _ and + \other characters, temporarily. +% This is canceled by @fixbackslash. +@otherifyactive + +% If a .fmt file is being used, we don't want the `\input texinfo' to show up. +% That is what \eatinput is for; after that, the `\' should revert to printing +% a backslash. +% +@gdef@eatinput input texinfo{@fixbackslash} +@global@let\ = @eatinput + +% On the other hand, perhaps the file did not have a `\input texinfo'. Then +% the first `\' in the file would cause an error. This macro tries to fix +% that, assuming it is called before the first `\' could plausibly occur. +% Also turn back on active characters that might appear in the input +% file name, in case not using a pre-dumped format. +% +@gdef@fixbackslash{% + @ifx\@eatinput @let\ = @normalbackslash @fi + @catcode`+=@active + @catcode`@_=@active +} + +% Say @foo, not \foo, in error messages. +@escapechar = `@@ + +% These (along with & and #) are made active for url-breaking, so need +% active definitions as the normal characters. +@def@normaldot{.} +@def@normalquest{?} +@def@normalslash{/} + +% These look ok in all fonts, so just make them not special. +% @hashchar{} gets its own user-level command, because of #line. +@catcode`@& = @other @def@normalamp{&} +@catcode`@# = @other @def@normalhash{#} +@catcode`@% = @other @def@normalpercent{%} + +@let @hashchar = @normalhash + +@c Finally, make ` and ' active, so that txicodequoteundirected and +@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we +@c don't make ` and ' active, @code will not get them as active chars. +@c Do this last of all since we use ` in the previous @catcode assignments. +@catcode`@'=@active +@catcode`@`=@active +@markupsetuplqdefault +@markupsetuprqdefault + +@c Local variables: +@c eval: (add-hook 'write-file-hooks 'time-stamp) +@c page-delimiter: "^\\\\message" +@c time-stamp-start: "def\\\\texinfoversion{" +@c time-stamp-format: "%:y-%02m-%02d.%02H" +@c time-stamp-end: "}" +@c End: + +@c vim:sw=2: + +@ignore + arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115 +@end ignore diff --git a/execute_cmd.c b/execute_cmd.c index 730a63e0..d100c485 100644 --- a/execute_cmd.c +++ b/execute_cmd.c @@ -3869,19 +3869,20 @@ fix_assignment_words (words) for (wcmd = words; wcmd; wcmd = wcmd->next) if ((wcmd->word->flags & W_ASSIGNMENT) == 0) break; + /* Posix (post-2008) says that `command' doesn't change whether + or not the builtin it shadows is a `declaration command', even + though it removes other special builtin properties. In Posix + mode, we skip over one or more instances of `command' and + deal with the next word as the assignment builtin. */ + while (posixly_correct && wcmd && wcmd->word && wcmd->word->word && STREQ (wcmd->word->word, "command")) + wcmd = wcmd->next; for (w = wcmd; w; w = w->next) if (w->word->flags & W_ASSIGNMENT) { + /* Lazy builtin lookup, only do it if we find an assignment */ if (b == 0) { - /* Posix (post-2008) says that `command' doesn't change whether - or not the builtin it shadows is a `declaration command', even - though it removes other special builtin properties. In Posix - mode, we skip over one or more instances of `command' and - deal with the next word as the assignment builtin. */ - while (posixly_correct && wcmd && wcmd->word && wcmd->word->word && STREQ (wcmd->word->word, "command")) - wcmd = wcmd->next; b = builtin_address_internal (wcmd->word->word, 0); if (b == 0 || (b->flags & ASSIGNMENT_BUILTIN) == 0) return; @@ -3897,6 +3898,12 @@ fix_assignment_words (words) #endif if (global) w->word->flags |= W_ASSNGLOBAL; + + /* If we have an assignment builtin that does not create local variables, + make sure we create global variables even if we internally call + `declare' */ + if (b && ((b->flags & (ASSIGNMENT_BUILTIN|LOCALVAR_BUILTIN)) == ASSIGNMENT_BUILTIN)) + w->word->flags |= W_ASSNGLOBAL; } #if defined (ARRAY_VARS) /* Note that we saw an associative array option to a builtin that takes @@ -3908,8 +3915,6 @@ fix_assignment_words (words) { if (b == 0) { - while (posixly_correct && wcmd && wcmd->word && wcmd->word->word && STREQ (wcmd->word->word, "command")) - wcmd = wcmd->next; b = builtin_address_internal (wcmd->word->word, 0); if (b == 0 || (b->flags & ASSIGNMENT_BUILTIN) == 0) return; @@ -4364,12 +4369,11 @@ execute_builtin (builtin, words, flags, subshell) WORD_LIST *words; int flags, subshell; { - int old_e_flag, result, eval_unwind; + int result, eval_unwind, ignexit_flag, old_e_flag; int isbltinenv; char *error_trap; error_trap = 0; - old_e_flag = exit_immediately_on_error; /* The eval builtin calls parse_and_execute, which does not know about the setting of flags, and always calls the execution functions with @@ -4393,6 +4397,7 @@ execute_builtin (builtin, words, flags, subshell) restore_default_signal (ERROR_TRAP); } exit_immediately_on_error = 0; + ignexit_flag = builtin_ignoring_errexit; builtin_ignoring_errexit = 1; eval_unwind = 1; } @@ -4469,8 +4474,8 @@ execute_builtin (builtin, words, flags, subshell) if (eval_unwind) { - exit_immediately_on_error = errexit_flag; - builtin_ignoring_errexit = 0; + builtin_ignoring_errexit = ignexit_flag; + exit_immediately_on_error = builtin_ignoring_errexit ? 0 : errexit_flag; if (error_trap) { set_error_trap (error_trap); diff --git a/lib/sh/tmpfile.c b/lib/sh/tmpfile.c index c06ad657..a487ecf1 100644 --- a/lib/sh/tmpfile.c +++ b/lib/sh/tmpfile.c @@ -47,6 +47,11 @@ extern int errno; #define DEFAULT_TMPDIR "." /* bogus default, should be changed */ #define DEFAULT_NAMEROOT "shtmp" +/* Use ANSI-C rand() interface if random(3) is not available */ +#if !HAVE_RANDOM +#define random() rand() +#endif + extern pid_t dollar_dollar_pid; static char *get_sys_tmpdir __P((void)); diff --git a/make_cmd.c b/make_cmd.c index 170abcaf..b42e9ff1 100644 --- a/make_cmd.c +++ b/make_cmd.c @@ -58,6 +58,8 @@ extern int line_number, current_command_line_count, parser_state; extern int last_command_exit_value; extern int shell_initialized; +int here_doc_first_line = 0; + /* Object caching */ sh_obj_cache_t wdcache = {0, 0, 0}; sh_obj_cache_t wlcache = {0, 0, 0}; @@ -623,6 +625,7 @@ make_here_document (temp, lineno) register char *line; int len; + here_doc_first_line = 0; line = full_line; line_number++; @@ -674,6 +677,7 @@ document_done: document[0] = '\0'; } temp->redirectee.filename->word = document; + here_doc_first_line = 0; } /* Generate a REDIRECT from SOURCE, DEST, and INSTRUCTION. diff --git a/parse.y b/parse.y index 8e191247..9ce5d5d3 100644 --- a/parse.y +++ b/parse.y @@ -125,6 +125,7 @@ extern char *dist_version; extern int patch_level; extern int dump_translatable_strings, dump_po_strings; extern sh_builtin_func_t *last_shell_builtin, *this_shell_builtin; +extern int here_doc_first_line; #if defined (BUFFERED_INPUT) extern int bash_input_fd_changed; #endif @@ -2698,6 +2699,7 @@ gather_here_documents () int r; r = 0; + here_doc_first_line = 1; while (need_here_doc > 0) { parser_state |= PST_HEREDOC; @@ -2706,6 +2708,7 @@ gather_here_documents () need_here_doc--; redir_stack[r - 1] = 0; /* XXX */ } + here_doc_first_line = 0; /* just in case */ } /* When non-zero, an open-brace used to create a group is awaiting a close @@ -3021,6 +3024,7 @@ reset_parser () #endif parser_state = 0; + here_doc_first_line = 0; #if defined (ALIAS) || defined (DPAREN_ARITHMETIC) if (pushed_string_list) @@ -5156,7 +5160,7 @@ history_delimiting_chars (line) last_was_heredoc = 0; return "\n"; } - return (current_command_line_count == 2 ? "\n" : ""); + return (here_doc_first_line ? "\n" : ""); } if (parser_state & PST_COMPASSIGN) @@ -5191,7 +5195,8 @@ history_delimiting_chars (line) last_was_heredoc = 1; return "\n"; } - + else if ((parser_state & PST_HEREDOC) == 0 && current_command_line_count > 1 && need_here_doc > 0) + return "\n"; else if (token_before_that == WORD && two_tokens_ago == FOR) { /* Tricky. `for i\nin ...' should not have a semicolon, but @@ -6187,6 +6192,7 @@ save_parser_state (ps) ps->expand_aliases = expand_aliases; ps->echo_input_at_read = echo_input_at_read; ps->need_here_doc = need_here_doc; + ps->here_doc_first_line = here_doc_first_line; #if 0 for (i = 0; i < HEREDOC_MAX; i++) @@ -6248,6 +6254,7 @@ restore_parser_state (ps) expand_aliases = ps->expand_aliases; echo_input_at_read = ps->echo_input_at_read; need_here_doc = ps->need_here_doc; + here_doc_first_line = ps->here_doc_first_line; #if 0 for (i = 0; i < HEREDOC_MAX; i++) diff --git a/shell.h b/shell.h index 86fb05da..ce088791 100644 --- a/shell.h +++ b/shell.h @@ -172,6 +172,7 @@ typedef struct _sh_parser_state_t { int expand_aliases; int echo_input_at_read; int need_here_doc; + int here_doc_first_line; /* structures affecting the parser */ REDIRECT *redir_stack[HEREDOC_MAX]; diff --git a/subst.c b/subst.c index fb808b16..a2f6a083 100644 --- a/subst.c +++ b/subst.c @@ -4,7 +4,7 @@ /* ``Have a little faith, there's magic in the night. You ain't a beauty, but, hey, you're alright.'' */ -/* Copyright (C) 1987-2014 Free Software Foundation, Inc. +/* Copyright (C) 1987-2015 Free Software Foundation, Inc. This file is part of GNU Bash, the Bourne Again SHell. @@ -344,7 +344,7 @@ static WORD_LIST *glob_expand_word_list __P((WORD_LIST *, int)); static WORD_LIST *brace_expand_word_list __P((WORD_LIST *, int)); #endif #if defined (ARRAY_VARS) -static int make_internal_declare __P((char *, char *)); +static int make_internal_declare __P((char *, char *, char *)); #endif static WORD_LIST *shell_expand_word_list __P((WORD_LIST *, int)); static WORD_LIST *expand_word_list_internal __P((WORD_LIST *, int)); @@ -2855,6 +2855,12 @@ do_compound_assignment (name, value, flags) if (mklocal && variable_context) { v = find_variable (name); + if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v))) + { + if (v && readonly_p (v)) + err_readonly (name); + return (v); /* XXX */ + } list = expand_compound_array_assignment (v, value, flags); if (mkassoc) v = make_local_assoc_variable (name); @@ -2869,6 +2875,12 @@ do_compound_assignment (name, value, flags) else if (mkglobal && variable_context) { v = find_global_variable (name); + if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v))) + { + if (v && readonly_p (v)) + err_readonly (name); + return (v); /* XXX */ + } list = expand_compound_array_assignment (v, value, flags); if (v == 0 && mkassoc) v = make_new_assoc_variable (name); @@ -2884,7 +2896,15 @@ do_compound_assignment (name, value, flags) dispose_words (list); } else - v = assign_array_from_string (name, value, flags); + { + v = assign_array_from_string (name, value, flags); + if (v && ((readonly_p (v) && (flags & ASS_FORCE) == 0) || noassign_p (v))) + { + if (v && readonly_p (v)) + err_readonly (name); + return (v); /* XXX */ + } + } return (v); } @@ -5553,6 +5573,12 @@ process_substitute (string, open_for_read_in_child) QUIT; /* catch any interrupts we got post-fork */ setup_async_signals (); subshell_environment |= SUBSHELL_COMSUB|SUBSHELL_PROCSUB; + + /* if we're expanding a redirection, we shouldn't have access to the + temporary environment, but commands in the subshell should have + access to their own temporary environment. */ + if (expanding_redir) + flush_temporary_env (); } #if defined (JOB_CONTROL) @@ -5659,7 +5685,10 @@ process_substitute (string, open_for_read_in_child) #endif /* HAVE_DEV_FD */ /* subshells shouldn't have this flag, which controls using the temporary - environment for variable lookups. */ + environment for variable lookups. We have already flushed the temporary + environment above in the case we're expanding a redirection, so processes + executed by this command need to be able to set it independently of their + parent. */ expanding_redir = 0; subshell_level++; @@ -10094,9 +10123,10 @@ brace_expand_word_list (tlist, eflags) /* Take WORD, a compound associative array assignment, and internally run 'declare -A w', where W is the variable name portion of WORD. */ static int -make_internal_declare (word, option) +make_internal_declare (word, option, cmd) char *word; char *option; + char *cmd; { int t, r; WORD_LIST *wl; @@ -10122,12 +10152,16 @@ shell_expand_word_list (tlist, eflags) WORD_LIST *tlist; int eflags; { - WORD_LIST *expanded, *orig_list, *new_list, *next, *temp_list; + WORD_LIST *expanded, *orig_list, *new_list, *next, *temp_list, *wcmd; int expanded_something, has_dollar_at; char *temp_string; /* We do tilde expansion all the time. This is what 1003.2 says. */ new_list = (WORD_LIST *)NULL; + for (wcmd = tlist; wcmd; wcmd = wcmd->next) + if (wcmd->word->flags & W_ASSNBLTIN) + break; + for (orig_list = tlist; tlist; tlist = next) { temp_string = tlist->word->word; @@ -10208,7 +10242,7 @@ shell_expand_word_list (tlist, eflags) opts[opti] = '\0'; if (opti > 0) { - t = make_internal_declare (tlist->word->word, opts); + t = make_internal_declare (tlist->word->word, opts, wcmd ? wcmd->word->word : (char *)0); if (t != EXECUTION_SUCCESS) { last_command_exit_value = t; diff --git a/tests/attr.right b/tests/attr.right new file mode 100644 index 00000000..631b3f41 --- /dev/null +++ b/tests/attr.right @@ -0,0 +1,37 @@ +after f1:declare -ar a=([0]="1") +./attr.tests: line 4: a: readonly variable +after f2:declare -ar a=([0]="1") +./attr.tests: line 5: a: readonly variable +after f3:declare -ar a=([0]="1") +./attr.tests: line 6: readonly: a: readonly variable +after f4:declare -ar a=([0]="1") +after f2:declare -ar b=([0]="2") +after f3:declare -ar c=([0]="(3)") +after f4:declare -ar d=([0]="4") +declare -r m="4" +in func:declare -r n="4" +declare -r n="4" +./attr1.sub: line 13: p: readonly variable +declare -r p="1" +./attr1.sub: line 19: r: readonly variable +declare -ar r=([0]="1") +./attr1.sub: line 23: r: readonly variable +declare -ar r=([0]="1") +./attr1.sub: line 27: r: readonly variable +declare -ar r=([0]="1") +./attr1.sub: line 31: readonly: r: readonly variable +declare -ar r=([0]="1") +declare -ar x=([0]="4") +in func:declare -ar y=([0]="4") +declare -ar y=([0]="4") +in func:declare -ar z=([0]="4") +declare -ar z=([0]="4") +in func:declare -ar y1=([0]="4") +declare -ar y1=([0]="4") +in func:declare -ar z1=([0]="4") +declare -ar z1=([0]="4") +declare -x p="4" +declare -ax r=([0]="4") +declare -ax r=([0]="(5)") +declare -ax r=([0]="6") +declare -ax r=([0]="7") diff --git a/tests/attr.tests b/tests/attr.tests new file mode 100644 index 00000000..b5e01596 --- /dev/null +++ b/tests/attr.tests @@ -0,0 +1,41 @@ +a=(outside) + +f1() { readonly a=(1) ; } +f2() { readonly -a a=(2) ; } +f3() { readonly 'a=(3)' ; } +f4() { readonly -a 'a=(4)' ; } + +f1 +echo -n after f1: +declare -p a +f2 +echo -n after f2: +declare -p a +f3 +echo -n after f3: +declare -p a +f4 +echo -n after f4: +declare -p a + +b=(outside) +c=(outside) +d=(outside) + +f2() { readonly -a b=(2) ; } +f3() { readonly 'c=(3)' ; } +f4() { readonly -a 'd=(4)' ; } + +f2 +echo -n after f2: +declare -p b +f3 +echo -n after f3: +declare -p c +f4 +echo -n after f4: +declare -p d + +${THIS_SH} ./attr1.sub +${THIS_SH} ./attr2.sub + diff --git a/tests/attr1.sub b/tests/attr1.sub new file mode 100644 index 00000000..1c0609ab --- /dev/null +++ b/tests/attr1.sub @@ -0,0 +1,55 @@ +m=1 +readonly m=4 +declare -p m + +n=1 +f() { readonly n=4; echo -n in func: ; declare -p n ; } +f +declare -p n + +p=1 +readonly p + +readonly p=4 +declare -p p + +r=(1) +readonly r + +f() { readonly r=(4) ; } +f +declare -p r + +f() { readonly r='(5)' ; } +f +declare -p r + +f() { readonly -a r=(6) ; } +f +declare -p r + +f() { readonly -a r='(7)' ; } +f +declare -p r + +x=(1) +readonly x=(4) +declare -p x + +y=(1) +f() { readonly y=(4); echo -n in func: ; declare -p y; } +f +declare -p y + +z=(1) +f() { readonly -a z=(4); echo -n in func: ; declare -p z; } +f +declare -p z + +f() { readonly y1=(4); echo -n in func: ; declare -p y1; } +f +declare -p y1 + +f() { readonly -a z1=(4); echo -n in func: ; declare -p z1; } +f +declare -p z1 diff --git a/tests/attr2.sub b/tests/attr2.sub new file mode 100644 index 00000000..28d447cc --- /dev/null +++ b/tests/attr2.sub @@ -0,0 +1,24 @@ +p=1 +export p + +export p=4 +declare -p p + +r=(1) +export r + +f() { export r=(4) ; } +f +declare -p r + +f() { export r='(5)' ; } +f +declare -p r + +f() { export -a r=(6) ; } +f +declare -p r + +f() { export -a r='(7)' ; } +f +declare -p r diff --git a/tests/cond.right b/tests/cond.right index 80bb5ce8..18ebd060 100644 --- a/tests/cond.right +++ b/tests/cond.right @@ -41,6 +41,11 @@ found 2 libc ok 42 ok 43 +ok 1 +ok 2 +ok 3 +ok 4 +ok 5 match 1 match 2 match 3 diff --git a/tests/cond.tests b/tests/cond.tests index d91ddddf..8e4548ac 100755 --- a/tests/cond.tests +++ b/tests/cond.tests @@ -180,6 +180,17 @@ echo ${BASH_REMATCH[@]} if [[ "123abc" == *?(a)bc ]]; then echo ok 42; else echo bad 42; fi if [[ "123abc" == *?(a)bc ]]; then echo ok 43; else echo bad 43; fi +foo="" +[[ bar == *"${foo,,}"* ]] && echo ok 1 +[[ bar == *${foo,,}* ]] && echo ok 2 + +shopt -s extquote +bs='\' +del=$'\177' +[[ bar == *$bs"$del"* ]] || echo ok 3 +[[ "" == "$foo" ]] && echo ok 4 +[[ "$del" == "${foo,,}" ]] || echo ok 5 + ${THIS_SH} ./cond-regexp1.sub ${THIS_SH} ./cond-regexp2.sub diff --git a/tests/histexp.right b/tests/histexp.right index 1dc1ab4c..9a7ae0bb 100644 --- a/tests/histexp.right +++ b/tests/histexp.right @@ -148,3 +148,5 @@ b c echo "#!/bin/bash" set -o posix #!/bin/bash set -o posix +!! +!! diff --git a/tests/histexp2.sub b/tests/histexp2.sub index bd63d52a..bb5bfda4 100644 --- a/tests/histexp2.sub +++ b/tests/histexp2.sub @@ -9,3 +9,6 @@ set -o histexpand set -o posix echo "#!/bin/bash" !! + +echo '!!' +echo "!!" diff --git a/tests/run-attr b/tests/run-attr new file mode 100644 index 00000000..948b9e1a --- /dev/null +++ b/tests/run-attr @@ -0,0 +1,2 @@ +${THIS_SH} ./attr.tests 2>&1 | grep -v '^expect' > ${BASH_TSTOUT} +diff ${BASH_TSTOUT} attr.right && rm -f ${BASH_TSTOUT}